[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/vc-hgcmd 4556145 31/87: create hg process once
From: |
Stefan Monnier |
Subject: |
[elpa] externals/vc-hgcmd 4556145 31/87: create hg process once |
Date: |
Sat, 5 Jun 2021 16:11:40 -0400 (EDT) |
branch: externals/vc-hgcmd
commit 4556145c76bc91e767565b5a33cbdae08b27a7bf
Author: muffinmad <andreyk.mad@gmail.com>
Commit: muffinmad <andreyk.mad@gmail.com>
create hg process once
---
vc-hgcmd.el | 60 +++++++++++++++++++++++++++++-------------------------------
1 file changed, 29 insertions(+), 31 deletions(-)
diff --git a/vc-hgcmd.el b/vc-hgcmd.el
index be263cd..348a49a 100644
--- a/vc-hgcmd.el
+++ b/vc-hgcmd.el
@@ -204,32 +204,31 @@ same branch was merged."
Insert output to process buffer and check if amount of data is enought to
parse it to output buffer."
(let ((buffer (process-buffer process)))
(when (buffer-live-p buffer)
- (let* ((current-command (with-current-buffer buffer
vc-hgcmd--current-command))
- (output-buffer (vc-hgcmd--command-output-buffer current-command)))
- (when output-buffer
- (with-current-buffer buffer
- (goto-char (point-max))
- (let ((inhibit-read-only t)) (insert output))
- (while
- (let ((data (vc-hgcmd--read-output)))
- (when data
- (let ((channel (car data))
- (data (cdr data)))
- (with-current-buffer output-buffer
- (let ((inhibit-read-only t))
- (goto-char (point-max))
- (cond ((or (eq channel ?e) (eq channel ?o))
- (insert (decode-coding-string
(bindat-get-field (bindat-unpack `((f str ,(length data))) data) 'f) 'utf-8)))
- ((eq channel ?r)
- (setf (vc-hgcmd--command-result-code
current-command) (bindat-get-field (bindat-unpack `((f u32)) data) 'f))
- (with-current-buffer buffer (setq
vc-hgcmd--current-command nil))
- (let ((callback (vc-hgcmd--command-callback
current-command))
- (args (vc-hgcmd--command-callback-args
current-command)))
- (when callback
- (if args (funcall callback args) (funcall
callback)))))
- ;; TODO: cmdserver clients must handle I and L
channels
- (t (error (format "unknown channel %c\n"
channel)))))))
- t)))))))))
+ (with-current-buffer buffer
+ (goto-char (point-max))
+ (let ((inhibit-read-only t)) (insert output))
+ (let* ((current-command (or (with-current-buffer buffer
vc-hgcmd--current-command)
+ (error "Hgcmd process output without
command: %s" output))))
+ (while
+ (let ((data (vc-hgcmd--read-output)))
+ (when data
+ (let ((channel (car data))
+ (data (cdr data)))
+ (with-current-buffer (vc-hgcmd--command-output-buffer
current-command)
+ (let ((inhibit-read-only t))
+ (goto-char (point-max))
+ (cond ((or (eq channel ?e) (eq channel ?o))
+ (insert (decode-coding-string (bindat-get-field
(bindat-unpack `((f str ,(length data))) data) 'f) 'utf-8)))
+ ((eq channel ?r)
+ (setf (vc-hgcmd--command-result-code
current-command) (bindat-get-field (bindat-unpack `((f u32)) data) 'f))
+ (with-current-buffer buffer (setq
vc-hgcmd--current-command nil))
+ (let ((callback (vc-hgcmd--command-callback
current-command))
+ (args (vc-hgcmd--command-callback-args
current-command)))
+ (when callback
+ (if args (funcall callback args) (funcall
callback)))))
+ ;; TODO: cmdserver clients must handle I and L
channels
+ (t (error (format "unknown channel %c\n"
channel)))))))
+ t))))))))
(defun vc-hgcmd--check-buffer-process (buffer)
"Create hg cmdserver process in BUFFER if needed."
@@ -274,6 +273,7 @@ Insert output to process buffer and check if amount of data
is enought to parse
(with-current-buffer buffer
(setq default-directory dir)
(vc-hgcmd-process-mode))
+ (vc-hgcmd--check-buffer-process buffer)
buffer))
(defun vc-hgcmd--get-process-buffer (dir)
@@ -283,11 +283,9 @@ Insert output to process buffer and check if amount of
data is enought to parse
(defun vc-hgcmd--process-buffer ()
"Get hg cmdserver process buffer for repo in `default-directory'."
- (let* ((dir (vc-hgcmd--repo-dir))
- (buffer (or (vc-hgcmd--get-process-buffer dir)
- (puthash dir (vc-hgcmd--create-process-buffer dir)
vc-hgcmd--process-buffers-by-dir))))
- (when buffer (vc-hgcmd--check-buffer-process buffer))
- buffer))
+ (let* ((dir (vc-hgcmd--repo-dir)))
+ (or (vc-hgcmd--get-process-buffer dir)
+ (puthash dir (vc-hgcmd--create-process-buffer dir)
vc-hgcmd--process-buffers-by-dir))))
(defun vc-hgcmd--create-output-buffer (dir)
"Create hg output buffer for repo in DIR."
- [elpa] externals/vc-hgcmd 9098970 05/87: removed unused format variable, (continued)
- [elpa] externals/vc-hgcmd 9098970 05/87: removed unused format variable, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd 0bfb041 04/87: Package-lint issues fixed, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd ca11232 08/87: fixed typos, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd 8951533 18/87: Notes about installing from melpa, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd c95696f 15/87: Graph log for branch or root log, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd f48b82b 26/87: Filename must be relative to vc root, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd e39d484 29/87: fail gracefully if hg executable is absent, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd aef3092 27/87: vc registered for symlinks fixed, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd e47e11b 28/87: don't pass relative file names to vc-state, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd 88452e2 30/87: indentation, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd 4556145 31/87: create hg process once,
Stefan Monnier <=
- [elpa] externals/vc-hgcmd c62c14e 33/87: Use process-send-eof for pty processes, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd 5416977 36/87: command callback must be called in output buffer, Stefan Monnier, 2021/06/05
- [elpa] externals/vc-hgcmd 088aaa4 37/87: lazy completion table on branch merge, Stefan Monnier, 2021/06/05
- [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