diff options
author | Jimmy Aguilar Mena <spacibba@aol.com> | 2022-03-22 21:24:13 +0100 |
---|---|---|
committer | Jimmy Aguilar Mena <spacibba@aol.com> | 2022-03-24 11:18:05 +0100 |
commit | 3a349ff6487982d9e3c427eda987aed452305d78 (patch) | |
tree | 127c1149159a303dde7cce7a72d0e4d99438edc6 /lisp/minibuffer.el | |
parent | 288ecdf90cb971a3871f7e99e3948176ae4f0e85 (diff) | |
download | emacs-3a349ff6487982d9e3c427eda987aed452305d78.tar.gz |
Add completion-auto-select second-tab value.
* lisp/minibuffer.el (completion--in-region-1) : Change if with cond and
check if completion-auto-select.
* lisp/simple.el (completion-auto-select) : Move before first use.
(completion-setup-function) : Make a more precise check for when
completion-auto-select is t.
Diffstat (limited to 'lisp/minibuffer.el')
-rw-r--r-- | lisp/minibuffer.el | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index c4fb1c00391..742d39f2d29 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -1410,18 +1410,26 @@ scroll the window of possible completions." ;; and this command is repeated, scroll that window. ((and (window-live-p minibuffer-scroll-window) (eq t (frame-visible-p (window-frame minibuffer-scroll-window)))) - (let ((window minibuffer-scroll-window) - (reverse (equal (this-command-keys) [backtab]))) + (let ((window minibuffer-scroll-window)) (with-current-buffer (window-buffer window) - (if (pos-visible-in-window-p (if reverse (point-min) (point-max)) window) - ;; If end or beginning is in view, scroll up to the - ;; beginning or end respectively. - (if reverse - (set-window-point window (point-max)) - (set-window-start window (point-min) nil)) - ;; Else scroll down one screen. - (with-selected-window window - (if reverse (scroll-down) (scroll-up)))) + (cond + ;; here this is possible only when second-tab, so jump now. + (completion-auto-select + (switch-to-completions)) + ;; reverse tab + ((equal (this-command-keys) [backtab]) + (if (pos-visible-in-window-p (point-min) window) + ;; If beginning is in view, scroll up to the end + (set-window-point window (point-max)) + ;; Else scroll down one screen. + (with-selected-window window (scroll-down)))) + ;; normal tab + (t + (if (pos-visible-in-window-p (point-max) window) + ;; If end is in view, scroll up to the end + (set-window-start window (point-min) nil) + ;; Else scroll down one screen. + (with-selected-window window (scroll-up))))) nil))) ;; If we're cycling, keep on cycling. ((and completion-cycling completion-all-sorted-completions) |