[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/vc-hgcmd f093b75 34/87: Message if hg command is runnin
From: |
Stefan Monnier |
Subject: |
[elpa] externals/vc-hgcmd f093b75 34/87: Message if hg command is running when running another |
Date: |
Sat, 5 Jun 2021 16:11:41 -0400 (EDT) |
branch: externals/vc-hgcmd
commit f093b75422b8a6c2cc41d513aa69670d7125862d
Author: muffinmad <andreyk.mad@gmail.com>
Commit: muffinmad <andreyk.mad@gmail.com>
Message if hg command is running when running another
Instead of infinite loop
---
vc-hgcmd.el | 61 +++++++++++++++++++++++++++++++++----------------------------
1 file changed, 33 insertions(+), 28 deletions(-)
diff --git a/vc-hgcmd.el b/vc-hgcmd.el
index bd75391..81ad5bc 100644
--- a/vc-hgcmd.el
+++ b/vc-hgcmd.el
@@ -177,7 +177,7 @@ same branch was merged."
(defvar vc-hgcmd--process-buffers-by-dir (make-hash-table :test #'equal))
-(cl-defstruct (vc-hgcmd--command (:copier nil)) command output-buffer
result-code wait callback callback-args)
+(cl-defstruct (vc-hgcmd--command (:copier nil)) command output-buffer
result-code wait callback callback-args show-buffer)
(defvar-local vc-hgcmd--current-command nil
"Current running hgcmd command. Future commands will wait until the current
command will finish.")
@@ -301,27 +301,26 @@ Insert output to process buffer and check if amount of
data is enought to parse
(vc-hgcmd-output-mode))
buffer))
-(defun vc-hgcmd--get-output-buffer (&optional command)
- "Get hg output buffer for repo in `default-directory'.
-Insert 'Running command' and display buffer text if COMMAND"
- (let* ((dir (vc-hgcmd--repo-dir))
- (buffer (or (seq-find (lambda (buffer)
- (with-current-buffer buffer
- (and (eq major-mode 'vc-hgcmd-output-mode)
- (equal (abbreviate-file-name
default-directory) dir))))
- (buffer-list))
- (vc-hgcmd--create-output-buffer dir)))
- window-start)
- (when command
- (with-current-buffer buffer
- (let ((inhibit-read-only t))
- (goto-char (point-max))
- (unless (eq (point) (point-min)) (insert "\n"))
- (setq window-start (point))
- (insert (concat "Running \"" (mapconcat #'identity command " ")
"\"...\n"))))
- (let ((window (display-buffer buffer)))
- (when window (set-window-start window window-start))))
- buffer))
+(defun vc-hgcmd--get-output-buffer ()
+ "Get hg output buffer for repo in `default-directory'."
+ (let ((dir (vc-hgcmd--repo-dir)))
+ (or (seq-find (lambda (buffer)
+ (with-current-buffer buffer
+ (and (eq major-mode 'vc-hgcmd-output-mode)
+ (equal (abbreviate-file-name default-directory)
dir))))
+ (buffer-list))
+ (vc-hgcmd--create-output-buffer dir))))
+
+(defun vc-hgcmd--setup-output-buffer (command buffer)
+ "Insert 'Running COMMAND' and display BUFFER."
+ (let ((window (display-buffer buffer)))
+ (with-current-buffer buffer
+ (let ((inhibit-read-only t))
+ (goto-char (point-max))
+ (unless (eq (point) (point-min)) (insert "\n"))
+ (set-window-start window (point))
+ (insert (concat "Running \"" (mapconcat #'identity command " ")
"\"...\n")))))
+ buffer)
(defun vc-hgcmd--prepare-command-to-send (command tty)
"Prepare COMMAND to send to hg process. Escape each character in binary data
with ^V if TTY."
@@ -337,15 +336,20 @@ Insert 'Running command' and display buffer text if
COMMAND"
(let* ((buffer (vc-hgcmd--process-buffer))
(process (get-buffer-process buffer)))
(with-current-buffer buffer
- (while vc-hgcmd--current-command
- (accept-process-output process 0.1 nil t))
+ (when vc-hgcmd--current-command
+ (user-error "Hg command \"%s\" is active" (car
(vc-hgcmd--command-command vc-hgcmd--current-command))))
(when (process-live-p process)
(setq vc-hgcmd--current-command cmd)
- (let ((tty (process-tty-name process)))
+ (let ((output-buffer (vc-hgcmd--command-output-buffer cmd))
+ (tty (process-tty-name process))
+ (command (vc-hgcmd--command-command cmd)))
+ (when (and output-buffer
+ (vc-hgcmd--command-show-buffer cmd))
+ (vc-hgcmd--setup-output-buffer command output-buffer))
(process-send-string process
(concat "runcommand\n"
(vc-hgcmd--prepare-command-to-send
- (vc-hgcmd--command-command cmd) tty)))
+ command tty)))
;; send eof after command data so tty process can read data
(when tty
(process-send-eof process)))
@@ -362,7 +366,7 @@ Insert 'Running command' and display buffer text if COMMAND"
(let ((result (string-trim-right (buffer-string))))
;; TODO min result code for each command that is not error
(if (= (vc-hgcmd--command-result-code cmd) 255)
- (with-current-buffer (vc-hgcmd--get-output-buffer command)
+ (with-current-buffer (vc-hgcmd--setup-output-buffer command
(vc-hgcmd--get-output-buffer))
(goto-char (point-max))
(let ((inhibit-read-only t))
(insert (concat result "\n")))
@@ -390,7 +394,8 @@ Insert 'Running command' and display buffer text if COMMAND"
(vc-hgcmd--run-command
(make-vc-hgcmd--command
:command command
- :output-buffer (vc-hgcmd--get-output-buffer command)
+ :output-buffer (vc-hgcmd--get-output-buffer)
+ :show-buffer t
:callback #'vc-hgcmd--update-callback
:callback-args (current-buffer))))
- [elpa] externals/vc-hgcmd 3e5782c 39/87: Handle unexpected output; Handle non-latin branch/file names, (continued)
- [elpa] externals/vc-hgcmd 3e5782c 39/87: Handle unexpected output; Handle non-latin branch/file names, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd 261ef39 21/87: version 1.3.1, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd 39dddda 22/87: Use relative filename on check status, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd d9bc82c 09/87: fixed typo, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd c05d560 16/87: melpa-stable badge, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd 3b2d060 17/87: Show command output on command error, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd 876f7cb 20/87: Handle nil on reading parents, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd 15c2c27 23/87: Communication with tty process, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd 0bd38be 24/87: User parent info from summary in there are no log, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd e6f1105 25/87: Use relative file names for all commands, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd f093b75 34/87: Message if hg command is running when running another,
Stefan Monnier <=
- [elpa] externals/vc-hgcmd f92c39b 40/87: Fixed regexp, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd 323b4ab 41/87: Option to skip data on error channel, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd d439b43 42/87: Running command indicator in output buffer mode line, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd 3f8c60b 45/87: Create output buffer before actually running command, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd 6379ef2 50/87: process-environment order, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd f87a21d 54/87: next/previous revison respects files, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd adb7cb5 11/87: directories are always registered, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd d30560d 14/87: Melpa badge, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd 7e4fc39 19/87: Custom function to edit initial commit message, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd 4c6b2e7 32/87: Kill process buffer when process terminates, Stefan Monnier, 2021/06/05