Function: vc-hg--pushpull
vc-hg--pushpull is a byte-compiled function defined in vc-hg.el.gz.
Signature
(vc-hg--pushpull COMMAND PROMPT POST-PROCESSING &optional OBSOLETE)
Documentation
Run COMMAND (a string; either push or pull) on the current Hg branch.
If PROMPT is non-nil, prompt for the Hg command to run. POST-PROCESSING is a list of commands to execute after the command. If OBSOLETE is non-nil, behave like the old versions of the Hg push/pull commands: when called interactively in a Log View buffer with marked revisions, fetch only those revisions.
Source Code
;; Defined in /usr/src/emacs/lisp/vc/vc-hg.el.gz
(defvar compilation-arguments) ; defined in compile.el
(defun vc-hg--pushpull (command prompt post-processing &optional obsolete)
"Run COMMAND (a string; either push or pull) on the current Hg branch.
If PROMPT is non-nil, prompt for the Hg command to run.
POST-PROCESSING is a list of commands to execute after the command.
If OBSOLETE is non-nil, behave like the old versions of the Hg push/pull
commands: when called interactively in a Log View buffer with marked
revisions, fetch only those revisions."
(let (marked-list)
;; The `vc-hg-pull' and `vc-hg-push' commands existed before the
;; `pull'/`push' VC actions were implemented.
;; The following is for backwards compatibility.
(if (and obsolete (setq marked-list (log-view-get-marked)))
(apply #'vc-hg-command
nil 0 nil
command
(apply #'nconc
(mapcar (lambda (arg) (list "-r" arg)) marked-list)))
(let* ((root (vc-hg-root default-directory))
(buffer (format "*vc-hg : %s*" (expand-file-name root)))
;; Disable pager.
(process-environment (cons "HGPLAIN=1" process-environment))
(hg-program vc-hg-program)
args)
;; If necessary, prompt for the exact command.
;; TODO if pushing, prompt if no default push location - cf bzr.
(when prompt
(setq args (split-string
(read-shell-command
(format "Hg %s command: " command)
(format "%s %s" hg-program command)
'vc-hg-history)
" " t))
(setq hg-program (car args)
command (cadr args)
args (cddr args)))
(set-process-query-on-exit-flag
(apply #'vc-do-async-command buffer root hg-program command args)
t)
(with-current-buffer buffer
(vc-run-delayed
(dolist (cmd post-processing)
(apply #'vc-do-command buffer nil hg-program nil cmd))
(vc-compilation-mode 'hg)
(setq-local compile-command
(concat hg-program " " command " "
(mapconcat #'identity args " ")
(mapconcat (lambda (args)
(concat " && " hg-program " "
(mapconcat #'identity
args " ")))
post-processing "")))
(setq-local compilation-directory root)
;; Either set `compilation-buffer-name-function' locally to nil
;; or use `compilation-arguments' to set `name-function'.
;; See `compilation-buffer-name'.
(setq-local compilation-arguments
(list compile-command nil
(lambda (_name-of-mode) buffer)
nil))))
(vc-set-async-update buffer)))))