[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/bash-completion 47a890dd72 010/313: launch process, send c
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/bash-completion 47a890dd72 010/313: launch process, send commands |
Date: |
Sat, 3 Dec 2022 10:59:07 -0500 (EST) |
branch: elpa/bash-completion
commit 47a890dd721a9fa80ff94840b05cf0c3d8261369
Author: Stephane Zermatten <szermatt@gmx.net>
Commit: Stephane Zermatten <szermatt@gmx.net>
launch process, send commands
---
bash-complete.el | 39 +++++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)
diff --git a/bash-complete.el b/bash-complete.el
index 0a2567d88d..e102496f33 100644
--- a/bash-complete.el
+++ b/bash-complete.el
@@ -1,6 +1,10 @@
(require 'comint)
+(defvar bash-complete-executable "bash"
+ "Command-line to execute bash")
+(defvar bash-complete-process-timeout 2.5)
+
(defvar bash-complete-process nil
"Bash process object")
(defvar bash-complete-alist nil
@@ -119,6 +123,41 @@ The result is a list of candidates, which might be empty."
)
+(defun bash-complete-require-process ()
+ ;; TODO(szermatt): if this fails, kill process and complain
+ (unless (bash-complete-is-running)
+ (setq bash-complete-process
+ (start-process
+ "*bash-complete*"
+ "*bash-complete*"
+ bash-complete-executable
+ "--noediting"))
+ (set-process-query-on-exit-flag bash-complete-process nil)
+ (bash-complete-send "PS1='\v'")
+ (bash-complete-send "complete -p")
+ (bash-complete-build-alist (process-buffer bash-complete-process)))
+ bash-complete-process)
+
+(defun bash-complete-kill-process ()
+ (when (bash-complete-is-running)
+ (kill-process bash-complete-process)))
+
+(defun bash-complete-buffer ()
+ (process-buffer (bash-complete-require-process)))
+
+(defun bash-complete-is-running ()
+ (and bash-complete-process (eq 'run (process-status bash-complete-process))))
+
+(defun bash-complete-send (commandline)
+ (with-current-buffer (bash-complete-buffer)
+ (erase-buffer)
+ (process-send-string bash-complete-process (concat commandline "\n"))
+ (while (not (progn (goto-char 1) (search-forward "\v" nil t)))
+ (unless (accept-process-output bash-complete-process
bash-complete-process-timeout)
+ (error "Timeout while waiting for an answer from bash-complete
process")))
+ (goto-char (point-max))
+ (delete-backward-char 1)))
+
(defun bash-complete-build-alist (buffer)
"Build `bash-complete-alist' with the content of BUFFER.
- [nongnu] branch elpa/bash-completion created (now 8e9c20dbfe), ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 7dc290e1c7 003/313: exclude quotes from result, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 540f8f516a 011/313: build bash cmdline, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 6eebe8f965 016/313: cleaned up process launch, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 34d11220dd 024/313: add prefix if missing, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 3036ef0394 028/313: disable quote_readline to get good whitespace handling for bash 3.2 at least, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion ba83e81651 053/313: bash-completion-generate-line, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion f7bfc68ea2 001/313: bash completion, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion f5885ec87a 002/313: test case for bash-complete, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 208cb5ab76 007/313: Join, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 47a890dd72 010/313: launch process, send commands,
ELPA Syncer <=
- [nongnu] elpa/bash-completion 53f2c5d30e 009/313: parse complete -p output, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 11e52fce6f 018/313: Fixed initialization, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion c10cfef5b8 015/313: complex line split, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion b5c2fbf4a2 014/313: add hooks, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 9eb026ae0b 025/313: fixed current directory for adding slash, workaround for bash ~ expansion, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 02d1acf260 030/313: wordbreaks, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 5931a2ba43 037/313: completion-fix, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion a78fd6b587 044/313: turn off mailwarn and checkjobs, continue if this failed, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 0ffaad3ef0 035/313: wordbreak-split, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 80cd654c35 043/313: turn off mailwarn and checkjobs, continue if this failed, ELPA Syncer, 2022/12/03