X-Git-Url: https://git.distorted.org.uk/~mdw/profile/blobdiff_plain/b524cfb560bd79551c34352732d31814c3a9e791..95081186132f047f4615a1aea2e6d51d147ff8e5:/dot-emacs.el diff --git a/dot-emacs.el b/dot-emacs.el index 82d0214..b2653c5 100644 --- a/dot-emacs.el +++ b/dot-emacs.el @@ -85,6 +85,17 @@ This may be at the expense of cool features.") (concat "(" (buffer-string) ")"))))))) (cdr (assq sym mdw-config))) +;; --- Set up the load path convincingly --- + +(dolist (dir (append (and (boundp 'debian-emacs-flavor) + (list (concat "/usr/share/" + (symbol-name debian-emacs-flavor) + "/site-lisp"))))) + (dolist (sub (directory-files dir t)) + (when (and (file-accessible-directory-p sub) + (not (member sub load-path))) + (setq load-path (nconc load-path (list sub)))))) + ;; --- Is an Emacs library available? --- (defun library-exists-p (name) @@ -565,9 +576,15 @@ doesn't cope with anything approximating a complicated case." (auto-fill-mode 1) (setq fill-column 77) (setq show-trailing-whitespace t) + (and (fboundp 'gtags-mode) + (gtags-mode)) (outline-minor-mode t) (mdw-set-font)) +(eval-after-load 'gtags + '(dolist (key '([mouse-2] [mouse-3])) + (define-key gtags-mode-map key nil))) + ;; --- Set up all sorts of faces --- (defvar mdw-set-font nil) @@ -664,6 +681,30 @@ the regular expressions in `mdw-backup-disable-regexps'." (font-lock-keyword-face :weight bold) (font-lock-constant-face :weight bold) (font-lock-reference-face :weight bold) + (message-cited-text + :foreground ,(if window-system "SeaGreen1" "green") + :slant italic) + (message-separator :background "red" :foreground "white" :weight bold) + (message-header-cc + :foreground ,(if window-system "SeaGreen1" "green") + :weight bold) + (message-header-newsgroups + :foreground ,(if window-system "SeaGreen1" "green") + :weight bold) + (message-header-subject + :foreground ,(if window-system "SeaGreen1" "green") + :weight bold) + (message-header-to + :foreground ,(if window-system "SeaGreen1" "green") + :weight bold) + (message-header-xheader + :foreground ,(if window-system "SeaGreen1" "green") + :weight bold) + (message-header-other + :foreground ,(if window-system "SeaGreen1" "green") + :weight bold) + (message-header-name + :foreground ,(if window-system "SeaGreen1" "green")) (woman-bold :weight bold) (woman-italic :slant italic) (diff-index :weight bold) @@ -702,6 +743,11 @@ the regular expressions in `mdw-backup-disable-regexps'." ;; --- Make C indentation nice --- +(eval-after-load "cc-mode" + '(progn + (define-key c-mode-map "*" nil) + (define-key c-mode-map "/" nil))) + (defun mdw-c-style () (c-add-style "[mdw] C and C++ style" '((c-basic-offset . 2) @@ -1562,6 +1608,41 @@ strip numbers instead." (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)" '(0 mdw-punct-face)))))) +;;;----- Erlang configuration ----------------------------------------------- + +(setq erlang-electric-commannds + '(erlang-electric-newline erlang-electric-semicolon)) + +(defun mdw-fontify-erlang () + + ;; --- Set fill prefix --- + + (mdw-standard-fill-prefix "\\([ \t]*{?%*[ \t]*\\)") + + ;; --- Fiddle with fontification --- + + (make-local-variable 'font-lock-keywords) + (let ((erlang-keywords + (mdw-regexps "after" "and" "andalso" + "band" "begin" "bnot" "bor" "bsl" "bsr" "bxor" + "case" "catch" "cond" + "div" "end" "fun" "if" "let" "not" + "of" "or" "orelse" + "query" "receive" "rem" "try" "when" "xor"))) + + (setq font-lock-keywords + (list + (list "%.*$" + '(0 font-lock-comment-face)) + (list (concat "\\<\\(" erlang-keywords "\\)\\>") + '(0 font-lock-keyword-face)) + (list (concat "^-\\sw+\\>") + '(0 font-lock-keyword-face)) + (list "\\<[0-9]+\\(\\|#[0-9a-zA-Z]+\\|[eE][+-]?[0-9]+\\)\\>" + '(0 mdw-number-face)) + (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)" + '(0 mdw-punct-face)))))) + ;;;----- Texinfo configuration ---------------------------------------------- (defun mdw-fontify-texinfo () @@ -1606,6 +1687,7 @@ strip numbers instead." (defun mdw-fontify-tex () (setq ispell-parser 'tex) + (turn-on-reftex) ;; --- Don't make maths into a string --- @@ -1732,7 +1814,7 @@ strip numbers instead." ;;;----- Messages-file mode ------------------------------------------------- -(defun message-mode-guts () +(defun messages-mode-guts () (setq messages-mode-syntax-table (make-syntax-table)) (set-syntax-table messages-mode-syntax-table) (modify-syntax-entry ?0 "w" messages-mode-syntax-table) @@ -1751,7 +1833,7 @@ strip numbers instead." (setq indent-line-function 'indent-relative) (mdw-standard-fill-prefix "\\([ \t]*\\(;\\|/?\\*\\)+[ \t]*\\)") (make-local-variable 'font-lock-defaults) - (make-local-variable 'message-mode-keywords) + (make-local-variable 'messages-mode-keywords) (let ((keywords (mdw-regexps "array" "bitmap" "callback" "docs[ \t]+enum" "export" "enum" "fixed-octetstring" "flags" @@ -1760,7 +1842,7 @@ strip numbers instead." "primitive-nullfree" "relaxed[ \t]+enum" "set" "table" "tagged-optional" "union" "variadic" "vector" "version" "version-tag"))) - (setq message-mode-keywords + (setq messages-mode-keywords (list (list (concat "\\<\\(" keywords "\\)\\>:") '(0 font-lock-keyword-face)) @@ -1771,7 +1853,7 @@ strip numbers instead." '("\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)" (0 mdw-punct-face))))) (setq font-lock-defaults - '(message-mode-keywords nil nil nil nil)) + '(messages-mode-keywords nil nil nil nil)) (run-hooks 'messages-file-hook)) (defun messages-mode () @@ -1779,7 +1861,7 @@ strip numbers instead." (fundamental-mode) (setq major-mode 'messages-mode) (setq mode-name "Messages") - (message-mode-guts) + (messages-mode-guts) (modify-syntax-entry ?# "<" messages-mode-syntax-table) (modify-syntax-entry ?\n ">" messages-mode-syntax-table) (setq comment-start "# ") @@ -1792,7 +1874,7 @@ strip numbers instead." (fundamental-mode) (setq major-mode 'cpp-messages-mode) (setq mode-name "CPP Messages") - (message-mode-guts) + (messages-mode-guts) (modify-syntax-entry ?* ". 23" messages-mode-syntax-table) (modify-syntax-entry ?/ ". 14" messages-mode-syntax-table) (setq comment-start "/* ") @@ -1801,7 +1883,7 @@ strip numbers instead." (mdw-regexps "assert" "define" "elif" "else" "endif" "error" "ident" "if" "ifdef" "ifndef" "import" "include" "line" "pragma" "unassert" "undef" "warning"))) - (setq message-mode-keywords + (setq messages-mode-keywords (append (list (list (concat "^[ \t]*\\#[ \t]*" "\\(include\\|import\\)" "[ \t]*\\(<[^>]+\\(>\\|\\)\\)") @@ -1810,7 +1892,7 @@ strip numbers instead." preprocessor-keywords "\\)\\>\\|[0-9]+\\|$\\)\\)") '(1 font-lock-keyword-face))) - message-mode-keywords))) + messages-mode-keywords))) (turn-on-font-lock-if-enabled) (run-hooks 'cpp-messages-mode-hook))