From unknown Mon Jun 23 14:58:47 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#59486 <59486@debbugs.gnu.org> To: bug#59486 <59486@debbugs.gnu.org> Subject: Status: completion-auto-wrap disobeyed by vertical navigation Reply-To: bug#59486 <59486@debbugs.gnu.org> Date: Mon, 23 Jun 2025 21:58:47 +0000 retitle 59486 completion-auto-wrap disobeyed by vertical navigation reassign 59486 emacs submitter 59486 Juri Linkov severity 59486 normal thanks From debbugs-submit-bounces@debbugs.gnu.org Tue Nov 22 12:45:39 2022 Received: (at submit) by debbugs.gnu.org; 22 Nov 2022 17:45:40 +0000 Received: from localhost ([127.0.0.1]:52476 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxXL1-0003fV-Hq for submit@debbugs.gnu.org; Tue, 22 Nov 2022 12:45:39 -0500 Received: from lists.gnu.org ([209.51.188.17]:59244) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxXL0-0003fO-2K for submit@debbugs.gnu.org; Tue, 22 Nov 2022 12:45:38 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oxXKx-0000Di-7E for bug-gnu-emacs@gnu.org; Tue, 22 Nov 2022 12:45:37 -0500 Received: from relay10.mail.gandi.net ([217.70.178.230]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oxXKu-0005Lt-5F for bug-gnu-emacs@gnu.org; Tue, 22 Nov 2022 12:45:34 -0500 Received: (Authenticated sender: juri@linkov.net) by mail.gandi.net (Postfix) with ESMTPSA id 6335324000E for ; Tue, 22 Nov 2022 17:44:56 +0000 (UTC) From: Juri Linkov To: bug-gnu-emacs@gnu.org Subject: completion-auto-wrap disobeyed by vertical navigation Organization: LINKOV.NET Date: Tue, 22 Nov 2022 19:38:57 +0200 Message-ID: <8635aayjm6.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Received-SPF: pass client-ip=217.70.178.230; envelope-from=juri@linkov.net; helo=relay10.mail.gandi.net X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.6 (-) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.6 (--) --=-=-= Content-Type: text/plain In a multi-column layout, the keys and wrap to the beginning/end of the completions buffer, but and don't. Here is a patch that supports completion-auto-wrap for wrapping to the top/bottom: --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=next-line-completion.patch diff --git a/lisp/simple.el b/lisp/simple.el index 0f44b14948c..459af2fcf55 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -9572,6 +9574,8 @@ completion-list-mode-map (define-key map "\C-m" 'choose-completion) (define-key map "\e\e\e" 'delete-completion-window) (define-key map [remap keyboard-quit] #'delete-completion-window) + (define-key map [up] 'previous-line-completion) + (define-key map [down] 'next-line-completion) (define-key map [left] 'previous-completion) (define-key map [right] 'next-completion) (define-key map [?\t] 'next-completion) @@ -9736,6 +9740,77 @@ next-completion (when (/= 0 n) (switch-to-minibuffer)))) +(defun previous-line-completion (&optional n) + "Move to the item on the previous line in the completion list. +With prefix argument N, move back N items line-wise (negative N +means move forward). + +Also see the `completion-auto-wrap' variable." + (interactive "p") + (next-line-completion (- n))) + +(defun next-line-completion (&optional n) + "Move to the item on the next line in the completion list. +With prefix argument N, move N items line-wise (negative N +means move backward). + +Also see the `completion-auto-wrap' variable." + (interactive "p") + (let ((column (current-column)) + pos) + (catch 'bound + (while (> n 0) + (setq pos nil) + (save-excursion + (while (and (not pos) (not (eobp))) + (forward-line 1) + (when (and (not (eobp)) + (eq (move-to-column column) column) + (get-text-property (point) 'mouse-face)) + (setq pos (point))))) + (if pos + (goto-char pos) + (when completion-auto-wrap + (let ((column (current-column))) + (save-excursion + (goto-char (point-min)) + (when (and (eq (move-to-column column) column) + (get-text-property (point) 'mouse-face)) + (setq pos (point))) + (while (and (not pos) (not (eobp))) + (forward-line 1) + (when (and (eq (move-to-column column) column) + (get-text-property (point) 'mouse-face)) + (setq pos (point))))) + (if pos (goto-char pos))))) + (setq n (1- n))) + + (while (< n 0) + (setq pos nil) + (save-excursion + (while (and (not pos) (not (bobp))) + (forward-line -1) + (when (and (not (bobp)) + (eq (move-to-column column) column) + (get-text-property (point) 'mouse-face)) + (setq pos (point))))) + (if pos + (goto-char pos) + (when completion-auto-wrap + (let ((column (current-column))) + (save-excursion + (goto-char (point-max)) + (when (and (eq (move-to-column column) column) + (get-text-property (point) 'mouse-face)) + (setq pos (point))) + (while (and (not pos) (not (bobp))) + (forward-line -1) + (when (and (eq (move-to-column column) column) + (get-text-property (point) 'mouse-face)) + (setq pos (point))))) + (if pos (goto-char pos))))) + (setq n (1+ n)))))) + (defun choose-completion (&optional event no-exit no-quit) "Choose the completion at point. If EVENT, use EVENT's position to determine the starting position. --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Wed Nov 23 13:50:36 2022 Received: (at 59486) by debbugs.gnu.org; 23 Nov 2022 18:50:36 +0000 Received: from localhost ([127.0.0.1]:56248 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxupQ-0004cY-C0 for submit@debbugs.gnu.org; Wed, 23 Nov 2022 13:50:36 -0500 Received: from relay9-d.mail.gandi.net ([217.70.183.199]:44459) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oxupJ-0004c8-Ta for 59486@debbugs.gnu.org; Wed, 23 Nov 2022 13:50:34 -0500 Received: (Authenticated sender: juri@linkov.net) by mail.gandi.net (Postfix) with ESMTPSA id 97CDAFF804 for <59486@debbugs.gnu.org>; Wed, 23 Nov 2022 18:50:21 +0000 (UTC) From: Juri Linkov To: 59486@debbugs.gnu.org Subject: Re: bug#59486: completion-auto-wrap disobeyed by vertical navigation In-Reply-To: <8635aayjm6.fsf@mail.linkov.net> (Juri Linkov's message of "Tue, 22 Nov 2022 19:38:57 +0200") Organization: LINKOV.NET References: <8635aayjm6.fsf@mail.linkov.net> Date: Wed, 23 Nov 2022 20:49:27 +0200 Message-ID: <86zgchbj61.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 59486 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) --=-=-= Content-Type: text/plain > In a multi-column layout, the keys and > wrap to the beginning/end of the completions buffer, > but and don't. Here is a patch that supports > completion-auto-wrap for wrapping to the top/bottom: Now pushed. And here are the corresponding commands for navigating the completions buffer from the minibuffer: --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=minibuffer-next-completion.patch diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index 6bb0fa3ae98..ea1e88c7234 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -4452,7 +4456,7 @@ minibuffer-completion-auto-choose :type 'boolean :version "29.1") -(defun minibuffer-next-completion (&optional n) +(defun minibuffer-next-completion (&optional n vertical) "Move to the next item in its completions window from the minibuffer. When `minibuffer-completion-auto-choose' is non-nil, then also insert the selected completion to the minibuffer." @@ -4461,7 +4465,9 @@ minibuffer-next-completion (with-minibuffer-completions-window (when completions-highlight-face (setq-local cursor-face-highlight-nonselected-window t)) - (next-completion (or n 1)) + (if vertical + (next-line-completion (or n 1)) + (next-completion (or n 1))) (when auto-choose (let ((completion-use-base-affixes t)) (choose-completion nil t t)))))) @@ -4473,6 +4479,20 @@ minibuffer-previous-completion (interactive "p") (minibuffer-next-completion (- (or n 1)))) +(defun minibuffer-next-line-completion (&optional n) + "Move to the next completion line from the minibuffer. +When `minibuffer-completion-auto-choose' is non-nil, then also +insert the selected completion to the minibuffer." + (interactive "p") + (minibuffer-next-completion (or n 1) t)) + +(defun minibuffer-previous-line-completion (&optional n) + "Move to the previous completion line from the minibuffer. +When `minibuffer-completion-auto-choose' is non-nil, then also +insert the selected completion to the minibuffer." + (interactive "p") + (minibuffer-next-completion (- (or n 1)) t)) + (defun minibuffer-choose-completion (&optional no-exit no-quit) "Run `choose-completion' from the minibuffer in its completions window. With prefix argument NO-EXIT, insert the completion at point to the --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Thu Nov 24 03:02:17 2022 Received: (at 59486) by debbugs.gnu.org; 24 Nov 2022 08:02:17 +0000 Received: from localhost ([127.0.0.1]:57103 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oy7BZ-0004JC-78 for submit@debbugs.gnu.org; Thu, 24 Nov 2022 03:02:17 -0500 Received: from relay2-d.mail.gandi.net ([217.70.183.194]:37365) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oy7BW-0004Im-W0 for 59486@debbugs.gnu.org; Thu, 24 Nov 2022 03:02:15 -0500 Received: (Authenticated sender: juri@linkov.net) by mail.gandi.net (Postfix) with ESMTPSA id 52A204000C for <59486@debbugs.gnu.org>; Thu, 24 Nov 2022 08:02:07 +0000 (UTC) From: Juri Linkov To: 59486@debbugs.gnu.org Subject: Re: bug#59486: completion-auto-wrap disobeyed by vertical navigation In-Reply-To: <86zgchbj61.fsf@mail.linkov.net> (Juri Linkov's message of "Wed, 23 Nov 2022 20:49:27 +0200") Organization: LINKOV.NET References: <8635aayjm6.fsf@mail.linkov.net> <86zgchbj61.fsf@mail.linkov.net> Date: Thu, 24 Nov 2022 09:59:52 +0200 Message-ID: <86h6yoye87.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 59486 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > And here are the corresponding commands for navigating > the completions buffer from the minibuffer: > > +(defun minibuffer-next-line-completion (&optional n) > +(defun minibuffer-previous-line-completion (&optional n) It seems there commands can't be bound in the minibuffer. Ideally, these keybindings could be added to minibuffer-local-completion-map: "M-" #'minibuffer-previous-completion "M-" #'minibuffer-next-completion "M-" #'minibuffer-previous-line-completion "M-" #'minibuffer-next-line-completion But maybe 'M-' and 'M-' can't be taken from moving by words even when 'C-' and 'C-' are duplicate keys that are doing the same. Or to bind 'M-' and 'M-' only in completion-in-region-mode-map that is more transient by nature and is active only as long as the completions buffer is shown. From debbugs-submit-bounces@debbugs.gnu.org Thu Nov 24 03:13:21 2022 Received: (at 59486) by debbugs.gnu.org; 24 Nov 2022 08:13:22 +0000 Received: from localhost ([127.0.0.1]:57128 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oy7MH-0004Zt-IF for submit@debbugs.gnu.org; Thu, 24 Nov 2022 03:13:21 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42766) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oy7MF-0004Zg-NT for 59486@debbugs.gnu.org; Thu, 24 Nov 2022 03:13:20 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oy7M9-0006nX-2N; Thu, 24 Nov 2022 03:13:13 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=uG/aRGmBM022bDUKnaxhMF3cUQbb7gjsWqsCKnJ051s=; b=avuHlmsHWUHs 0x83/jLv/7K1MvADRtb6n1qP7Q6yJC53sm1McEleve7UiW5NbhhqjLSEzmHqaRfGBVbG670t7DMnw plCRRIMqQaHVkRdkM45wDm4BzRA83xsxV+mo4E6df7J6d+NdF1/TqVEH14grCSMHrCBro6yexkIuV hNKA92guA7JuWoPWhz9ppe4/juavTcWXvoovge2Cgl2SFWw4GnxxL35pM+kp6c8QZeOkRavSKiIYs LRh8sbo2nSGpyqtiRXy6/YTOt5wOlyHroyGqgcaA3UCxMdzhhkI2ffjfZWkD6WP0ZvXEDkCxyPt9s Os6jJfHbp64Cu3ZrJwNCEQ==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oy7Lt-0003Aw-Sj; Thu, 24 Nov 2022 03:13:12 -0500 Date: Thu, 24 Nov 2022 10:13:16 +0200 Message-Id: <834juoydlv.fsf@gnu.org> From: Eli Zaretskii To: Juri Linkov In-Reply-To: <86h6yoye87.fsf@mail.linkov.net> (message from Juri Linkov on Thu, 24 Nov 2022 09:59:52 +0200) Subject: Re: bug#59486: completion-auto-wrap disobeyed by vertical navigation References: <8635aayjm6.fsf@mail.linkov.net> <86zgchbj61.fsf@mail.linkov.net> <86h6yoye87.fsf@mail.linkov.net> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59486 Cc: 59486@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Juri Linkov > Date: Thu, 24 Nov 2022 09:59:52 +0200 > > > And here are the corresponding commands for navigating > > the completions buffer from the minibuffer: > > > > +(defun minibuffer-next-line-completion (&optional n) > > +(defun minibuffer-previous-line-completion (&optional n) > > It seems there commands can't be bound in the minibuffer. > Ideally, these keybindings could be added to > minibuffer-local-completion-map: > > "M-" #'minibuffer-previous-completion > "M-" #'minibuffer-next-completion > "M-" #'minibuffer-previous-line-completion > "M-" #'minibuffer-next-line-completion > > But maybe 'M-' and 'M-' can't be taken from moving by words > even when 'C-' and 'C-' are duplicate keys that are doing > the same. Or to bind 'M-' and 'M-' only in > completion-in-region-mode-map that is more transient by nature > and is active only as long as the completions buffer is shown. Please don't usurp M- and M-, as they are needed on TTY frames where C- and C- are not available. I don't really understand the difference between minibuffer-previous-* and minibuffer-previous-line-* commands (the available documentation is minimal and doesn't explain this difference), so it's hard to suggest an alternative. But one immediate alternative is to use and for the minibuffer-previous-* family, like previous-completion does. From debbugs-submit-bounces@debbugs.gnu.org Thu Nov 24 13:34:43 2022 Received: (at 59486) by debbugs.gnu.org; 24 Nov 2022 18:34:44 +0000 Received: from localhost ([127.0.0.1]:60098 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oyH3b-0000wt-MC for submit@debbugs.gnu.org; Thu, 24 Nov 2022 13:34:43 -0500 Received: from relay8-d.mail.gandi.net ([217.70.183.201]:51697) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oyH3K-0000wP-VY for 59486@debbugs.gnu.org; Thu, 24 Nov 2022 13:34:42 -0500 Received: (Authenticated sender: juri@linkov.net) by mail.gandi.net (Postfix) with ESMTPSA id 9DB371BF206; Thu, 24 Nov 2022 18:34:17 +0000 (UTC) From: Juri Linkov To: Eli Zaretskii Subject: Re: bug#59486: completion-auto-wrap disobeyed by vertical navigation In-Reply-To: <834juoydlv.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 24 Nov 2022 10:13:16 +0200") Organization: LINKOV.NET References: <8635aayjm6.fsf@mail.linkov.net> <86zgchbj61.fsf@mail.linkov.net> <86h6yoye87.fsf@mail.linkov.net> <834juoydlv.fsf@gnu.org> Date: Thu, 24 Nov 2022 20:30:00 +0200 Message-ID: <86pmdcw6hj.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 59486 Cc: 59486@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > I don't really understand the difference between minibuffer-previous-* and > minibuffer-previous-line-* commands (the available documentation is minimal > and doesn't explain this difference), so it's hard to suggest an alternative. minibuffer-previous-* are intended to navigate the completion list horizontally while the minibuffer is active, and minibuffer-previous-line-* vertically. > But one immediate alternative is to use and for > the minibuffer-previous-* family, like previous-completion does. and are useful to move point in the minibuffer. But do you think it would be okay to use and for navigation of completions from the minibuffer after adding a new user option, when is non-nil (disabled by default)? From debbugs-submit-bounces@debbugs.gnu.org Thu Nov 24 13:43:48 2022 Received: (at 59486) by debbugs.gnu.org; 24 Nov 2022 18:43:48 +0000 Received: from localhost ([127.0.0.1]:60142 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oyHCO-0001C5-2j for submit@debbugs.gnu.org; Thu, 24 Nov 2022 13:43:48 -0500 Received: from eggs.gnu.org ([209.51.188.92]:33430) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oyHCL-0001Bs-LA for 59486@debbugs.gnu.org; Thu, 24 Nov 2022 13:43:46 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oyHCF-0007Ny-QE; Thu, 24 Nov 2022 13:43:40 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=mGlSQPNsd+dn6XZ83yNmJLAxmLdKAko3QGx3mcmox3Q=; b=khpVa/L5GiCG odn2y6b/6St3F32ufyhLU3yf20OdamfFEacqFx9P91W6D/N3uEeEC9lXaIKegG2qT19U2JM3OP9EN Qlp4phk3jaJLKzBt9U3tp4olnojpOpKOuCTDT1NQpGhRz9hFHJCzipfTWu+RKi6fXKSxa500zUYOo 9yiygPPyBSo32XHHWCZLgA+z8u72fpVehhsVUsvF4n/HDOiN9yUJ0IapXOi4laaQwwe/Ce92kmsfY brHI9IpNFtQNmVGMTjbp95ioB5xUxEH7PfcNzR4DJ+DF1ytC6C4/YNV27nQ0HAzxEvfA9ICFURf3i wzOUm/rf00ot7Wzx3am4EQ==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oyHCD-00046T-Db; Thu, 24 Nov 2022 13:43:38 -0500 Date: Thu, 24 Nov 2022 20:43:58 +0200 Message-Id: <83zgcgur9t.fsf@gnu.org> From: Eli Zaretskii To: Juri Linkov In-Reply-To: <86pmdcw6hj.fsf@mail.linkov.net> (message from Juri Linkov on Thu, 24 Nov 2022 20:30:00 +0200) Subject: Re: bug#59486: completion-auto-wrap disobeyed by vertical navigation References: <8635aayjm6.fsf@mail.linkov.net> <86zgchbj61.fsf@mail.linkov.net> <86h6yoye87.fsf@mail.linkov.net> <834juoydlv.fsf@gnu.org> <86pmdcw6hj.fsf@mail.linkov.net> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59486 Cc: 59486@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Juri Linkov > Cc: 59486@debbugs.gnu.org > Date: Thu, 24 Nov 2022 20:30:00 +0200 > > > I don't really understand the difference between minibuffer-previous-* and > > minibuffer-previous-line-* commands (the available documentation is minimal > > and doesn't explain this difference), so it's hard to suggest an alternative. > > minibuffer-previous-* are intended to navigate the completion list > horizontally while the minibuffer is active, and minibuffer-previous-line-* > vertically. Then the names could be simplified as minibuffer-up-line and minibuffer-down-line. It will also make the names less confusing, IMO. > > But one immediate alternative is to use and for > > the minibuffer-previous-* family, like previous-completion does. > > and are useful to move point in the minibuffer. Then maybe PgUp and PgDn? > But do you think it would be okay to use and > for navigation of completions from the minibuffer after > adding a new user option, when is non-nil (disabled by default)? If the arrow keys are already taken, having an option that will change their effect would be confusing, I think. From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 25 02:49:09 2022 Received: (at 59486) by debbugs.gnu.org; 25 Nov 2022 07:49:09 +0000 Received: from localhost ([127.0.0.1]:33348 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oyTSP-0004Yj-Iw for submit@debbugs.gnu.org; Fri, 25 Nov 2022 02:49:09 -0500 Received: from relay11.mail.gandi.net ([217.70.178.231]:57885) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oyTSO-0004YU-J2 for 59486@debbugs.gnu.org; Fri, 25 Nov 2022 02:49:08 -0500 Received: (Authenticated sender: juri@linkov.net) by mail.gandi.net (Postfix) with ESMTPSA id 9CC4E100008; Fri, 25 Nov 2022 07:48:58 +0000 (UTC) From: Juri Linkov To: Eli Zaretskii Subject: Re: bug#59486: completion-auto-wrap disobeyed by vertical navigation In-Reply-To: <83zgcgur9t.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 24 Nov 2022 20:43:58 +0200") Organization: LINKOV.NET References: <8635aayjm6.fsf@mail.linkov.net> <86zgchbj61.fsf@mail.linkov.net> <86h6yoye87.fsf@mail.linkov.net> <834juoydlv.fsf@gnu.org> <86pmdcw6hj.fsf@mail.linkov.net> <83zgcgur9t.fsf@gnu.org> Date: Fri, 25 Nov 2022 09:47:29 +0200 Message-ID: <86a64f327i.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 59486 Cc: 59486@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) >> minibuffer-previous-* are intended to navigate the completion list >> horizontally while the minibuffer is active, and minibuffer-previous-line-* >> vertically. > > Then the names could be simplified as minibuffer-up-line and > minibuffer-down-line. It will also make the names less confusing, IMO. It's not only about the minibuffer, but also about completions, so the commands names should also include the word "completion". >> > But one immediate alternative is to use and for >> > the minibuffer-previous-* family, like previous-completion does. >> >> and are useful to move point in the minibuffer. > > Then maybe PgUp and PgDn? PgUp and PgDn are used to scroll the completions buffer from the minibuffer. >> But do you think it would be okay to use and >> for navigation of completions from the minibuffer after >> adding a new user option, when is non-nil (disabled by default)? > > If the arrow keys are already taken, having an option that will change their > effect would be confusing, I think. It does the same as icomplete-vertical-mode where the arrow keys are not confusing. From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 25 03:38:15 2022 Received: (at 59486) by debbugs.gnu.org; 25 Nov 2022 08:38:15 +0000 Received: from localhost ([127.0.0.1]:33437 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oyUDu-00085F-O1 for submit@debbugs.gnu.org; Fri, 25 Nov 2022 03:38:15 -0500 Received: from eggs.gnu.org ([209.51.188.92]:33306) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oyUDs-000850-67 for 59486@debbugs.gnu.org; Fri, 25 Nov 2022 03:38:13 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oyUDl-0007Xo-QC; Fri, 25 Nov 2022 03:38:05 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=Y6Fr/9pjbCNzjh5lozMwV42FeTJt4+9gonypVWPnfuQ=; b=lu4eYJXx94OY Hj5OFWOBEdbzhyypXB3cOK5iWQzPCI3oe+yYnifvneuxvNLWdll3MkgdYxqGtzrCZjz+N+BVq7Hdc ic7UlOB9+ywL423XJlwQu4/79cAj3viGnZzmaV2UXXG9832nZPGPJIZa3opeofh+dLzikh28cWDFb jPeGB51erubGCAsZdNwvfC/qCmyQIxpf9NyB7n52Ij6aXSyx44lBYVuxL0XO6NhMATFDYmG2gUEBX florhPVP0bfAWI+LWzEGdcjPtbO6j24zHlc0dXNo4pZQgYM0wT7aW4N/wUl217fCZtyE+3TT5WtVJ rN/HVqelvqZ8zfqwWH9kwA==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oyUDl-0007BH-7p; Fri, 25 Nov 2022 03:38:05 -0500 Date: Fri, 25 Nov 2022 10:38:26 +0200 Message-Id: <83lenzv37h.fsf@gnu.org> From: Eli Zaretskii To: Juri Linkov In-Reply-To: <86a64f327i.fsf@mail.linkov.net> (message from Juri Linkov on Fri, 25 Nov 2022 09:47:29 +0200) Subject: Re: bug#59486: completion-auto-wrap disobeyed by vertical navigation References: <8635aayjm6.fsf@mail.linkov.net> <86zgchbj61.fsf@mail.linkov.net> <86h6yoye87.fsf@mail.linkov.net> <834juoydlv.fsf@gnu.org> <86pmdcw6hj.fsf@mail.linkov.net> <83zgcgur9t.fsf@gnu.org> <86a64f327i.fsf@mail.linkov.net> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59486 Cc: 59486@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Juri Linkov > Cc: 59486@debbugs.gnu.org > Date: Fri, 25 Nov 2022 09:47:29 +0200 > > >> minibuffer-previous-* are intended to navigate the completion list > >> horizontally while the minibuffer is active, and minibuffer-previous-line-* > >> vertically. > > > > Then the names could be simplified as minibuffer-up-line and > > minibuffer-down-line. It will also make the names less confusing, IMO. > > It's not only about the minibuffer, but also about completions, > so the commands names should also include the word "completion". minibuffer-up-completions-line is still shorter and less confusing. > >> > But one immediate alternative is to use and for > >> > the minibuffer-previous-* family, like previous-completion does. > >> > >> and are useful to move point in the minibuffer. > > > > Then maybe PgUp and PgDn? > > PgUp and PgDn are used to scroll the completions buffer from the minibuffer. That's a bad idea, IMO: scrolling another window should use something like M-PgDn and C-M-v, like we do with other windows elsewhere. > > If the arrow keys are already taken, having an option that will change their > > effect would be confusing, I think. > > It does the same as icomplete-vertical-mode where the arrow keys > are not confusing. icomplete-vertical-mode is a an opt-in feature, so what it does is less relevant to the issue at point, IMO. From debbugs-submit-bounces@debbugs.gnu.org Mon Nov 28 03:58:52 2022 Received: (at 59486) by debbugs.gnu.org; 28 Nov 2022 08:58:52 +0000 Received: from localhost ([127.0.0.1]:47330 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ozZyV-0003OU-RS for submit@debbugs.gnu.org; Mon, 28 Nov 2022 03:58:52 -0500 Received: from relay8-d.mail.gandi.net ([217.70.183.201]:38783) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ozZyT-0003OC-D6 for 59486@debbugs.gnu.org; Mon, 28 Nov 2022 03:58:49 -0500 Received: (Authenticated sender: juri@linkov.net) by mail.gandi.net (Postfix) with ESMTPSA id 971EA1BF20D; Mon, 28 Nov 2022 08:58:41 +0000 (UTC) From: Juri Linkov To: Eli Zaretskii Subject: Re: bug#59486: completion-auto-wrap disobeyed by vertical navigation In-Reply-To: <83lenzv37h.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 25 Nov 2022 10:38:26 +0200") Organization: LINKOV.NET References: <8635aayjm6.fsf@mail.linkov.net> <86zgchbj61.fsf@mail.linkov.net> <86h6yoye87.fsf@mail.linkov.net> <834juoydlv.fsf@gnu.org> <86pmdcw6hj.fsf@mail.linkov.net> <83zgcgur9t.fsf@gnu.org> <86a64f327i.fsf@mail.linkov.net> <83lenzv37h.fsf@gnu.org> Date: Mon, 28 Nov 2022 09:56:07 +0200 Message-ID: <86mt8blaoo.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 59486 Cc: 59486@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) >> >> minibuffer-previous-* are intended to navigate the completion list >> >> horizontally while the minibuffer is active, and minibuffer-previous-line-* >> >> vertically. >> > >> > Then the names could be simplified as minibuffer-up-line and >> > minibuffer-down-line. It will also make the names less confusing, IMO. >> >> It's not only about the minibuffer, but also about completions, >> so the commands names should also include the word "completion". > > minibuffer-up-completions-line is still shorter and less confusing. 'minibuffer-previous-line-completion' is named after 'previous-line' that is not named 'up-line'. There are 'left-char', 'left-word', etc. only in horizontal direction, but no 'up-line' in vertical direction. So it makes no sense to propagate this inconsistency to completion command names where there are only 'previous-completion', but no 'left-completion'. >> It does the same as icomplete-vertical-mode where the arrow keys >> are not confusing. > > icomplete-vertical-mode is a an opt-in feature, so what it does is less > relevant to the issue at point, IMO. The proposed feature is also opt-in. From debbugs-submit-bounces@debbugs.gnu.org Tue Oct 31 03:45:42 2023 Received: (at 59486) by debbugs.gnu.org; 31 Oct 2023 07:45:42 +0000 Received: from localhost ([127.0.0.1]:47396 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qxjRV-0005n0-G7 for submit@debbugs.gnu.org; Tue, 31 Oct 2023 03:45:42 -0400 Received: from relay1-d.mail.gandi.net ([217.70.183.193]:45865) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qxjRS-0005Qo-LV for 59486@debbugs.gnu.org; Tue, 31 Oct 2023 03:45:39 -0400 Received: by mail.gandi.net (Postfix) with ESMTPSA id BD5FD240007 for <59486@debbugs.gnu.org>; Tue, 31 Oct 2023 07:44:57 +0000 (UTC) From: Juri Linkov To: 59486@debbugs.gnu.org Subject: Re: bug#59486: completion-auto-wrap disobeyed by vertical navigation In-Reply-To: <86zgchbj61.fsf@mail.linkov.net> (Juri Linkov's message of "Wed, 23 Nov 2022 20:49:27 +0200") Organization: LINKOV.NET References: <8635aayjm6.fsf@mail.linkov.net> <86zgchbj61.fsf@mail.linkov.net> Date: Tue, 31 Oct 2023 09:44:28 +0200 Message-ID: <86r0lbuvrv.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-GND-Sasl: juri@linkov.net X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 59486 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) --=-=-= Content-Type: text/plain > In a multi-column layout, the keys and > wrap to the beginning/end of the completions buffer, > but and don't. Here is a patch that supports > completion-auto-wrap for wrapping to the top/bottom: Ok, here is a better patch: --=-=-= Content-Type: text/x-diff; charset=utf-8 Content-Disposition: inline; filename=next-line-completion.patch Content-Transfer-Encoding: 8bit diff --git a/etc/NEWS b/etc/NEWS index 9c0f28e3fa9..cabdfe50a19 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -999,8 +999,15 @@ A major mode based on the tree-sitter library for editing Elixir files. *** New major mode 'lua-ts-mode'. A major mode based on the tree-sitter library for editing Lua files. +** Minibuffer and Completions + +*** New commands 'previous-line-completion' and 'next-line-completion'. +Bound to [up] and [down] respectively, they navigate the *Completions* +buffer vertically, wrapping at the top/bottom when 'completion-auto-wrap' +is non-nil. + +++ -** New global minor mode 'minibuffer-regexp-mode'. +*** New global minor mode 'minibuffer-regexp-mode'. This is a minor mode for editing regular expressions in the minibuffer. It highlights parens via ‘show-paren-mode’ and ‘blink-matching-paren’ in a user-friendly way, avoids reporting alleged paren mismatches and makes diff --git a/lisp/simple.el b/lisp/simple.el index ec14bec9e07..b0782d1f8ae 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -9820,6 +9827,8 @@ completion-list-mode-map (define-key map "\C-m" 'choose-completion) (define-key map "\e\e\e" 'delete-completion-window) (define-key map [remap keyboard-quit] #'delete-completion-window) + (define-key map [up] 'previous-line-completion) + (define-key map [down] 'next-line-completion) (define-key map [left] 'previous-completion) (define-key map [right] 'next-completion) (define-key map [?\t] 'next-completion) @@ -9882,7 +9891,8 @@ delete-completion-window (defcustom completion-auto-wrap t "Non-nil means to wrap around when selecting completion options. -This affects the commands `next-completion' and `previous-completion'. +This affects the commands `next-completion', `previous-completion', +`next-line-completion' and `previous-line-completion'. When `completion-auto-select' is t, it wraps through the minibuffer for the commands bound to the TAB key." :type 'boolean @@ -10000,6 +10010,87 @@ next-completion (when (/= 0 n) (switch-to-minibuffer)))) +(defun previous-line-completion (&optional n) + "Move to the item on the previous line in the completion list. +With prefix argument N, move back N items line-wise (negative N +means move forward). + +Also see the `completion-auto-wrap' variable." + (interactive "p") + (next-line-completion (- n))) + +(defun next-line-completion (&optional n) + "Move to the item on the next line in the completion list. +With prefix argument N, move N items line-wise (negative N +means move backward). + +Also see the `completion-auto-wrap' variable." + (interactive "p") + (let (line column pos) + (when (and (bobp) + (> n 0) + (get-text-property (point) 'mouse-face) + (not (get-text-property (point) 'first-completion))) + (let ((inhibit-read-only t)) + (add-text-properties (point) (1+ (point)) '(first-completion t))) + (setq n (1- n))) + + (if (get-text-property (point) 'mouse-face) + ;; If in a completion, move to the start of it. + (when (and (not (bobp)) + (get-text-property (1- (point)) 'mouse-face)) + (goto-char (previous-single-property-change (point) 'mouse-face))) + ;; Try to move to the previous completion. + (setq pos (previous-single-property-change (point) 'mouse-face)) + (if pos + ;; Move to the start of the previous completion. + (progn + (goto-char pos) + (unless (get-text-property (point) 'mouse-face) + (goto-char (previous-single-property-change + (point) 'mouse-face nil (point-min))))) + (cond ((> n 0) (setq n (1- n)) (first-completion)) + ((< n 0) (first-completion))))) + + (while (> n 0) + (setq pos nil column (current-column) line (line-number-at-pos)) + (when (and (or (not (eq (forward-line 1) 0)) + (eobp) + (not (eq (move-to-column column) column)) + (not (get-text-property (point) 'mouse-face))) + completion-auto-wrap) + (save-excursion + (goto-char (point-min)) + (when (and (eq (move-to-column column) column) + (get-text-property (point) 'mouse-face)) + (setq pos (point))) + (while (and (not pos) (> line (line-number-at-pos))) + (forward-line 1) + (when (and (eq (move-to-column column) column) + (get-text-property (point) 'mouse-face)) + (setq pos (point))))) + (if pos (goto-char pos))) + (setq n (1- n))) + + (while (< n 0) + (setq pos nil column (current-column) line (line-number-at-pos)) + (when (and (or (not (eq (forward-line -1) 0)) + (not (eq (move-to-column column) column)) + (not (get-text-property (point) 'mouse-face))) + completion-auto-wrap) + (save-excursion + (goto-char (point-max)) + (when (and (eq (move-to-column column) column) + (get-text-property (point) 'mouse-face)) + (setq pos (point))) + (while (and (not pos) (< line (line-number-at-pos))) + (forward-line -1) + (when (and (eq (move-to-column column) column) + (get-text-property (point) 'mouse-face)) + (setq pos (point))))) + (if pos (goto-char pos))) + (setq n (1+ n))))) + (defun choose-completion (&optional event no-exit no-quit) "Choose the completion at point. If EVENT, use EVENT's position to determine the starting position. --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Wed Nov 01 13:47:54 2023 Received: (at 59486) by debbugs.gnu.org; 1 Nov 2023 17:47:54 +0000 Received: from localhost ([127.0.0.1]:52518 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qyFJq-0002hn-1W for submit@debbugs.gnu.org; Wed, 01 Nov 2023 13:47:54 -0400 Received: from relay8-d.mail.gandi.net ([2001:4b98:dc4:8::228]:59399) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qyFJn-0002hT-00 for 59486@debbugs.gnu.org; Wed, 01 Nov 2023 13:47:52 -0400 Received: by mail.gandi.net (Postfix) with ESMTPSA id E1F071BF208 for <59486@debbugs.gnu.org>; Wed, 1 Nov 2023 17:47:07 +0000 (UTC) From: Juri Linkov To: 59486@debbugs.gnu.org Subject: Re: bug#59486: completion-auto-wrap disobeyed by vertical navigation In-Reply-To: <86r0lbuvrv.fsf@mail.linkov.net> (Juri Linkov's message of "Tue, 31 Oct 2023 09:44:28 +0200") Organization: LINKOV.NET References: <8635aayjm6.fsf@mail.linkov.net> <86zgchbj61.fsf@mail.linkov.net> <86r0lbuvrv.fsf@mail.linkov.net> Date: Wed, 01 Nov 2023 19:45:50 +0200 Message-ID: <86a5rxwf9v.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-GND-Sasl: juri@linkov.net X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 59486 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) --=-=-= Content-Type: text/plain >> In a multi-column layout, the keys and >> wrap to the beginning/end of the completions buffer, >> but and don't. Here is a patch that supports >> completion-auto-wrap for wrapping to the top/bottom: > > Ok, here is a better patch: Pushed to master. Now here is a patch that implements the long-discussed feature of using arrow keys for navigating completions from the minibuffer only when the *Completions* buffer is visible. It's disabled by default and can be enabled by the option 'minibuffer-completion-visible'. It works nicely for the in-buffer completions as well: --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=minibuffer-completion-visible.patch diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index 2120e31775e..2601e705aa0 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -2707,8 +2716,14 @@ completion-in-region-mode completion-in-region-mode-predicate) (setq-local minibuffer-completion-auto-choose nil) (add-hook 'post-command-hook #'completion-in-region--postch) - (push `(completion-in-region-mode . ,completion-in-region-mode-map) - minor-mode-overriding-map-alist))) + (let* ((keymap completion-in-region-mode-map) + (keymap (if minibuffer-completion-visible + (make-composed-keymap + (list minibuffer-local-visible-completion-map + keymap)) + keymap))) + (push `(completion-in-region-mode . ,keymap) + minor-mode-overriding-map-alist)))) ;; Define-minor-mode added our keymap to minor-mode-map-alist, but we want it ;; on minor-mode-overriding-map-alist instead. @@ -2953,7 +2972,32 @@ minibuffer-mode :interactive nil ;; Enable text conversion, but always make sure `RET' does ;; something. - (setq text-conversion-style 'action)) + (setq text-conversion-style 'action) + (when minibuffer-completion-visible + (setq-local minibuffer-completion-auto-choose nil))) + +(defcustom minibuffer-completion-visible t + "Non-nil means to navigate completions with arrows from the minibuffer. +This has effect only when the window with the *Completions* buffer +is visible on the screen." + :type 'boolean + :version "30.1") + +(defun minibuffer-bind-visible (binding) + `(menu-item + "" ,binding + :filter ,(lambda (cmd) + (when (get-buffer-window "*Completions*" 0) + cmd)))) + +(defvar-keymap minibuffer-local-visible-completion-map + :doc "Local keymap for minibuffer input with visible completions." + "" (minibuffer-bind-visible #'minibuffer-previous-completion) + "" (minibuffer-bind-visible #'minibuffer-next-completion) + "" (minibuffer-bind-visible #'minibuffer-previous-line-completion) + "" (minibuffer-bind-visible #'minibuffer-next-line-completion) + "RET" (minibuffer-bind-visible #'minibuffer-choose-completion) + "C-g" (minibuffer-bind-visible #'minibuffer-hide-completions)) ;;; Completion tables. @@ -4370,6 +4414,11 @@ completing-read-default ;; in minibuffer-local-filename-completion-map can ;; override bindings in base-keymap. base-keymap))) + (keymap (if minibuffer-completion-visible + (make-composed-keymap + (list minibuffer-local-visible-completion-map + keymap)) + keymap)) (buffer (current-buffer)) (c-i-c completion-ignore-case) (result @@ -4489,8 +4538,9 @@ minibuffer-completion-auto-choose :type 'boolean :version "29.1") -(defun minibuffer-next-completion (&optional n) +(defun minibuffer-next-completion (&optional n vertical) "Move to the next item in its completions window from the minibuffer. +When the optional argument VERTICAL is non-nil, move vertically. When `minibuffer-completion-auto-choose' is non-nil, then also insert the selected completion to the minibuffer." (interactive "p") @@ -4498,7 +4548,9 @@ minibuffer-next-completion (with-minibuffer-completions-window (when completions-highlight-face (setq-local cursor-face-highlight-nonselected-window t)) - (next-completion (or n 1)) + (if vertical + (next-line-completion (or n 1)) + (next-completion (or n 1))) (when auto-choose (let ((completion-use-base-affixes t)) (choose-completion nil t t)))))) @@ -4510,6 +4562,20 @@ minibuffer-previous-completion (interactive "p") (minibuffer-next-completion (- (or n 1)))) +(defun minibuffer-next-line-completion (&optional n) + "Move to the next completion line from the minibuffer. +When `minibuffer-completion-auto-choose' is non-nil, then also +insert the selected completion to the minibuffer." + (interactive "p") + (minibuffer-next-completion (or n 1) t)) + +(defun minibuffer-previous-line-completion (&optional n) + "Move to the previous completion line from the minibuffer. +When `minibuffer-completion-auto-choose' is non-nil, then also +insert the selected completion to the minibuffer." + (interactive "p") + (minibuffer-next-completion (- (or n 1)) t)) + (defun minibuffer-choose-completion (&optional no-exit no-quit) "Run `choose-completion' from the minibuffer in its completions window. With prefix argument NO-EXIT, insert the completion at point to the --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Thu Nov 02 04:12:22 2023 Received: (at 59486) by debbugs.gnu.org; 2 Nov 2023 08:12:22 +0000 Received: from localhost ([127.0.0.1]:53841 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qySoQ-0006vU-9E for submit@debbugs.gnu.org; Thu, 02 Nov 2023 04:12:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59016) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qySoN-0006vG-Ln for 59486@debbugs.gnu.org; Thu, 02 Nov 2023 04:12:21 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qySni-000107-E9; Thu, 02 Nov 2023 04:11:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=8H1MAGgNMH6QdHQgR/qRlKpHeBLoucy8glEcY39MlNo=; b=g0aT5/fl0VdN 0ZaWgixWjI1ZM8iC9YWradI7WlS3OwuXn6/9+PNV3nWpeHf+tPUhqC2AaC9uTJOwgWHvU+qb7BDC/ 26cNmqNrgiMAfmOVEM15j2CSTwwXC3A4cDWWmrUa1WrXXI4Vgv1KD+bzCuAW/2oKZXBUzAGbycmRs RO+/+pZ87rJ+QOHqwAfPFT4tnfHORTKtqjkaYxyqipycfjdDlUeFnjU3oietqXXtTGkXaQ9r01S2P a0E/+92PbnJwm5zZr69K8ue8/Wf1d0H7qk/WUMPUfR3nu7Ilua+oe4eUNkcYVQnjt1kJEF7ohGQvl g5JlRVDA7dDDnUGBlHQXXQ==; Date: Thu, 02 Nov 2023 10:11:31 +0200 Message-Id: <83a5rw8tho.fsf@gnu.org> From: Eli Zaretskii To: Juri Linkov In-Reply-To: <86a5rxwf9v.fsf@mail.linkov.net> (message from Juri Linkov on Wed, 01 Nov 2023 19:45:50 +0200) Subject: Re: bug#59486: completion-auto-wrap disobeyed by vertical navigation References: <8635aayjm6.fsf@mail.linkov.net> <86zgchbj61.fsf@mail.linkov.net> <86r0lbuvrv.fsf@mail.linkov.net> <86a5rxwf9v.fsf@mail.linkov.net> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59486 Cc: 59486@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Juri Linkov > Date: Wed, 01 Nov 2023 19:45:50 +0200 > > Now here is a patch that implements the long-discussed feature of > using arrow keys for navigating completions from the minibuffer > only when the *Completions* buffer is visible. > > It's disabled by default and can be enabled by the option > 'minibuffer-completion-visible'. It works nicely for > the in-buffer completions as well: Thanks. I have a few comments. > +(defcustom minibuffer-completion-visible t > + "Non-nil means to navigate completions with arrows from the minibuffer. > +This has effect only when the window with the *Completions* buffer > +is visible on the screen." This doc string needs to be improved, as it currently doesn't explain its effect in enough detail, IMO. Maybe because "non-nil means to navigate" is awkward/confusing English. Regarding the last sentence of the doc string: does it mean that if the *Completions* buffer is not in any window, the arrow keys in the minibuffer will not move point in that buffer? If so, why this strange design? > +(defun minibuffer-bind-visible (binding) > + `(menu-item > + "" ,binding > + :filter ,(lambda (cmd) > + (when (get-buffer-window "*Completions*" 0) > + cmd)))) This function needs a doc string and possibly a better name, to match what it actually does. The argument zero to get-buffer-window AFAIU means that it will return non-nil when the buffer is shown in some window on an iconified frame, and I wonder why we would consider such a buffer "visible". > + "RET" (minibuffer-bind-visible #'minibuffer-choose-completion) AFAICT, this important binding is not mentioned or hinted in the doc string of the new option. > -(defun minibuffer-next-completion (&optional n) > +(defun minibuffer-next-completion (&optional n vertical) > "Move to the next item in its completions window from the minibuffer. > +When the optional argument VERTICAL is non-nil, move vertically. The "move vertically" part contradicts the "to the next item" part, doesn't it? Thus, I think the added sentence should be more detailed, and should explicitly say that the result will be a move to the next line, not the next item (and perhaps also include a link to next-line-completion). > +(defun minibuffer-next-line-completion (&optional n) > + "Move to the next completion line from the minibuffer. This sentence is misleading, IMO. Assuming I understood what you mean, I would rephrase: Move to the completion candidate on the next line in the completions buffer. > +When `minibuffer-completion-auto-choose' is non-nil, then also > +insert the selected completion to the minibuffer." Please make a habit of talking about "completion candidate" in these cases, not about "completion". The latter is ambiguous, since it can refer both to a candidate and to the action of performing completion. > +(defun minibuffer-previous-line-completion (&optional n) > + "Move to the previous completion line from the minibuffer. > +When `minibuffer-completion-auto-choose' is non-nil, then also > +insert the selected completion to the minibuffer." Same here. From debbugs-submit-bounces@debbugs.gnu.org Thu Nov 02 13:26:16 2023 Received: (at 59486) by debbugs.gnu.org; 2 Nov 2023 17:26:16 +0000 Received: from localhost ([127.0.0.1]:55969 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qybSQ-0001kh-MP for submit@debbugs.gnu.org; Thu, 02 Nov 2023 13:26:15 -0400 Received: from relay5-d.mail.gandi.net ([217.70.183.197]:50813) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qybSL-0001kH-Bw for 59486@debbugs.gnu.org; Thu, 02 Nov 2023 13:26:13 -0400 Received: by mail.gandi.net (Postfix) with ESMTPSA id 974A01C0005; Thu, 2 Nov 2023 17:25:27 +0000 (UTC) From: Juri Linkov To: Eli Zaretskii Subject: Re: bug#59486: completion-auto-wrap disobeyed by vertical navigation In-Reply-To: <83a5rw8tho.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 02 Nov 2023 10:11:31 +0200") Organization: LINKOV.NET References: <8635aayjm6.fsf@mail.linkov.net> <86zgchbj61.fsf@mail.linkov.net> <86r0lbuvrv.fsf@mail.linkov.net> <86a5rxwf9v.fsf@mail.linkov.net> <83a5rw8tho.fsf@gnu.org> Date: Thu, 02 Nov 2023 19:14:00 +0200 Message-ID: <86il6kqhgn.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-GND-Sasl: juri@linkov.net X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 59486 Cc: 59486@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) --=-=-= Content-Type: text/plain >> +(defcustom minibuffer-completion-visible t >> + "Non-nil means to navigate completions with arrows from the minibuffer. >> +This has effect only when the window with the *Completions* buffer >> +is visible on the screen." > > This doc string needs to be improved, as it currently doesn't explain > its effect in enough detail, IMO. Maybe because "non-nil means to > navigate" is awkward/confusing English. Now improved in a new patch. > Regarding the last sentence of the doc string: does it mean that if > the *Completions* buffer is not in any window, the arrow keys in the > minibuffer will not move point in that buffer? If the *Completions* buffer is not in any window, the arrow keys move point in the minibuffer. Now explained this in the docstring. >> +(defun minibuffer-bind-visible (binding) >> + `(menu-item >> + "" ,binding >> + :filter ,(lambda (cmd) >> + (when (get-buffer-window "*Completions*" 0) >> + cmd)))) > > This function needs a doc string and possibly a better name, to match > what it actually does. Done. > The argument zero to get-buffer-window AFAIU means that it will return > non-nil when the buffer is shown in some window on an iconified frame, > and I wonder why we would consider such a buffer "visible". (get-buffer-window "*Completions*" 0) is used everywhere in minibuffer.el and simple.el, so the argument zero is for compatibility with other minibuffer completion commands. >> + "RET" (minibuffer-bind-visible #'minibuffer-choose-completion) > > AFAICT, this important binding is not mentioned or hinted in the doc > string of the new option. Now mentioned. >> -(defun minibuffer-next-completion (&optional n) >> +(defun minibuffer-next-completion (&optional n vertical) >> "Move to the next item in its completions window from the minibuffer. >> +When the optional argument VERTICAL is non-nil, move vertically. > > The "move vertically" part contradicts the "to the next item" part, > doesn't it? The next item can be on the axis x or y. > Thus, I think the added sentence should be more detailed, > and should explicitly say that the result will be a move to the next > line, not the next item (and perhaps also include a link to > next-line-completion). Ok, improved with a link. >> +(defun minibuffer-next-line-completion (&optional n) >> + "Move to the next completion line from the minibuffer. > > This sentence is misleading, IMO. Assuming I understood what you > mean, I would rephrase: > > Move to the completion candidate on the next line in the completions buffer. This line is too long and doesn't mention the minibuffer. So I added it to the rest of the docstring. >> +When `minibuffer-completion-auto-choose' is non-nil, then also >> +insert the selected completion to the minibuffer." > > Please make a habit of talking about "completion candidate" in these > cases, not about "completion". The latter is ambiguous, since it can > refer both to a candidate and to the action of performing completion. Ok, fixed. >> +(defun minibuffer-previous-line-completion (&optional n) >> + "Move to the previous completion line from the minibuffer. >> +When `minibuffer-completion-auto-choose' is non-nil, then also >> +insert the selected completion to the minibuffer." > > Same here. Here is a new patch: --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=minibuffer-visible-completions.patch diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index 2120e31775e..56ba7e235f2 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -2707,8 +2716,14 @@ completion-in-region-mode completion-in-region-mode-predicate) (setq-local minibuffer-completion-auto-choose nil) (add-hook 'post-command-hook #'completion-in-region--postch) - (push `(completion-in-region-mode . ,completion-in-region-mode-map) - minor-mode-overriding-map-alist))) + (let* ((keymap completion-in-region-mode-map) + (keymap (if minibuffer-visible-completions + (make-composed-keymap + (list minibuffer-visible-completions-map + keymap)) + keymap))) + (push `(completion-in-region-mode . ,keymap) + minor-mode-overriding-map-alist)))) ;; Define-minor-mode added our keymap to minor-mode-map-alist, but we want it ;; on minor-mode-overriding-map-alist instead. @@ -2953,7 +2972,41 @@ minibuffer-mode :interactive nil ;; Enable text conversion, but always make sure `RET' does ;; something. - (setq text-conversion-style 'action)) + (setq text-conversion-style 'action) + (when minibuffer-visible-completions + (setq-local minibuffer-completion-auto-choose nil))) + +(defcustom minibuffer-visible-completions t + "When non-nil, visible completions can be navigated from the minibuffer. +This means that when the *Completions* buffer is visible in a window, +then you can use the arrow keys in the minibuffer to move the cursor +in the *Completions* buffer. Then you can type `RET', +and the candidate highlighted the *Completions* buffer +will be accepted. +But when the *Completions* buffer is not displayed on the screen, +then the arrow keys move point in the minibuffer as usual, and +`RET' accepts the input typed in the minibuffer." + :type 'boolean + :version "30.1") + +(defun minibuffer-visible-completions-bind (binding) + "Use BINDING when completions are visible. +Return an item that is enabled only when a window +displaying the *Completions* buffer exists." + `(menu-item + "" ,binding + :filter ,(lambda (cmd) + (when (get-buffer-window "*Completions*" 0) + cmd)))) + +(defvar-keymap minibuffer-visible-completions-map + :doc "Local keymap for minibuffer input with visible completions." + "" (minibuffer-visible-completions-bind #'minibuffer-previous-completion) + "" (minibuffer-visible-completions-bind #'minibuffer-next-completion) + "" (minibuffer-visible-completions-bind #'minibuffer-previous-line-completion) + "" (minibuffer-visible-completions-bind #'minibuffer-next-line-completion) + "RET" (minibuffer-visible-completions-bind #'minibuffer-choose-completion) + "C-g" (minibuffer-visible-completions-bind #'minibuffer-hide-completions)) ;;; Completion tables. @@ -4370,6 +4423,11 @@ completing-read-default ;; in minibuffer-local-filename-completion-map can ;; override bindings in base-keymap. base-keymap))) + (keymap (if minibuffer-visible-completions + (make-composed-keymap + (list minibuffer-visible-completions-map + keymap)) + keymap)) (buffer (current-buffer)) (c-i-c completion-ignore-case) (result @@ -4489,16 +4547,21 @@ minibuffer-completion-auto-choose :type 'boolean :version "29.1") -(defun minibuffer-next-completion (&optional n) +(defun minibuffer-next-completion (&optional n vertical) "Move to the next item in its completions window from the minibuffer. +When the optional argument VERTICAL is non-nil, move vertically +to the next item on the next line using `next-line-completion'. +Otherwise, move to the next item horizontally using `next-completion'. When `minibuffer-completion-auto-choose' is non-nil, then also -insert the selected completion to the minibuffer." +insert the selected completion candidate to the minibuffer." (interactive "p") (let ((auto-choose minibuffer-completion-auto-choose)) (with-minibuffer-completions-window (when completions-highlight-face (setq-local cursor-face-highlight-nonselected-window t)) - (next-completion (or n 1)) + (if vertical + (next-line-completion (or n 1)) + (next-completion (or n 1))) (when auto-choose (let ((completion-use-base-affixes t)) (choose-completion nil t t)))))) @@ -4506,17 +4569,35 @@ minibuffer-next-completion (defun minibuffer-previous-completion (&optional n) "Move to the previous item in its completions window from the minibuffer. When `minibuffer-completion-auto-choose' is non-nil, then also -insert the selected completion to the minibuffer." +insert the selected completion candidate to the minibuffer." (interactive "p") (minibuffer-next-completion (- (or n 1)))) +(defun minibuffer-next-line-completion (&optional n) + "Move to the next completion line from the minibuffer. +This means to move to the completion candidate on the next line +in the *Completions* buffer while point stays in the minibuffer. +When `minibuffer-completion-auto-choose' is non-nil, then also +insert the selected completion candidate to the minibuffer." + (interactive "p") + (minibuffer-next-completion (or n 1) t)) + +(defun minibuffer-previous-line-completion (&optional n) + "Move to the previous completion line from the minibuffer. +This means to move to the completion candidate on the previous line +in the *Completions* buffer while point stays in the minibuffer. +When `minibuffer-completion-auto-choose' is non-nil, then also +insert the selected completion candidate to the minibuffer." + (interactive "p") + (minibuffer-next-completion (- (or n 1)) t)) + (defun minibuffer-choose-completion (&optional no-exit no-quit) "Run `choose-completion' from the minibuffer in its completions window. -With prefix argument NO-EXIT, insert the completion at point to the -minibuffer, but don't exit the minibuffer. When the prefix argument +With prefix argument NO-EXIT, insert the completion candidate at point to +the minibuffer, but don't exit the minibuffer. When the prefix argument is not provided, then whether to exit the minibuffer depends on the value of `completion-no-auto-exit'. -If NO-QUIT is non-nil, insert the completion at point to the +If NO-QUIT is non-nil, insert the completion candidate at point to the minibuffer, but don't quit the completions window." (interactive "P") (with-minibuffer-completions-window --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sun Nov 05 12:55:31 2023 Received: (at 59486) by debbugs.gnu.org; 5 Nov 2023 17:55:31 +0000 Received: from localhost ([127.0.0.1]:38130 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qzhLP-00027j-0W for submit@debbugs.gnu.org; Sun, 05 Nov 2023 12:55:31 -0500 Received: from relay6-d.mail.gandi.net ([2001:4b98:dc4:8::226]:44697) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qzhLN-00027U-95 for 59486@debbugs.gnu.org; Sun, 05 Nov 2023 12:55:29 -0500 Received: by mail.gandi.net (Postfix) with ESMTPSA id CC3F5C0002; Sun, 5 Nov 2023 17:54:44 +0000 (UTC) From: Juri Linkov To: Eli Zaretskii Subject: Re: bug#59486: completion-auto-wrap disobeyed by vertical navigation In-Reply-To: <86il6kqhgn.fsf@mail.linkov.net> (Juri Linkov's message of "Thu, 02 Nov 2023 19:14:00 +0200") Organization: LINKOV.NET References: <8635aayjm6.fsf@mail.linkov.net> <86zgchbj61.fsf@mail.linkov.net> <86r0lbuvrv.fsf@mail.linkov.net> <86a5rxwf9v.fsf@mail.linkov.net> <83a5rw8tho.fsf@gnu.org> <86il6kqhgn.fsf@mail.linkov.net> Date: Sun, 05 Nov 2023 19:53:23 +0200 Message-ID: <86pm0o84to.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-GND-Sasl: juri@linkov.net X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 59486 Cc: 59486@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) >> The argument zero to get-buffer-window AFAIU means that it will return >> non-nil when the buffer is shown in some window on an iconified frame, >> and I wonder why we would consider such a buffer "visible". > > (get-buffer-window "*Completions*" 0) is used everywhere in minibuffer.el > and simple.el, so the argument zero is for compatibility with other > minibuffer completion commands. During testing I discovered that the condition should be more complex. The problem is that the logic should be bound only to the minibuffer that showed the completions, not in other minibuffers within a set of recursive minibuffers. An example: `M-x TAB C-h v down RET' raised an error "Minibuffer is not active for completion". This error comes from `choose-completion-string', so I copied the same logic from `choose-completion-string': (when-let ((window (get-buffer-window "*Completions*" 0))) (when (eq (buffer-local-value 'completion-reference-buffer (window-buffer window)) (window-buffer (active-minibuffer-window))) cmd)) >> Same here. > > Here is a new patch: Now pushed the fixed patch. From debbugs-submit-bounces@debbugs.gnu.org Wed Nov 15 12:46:27 2023 Received: (at 59486) by debbugs.gnu.org; 15 Nov 2023 17:46:27 +0000 Received: from localhost ([127.0.0.1]:53697 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1r3Jy7-0001cj-7E for submit@debbugs.gnu.org; Wed, 15 Nov 2023 12:46:27 -0500 Received: from relay4-d.mail.gandi.net ([217.70.183.196]:32903) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1r3Jy6-0001cT-1n; Wed, 15 Nov 2023 12:46:26 -0500 Received: by mail.gandi.net (Postfix) with ESMTPSA id 7B1FCE0003; Wed, 15 Nov 2023 17:46:20 +0000 (UTC) From: Juri Linkov To: 59486@debbugs.gnu.org Subject: Re: bug#59486: completion-auto-wrap disobeyed by vertical navigation In-Reply-To: <86pm0o84to.fsf@mail.linkov.net> (Juri Linkov's message of "Sun, 05 Nov 2023 19:53:23 +0200") Organization: LINKOV.NET References: <8635aayjm6.fsf@mail.linkov.net> <86zgchbj61.fsf@mail.linkov.net> <86r0lbuvrv.fsf@mail.linkov.net> <86a5rxwf9v.fsf@mail.linkov.net> <83a5rw8tho.fsf@gnu.org> <86il6kqhgn.fsf@mail.linkov.net> <86pm0o84to.fsf@mail.linkov.net> Date: Wed, 15 Nov 2023 19:45:59 +0200 Message-ID: <861qcqkizs.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-GND-Sasl: juri@linkov.net X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 59486 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) close 59486 30.0.50 thanks >> Here is a new patch: > > Now pushed the fixed patch. Looks like everything is done here, so closing. From unknown Mon Jun 23 14:58:47 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Thu, 14 Dec 2023 12:24:16 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator