;;;--------------------------------------------------------------------------
;;; Check command-line.
+(defun mdw-check-command-line-switch (switch)
+ (let ((probe nil) (next command-line-args) (found nil))
+ (while next
+ (cond ((string= (car next) switch)
+ (setq found t)
+ (if probe (rplacd probe (cdr next))
+ (setq command-line-args (cdr next))))
+ (t
+ (setq probe next)))
+ (setq next (cdr next)))
+ found))
+
(defvar mdw-fast-startup nil
"Whether .emacs should optimize for rapid startup.
This may be at the expense of cool features.")
-(let ((probe nil) (next command-line-args))
- (while next
- (cond ((string= (car next) "--mdw-fast-startup")
- (setq mdw-fast-startup t)
- (if probe
- (rplacd probe (cdr next))
- (setq command-line-args (cdr next))))
- (t
- (setq probe next)))
- (setq next (cdr next))))
+(setq mdw-fast-startup
+ (mdw-check-command-line-switch "--mdw-fast-startup"))
+
+(defvar mdw-splashy-startup nil
+ "Whether to show a splash screen and related frippery.")
+(setq mdw-splashy-startup
+ (mdw-check-command-line-switch "--mdw-splashy-startup"))
;;;--------------------------------------------------------------------------
;;; Some general utilities.
(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'.
(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))
(erase-buffer)
(shell-command "date +%Y-%m-%d" t)
(goto-char (mark))
- (delete-backward-char 1)
+ (delete-char -1)
(buffer-string))
(kill-buffer buffer))))))
(let ((auto-revert-check-vc-info t))
(auto-revert-buffers)))
+(defun comint-send-and-indent ()
+ (interactive)
+ (comint-send-input)
+ (and mdw-auto-indent
+ (indent-for-tab-command)))
+
+(defadvice comint-line-beginning-position
+ (around mdw-calculate-it-properly () activate compile)
+ "Calculate the actual line start for multi-line input."
+ (if (or comint-use-prompt-regexp
+ (eq (field-at-pos (point)) 'output))
+ ad-do-it
+ (setq ad-return-value
+ (constrain-to-field (line-beginning-position) (point)))))
+
;;;--------------------------------------------------------------------------
;;; Dired hacking.
'(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.
"void" "volatile"
"while"))
- (java-constants
+ (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.
"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"
"final" "fn" "for"
"if" "impl" "in"
"priv" "proc" "pub" "pure"
"ref" "return"
"sizeof" "static" "struct" "super"
- "trait" "type" "typeof"
- "unsafe" "unsized" "use"
+ "trait" "try" "type" "typeof"
+ "union" "unsafe" "unsized" "use"
"virtual"
"where" "while"
"yield"))
"\\|" "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]+\\)\\|"
+ (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))
(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.
(setq LaTeX-syntactic-comments nil
LaTeX-fill-break-at-separators '(\\\[))
+(add-hook 'bibtex-mode-hook (lambda () (setq fill-column 76)))
+
+;;;--------------------------------------------------------------------------
+;;; HTML, CSS, and other web foolishness.
+
+(setq css-indent-offset 2)
+
;;;--------------------------------------------------------------------------
;;; SGML hacking.
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 common-lisp-hyperspec (symbol))
+(mdw-advise-hyperspec-lookup common-lisp-hyperspec-format (char))
+(mdw-advise-hyperspec-lookup common-lisp-hyperspec-lookup-reader-macro (char))
+
(defun mdw-fontify-lispy ()
;; Set fill prefix.
(list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
'(0 mdw-punct-face)))))
-(defun comint-send-and-indent ()
- (interactive)
- (comint-send-input)
- (and mdw-auto-indent
- (indent-for-tab-command)))
-
-(defadvice comint-line-beginning-position
- (around mdw-calculate-it-properly () activate compile)
- "Calculate the actual line start for multi-line input."
- (if (or comint-use-prompt-regexp
- (eq (field-at-pos (point)) 'output))
- ad-do-it
- (setq ad-return-value
- (constrain-to-field (line-beginning-position) (point)))))
-
(defun mdw-setup-m4 ()
;; Inexplicably, Emacs doesn't match braces in m4 mode. This is very
(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))