X-Git-Url: https://git.distorted.org.uk/~mdw/profile/blobdiff_plain/4d90cf3d2baab392a5fbde8a4f562ef4cbcf5cc6..ae0a853fabc163f002127b3066223037d29640bb:/el/dot-emacs.el diff --git a/el/dot-emacs.el b/el/dot-emacs.el index a2117c3..6a9f108 100644 --- a/el/dot-emacs.el +++ b/el/dot-emacs.el @@ -190,6 +190,29 @@ fringes is not taken out of the allowance for WIDTH, unlike (other-window 1)) (select-window win))) +;; Don't raise windows unless I say so. + +(defvar mdw-inhibit-raise-frame nil + "*Whether `raise-frame' should do nothing when the frame is mapped.") + +(defadvice raise-frame + (around mdw-inhibit (&optional frame) activate compile) + "Don't actually do anything if `mdw-inhibit-raise-frame' is true, and the +frame is actually mapped on the screen." + (if mdw-inhibit-raise-frame + (make-frame-visible frame) + ad-do-it)) + +(defmacro mdw-advise-to-inhibit-raise-frame (function) + "Advise the FUNCTION not to raise frames, even if it wants to." + `(defadvice ,function + (around mdw-inhibit-raise (&rest hunoz) activate compile) + "Don't raise the window unless you have to." + (let ((mdw-inhibit-raise-frame t)) + ad-do-it))) + +(mdw-advise-to-inhibit-raise-frame select-frame-set-input-focus) + ;; Transient mark mode hacks. (defadvice exchange-point-and-mark @@ -852,6 +875,9 @@ doesn't match any of the regular expressions in (((class color)) :foreground "yellow" :background "blue" :box (:line-width 1 :style released-button)) (t :inverse-video t)) +(mdw-define-face nobreak-space + (((type tty))) + (t :inherit escape-glyph :underline t)) (mdw-define-face scroll-bar (t :foreground "black" :background "lightgrey")) (mdw-define-face fringe @@ -982,6 +1008,18 @@ doesn't match any of the regular expressions in (mdw-define-face magit-item-highlight (((type tty)) :background "blue") (t :background "DarkSeaGreen4")) +(mdw-define-face magit-log-head-label-remote + (((type tty)) :background "cyan" :foreground "green") + (t :background "grey11" :foreground "DarkSeaGreen2" :box t)) +(mdw-define-face magit-log-head-label-local + (((type tty)) :background "cyan" :foreground "yellow") + (t :background "grey11" :foreground "LightSkyBlue1" :box t)) +(mdw-define-face magit-log-head-label-tags + (((type tty)) :background "red" :foreground "yellow") + (t :background "LemonChiffon1" :foreground "goldenrod4" :box t)) +(mdw-define-face magit-log-graph + (((type tty)) :foreground "magenta") + (t :foreground "grey80")) (mdw-define-face erc-input-face (t :foreground "red")) @@ -1654,7 +1692,16 @@ doesn't match any of the regular expressions in "default" "defer" "else" "fallthrough" "for" "func" "go" "goto" "if" "import" "interface" "map" "package" "range" "return" - "select" "struct" "switch" "type" "var"))) + "select" "struct" "switch" "type" "var")) + (go-intrinsics + (mdw-regexps "bool" "byte" "complex64" "complex128" "error" + "float32" "float64" "int" "uint8" "int16" "int32" + "int64" "rune" "string" "uint" "uint8" "uint16" + "uint32" "uint64" "uintptr" "void" + "false" "iota" "nil" "true" + "init" "main" + "append" "cap" "copy" "delete" "imag" "len" "make" + "new" "panic" "real" "recover"))) (setq font-lock-keywords (list @@ -1662,6 +1709,26 @@ doesn't match any of the regular expressions in ;; Handle the keywords defined above. (list (concat "\\<\\(" go-keywords "\\)\\>") '(0 font-lock-keyword-face)) + (list (concat "\\<\\(" go-intrinsics "\\)\\>") + '(0 font-lock-variable-name-face)) + + ;; Strings and characters. + (list (concat "'" + "\\(" "[^\\']" "\\|" + "\\\\" + "\\(" "[abfnrtv\\'\"]" "\\|" + "[0-7]\\{3\\}" "\\|" + "x" "[0-9A-Fa-f]\\{2\\}" "\\|" + "u" "[0-9A-Fa-f]\\{4\\}" "\\|" + "U" "[0-9A-Fa-f]\\{8\\}" "\\)" "\\)" + "'" + "\\|" + "\"" + "\\(" "[^\n\\\"]+" "\\|" "\\\\." "\\)*" + "\\(\"\\|$\\)" + "\\|" + "`" "[^`]+" "`") + '(0 font-lock-string-face)) ;; Handle numbers too. ;; @@ -2063,11 +2130,11 @@ strip numbers instead." "t" "f"))) (setq font-lock-keywords (list (list (concat "\\<\\(" dylan-keywords - "\\|" (concat "with\\(out\\)?-" word) - "\\|" (concat word ":") + "\\|" "with\\(out\\)?-" word "\\)\\>") '(0 font-lock-keyword-face)) - (list (concat "#\\(" sharp-keywords "\\)\\>") + (list (concat "\\<" word ":" "\\|" + "#\\(" sharp-keywords "\\)\\>") '(0 font-lock-variable-name-face)) (list (concat "\\(" "\\([-+]\\|\\<\\)[0-9]+" "\\(" @@ -2265,10 +2332,8 @@ strip numbers instead." (defun mdw-fontify-haskell () ;; Fiddle with syntax table to get comments right. - (modify-syntax-entry ?' "\"") - (modify-syntax-entry ?- ". 123") - (modify-syntax-entry ?{ ". 1b") - (modify-syntax-entry ?} ". 4b") + (modify-syntax-entry ?' "_") + (modify-syntax-entry ?- ". 12") (modify-syntax-entry ?\n ">") ;; Make punctuation be punctuation @@ -2283,20 +2348,57 @@ strip numbers instead." ;; Fiddle with fontification. (make-local-variable 'font-lock-keywords) (let ((haskell-keywords - (mdw-regexps "as" "case" "ccall" "class" "data" "default" - "deriving" "do" "else" "foreign" "hiding" "if" - "import" "in" "infix" "infixl" "infixr" "instance" - "let" "module" "newtype" "of" "qualified" "safe" - "stdcall" "then" "type" "unsafe" "where"))) + (mdw-regexps "as" + "case" "ccall" "class" + "data" "default" "deriving" "do" + "else" "exists" + "forall" "foreign" + "hiding" + "if" "import" "in" "infix" "infixl" "infixr" "instance" + "let" + "mdo" "module" + "newtype" + "of" + "proc" + "qualified" + "rec" + "safe" "stdcall" + "then" "type" + "unsafe" + "where")) + (control-sequences + (mdw-regexps "ACK" "BEL" "BS" "CAN" "CR" "DC1" "DC2" "DC3" "DC4" + "DEL" "DLE" "EM" "ENQ" "EOT" "ESC" "ETB" "ETX" "FF" + "FS" "GS" "HT" "LF" "NAK" "NUL" "RS" "SI" "SO" "SOH" + "SP" "STX" "SUB" "SYN" "US" "VT"))) (setq font-lock-keywords (list - (list "--.*$" + (list (concat "{-" "[^-]*" "\\(-+[^-}][^-]*\\)*" + "\\(-+}\\|-*\\'\\)" + "\\|" + "--.*$") '(0 font-lock-comment-face)) - (list (concat "\\<\\(" haskell-keywords "\\)\\>") + (list (concat "\\_<\\(" haskell-keywords "\\)\\_>") '(0 font-lock-keyword-face)) - (list (concat "\\<0\\([xX][0-9a-fA-F]+\\|[0-7]+\\)\\|" - "\\<[0-9][0-9_]*\\(\\.[0-9]*\\|\\)" + (list (concat "'\\(" + "[^\\]" + "\\|" + "\\\\" + "\\(" "[abfnrtv\\\"']" "\\|" + "^" "\\(" control-sequences "\\|" + "[]A-Z@[\\^_]" "\\)" "\\|" + "\\|" + "[0-9]+" "\\|" + "[oO][0-7]+" "\\|" + "[xX][0-9A-Fa-f]+" + "\\)" + "\\)'") + '(0 font-lock-string-face)) + (list "\\_<[A-Z]\\(\\sw+\\|\\s_+\\)*\\_>" + '(0 font-lock-variable-name-face)) + (list (concat "\\_<0\\([xX][0-9a-fA-F]+\\|[oO][0-7]+\\)\\|" + "\\_<[0-9]+\\(\\.[0-9]*\\|\\)" "\\([eE]\\([-+]\\|\\)[0-9]+\\|\\)") '(0 mdw-number-face)) (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)" @@ -2845,9 +2947,26 @@ setting once it's actually been made." ;; Not much fontification needed. (make-local-variable 'font-lock-keywords) (setq font-lock-keywords - (list - (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)" - '(0 mdw-punct-face)))) + (list (list (concat "\\(" + "\\_<[-+]?" + "\\(" "[0-9]+/[0-9]+" + "\\|" "\\(" "[0-9]+" "\\(\\.[0-9]*\\)?" "\\|" + "\\.[0-9]+" "\\)" + "\\([dDeEfFlLsS][-+]?[0-9]+\\)?" + "\\)" + "\\|" + "#" + "\\(" "x" "[-+]?" + "[0-9A-Fa-f]+" "\\(/[0-9A-Fa-f]+\\)?" + "\\|" "o" "[-+]?" "[0-7]+" "\\(/[0-7]+\\)?" + "\\|" "b" "[-+]?" "[01]+" "\\(/[01]+\\)?" + "\\|" "[0-9]+" "r" "[-+]?" + "[0-9a-zA-Z]+" "\\(/[0-9a-zA-Z]+\\)?" + "\\)" + "\\)\\_>") + '(0 mdw-number-face)) + (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)" + '(0 mdw-punct-face)))) (mdw-post-config-mode-hack)) @@ -2858,6 +2977,13 @@ setting once it's actually been made." (indent-for-tab-command))) (defun mdw-setup-m4 () + + ;; Inexplicably, Emacs doesn't match braces in m4 mode. This is very + ;; annoying: fix it. + (modify-syntax-entry ?{ "(") + (modify-syntax-entry ?} ")") + + ;; Fill prefix. (mdw-standard-fill-prefix "\\([ \t]*\\(?:#+\\|\\\\)[ \t]*\\)")) ;;;--------------------------------------------------------------------------