diff options
author | Juri Linkov <juri@linkov.net> | 2023-02-27 20:32:53 +0200 |
---|---|---|
committer | Juri Linkov <juri@linkov.net> | 2023-02-27 20:32:53 +0200 |
commit | a7a984c0ebebb891e2052d8416544f0bd7002007 (patch) | |
tree | bf1b714951bf92ad586bff15436052e00d1fb60f | |
parent | 1767d18c91a3c823d6ab6d69b2666fc5bc2f7d22 (diff) | |
download | emacs-a7a984c0ebebb891e2052d8416544f0bd7002007.tar.gz |
* lisp/icomplete.el: Fix in-buffer completion.
(icomplete-force-complete-and-exit, icomplete-force-complete): Use
'icomplete--field-beg/end' when not in the minibuffer to not erase
the current buffer. Also disable 'completion-in-region-mode' instead
of calling 'exit-minibuffer' (bug#45764, bug#51575, bug#61479).
-rw-r--r-- | lisp/icomplete.el | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/lisp/icomplete.el b/lisp/icomplete.el index f7a91599f3b..fd47d82920f 100644 --- a/lisp/icomplete.el +++ b/lisp/icomplete.el @@ -215,15 +215,29 @@ the default otherwise." ;; calculated, This causes the first cached completion to ;; be taken (i.e. the one that the user sees highlighted) completion-all-sorted-completions) - (minibuffer-force-complete-and-exit) + (if (window-minibuffer-p) + (minibuffer-force-complete-and-exit) + (minibuffer-force-complete (icomplete--field-beg) + (icomplete--field-end) + 'dont-cycle) + (completion-in-region-mode -1)) ;; Otherwise take the faster route... - (minibuffer-complete-and-exit))) + (if (window-minibuffer-p) + (minibuffer-complete-and-exit) + (completion-complete-and-exit + (icomplete--field-beg) + (icomplete--field-end) + (lambda () (completion-in-region-mode -1)))))) (defun icomplete-force-complete () "Complete the icomplete minibuffer." (interactive) ;; We're not at all interested in cycling here (bug#34077). - (minibuffer-force-complete nil nil 'dont-cycle)) + (if (window-minibuffer-p) + (minibuffer-force-complete nil nil 'dont-cycle) + (minibuffer-force-complete (icomplete--field-beg) + (icomplete--field-end) + 'dont-cycle))) ;; Apropos `icomplete-scroll', we implement "scrolling icomplete" ;; within classic icomplete, which is "rotating", by contrast. |