Mercurial > emacs
changeset 82037:1d7514cb50ef
(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.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Sun, 22 Jul 2007 22:02:49 +0000 |
parents | 93dd0897a398 |
children | 7ee8cfeeb2b8 |
files | lisp/ChangeLog lisp/diff-mode.el |
diffstat | 2 files changed, 24 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Sun Jul 22 21:59:55 2007 +0000 +++ b/lisp/ChangeLog Sun Jul 22 22:02:49 2007 +0000 @@ -1,3 +1,10 @@ +2007-07-22 Stefan Monnier <monnier@iro.umontreal.ca> + + * diff-mode.el (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. + 2007-07-22 Dan Nicolaescu <dann@ics.uci.edu> * diff-mode.el (diff-mode-menu): New entries.
--- a/lisp/diff-mode.el Sun Jul 22 21:59:55 2007 +0000 +++ b/lisp/diff-mode.el Sun Jul 22 22:02:49 2007 +0000 @@ -155,7 +155,7 @@ ("\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 @@ ["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 @@ (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 @@ (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 @@ (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)