* bug#25859: 25.1.91; add some branch operations to vc-dir @ 2017-02-24 7:57 Tom Tromey 2017-02-24 8:39 ` Eli Zaretskii ` (2 more replies) 0 siblings, 3 replies; 7+ messages in thread From: Tom Tromey @ 2017-02-24 7:57 UTC (permalink / raw) To: 25859 [-- Attachment #1: Type: text/plain, Size: 362 bytes --] This adds a few branching operations to vc-dir: * create a branch * switch branches * show the commit log of a branch * remember the branch history in a -history variable For the commit log it might nice to show it in a buffer whose name contains the branch name. There's a similar bug I opened about making the *vc-change-log* buffer per-vc-dir-directory. [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: the patch --] [-- Type: text/x-patch, Size: 2547 bytes --] commit 6f9a168c624f20668aa5f32c2926d3690addd543 Author: Tom Tromey <tom@tromey.com> Date: Wed Feb 15 05:19:50 2017 -0700 Add more branch support to vc-dir * lisp/vc/vc-dir.el (vc-dir-mode-map) Add "B" bindings. * lisp/vc/vc.el (vc-revision-history): New defvar. (vc-read-revision): Use vc-revision-history. (vc-print-branch-log): New function. diff --git a/lisp/vc/vc-dir.el b/lisp/vc/vc-dir.el index 21bd21e..0363aab 100644 --- a/lisp/vc/vc-dir.el +++ b/lisp/vc/vc-dir.el @@ -297,6 +297,12 @@ vc-dir-mode-map (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 diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el index 0c8492d..c5fe8aa 100644 --- a/lisp/vc/vc.el +++ b/lisp/vc/vc.el @@ -1757,6 +1757,9 @@ vc-diff-internal ;; 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) @@ -1768,7 +1771,7 @@ vc-read-revision (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 () @@ -2373,6 +2376,17 @@ vc-print-root-log (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. When called interactively with a prefix argument, prompt for REMOTE-LOCATION." [-- Attachment #3: Type: text/plain, Size: 7438 bytes --] Tom In GNU Emacs 25.1.91.2 (x86_64-unknown-linux-gnu, GTK+ Version 3.22.7) of 2017-02-02 built on bapiya Repository revision: 7e02a477bbcabb4e65aeecade79b67357c0b9dae Windowing system distributor 'Fedora Project', version 11.0.11901000 System Description: Fedora release 25 (Twenty Five) Configured using: 'configure --prefix=/home/tromey/Emacs/install/ --with-modules' Configured features: XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GCONF GSETTINGS NOTIFY LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 MODULES Important settings: value of $LANG: en_US.utf8 value of $XMODIFIERS: @im=ibus locale-coding-system: utf-8-unix Major mode: Emacs-Lisp Minor modes in effect: shell-dirtrack-mode: t diff-auto-refine-mode: t flyspell-mode: t which-function-mode: t erc-services-mode: t erc-list-mode: t erc-menu-mode: t erc-autojoin-mode: t erc-ring-mode: t erc-networks-mode: t erc-pcomplete-mode: t erc-track-mode: t erc-match-mode: t erc-netsplit-mode: t erc-hl-nicks-mode: t erc-button-mode: t erc-fill-mode: t erc-stamp-mode: t erc-irccontrols-mode: t erc-noncommands-mode: t erc-move-to-prompt-mode: t erc-readonly-mode: t savehist-mode: t tooltip-mode: t global-eldoc-mode: t eldoc-mode: t electric-indent-mode: t mouse-wheel-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t column-number-mode: t line-number-mode: t auto-fill-function: do-auto-fill transient-mark-mode: t Recent messages: vc-read-revision B TAB is undefined Type C-x 1 to delete the help window. Making completion list... Quit Making completion list... user-error: Beginning of history; no preceding item Quit Mark set When done with a buffer, type C-x # Load-path shadows: /home/tromey/.emacs.d/elpa/debbugs-0.12/debbugs-gnu hides /home/tromey/.emacs.d/elpa/debbugs-0.6/debbugs-gnu /home/tromey/.emacs.d/elpa/debbugs-0.12/debbugs hides /home/tromey/.emacs.d/elpa/debbugs-0.6/debbugs /home/tromey/.emacs.d/elpa/debbugs-0.12/debbugs-pkg hides /home/tromey/.emacs.d/elpa/debbugs-0.6/debbugs-pkg /home/tromey/.emacs.d/elpa/debbugs-0.12/debbugs-autoloads hides /home/tromey/.emacs.d/elpa/debbugs-0.6/debbugs-autoloads /home/tromey/.emacs.d/elpa/debbugs-0.12/debbugs-org hides /home/tromey/.emacs.d/elpa/debbugs-0.6/debbugs-org /home/tromey/.emacs.d/elpa/bubbles-0.5/bubbles hides /home/tromey/Emacs/install/share/emacs/25.1.91/lisp/play/bubbles /home/tromey/.emacs.d/elpa/soap-client-3.1.1/soap-inspect hides /home/tromey/Emacs/install/share/emacs/25.1.91/lisp/net/soap-inspect /home/tromey/.emacs.d/elpa/soap-client-3.1.1/soap-client hides /home/tromey/Emacs/install/share/emacs/25.1.91/lisp/net/soap-client Features: (cmake-mode pcmpl-unix pcmpl-gnu autoconf autoconf-mode tramp-cache markdown-mode ffap dired-aux nndoc gnus-dup debbugs-gnu debbugs soap-client rng-xsd rng-dt rng-util xsd-regexp autoload tar-mode cus-edit highlight-refontification tabify man shadow emacsbug conf-mode two-column iso-transl perl-mode sh-script executable cal-move nnregistry python tramp-sh tramp tramp-compat tramp-loaddefs trampver ucs-normalize make-mode etags cursor-sensor mhtml-mode org-bullets org-element org-rmail org-mhe org-irc org-info org-gnus org-docview doc-view image-mode org-bibtex bibtex org-bbdb org-w3m org org-macro org-footnote org-pcomplete org-list org-faces org-entities org-version ob-emacs-lisp ob ob-tangle ob-ref ob-lob ob-table ob-exp org-src ob-keys ob-comint ob-core ob-eval org-compat org-macs org-loaddefs gnus-fun gnus-draft noutline outline ido skeleton css-mode smie eww url-queue trace find-dired descr-text gdb-shell lisp-mnt url-handlers url-http url-gw url-auth lex edebug debug m4-mode bbdb-sc supercite regi xref project log-edit js json map sgml-mode flow-fill gnus-html xml url-cache mm-url url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf eieio-opt speedbar sb-image ezimage dframe find-func whitespace tcl log-view pcvs-util vc-annotate term/xterm xterm smerge-mode goto-addr shell find-file idutils derived bug-reference cc-mode cc-fonts cc-guess cc-menus cc-cmds jka-compr mailalias mail-hist nnir sort gnus-cite smiley shr-color url-util url-parse url-vars shr dom subr-x browse-url mm-archive gnus-async gnus-bcklg qp gnus-ml disp-table gnus-topic nndraft nnmh nnfolder utf-7 bbdb-gnus bbdb-mua bbdb-com crm network-stream nsm starttls gnus-agent gnus-srvr gnus-score score-mode nnvirtual gnus-msg nntp gnus-cache gnus-registry registry eieio-compat eieio-base gnus-art mm-uu mml2015 mm-view mml-smime smime dig mailcap gnus-sum gnus-group gnus-undo smtpmail gnus-start gnus-cloud nnimap nnmail mail-source tls gnutls utf7 netrc nnoo parse-time gnus-spec gnus-int gnus-range gnus-win gnus gnus-ems nnheader bbdb-message sendmail mail-extr message idna dired rfc822 mml mml-sec epg mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev mail-utils gmm-utils mailheader gud dwarf-mode copyright dabbrev misearch multi-isearch vc-mtn vc-hg vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs add-log rx vc-git diff-mode easy-mmode rust-mode flyspell ispell diminish edmacro kmacro projectile grep compile ibuf-ext ibuffer dash appt diary-lib diary-loaddefs cal-menu calendar cal-loaddefs which-func imenu minimap autorevert filenotify cus-start cus-load status erc-services erc-list erc-menu erc-join erc-ring erc-networks erc-pcomplete pcomplete erc-track erc-match erc-netsplit erc-hl-nicks color erc-button erc-fill erc-stamp wid-edit erc-goodies erc erc-backend erc-compat format-spec auth-source eieio gnus-util mm-util help-fns mail-prsvr password-cache thingatpt pp warnings advice vc-dir ewoc vc vc-dispatcher cc-styles cc-align cc-engine cc-vars cc-defs bbdb bbdb-site timezone ange-ftp comint ansi-color ring server savehist finder-inf dwarf-mode-autoloads gdb-shell-autoloads eieio-core lisppaste-autoloads pydoc-info-autoloads info-look cl-seq cl-macs cl weblogger-autoloads info package epg-config seq byte-opt gv bytecomp byte-compile cl-extra help-mode easymenu cconv cl-loaddefs pcase cl-lib bbdb-loaddefs time-date mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list newcomment elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese charscript case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer cl-preloaded nadvice loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote dbusbind inotify dynamic-setting system-font-setting font-render-setting move-toolbar gtk x-toolkit x multi-tty make-network-process emacs) Memory information: ((conses 16 3515165 445853) (symbols 48 149617 327) (miscs 40 38311 18891) (strings 32 618007 196921) (string-bytes 1 19106128) (vectors 16 140689) (vector-slots 8 3001936 113453) (floats 8 3870 1815) (intervals 56 474274 9464) (buffers 976 535)) ^ permalink raw reply related [flat|nested] 7+ messages in thread
* bug#25859: 25.1.91; add some branch operations to vc-dir 2017-02-24 7:57 bug#25859: 25.1.91; add some branch operations to vc-dir Tom Tromey @ 2017-02-24 8:39 ` Eli Zaretskii 2017-02-25 4:01 ` Tom Tromey 2017-02-24 14:21 ` Dmitry Gutov 2017-02-25 17:48 ` bug#25859: done Tom Tromey 2 siblings, 1 reply; 7+ messages in thread From: Eli Zaretskii @ 2017-02-24 8:39 UTC (permalink / raw) To: Tom Tromey; +Cc: 25859 > From: Tom Tromey <tom@tromey.com> > Date: Fri, 24 Feb 2017 00:57:34 -0700 > > This adds a few branching operations to vc-dir: > > * create a branch > * switch branches > * show the commit log of a branch > * remember the branch history in a -history variable Thanks. This should be mentioned in the manual and in NEWS, I think. ^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#25859: 25.1.91; add some branch operations to vc-dir 2017-02-24 8:39 ` Eli Zaretskii @ 2017-02-25 4:01 ` Tom Tromey 2017-02-25 4:01 ` Tom Tromey 2017-02-25 7:39 ` Eli Zaretskii 0 siblings, 2 replies; 7+ messages in thread From: Tom Tromey @ 2017-02-25 4:01 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Tom Tromey, 25859 [-- Attachment #1: Type: text/plain, Size: 89 bytes --] Eli> This should be mentioned in the manual and in NEWS, I think. How about this? Tom [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: updated patch --] [-- Type: text/x-patch, Size: 4532 bytes --] commit dcc8e941391fe5abed73e81236ad633d15a39352 Author: Tom Tromey <tom@tromey.com> Date: Wed Feb 15 05:19:50 2017 -0700 Add more branch support to vc-dir Bug#25858: * lisp/vc/vc-dir.el (vc-dir-mode-map) Add "B" bindings. * lisp/vc/vc.el (vc-revision-history): New defvar. (vc-read-revision): Use vc-revision-history. (vc-print-branch-log): New function. * doc/emacs/maintaining.texi (VC Directory Commands): Document new bindings. * etc/NEWS: Mention new vc-dir bindings. diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi index faaa960..80a4467 100644 --- a/doc/emacs/maintaining.texi +++ b/doc/emacs/maintaining.texi @@ -1301,7 +1301,7 @@ VC Directory Commands 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} @@ -1332,6 +1332,21 @@ VC Directory Commands 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 diff --git a/etc/NEWS b/etc/NEWS index 9355dff..c46d7f3 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -704,6 +704,10 @@ string is computed dynamically based on 'url-privacy-level'. colorful faces to make it more obvious to the user what the state is. See the 'vc-faces' customization group. +--- +*** 'vc-dir-mode' now has binds 'vc-log-outgoing' to 'O'; and 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. diff --git a/lisp/vc/vc-dir.el b/lisp/vc/vc-dir.el index 21bd21e..0363aab 100644 --- a/lisp/vc/vc-dir.el +++ b/lisp/vc/vc-dir.el @@ -297,6 +297,12 @@ vc-dir-mode-map (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 diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el index 0c8492d..c5fe8aa 100644 --- a/lisp/vc/vc.el +++ b/lisp/vc/vc.el @@ -1757,6 +1757,9 @@ vc-diff-internal ;; 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) @@ -1768,7 +1771,7 @@ vc-read-revision (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 () @@ -2373,6 +2376,17 @@ vc-print-root-log (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. When called interactively with a prefix argument, prompt for REMOTE-LOCATION." ^ permalink raw reply related [flat|nested] 7+ messages in thread
* bug#25859: 25.1.91; add some branch operations to vc-dir 2017-02-25 4:01 ` Tom Tromey @ 2017-02-25 4:01 ` Tom Tromey 2017-02-25 7:39 ` Eli Zaretskii 1 sibling, 0 replies; 7+ messages in thread From: Tom Tromey @ 2017-02-25 4:01 UTC (permalink / raw) To: Tom Tromey; +Cc: 25859 Tom> How about this? [...] Tom> Bug#25858: I had the wrong number in the commit message -- I've updated it already. Tom ^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#25859: 25.1.91; add some branch operations to vc-dir 2017-02-25 4:01 ` Tom Tromey 2017-02-25 4:01 ` Tom Tromey @ 2017-02-25 7:39 ` Eli Zaretskii 1 sibling, 0 replies; 7+ messages in thread From: Eli Zaretskii @ 2017-02-25 7:39 UTC (permalink / raw) To: Tom Tromey; +Cc: 25859 > From: Tom Tromey <tom@tromey.com> > Cc: Tom Tromey <tom@tromey.com>, 25859@debbugs.gnu.org > Date: Fri, 24 Feb 2017 21:01:03 -0700 > > Eli> This should be mentioned in the manual and in NEWS, I think. > > How about this? LGTM, thanks. > diff --git a/etc/NEWS b/etc/NEWS > index 9355dff..c46d7f3 100644 > --- a/etc/NEWS > +++ b/etc/NEWS > @@ -704,6 +704,10 @@ string is computed dynamically based on 'url-privacy-level'. > colorful faces to make it more obvious to the user what the state is. > See the 'vc-faces' customization group. > > +--- This should be all pluses, since the manual already has this documented. > +*** 'vc-dir-mode' now has binds 'vc-log-outgoing' to 'O'; and various ^^^ ^ That "has" should be moved to the indicated place. ^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#25859: 25.1.91; add some branch operations to vc-dir 2017-02-24 7:57 bug#25859: 25.1.91; add some branch operations to vc-dir Tom Tromey 2017-02-24 8:39 ` Eli Zaretskii @ 2017-02-24 14:21 ` Dmitry Gutov 2017-02-25 17:48 ` bug#25859: done Tom Tromey 2 siblings, 0 replies; 7+ messages in thread From: Dmitry Gutov @ 2017-02-24 14:21 UTC (permalink / raw) To: Tom Tromey, 25859 On 24.02.2017 09:57, Tom Tromey wrote: > > This adds a few branching operations to vc-dir: > > * create a branch > * switch branches > * show the commit log of a branch > * remember the branch history in a -history variable > > For the commit log it might nice to show it in a buffer whose name > contains the branch name. There's a similar bug I opened about making > the *vc-change-log* buffer per-vc-dir-directory. Looks great to me, code-wise. Thanks! ^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#25859: done 2017-02-24 7:57 bug#25859: 25.1.91; add some branch operations to vc-dir Tom Tromey 2017-02-24 8:39 ` Eli Zaretskii 2017-02-24 14:21 ` Dmitry Gutov @ 2017-02-25 17:48 ` Tom Tromey 2 siblings, 0 replies; 7+ messages in thread From: Tom Tromey @ 2017-02-25 17:48 UTC (permalink / raw) To: 25859-done Patch checked in. Tom ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2017-02-25 17:48 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-02-24 7:57 bug#25859: 25.1.91; add some branch operations to vc-dir Tom Tromey 2017-02-24 8:39 ` Eli Zaretskii 2017-02-25 4:01 ` Tom Tromey 2017-02-25 4:01 ` Tom Tromey 2017-02-25 7:39 ` Eli Zaretskii 2017-02-24 14:21 ` Dmitry Gutov 2017-02-25 17:48 ` bug#25859: done Tom Tromey
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).