diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2007-07-22 22:02:49 +0000 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2007-07-22 22:02:49 +0000 |
commit | f151b310f65fd73924a32b566a17b3f44279c72a (patch) | |
tree | cae0495d46fa482b7b5dfb03ac7c144abb5c18fb /lisp/diff-mode.el | |
parent | 8f2d38de67278017981023e70e331f0d42aa7927 (diff) | |
download | emacs-f151b310f65fd73924a32b566a17b3f44279c72a.tar.gz emacs-f151b310f65fd73924a32b566a17b3f44279c72a.tar.bz2 emacs-f151b310f65fd73924a32b566a17b3f44279c72a.zip |
(diff-refine-ignore-spaces-hunk): Rename from
diff-refine-hunk. Adjust users.
(diff-unified-hunk-p, diff-splittable-p): New functions.
(diff-mode-menu): Use it to disable Split when it doesn't work.
Diffstat (limited to 'lisp/diff-mode.el')
-rw-r--r-- | lisp/diff-mode.el | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/lisp/diff-mode.el b/lisp/diff-mode.el index cfebb365770..a1bd0afa126 100644 --- a/lisp/diff-mode.el +++ b/lisp/diff-mode.el @@ -155,7 +155,7 @@ when editing big diffs)." ("\C-c\C-u" . diff-context->unified) ;; `d' because it duplicates the context :-( --Stef ("\C-c\C-d" . diff-unified->context) - ("\C-c\C-w" . diff-refine-hunk) + ("\C-c\C-w" . diff-refine-ignore-spaces-hunk) ("\C-c\C-f" . next-error-follow-minor-mode)) "Keymap for `diff-mode'. See also `diff-mode-shared-map'.") @@ -172,8 +172,8 @@ when editing big diffs)." ["Unified -> Context" diff-unified->context t] ;;["Fixup Headers" diff-fixup-modifs (not buffer-read-only)] "-----" - ["Split hunk" diff-split-hunk t] - ["Refine hunk" diff-refine-hunk t] + ["Split hunk" diff-split-hunk (diff-splittable-p)] + ["Refine hunk" diff-refine-ignore-spaces-hunk t] ["Kill current hunk" diff-hunk-kill t] ["Kill current file's hunks" diff-file-kill t] "-----" @@ -416,6 +416,12 @@ but in the file header instead, in which case move forward to the first hunk." (diff-beginning-of-file-and-junk) (diff-hunk-next)))))) +(defun diff-unified-hunk-p () + (save-excursion + (ignore-errors + (diff-beginning-of-hunk) + (looking-at "^@@")))) + (defun diff-beginning-of-file () (beginning-of-line) (unless (looking-at diff-file-header-re) @@ -528,6 +534,13 @@ data such as \"Index: ...\" and such." (while (re-search-forward re end t) (incf n)) n))) +(defun diff-splittable-p () + (save-excursion + (beginning-of-line) + (and (looking-at "^[-+ ]") + (progn (forward-line -1) (looking-at "^[-+ ]")) + (diff-unified-hunk-p)))) + (defun diff-split-hunk () "Split the current (unified diff) hunk at point into two hunks." (interactive) @@ -1525,7 +1538,7 @@ For use in `add-log-current-defun-function'." (goto-char (+ (car pos) (cdr src))) (add-log-current-defun)))))) -(defun diff-refine-hunk () +(defun diff-refine-ignore-spaces-hunk () "Refine the current hunk by ignoring space differences." (interactive) (let* ((char-offset (- (point) (progn (diff-beginning-of-hunk 'try-harder) |