summaryrefslogtreecommitdiff
path: root/lisp/vc/vc-dir.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/vc/vc-dir.el')
-rw-r--r--lisp/vc/vc-dir.el36
1 files changed, 24 insertions, 12 deletions
diff --git a/lisp/vc/vc-dir.el b/lisp/vc/vc-dir.el
index be3b1fa94b5..c90bf1c2343 100644
--- a/lisp/vc/vc-dir.el
+++ b/lisp/vc/vc-dir.el
@@ -169,6 +169,9 @@ See `run-hooks'."
(define-key map [ise]
'(menu-item "Isearch Files..." vc-dir-isearch
:help "Incremental search a string in the marked files"))
+ (define-key map [display]
+ '(menu-item "Display in Other Window" vc-dir-display-file
+ :help "Display the file on the current line, in another window"))
(define-key map [open-other]
'(menu-item "Open in Other Window" vc-dir-find-file-other-window
:help "Find the file on the current line, in another window"))
@@ -273,6 +276,7 @@ See `run-hooks'."
(define-key map "e" 'vc-dir-find-file) ; dired-mode compatibility
(define-key map "\C-m" 'vc-dir-find-file)
(define-key map "o" 'vc-dir-find-file-other-window)
+ (define-key map "\C-o" 'vc-dir-display-file)
(define-key map "\C-c\C-c" 'vc-dir-kill-dir-status-process)
(define-key map [down-mouse-3] 'vc-dir-menu)
(define-key map [mouse-2] 'vc-dir-toggle-mark)
@@ -755,6 +759,13 @@ that share the same state."
(if event (posn-set-point (event-end event)))
(find-file-other-window (vc-dir-current-file)))
+(defun vc-dir-display-file (&optional event)
+ "Display the file on the current line, in another window."
+ (interactive (list last-nonmenu-event))
+ (if event (posn-set-point (event-end event)))
+ (display-buffer (find-file-noselect (vc-dir-current-file))
+ t))
+
(defun vc-dir-isearch ()
"Search for a string through all marked buffers using Isearch."
(interactive)
@@ -1014,7 +1025,7 @@ specific headers."
(vc-call-backend backend 'dir-extra-headers dir)
"\n"))
-(defun vc-dir-refresh-files (files default-state)
+(defun vc-dir-refresh-files (files)
"Refresh some files in the *VC-dir* buffer."
(let ((def-dir default-directory)
(backend vc-dir-backend))
@@ -1032,7 +1043,7 @@ specific headers."
(setq default-directory def-dir)
(erase-buffer)
(vc-call-backend
- backend 'dir-status-files def-dir files default-state
+ backend 'dir-status-files def-dir files
(lambda (entries &optional more-to-come)
;; ENTRIES is a list of (FILE VC_STATE EXTRA) items.
;; If MORE-TO-COME is true, then more updates will come from
@@ -1097,7 +1108,7 @@ Throw an error if another update process is in progress."
(setq default-directory def-dir)
(erase-buffer)
(vc-call-backend
- backend 'dir-status def-dir
+ backend 'dir-status-files def-dir nil
(lambda (entries &optional more-to-come)
;; ENTRIES is a list of (FILE VC_STATE EXTRA) items.
;; If MORE-TO-COME is true, then more updates will come from
@@ -1110,8 +1121,7 @@ Throw an error if another update process is in progress."
vc-ewoc 'vc-dir-fileinfo->needs-update)))
(if remaining
(vc-dir-refresh-files
- (mapcar 'vc-dir-fileinfo->name remaining)
- 'up-to-date)
+ (mapcar 'vc-dir-fileinfo->name remaining))
(setq mode-line-process nil))))))))))))
(defun vc-dir-show-fileentry (file)
@@ -1125,18 +1135,18 @@ outside of VC) and one wants to do some operation on it."
"Hide items that are in STATE from display.
See `vc-state' for valid values of STATE.
-If STATE is nil, default it to up-to-date.
+If STATE is nil, hide both `up-to-date' and `ignored' items.
Interactively, if `current-prefix-arg' is non-nil, set STATE to
-state of item at point. Otherwise, set STATE to up-to-date."
+state of item at point, if any."
(interactive (list
(and current-prefix-arg
;; Command is prefixed. Infer STATE from point.
(let ((node (ewoc-locate vc-ewoc)))
(and node (vc-dir-fileinfo->state (ewoc-data node)))))))
- ;; If STATE is un-specified, use up-to-date.
- (setq state (or state 'up-to-date))
- (message "Hiding items in state \"%s\"" state)
+ (if state
+ (message "Hiding items in state \"%s\"" state)
+ (message "Hiding up-to-date and ignored items"))
(let ((crt (ewoc-nth vc-ewoc -1))
(first (ewoc-nth vc-ewoc 0)))
;; Go over from the last item to the first and remove the
@@ -1157,8 +1167,10 @@ state of item at point. Otherwise, set STATE to up-to-date."
;; Next item is a directory.
(vc-dir-fileinfo->directory (ewoc-data next))))
;; Remove files in specified STATE. STATE can be a
- ;; symbol or a user-name.
- (equal (vc-dir-fileinfo->state data) state))
+ ;; symbol, a user-name, or nil.
+ (if state
+ (equal (vc-dir-fileinfo->state data) state)
+ (memq (vc-dir-fileinfo->state data) '(up-to-date ignored))))
(ewoc-delete vc-ewoc crt))
(setq crt prev)))))