el/dot-emacs.el (comint-...): Lift out into utilities.
[profile] / el / dot-emacs.el
index b65c132..b30a963 100644 (file)
 ;;;--------------------------------------------------------------------------
 ;;; 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.
@@ -578,7 +587,7 @@ Pretend they don't exist.  They might be on other display devices."
 
 (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))
 
@@ -899,7 +908,7 @@ in REST."
                                     (erase-buffer)
                                     (shell-command "date +%Y-%m-%d" t)
                                     (goto-char (mark))
-                                    (delete-backward-char 1)
+                                    (delete-char -1)
                                     (buffer-string))
                (kill-buffer buffer))))))
 
@@ -970,6 +979,21 @@ tramp, which seems to get itself into a twist."
   (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.
 
@@ -2282,10 +2306,7 @@ name, as a symbol."
                      "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"))
+                     "volatile" "while" "with" "yield"))
        (javascript-builtins
         (mdw-regexps "false" "null" "undefined" "Infinity" "NaN" "true"
                      "arguments" "this")))
@@ -3512,6 +3533,8 @@ strip numbers instead."
 (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.
 
@@ -3908,6 +3931,16 @@ that character only to be normal punctuation.")
       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.
@@ -3937,21 +3970,6 @@ that character only to be normal punctuation.")
              (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
@@ -4036,13 +4054,13 @@ This allows you to pass a list of arguments through `ansi-term'."
 
 (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))