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

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

[elpa] externals/vertico-posframe 65744eb 2/3: Remove vertico-posframe--


From: ELPA Syncer
Subject: [elpa] externals/vertico-posframe 65744eb 2/3: Remove vertico-posframe--post-command-function.
Date: Thu, 2 Dec 2021 02:57:34 -0500 (EST)

branch: externals/vertico-posframe
commit 65744eb98495a14bd28a1220f856b584591961bd
Author: Feng Shu <tumashu@163.com>
Commit: Feng Shu <tumashu@163.com>

    Remove vertico-posframe--post-command-function.
    
        * vertico-posframe.el (vertico-posframe--post-command-function): 
removed.
        (vertico-posframe-mode): Do not deal with 
vertico-posframe--post-command-function.
        (vertico-posframe--display): move code of  
vertico-posframe--post-command-function to this.
---
 vertico-posframe.el | 59 +++++++++++++++++------------------------------------
 1 file changed, 19 insertions(+), 40 deletions(-)

diff --git a/vertico-posframe.el b/vertico-posframe.el
index 0c3c4be..537de22 100644
--- a/vertico-posframe.el
+++ b/vertico-posframe.el
@@ -180,18 +180,30 @@ Optional argument FRAME ."
 
 (defun vertico-posframe--display (lines)
   "Display LINES in posframe."
-  (let ((count (vertico-posframe--format-count))
-        (prompt (propertize (minibuffer-prompt) 'face 'minibuffer-prompt))
-        (content (minibuffer-contents))
-        (show-minibuffer (vertico-posframe--show-minibuffer-p)))
+  (let* ((show-minibuffer-p (vertico-posframe--show-minibuffer-p))
+         (count (vertico-posframe--format-count))
+         (prompt (propertize (minibuffer-prompt) 'face 'minibuffer-prompt))
+         ;; NOTE: Vertico count in minibuffer is before-string of an
+         ;; overlay, so minibuffer contents will not include it.
+         (contents (minibuffer-contents))
+         (n (+ (length count)
+               (max (point) (+ (length prompt) 1))))
+         ;; FIXME: make sure background and foreground do
+         ;; not have similar color. ivy-posframe have not
+         ;; this problem, I can not find the reason.
+         (cursor-face
+          (list :foreground (face-attribute 'default :background)
+                :inherit 'vertico-posframe-cursor)))
     (with-current-buffer (get-buffer-create vertico-posframe--buffer)
-      (setq-local inhibit-modification-hooks t
+      (setq-local inhibit-read-only nil
+                  inhibit-modification-hooks t
                   cursor-in-non-selected-windows 'box)
       (erase-buffer)
-      (insert count prompt content " \n" (string-join lines)))
+      (insert count prompt contents "\n" (string-join lines))
+      (add-text-properties n (+ n 1) `(face ,cursor-face)))
     (with-selected-window (vertico-posframe-last-window)
       ;; Create a posframe to cover minibuffer.
-      (if show-minibuffer
+      (if show-minibuffer-p
           (vertico-posframe--hide-minibuffer-cover)
         (vertico-posframe--create-minibuffer-cover))
       (vertico-posframe--show))))
@@ -281,37 +293,6 @@ Show STRING when it is a string."
     (posframe-hide vertico-posframe--buffer)
     (vertico-posframe--hide-minibuffer-cover)))
 
-(defun vertico-posframe--post-command-function ()
-  "`post-command-hook' function used by vertico-posframe."
-  (while-no-input
-    (redisplay)
-    (when (and vertico-posframe-mode
-               (not (minibufferp)))
-      (vertico-posframe--hide-minibuffer-cover))
-    (when (and vertico-posframe-mode
-               (minibufferp)
-               (posframe-workable-p))
-      (with-current-buffer (window-buffer (active-minibuffer-window))
-        (let* ((point (point))
-               (count (vertico-posframe--format-count))
-               ;; NOTE: Vertico count in minibuffer is before-string
-               ;; of an overlay, so the result of `buffer-string' will
-               ;; not include it.
-               (contents (buffer-string))
-               (n (+ point (length count)))
-               (cursor-face
-                ;; FIXME: make sure background and foreground do
-                ;; not have similar color. ivy-posframe have not
-                ;; this problem, I can not find the reason.
-                (list :foreground (face-attribute 'default :background)
-                      :inherit 'vertico-posframe-cursor)))
-          (remove-text-properties 0 (length contents) '(read-only nil) 
contents)
-          (with-current-buffer (get-buffer-create vertico-posframe--buffer)
-            (goto-char (point-min))
-            (delete-region (point) (line-beginning-position 2))
-            (insert count contents "  \n")
-            (add-text-properties n (+ n 1) `(face ,cursor-face))))))))
-
 (defun vertico-posframe--setup ()
   "Setup minibuffer overlay, which pushes the minibuffer content down."
   (add-hook 'minibuffer-exit-hook 'vertico-posframe--hide nil 'local)
@@ -333,7 +314,6 @@ Argument MESSAGE ."
     (advice-add #'minibuffer-message :before 
#'vertico-posframe--minibuffer-message)
     (advice-add #'vertico--display-candidates :override 
#'vertico-posframe--display)
     (advice-add #'vertico--setup :after #'vertico-posframe--setup)
-    (add-hook 'post-command-hook #'vertico-posframe--post-command-function)
     ;; Create posframe in advance to limit flicker.
     (vertico-posframe--show-init)
     (vertico-posframe--create-minibuffer-cover ""))
@@ -341,7 +321,6 @@ Argument MESSAGE ."
     (advice-remove #'minibuffer-message #'vertico-posframe--minibuffer-message)
     (advice-remove #'vertico--display-candidates #'vertico-posframe--display)
     (advice-remove #'vertico--setup #'vertico-posframe--setup)
-    (remove-hook 'post-command-hook #'vertico-posframe--post-command-function)
     (posframe-delete vertico-posframe--buffer)
     (posframe-delete vertico-posframe--minibuffer-cover))))
 



reply via email to

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