X-Git-Url: https://git.distorted.org.uk/~mdw/profile/blobdiff_plain/3da089939fb0017b21cd44ab95b7ea0fcf8a0090..fa156643375d48ce9b55ba06e571e8a6dd99d486:/el/dot-emacs.el diff --git a/el/dot-emacs.el b/el/dot-emacs.el index f8141dc..7d7484e 100644 --- a/el/dot-emacs.el +++ b/el/dot-emacs.el @@ -321,6 +321,43 @@ Evil key bindings are defined in `mdw-evil-keymap-keys'." org-export-docbook-xslt-stylesheet "/usr/share/xml/docbook/stylesheet/docbook-xsl/fo/docbook.xsl") +;; Some hacks to do with window placement. + +(defun mdw-clobber-other-windows-showing-buffer (buffer-or-name) + "Arrange that no windows on other frames are showing BUFFER-OR-NAME." + (interactive "bBuffer: ") + (let ((home-frame (selected-frame)) + (buffer (get-buffer buffer-or-name)) + (safe-buffer (get-buffer "*scratch*"))) + (mapc (lambda (frame) + (or (eq frame home-frame) + (mapc (lambda (window) + (and (eq (window-buffer window) buffer) + (set-window-buffer window safe-buffer))) + (window-list frame)))) + (frame-list)))) + +(defvar mdw-inhibit-walk-windows nil + "If non-nil, then `walk-windows' does nothing. +This is used by advice on `switch-to-buffer-other-frame' to inhibit finding +buffers in random frames.") + +(defadvice walk-windows (around mdw-inhibit activate) + "If `mdw-inhibit-walk-windows' is non-nil, then do nothing." + (and (not mdw-inhibit-walk-windows) + ad-do-it)) + +(defadvice switch-to-buffer-other-frame + (around mdw-always-new-frame activate) + "Always make a new frame. +Even if an existing window in some random frame looks tempting." + (let ((mdw-inhibit-walk-windows t)) ad-do-it)) + +(defadvice display-buffer (before mdw-inhibit-other-frames activate) + "Don't try to do anything fancy with other frames. +Pretend they don't exist. They might be on other display devices." + (ad-set-arg 2 nil)) + ;;;-------------------------------------------------------------------------- ;;; Mail and news hacking. @@ -573,10 +610,10 @@ If NEW-SESSION-P, start a new session." (select-window window))))) (defvar mdw-good-url-browsers - '(browse-url-generic + '(browse-url-mozilla + browse-url-generic (w3m . mdw-w3m-browse-url) - browse-url-w3 - browse-url-mozilla) + browse-url-w3) "List of good browsers for mdw-good-url-browsers. Each item is a browser function name, or a cons (CHECK . FUNC). A symbol FOO stands for (FOO . FOO).") @@ -865,6 +902,13 @@ doesn't match any of the regular expressions in (((type tty) (class color)) :background "blue") (((type tty) (class mono)) :inverse-video t) (t :background "grey30")) +(mdw-define-face match + (((type tty) (class color)) :background "blue") + (((type tty) (class mono)) :inverse-video t) + (t :background "blue")) +(mdw-define-face mc/cursor-face + (((type tty) (class mono)) :inverse-video t) + (t :background "red")) (mdw-define-face minibuffer-prompt (t :weight bold)) (mdw-define-face mode-line @@ -1197,7 +1241,6 @@ doesn't match any of the regular expressions in "explicit" ;C++ "export" ;C++ "extern" ;K&R, C89 - "false" ;C++, C9X macro "float" ;K&R, C89 "for" ;K&R, C89 ;; "fortran" ;K&R @@ -1229,9 +1272,7 @@ doesn't match any of the regular expressions in "struct" ;K&R, C89 "switch" ;K&R, C89 "template" ;C++ - "this" ;C++ "throw" ;C++ - "true" ;C++, C9X macro "try" ;C++ "this" ;C++ "typedef" ;C89 @@ -1266,6 +1307,11 @@ doesn't match any of the regular expressions in "__typeof__" ;GCC "__volatile__" ;GCC )) + (c-constants + (mdw-regexps "false" ;C++, C9X macro + "this" ;C++ + "true" ;C++, C9X macro + )) (preprocessor-keywords (mdw-regexps "assert" "define" "elif" "else" "endif" "error" "ident" "if" "ifdef" "ifndef" "import" "include" @@ -1297,6 +1343,9 @@ doesn't match any of the regular expressions in (list (concat "\\<\\(" c-keywords "\\)\\>") '(0 font-lock-keyword-face)) + (list (concat "\\<\\(" c-constants "\\)\\>") + '(0 font-lock-variable-name-face)) + ;; Handle numbers too. ;; ;; This looks strange, I know. It corresponds to the @@ -1401,11 +1450,11 @@ doesn't match any of the regular expressions in "for" "goto" "if" "implements" "import" "instanceof" "int" "interface" "long" "native" "new" "package" "private" "protected" "public" "return" "short" - "static" "super" "switch" "synchronized" "this" - "throw" "throws" "transient" "try" "void" "volatile" - "while" + "static" "switch" "synchronized" "throw" "throws" + "transient" "try" "void" "volatile" "while")) - "false" "null" "true"))) + (java-constants + (mdw-regexps "false" "null" "super" "this" "true"))) (setq font-lock-keywords (list @@ -1414,6 +1463,10 @@ doesn't match any of the regular expressions in (list (concat "\\<\\(" java-keywords "\\)\\>") '(0 font-lock-keyword-face)) + ;; Handle the magic constants defined above. + (list (concat "\\<\\(" java-constants "\\)\\>") + '(0 font-lock-variable-name-face)) + ;; Handle numbers too. ;; ;; The following isn't quite right, but it's close enough. @@ -1495,18 +1548,21 @@ doesn't match any of the regular expressions in (defun mdw-fontify-scala () + ;; Comment filling. + (setq mdw-fill-prefix mdw-c-comment-fill-prefix) + ;; Define things to be fontified. (make-local-variable 'font-lock-keywords) (let ((scala-keywords (mdw-regexps "abstract" "case" "catch" "class" "def" "do" "else" "extends" "final" "finally" "for" "forSome" "if" "implicit" "import" "lazy" "match" "new" "object" - "override" "package" "protected" "return" "sealed" - "super" "this" "throw" "trait" "try" "type" "val" + "override" "package" "private" "protected" "return" + "sealed" "throw" "trait" "try" "type" "val" "var" "while" "with" "yield")) (scala-constants - (mdw-regexps "false" "null" "true")) - (punctuation "\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/")) + (mdw-regexps "false" "null" "super" "this" "true")) + (punctuation "[-!%^&*=+:@#~/?\\|`]")) (setq font-lock-keywords (list @@ -1591,22 +1647,22 @@ doesn't match any of the regular expressions in ;; Now define things to be fontified. (make-local-variable 'font-lock-keywords) (let ((csharp-keywords - (mdw-regexps "abstract" "as" "base" "bool" "break" - "byte" "case" "catch" "char" "checked" - "class" "const" "continue" "decimal" "default" - "delegate" "do" "double" "else" "enum" - "event" "explicit" "extern" "false" "finally" - "fixed" "float" "for" "foreach" "goto" - "if" "implicit" "in" "int" "interface" - "internal" "is" "lock" "long" "namespace" - "new" "null" "object" "operator" "out" - "override" "params" "private" "protected" "public" - "readonly" "ref" "return" "sbyte" "sealed" - "short" "sizeof" "stackalloc" "static" "string" - "struct" "switch" "this" "throw" "true" - "try" "typeof" "uint" "ulong" "unchecked" - "unsafe" "ushort" "using" "virtual" "void" - "volatile" "while" "yield"))) + (mdw-regexps "abstract" "as" "bool" "break" "byte" "case" "catch" + "char" "checked" "class" "const" "continue" "decimal" + "default" "delegate" "do" "double" "else" "enum" + "event" "explicit" "extern" "finally" "fixed" "float" + "for" "foreach" "goto" "if" "implicit" "in" "int" + "interface" "internal" "is" "lock" "long" "namespace" + "new" "object" "operator" "out" "override" "params" + "private" "protected" "public" "readonly" "ref" + "return" "sbyte" "sealed" "short" "sizeof" + "stackalloc" "static" "string" "struct" "switch" + "throw" "try" "typeof" "uint" "ulong" "unchecked" + "unsafe" "ushort" "using" "virtual" "void" "volatile" + "while" "yield")) + + (csharp-constants + (mdw-regexps "base" "false" "null" "this" "true"))) (setq font-lock-keywords (list @@ -1615,6 +1671,10 @@ doesn't match any of the regular expressions in (list (concat "\\<\\(" csharp-keywords "\\)\\>") '(0 font-lock-keyword-face)) + ;; Handle the magic constants defined above. + (list (concat "\\<\\(" csharp-constants "\\)\\>") + '(0 font-lock-variable-name-face)) + ;; Handle numbers too. ;; ;; The following isn't quite right, but it's close enough. @@ -1654,12 +1714,12 @@ doesn't match any of the regular expressions in (let ((fsharp-keywords (mdw-regexps "abstract" "and" "as" "assert" "atomic" - "base" "begin" "break" + "begin" "break" "checked" "class" "component" "const" "constraint" "constructor" "continue" "default" "delegate" "do" "done" "downcast" "downto" "eager" "elif" "else" "end" "exception" "extern" - "false" "finally" "fixed" "for" "fori" "fun" "function" + "finally" "fixed" "for" "fori" "fun" "function" "functor" "global" "if" "in" "include" "inherit" "inline" "interface" @@ -1667,20 +1727,21 @@ doesn't match any of the regular expressions in "lazy" "let" "match" "measure" "member" "method" "mixin" "module" "mutable" - "namespace" "new" "null" - "object""of" "open" "or" "override" + "namespace" "new" + "object" "of" "open" "or" "override" "parallel" "params" "private" "process" "protected" "public" "pure" "rec" "recursive" "return" "sealed" "sig" "static" "struct" - "tailcall" "then" "to" "trait" "true" "try" "type" + "tailcall" "then" "to" "trait" "try" "type" "upcast" "use" "val" "virtual" "void" "volatile" "when" "while" "with" "yield")) (fsharp-builtins - (mdw-regexps "asr" "land" "lor" "lsl" "lsr" "lxor" "mod")) + (mdw-regexps "asr" "land" "lor" "lsl" "lsr" "lxor" "mod" + "base" "false" "null" "true")) (bang-keywords (mdw-regexps "do" "let" "return" "use" "yield"))