update mc
[emacs.git] / .emacs.d / config / emacs.org
index 7ec2650..f7d65e6 100644 (file)
@@ -16,37 +16,27 @@ them first.
 safe-load does not break emacs initialization, should a file be
 unreadable while emacs boots up.
 #+BEGIN_SRC emacs-lisp tangle:yes
-  (defvar safe-load-error-list ""
-          "*List of files that reported errors when loaded via safe-load")
-  
-  (defun safe-load (file &optional noerror nomessage nosuffix)
-    "Load a file.  If error on load, report back, wait for
-     a key stroke then continue on"
-    (interactive "f")
-    (condition-case nil (load file noerror nomessage nosuffix)
-      (error
-        (progn
-         (setq safe-load-error-list  (concat safe-load-error-list  " " file))
-         (message "****** [Return to continue] Error loading %s" safe-load-error-list )
-          (sleep-for 1)
-         nil))))
-  
-  (defun safe-load-check ()
-   "Check for any previous safe-load loading errors.  (safe-load.el)"
-    (interactive)
-    (if (string-equal safe-load-error-list "") ()
-                 (message (concat "****** error loading: " safe-load-error-list))))
-#+END_SRC
-
-match-paren will either jump to the "other" paren or simply insert %
-#+BEGIN_SRC emacs-lisp tangle:yes
-(defun match-paren (arg)
-  "Go to the matching parenthesis if on parenthesis otherwise insert %."
-  (interactive "p")
-  (cond ((looking-at "\\s\(") (forward-list 1) (backward-char 1))
-        ((looking-at "\\s\)") (forward-char 1) (backward-list 1))
-        (t (self-insert-command (or arg 1)))))
-  #+END_SRC
+(defvar safe-load-error-list ""
+        "*List of files that reported errors when loaded via safe-load")
+
+(defun safe-load (file &optional noerror nomessage nosuffix)
+  "Load a file.  If error on load, report back, wait for
+   a key stroke then continue on"
+  (interactive "f")
+  (condition-case nil (load file noerror nomessage nosuffix)
+    (error
+      (progn
+       (setq safe-load-error-list  (concat safe-load-error-list  " " file))
+       (message "****** [Return to continue] Error loading %s" safe-load-error-list )
+        (sleep-for 1)
+       nil))))
+
+(defun safe-load-check ()
+ "Check for any previous safe-load loading errors.  (safe-load.el)"
+  (interactive)
+  (if (string-equal safe-load-error-list "") ()
+               (message (concat "****** error loading: " safe-load-error-list))))
+#+END_SRC
 
 I have some stuff put away in my local dir. I don't want to load it all
 at startup time, so it is using the autoload feature. For that to work
@@ -56,7 +46,6 @@ load the loaddefs, so autoload knows where to grab stuff
 (safe-load (concat jj-elisp-local-dir "/loaddefs.el"))
 #+END_SRC
 
