(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'.
org-export-docbook-xslt-stylesheet
"/usr/share/xml/docbook/stylesheet/docbook-xsl/fo/docbook.xsl")
+;; Glasses.
+
+(setq glasses-separator "-"
+ glasses-separate-parentheses-p nil
+ glasses-uncapitalize-p t)
+
;; Some hacks to do with window placement.
(defun mdw-clobber-other-windows-showing-buffer (buffer-or-name)
(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))
(defadvice write-file (after mdw-autorevert activate)
(mdw-check-autorevert))
+(defun mdw-auto-revert ()
+ "Recheck all of the autorevertable buffers, and update VC modelines."
+ (interactive)
+ (let ((auto-revert-check-vc-info t))
+ (auto-revert-buffers)))
+
;;;--------------------------------------------------------------------------
;;; Dired hacking.
(concat (shell-quote-argument (dired-get-filename nil))
" " args)))
+(defadvice dired-do-flagged-delete
+ (around mdw-delete-if-prefix-argument activate compile)
+ (let ((delete-by-moving-to-trash (and (null current-prefix-arg)
+ delete-by-moving-to-trash)))
+ ad-do-it))
+
(eval-after-load "dired"
'(define-key dired-mode-map "X" 'mdw-dired-run))
'(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)
"__typeof__" ;GCC
"__volatile__" ;GCC
))
- (c-constants
+ (c-builtins
(mdw-regexps "false" ;C++, C99 macro
"this" ;C++
"true" ;C++, C99 macro
(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.
(defun mdw-fontify-java ()
+ ;; Fiddle with some syntax codes.
+ (modify-syntax-entry ?@ ".")
+ (modify-syntax-entry ?@ "." font-lock-syntax-table)
+
;; Other stuff.
(setq mdw-fill-prefix mdw-c-comment-fill-prefix)
;; Now define things to be fontified.
(make-local-variable 'font-lock-keywords)
(let ((java-keywords
- (mdw-regexps "abstract" "boolean" "break" "byte" "case" "catch"
- "char" "class" "const" "continue" "default" "do"
- "double" "else" "extends" "final" "finally" "float"
- "for" "goto" "if" "implements" "import" "instanceof"
- "int" "interface" "long" "native" "new" "package"
- "private" "protected" "public" "return" "short"
- "static" "switch" "synchronized" "throw" "throws"
- "transient" "try" "void" "volatile" "while"))
-
- (java-constants
+ (mdw-regexps "abstract" "assert"
+ "boolean" "break" "byte"
+ "case" "catch" "char" "class" "const" "continue"
+ "default" "do" "double"
+ "else" "enum" "extends"
+ "final" "finally" "float" "for"
+ "goto"
+ "if" "implements" "import" "instanceof" "int"
+ "interface"
+ "long"
+ "native" "new"
+ "package" "private" "protected" "public"
+ "return"
+ "short" "static" "strictfp" "switch" "synchronized"
+ "throw" "throws" "transient" "try"
+ "void" "volatile"
+ "while"))
+
+ (java-builtins
(mdw-regexps "false" "null" "super" "this" "true")))
(setq font-lock-keywords
(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.
"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")))
(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.
"[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)))
"unsafe" "ushort" "using" "virtual" "void" "volatile"
"while" "yield"))
- (csharp-constants
+ (csharp-builtins
(mdw-regexps "base" "false" "null" "this" "true")))
(setq font-lock-keywords
(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.
(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"
- "false" "final" "fn" "for"
+ "final" "fn" "for"
"if" "impl" "in"
"let" "loop"
"macro" "match" "mod" "move" "mut"
"offsetof" "override"
- "priv" "pub" "pure"
+ "priv" "proc" "pub" "pure"
"ref" "return"
- "self" "sizeof" "static" "struct" "super"
- "true" "trait" "type" "typeof"
- "unsafe" "unsized" "use"
+ "sizeof" "static" "struct" "super"
+ "trait" "try" "type" "typeof"
+ "union" "unsafe" "unsized" "use"
"virtual"
"where" "while"
"yield"))
"f32" "f64"
"i8" "i16" "i32" "i64" "isize"
"u8" "u16" "u32" "u64" "usize"
- "char" "str")))
+ "char" "str"
+ "self" "Self")))
(setq font-lock-keywords
(list
"\\|" "0o[0-7_]+"
"\\|" "0b[01_]+"
"\\)"
- "\\([ui]\\(8\\|16\\|32\\|64\\|s\\|size\\)\\)?"
+ "\\([ui]\\(8\\|16\\|32\\|64\\|size\\)\\)?"
"\\)\\_>")
'(0 mdw-number-face))
'(0 font-lock-keyword-face))
;; At least numbers are simpler than C.
- (list (concat "\\_<0\\([xX][0-9a-fA-F_]+\\|[0-7_]+\\)\\|"
- "\\_<[0-9][0-9_]*\\(\\.[0-9_]*\\|\\)"
- "\\([eE]\\([-+]\\|\\)[0-9_]+\\|[lL]\\|\\)")
+ (list (concat "\\_<0\\([xX][0-9a-fA-F]+\\|[oO]?[0-7]+\\|[bB][01]+\\)\\|"
+ "\\_<[0-9][0-9]*\\(\\.[0-9]*\\|\\)"
+ "\\([eE]\\([-+]\\|\\)[0-9]+\\|[lL]\\|\\)")
'(0 mdw-number-face))
;; And anything else is punctuation.
(modify-syntax-entry ?. "w")
(modify-syntax-entry ?\n ">")
(setf fill-prefix nil)
+ (modify-syntax-entry ?. "_")
+ (modify-syntax-entry ?* ". 23")
+ (modify-syntax-entry ?/ ". 124b")
+ (modify-syntax-entry ?\n "> b")
(local-set-key ";" 'self-insert-command)
(mdw-standard-fill-prefix "\\([ \t]*;+[ \t]*\\)"))
(defun mdw-asm-set-comment ()
(modify-syntax-entry ?; "."
)
- (modify-syntax-entry asm-comment-char "<b")
+ (modify-syntax-entry asm-comment-char "< b")
(setq comment-start (string asm-comment-char ? )))
(add-hook 'asm-mode-local-variables-hook 'mdw-asm-set-comment)
(put 'asm-comment-char 'safe-local-variable 'characterp)
(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.
(list "[$^_{}#&]"
'(0 mdw-punct-face)))))
+(setq TeX-install-font-lock 'tex-font-setup)
+
(eval-after-load 'font-latex
'(defun font-latex-jit-lock-force-redisplay (buf start end)
"Compatibility for Emacsen not offering `jit-lock-force-redisplay'."
LaTeX-fill-break-at-separators '(\\\[))
;;;--------------------------------------------------------------------------
+;;; HTML, CSS, and other web foolishness.
+
+(setq css-indent-offset 2)
+
+;;;--------------------------------------------------------------------------
;;; SGML hacking.
(defun mdw-sgml-mode ()
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 hyperspec-lookup (symbol))
+(mdw-advise-hyperspec-lookup hyperspec-lookup-format (char))
+(mdw-advise-hyperspec-lookup hyperspec-lookup-reader-macro (char))
+
(defun mdw-fontify-lispy ()
;; Set fill prefix.
(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))
(magit-wip-after-apply-mode 1)
(magit-wip-before-change-mode 1)
(add-to-list 'magit-no-confirm 'safe-with-wip)
+ (add-to-list 'magit-no-confirm 'trash)
(push '(:eval (if (or magit-wip-after-save-local-mode
magit-wip-after-apply-mode
magit-wip-before-change-mode)
(around mdw-just-this-buffer activate compile)
(let ((magit-save-repository-buffers nil)) ad-do-it))
+(defadvice magit-discard
+ (around mdw-delete-if-prefix-argument activate compile)
+ (let ((magit-delete-by-moving-to-trash
+ (and (null current-prefix-arg)
+ magit-delete-by-moving-to-trash)))
+ ad-do-it))
+
(setq magit-repolist-columns
'(("Name" 16 magit-repolist-column-ident nil)
("Version" 18 magit-repolist-column-version nil)
(add-hook 'find-file-hook 'mdw-try-smerge t)
;;;--------------------------------------------------------------------------
+;;; GUD, and especially GDB.
+
+;; Inhibit window dedication. I mean, seriously, wtf?
+(defadvice gdb-display-buffer (after mdw-undedicated (buf) compile activate)
+ "Don't make windows dedicated. Seriously."
+ (set-window-dedicated-p ad-return-value nil))
+(defadvice gdb-set-window-buffer
+ (after mdw-undedicated (name &optional ignore-dedicated window)
+ compile activate)
+ "Don't make windows dedicated. Seriously."
+ (set-window-dedicated-p (or window (selected-window)) nil))
+
+;;;--------------------------------------------------------------------------
;;; MPC configuration.
(eval-when-compile (trap (require 'mpc)))