Mercurial > dotfiles
view .elisp/settings/40.modes.el @ 276:46979cef73b6
emacs: require and configure company mode
author | Augie Fackler <raf@durin42.com> |
---|---|
date | Fri, 27 Apr 2012 16:48:48 -0500 |
parents | 8109c1d949c8 |
children | 884f7f932a83 |
line wrap: on
line source
; 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 'c++-mode-hook 'af-tab-fix) (add-hook 'sh-mode-hook 'af-tab-fix) (add-hook 'emacs-lisp-mode-hook 'af-tab-fix) ;; disable whitespace cleanup in modes sensitive to whitespace (defun af-no-clean-whitespace () (interactive) (make-variable-buffer-local 'af-cleanup-whitespace) (set-variable 'af-cleanup-whitespace nil)) (add-hook 'rst-mode-hook 'af-no-clean-whitespace) (add-hook 'makefile-mode-hook 'af-no-clean-whitespace) (defun af-go-hook () ;; enable tabs (setq tab-width 2) (setq-default indent-tabs-mode t) (make-variable-buffer-local 'whitespace-style) (setq whitespace-style '(trailing lines-tail indentation trailing empty)) (message "Fixed whitespace style") ) (let ((go-emacs (concat (getenv "GOROOT") "/misc/emacs"))) (message (concat go-emacs "/go-mode.el")) (if (file-exists-p (concat go-emacs "/go-mode.el")) (progn (add-to-list 'load-path go-emacs) (require 'go-mode-load) (add-hook 'go-mode-hook 'af-go-hook)) (message "Go appears to not be installed, skipping go-mode."))) (autoload 'js2-mode "js2" nil t) (add-to-list 'auto-mode-alist '("\\.js$" . js2-mode)) (add-hook 'js2-mode-hook 'af-tab-fix) (add-hook 'ruby-mode-hook '(lambda () (af-tab-fix) (local-set-key (kbd "RET") 'reindent-then-newline-and-indent) (local-set-key (kbd "C-M-f") 'textmate-find-in-project-type))) (add-to-list 'auto-mode-alist '("\\.rake$" . ruby-mode)) (require 'django-html-mode) ;; I think I probably just always want it in django mode for now (add-to-list 'auto-mode-alist '("\\.html$'" . django-html-mode)) (add-to-list 'auto-mode-alist '("\\.html.erb$'" . django-html-mode)) (add-to-list 'auto-mode-alist '("\\.rhtml$'" . django-html-mode)) (add-hook 'django-html-mode-hook '(lambda () (local-set-key (kbd "RET") 'reindent-then-newline-and-indent))) (defun af-python-mode-hook () ; highlight tabs in Python (make-variable-buffer-local 'font-lock-mode-hook) (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) (easy-menu-add-item nil '("Python") ["Run All Tests" nosetests-all t] "Comment Out Region") (easy-menu-add-item nil '("Python") ["Run All Tests with --failed" nosetests-failed t] "Comment Out Region") (easy-menu-add-item nil '("Python") ["Run Module Tests" nosetests-module t] "Comment Out Region") (easy-menu-add-item nil '("Python") ["Run One Test" nosetests-one t] "Comment Out Region") (easy-menu-add-item nil '("Python") ["Debug One Test" nosetests-pdb-one t] "Comment Out Region") (easy-menu-add-item nil '("Python") ["-" nil t] "Comment Out Region") (local-set-key "\M-n" 'nosetests-module) (local-set-key "\M-\C-n" 'nosetests-one) (local-set-key (kbd "RET") 'comment-indent-new-line) ) (add-hook 'python-mode-hook 'af-python-mode-hook) (add-hook 'compilation-mode-hook '(lambda () (local-set-key "g" 'recompile))) (column-number-mode) (defun af-annotation-fix (unused) "fix indentation after an annotation" (save-excursion (beginning-of-line) (forward-word -1) (if (eq (char-before) ?@) ;; There's an annotation there 0 (+ c-basic-offset c-basic-offset)))) (defun af-java-mode-hook () (c-set-offset 'topmost-intro-cont 'af-annotation-fix) (local-set-key (kbd "RET") 'comment-indent-new-line) (af-tab-fix)) (add-hook 'java-mode-hook 'af-java-mode-hook) ;; mq diff-mode support (add-to-list 'auto-mode-alist '("\\.hg/patches/" . diff-mode)) (defun mq-patch-set-default-directory () (when (string= ".hg" (nth 2 (reverse (split-string default-directory "/")))) (setq default-directory (expand-file-name (concat default-directory "../../"))))) (add-hook 'diff-mode-hook 'mq-patch-set-default-directory)