<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>init-byte-code-cache.el</filename>
    </added>
    <added>
      <filename>init-common-lisp.el</filename>
    </added>
    <added>
      <filename>init-darcs.el</filename>
    </added>
    <added>
      <filename>init-ecb.el</filename>
    </added>
    <added>
      <filename>init-flyspell.el</filename>
    </added>
    <added>
      <filename>init-git.el</filename>
    </added>
    <added>
      <filename>init-haskell.el</filename>
    </added>
    <added>
      <filename>init-ido.el</filename>
    </added>
    <added>
      <filename>init-javascript.el</filename>
    </added>
    <added>
      <filename>init-lisp.el</filename>
    </added>
    <added>
      <filename>init-nxml.el</filename>
    </added>
    <added>
      <filename>init-rails.el</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -9,3 +9,13 @@
 
 (setq interpreter-mode-alist
       (cons '(&quot;python&quot; . python-mode) interpreter-mode-alist))
+
+
+;;----------------------------------------------------------------------------
+;; Pymacs and Rope for Python
+;;----------------------------------------------------------------------------
+;; See http://edward.oconnor.cx/2008/02/ropemacs
+(add-hook 'python-mode-hook
+          (lambda ()
+            (require 'pymacs)
+            (pymacs-load &quot;ropemacs&quot; &quot;rope-&quot;)))</diff>
      <filename>init-python-mode.el</filename>
    </modified>
    <modified>
      <diff>@@ -9,3 +9,106 @@
   &quot;Set local key defs for inf-ruby in ruby-mode&quot;)
 
 (add-hook 'ruby-mode-hook 'inf-ruby-keys)
+
+
+;;----------------------------------------------------------------------------
+;; Ruby - basics
+;;----------------------------------------------------------------------------
+(autoload 'ruby-electric-mode &quot;ruby-electric&quot; &quot;Electric brackes/quotes/keywords for Ruby source&quot; t)
+(require 'rcodetools)
+(setq ruby-electric-expand-delimiters-list nil)  ; Only use ruby-electric for adding 'end'
+(add-hook 'ruby-mode-hook
+          (lambda () (ruby-electric-mode t)))
+(when *vi-emulation-support-enabled*
+  (add-hook 'ruby-mode-hook (lambda () (viper-change-state-to-vi))))
+
+(add-auto-mode 'ruby-mode &quot;Rakefile$&quot; &quot;\.rake$&quot; &quot;\.rxml$&quot; &quot;\.rjs&quot; &quot;.irbrc&quot;)
+
+
+(setq compile-command &quot;rake &quot;)
+
+(autoload 'ri &quot;ri-ruby&quot; &quot;Show ri documentation for Ruby symbols&quot; t)
+(setq ri-ruby-script (concat (directory-of-library &quot;ri-ruby&quot;) &quot;ri-emacs.rb&quot;))
+
+
+;;----------------------------------------------------------------------------
+;; Ruby - erb
+;;----------------------------------------------------------------------------
+(add-auto-mode 'html-mode &quot;\.rhtml$&quot;)
+(eval-after-load &quot;mmm-mode&quot;
+  '(progn
+     (mmm-add-classes
+      '((eruby :submode ruby-mode :front &quot;&lt;%[#=]?&quot; :back &quot;-?%&gt;&quot;
+               :match-face ((&quot;&lt;%#&quot; . mmm-comment-submode-face)
+                            (&quot;&lt;%=&quot; . mmm-output-submode-face)
+                            (&quot;&lt;%&quot;  . mmm-code-submode-face))
+               :insert ((?% erb-code       nil @ &quot;&lt;%&quot;  @ &quot; &quot; _ &quot; &quot; @ &quot;%&gt;&quot; @)
+                        (?# erb-comment    nil @ &quot;&lt;%#&quot; @ &quot; &quot; _ &quot; &quot; @ &quot;%&gt;&quot; @)
+                        (?= erb-expression nil @ &quot;&lt;%=&quot; @ &quot; &quot; _ &quot; &quot; @ &quot;%&gt;&quot; @)))))
+     (mmm-add-mode-ext-class 'nxml-mode &quot;\\.html\\.erb$&quot; 'eruby)
+     (mmm-add-mode-ext-class 'nxml-mode &quot;\\.rhtml$&quot; 'eruby)
+     (mmm-add-mode-ext-class 'yaml-mode &quot;\\.yml$&quot; 'eruby)))
+
+
+;;----------------------------------------------------------------------------
+;; Ruby - my convention for heredocs containing SQL
+;;----------------------------------------------------------------------------
+(eval-after-load &quot;mmm-mode&quot;
+  '(progn
+     (mmm-add-classes
+      '((ruby-heredoc-sql :submode sql-mode :front &quot;&lt;&lt;-?end_sql.*\r?\n&quot; :back &quot;[ \t]*end_sql&quot; :face mmm-code-submode-face)))
+     (mmm-add-mode-ext-class 'ruby-mode &quot;\\.rb$&quot; 'ruby-heredoc-sql)))
+
+
+;;----------------------------------------------------------------------------
+;; Ruby - haml &amp; sass
+;;----------------------------------------------------------------------------
+(add-auto-mode 'haml-mode &quot;\.haml$&quot;)
+(add-auto-mode 'sass-mode &quot;\.sass$&quot;)
+(autoload 'haml-mode &quot;haml-mode&quot; &quot;Mode for editing haml files&quot; t)
+(autoload 'sass-mode &quot;sass-mode&quot; &quot;Mode for editing sass files&quot; t)
+
+
+;;----------------------------------------------------------------------------
+;; Ruby - compilation
+;;----------------------------------------------------------------------------
+
+;; Jump to lines from Ruby stack traces in 'compile' mode (regexps borrowed from emacs-rails)
+(defun ruby-backtrace-line-regexp (&amp;optional prefix suffix)
+  (concat prefix &quot;\\[?\\([^ \f\n\r\t\v]+?\\):\\([0-9]+\\)\\(?::in\s*`\\(.*?\\)'\\)?&quot; suffix))
+(eval-after-load &quot;compile&quot;
+  '(progn
+     (mapcar (lambda (defn) (add-to-list 'compilation-error-regexp-alist-alist defn))
+             (list (list 'ruby-backtrace (ruby-backtrace-line-regexp) 1 2 nil 1)
+                   (list 'ruby-test-backtrace (ruby-backtrace-line-regexp nil &quot;\\(?:\]:\\|\n$\\)&quot;) 1 2 nil 2)))))
+
+(define-derived-mode ruby-compilation-mode compilation-mode &quot;Compilation[ruby]&quot;
+  &quot;Major mode for running ruby scripts and tests.&quot;
+  (set (make-local-variable 'compilation-error-regexp-alist) '(ruby-backtrace ruby-test-backtrace)))
+
+(defun ruby-compile (command)
+  (compile command)
+  (with-current-buffer &quot;*compilation*&quot; (ruby-compilation-mode)))
+
+
+(require 'which-func)
+(add-to-list 'which-func-modes 'ruby-mode)
+(setq imenu-auto-rescan t)       ; ensure function names auto-refresh
+(setq imenu-max-item-length 200) ; ensure function names are not truncated
+(defun ruby-execute-current-file ()
+  &quot;Execute the current ruby file (e.g. to execute all tests).&quot;
+  (interactive)
+  (ruby-compile (concat &quot;ruby &quot; (file-name-nondirectory (buffer-file-name)))))
+(defun ruby-test-function ()
+  &quot;Test the current ruby function (must be runnable via ruby &lt;buffer&gt; --name &lt;test&gt;).&quot;
+  (interactive)
+  (let* ((funname (which-function))
+         (fn (and funname (and (string-match &quot;\\(#\\|::\\)\\(test.*\\)&quot; funname) (match-string 2 funname)))))
+    (ruby-compile (concat &quot;ruby &quot; (file-name-nondirectory (buffer-file-name)) (and fn (concat &quot; --name &quot; fn))))))
+
+; run the current buffer using Shift-F7
+(add-hook 'ruby-mode-hook (lambda () (local-set-key [S-f7] 'ruby-execute-current-file)))
+; run the current test function using F8 key
+(add-hook 'ruby-mode-hook (lambda () (local-set-key [f7] 'ruby-test-function)))
+
+(add-hook 'ruby-mode-hook (lambda () (local-set-key [f6] 'recompile)))</diff>
      <filename>init-ruby-mode.el</filename>
    </modified>
    <modified>
      <diff>@@ -35,14 +35,7 @@
 ;; Automatically byte-compile .el files
 ;;----------------------------------------------------------------------------
 (when *byte-code-cache-enabled*
-  (setq byte-compile-warnings t)
-  (setq byte-cache-directory nil)
-  (setq bcc-enabled-on-save t)
-  (setq bcc-blacklist '(&quot;/\\.recentf$&quot; &quot;/history$&quot; &quot;/\\.ecb-user-layouts\\.el$&quot; &quot;/\\.session$&quot;
-                        &quot;/\\.emacs-project$&quot; &quot;/\\.emacs\\.desktop$&quot; &quot;/custom\\.el$&quot; &quot;/init\\.el$&quot;
-                        &quot;/\\.ido\\.last$&quot; &quot;/\\.ecb-tip-of-day\\.el$&quot; &quot;/\\.viper$&quot; &quot;/\\.recentf$&quot;))
-  (require 'byte-code-cache))
-
+  (load &quot;init-byte-code-cache.el&quot;))
 
 
 ;;----------------------------------------------------------------------------
@@ -73,7 +66,6 @@
 ;; Outboard initialisation files
 ;;----------------------------------------------------------------------------
 (setq load-path (cons (expand-file-name &quot;~/.emacs.d&quot;) load-path))
-(load &quot;init-ruby-mode.el&quot;)
 (load &quot;init-python-mode.el&quot;)
 
 
@@ -247,47 +239,7 @@
 ;;----------------------------------------------------------------------------
 ;; Javascript
 ;;----------------------------------------------------------------------------
-;; ;; Can't get this to work...
-;; (eval-after-load &quot;mmm-mode&quot;
-;;   '(progn
-;;      (load-library &quot;javascript&quot;)
-;;      (load-library &quot;css-mode&quot;)
-;;      (require 'mmm-sample)
-;;      (add-to-list 'mmm-mode-ext-classes-alist '(nxml-mode nil html-js))
-;;      (add-to-list 'mmm-mode-ext-classes-alist '(nxml-mode nil embedded-css))))
-(autoload 'flymake-js-load &quot;flymake-js&quot; &quot;On-the-fly syntax checking of javascript&quot; t)
-(add-hook 'javascript-mode-hook '(lambda () (flymake-js-load)))
-
-;; Spiffy new js2-mode from Steve Yegge (http://code.google.com/p/js2-mode/)
-(autoload 'js2-mode &quot;js2&quot; nil t)
-(add-to-list 'auto-mode-alist '(&quot;\\.js$&quot; . js2-mode))
-(setq js2-use-font-lock-faces t)
-
-(eval-after-load &quot;mmm-mode&quot;
-  '(progn
-     (mmm-add-group
-      'html-js2
-      '((js-script-cdata
-         :submode js2-mode
-         :face mmm-code-submode-face
-         :front &quot;&lt;script[^&gt;]*&gt;[ \t\n]*\\(//\\)?&lt;!\\[CDATA\\[[ \t]*\n?&quot;
-         :back &quot;[ \t]*\\(//\\)?]]&gt;[ \t\n]*&lt;/script&gt;&quot;
-         :insert ((?j js-tag nil @ &quot;&lt;script language=\&quot;JavaScript\&quot;&gt;&quot;
-                      @ &quot;\n&quot; _ &quot;\n&quot; @ &quot;&lt;/script&gt;&quot; @)))
-        (js-script
-         :submode js2-mode
-         :face mmm-code-submode-face
-         :front &quot;&lt;script[^&gt;]*&gt;[ \t]*\n?&quot;
-         :back &quot;[ \t]*&lt;/script&gt;&quot;
-         :insert ((?j js-tag nil @ &quot;&lt;script language=\&quot;JavaScript\&quot;&gt;&quot;
-                      @ &quot;\n&quot; _ &quot;\n&quot; @ &quot;&lt;/script&gt;&quot; @)))
-        (js-inline
-         :submode js2-mode
-         :face mmm-code-submode-face
-         :front &quot;on\w+=\&quot;&quot;
-         :back &quot;\&quot;&quot;)))
-     (mmm-add-mode-ext-class 'nxml-mode &quot;\\.r?html\\(\\.erb\\)?$&quot; 'html-js2)))
-
+(load &quot;init-javascript.el&quot;)
 
 ;;----------------------------------------------------------------------------
 ;; Extensions -&gt; Modes
@@ -326,48 +278,13 @@
 ;; Darcs
 ;;----------------------------------------------------------------------------
 (when *darcs-support-enabled*
-  (add-to-list 'vc-handled-backends 'DARCS)
-  (autoload 'vc-darcs-find-file-hook &quot;vc-darcs&quot;)
-  (add-hook 'find-file-hooks 'vc-darcs-find-file-hook)
-
-  (require 'darcsum)
-  (setq darcsum-whatsnew-switches &quot;-l&quot;)
-
-  (eval-after-load &quot;grep&quot;
-  '(add-to-list 'grep-find-ignored-directories &quot;_darcs&quot;)))
+  (load &quot;init-darcs.el&quot;))
 
 
 ;;----------------------------------------------------------------------------
 ;; Git
 ;;----------------------------------------------------------------------------
-;;(setq load-path (cons (expand-file-name &quot;/usr/share/doc/git-core/contrib/emacs&quot;) load-path))
-;; Downloaded from http://git.kernel.org/?p=git/git.git ;a=tree;hb=HEAD;f=contrib/emacs
-(require 'vc-git)
-(when (featurep 'vc-git) (add-to-list 'vc-handled-backends 'git))
-(require 'git)
-(autoload 'git-blame-mode &quot;git-blame&quot; &quot;Minor mode for incremental blame for Git.&quot; t)
-(autoload 'gitsum &quot;gitsum&quot; &quot;Make hunk-based git commits&quot; t)
-(add-hook 'git-status-mode-hook (lambda () (require 'gitsum)))
-
-
-;;----------------------------------------------------------------------------
-;; git-svn conveniences
-;;----------------------------------------------------------------------------
-(eval-after-load &quot;compile&quot;
-  '(progn
-     (mapcar (lambda (defn) (add-to-list 'compilation-error-regexp-alist-alist defn))
-             (list '(git-svn-updated &quot;^\t[A-Z]\t\\(.*\\)$&quot; 1 nil nil 0 1)
-                   '(git-svn-needs-update &quot;^\\(.*\\): needs update$&quot; 1 nil nil 2 1)))
-     (mapcar (lambda (defn) (add-to-list 'compilation-error-regexp-alist defn))
-             (list 'git-svn-updated 'git-svn-needs-update))))
-
-(defun git-svn (dir)
-  (interactive &quot;DSelect directory: &quot;)
-  (let* ((default-directory (git-get-top-dir dir))
-         (compilation-buffer-name-function (lambda (major-mode-name) &quot;*git-svn*&quot;)))
-    (compile (concat &quot;git svn &quot;
-                     (ido-completing-read &quot;git-svn command: &quot;
-                                          (list &quot;rebase&quot; &quot;dcommit&quot; &quot;fetch&quot; &quot;log&quot;) nil t)))))
+(load &quot;init-git.el&quot;)
 
 
 ;;----------------------------------------------------------------------------
@@ -385,37 +302,9 @@
 ;;----------------------------------------------------------------------------
 ;; File and buffer navigation
 ;;----------------------------------------------------------------------------
-;; Use C-f during file selection to switch to regular find-file
-(ido-mode t)  ; use 'buffer rather than t to use only buffer switching
-(ido-everywhere t)
-(setq ido-enable-flex-matching t)
-(setq ido-use-filename-at-point t)
-(setq ido-auto-merge-work-directories-length -1)
-
 (require 'recentf)
 (setq recentf-max-saved-items 100)
-(defun steve-ido-choose-from-recentf ()
-  &quot;Use ido to select a recently opened file from the `recentf-list'&quot;
-  (interactive)
-  (find-file (ido-completing-read &quot;Open file: &quot; recentf-list nil t)))
-(global-set-key [(meta f11)] 'steve-ido-choose-from-recentf)
-
-
-;;----------------------------------------------------------------------------
-;; ido completion in M-x
-;;----------------------------------------------------------------------------
-;; See http://www.emacswiki.org/cgi-bin/wiki/InteractivelyDoThings#toc5
-(defun ido-execute ()
-  (interactive)
-  (call-interactively
-   (intern
-    (ido-completing-read
-     &quot;M-x &quot;
-     (let (cmd-list)
-       (mapatoms (lambda (S) (when (commandp S) (setq cmd-list (cons (format &quot;%S&quot; S) cmd-list)))))
-       cmd-list)))))
-
-(global-set-key &quot;\M-x&quot; 'ido-execute)
+(load &quot;init-ido.el&quot;)
 
 
 ;;----------------------------------------------------------------------------
@@ -554,19 +443,7 @@
 ;; ECB (Emacs Code Browser)
 ;;----------------------------------------------------------------------------
 (when *ecb-support-enabled*
-  ;; Change default location of semantic.cache files
-  (setq semanticdb-default-save-directory (expand-file-name &quot;~/.semanticdb&quot;))
-  (unless (file-directory-p semanticdb-default-save-directory)
-    (make-directory semanticdb-default-save-directory))
-
-  ;; Force shadowing of the Emacs-bundled speedbar (cedet's &quot;inversion&quot; package tries
-  ;; and fails to handle this)
-  (setq load-path (cons (concat (directory-of-library &quot;cedet&quot;) &quot;/../speedbar/&quot;) load-path))
-  (require 'cedet)
-  (require 'ecb-autoloads)
-
-  (add-hook 'ecb-activate-hook
-            (lambda () (setq global-semantic-idle-scheduler-mode nil))))
+  (load &quot;init-ecb.el&quot;))
 
 
 ;;----------------------------------------------------------------------------
@@ -603,21 +480,7 @@
 ;;----------------------------------------------------------------------------
 ;; NXML
 ;;----------------------------------------------------------------------------
-(load-library &quot;rng-auto&quot;)
-(add-to-list 'auto-mode-alist
-              (cons (concat &quot;\\.&quot; (regexp-opt '(&quot;xml&quot; &quot;xsd&quot; &quot;sch&quot; &quot;rng&quot; &quot;xslt&quot; &quot;svg&quot; &quot;rss&quot;) t) &quot;\\'&quot;)
-                    'nxml-mode))
-(unify-8859-on-decoding-mode)
-(setq magic-mode-alist (cons '(&quot;&lt;&#65340;&#65340;?xml &quot; . nxml-mode) magic-mode-alist))
-(fset 'html-mode 'nxml-mode)
-(fset 'xml-mode 'nxml-mode)
-(add-hook 'nxml-mode-hook (lambda ()
-                            (make-variable-buffer-local 'ido-use-filename-at-point)
-                            (setq ido-use-filename-at-point nil)))
-(when *spell-check-support-enabled*
-  (add-hook 'nxml-mode-hook
-            (lambda ()
-              (add-to-list 'flyspell-prog-text-faces 'nxml-text-face))))
+(load &quot;init-nxml.el&quot;)
 
 
 ;;----------------------------------------------------------------------------
@@ -633,152 +496,11 @@
 
 
 ;;----------------------------------------------------------------------------
-;; Ruby - basics
-;;----------------------------------------------------------------------------
-(autoload 'ruby-electric-mode &quot;ruby-electric&quot; &quot;Electric brackes/quotes/keywords for Ruby source&quot; t)
-(require 'rcodetools)
-(setq ruby-electric-expand-delimiters-list nil)  ; Only use ruby-electric for adding 'end'
-(add-hook 'ruby-mode-hook
-          (lambda () (ruby-electric-mode t)))
-(when *vi-emulation-support-enabled*
-  (add-hook 'ruby-mode-hook (lambda () (viper-change-state-to-vi))))
-
-(add-auto-mode 'ruby-mode &quot;Rakefile$&quot; &quot;\.rake$&quot; &quot;\.rxml$&quot; &quot;\.rjs&quot; &quot;.irbrc&quot;)
-
-
-(setq compile-command &quot;rake &quot;)
-
-(autoload 'ri &quot;ri-ruby&quot; &quot;Show ri documentation for Ruby symbols&quot; t)
-(setq ri-ruby-script (concat (directory-of-library &quot;ri-ruby&quot;) &quot;ri-emacs.rb&quot;))
-
-
-;;----------------------------------------------------------------------------
-;; Ruby - erb
-;;----------------------------------------------------------------------------
-(add-auto-mode 'html-mode &quot;\.rhtml$&quot;)
-(eval-after-load &quot;mmm-mode&quot;
-  '(progn
-     (mmm-add-classes
-      '((eruby :submode ruby-mode :front &quot;&lt;%[#=]?&quot; :back &quot;-?%&gt;&quot;
-               :match-face ((&quot;&lt;%#&quot; . mmm-comment-submode-face)
-                            (&quot;&lt;%=&quot; . mmm-output-submode-face)
-                            (&quot;&lt;%&quot;  . mmm-code-submode-face))
-               :insert ((?% erb-code       nil @ &quot;&lt;%&quot;  @ &quot; &quot; _ &quot; &quot; @ &quot;%&gt;&quot; @)
-                        (?# erb-comment    nil @ &quot;&lt;%#&quot; @ &quot; &quot; _ &quot; &quot; @ &quot;%&gt;&quot; @)
-                        (?= erb-expression nil @ &quot;&lt;%=&quot; @ &quot; &quot; _ &quot; &quot; @ &quot;%&gt;&quot; @)))))
-     (mmm-add-mode-ext-class 'nxml-mode &quot;\\.html\\.erb$&quot; 'eruby)
-     (mmm-add-mode-ext-class 'nxml-mode &quot;\\.rhtml$&quot; 'eruby)
-     (mmm-add-mode-ext-class 'yaml-mode &quot;\\.yml$&quot; 'eruby)))
-
-
-;;----------------------------------------------------------------------------
-;; Ruby - my convention for heredocs containing SQL
-;;----------------------------------------------------------------------------
-(eval-after-load &quot;mmm-mode&quot;
-  '(progn
-     (mmm-add-classes
-      '((ruby-heredoc-sql :submode sql-mode :front &quot;&lt;&lt;-?end_sql.*\r?\n&quot; :back &quot;[ \t]*end_sql&quot; :face mmm-code-submode-face)))
-     (mmm-add-mode-ext-class 'ruby-mode &quot;\\.rb$&quot; 'ruby-heredoc-sql)))
-
-
-;;----------------------------------------------------------------------------
-;; Ruby - haml &amp; sass
-;;----------------------------------------------------------------------------
-(add-auto-mode 'haml-mode &quot;\.haml$&quot;)
-(add-auto-mode 'sass-mode &quot;\.sass$&quot;)
-(autoload 'haml-mode &quot;haml-mode&quot; &quot;Mode for editing haml files&quot; t)
-(autoload 'sass-mode &quot;sass-mode&quot; &quot;Mode for editing sass files&quot; t)
-
-;(when *rails-support-enabled*
-;  (dolist (hook (list 'haml-mode-hook 'sass-mode-hook))
-;    (add-hook hook (lambda () (if (rails-project:root) (rails-minor-mode t))))))
-
-
-;;----------------------------------------------------------------------------
-;; Ruby - compilation
-;;----------------------------------------------------------------------------
-
-;; Jump to lines from Ruby stack traces in 'compile' mode (regexps borrowed from emacs-rails)
-(defun ruby-backtrace-line-regexp (&amp;optional prefix suffix)
-  (concat prefix &quot;\\[?\\([^ \f\n\r\t\v]+?\\):\\([0-9]+\\)\\(?::in\s*`\\(.*?\\)'\\)?&quot; suffix))
-(eval-after-load &quot;compile&quot;
-  '(progn
-     (mapcar (lambda (defn) (add-to-list 'compilation-error-regexp-alist-alist defn))
-             (list (list 'ruby-backtrace (ruby-backtrace-line-regexp) 1 2 nil 1)
-                   (list 'ruby-test-backtrace (ruby-backtrace-line-regexp nil &quot;\\(?:\]:\\|\n$\\)&quot;) 1 2 nil 2)))))
-
-(define-derived-mode ruby-compilation-mode compilation-mode &quot;Compilation[ruby]&quot;
-  &quot;Major mode for running ruby scripts and tests.&quot;
-  (set (make-local-variable 'compilation-error-regexp-alist) '(ruby-backtrace ruby-test-backtrace)))
-
-(defun ruby-compile (command)
-  (compile command)
-  (with-current-buffer &quot;*compilation*&quot; (ruby-compilation-mode)))
-
-
-(require 'which-func)
-(add-to-list 'which-func-modes 'ruby-mode)
-(setq imenu-auto-rescan t)       ; ensure function names auto-refresh
-(setq imenu-max-item-length 200) ; ensure function names are not truncated
-(defun ruby-execute-current-file ()
-  &quot;Execute the current ruby file (e.g. to execute all tests).&quot;
-  (interactive)
-  (ruby-compile (concat &quot;ruby &quot; (file-name-nondirectory (buffer-file-name)))))
-(defun ruby-test-function ()
-  &quot;Test the current ruby function (must be runnable via ruby &lt;buffer&gt; --name &lt;test&gt;).&quot;
-  (interactive)
-  (let* ((funname (which-function))
-         (fn (and funname (and (string-match &quot;\\(#\\|::\\)\\(test.*\\)&quot; funname) (match-string 2 funname)))))
-    (ruby-compile (concat &quot;ruby &quot; (file-name-nondirectory (buffer-file-name)) (and fn (concat &quot; --name &quot; fn))))))
-
-; run the current buffer using Shift-F7
-(add-hook 'ruby-mode-hook (lambda () (local-set-key [S-f7] 'ruby-execute-current-file)))
-; run the current test function using F8 key
-(add-hook 'ruby-mode-hook (lambda () (local-set-key [f7] 'ruby-test-function)))
-
-(add-hook 'ruby-mode-hook (lambda () (local-set-key [f6] 'recompile)))
-(when *rails-support-enabled*
-  (add-hook 'rails-minor-mode-hook (lambda () (local-set-key [f6] 'recompile))))
-
-
-
-;;----------------------------------------------------------------------------
-; Rails (http://rubyforge.org/projects/emacs-rails/)
+;; Ruby &amp; Rails
 ;;----------------------------------------------------------------------------
+(load &quot;init-ruby-mode.el&quot;)
 (when *rails-support-enabled*
-  (dolist (hook '(nxml-mode-hook haml-mode-hook sass-mode-hook))
-    (add-hook hook (lambda () (rinari-launch))))
-  (defun update-rails-ctags ()
-    (interactive)
-    (let ((default-directory (or (rinari-root) default-directory)))
-      (shell-command (concat &quot;ctags -a -e -f &quot; rinari-tags-file-name &quot; --tag-relative -R app lib vendor test&quot;))))
-  (require 'rinari)
-  ;(require 'rails)
-  ;(setq rails-webrick:use-mongrel t)
-  ;(setq rails-api-root (expand-file-name &quot;~/Documents/External/rails&quot;))
-
-  (when *ecb-support-enabled*
-    (require 'ecb)
-    ;; Flymake confuses ecb's idea of which buffers are compilation buffers
-    (defun comint-but-not-flymake-p (buf)
-      (and (comint-check-proc buf)
-           (not (buffer-local-value 'flymake-mode-line buf))))
-    (setq ecb-compilation-predicates '(comint-but-not-flymake-p))
-
-    (setq ecb-compilation-buffer-names
-          (append ecb-compilation-buffer-names
-                  '((&quot;\\(development\\|test\\|production\\).log&quot; . t)
-                    (&quot;\\*R&quot; . t))))))
-
-
-;;----------------------------------------------------------------------------
-;; Pymacs and Rope for Python
-;;----------------------------------------------------------------------------
-;; See http://edward.oconnor.cx/2008/02/ropemacs
-(add-hook 'python-mode-hook
-          (lambda ()
-            (require 'pymacs)
-            (pymacs-load &quot;ropemacs&quot; &quot;rope-&quot;)))
+  (load &quot;init-rails.el&quot;))
 
 
 ;;----------------------------------------------------------------------------
@@ -840,103 +562,18 @@
 ;;----------------------------------------------------------------------------
 ;; Lisp / Scheme / Slime
 ;;----------------------------------------------------------------------------
-;; pretty lambda (see also slime) -&gt;  &quot;&#955;&quot;
-;;  'greek small letter lambda' / utf8 cebb / unicode 03bb -&gt; \u03BB / mule?!
-;; in greek-iso8859-7 -&gt; 107  &gt;  86 ec
-(defun pretty-lambdas ()
-  (font-lock-add-keywords
-   nil `((&quot;(\\(lambda\\&gt;\\)&quot;
-          (0 (progn (compose-region (match-beginning 1) (match-end 1)
-                                    ,(make-char 'greek-iso8859-7 107))
-                    'font-lock-keyword-face))))))
-
-(autoload 'paredit-mode &quot;paredit-beta&quot;
-  &quot;Minor mode for pseudo-structurally editing Lisp code.&quot; t)
-
-(defun enable-paredit (keymap)
-  (paredit-mode +1)
-  (define-key keymap (kbd &quot;RET&quot;) 'paredit-newline))
-
-(add-hook 'emacs-lisp-mode-hook 'pretty-lambdas)
-(add-hook 'emacs-lisp-mode-hook (lambda () (enable-paredit emacs-lisp-mode-map)))
-
+(load &quot;init-lisp.el&quot;)
 (when *common-lisp-support-enabled*
-  ;; See http://bc.tech.coop/blog/070927.html
-  (setq slime-lisp-implementations
-        '((sbcl (&quot;sbcl&quot;) :coding-system utf-8-unix)
-          (cmucl (&quot;cmucl&quot;) :coding-system iso-latin-1-unix)))
-  (require 'slime-autoloads)
-  (add-auto-mode 'lisp-mode &quot;\\.cl$&quot;)
-  (global-set-key [f4] 'slime-selector)
-  (add-hook 'lisp-mode-hook (lambda ()
-                              (cond ((not (featurep 'slime))
-                                     (require 'slime)
-                                     (normal-mode)))))
-
-  (eval-after-load &quot;slime&quot;
-    '(progn
-       (add-to-list 'load-path (concat (directory-of-library &quot;slime&quot;) &quot;/contrib&quot;))
-       (slime-setup '(slime-fancy slime-banner slime-asdf))
-       (setq slime-complete-symbol*-fancy t)
-       (setq slime-complete-symbol-function 'slime-fuzzy-complete-symbol)
-       (add-hook 'slime-mode-hook 'pretty-lambdas)
-       (add-hook 'slime-mode-hook (lambda () (enable-paredit slime-mode-map)))
-       (slime-setup)))
-
-  ; From http://bc.tech.coop/blog/070515.html
-  (defun lispdoc ()
-    &quot;Searches lispdoc.com for SYMBOL, which is by default the symbol currently under the curser&quot;
-    (interactive)
-    (let* ((word-at-point (word-at-point))
-           (symbol-at-point (symbol-at-point))
-           (default (symbol-name symbol-at-point))
-           (inp (read-from-minibuffer
-                 (if (or word-at-point symbol-at-point)
-                     (concat &quot;Symbol (default &quot; default &quot;): &quot;)
-                   &quot;Symbol (no default): &quot;))))
-      (if (and (string= inp &quot;&quot;) (not word-at-point) (not
-                                                     symbol-at-point))
-          (message &quot;you didn't enter a symbol!&quot;)
-        (let ((search-type (read-from-minibuffer
-                            &quot;full-text (f) or basic (b) search (default b)? &quot;)))
-          (browse-url (concat &quot;http://lispdoc.com?q=&quot;
-                              (if (string= inp &quot;&quot;)
-                                  default
-                                inp)
-                              &quot;&amp;search=&quot;
-                              (if (string-equal search-type &quot;f&quot;)
-                                  &quot;full+text+search&quot;
-                                &quot;basic+search&quot;)))))))
-
-  (define-key lisp-mode-map (kbd &quot;C-c l&quot;) 'lispdoc)
-
-  (autoload 'redshank-mode &quot;redshank&quot; &quot;Minor mode for editing and refactoring (Common) Lisp code.&quot; t)
-  (autoload 'turn-on-redshank-mode &quot;redshank&quot; &quot;Turn on Redshank mode. Please see function `redshank-mode'.&quot; t)
-  (add-hook 'lisp-mode-hook 'turn-on-redshank-mode))
-
+  (load &quot;init-common-lisp.el&quot;))
 (when *scheme-support-enabled*
   ; See http://bc.tech.coop/scheme/scheme-emacs.htm
   (require 'quack))
 
-
 ;;----------------------------------------------------------------------------
 ;; Haskell
 ;;----------------------------------------------------------------------------
 (when *haskell-support-enabled*
-  (load-library &quot;haskell-site-file&quot;)
-
-  (load-library &quot;cabal-mode&quot;)
-
-  (require 'hoogle)
-
-  (setq haskell-program-name (executable-find &quot;ghci&quot;))
-  (setq haskell-font-lock-symbols t)
-
-  (add-hook 'haskell-mode-hook
-            (lambda ()
-              (define-key haskell-mode-map [?\C-c h] 'hoogle-lookup)
-              (turn-on-haskell-doc-mode)
-              (turn-on-haskell-indent))))
+  (load &quot;init-haskell.el&quot;))
 
 
 ;;----------------------------------------------------------------------------
@@ -952,24 +589,7 @@
 ;; Add spell-checking in comments for all programming language modes
 ;;----------------------------------------------------------------------------
 (when *spell-check-support-enabled*
-  (dolist (hook '(lisp-mode-hook
-                  emacs-lisp-mode-hook
-                  scheme-mode-hook
-                  ruby-mode-hook
-                  yaml-mode
-                  python-mode-hook
-                  shell-mode-hook
-                  php-mode-hook
-                  css-mode-hook
-                  haskell-mode-hook
-                  caml-mode-hook
-                  nxml-mode-hook
-                  crontab-mode-hook
-                  perl-mode-hook
-                  tcl-mode-hook
-                  javascript-mode-hook))
-    (add-hook hook 'flyspell-prog-mode)))
-
+  (load &quot;init-flyspell.el&quot;))
 
 
 ;;----------------------------------------------------------------------------</diff>
      <filename>init.el</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>afb0f3f7f3a0235ffd7f9200981b7c1a821cb103</id>
    </parent>
  </parents>
  <author>
    <name>Steve Purcell</name>
    <email>steve@sanityinc.com</email>
  </author>
  <url>http://github.com/purcell/emacs.d/commit/06a4b474f78728ffca7964a30c43af5c72dbb716</url>
  <id>06a4b474f78728ffca7964a30c43af5c72dbb716</id>
  <committed-date>2008-10-17T01:47:34-07:00</committed-date>
  <authored-date>2008-10-17T01:07:17-07:00</authored-date>
  <message>Modularise init.el</message>
  <tree>c97950100d97ee3d2153acd095d2798d48590b01</tree>
  <committer>
    <name>Steve Purcell</name>
    <email>steve@sanityinc.com</email>
  </committer>
</commit>
