changeset 92038:d48c4ffc9aa2

(vc-status-mark, vc-status-unmark): New functions. (vc-status-mode-map, vc-status-mode-menu): Mark them instead for vc-status-mark-file and vc-status-unmark-file. (vc-status-mark-unmark): New function. (vc-status-previous-line, vc-status-mark-all-files): No longer interactive.
author Dan Nicolaescu <dann@ics.uci.edu>
date Thu, 21 Feb 2008 08:26:00 +0000
parents 6df70fc9b75e
children 12b28703d0a5
files lisp/ChangeLog lisp/vc.el
diffstat 2 files changed, 41 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Thu Feb 21 08:19:05 2008 +0000
+++ b/lisp/ChangeLog	Thu Feb 21 08:26:00 2008 +0000
@@ -1,3 +1,12 @@
+2008-02-21  Dan Nicolaescu  <dann@ics.uci.edu>
+
+	* vc.el (vc-status-mark, vc-status-unmark): New functions.
+	(vc-status-mode-map, vc-status-mode-menu): Mark them instead for
+	vc-status-mark-file and vc-status-unmark-file.
+	(vc-status-mark-unmark): New function.
+	(vc-status-previous-line, vc-status-mark-all-files): No longer
+	interactive.
+
 2008-02-21  Glenn Morris  <rgm@gnu.org>
 
 	* composite.el (encode-composition-rule): Fix typo in error message.
--- a/lisp/vc.el	Thu Feb 21 08:19:05 2008 +0000
+++ b/lisp/vc.el	Thu Feb 21 08:26:00 2008 +0000
@@ -2684,9 +2684,9 @@
   (let ((map (make-keymap)))
     (suppress-keymap map)
     ;; Marking.
-    (define-key map "m" 'vc-status-mark-file)
+    (define-key map "m" 'vc-status-mark)
     (define-key map "M" 'vc-status-mark-all-files)
-    (define-key map "u" 'vc-status-unmark-file)
+    (define-key map "u" 'vc-status-unmark)
     (define-key map "\C-?" 'vc-status-unmark-file-up)
     (define-key map "\M-\C-?" 'vc-status-unmark-all-files)
     ;; Movement.
@@ -2754,11 +2754,11 @@
      :help "Go to the previous line"]
     "----"
     ;; Marking.
-    ["Mark" vc-status-mark-file
+    ["Mark" vc-status-mark
      :help "Mark the current file and move to the next line"]
     ["Marl All" vc-status-mark-all-files
      :help "Mark all files"]
-    ["Unmark" vc-status-unmark-file
+    ["Unmark" vc-status-unmark
      :help "Unmark the current file and move to the next line"]
     ["Unmark previous " vc-status-unmark-file-up
      :help "Move to the previous line and unmark the file"]
@@ -2828,15 +2828,32 @@
   (ewoc-goto-prev vc-status arg)
   (vc-status-move-to-goal-column))
 
+(defun vc-status-mark-unmark (mark-unmark-function)
+  (if (use-region-p)
+      (let ((firstl (line-number-at-pos (region-beginning)))
+	    (lastl (line-number-at-pos (region-end))))
+	(save-excursion
+	  (goto-char (region-beginning))
+	  (while (<= (line-number-at-pos) lastl)
+	    (funcall mark-unmark-function))))
+    (funcall mark-unmark-function)))
+
 (defun vc-status-mark-file ()
-  "Mark the current file and move to the next line."
-  (interactive)
+  ;; Mark the current file and move to the next line.
   (let* ((crt (ewoc-locate vc-status))
          (file (ewoc-data crt)))
     (setf (vc-status-fileinfo->marked file) t)
     (ewoc-invalidate vc-status crt)
     (vc-status-next-line 1)))
 
+(defun vc-status-mark ()
+  "Mark the current file or all files in the region.
+If the region is active, mark all the files in the region.
+Otherwise mark the file on the current line and move to the next
+line."
+  (interactive)
+  (vc-status-mark-unmark 'vc-status-mark-file))
+
 (defun vc-status-mark-all-files ()
   "Mark all files."
   (interactive)
@@ -2848,14 +2865,21 @@
     vc-status))
 
 (defun vc-status-unmark-file ()
-  "Unmark the current file and move to the next line."
-  (interactive)
+  ;; Unmark the current file and move to the next line.
   (let* ((crt (ewoc-locate vc-status))
          (file (ewoc-data crt)))
     (setf (vc-status-fileinfo->marked file) nil)
     (ewoc-invalidate vc-status crt)
     (vc-status-next-line 1)))
 
+(defun vc-status-unmark ()
+  "Unmark the current file or all files in the region.
+If the region is active, unmark all the files in the region.
+Otherwise mark the file on the current line and move to the next
+line."
+  (interactive)
+  (vc-status-mark-unmark 'vc-status-unmark-file))
+
 (defun vc-status-unmark-file-up ()
   "Move to the previous line and unmark the file."
   (interactive)