el/dot-emacs.el: Single quotes are quote-like.
[profile] / el / dot-emacs.el
index 1704f7d..0990d67 100644 (file)
@@ -285,6 +285,11 @@ Evil key bindings are defined in `mdw-evil-keymap-keys'."
             ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
           org-export-latex-classes)))
 
+(setq org-export-docbook-xslt-proc-command "xsltproc --output %o %s %i"
+      org-export-docbook-xsl-fo-proc-command "fop %i.safe %o"
+      org-export-docbook-xslt-stylesheet
+      "/usr/share/xml/docbook/stylesheet/docbook-xsl/fo/docbook.xsl")
+
 ;;;--------------------------------------------------------------------------
 ;;; Mail and news hacking.
 
@@ -936,6 +941,8 @@ doesn't match any of the regular expressions in
 (mdw-define-face which-func
   (t nil))
 
+(mdw-define-face diff-header
+  (t nil))
 (mdw-define-face diff-index
   (t :weight bold))
 (mdw-define-face diff-file-header
@@ -952,6 +959,8 @@ doesn't match any of the regular expressions in
   (t :foreground "red"))
 (mdw-define-face diff-context
   (t nil))
+(mdw-define-face diff-refine-change
+  (t :background "RoyalBlue4"))
 
 (mdw-define-face erc-input-face
   (t :foreground "red"))
@@ -1336,6 +1345,66 @@ doesn't match any of the regular expressions in
   (mdw-post-config-mode-hack))
 
 ;;;--------------------------------------------------------------------------
+;;; Javascript programming configuration.
+
+(defun mdw-javascript-style ()
+  (setq js-indent-level 2)
+  (setq js-expr-indent-offset 0))
+
+(defun mdw-fontify-javascript ()
+
+  ;; Other stuff.
+  (mdw-javascript-style)
+  (setq js-auto-indent-flag t)
+
+  ;; Now define things to be fontified.
+  (make-local-variable 'font-lock-keywords)
+  (let ((javascript-keywords
+        (mdw-regexps "abstract" "boolean" "break" "byte" "case" "catch"
+                     "char" "class" "const" "continue" "debugger" "default"
+                     "delete" "do" "double" "else" "enum" "export" "extends"
+                     "final" "finally" "float" "for" "function" "goto" "if"
+                     "implements" "import" "in" "instanceof" "int"
+                     "interface" "let" "long" "native" "new" "package"
+                     "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
+        (mdw-regexps "false" "null" "undefined" "Infinity" "NaN" "true"
+                     "arguments" "this")))
+
+    (setq font-lock-keywords
+         (list
+
+          ;; Handle the keywords defined above.
+          (list (concat "\\<\\(" javascript-keywords "\\)\\>")
+                '(0 font-lock-keyword-face))
+
+          ;; Handle the predefined constants defined above.
+          (list (concat "\\<\\(" javascript-constants "\\)\\>")
+                '(0 font-lock-variable-name-face))
+
+          ;; Handle numbers too.
+          ;;
+          ;; The following isn't quite right, but it's close enough.
+          (list (concat "\\<\\("
+                        "0\\([xX][0-9a-fA-F]+\\|[0-7]+\\)\\|"
+                        "[0-9]+\\(\\.[0-9]*\\|\\)"
+                        "\\([eE]\\([-+]\\|\\)[0-9]+\\|\\)\\)"
+                        "[lLfFdD]?")
+                '(0 mdw-number-face))
+
+          ;; And anything else is punctuation.
+          (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
+                '(0 mdw-punct-face)))))
+
+  (mdw-post-config-mode-hack))
+
+;;;--------------------------------------------------------------------------
 ;;; C# programming configuration.
 
 ;; Make indentation nice.
@@ -1507,6 +1576,7 @@ doesn't match any of the regular expressions in
 
 ;; Perl indentation style.
 
+(fset 'perl-mode 'cperl-mode)
 (setq cperl-indent-level 2)
 (setq cperl-continued-statement-offset 2)
 (setq cperl-continued-brace-offset 0)
@@ -1526,11 +1596,11 @@ doesn't match any of the regular expressions in
   ;; Now define fontification things.
   (make-local-variable 'font-lock-keywords)
   (let ((perl-keywords
-        (mdw-regexps "and" "cmp" "continue" "do" "else" "elsif" "eq"
-                     "for" "foreach" "ge" "gt" "goto" "if"
+        (mdw-regexps "and" "break" "cmp" "continue" "do" "else" "elsif" "eq"
+                     "for" "foreach" "ge" "given" "gt" "goto" "if"
                      "last" "le" "lt" "local" "my" "ne" "next" "or"
-                     "package" "redo" "require" "return" "sub"
-                     "undef" "unless" "until" "use" "while")))
+                     "our" "package" "redo" "require" "return" "sub"
+                     "undef" "unless" "until" "use" "when" "while")))
 
     (setq font-lock-keywords
          (list
@@ -1707,6 +1777,7 @@ strip numbers instead."
                       "<" arm-assembler-mode-syntax-table)
   (modify-syntax-entry ?\n ">" arm-assembler-mode-syntax-table)
   (modify-syntax-entry ?_ "_" arm-assembler-mode-syntax-table)
+  (modify-syntax-entry ?' "\"'" arm-assembler-mode-syntax-table)
 
   (make-local-variable 'comment-start)
   (setq comment-start ";")
@@ -2135,6 +2206,44 @@ strip numbers instead."
   (setq sh-indentation 2)
   (setq sh-basic-offset 2))
 
+(setq sh-shell-file "/bin/sh")
+
+;; Awful hacking to override the shell detection for particular scripts.
+(defmacro define-custom-shell-mode (name shell)
+  `(defun ,name ()
+     (interactive)
+     (set (make-local-variable 'sh-shell-file) ,shell)
+     (sh-mode)))
+(define-custom-shell-mode bash-mode "/bin/bash")
+(define-custom-shell-mode rc-mode "/usr/bin/rc")
+(put 'sh-shell-file 'permanent-local t)
+
+;; Hack the rc syntax table.  Backquotes aren't paired in rc.
+(eval-after-load "sh-script"
+  '(or (assq 'rc sh-mode-syntax-table-input)
+       (let ((frag '(nil
+                    ?# "<"
+                    ?\n ">#"
+                    ?\" "\"\""
+                    ?\' "\"\'"
+                    ?$ "'"
+                    ?\` "."
+                    ?! "_"
+                    ?% "_"
+                    ?. "_"
+                    ?^ "_"
+                    ?~ "_"
+                    ?, "_"
+                    ?= "."
+                    ?< "."
+                    ?> "."))
+            (assoc (assq 'rc sh-mode-syntax-table-input)))
+        (if assoc
+            (rplacd assoc frag)
+          (setq sh-mode-syntax-table-input
+                (cons (cons 'rc frag)
+                      sh-mode-syntax-table-input))))))
+
 ;;;--------------------------------------------------------------------------
 ;;; Emacs shell mode.