diff .elisp/settings/40.modes.el @ 77:45d7441d0cf2

Modularize .emacs
author Augie Fackler <durin42@gmail.com>
date Thu, 09 Apr 2009 13:39:20 -0500
parents
children 26f1ccac509c
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/.elisp/settings/40.modes.el
@@ -0,0 +1,45 @@
+; use tab for indent or complete
+(defun indent-or-expand (arg)
+  "Either indent according to mode, or expand the word preceding
+point."
+  (interactive "*P")
+  (if (and
+       (or (bobp) (= ?w (char-syntax (char-before))))
+       (or (eobp) (not (= ?w (char-syntax (char-after))))))
+      (dabbrev-expand arg)
+    (indent-according-to-mode)))
+
+(defun af-tab-fix ()
+  (local-set-key [tab] 'indent-or-expand))
+
+;; add hooks for modes you want to use the tab completion for:
+(set-variable 'af-cleanup-whitespace t)
+(add-hook 'c-mode-hook          'af-tab-fix)
+(add-hook 'sh-mode-hook         'af-tab-fix)
+(add-hook 'emacs-lisp-mode-hook 'af-tab-fix)
+(add-hook 'clojure-mode-hook    'af-tab-fix)
+(add-hook 'rst-mode-hook '(lambda ()
+                            (make-variable-buffer-local 'af-cleanup-whitespace)
+                            (set-variable 'af-cleanup-whitespace nil)))
+
+(autoload 'js2-mode "js2" nil t)
+(add-to-list 'auto-mode-alist '("\\.js$" . js2-mode))
+(add-hook 'js2-mode-hook 'af-tab-fix)
+
+(defun af-python-mode-hook ()
+  ; highlight tabs in Python
+  (make-variable-buffer-local 'font-lock-mode-hook)
+  (add-hook 'font-lock-mode-hook 'show-ws-highlight-tabs)
+  (make-variable-buffer-local 'python-indent)
+  (if (and buffer-file-name (string-match "melange" buffer-file-name))
+     (set-variable 'python-indent 2))
+  (af-tab-fix)
+)
+(add-hook 'python-mode-hook 'af-python-mode-hook)
+
+
+; text-mode tries to use M-s for something other than my save shortcut.
+; That's evil. Stop it from doing that.
+(add-hook 'text-mode-hook '(lambda ()
+                             (define-key text-mode-map "\M-s"
+                               'save-buffer)))