]> code.delx.au - gnu-emacs/commitdiff
* lisp/vc/diff-mode.el (diff-context->unified): Don't get confused by "hunk
authorStefan Monnier <monnier@iro.umontreal.ca>
Mon, 29 Oct 2012 15:14:10 +0000 (11:14 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Mon, 29 Oct 2012 15:14:10 +0000 (11:14 -0400)
header comments".
(diff-unified->context, diff-context->unified)
(diff-reverse-direction, diff-fixup-modifs): Use `use-region-p'.

lisp/ChangeLog
lisp/vc/diff-mode.el
test/indent/shell.sh

index 387a8b0e619778ce02d56cbdc0558fe4daa3423e..54285a589ebce12166e02dd4266bc0a8ef0e50f1 100644 (file)
@@ -1,5 +1,10 @@
 2012-10-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+       * vc/diff-mode.el (diff-context->unified): Don't get confused by "hunk
+       header comments".
+       (diff-unified->context, diff-context->unified)
+       (diff-reverse-direction, diff-fixup-modifs): Use `use-region-p'.
+
        * emacs-lisp/cl.el (letf): Add missing indent rules (bug#12759).
 
        * files.el (find-alternate-file): Only ask one question (bug#12487).
index bbe31205c0e797729f0e16a58d5f1be936463db7..49b76a8e3bce82b15e3d28fcd1e9a35d841fc266 100644 (file)
@@ -911,7 +911,7 @@ PREFIX is only used internally: don't use it."
   "Convert unified diffs to context diffs.
 START and END are either taken from the region (if a prefix arg is given) or
 else cover the whole buffer."
-  (interactive (if (or current-prefix-arg (and transient-mark-mode mark-active))
+  (interactive (if (or current-prefix-arg (use-region-p))
                   (list (region-beginning) (region-end))
                 (list (point-min) (point-max))))
   (unless (markerp end) (setq end (copy-marker end t)))
@@ -1035,7 +1035,7 @@ else cover the whole buffer."
 START and END are either taken from the region
 \(when it is highlighted) or else cover the whole buffer.
 With a prefix argument, convert unified format to context format."
-  (interactive (if (and transient-mark-mode mark-active)
+  (interactive (if (use-region-p)
                   (list (region-beginning) (region-end) current-prefix-arg)
                 (list (point-min) (point-max) current-prefix-arg)))
   (if to-context
@@ -1045,7 +1045,7 @@ With a prefix argument, convert unified format to context format."
           (inhibit-read-only t))
       (save-excursion
         (goto-char start)
-        (while (and (re-search-forward "^\\(\\(\\*\\*\\*\\) .+\n\\(---\\) .+\\|\\*\\{15\\}.*\n\\*\\*\\* \\([0-9]+\\),\\(-?[0-9]+\\) \\*\\*\\*\\*\\)$" nil t)
+        (while (and (re-search-forward "^\\(\\(\\*\\*\\*\\) .+\n\\(---\\) .+\\|\\*\\{15\\}.*\n\\*\\*\\* \\([0-9]+\\),\\(-?[0-9]+\\) \\*\\*\\*\\*\\)\\(?: \\(.*\\)\\|$\\)" nil t)
                     (< (point) end))
           (combine-after-change-calls
             (if (match-beginning 2)
@@ -1061,7 +1061,9 @@ With a prefix argument, convert unified format to context format."
                     ;; Variables to use the special undo function.
                     (old-undo buffer-undo-list)
                     (old-end (marker-position end))
-                    (reversible t))
+                    ;; We currently throw away the comment that can follow
+                    ;; the hunk header.  FIXME: Preserve it instead!
+                    (reversible (not (match-end 6))))
                 (replace-match "")
                 (unless (re-search-forward
                          diff-context-mid-hunk-header-re nil t)
@@ -1131,7 +1133,7 @@ With a prefix argument, convert unified format to context format."
   "Reverse the direction of the diffs.
 START and END are either taken from the region (if a prefix arg is given) or
 else cover the whole buffer."
-  (interactive (if (or current-prefix-arg (and transient-mark-mode mark-active))
+  (interactive (if (or current-prefix-arg (use-region-p))
                   (list (region-beginning) (region-end))
                 (list (point-min) (point-max))))
   (unless (markerp end) (setq end (copy-marker end t)))
@@ -1197,7 +1199,7 @@ else cover the whole buffer."
   "Fixup the hunk headers (in case the buffer was modified).
 START and END are either taken from the region (if a prefix arg is given) or
 else cover the whole buffer."
-  (interactive (if (or current-prefix-arg (and transient-mark-mode mark-active))
+  (interactive (if (or current-prefix-arg (use-region-p))
                   (list (region-beginning) (region-end))
                 (list (point-min) (point-max))))
   (let ((inhibit-read-only t))
index 957fe74fdeed82f890c7de6da669857636e47d86..895a9325b7ed85a38cc0ac7b95a57cf3bc2fec06 100755 (executable)
@@ -26,7 +26,10 @@ foo () {
 
     case $toto in
         a) echo 1;; b) echo 2;;
-        c) echo 3;;
+        (c)
+            echo 3;;
+        d)
+            echo 3;;
     esac
     
     case $as_nl`(ac_space=' '; set) 2>&1` in #(