# HG changeset patch # User Dan Nicolaescu # Date 1203582360 0 # Node ID d48c4ffc9aa23f3dbd3730eca18a8982a76a0baf # Parent 6df70fc9b75efd01ba6c8bd92beb9dd3ce43bc96 (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. diff -r 6df70fc9b75e -r d48c4ffc9aa2 lisp/ChangeLog --- 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 + + * 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 * composite.el (encode-composition-rule): Fix typo in error message. diff -r 6df70fc9b75e -r d48c4ffc9aa2 lisp/vc.el --- 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)