-
 Always ensure to have a scratch buffer around.
 #+BEGIN_SRC emacs-lisp tangle:yes
 (save-excursion
@@ -74,7 +63,6 @@ Handier way to add modes to auto-mode-alist
     (add-to-list 'auto-mode-alist (cons pattern mode))))
 #+END_SRC
 
-
 Helpers for the config
 #+BEGIN_SRC emacs-lisp tangle:yes
 (require 'use-package)
@@ -200,7 +188,7 @@ most for my shells, in Emacs Inconsolata clearly wins.
 I always use dark backgrounds, so tell Emacs about it. No need to
 guess around.
 #+BEGIN_SRC emacs-lisp tangle:yes
-(setq-default frame-background-mode 'dark)
+(setq-default frame-background-mode jj-color-style)
 #+END_SRC
 
 And I always liked dark backgrounds with colors setup for them. So I
@@ -891,40 +879,14 @@ For some file endings we need to tell emacs what mode we want for them.
 I only list modes here where I don't have any other special
 configuration.
 
-- Some extras for ruby, used with ruby on rails for example
-#+BEGIN_SRC emacs-lisp tangle:yes
-(add-to-list 'auto-mode-alist '("\\.rxml$" . ruby-mode))
-(add-to-list 'auto-mode-alist '("\\.rjs$" . ruby-mode))
-(add-to-list 'auto-mode-alist '("\\.rake$" . ruby-mode))
-(add-to-list 'auto-mode-alist '("Rakefile$" . ruby-mode))
-(add-to-list 'auto-mode-alist '("\\.gemspec$" . ruby-mode))
-#+END_SRC
-
 - Markdown syntax
 #+BEGIN_SRC emacs-lisp tangle:yes
-(add-to-list 'auto-mode-alist '("\\.mdwn$" . markdown-mode))
+(add-auto-mode 'markdown-mode "\\.mdwn$")
 #+END_SRC
 
 - diff
 #+BEGIN_SRC emacs-lisp tangle:yes
-(add-to-list 'auto-mode-alist '("COMMIT_EDITMSG$" . diff-mode))
-#+END_SRC
-
-- perl
-#+BEGIN_SRC emacs-lisp tangle:yes
-(add-to-list 'auto-mode-alist '("\\.\\([pP][Llm]\\|al\\)\\'" . cperl-mode))
-(add-to-list 'auto-mode-alist '("\\.pod$" . pod-mode))
-(add-to-list 'auto-mode-alist '("\\.tt$" . tt-mode))
-(add-to-list 'interpreter-mode-alist '("perl" . cperl-mode))
-(add-to-list 'interpreter-mode-alist '("perl5" . cperl-mode))
-(add-to-list 'interpreter-mode-alist '("miniperl" . cperl-mode))
-#+END_SRC
-
-- python
-#+BEGIN_SRC emacs-lisp tangle:yes
-(add-to-list 'auto-mode-alist '("\\.py\\'" . python-mode))
-(add-to-list 'auto-mode-alist '("\\.py$" . python-mode))
-(add-to-list 'interpreter-mode-alist '("python" . python-mode))
+(add-auto-mode 'diff-mode "COMMIT_EDITMSG$")
 #+END_SRC
 
 ** Region bindings mode
@@ -1089,56 +1051,62 @@ formats if one exists in the first 8 lines of the file.
 (add-hook 'write-file-hooks 'time-stamp)
 #+END_SRC
 
-** cperl
+** perl / cperl
 I like /cperl-mode/ a bit more than the default /perl-mode/, so set it
 up here to be used.
 #+BEGIN_SRC emacs-lisp tangle:yes
 (autoload 'cperl-mode "cperl-mode" )
 (defalias 'perl-mode 'cperl-mode)
-(setq cperl-hairy t)
-(setq cperl-electric-keywords t)
-(setq cperl-electric-lbrace-space t)
-(setq cperl-electric-parens nil)
-(setq cperl-highlight-variables-indiscriminately t)
-(setq cperl-imenu-addback t)
-(setq cperl-invalid-face (quote underline))
-(setq cperl-lazy-help-time 5)
-(setq cperl-mode-hook (quote (turn-on-tinyperl-mode)))
-(setq cperl-scan-files-regexp "\\.\\([pP][Llm]\\|xs\\|cgi\\)$")
-(setq cperl-syntaxify-by-font-lock t)
-(setq cperl-use-syntax-table-text-property-for-tags t)
-#+END_SRC
-
-And have cperl mode give ElDoc a useful string
-#+BEGIN_SRC emacs-lisp tangle:yes
-(defun my-cperl-eldoc-documentation-function ()
-  "Return meaningful doc string for `eldoc-mode'."
-  (car
-   (let ((cperl-message-on-help-error nil))
-     (cperl-get-help))))
-(add-hook 'cperl-mode-hook
-          (lambda ()
-            (set (make-local-variable 'eldoc-documentation-function)
-                 'my-cperl-eldoc-documentation-function)
-            (eldoc-mode)))
+(add-auto-mode 'cperl-mode "\\.\\([pP][Llm]\\|al\\)\\'")
+(add-auto-mode 'pod-mode   "\\.pod$")
+(add-auto-mode 'tt-mode    "\\.tt$")
+(add-to-list 'interpreter-mode-alist '("perl" . cperl-mode))
+(add-to-list 'interpreter-mode-alist '("perl5" . cperl-mode))
+(add-to-list 'interpreter-mode-alist '("miniperl" . cperl-mode))
+
+(after 'cperl-mode
+  (setq cperl-hairy t)
+  (setq cperl-electric-keywords t)
+  (setq cperl-electric-lbrace-space t)
+  (setq cperl-electric-parens nil)
+  (setq cperl-highlight-variables-indiscriminately t)
+  (setq cperl-imenu-addback t)
+  (setq cperl-invalid-face (quote underline))
+  (setq cperl-lazy-help-time 5)
+  (setq cperl-mode-hook (quote (turn-on-tinyperl-mode)))
+  (setq cperl-scan-files-regexp "\\.\\([pP][Llm]\\|xs\\|cgi\\)$")
+  (setq cperl-syntaxify-by-font-lock t)
+  (setq cperl-use-syntax-table-text-property-for-tags t)
+
+  ;; And have cperl mode give ElDoc a useful string
+  (defun my-cperl-eldoc-documentation-function ()
+    "Return meaningful doc string for `eldoc-mode'."
+    (car
+     (let ((cperl-message-on-help-error nil))
+       (cperl-get-help))))
+
+  (add-hook 'cperl-mode-hook
+            (lambda ()
+              (set (make-local-variable 'eldoc-documentation-function)
+                   'my-cperl-eldoc-documentation-function)
+              (eldoc-mode))))
 #+END_SRC
 
 ** python
 #+BEGIN_SRC emacs-lisp tangle:yes
-  (autoload 'python-mode "python-mode" "Python Mode." t)
-  (add-to-list 'auto-mode-alist '("\\.py\\'" . python-mode))
-  (add-to-list 'interpreter-mode-alist '("python" . python-mode))
-  (setq interpreter-mode-alist
-        (cons '("python" . python-mode)
-              interpreter-mode-alist)
-        python-mode-hook
-        '(lambda () (progn
-                      (set-variable 'py-indent-offset 4)
-                      (set-variable 'py-smart-indentation nil)
-                      (set-variable 'indent-tabs-mode nil)
-                      (define-key python-mode-map "\C-m" 'newline-and-indent)
-                      (turn-on-eldoc-mode)
-                      )))
+(autoload 'python-mode "python-mode" "Python Mode." t)
+(add-auto-mode 'python-mode "\\.py\\'")
+(add-auto-mode 'python-mode "\\.py$")
+(add-auto-mode 'python-mode "SConstruct\\'")
+(add-auto-mode 'python-mode "SConscript\\'")
+(add-to-list 'interpreter-mode-alist '("python" . python-mode))
+
+(after 'python-mode
+  (set-variable 'py-indent-offset 4)
+  (set-variable 'py-smart-indentation nil)
+  (set-variable 'indent-tabs-mode nil)
+  (define-key python-mode-map "\C-m" 'newline-and-indent)
+  (turn-on-eldoc-mode)
   (defun python-auto-fill-comments-only ()
     (auto-fill-mode 1)
     (set (make-local-variable 'fill-nobreak-predicate)
@@ -1152,8 +1120,7 @@ And have cperl mode give ElDoc a useful string
   (autoload 'pymacs-call "pymacs")
   (autoload 'pymacs-eval "pymacs" nil t)
   (autoload 'pymacs-exec "pymacs" nil t)
-  (autoload 'pymacs-load "pymacs" nil t)
-  
+  (autoload 'pymacs-load "pymacs" nil t))
 #+END_SRC
 
 If an =ipython= executable is on the path, then assume that IPython is
@@ -1196,40 +1163,42 @@ Various modes should have line numbers in front of each line.
 But then there are some where it would just be deadly - like org-mode,
 gnus, so we have a list of modes where we don't want to see it.
 #+BEGIN_SRC emacs-lisp tangle:yes
-  (require 'linum)
-  (setq linum-format "%3d ")
-  (setq linum-mode-inhibit-modes-list '(org-mode
-                                        eshell-mode
-                                        shell-mode
-                                        gnus-group-mode
-                                        gnus-summary-mode
-                                        gnus-article-mode))
+(require 'linum)
+(setq linum-format "%3d ")
+(setq linum-mode-inhibit-modes-list '(org-mode
+                                      eshell-mode
+                                      shell-mode
+                                      gnus-group-mode
+                                      gnus-summary-mode
+                                      gnus-article-mode))
 
-  (defadvice linum-on (around linum-on-inhibit-for-modes)
-    "Stop the load of linum-mode for some major modes."
-      (unless (member major-mode linum-mode-inhibit-modes-list)
-        ad-do-it))
+(defadvice linum-on (around linum-on-inhibit-for-modes)
+  "Stop the load of linum-mode for some major modes."
+    (unless (member major-mode linum-mode-inhibit-modes-list)
+      ad-do-it))
 
-  (ad-activate 'linum-on)
-  (global-linum-mode 1)
+(ad-activate 'linum-on)
+(global-linum-mode 1)
 #+END_SRC
 
 ** css
 #+BEGIN_SRC emacs-lisp tangle:yes
 (autoload 'css-mode "css-mode")
 (add-auto-mode 'css-mode "\\.css")
-;;; CSS flymake
-(require 'flymake-css)
-(defun maybe-flymake-css-load ()
-  "Activate flymake-css as necessary, but not in derived modes."
-  (when (eq major-mode 'css-mode)
-    (flymake-css-load)))
-(add-hook 'css-mode-hook 'maybe-flymake-css-load)
-;;; Auto-complete CSS keywords
-(eval-after-load 'auto-complete
-  '(progn
-     (dolist (hook '(css-mode-hook sass-mode-hook scss-mode-hook))
-       (add-hook hook 'ac-css-mode-setup))))
+
+(after 'css-mode
+  ;;; CSS flymake
+  (require 'flymake-css)
+  (defun maybe-flymake-css-load ()
+    "Activate flymake-css as necessary, but not in derived modes."
+    (when (eq major-mode 'css-mode)
+      (flymake-css-load)))
+  (add-hook 'css-mode-hook 'maybe-flymake-css-load)
+  ;;; Auto-complete CSS keywords
+  (eval-after-load 'auto-complete
+    '(progn
+       (dolist (hook '(css-mode-hook sass-mode-hook scss-mode-hook))
+         (add-hook hook 'ac-css-mode-setup)))))
 #+END_SRC
 
 ** mmm-mode
@@ -1274,9 +1243,10 @@ coexist in one buffer.
 Instead of default /html-mode/ I use /html-helper-mode/.
 #+BEGIN_SRC emacs-lisp tangle:yes
 (autoload 'html-helper-mode "html-helper-mode" "Yay HTML" t)
-(setq auto-mode-alist (cons '("\\.html$" . html-helper-mode) auto-mode-alist))
-(setq auto-mode-alist (cons '("\\.asp$" . html-helper-mode) auto-mode-alist))
-(setq auto-mode-alist (cons '("\\.phtml$" . html-helper-mode) auto-mode-alist))
+(add-auto-mode 'html-helper-mode "\\.html$")
+(add-auto-mode 'html-helper-mode "\\.asp$")
+(add-auto-mode 'html-helper-mode "\\.phtml$")
+(add-auto-mode 'html-helper-mode "\\.(jsp|tmpl)\\'")
 (defalias 'html-mode 'html-helper-mode)
 #+END_SRC
 
@@ -2382,13 +2352,14 @@ I want to access it from anywhere using =F6=.
 #+BEGIN_SRC emacs-lisp tangle:yes
 (autoload 'mingus "mingus-stays-home" nil t)
 (global-set-key (kbd "<f6>") 'mingus)
-(setq mingus-dired-add-keys t)
-(setq mingus-mode-always-modeline nil)
-(setq mingus-mode-line-show-elapsed-percentage nil)
-(setq mingus-mode-line-show-volume nil)
-(setq mingus-mpd-config-file "/etc/mpd.conf")
-(setq mingus-mpd-playlist-dir "/var/lib/mpd/playlists")
-(setq mingus-mpd-root "/share/music/")
+(after 'mingus
+ (setq mingus-dired-add-keys t)
+ (setq mingus-mode-always-modeline nil)
+ (setq mingus-mode-line-show-elapsed-percentage nil)
+ (setq mingus-mode-line-show-volume nil)
+ (setq mingus-mpd-config-file "/etc/mpd.conf")
+ (setq mingus-mpd-playlist-dir "/var/lib/mpd/playlists")
+ (setq mingus-mpd-root "/share/music/"))
 #+END_SRC
 
 ** sessions
@@ -2474,17 +2445,19 @@ I took the following from [[http://www.emacswiki.org/emacs/EasyPG][EmacsWiki: Ea
 #+END_SRC
 ** message
 #+BEGIN_SRC emacs-lisp tangle:yes
-  (require 'message)
-  (setq message-kill-buffer-on-exit t)
+(require 'message)
+(setq message-kill-buffer-on-exit t)
 #+END_SRC
 ** gnus
 Most of my gnus config is in an own file, [[file:gnus.org][gnus.org]], here I only have
 what I want every emacs to know.
-
 #+BEGIN_SRC emacs-lisp tangle:yes
 ;;*** Keyboardmacros
 (global-unset-key "\M-n")
 (global-set-key "\M-n" 'gnus) ; Start gnus with M-n
+(after 'gnus
+  (jj-init-theme)
+)
 #+END_SRC
 
 ** url
@@ -2499,17 +2472,17 @@ operating system or location info.
 Crazy way of completion. It looks at the word before point and then
 tries to expand it in various ways.
 #+BEGIN_SRC emacs-lisp tangle:yes
-  (require 'hippie-exp)
-  (setq hippie-expand-try-functions-list '(try-expand-dabbrev
-                                           try-expand-dabbrev-all-buffers
-                                           try-expand-dabbrev-from-kill
-                                           try-complete-file-name-partially
-                                           try-complete-file-name
-                                           try-expand-all-abbrevs try-expand-list
-                                           try-expand-line
-                                           try-complete-lisp-symbol-partially
-                                           try-complete-lisp-symbol))
-  (global-set-key (kbd "M-/") 'hippie-expand)
+(require 'hippie-exp)
+(setq hippie-expand-try-functions-list '(try-expand-dabbrev
+                                         try-expand-dabbrev-all-buffers
+                                         try-expand-dabbrev-from-kill
+                                         try-complete-file-name-partially
+                                         try-complete-file-name
+                                         try-expand-all-abbrevs try-expand-list
+                                         try-expand-line
+                                         try-complete-lisp-symbol-partially
+                                         try-complete-lisp-symbol))
+(global-set-key (kbd "M-/") 'hippie-expand)
 #+END_SRC
 ** yasnippet
 [2013-04-27 Sa 23:16]
@@ -2592,7 +2565,7 @@ while I have one.
 #+END_SRC
 ** windmove
 [2013-04-21 So 20:27]
-Use shift + arrow keys to switch between visible buffers
+Use hyper + arrow keys to switch between visible buffers
 #+BEGIN_SRC emacs-lisp tangle:yes
 (require 'windmove)
 (windmove-default-keybindings 'hyper)
@@ -2622,9 +2595,6 @@ Saner regex syntax
 (require 're-builder)
 (setq reb-re-syntax 'string)
 #+END_SRC
-
-[2013-04-21 So 20:39]
-
 ** magit
 [2013-04-21 So 20:48]
 magit is a mode for interacting with git.
@@ -2646,7 +2616,7 @@ then I like it nice too...
 (setq lisp-coding-hook 'lisp-coding-defaults)
   (setq interactive-lisp-coding-hook 'interactive-lisp-coding-defaults)
 
-(eval-after-load "paredit"
+(after "paredit"
   '(diminish 'paredit-mode " π"))
 
 (setq prelude-emacs-lisp-mode-hook 'prelude-emacs-lisp-mode-defaults)
@@ -2655,11 +2625,11 @@ then I like it nice too...
 
 (define-key emacs-lisp-mode-map (kbd "M-.") 'find-function-at-point)
 
-(eval-after-load "elisp-slime-nav"
+(after "elisp-slime-nav"
   '(diminish 'elisp-slime-nav-mode))
-(eval-after-load "rainbow-mode"
+(after "rainbow-mode"
   '(diminish 'rainbow-mode))
-(eval-after-load "eldoc"
+(after "eldoc"
   '(diminish 'eldoc-mode))
 #+END_SRC
 
@@ -2749,7 +2719,8 @@ YAML is a nice format for data, which is both, human and machine
 readable/editable without getting a big headache.
 #+BEGIN_SRC emacs-lisp tangle:yes
 (require 'yaml-mode)
-(add-to-list 'auto-mode-alist '("\\.yml$" . yaml-mode))
+(add-auto-mode 'yaml-mode "\\.yml$")
+(add-auto-mode 'yaml-mode "\\.yaml$")
 (add-hook 'yaml-mode-hook
  '(lambda ()
     (define-key yaml-mode-map "\C-m" 'newline-and-indent)))
@@ -2774,7 +2745,6 @@ understand for me.
 
 ** nxml
 [2013-05-22 Wed 22:02]
-
 nxml-mode is a major mode for editing XML.
 #+BEGIN_SRC emacs-lisp tangle:yes
 (add-auto-mode
@@ -2788,7 +2758,6 @@ nxml-mode is a major mode for editing XML.
 (fset 'xml-mode 'nxml-mode)
 (setq nxml-slash-auto-complete-flag t)
 
-
 ;; See: http://sinewalker.wordpress.com/2008/06/26/pretty-printing-xml-with-emacs-nxml-mode/
 (defun pp-xml-region (begin end)
   "Pretty format XML markup in region. The function inserts
@@ -2812,65 +2781,42 @@ indentation rules."
      (add-hook 'nxml-mode-hook (lambda () (tidy-build-menu nxml-mode-map)))
      (add-hook 'html-mode-hook (lambda () (tidy-build-menu html-mode-map)))
      ))
-(add-auto-mode 'html-mode "\\.(jsp|tmpl)\\'")
 
 #+END_SRC
 ** ruby
 [2013-05-22 Wed 22:33]
 Programming in ruby...
 
+*** Auto-modes
 #+BEGIN_SRC emacs-lisp tangle:yes
 (add-auto-mode 'ruby-mode
                "Rakefile\\'" "\\.rake\\'" "\.rxml\\'"
                "\\.rjs\\'" ".irbrc\\'" "\.builder\\'" "\\.ru\\'"
                "\\.gemspec\\'" "Gemfile\\'" "Kirkfile\\'")
+#+END_SRC
 
-(setq ruby-use-encoding-map nil)
-
-(eval-after-load 'ruby-mode
-  '(progn
-     (define-key ruby-mode-map (kbd "RET") 'reindent-then-newline-and-indent)
-     (define-key ruby-mode-map (kbd "TAB") 'indent-for-tab-command)))
-
-;; Stupidly the non-bundled ruby-mode isn't a derived mode of
-;; prog-mode: we run the latter's hooks anyway in that case.
-(add-hook 'ruby-mode-hook
-          (lambda ()
-            (unless (derived-mode-p 'prog-mode)
-              (run-hooks 'prog-mode-hook))))
-
-;;; ERB
-(defun sanityinc/ensure-mmm-erb-loaded ()
-  (require 'mmm-erb))
-
-(require 'derived)
-
-(defun sanityinc/set-up-mode-for-erb (mode)
-  (add-hook (derived-mode-hook-name mode) 'sanityinc/ensure-mmm-erb-loaded)
-  (mmm-add-mode-ext-class mode "\\.erb\\'" 'erb))
-
-(let ((html-erb-modes '(html-mode html-erb-mode nxml-mode)))
-  (dolist (mode html-erb-modes)
-    (sanityinc/set-up-mode-for-erb mode)
-    (mmm-add-mode-ext-class mode "\\.r?html\\(\\.erb\\)?\\'" 'html-js)
-    (mmm-add-mode-ext-class mode "\\.r?html\\(\\.erb\\)?\\'" 'html-css)))
-
-(mapc 'sanityinc/set-up-mode-for-erb
-      '(coffee-mode js-mode js2-mode js3-mode markdown-mode textile-mode))
-
-(mmm-add-mode-ext-class 'html-erb-mode "\\.jst\\.ejs\\'" 'ejs)
-
-(add-auto-mode 'html-erb-mode "\\.rhtml\\'" "\\.html\\.erb\\'")
-(add-to-list 'auto-mode-alist '("\\.jst\\.ejs\\'"  . html-erb-mode))
-(mmm-add-mode-ext-class 'yaml-mode "\\.yaml\\'" 'erb)
+*** Config
+#+BEGIN_SRC emacs-lisp tangle:yes
+(after 'ruby-mode
+       (message "ruby has been loaded")
+       (define-key ruby-mode-map (kbd "RET") 'reindent-then-newline-and-indent)
+       (define-key ruby-mode-map (kbd "TAB") 'indent-for-tab-command)
 
-(dolist (mode (list 'js-mode 'js2-mode 'js3-mode))
-  (mmm-add-mode-ext-class mode "\\.js\\.erb\\'" 'erb))
+       (require 'ruby-hash-syntax)
+       (require 'inf-ruby)
+       (setq ruby-use-encoding-map nil)
+       ;; Stupidly the non-bundled ruby-mode isn't a derived mode of
+       ;; prog-mode: we run the latter's hooks anyway in that case.
+       (add-hook 'ruby-mode-hook
+                 (lambda ()
+                   (unless (derived-mode-p 'prog-mode)
+                     (run-hooks 'prog-mode-hook))))
 
+       )
 #+END_SRC
 ** emms
 EMMS is the Emacs Multimedia System.
-#+BEGIN_SRC emacs-lisp tangle:yes
+#+BEGIN_SRC emacs-lisp tangle:no
 (require 'emms-source-file)
 (require 'emms-source-playlist)
 (require 'emms-info)
@@ -3036,6 +2982,13 @@ file, so basically works in every halfway structured file.
 ;;(define-key global-map (kbd "C-c C-f") 'yafolding-toggle-all)
 (define-key global-map (kbd "C-c C-f") 'yafolding-toggle-all-by-current-level)
 #+END_SRC
+** icomplete
+Incremental mini-buffer completion preview: Type in the minibuffer,
+list of matching commands is echoed
+#+BEGIN_SRC emacs-lisp tangle:yes
+(icomplete-mode 99)
+#+END_SRC
+
 * Thats it
 And thats it for this file, control passes "back" to [[file:../initjj.org][initjj.org/el]]
 which then may load more files.