The VC Directory buffer also defines some single-key shortcuts for
VC commands with the @kbd{C-x v} prefix: @kbd{=}, @kbd{+}, @kbd{l},
-@kbd{i}, @kbd{D}, @kbd{L}, @kbd{G}, @kbd{I} and @kbd{v}.
+@kbd{i}, @kbd{D}, @kbd{L}, @kbd{G}, @kbd{I}, @kbd{O}, and @kbd{v}.
For example, you can commit a set of edited files by opening a VC
Directory buffer, where the files are listed with the @samp{edited}
Apart from acting on multiple files, these commands behave much like
their single-buffer counterparts (@pxref{Search}).
+ The VC Directory buffer additionally defines some branch-related
+commands starting with the prefix @kbd{B}:
+
+@table @kbd
+@item B c
+Create a new branch (@code{vc-create-tag}).
+
+@item B l
+Prompt for the name of a branch and display the change history of that
+branch (@code{vc-print-branch-log}).
+
+@item B s
+Switch to a branch (@code{vc-retrieve-tag}). @xref{Switching Branches}.
+@end table
+
@cindex stashes in version control
@cindex shelves in version control
The above commands are also available via the menu bar, and via a
colorful faces to make it more obvious to the user what the state is.
See the 'vc-faces' customization group.
++++
+*** 'vc-dir-mode' now binds 'vc-log-outgoing' to 'O'; and has various
+branch-related commands on a keymap bound to 'B'.
+
** CC mode
*** Opening a .h file will turn C or C++ mode depending on language used.
(define-key map (kbd "M-s a M-C-s") 'vc-dir-isearch-regexp)
(define-key map "G" 'vc-dir-ignore)
+ (let ((branch-map (make-sparse-keymap)))
+ (define-key map "B" branch-map)
+ (define-key branch-map "c" 'vc-create-tag)
+ (define-key branch-map "l" 'vc-print-branch-log)
+ (define-key branch-map "s" 'vc-retrieve-tag))
+
;; Hook up the menu.
(define-key map [menu-bar vc-dir-mode]
`(menu-item
;; because we don't know that yet.
t)))
+(defvar vc-revision-history nil
+ "History for `vc-read-revision'.")
+
(defun vc-read-revision (prompt &optional files backend default initial-input)
(cond
((null files)
(vc-call-backend backend 'revision-completion-table files)))
(if completion-table
(completing-read prompt completion-table
- nil nil initial-input nil default)
+ nil nil initial-input 'vc-revision-history default)
(read-string prompt initial-input nil default))))
(defun vc-diff-build-argument-list-internal ()
(setq default-directory rootdir)
(vc-print-log-internal backend (list rootdir) nil nil limit)))
+;;;###autoload
+(defun vc-print-branch-log (branch)
+ (interactive
+ (list
+ (vc-read-revision "Branch to log: ")))
+ (when (equal branch "")
+ (error "No branch specified"))
+ (vc-print-log-internal (vc-responsible-backend default-directory)
+ (list default-directory) branch t
+ (when (> vc-log-show-limit 0) vc-log-show-limit)))
+
;;;###autoload
(defun vc-log-incoming (&optional remote-location)
"Show a log of changes that will be received with a pull operation from REMOTE-LOCATION.