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

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

[elpa] externals/corfu 9ebb72373f 3/4: Introduce variable corfu-popupinf


From: ELPA Syncer
Subject: [elpa] externals/corfu 9ebb72373f 3/4: Introduce variable corfu-popupinfo-auto
Date: Sat, 19 Nov 2022 10:57:26 -0500 (EST)

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

    Introduce variable corfu-popupinfo-auto
---
 extensions/corfu-popupinfo.el | 56 +++++++++++++++++++++++++++----------------
 1 file changed, 36 insertions(+), 20 deletions(-)

diff --git a/extensions/corfu-popupinfo.el b/extensions/corfu-popupinfo.el
index bb2da249c3..b5a7b50448 100644
--- a/extensions/corfu-popupinfo.el
+++ b/extensions/corfu-popupinfo.el
@@ -30,10 +30,10 @@
 ;; experimental. The extension may get renamed and the public interface
 ;; may change any time.
 ;;
-;; Display a documentation popup for completion candidate when using
-;; Corfu. The `corfu-popupinfo-mode' must be enabled globally. Set
-;; `corfu-popupinfo-delay' to nil if the documentation popup should not
-;; appear automatically.
+;; Display an info popup for completion candidate when using Corfu. The
+;; `corfu-popupinfo-mode' must be enabled globally. Set
+;; `corfu-popupinfo-auto' to nil if the info popup should not appear
+;; automatically.
 
 ;; For manual toggling the commands `corfu-popupinfo-toggle',
 ;; `corfu-popupinfo-location' and `corfu-popupinfo-documentation' are
@@ -50,10 +50,22 @@
   "Face used for the info popup."
   :group 'corfu-faces)
 
+(defcustom corfu-popupinfo-auto t
+  "Show info popup automatically.
+
+If set to nil, the popup can be requested manually via
+`corfu-popupinfo-toggle', `corfu-popupinfo-documentation' and
+`corfu-popupinfo-location'."
+  :type 'boolean
+  :group 'corfu)
+
 (defcustom corfu-popupinfo-delay '(1.0 . 0.5)
-  "Show documentation popup after that number of seconds.
-Set to t for an instant message. The value can be a pair of two
-floats to specify initial and subsequent delay."
+  "Automatically update info popup after that number of seconds.
+
+Set to t for an instant update. The value can be a pair of two
+floats to specify initial and subsequent delay. If
+`corfu-popupinfo-auto' is non-nil, the popup will automatically
+appear for the preselected candidate."
   :type '(choice (const :tag "Never" nil)
                  (const :tag "Instant" t)
                  (number :tag "Delay in seconds")
@@ -102,8 +114,8 @@ floats to specify initial and subsequent delay."
     (fringe-indicator-alist (continuation)))
   "Buffer parameters.")
 
-(defvar-local corfu-popupinfo--toggle t
-  "Local popupinfo toggle state.")
+(defvar-local corfu-popupinfo--toggle 'unset
+  "Local toggle state.")
 
 (defvar-local corfu-popupinfo--function
   #'corfu-popupinfo--get-documentation
@@ -112,7 +124,7 @@ floats to specify initial and subsequent delay."
 (defvar corfu-popupinfo--frame nil
   "Info popup child frame.")
 
-(defvar corfu-popupinfo--auto-timer nil
+(defvar corfu-popupinfo--timer nil
   "Corfu info popup auto display timer.")
 
 (defvar-local corfu-popupinfo--candidate nil
@@ -301,9 +313,9 @@ the candidate popup, its value is 'bottom, 'top, 'right or 
'left."
 
 (defun corfu-popupinfo--show (candidate)
   "Show the info popup for CANDIDATE."
-  (when corfu-popupinfo--auto-timer
-    (cancel-timer corfu-popupinfo--auto-timer)
-    (setq corfu-popupinfo--auto-timer nil))
+  (when corfu-popupinfo--timer
+    (cancel-timer corfu-popupinfo--timer)
+    (setq corfu-popupinfo--timer nil))
   (when (and (corfu--popup-support-p) (corfu-popupinfo--visible-p 
corfu--frame))
     (let* ((doc-changed
             (not (and (corfu-popupinfo--visible-p)
@@ -390,8 +402,9 @@ not be displayed until this command is called again, even if
   (if-let ((candidate (and (>= corfu--index 0)
                           (nth corfu--index corfu--candidates)))
            ((not (corfu-popupinfo--visible-p))))
-      (setq corfu-popupinfo--toggle t)
-      (corfu-popupinfo--show candidate)
+      (progn
+        (setq corfu-popupinfo--toggle t)
+        (corfu-popupinfo--show candidate))
     (corfu-popupinfo--hide)))
 
 (defun corfu-popupinfo--exhibit (&rest _)
@@ -399,10 +412,13 @@ not be displayed until this command is called again, even 
if
   (add-to-list 'minor-mode-overriding-map-alist
                `(,#'corfu-popupinfo-mode . ,corfu-popupinfo-map))
   (if (and (>= corfu--index 0) (corfu-popupinfo--visible-p corfu--frame))
-      (when (and corfu-popupinfo-delay corfu-popupinfo--toggle)
-        (when corfu-popupinfo--auto-timer
-          (cancel-timer corfu-popupinfo--auto-timer)
-          (setq corfu-popupinfo--auto-timer nil))
+      (when (and corfu-popupinfo-delay
+                 (if (eq corfu-popupinfo--toggle 'unset)
+                     (setq corfu-popupinfo--toggle corfu-popupinfo-auto)
+                   corfu-popupinfo--toggle))
+        (when corfu-popupinfo--timer
+          (cancel-timer corfu-popupinfo--timer)
+          (setq corfu-popupinfo--timer nil))
         (let ((candidate (nth corfu--index corfu--candidates))
               (delay (if (consp corfu-popupinfo-delay)
                          (funcall (if (corfu-popupinfo--visible-p) #'cdr #'car)
@@ -416,7 +432,7 @@ not be displayed until this command is called again, even if
               (corfu-popupinfo--hide))
              (corfu-popupinfo--candidate
               (corfu-popupinfo--show corfu-popupinfo--candidate)))
-            (setq corfu-popupinfo--auto-timer
+            (setq corfu-popupinfo--timer
                   (run-at-time delay nil #'corfu-popupinfo--show candidate)))))
     (corfu-popupinfo--hide)))
 



reply via email to

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