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

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

[elpa] externals/corfu 6f619d6 1/2: corfu-mode: Do not add the completio


From: Protesilaos Stavrou
Subject: [elpa] externals/corfu 6f619d6 1/2: corfu-mode: Do not add the completion-in-region-mode hook
Date: Fri, 7 May 2021 07:18:36 -0400 (EDT)

branch: externals/corfu
commit 6f619d6aa93ce18f3ef7fce6bbc6696cbfd7517c
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>

    corfu-mode: Do not add the completion-in-region-mode hook
    
    See #20
---
 corfu.el | 60 +++++++++++++++++++++++++++++-------------------------------
 1 file changed, 29 insertions(+), 31 deletions(-)

diff --git a/corfu.el b/corfu.el
index e4059ce..f7ec8e7 100644
--- a/corfu.el
+++ b/corfu.el
@@ -667,39 +667,39 @@ Set to nil in order to disable confirmation."
 
 (defun corfu--setup ()
   "Setup Corfu completion state."
-  (setq corfu--extra-properties completion-extra-properties)
-  (setcdr (assq #'completion-in-region-mode minor-mode-overriding-map-alist) 
corfu-map)
-  (add-hook 'pre-command-hook #'corfu--pre-command-hook nil 'local)
-  (add-hook 'post-command-hook #'corfu--post-command-hook nil 'local))
+  (when completion-in-region-mode
+    (setq corfu--extra-properties completion-extra-properties)
+    (setcdr (assq #'completion-in-region-mode minor-mode-overriding-map-alist) 
corfu-map)
+    (add-hook 'pre-command-hook #'corfu--pre-command-hook nil 'local)
+    (add-hook 'post-command-hook #'corfu--post-command-hook nil 'local)
+    (add-hook 'completion-in-region-mode-hook #'corfu--teardown nil 'local)))
 
 (defun corfu--teardown ()
   "Teardown Corfu."
-  (corfu--popup-hide)
-  (remove-hook 'pre-command-hook #'corfu--pre-command-hook 'local)
-  (remove-hook 'post-command-hook #'corfu--post-command-hook 'local)
-  (when corfu--overlay (delete-overlay corfu--overlay))
-  (mapc #'kill-local-variable corfu--state-vars))
-
-(defun corfu--mode-hook ()
-  "Corfu mode hook."
-  (if completion-in-region-mode
-      (corfu--setup)
-    (corfu--teardown)))
+  (unless completion-in-region-mode
+    (corfu--popup-hide)
+    (remove-hook 'pre-command-hook #'corfu--pre-command-hook 'local)
+    (remove-hook 'post-command-hook #'corfu--post-command-hook 'local)
+    (remove-hook 'completion-in-region-mode-hook #'corfu--teardown 'local)
+    (when corfu--overlay (delete-overlay corfu--overlay))
+    (mapc #'kill-local-variable corfu--state-vars)))
 
 (defun corfu--completion-in-region (&rest args)
   "Corfu completion in region function passing ARGS to 
`completion--in-region'."
   (if (and (not emacs-basic-display) (display-graphic-p))
-      (let ((completion-show-inline-help)
-            (completion-auto-help)
-            ;; XXX Disable original predicate check, keep completion alive when
-            ;; popup is shown. Since the predicate is set always, it is ensured
-            ;; that `completion-in-region-mode' is turned on.
-            (completion-in-region-mode-predicate (lambda () t)))
-        ;; Prevent restarting the completion. This can happen for example if 
C-M-/
-        ;; (`dabbrev-completion') is pressed while the Corfu popup is already 
open.
-        (when (and completion-in-region-mode (not completion-cycling))
-          (user-error "Completion is already in progress"))
-        (apply #'completion--in-region args))
+      ;; Prevent restarting the completion. This can happen for example if 
C-M-/
+      ;; (`dabbrev-completion') is pressed while the Corfu popup is already 
open.
+      (if (and completion-in-region-mode (not completion-cycling))
+          (user-error "Completion is already in progress")
+        (prog1
+            (let ((completion-show-inline-help)
+                  (completion-auto-help)
+                  ;; XXX Disable original predicate check, keep completion 
alive when
+                  ;; popup is shown. Since the predicate is set always, it is 
ensured
+                  ;; that `completion-in-region-mode' is turned on.
+                  (completion-in-region-mode-predicate (lambda () t)))
+              (apply #'completion--in-region args))
+          (corfu--setup)))
     ;; XXX Warning this can result in an endless loop when 
`completion-in-region-function'
     ;; is set *globally* to `corfu--completion-in-region'. This should never 
happen.
     (apply (default-value 'completion-in-region-function) args)))
@@ -708,11 +708,9 @@ Set to nil in order to disable confirmation."
 (define-minor-mode corfu-mode
   "Completion Overlay Region FUnction"
   :global nil
-  (remove-hook 'completion-in-region-mode-hook #'corfu--mode-hook 'local)
-  (kill-local-variable 'completion-in-region-function)
-  (when corfu-mode
-    (add-hook 'completion-in-region-mode-hook #'corfu--mode-hook nil 'local)
-    (setq-local completion-in-region-function #'corfu--completion-in-region)))
+  (if corfu-mode
+      (setq-local completion-in-region-function #'corfu--completion-in-region)
+    (kill-local-variable 'completion-in-region-function)))
 
 ;;;###autoload
 (define-globalized-minor-mode corfu-global-mode corfu-mode corfu--on)



reply via email to

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