[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/bash-completion c6df9be78d 182/313: Store the alist as pro
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/bash-completion c6df9be78d 182/313: Store the alist as process property. |
Date: |
Sat, 3 Dec 2022 10:59:28 -0500 (EST) |
branch: elpa/bash-completion
commit c6df9be78d7d4a53b62291f718edad5bd1ee2f2f
Author: Stephane Zermatten <szermatt@gmx.net>
Commit: Stephane Zermatten <szermatt@gmx.net>
Store the alist as process property.
This change prepares the way to store additional per-process
information, such as the version of the bash command and the value of
COMP_WORDBREAKS. Process property provide a convenient way of doing
that.
---
bash-completion.el | 37 ++++++++++++++++++-------------------
test/bash-completion-test.el | 23 +++++++++++++++++++----
2 files changed, 37 insertions(+), 23 deletions(-)
diff --git a/bash-completion.el b/bash-completion.el
index f0d8fbe54f..d48c808444 100644
--- a/bash-completion.el
+++ b/bash-completion.el
@@ -757,8 +757,7 @@ up the completion environment (COMP_LINE, COMP_POINT,
COMP_WORDS,
COMP_CWORD) and calls compgen.
The result is a list of candidates, which might be empty."
- (let* ((entry (bash-completion-require-process))
- (process (car entry))
+ (let* ((process (bash-completion-require-process))
(completion-status)
(options))
(setq completion-status (bash-completion-send
(bash-completion-generate-line comp) process))
@@ -768,7 +767,7 @@ The result is a list of candidates, which might be empty."
;; just setup completion for the current command and is asking
;; us to retry once with the new configuration.
(bash-completion-send "complete -p" process)
- (setcdr entry (bash-completion-build-alist (process-buffer process)))
+ (process-put process 'complete-p (bash-completion-build-alist
(process-buffer process)))
(bash-completion--customize comp 'nodefault)
(setq completion-status (bash-completion-send
(bash-completion-generate-line comp) process)))
(setq options (bash-completion--options comp))
@@ -1074,12 +1073,11 @@ is set to t."
;; spaces. Noticed in bash_completion v1.872.
(bash-completion-send "function quote_readline { echo \"$1\"; }"
process)
(bash-completion-send "complete -p" process)
- (let ((entry (cons process (bash-completion-build-alist
- (process-buffer process)))))
- (push (cons remote entry)
- bash-completion-processes)
- (setq cleanup nil)
- entry))
+ (process-put process 'complete-p
+ (bash-completion-build-alist (process-buffer
process)))
+ (push (cons remote process) bash-completion-processes)
+ (setq cleanup nil)
+ process)
;; finally
(progn
(setenv "EMACS_BASH_COMPLETE" nil)
@@ -1132,12 +1130,13 @@ The returned alist is a sligthly parsed version of the
output of
alist))
(defun bash-completion--customize (comp &optional nodefault)
- (unless (eq 'command (bash-completion--type comp))
- (let ((bash-completion-alist (cdr (bash-completion-require-process))))
- (let ((command-name (file-name-nondirectory (car (bash-completion--words
comp)))))
- (setf (bash-completion--compgen-args comp)
- (or (cdr (assoc command-name bash-completion-alist))
- (and (not nodefault) (cdr (assoc nil
bash-completion-alist)))))))))
+ (let ((compgen-args-alist
+ (process-get (bash-completion-require-process) 'complete-p))
+ (command-name (file-name-nondirectory
+ (car (bash-completion--words comp)))))
+ (setf (bash-completion--compgen-args comp)
+ (or (cdr (assoc command-name compgen-args-alist))
+ (and (not nodefault) (cdr (assoc nil compgen-args-alist)))))))
(defun bash-completion-generate-line (comp)
"Generate a command-line that calls compgen for COMP.
@@ -1209,7 +1208,7 @@ and would like bash completion in Emacs to take these
changes into account."
(interactive)
(let* ((remote (and default-directory (file-remote-p default-directory)))
(entry (assoc remote bash-completion-processes))
- (proc (cadr entry)))
+ (proc (cdr entry)))
(when proc
(bash-completion-kill proc)
(setq bash-completion-processes (delq entry
bash-completion-processes)))))
@@ -1232,13 +1231,13 @@ and would like bash completion in Emacs to take these
changes into account."
(defun bash-completion-buffer ()
"Return the buffer of the BASH process, create the BASH process if
necessary."
- (process-buffer (car (bash-completion-require-process))))
+ (process-buffer (bash-completion-require-process)))
(defun bash-completion-is-running ()
"Check whether the bash completion process is running."
(let* ((entry (assoc (file-remote-p default-directory)
bash-completion-processes))
- (proc (cadr entry))
+ (proc (cdr entry))
(running (and proc (eq 'run (process-status proc)))))
(unless (and entry running)
(setq bash-completion-processes (delq entry bash-completion-processes)))
@@ -1260,7 +1259,7 @@ of the command in the bash completion process buffer.
Return the status code of the command, as a number."
;; (message commandline)
- (let ((process (or process (car (bash-completion-require-process))))
+ (let ((process (or process (bash-completion-require-process)))
(timeout (or timeout bash-completion-process-timeout)))
(with-current-buffer (process-buffer process)
(erase-buffer)
diff --git a/test/bash-completion-test.el b/test/bash-completion-test.el
index 6a741d1b9f..c11cb959a6 100644
--- a/test/bash-completion-test.el
+++ b/test/bash-completion-test.el
@@ -376,9 +376,14 @@ garbage
(ert-deftest bash-completion-customize-test ()
(cl-letf (((symbol-function 'bash-completion-require-process)
- (lambda () '(nil
- (nil "-F" "__default")
- ("zorg" "-F" "__zorg")))))
+ (lambda () 'process))
+ ((symbol-function 'process-get)
+ (lambda (process prop)
+ (if (and (eq 'process process)
+ (eq 'complete-p prop))
+ '((nil "-F" "__default")
+ ("zorg" "-F" "__zorg"))
+ (error "unexpected call")))))
(let ((comp (bash-completion--make :cword 1)))
(setf (bash-completion--words comp) '("zorg" "world"))
(bash-completion--customize comp)
@@ -713,7 +718,17 @@ before calling `bash-completion-dynamic-complete-nocomint'.
(setq --process-buffer (current-buffer))
(with-temp-buffer
(setq --test-buffer (current-buffer))
- (cl-letf (((symbol-function 'bash-completion-require-process)
(lambda () `(process . ,bash-completion-alist)))
+ (cl-letf (((symbol-function 'bash-completion-require-process)
(lambda () 'process))
+ ((symbol-function 'process-put)
+ (lambda (process prop value)
+ (if (and (eq 'process process) (eq 'complete-p prop))
+ (setq bash-completion-alist value)
+ (error))))
+ ((symbol-function 'process-get)
+ (lambda (process prop)
+ (if (and (eq 'process process) (eq 'complete-p prop))
+ bash-completion-alist
+ (error))))
((symbol-function 'bash-completion-buffer) (lambda ()
--process-buffer))
((symbol-function 'process-buffer) (lambda (p)
--process-buffer))
((symbol-function 'file-accessible-directory-p)
- [nongnu] elpa/bash-completion df635e79fd 310/313: Replace deprecated `cl` package with `cl-lib` (#50), (continued)
- [nongnu] elpa/bash-completion df635e79fd 310/313: Replace deprecated `cl` package with `cl-lib` (#50), ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 8e9c20dbfe 313/313: Replace or quote certain single quotes in docstrings (#55), ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion aa9bea48ba 022/313: fix position, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 6aedd69000 164/313: Delete duplicates when extracting candidates. fixes #26, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 58447c67bf 206/313: Merge the send functions, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion d6c28d3132 302/313: Add a troubleshooting section to README.md, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion d550256e3f 306/313: Disable flakey test for now., ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion a8f7de1e91 173/313: Merge remote-tracking branch 'montag451/remote-shell-support-rebase', ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 9521f79b33 176/313: Display the emacs command run by the tests., ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion fc3f762d16 177/313: Track and support options -o default, filenames and nospace., ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion c6df9be78d 182/313: Store the alist as process property.,
ELPA Syncer <=
- [nongnu] elpa/bash-completion fefe5ae88e 191/313: Introduce bash-completion-remote-prog., ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion d99ad71050 199/313: Add a new option to disable the use of separate processes to perform completion, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion ce59fb017a 202/313: Fallback to the use of a separate process if an error occurs, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 24f78df106 203/313: Improve output handling, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion cc9a3dcab4 204/313: Stop cluttering the Bash history, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 0a6fa499ad 207/313: Fix one parameter name of bash-completion--wait-for-prompt, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 3bd30eea3f 208/313: Use the correct function to send string to completion process, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion fd2f8e277e 211/313: Improve prompt detection, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion ac3bd404e8 220/313: Fix typos (#40), ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion f31bb46ff4 222/313: Making sure that line editing is turned off (#42), ELPA Syncer, 2022/12/03