mdw-pager: New hack for pager support.
[profile] / dot-emacs.el
index 5b9408f..0d27f52 100644 (file)
@@ -765,6 +765,16 @@ the regular expressions in `mdw-backup-disable-regexps'."
        :foreground ,(if window-system "SeaGreen1" "green"))
     (woman-bold :weight bold)
     (woman-italic :slant italic)
+    (p4-depot-added-face :foreground "green")
+    (p4-depot-branch-op-face :foreground "yellow")
+    (p4-depot-deleted-face :foreground "red")
+    (p4-depot-unmapped-face
+       :foreground ,(if window-system "SkyBlue1" "cyan"))
+    (p4-diff-change-face :foreground "yellow")
+    (p4-diff-del-face :foreground "red")
+    (p4-diff-file-face :foreground "SkyBlue1")
+    (p4-diff-head-face :background "grey10")
+    (p4-diff-ins-face :foreground "green")
     (diff-index :weight bold)
     (diff-file-header :weight bold)
     (diff-hunk-header :foreground "SkyBlue1")
@@ -806,19 +816,42 @@ the regular expressions in `mdw-backup-disable-regexps'."
      (define-key c-mode-map "*" nil)
      (define-key c-mode-map "/" nil)))
 
+(defun mdw-c-lineup-arglist (langelem)
+  "Hack for DWIMmery in c-lineup-arglist."
+  (if (save-excursion
+       (c-block-in-arglist-dwim (c-langelem-2nd-pos c-syntactic-element)))
+      0
+    (c-lineup-arglist langelem)))
+
+(defun mdw-c-indent-extern-mumble (langelem)
+  "Indent `extern \"...\" {' lines."
+  (save-excursion
+    (back-to-indentation)
+    (if (looking-at
+        "\\s-*\\<extern\\>\\s-*\"\\([^\\\\\"]+\\|\\.\\)*\"\\s-*{")
+       c-basic-offset
+      nil)))
+
 (defun mdw-c-style ()
   (c-add-style "[mdw] C and C++ style"
               '((c-basic-offset . 2)
                 (comment-column . 40)
                 (c-class-key . "class")
-                (c-offsets-alist (substatement-open . 0)
-                                 (label . 0)
-                                 (case-label . +)
-                                 (access-label . -)
-                                 (inclass . +)
-                                 (inline-open . ++)
-                                 (statement-cont . 0)
-                                 (statement-case-intro . +)))
+                (c-backslash-column . 72)
+                (c-offsets-alist
+                 (substatement-open . (add 0 c-indent-one-line-block))
+                 (defun-open . (add 0 c-indent-one-line-block))
+                 (arglist-cont-nonempty . mdw-c-lineup-arglist)
+                 (topmost-intro . mdw-c-indent-extern-mumble)
+                 (cpp-define-intro . 0)
+                 (inextern-lang . [0])
+                 (label . 0)
+                 (case-label . +)
+                 (access-label . -)
+                 (inclass . +)
+                 (inline-open . ++)
+                 (statement-cont . 0)
+                 (statement-case-intro . +)))
               t))
 
 (defun mdw-fontify-c-and-c++ ()
@@ -2072,6 +2105,10 @@ strip numbers instead."
 
 ;; --- Lispy languages ---
 
+;; Unpleasant bodge.
+(unless (boundp 'slime-repl-mode-map)
+  (setq slime-repl-mode-map (make-sparse-keymap)))
+
 (defun mdw-indent-newline-and-indent ()
   (interactive)
   (indent-for-tab-command)
@@ -2145,14 +2182,30 @@ strip numbers instead."
            'comint-watch-for-password-prompt))
 
 (defun mdw-term-mode-setup ()
-  (setq term-prompt-regexp "^[^]#$%>»}\n]*[]#$%>»}] *")
+  (setq term-prompt-regexp shell-prompt-pattern)
   (make-local-variable 'mouse-yank-at-point)
   (make-local-variable 'transient-mark-mode)
   (setq mouse-yank-at-point t)
-  (setq transient-mark-mode nil)
   (auto-fill-mode -1)
   (setq tab-width 8))
 
+(defun term-send-meta-right () (interactive) (term-send-raw-string "\e\e[C"))
+(defun term-send-meta-left  () (interactive) (term-send-raw-string "\e\e[D"))
+(defun term-send-ctrl-uscore () (interactive) (term-send-raw-string "\C-_"))
+(defun term-send-meta-meta-something ()
+  (interactive)
+  (term-send-raw-string "\e\e")
+  (term-send-raw))
+(eval-after-load 'term
+  '(progn
+     (define-key term-raw-map [?\e ?\e] nil)
+     (define-key term-raw-map [?\e ?\e t] 'term-send-meta-meta-something)
+     (define-key term-raw-map [?\C-/] 'term-send-ctrl-uscore)
+     (define-key term-raw-map [M-right] 'term-send-meta-right)
+     (define-key term-raw-map [?\e ?\M-O ?C] 'term-send-meta-right)
+     (define-key term-raw-map [M-left] 'term-send-meta-left)
+     (define-key term-raw-map [?\e ?\M-O ?D] 'term-send-meta-left)))
+
 ;;;----- That's all, folks --------------------------------------------------
 
 (provide 'dot-emacs)