emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 8dac9c3 1/2: * lisp/vc/diff-mode.el (diff-kill-appl


From: Stefan Monnier
Subject: [Emacs-diffs] master 8dac9c3 1/2: * lisp/vc/diff-mode.el (diff-kill-applied-hunks): New command.
Date: Mon, 01 Dec 2014 18:17:00 +0000

branch: master
commit 8dac9c34d8a2575d44fc78824ec77a58b63701b6
Author: Stefan Monnier <address@hidden>
Commit: Stefan Monnier <address@hidden>

    * lisp/vc/diff-mode.el (diff-kill-applied-hunks): New command.
    * lisp/vc/smerge-mode.el (smerge-swap): New command.
---
 lisp/ChangeLog         |   14 ++++++++++----
 lisp/vc/diff-mode.el   |   10 ++++++++++
 lisp/vc/smerge-mode.el |   13 +++++++++++++
 3 files changed, 33 insertions(+), 4 deletions(-)

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 9f233cd..ec95af9 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,7 +1,13 @@
+2014-12-01  Stefan Monnier  <address@hidden>
+
+       * vc/smerge-mode.el (smerge-swap): New command.
+
+       * vc/diff-mode.el (diff-kill-applied-hunks): New command.
+
 2014-12-01  Ulf Jasper  <address@hidden>
 
-       * net/newst-treeview.el (newsticker--treeview-item-show): Check
-       window liveliness before measuring its width.
+       * net/newst-treeview.el (newsticker--treeview-item-show):
+       Check window liveliness before measuring its width.
 
        * net/newst-backend.el (newsticker--get-news-by-url-callback):
        Pass correct status to `newsticker--sentinel-work'.
@@ -25,13 +31,13 @@
 
        * vc/vc.el, vc/vc-cvs.el, vc/vc-rcs.el, vc/vc-svn.el: The 'merge'
        backend method of RCS/CVS/SVN is now 'merge-file', to contrast with
-       'merge-branch'. Prompting for merge revisions is pushed down to
+       'merge-branch'.  Prompting for merge revisions is pushed down to
        the back ends; this fixes a layering violation that caused bad
        behavior with SVN.
 
        * vc/vc.el, vc-hooks.el, and all backends: API simplification;
        vc-stay-local-p and repository-hostname are no longer public
-       methods. Only the CVS and SVN backends used these, and the SVN
+       methods.  Only the CVS and SVN backends used these, and the SVN
        support was conditioned out because svn status -v is too slow.
        The CVS back end retains this machibery and the vc-stay-local
        configuration variable now only affects it.
diff --git a/lisp/vc/diff-mode.el b/lisp/vc/diff-mode.el
index 9afb9f4..f3455ef 100644
--- a/lisp/vc/diff-mode.el
+++ b/lisp/vc/diff-mode.el
@@ -1817,6 +1817,16 @@ With a prefix argument, try to REVERSE the hunk."
     (diff-hunk-status-msg line-offset (diff-xor reverse switched) t)))
 
 
+(defun diff-kill-applied-hunks ()
+  "Kill all hunks that have already been applied starting at point."
+  (interactive)
+  (while (not (eobp))
+    (pcase-let ((`(,buf ,line-offset ,pos ,src ,_dst ,switched)
+                 (diff-find-source-location nil nil)))
+      (if (and line-offset switched)
+          (diff-hunk-kill)
+        (diff-hunk-next)))))
+
 (defalias 'diff-mouse-goto-source 'diff-goto-source)
 
 (defun diff-goto-source (&optional other-file event)
diff --git a/lisp/vc/smerge-mode.el b/lisp/vc/smerge-mode.el
index 7712815..0b7b702 100644
--- a/lisp/vc/smerge-mode.el
+++ b/lisp/vc/smerge-mode.el
@@ -1132,6 +1132,19 @@ repeating the command will highlight other two parts."
                         (unless smerge-use-changed-face
                           '((smerge . refine) (face . 
smerge-refined-added))))))
 
+(defun smerge-swap ()
+  "Swap the \"Mine\" and the \"Other\" chunks.
+Can be used before things like `smerge-keep-all' or `smerge-resolve' where the
+ordering can have some subtle influence on the result, such as preferring the
+spacing of the \"Other\" chunk."
+  (interactive)
+  (smerge-match-conflict)
+  (goto-char (match-beginning 3))
+  (let ((txt3 (delete-and-extract-region (point) (match-end 3))))
+    (insert (delete-and-extract-region (match-beginning 1) (match-end 1)))
+    (goto-char (match-beginning 1))
+    (insert txt3)))
+
 (defun smerge-diff (n1 n2)
   (smerge-match-conflict)
   (smerge-ensure-match n1)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]