]> git.eshelyaron.com Git - emacs.git/commitdiff
Render Ido suggestions using an overlay
authorDmitry Gutov <dgutov@yandex.ru>
Wed, 22 Jan 2020 11:46:34 +0000 (14:46 +0300)
committerDmitry Gutov <dgutov@yandex.ru>
Wed, 22 Jan 2020 11:47:26 +0000 (14:47 +0300)
* lisp/ido.el (ido--overlay): New variable.
(ido-exhibit): Render with 'after-string' on an overlay
(bug#38457).

lisp/ido.el

index 83b88e4e81c8eff326ca14aeb08f44e290abca10..355be5eaa6663ccbb0469695a3ffe6cdb8a2e5e1 100644 (file)
@@ -4492,6 +4492,8 @@ For details of keybindings, see `ido-find-file'."
        (ido-tidy))
       (throw 'ido contents))))
 
+(defvar ido--overlay nil)
+
 (defun ido-exhibit ()
   "Post command hook for Ido."
   ;; Find matching files and display a list in the minibuffer.
@@ -4726,7 +4728,13 @@ For details of keybindings, see `ido-find-file'."
        (let ((inf (ido-completions contents)))
          (setq ido-show-confirm-message nil)
          (ido-trace "inf" inf)
-         (insert inf))
+          (when ido--overlay
+            (delete-overlay ido--overlay))
+          (let ((o (make-overlay (point-max) (point-max) nil t t)))
+            (when (> (length inf) 0)
+              (put-text-property 0 1 'cursor t inf))
+            (overlay-put o 'after-string inf)
+            (setq ido--overlay o)))
        ))))
 
 (defun ido-completions (name)