el/dot-emacs.el: Add a `reverse-diff' option to Magit's diff popups.
[profile] / el / dot-emacs.el
index 59c8536..80fc05a 100644 (file)
@@ -721,7 +721,8 @@ sequences separated by `.'."
        (cond ((null la) (throw 'done lb))
              ((null lb) (throw 'done nil))
              ((< (car la) (car lb)) (throw 'done t))
-             ((= (car la) (car lb)) (setq la (cdr la) lb (cdr lb))))))))
+             ((= (car la) (car lb)) (setq la (cdr la) lb (cdr lb)))
+             (t (throw 'done nil)))))))
 
 (defun mdw-check-autorevert ()
   "Sets global-auto-revert-ignore-buffer appropriately for this buffer.
@@ -1424,30 +1425,6 @@ doesn't match any of the regular expressions in
   (((class color) (type x)) :background "NavyBlue")
   (t :background "blue"))
 
-(mdw-define-face magit-diff-add
-  (t :foreground "green"))
-(mdw-define-face magit-diff-del
-  (t :foreground "red"))
-(mdw-define-face magit-diff-file-header
-  (t :weight bold))
-(mdw-define-face magit-diff-hunk-header
-  (t :foreground "SkyBlue1"))
-(mdw-define-face magit-item-highlight
-  (((type tty)) :background "blue")
-  (t :background "grey11"))
-(mdw-define-face magit-log-head-label-remote
-  (((type tty)) :background "cyan" :foreground "green")
-  (t :background "grey11" :foreground "DarkSeaGreen2" :box t))
-(mdw-define-face magit-log-head-label-local
-  (((type tty)) :background "cyan" :foreground "yellow")
-  (t :background "grey11" :foreground "LightSkyBlue1" :box t))
-(mdw-define-face magit-log-head-label-tags
-  (((type tty)) :background "red" :foreground "yellow")
-  (t :background "LemonChiffon1" :foreground "goldenrod4" :box t))
-(mdw-define-face magit-log-graph
-  (((type tty)) :foreground "magenta")
-  (t :foreground "grey80"))
-
 (mdw-define-face erc-input-face
   (t :foreground "red"))
 
@@ -2574,6 +2551,49 @@ strip numbers instead."
                "yield")))
 
 ;;;--------------------------------------------------------------------------
+;;; Lua programming style.
+
+(setq lua-indent-level 2)
+
+(defun mdw-fontify-lua ()
+
+  ;; Miscellaneous fiddling.
+  (mdw-standard-fill-prefix "\\([ \t]*#+[ \t]*\\)")
+
+  ;; Now define fontification things.
+  (make-local-variable 'font-lock-keywords)
+  (let ((lua-keywords
+        (mdw-regexps "and" "break" "do" "else" "elseif" "end"
+                     "false" "for" "function" "goto" "if" "in" "local"
+                     "nil" "not" "or" "repeat" "return" "then" "true"
+                     "until" "while")))
+    (setq font-lock-keywords
+         (list
+
+          ;; Set up the keywords defined above.
+          (list (concat "\\_<\\(" lua-keywords "\\)\\_>")
+                '(0 font-lock-keyword-face))
+
+          ;; At least numbers are simpler than C.
+          (list (concat "\\_<\\(" "0[xX]"
+                                  "\\(" "[0-9a-fA-F]+"
+                                        "\\(\\.[0-9a-fA-F]*\\)?"
+                                  "\\|" "\\.[0-9a-fA-F]+"
+                                  "\\)"
+                                  "\\([pP][-+]?[0-9]+\\)?"
+                            "\\|" "\\(" "[0-9]+"
+                                        "\\(\\.[0-9]*\\)?"
+                                  "\\|" "\\.[0-9]+"
+                                  "\\)"
+                                  "\\([eE][-+]?[0-9]+\\)?"
+                            "\\)")
+                '(0 mdw-number-face))
+
+          ;; And anything else is punctuation.
+          (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
+                '(0 mdw-punct-face))))))
+
+;;;--------------------------------------------------------------------------
 ;;; Icon programming style.
 
 ;; Icon indentation style.
@@ -3648,6 +3668,56 @@ This allows you to pass a list of arguments through `ansi-term'."
                             git-grep-command 'git-grep-history)))
   (grep command-args))
 
+(setq magit-diff-refine-hunk 'all
+      magit-view-git-manual-method 'man
+      magit-wip-after-save-local-mode-lighter ""
+      magit-wip-after-apply-mode-lighter ""
+      magit-wip-before-change-mode-lighter "")
+(eval-after-load "magit"
+  '(progn (global-magit-file-mode 1)
+         (magit-wip-after-save-mode 1)
+         (magit-wip-after-apply-mode 1)
+         (magit-wip-before-change-mode 1)
+         (add-to-list 'magit-no-confirm 'safe-with-wip)
+         (dolist (popup '(magit-diff-popup
+                          magit-diff-refresh-popup
+                          magit-diff-mode-refresh-popup
+                          magit-revision-mode-refresh-popup))
+           (magit-define-popup-switch popup ?R "Reverse diff" "-R"))))
+
+(setq magit-repolist-columns
+      '(("Name" 16 magit-repolist-column-ident nil)
+       ("Version" 18 magit-repolist-column-version nil)
+       ("St" 2 magit-repolist-column-dirty nil)
+       ("L<U" 3 mdw-repolist-column-unpulled-from-upstream nil)
+       ("L>U" 3 mdw-repolist-column-unpushed-to-upstream nil)
+       ("Path" 32 magit-repolist-column-path nil)))
+
+(setq magit-repository-directories '(("~/etc/profile" . 0)
+                                    ("~/src/" . 1)))
+
+(defadvice magit-list-repos (around mdw-dirname () activate compile)
+  "Make sure the returned names are directory names.
+Otherwise child processes get started in the wrong directory and
+there is sadness."
+  (setq ad-return-value (mapcar #'file-name-as-directory ad-do-it)))
+
+(defun mdw-repolist-column-unpulled-from-upstream (_id)
+  "Insert number of upstream commits not in the current branch."
+  (let ((upstream (magit-get-upstream-branch (magit-get-current-branch) t)))
+    (and upstream
+        (let ((n (cadr (magit-rev-diff-count "HEAD" upstream))))
+          (propertize (number-to-string n) 'face
+                      (if (> n 0) 'bold 'shadow))))))
+
+(defun mdw-repolist-column-unpushed-to-upstream (_id)
+  "Insert number of commits in the current branch but not its upstream."
+  (let ((upstream (magit-get-upstream-branch (magit-get-current-branch) t)))
+    (and upstream
+        (let ((n (car (magit-rev-diff-count "HEAD" upstream))))
+          (propertize (number-to-string n) 'face
+                      (if (> n 0) 'bold 'shadow))))))
+
 ;;;--------------------------------------------------------------------------
 ;;; Inferior Emacs Lisp.