]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/simple.el (next-line-completion): Better handing of group lines.
authorJuri Linkov <juri@linkov.net>
Thu, 25 Jan 2024 17:52:08 +0000 (19:52 +0200)
committerEshel Yaron <me@eshelyaron.com>
Thu, 25 Jan 2024 18:07:04 +0000 (19:07 +0100)
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.

(cherry picked from commit d22a3e5afe75c9f4a18926cce16c1a13fa912df2)

lisp/simple.el
test/lisp/minibuffer-tests.el

index 521c6b111681d5f96f799d4f117b95b3d55661e0..5aff3abb8d733d70554a9f39aa87e63c5b3c7c5d 100644 (file)
@@ -10157,7 +10157,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)
@@ -10181,7 +10181,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)
index 57a7f345da410bd67a448ccd83ce9e306620a3c9..960c142da0fd8f54c4ff5ed115f8a9d234c9c864 100644 (file)
                     (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)))
+      (should (equal "aa4" (get-text-property (point) 'completion--string)))
+      (next-line-completion 3)
+      (should (equal "aa1" (get-text-property (point) 'completion--string)))
       (previous-line-completion 2)
-      (should (equal "ab" (get-text-property (point) 'completion--string))))
+      (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))
-      (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))))))
+      (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