summaryrefslogtreecommitdiff
path: root/lisp/minibuffer.el
diff options
context:
space:
mode:
authorJimmy Aguilar Mena <spacibba@aol.com>2022-03-22 21:24:13 +0100
committerJimmy Aguilar Mena <spacibba@aol.com>2022-03-24 11:18:05 +0100
commit3a349ff6487982d9e3c427eda987aed452305d78 (patch)
tree127c1149159a303dde7cce7a72d0e4d99438edc6 /lisp/minibuffer.el
parent288ecdf90cb971a3871f7e99e3948176ae4f0e85 (diff)
downloademacs-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.el30
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)