[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
feature/completions-customs f9faa51e76: Add completion-auto-select secon
From: |
Jimmy Aguilar Mena |
Subject: |
feature/completions-customs f9faa51e76: Add completion-auto-select second-tab value. |
Date: |
Wed, 23 Mar 2022 08:18:36 -0400 (EDT) |
branch: feature/completions-customs
commit f9faa51e7677640b38e0ca894da889233e42d066
Author: Jimmy Aguilar Mena <spacibba@aol.com>
Commit: Jimmy Aguilar Mena <spacibba@aol.com>
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.
---
lisp/minibuffer.el | 30 +++++++++++++++++++-----------
lisp/simple.el | 18 ++++++++++--------
2 files changed, 29 insertions(+), 19 deletions(-)
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index c4fb1c0039..742d39f2d2 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)
diff --git a/lisp/simple.el b/lisp/simple.el
index 9a8ed0bb75..f229608690 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -9144,6 +9144,14 @@ This affects the commands `next-completion' and
:version "29.1"
:group 'completion)
+(defcustom completion-auto-select nil
+ "Non-nil means to automatically select the *Completions* buffer."
+ :type '(choice (const :tag "Select window" t)
+ (const :tag "Disabled" nil)
+ (const :tag "Select window on second-tab" second-tab))
+ :version "29.1"
+ :group 'completion)
+
(defun previous-completion (n)
"Move to the previous item in the completion list.
With prefix argument N, move back N items (negative N means move
@@ -9365,12 +9373,6 @@ Called from `temp-buffer-show-hook'."
:version "22.1"
:group 'completion)
-(defcustom completion-auto-select nil
- "Non-nil means to automatically select the *Completions* buffer."
- :type 'boolean
- :version "29.1"
- :group 'completion)
-
;; This function goes in completion-setup-hook, so that it is called
;; after the text of the completion list buffer is written.
(defun completion-setup-function ()
@@ -9411,8 +9413,8 @@ Called from `temp-buffer-show-hook'."
(insert (substitute-command-keys
"In this buffer, type \\[choose-completion] to \
select the completion near point.\n\n")))))
- (when completion-auto-select
- (switch-to-completions)))
+ (if (eq completion-auto-select t)
+ (switch-to-completions)))
(add-hook 'completion-setup-hook #'completion-setup-function)