emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/bash-completion e7869dd68d 200/313: Fix a bug when no proc


From: ELPA Syncer
Subject: [nongnu] elpa/bash-completion e7869dd68d 200/313: Fix a bug when no process is associated with the current buffer
Date: Sat, 3 Dec 2022 10:59:30 -0500 (EST)

branch: elpa/bash-completion
commit e7869dd68dd4690a8536d9977c282af46fbbf955
Author: montag451 <montag451@laposte.net>
Commit: montag451 <montag451@laposte.net>

    Fix a bug when no process is associated with the current buffer
    
    When `bash-completion-use-separate-processes' is nil and no buffer is
    associated with the current buffer, use a separate completion
    process.
---
 bash-completion.el | 42 ++++++++++++++++++++++++++----------------
 1 file changed, 26 insertions(+), 16 deletions(-)

diff --git a/bash-completion.el b/bash-completion.el
index 881810df2c..480f48b776 100644
--- a/bash-completion.el
+++ b/bash-completion.el
@@ -487,21 +487,31 @@ Returns (list stub-start stub-end completions) with
    or a function, if DYNAMIC-TABLE is non-nil, a lambda such as the one
    returned by `completion-table-dynamic'"
   (when bash-completion-enabled
-    (let* ((process (bash-completion-require-process))
-           (comp (bash-completion--parse
-                  comp-start comp-pos
-                  (process-get process 'wordbreaks)
-                  (process-get process 'bash-major-version)))
-          (stub-start (bash-completion--stub-start comp)))
-      (bash-completion--customize comp process)
-      (list
-       stub-start
-       comp-pos
-       (if dynamic-table
-           (bash-completion--completion-table-with-cache
-            (lambda (_)
-              (bash-completion-comm comp process)))
-         (bash-completion-comm comp process))))))
+    (let ((bash-completion-use-separate-processes
+           bash-completion-use-separate-processes)
+          (process (bash-completion-require-process)))
+      (when (and (not process) (not bash-completion-use-separate-processes))
+        ;; no process associated with the current buffer, create a
+        ;; separate completion process
+        (setq bash-completion-use-separate-processes t)
+        (setq process (bash-completion-require-process)))
+      (let* ((comp (bash-completion--parse
+                    comp-start comp-pos
+                    (process-get process 'wordbreaks)
+                    (process-get process 'bash-major-version)))
+             (stub-start (bash-completion--stub-start comp))
+             (use-separate-processes bash-completion-use-separate-processes))
+        (bash-completion--customize comp process)
+        (list
+         stub-start
+         comp-pos
+         (if dynamic-table
+             (bash-completion--completion-table-with-cache
+              (lambda (_)
+                (let ((bash-completion-use-separate-processes
+                       use-separate-processes))
+                  (bash-completion-comm comp process))))
+           (bash-completion-comm comp process)))))))
 
 (defun bash-completion--find-last (elt array)
   "Return the position of the last intance of ELT in array or nil."
@@ -1103,7 +1113,7 @@ is set to t."
 (defun bash-completion--require-same-process ()
   "Setup the process associated with the current buffer and return it."
   (let ((process (get-buffer-process (current-buffer))))
-    (unless (process-get process 'complete-p)
+    (unless (or (not process) (process-get process 'complete-p))
       (bash-completion--setup-bash-common process))
     process))
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]