All pastes #2109268 Raw Edit

my .emacs (E3D3)

public text v1 · immutable
#2109268 ·published 2012-02-03 10:24 UTC
rendered paste body
(custom-set-variables
  ;; custom-set-variables was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
 '(browse-url-browser-function (quote browse-url-generic))
 '(browse-url-generic-program "/usr/bin/opera")
 '(confirm-kill-emacs (quote y-or-n-p))
 '(display-time-day-and-date t)
 '(ecb-auto-activate nil)
 '(ecb-options-version "2.40")
 '(ecb-use-speedbar-instead-native-tree-buffer (quote dir))
 '(erc-hide-list (quote ("JOIN" "QUIT")))
 '(erc-modules (quote (autojoin button completion fill irccontrols list match menu move-to-prompt netsplit networks noncommands readonly ring sound stamp track)))
 '(erc-nick "E3D3")
 '(focus-follows-mouse nil)
 '(global-hl-line-mode 1)
 '(global-visual-line-mode t)
 '(ido-mode (quote both) nil (ido))
 '(initial-buffer-choice t)
 '(initial-scratch-message ";; Scratch Buffer voor Notities en Lisp evaluatie.
;; E3D3productions 2012 Tips
;;
;; Completion zoekt in alle buffers = CM-/
;; apropos = f1 d = C-h d   ( Ook in andere buffers = C-u F1 d )
;;        Alleen interactieve commands = C-h a
;; Doe zoveel mogelijk in *Dired*

")
 '(iswitchb-use-virtual-buffers t nil (recentf))
 '(load-home-init-file t t)
 '(org-export-preserve-breaks t)
 '(org-export-skip-text-before-1st-heading t)
 '(recentf-max-menu-items 20)
 '(recentf-max-saved-items 30)
 '(recentf-mode t)
 '(setq auto-fill-mode)
 '(setq-default fill-column t))
(custom-set-faces
  ;; custom-set-faces was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
 '(default ((t (:inherit nil :stipple nil :background "ivory" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 98 :width normal :foundry "unknown" :family "DejaVu Sans Mono")))))


( ;; In/uitzoomen mbv Ctrl +/-
  ;; Bron:
  ;; http://emacs-fu.blogspot.com/2008/12/welcome-to-emacs-fu.html
  ;; Toegevoegd op 21 juli 2011
  defun djcb-zoom (n)
    "with positive N, increase the font size, otherwise decrease it"
    (set-face-attribute 'default (selected-frame) :height 
      (+ (face-attribute 'default :height) (* (if (> n 0) 1 -1) 10))))

    (global-set-key (kbd "C-+")      '(lambda nil (interactive) (djcb-zoom 1)))
    (global-set-key [C-kp-add]       '(lambda nil (interactive) (djcb-zoom 1)))
    (global-set-key (kbd "C--")      '(lambda nil (interactive) (djcb-zoom -1)))
    (global-set-key [C-kp-subtract]  '(lambda nil (interactive) (djcb-zoom -1)))


( ;; kleurwaarden in css & html getoond als kleur
  ;; bron:
  ;; http://xahlee.org/emacs/emacs_html.html
  ;; Toegevoegd op 22 juli 2011
  defvar hexcolour-keywords
  '(("#[abcdef[:digit:]]\\{6\\}"
     (0 (put-text-property
         (match-beginning 0)
         (match-end 0)
         'face (list :background 
                     (match-string-no-properties 0)))))))
(defun hexcolour-add-to-font-lock ()
  (font-lock-add-keywords nil hexcolour-keywords))

(add-hook 'css-mode-hook 'hexcolour-add-to-font-lock)
(add-hook 'html-mode-hook 'hexcolour-add-to-font-lock)


 (
  ;; Spellingscontrole Nederlands
  setq ispell-dictionary "nederlands")


  ;; Set org folder
  ;; Toegevoegd op 20120118
  (setq org-directory "/media/OPSLAG/000_Emacs/")


 (
  ;; org-mode - aanbevolen instellingen
  ;; Bron (26 juli 2011):
  ;; http://orgmode.org/worg/org-tutorials/orgtutorial_dto.html#sec-3_1
  require 'org-install)
 (add-to-list 'auto-mode-alist '("\\.\\(org\\|org_archive\\|txt\\)$" . org-mode))
 (define-key global-map "\C-cl" 'org-store-link)
 (define-key global-map "\C-ca" 'org-agenda)
 (define-key global-map "\C-cb" 'org-iswitchb)
 (setq org-log-done t)

 (setq org-agenda-files (list "/media/OPSLAG/000_Emacs/0_Agenda/e3tests.org"
                              "/media/OPSLAG/000_Emacs/0_Agenda/werk.org" 
                              "/media/OPSLAG/000_Emacs/0_Agenda/nunn.org" 
                              "/media/OPSLAG/000_Emacs/0_Agenda/todo.org"))


;; Org-mode Publishing
(require 'org-publish)
(setq org-publish-project-alist
      '(
       ;; ... add all the components here (see below)...

       ("org-notes"
	:base-directory "/media/OPSLAG/000_Emacs/0_org/"
	:base-extension "org"
	:publishing-directory "/media/OPSLAG/000_Emacs/0_public_html/"
	:recursive t
	:auto-index org-publish-current-project
	:publishing-function org-publish-org-to-html
	:headline-levels 4               ; Just the default for this project.
        :section-numbers nil
	:auto-preamble t
        :auto-sitemap t                  ; Generate sitemap.org automagically...
        :sitemap-filename "sitemap.org"  ; ... call it sitemap.org (it's the default)...
        :sitemap-title "Sitemap"         ; ... with title 'Sitemap'.
	)

       ("org-static"
        :base-directory "/media/OPSLAG/000_Emacs/0_org/"
        :base-extension "css\\|js\\|png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg\\|swf"
        :publishing-directory "/media/OPSLAG/000_Emacs/0_public_html/"
        :recursive t
        :publishing-function org-publish-attachment
        )

       ("org" :components ("org-notes" "org-static"))

      ))


 (
  ;; Kopieëer lijn met variabele argumenten
  ;; Bron: http://www.emacswiki.org/emacs/CopyingWholeLines#NewCommands
  ;; Toegevoegd 3-aug-2011
  defun copy-line (arg)
       "Copy lines (as many as prefix argument) in the kill ring"
       (interactive "p")
       (kill-ring-save (line-beginning-position)
                       (line-beginning-position (+ 1 arg)))
       (message "%d line%s copied" arg (if (= 1 arg) "" "s")))
    ;; optional key binding
    (global-set-key "\C-c\C-k" 'copy-line)


 (
  ;; I.v.m org-capture
  ;; Bron: http://orgmode.org/manual/Setting-up-capture.html#Setting-up-capture
  ;; Toegevoegd 6-aug 2011
  setq org-default-notes-file "/media/OPSLAG/000_Emacs/0_Agenda/notes.org")
     (define-key global-map "\C-cc" 'org-capture)



  ;; Uitgezet ivm Notes niet zomaar terug te lezen !!!
  ;
  ;; Ivm remember
  ;; Toegevoegd op 20120118
  ;  (setq org-reverse-note-order t)
  ;; note at beginning of file by default
  ;  (setq remember-annotation-functions '(org-remember-annotation))
  ;  (setq remember-handler-functions '(org-remember-handler))
  ;  (add-hook 'remember-mode-hook 'org-remember-apply-template)

  ;  (setq org-remember-templates
  ;     '((?t "* TODO %?\n  %i\n  %a" "~/todo.org")
  ;       (?j "* %U %?\n\n  %i\n  %a" "~/journal.org")
  ;       (?i "* %^{Title}\n  %i\n  %a" "~/remember.org" "New Ideas")))

  ;  (org-remember-insinuate)
  ;  (define-key global-map "\M-p" 'org-remember)
  ;  M-p is toegekend aan andere functie !


;(;; Fullscreen toggle
  ;; Bron: http://retout.co.uk/blog/tags/emacs
  ;; Geínstalleerd op 20110809
; defun toggle-fullscreen (&optional f)
;  (interactive)
;  (let ((current-value (frame-parameter nil 'fullscreen)))
;       (set-frame-parameter nil 'fullscreen
;                            (if (equal 'fullboth current-value)
;                                (if (boundp 'old-fullscreen) old-fullscreen nil)
;                                (progn (setq old-fullscreen current-value)
;                                       'fullboth)))))

;(global-set-key [f11] 'toggle-fullscreen)


;(
  ;; nXhtml-mode
  ;; Geinstalleerd op 20110812 in
  ;; /home/e3d3/.emacs.d/nxhtml/
;  load "~/.emacs.d/nxhtml/autostart.el")


; (
  ;; I.v.m. Color-theme toegevoegd
  ;; 20110814
;    setq color-theme-is-global t)
;    (color-theme-katester)  


(
  ;; I.v.m. Color-theme toegevoegd
  ;; 20111010
   add-to-list 'load-path "/usr/share/emacs/site-lisp/goodies/")
  (require 'color-theme)
   (eval-after-load "color-theme"
     '(progn
        (color-theme-initialize)
;       (color-theme-katester)))
        (color-theme-jsc-light)))



  (
   ;; Verwijdert Tool-bar
   ;; Toolbar tonen kan mbv: M-x tool-bar-mode
   ;; Toegevoegd: 20110814
   tool-bar-mode 0)


  (
   ;; Swap buffers in verschillende windows
   ;; Bron: http://www.emacswiki.org/emacs/TransposeWindows
   ;; Toegevoegd: 20110814
   setq swapping-buffer nil)
  (setq swapping-window nil)

  (defun swap-buffers-in-windows ()
    "Swap buffers between two windows"
    (interactive)
    (if (and swapping-window
             swapping-buffer)
        (let ((this-buffer (current-buffer))
              (this-window (selected-window)))
          (if (and (window-live-p swapping-window)
                   (buffer-live-p swapping-buffer))
              (progn (switch-to-buffer swapping-buffer)
                     (select-window swapping-window)
                     (switch-to-buffer this-buffer)
                     (select-window this-window)
		     ; Rgl onder zelf toegevoegd.
		     ; Point blijft hiermee in dezelfde buffer
		     (switch-to-buffer swapping-buffer)
                     (message "Swapped buffers."))
            (message "Old buffer/window killed.  Aborting."))
          (setq swapping-buffer nil)
          (setq swapping-window nil))
      (progn
        (setq swapping-buffer (current-buffer))
        (setq swapping-window (selected-window))
        (message "Buffer and window marked for swapping."))))

  (global-set-key (kbd "C-c p") 'swap-buffers-in-windows)


  (
   ;; Windmove - Verplaats point naar andere window
   ;; Installed op : 20110816
   ;; N.a.v. IRC chat # emacs
   ;; Nu met meta-pijltjes ipv shift-pijltjes.
   setq windmove-wrap-around t)
  (global-set-key (kbd "C-c <left>") 'windmove-left)
  (global-set-key (kbd "C-c <right>") 'windmove-right)
  (global-set-key (kbd "C-c <up>") 'windmove-up)
  (global-set-key (kbd "C-c <down>") 'windmove-down)


  (
   ;; ERC (irc) notificaties
   ;; Toegevoegd 20110824
   ;; Bron: http://www.emacswiki.org/emacs/ErcNickNotify
   load "~/.emacs.d/erc-nick-notify.el")
   (require 'erc-nick-notify)


  (
   ;; browse kill-ring
   ;; toegevoegd op 20110825
   ;; bron: emacs-goodies-el kop 9
   global-set-key (kbd "C-c k") 'browse-kill-ring)
  (defadvice yank-pop (around kill-ring-browse-maybe (arg))
       "If last action was not a yank, run `browse-kill-ring' instead."
       (if (not (eq last-command 'yank))
           (browse-kill-ring)
         ad-do-it))

     (ad-activate 'yank-pop)

 (
  ;; iswitchb = Toont keuze-lijst van open buffer mbv C-x b
  ;; Toegevoegd op 20110830
  ;; Bron = algemene info
  iswitchb-mode t)


 (
  ;; dired+ mode
  ;; Toegevoegd op 201130 in /home/e3/.emacs.d/
  ;; Meer opties in dired C-x d
  load "~/.emacs.d/dired+.el")
  (require 'dired+)


;; Uitgezet op 1 jan 2012 omdat ik deze toch/nog niet gebruik.
;; Probleem is dat je zelf inh. moet herladen !!?? Onhandig !
;
; (
  ;; workgroups-mode.el
  ;; Toegevoegd op 20110831 in /home/e3/.emacs.d/
  ;; Bron: http://www.emacsmirror.org/package/workgroups.html
;  load "~/.emacs.d/workgroups.el")
; (require 'workgroups)
; (workgroups-mode 1)  ;; Automatisch Aanzetten
 ;; Mijn persoonlijke workgroups = venster-config's
; (wg-load "~/.emacs.d/E3workgroups00")
 ;; Bij opstart v. Emacs autom. 1e venster-config laden
; (setq workgroups-autoswitch t)
; (put 'downcase-region 'disabled nil)



 (
  ;; DEFT-mode
  ;; Toegevoegd op 20111022
  ;; Bron: http://jblevins.org/projects/deft/
  load "~/.emacs.d/deft.el")
 (when (require 'deft nil 'noerror) 
    (setq
       deft-extension "org"
       deft-directory "/media/OPSLAG/000_Emacs/0_Deft/"
       deft-text-mode 'org-mode)
    (setq deft-use-filename-as-title t)
    (global-set-key (kbd "<f9>") 'deft))


 (
  ;; Anything-mode
  ;; Toegevoegd op 20111027
  ;; Bron: http://www.reddit.com/r/emacs/comments/j26ra/experience_with_icicles/
  ;; http://linuxclues.blogspot.com/2011/04/anything-emacs-configuring.html
  add-to-list 'load-path "~/.emacs.d/anything-config/")
 (require 'anything-config)
;; (require ’anything-match-plugin)
 (put 'narrow-to-region 'disabled nil)


 (
  ;; Ivm afb. in org-mode tonen mbv M-I
  ;; Toegevoegd: 20111107
  load "/usr/share/emacs/23.3/lisp/iimage.elc")
  ;; display images mbv M-I <= Hoofdletter i
  (local-set-key "\M-I" 'org-toggle-iimage-in-org)

 (
  ;; Afb. in Org-mode-bestanden invoegen
  ;; Toegevoegd: 20111106
  ;; Bron: http://osdir.com/ml/emacs-orgmode-gnu/2010-05/msg00116.html
  defun org-dblock-write:image (params)
  (let ((file (plist-get params :file)))
     (clear-image-cache file)
     (insert-image (create-image file))))

 (
  ;; iimage in org (display images in org files)
  ;; Toegevoegd: 20111106
  ;; Bron: http://orgmode.org/worg/org-configs/org-config-examples.html#sec-2_2
  add-to-list 'iimage-mode-image-regex-alist
             (cons (concat "\\[\\[file:\\(~?" iimage-mode-image-filename-regex
                           "\\)\\]")  1))
 (defun org-toggle-iimage-in-org ()
  "display images in your org file"
  (interactive)
  (if (face-underline-p 'org-link)
      (set-face-underline-p 'org-link nil)
      (set-face-underline-p 'org-link t))
  (iimage-mode))

 (
  ;; The Typing Of Emacs, a game.
  ;; Toegevoegd op 20111108
  ;; Bron: http://www.emacswiki.org/emacs/typing.el
  load "~/.emacs.d/typing.el")
 (autoload 'typing-of-emacs "The Typing Of Emacs, a game." t)

 (
  ;; IDO mode toevoeging
  ;; Toegevoegd op 20111117
  ;; Bron: 
  ido-mode 1)
 (setq ido-enable-flex-matching t)
  ;;work with C-x C-f (find-files)
 (setq ido-everywhere t)


 (
  ;; IDO mode toevoeging
  ;; Zie mijn eigen Ido-mode.org
  ;; Toegevoegd: 20111118
  require 'recentf)
   (recentf-mode 1)
  '(ido-create-new-buffer (quote never))
  '(ido-enable-flex-matching t)
  '(ido-enable-last-directory-history nil)
  '(ido-enable-regexp nil)
  '(ido-max-directory-size 300000)
  '(ido-max-file-prompt-width 0.1)
  '(ido-use-filename-at-point (quote guess))
  '(ido-use-url-at-point t)
  '(ido-use-virtual-buffers t)

; (
;  ;; Zoeken in andere window
;  ;; Bron: http://www.youtube.com/user/emailataskcom#p/u/29/e0Kj9eVn5bI
;  ;; Toegevoegd: 20111201
;  cmd isearch-other-window
;      (save-selected-window
;	(other-window 1)
;	(isearch-forward)))
; (define-key global-map "C-ci" 'isearch-other-window)


 (
  ;; zencoding minor-mode - CSS-tool
  ;; Toegevoegd op: 20111208
  ;; Bron: https://github.com/rooney/zencoding
  ;;add-to-list 'load-path "~/.emacs.d/zencoding-mode/")
 load "~/.emacs.d/zencoding-mode/zencoding-mode.el")
 (require 'zencoding-mode)
 ;; Auto-start on any markup modes
 ;; (add-hook 'sgml-mode-hook 'zencoding-mode)


 (
  ;; YASnippet
  ;; Handmatig Toegevoegd in KoroKaa Linux
  ;; Op: 20111213
  add-to-list 'load-path "/yasnippet-ed9c52b/")
  (load "~/.emacs.d/yasnippet-ed9c52b/yasnippet.el")
    (require 'yasnippet) ;; not yasnippet-bundle

    (yas/initialize)
    ;(yas/load-directory "~/.emacs.d/snippets/")
    ;; (yas/load-directory "/snippets/")


 (
  ;; Lusty Explorer
  ;; Apart overzicht files/folders voor completion.
  ;; Toegevoegd: 16 dec 2011
  load "~/.emacs.d/lusty-explorer.el")
  (when (require 'lusty-explorer nil 'noerror)
  ;; overrride the normal file-opening, buffer switching
  (global-set-key (kbd "C-x b")   'lusty-buffer-explorer)
  (global-set-key (kbd "C-x C-f") 'lusty-file-explorer))


  ;; Alleen nodig in Fedora en Kororaa
  ; (load "keywiz.el")
  (require 'keywiz)
  ; (autoload 'keywiz "keywiz" "emacs key binding practice" t)


  ;; Use "y or n" answers instead of full words "yes or no"
  ;; Toegevoegd op 20120111
  (fset 'yes-or-no-p 'y-or-n-p)

  ;; Mijn 1e Custom keybinding; recent geopende bestanden
  ;; Toegevoegd op 20120111
  ; (global-set-key (kbd "C-c r")   'recentf-open-files)
  (global-set-key (kbd "<f7>")   'recentf-open-files)


  ;; Toggles the menu bar
  ;; Deze blijft bereikbaar mbv F10 (hetzij via mini-buffer)
  ;; Toegevoegd op 20120111
  (global-set-key [f12]    'menu-bar-mode)


  ;; Commentaar weghalen indien functie nodig
  ;;
  ;; Command Log (major) Mode
  ;; Toegevoegd op 20120112
  ;; Bron: http://www.foldr.org/~michaelw/emacs/mwe-log-commands.el
  ;; Werkt mbv:  open-command-log-buffers
  ;; en:         log-keyboard-commands
  ; (load "~/.emacs.d/mwe-log-commands.el")


  ;; html-helper-mode
  ;; Toegevoegd op 20120112
;;  (require 'tempo.el)
;;  (load "~/.emacs.d/html-helper-mode.el")
;  (autoload 'html-helper-mode "html-helper-mode" "Yay HTML" t)
  ;; To invoke html-helper-mode automatically on .html files
;  (setq auto-mode-alist (cons '("\\.html$" . html-helper-mode) auto-mode-alist))
  ;; Enable html-helper-mode customization even if the mode is not loaded
  ;;  (load "~/.emacs.d/hhm-config.el")


  (put 'upcase-region 'disabled nil)


  ;; Open bestand in Dired mbv Extern Programma (in Linux)
  ;; Toegevoegd: 20120115
  ;; Bron: http://xahlee.org/emacs/emacs_dired_open_file_in_ext_apps.html
  (defun txm-dired-open-file ()
  "Open files using Mac OS X open command or Linux xdg-open command"
  (interactive)
  (dolist (file-name (dired-get-marked-files t current-prefix-arg))
    (if (file-exists-p file-name)
        (cond ((eq system-type 'gnu/linux)
               (call-process "/usr/bin/xdg-open" nil 0 nil file-name))))))


  ;; Commentaar weghalen indien functie nodig
  ;;
  ;; unbound.el - Vind ongebruikte toetsbindingen
  ;; Toegevoegd: 20120115
  ;; Bron: http://www.emacswiki.org/emacs/unbound.el
  ; (load "~/.emacs.d/unbound.el")


  ;; Shortcut key voor buffer-menu
  ;; Toegevoegd op 20120116
  ;;
  ; (global-set-key (kbd "M-n") 'buffer-menu)
  (global-set-key (kbd "M-n") 'ibuffer)


  ;; Shortcut key voor Expanderen van Abbrev
  ;; Toegevoegd op 20120116
  (global-set-key (kbd "M-p") 'expand-abbrev)


  ;; Open alles in dezelfde Emacs-instance
  ;; Hiervoor moet emacsserver gestart zijn.
  ;; Toegevoegd op: 20120121
  (server-start)


  ;; Hangman - woordspel
  ;; Toegevoegd op 20120124
  ;; Bron: http://www.emacswiki.org/emacs/Hangman
  (load "~/.emacs.d/Hangman.el")


  ;; I.v.m. TAB-conflict in org-mode zodat ik 
  ;; eigen yas-templates in org kan gebruiken
  ;; Toegevoegd op 20120125
  ;; Bron: http://orgmode.org/manual/Conflicts.html
  ;;
  ; Poging 1
  ;(add-hook 'org-mode-hook
  ;  (lambda ()
  ;     (org-set-local 'yas/trigger-key [tab])
  ;     (define-key yas/keymap [tab] 'yas/next-field-or-maybe-expand)))
  ;;
  ; Poging 2
  ;(defun yas/org-very-safe-expand ()
  ;   (let ((yas/fallback-behavior 'return-nil)) (yas/expand)))
  ;(add-hook 'org-mode-hook
  ;                  (lambda ()
  ;                      (make-variable-buffer-local 'yas/trigger-key)
  ;                      (setq yas/trigger-key [tab])
  ;                      (add-to-list 'org-tab-first-hook 'yas/org-very-safe-expand)
  ;                      (define-key yas/keymap [tab] 'yas/next-field)))
  ;;
  ; Werkte alletwee niet. Expand m.b.v. het menu i.p.v. TAB-toets


  ;; Kopieer in window met 2 dir's naast elkaar
  ;; C kopieert default van ene naar andere dir
  ;; Toegevoegd op: 26 nov 2012
  ;; Bron: http://xahlee.org/emacs/emacs_dired_tips.html
  (setq dired-dwim-target t)


  ;; Shortcut key voor buffer-menu
  ;; Toegevoegd op 20120116
  ;;
  ; (global-set-key (kbd "M-n") 'repeat-complex-command)
  (global-set-key (kbd "<f5>") 'repeat-complex-command)


  ;; Shortcut key voor bookmark-jump (=register)
  ;; Toegevoegd op 20120126
  (global-set-key (kbd "<f6>") 'bookmark-jump)


  ;; Shortcut key voor toggle dired re-use buffer
  ;; Toegevoegd op 20120126
  (global-set-key (kbd "<f8>") 'diredp-toggle-find-file-reuse-dir)


  ;; Maak org-mode default mode voor nieuwe buffers
  ;; Toegevoegd op 20120127
  (setq default-major-mode 'org-mode)


  ;; Toegevoegd voor EMMS = Multimedia Systeem
  ;; Bron: http://www.gnu.org/software/emms/quickstart.html
  ;; Opnieuw toegevoegd op 20120129
  (add-to-list 'load-path "~/.emacs.d/emms/")
        (require 'emms-setup)
        ;(require 'emms-streams)
        (emms-standard)
        (emms-default-players)
  (emms-add-dired)
  (add-hook 'dired-mode-hook
              '(lambda ()
                  (define-key dired-mode-map "E" 'emms-add-dired)))


  ;; Bepaalde buffers (modes) kleuren
  ;; Toegevoegd op 20120202
  ;; Bron: http://www.emacswiki.org/emacs/BufferBackgroundColor
  ;; (later ook lezen: (info "(elisp) Face Remapping")
  (defvar chosig-alist
  '(
    ("scratch" . "#ffbbff")
    (emacs-lisp-mode . "#ffeeee")
    ("*shell*" . "#eeddff")
    ("ibuffer" . "#ffff00")
    (".emacs" . "#00eeff")
   )
  "Alist matching major modes or buffer names with background colors.
Every cons cell on the alist has the form (CHECK . COLOR) where CHECK
is either a symbol matching the `major-mode' or a regular expression
matching the `buffer-name' of the current buffer. COLOR is a string
representing a valid color, eg. \"red\" or \"f00\".")

  (defun chosig-choose-background ()
    "Pick background-color according to `chosig-alist'.
The overlay used is stored in `chosig-background'."
    (let ((alist chosig-alist)
	background)
    (while (and (not background) alist)
      (if (or (and (stringp (caar alist))
		   (string-match (caar alist) (buffer-name)))
	      (eq major-mode (caar alist)))
	  (setq background (cdar alist))
	(setq alist (cdr alist))))
    ;; cleanup
    (mapc (lambda (o)
	    (when (overlay-get o 'chosig)
	      (delete-overlay o)))
	  (overlays-in (point-min) (point-max)))
    ;; new one
    (when background
      (let ((o (make-overlay (point-min) (point-max)
			     (current-buffer) nil t)))
	(overlay-put o 'face `(:background ,background))
	(overlay-put o 'chosig t)))))
  (add-hook'after-change-major-mode-hook 'chosig-choose-background)