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

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

[elpa] externals/company e1d5837 08/46: Use 'after-string' to render the


From: Dmitry Gutov
Subject: [elpa] externals/company e1d5837 08/46: Use 'after-string' to render the popup
Date: Wed, 30 Dec 2020 18:33:02 -0500 (EST)

branch: externals/company
commit e1d58370cf1f6b42b929376eab2193bfc0914381
Author: Dmitry Gutov <dgutov@yandex.ru>
Commit: Dmitry Gutov <dgutov@yandex.ru>

    Use 'after-string' to render the popup
    
    To make possible rendering images in it.
    
    Discussion in 
https://github.com/company-mode/company-mode/pull/996#issuecomment-662743347.
---
 company.el | 34 +++++++++++++++++++++++-----------
 1 file changed, 23 insertions(+), 11 deletions(-)

diff --git a/company.el b/company.el
index 45cfebf..82264e1 100644
--- a/company.el
+++ b/company.el
@@ -2738,9 +2738,23 @@ If SHOW-VERSION is non-nil, show the version in the echo 
area."
                     (company--offset-line (pop lines) offset))
             new))
 
-    (let ((str (concat (when nl " \n")
-                       (mapconcat 'identity (nreverse new) "\n")
-                       "\n")))
+    ;; TODO: Choose the face most appropriate for each line, instead of
+    ;; simply forcing :extend to nil.
+    (let* ((nl-face (list
+                     :extend t
+                     :inverse-video nil
+                     :background (face-attribute 'default :background)))
+           (str (concat (when nl " \n")
+                        (apply
+                         #'concat
+                         (mapcan
+                          ;; 
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=42552#23
+                          (lambda (line) (list line
+                                          (propertize "\n" 'face nl-face)))
+                          (nreverse new))))))
+      ;; Use add-face-text-property in Emacs 24.4
+      ;; https://debbugs.gnu.org/38563
+      (font-lock-append-text-property 0 (length str) 'face 'default str)
       (when nl (put-text-property 0 1 'cursor t str))
       str)))
 
@@ -2949,14 +2963,12 @@ Returns a negative number if the tooltip should be 
displayed above point."
       (overlay-put ov 'priority 111)
       ;; No (extra) prefix for the first line.
       (overlay-put ov 'line-prefix "")
-      ;; `display' is better
-      ;; (http://debbugs.gnu.org/18285, http://debbugs.gnu.org/20847),
-      ;; but it doesn't work on 0-length overlays.
-      (if (< (overlay-start ov) (overlay-end ov))
-          (overlay-put ov 'display disp)
-        (overlay-put ov 'after-string disp)
-        (overlay-put ov 'invisible t))
-      (overlay-put ov 'face 'default)
+      (overlay-put ov 'after-string disp)
+      ;; `display' is better than `invisible':
+      ;; https://debbugs.gnu.org/18285
+      ;; https://debbugs.gnu.org/20847
+      ;; https://debbugs.gnu.org/42521
+      (overlay-put ov 'display "")
       (overlay-put ov 'window (selected-window)))))
 
 (defun company-pseudo-tooltip-guard ()



reply via email to

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