emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] Changes to emacs/lisp/vc.el,v


From: Dan Nicolaescu
Subject: [Emacs-diffs] Changes to emacs/lisp/vc.el,v
Date: Thu, 21 Feb 2008 08:26:02 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     Dan Nicolaescu <dann>   08/02/21 08:26:01

Index: vc.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/vc.el,v
retrieving revision 1.537
retrieving revision 1.538
diff -u -b -r1.537 -r1.538
--- vc.el       20 Feb 2008 18:11:15 -0000      1.537
+++ vc.el       21 Feb 2008 08:26:00 -0000      1.538
@@ -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)




reply via email to

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