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.
(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).")
(((type tty) (class color)) :background "blue")
(((type tty) (class mono)) :inverse-video t)
(t :background "grey30"))
+(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
(((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
(((type tty)) :foreground "yellow") (t :foreground "burlywood2"))
(mdw-define-face mdw-number-face
(t :foreground "yellow"))
+(mdw-define-face mdw-trivial-face)
(mdw-define-face font-lock-function-name-face
(t :slant italic))
(mdw-define-face font-lock-keyword-face
"explicit" ;C++
"export" ;C++
"extern" ;K&R, C89
- "false" ;C++, C9X macro
"float" ;K&R, C89
"for" ;K&R, C89
;; "fortran" ;K&R
"struct" ;K&R, C89
"switch" ;K&R, C89
"template" ;C++
- "this" ;C++
"throw" ;C++
- "true" ;C++, C9X macro
"try" ;C++
"this" ;C++
"typedef" ;C89
"__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"
(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
"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
(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.
(mdw-post-config-mode-hack))
;;;--------------------------------------------------------------------------
+;;; Scala programming configuration.
+
+(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" "private" "protected" "return"
+ "sealed" "throw" "trait" "try" "type" "val"
+ "var" "while" "with" "yield"))
+ (scala-constants
+ (mdw-regexps "false" "null" "super" "this" "true"))
+ (punctuation "[-!%^&*=+:@#~/?\\|`]"))
+
+ (setq font-lock-keywords
+ (list
+
+ ;; Magical identifiers between backticks.
+ (list (concat "`\\([^`]+\\)`")
+ '(1 font-lock-variable-name-face))
+
+ ;; Handle the keywords defined above.
+ (list (concat "\\_<\\(" scala-keywords "\\)\\_>")
+ '(0 font-lock-keyword-face))
+
+ ;; Handle the constants defined above.
+ (list (concat "\\_<\\(" scala-constants "\\)\\_>")
+ '(0 font-lock-variable-name-face))
+
+ ;; Magical identifiers between backticks.
+ (list (concat "`\\([^`]+\\)`")
+ '(1 font-lock-variable-name-face))
+
+ ;; Handle numbers too.
+ ;;
+ ;; As usual, not quite right.
+ (list (concat "\\_<\\("
+ "0\\([xX][0-9a-fA-F]+\\|[0-7]+\\)\\|"
+ "[0-9]+\\(\\.[0-9]*\\|\\)"
+ "\\([eE]\\([-+]\\|\\)[0-9]+\\|\\)\\)"
+ "[lLfFdD]?")
+ '(0 mdw-number-face))
+
+ ;; Identifiers with trailing operators.
+ (list (concat "_\\(" punctuation "\\)+")
+ '(0 mdw-trivial-face))
+
+ ;; And everything else is punctuation.
+ (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
+ '(0 mdw-punct-face)))
+
+ font-lock-syntactic-keywords
+ (list
+
+ ;; Single quotes around characters. But not when used to quote
+ ;; symbol names. Ugh.
+ (list (concat "\\('\\)"
+ "\\(" "."
+ "\\|" "\\\\" "\\(" "\\\\\\\\" "\\)*"
+ "u+" "[0-9a-fA-F]\\{4\\}"
+ "\\|" "\\\\" "[0-7]\\{1,3\\}"
+ "\\|" "\\\\" "." "\\)"
+ "\\('\\)")
+ '(1 "\"")
+ '(4 "\"")))))
+
+ (mdw-post-config-mode-hack))
+
+;;;--------------------------------------------------------------------------
;;; C# programming configuration.
;; Make indentation nice.
;; 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
(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.
(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"
"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"))
(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]*\\(?:#+\\|\\<dnl\\>\\)[ \t]*\\)"))
;;;--------------------------------------------------------------------------