* lisp/simple.el (next-line-completion): Better handing of group lines.

Simplify to not compare the result of 'move-to-column'
with the value 'column'.  Such comparison prevented from moving
over lines without completion candidates such as group lines (bug#68688).

* test/lisp/minibuffer-tests.el (completions-group-navigation-test):
Add more group candidates to create more columns and to test
moving over group lines and over columns without candidates.
This commit is contained in:
Juri Linkov 2024-01-25 19:52:08 +02:00
parent b07265f8ee
commit d22a3e5afe
2 changed files with 49 additions and 21 deletions

View file

@ -10062,7 +10062,7 @@ Also see the `completion-auto-wrap' variable."
(while (and (not found)
(eq (forward-line 1) 0)
(not (eobp))
(eq (move-to-column column) column))
(move-to-column column))
(when (get-text-property (point) 'mouse-face)
(setq found t)))
(when (not found)
@ -10086,7 +10086,7 @@ Also see the `completion-auto-wrap' variable."
(completion--move-to-candidate-start)
(while (and (not found)
(eq (forward-line -1) 0)
(eq (move-to-column column) column))
(move-to-column column))
(when (get-text-property (point) 'mouse-face)
(setq found t)))
(when (not found)

View file

@ -565,35 +565,63 @@
(if transform
name
(pcase name
(`"aa" "Group 1")
(`"ab" "Group 2")
(`"ac" "Group 3")))))
(`"aa1" "Group 1")
(`"aa2" "Group 1")
(`"aa3" "Group 1")
(`"aa4" "Group 1")
(`"ab1" "Group 2")
(`"ac1" "Group 3")
(`"ac2" "Group 3")))))
(category . unicode-name))
(complete-with-action action '("aa" "ab" "ac") string pred)))
(complete-with-action action '("aa1" "aa2" "aa3" "aa4" "ab1" "ac1" "ac2")
string pred)))
(insert "a")
(minibuffer-completion-help)
(switch-to-completions)
(should (equal "aa" (get-text-property (point) 'completion--string)))
(should (equal "aa1" (get-text-property (point) 'completion--string)))
(let ((completion-auto-wrap t))
(next-completion 3))
(should (equal "aa" (get-text-property (point) 'completion--string)))
(next-completion 7))
(should (equal "aa1" (get-text-property (point) 'completion--string)))
(let ((completion-auto-wrap nil))
(next-completion 3))
(should (equal "ac" (get-text-property (point) 'completion--string)))
(next-completion 7))
(should (equal "ac2" (get-text-property (point) 'completion--string)))
(first-completion)
(let ((completion-auto-wrap t))
;; First column
(first-completion)
(next-line-completion 1)
(should (equal "ab" (get-text-property (point) 'completion--string)))
(next-line-completion 2)
(should (equal "aa" (get-text-property (point) 'completion--string)))
(previous-line-completion 2)
(should (equal "ab" (get-text-property (point) 'completion--string))))
(let ((completion-auto-wrap nil))
(should (equal "aa4" (get-text-property (point) 'completion--string)))
(next-line-completion 3)
(should (equal "ac" (get-text-property (point) 'completion--string)))
(previous-line-completion 3)
(should (equal "aa" (get-text-property (point) 'completion--string))))))
(should (equal "aa1" (get-text-property (point) 'completion--string)))
(previous-line-completion 2)
(should (equal "ab1" (get-text-property (point) 'completion--string)))
;; Second column
(first-completion)
(next-completion 1)
(should (equal "aa2" (get-text-property (point) 'completion--string)))
(next-line-completion 1)
(should (equal "ac2" (get-text-property (point) 'completion--string)))
(next-line-completion 1)
(should (equal "aa2" (get-text-property (point) 'completion--string)))
(previous-line-completion 1)
(should (equal "ac2" (get-text-property (point) 'completion--string)))
(previous-line-completion 1)
(should (equal "aa2" (get-text-property (point) 'completion--string)))
;; Third column
(first-completion)
(next-completion 2)
(should (equal "aa3" (get-text-property (point) 'completion--string)))
(next-line-completion 1)
(should (equal "aa3" (get-text-property (point) 'completion--string))))
(let ((completion-auto-wrap nil))
(first-completion)
(next-line-completion 7)
(should (equal "ac2" (get-text-property (point) 'completion--string)))
(previous-line-completion 7)
(should (equal "aa1" (get-text-property (point) 'completion--string))))))
(provide 'minibuffer-tests)
;;; minibuffer-tests.el ends here