X-Git-Url: https://git.distorted.org.uk/~mdw/profile/blobdiff_plain/b257436d95451423e020ca84e9b35bc97b4f9f68..61aab3720fad74e4166c9541df43a46a25b0567f:/el/dot-emacs.el diff --git a/el/dot-emacs.el b/el/dot-emacs.el index 0af3c56..70d3b7a 100644 --- a/el/dot-emacs.el +++ b/el/dot-emacs.el @@ -24,19 +24,23 @@ ;;;-------------------------------------------------------------------------- ;;; Check command-line. +(defun mdw-check-command-line-switch (switch) + (let ((probe nil) (next command-line-args) (found nil)) + (while next + (cond ((string= (car next) switch) + (setq found t) + (if probe (rplacd probe (cdr next)) + (setq command-line-args (cdr next)))) + (t + (setq probe next))) + (setq next (cdr next))) + found)) + (defvar mdw-fast-startup nil "Whether .emacs should optimize for rapid startup. This may be at the expense of cool features.") -(let ((probe nil) (next command-line-args)) - (while next - (cond ((string= (car next) "--mdw-fast-startup") - (setq mdw-fast-startup t) - (if probe - (rplacd probe (cdr next)) - (setq command-line-args (cdr next)))) - (t - (setq probe next))) - (setq next (cdr next)))) +(setq mdw-fast-startup + (mdw-check-command-line-switch "--mdw-fast-startup")) ;;;-------------------------------------------------------------------------- ;;; Some general utilities. @@ -254,6 +258,7 @@ frame is actually mapped on the screen." (mdw-advise-to-inhibit-raise-frame select-frame-set-input-focus) (mdw-advise-to-inhibit-raise-frame appt-disp-window) +(mdw-advise-to-inhibit-raise-frame mouse-select-window) ;; Bug fix for markdown-mode, which breaks point positioning during ;; `query-replace'. @@ -577,7 +582,7 @@ Pretend they don't exist. They might be on other display devices." (defadvice compile (around hack-environment compile activate) "Hack the environment inherited by inferiors in the compilation." - (let ((process-environment process-environment)) + (let ((process-environment (copy-tree process-environment))) (setenv "LD_PRELOAD" nil) ad-do-it)) @@ -1034,8 +1039,7 @@ If NEW-SESSION-P, start a new session." '(define-key w3m-mode-map [?\e ?\r] 'w3m-view-this-url-new-session)) (defvar mdw-good-url-browsers - '(browse-url-chromium - browse-url-mozilla + '(browse-url-mozilla browse-url-generic (w3m . mdw-w3m-browse-url) browse-url-w3) @@ -2080,7 +2084,7 @@ name, as a symbol." "__typeof__" ;GCC "__volatile__" ;GCC )) - (c-constants + (c-builtins (mdw-regexps "false" ;C++, C99 macro "this" ;C++ "true" ;C++, C99 macro @@ -2116,7 +2120,7 @@ name, as a symbol." (list (concat "\\<\\(" c-keywords "\\)\\>") '(0 font-lock-keyword-face)) - (list (concat "\\<\\(" c-constants "\\)\\>") + (list (concat "\\<\\(" c-builtins "\\)\\>") '(0 font-lock-variable-name-face)) ;; Handle numbers too. @@ -2229,7 +2233,7 @@ name, as a symbol." "void" "volatile" "while")) - (java-constants + (java-builtins (mdw-regexps "false" "null" "super" "this" "true"))) (setq font-lock-keywords @@ -2239,8 +2243,8 @@ name, as a symbol." (list (concat "\\<\\(" java-keywords "\\)\\>") '(0 font-lock-keyword-face)) - ;; Handle the magic constants defined above. - (list (concat "\\<\\(" java-constants "\\)\\>") + ;; Handle the magic builtins defined above. + (list (concat "\\<\\(" java-builtins "\\)\\>") '(0 font-lock-variable-name-face)) ;; Handle numbers too. @@ -2282,11 +2286,8 @@ name, as a symbol." "private" "protected" "public" "return" "short" "static" "super" "switch" "synchronized" "throw" "throws" "transient" "try" "typeof" "var" "void" - "volatile" "while" "with" "yield" - - "boolean" "byte" "char" "double" "float" "int" "long" - "short" "void")) - (javascript-constants + "volatile" "while" "with" "yield")) + (javascript-builtins (mdw-regexps "false" "null" "undefined" "Infinity" "NaN" "true" "arguments" "this"))) @@ -2297,8 +2298,8 @@ name, as a symbol." (list (concat "\\_<\\(" javascript-keywords "\\)\\_>") '(0 font-lock-keyword-face)) - ;; Handle the predefined constants defined above. - (list (concat "\\_<\\(" javascript-constants "\\)\\_>") + ;; Handle the predefined builtins defined above. + (list (concat "\\_<\\(" javascript-builtins "\\)\\_>") '(0 font-lock-variable-name-face)) ;; Handle numbers too. @@ -2424,7 +2425,7 @@ name, as a symbol." "unsafe" "ushort" "using" "virtual" "void" "volatile" "while" "yield")) - (csharp-constants + (csharp-builtins (mdw-regexps "base" "false" "null" "this" "true"))) (setq font-lock-keywords @@ -2434,8 +2435,8 @@ name, as a symbol." (list (concat "\\<\\(" csharp-keywords "\\)\\>") '(0 font-lock-keyword-face)) - ;; Handle the magic constants defined above. - (list (concat "\\<\\(" csharp-constants "\\)\\>") + ;; Handle the magic builtins defined above. + (list (concat "\\<\\(" csharp-builtins "\\)\\>") '(0 font-lock-variable-name-face)) ;; Handle numbers too. @@ -2649,15 +2650,17 @@ name, as a symbol." (defun mdw-fontify-rust () ;; Hack syntax categories. + (modify-syntax-entry ?$ ".") + (modify-syntax-entry ?% ".") (modify-syntax-entry ?= ".") ;; Fontify keywords and things. (make-local-variable 'font-lock-keywords) (let ((rust-keywords - (mdw-regexps "abstract" "alignof" "as" + (mdw-regexps "abstract" "alignof" "as" "async" "await" "become" "box" "break" - "const" "continue" "create" - "do" + "const" "continue" "crate" + "do" "dyn" "else" "enum" "extern" "final" "fn" "for" "if" "impl" "in" @@ -2667,8 +2670,8 @@ name, as a symbol." "priv" "proc" "pub" "pure" "ref" "return" "sizeof" "static" "struct" "super" - "trait" "type" "typeof" - "unsafe" "unsized" "use" + "trait" "try" "type" "typeof" + "union" "unsafe" "unsized" "use" "virtual" "where" "while" "yield")) @@ -2701,7 +2704,7 @@ name, as a symbol." "\\|" "0o[0-7_]+" "\\|" "0b[01_]+" "\\)" - "\\([ui]\\(8\\|16\\|32\\|64\\|s\\|size\\)\\)?" + "\\([ui]\\(8\\|16\\|32\\|64\\|size\\)\\)?" "\\)\\_>") '(0 mdw-number-face)) @@ -3168,6 +3171,8 @@ strip numbers instead." (local-set-key [?*] 'mdw-rexx-electric-*) (mapcar #'(lambda (ch) (modify-syntax-entry ch "w")) '(?! ?? ?# ?@ ?$)) + (mapcar #'(lambda (ch) (modify-syntax-entry ch ".")) + '(?¬)) (mdw-standard-fill-prefix "\\([ \t]*/?\*[ \t]*\\)") ;; Set up keywords and things for fontification. @@ -3508,6 +3513,13 @@ strip numbers instead." (setq LaTeX-syntactic-comments nil LaTeX-fill-break-at-separators '(\\\[)) +(add-hook 'bibtex-mode-hook (lambda () (setq fill-column 76))) + +;;;-------------------------------------------------------------------------- +;;; HTML, CSS, and other web foolishness. + +(setq css-indent-offset 2) + ;;;-------------------------------------------------------------------------- ;;; SGML hacking. @@ -3899,6 +3911,16 @@ that character only to be normal punctuation.") lisp-loop-keyword-indentation 6 lisp-loop-forms-indentation 6) +(defmacro mdw-advise-hyperspec-lookup (func args) + `(defadvice ,func (around mdw-browse-w3m ,args activate compile) + (if (fboundp 'w3m) + (let ((browse-url-browser-function #'mdw-w3m-browse-url)) + ad-do-it) + ad-do-it))) +(mdw-advise-hyperspec-lookup common-lisp-hyperspec (symbol)) +(mdw-advise-hyperspec-lookup common-lisp-hyperspec-format (char)) +(mdw-advise-hyperspec-lookup common-lisp-hyperspec-lookup-reader-macro (char)) + (defun mdw-fontify-lispy () ;; Set fill prefix. @@ -4027,13 +4049,13 @@ This allows you to pass a list of arguments through `ansi-term'." (defadvice term-exec-1 (around hack-environment compile activate) "Hack the environment inherited by inferiors in the terminal." - (let ((process-environment process-environment)) + (let ((process-environment (copy-tree process-environment))) (setenv "LD_PRELOAD" nil) ad-do-it)) (defadvice shell (around hack-environment compile activate) "Hack the environment inherited by inferiors in the shell." - (let ((process-environment process-environment)) + (let ((process-environment (copy-tree process-environment))) (setenv "LD_PRELOAD" nil) ad-do-it))