77
|
1 ; use tab for indent or complete |
|
2 (defun indent-or-expand (arg) |
|
3 "Either indent according to mode, or expand the word preceding |
|
4 point." |
|
5 (interactive "*P") |
|
6 (if (and |
|
7 (or (bobp) (= ?w (char-syntax (char-before)))) |
|
8 (or (eobp) (not (= ?w (char-syntax (char-after)))))) |
|
9 (dabbrev-expand arg) |
|
10 (indent-according-to-mode))) |
|
11 |
|
12 (defun af-tab-fix () |
|
13 (local-set-key [tab] 'indent-or-expand)) |
|
14 |
|
15 ;; add hooks for modes you want to use the tab completion for: |
|
16 (set-variable 'af-cleanup-whitespace t) |
|
17 (add-hook 'c-mode-hook 'af-tab-fix) |
|
18 (add-hook 'sh-mode-hook 'af-tab-fix) |
|
19 (add-hook 'emacs-lisp-mode-hook 'af-tab-fix) |
|
20 (add-hook 'clojure-mode-hook 'af-tab-fix) |
|
21 (add-hook 'rst-mode-hook '(lambda () |
|
22 (make-variable-buffer-local 'af-cleanup-whitespace) |
|
23 (set-variable 'af-cleanup-whitespace nil))) |
|
24 |
|
25 (autoload 'js2-mode "js2" nil t) |
|
26 (add-to-list 'auto-mode-alist '("\\.js$" . js2-mode)) |
|
27 (add-hook 'js2-mode-hook 'af-tab-fix) |
|
28 |
|
29 (defun af-python-mode-hook () |
|
30 ; highlight tabs in Python |
|
31 (make-variable-buffer-local 'font-lock-mode-hook) |
|
32 (add-hook 'font-lock-mode-hook 'show-ws-highlight-tabs) |
|
33 (make-variable-buffer-local 'python-indent) |
|
34 (if (and buffer-file-name (string-match "melange" buffer-file-name)) |
|
35 (set-variable 'python-indent 2)) |
|
36 (af-tab-fix) |
|
37 ) |
|
38 (add-hook 'python-mode-hook 'af-python-mode-hook) |
|
39 |
|
40 |
|
41 ; text-mode tries to use M-s for something other than my save shortcut. |
|
42 ; That's evil. Stop it from doing that. |
|
43 (add-hook 'text-mode-hook '(lambda () |
|
44 (define-key text-mode-map "\M-s" |
|
45 'save-buffer))) |