From 6b8fb446b6e04b6b488c90113c28acba7d4e1917 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Mon, 18 Feb 2019 23:15:58 +0100 Subject: [PATCH] org-list: Fix `org-list-demote-modify-bullet' with alpha bullets * lisp/org-list.el (org-list-struct-indent): Match case-sensitively against current bullet in order the tell the difference between "a." and "A.". * testing/lisp/test-org-list.el (test-org-list/indent-item): Add test. --- lisp/org-list.el | 31 +++++++++++++++---------------- testing/lisp/test-org-list.el | 12 ++++++++++++ 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/lisp/org-list.el b/lisp/org-list.el index 1c636dd4d..727ec6747 100644 --- a/lisp/org-list.el +++ b/lisp/org-list.el @@ -1569,22 +1569,21 @@ bullets between START and END." (let* (acc (set-assoc (lambda (cell) (push cell acc) cell)) (change-bullet-maybe - (function - (lambda (item) - (let ((new-bul-p - (cdr (assoc - ;; Normalize ordered bullets. - (let ((bul (org-trim - (org-list-get-bullet item struct)))) - (cond ((string-match "[A-Z]\\." bul) "A.") - ((string-match "[A-Z])" bul) "A)") - ((string-match "[a-z]\\." bul) "a.") - ((string-match "[a-z])" bul) "a)") - ((string-match "[0-9]\\." bul) "1.") - ((string-match "[0-9])" bul) "1)") - (t bul))) - org-list-demote-modify-bullet)))) - (when new-bul-p (org-list-set-bullet item struct new-bul-p)))))) + (lambda (item) + (let ((new-bul + (cdr (assoc + ;; Normalize ordered bullets. + (let ((bul (org-list-get-bullet item struct)) + (case-fold-search nil)) + (cond ((string-match "[A-Z]\\." bul) "A.") + ((string-match "[A-Z])" bul) "A)") + ((string-match "[a-z]\\." bul) "a.") + ((string-match "[a-z])" bul) "a)") + ((string-match "[0-9]\\." bul) "1.") + ((string-match "[0-9])" bul) "1)") + (t (org-trim bul)))) + org-list-demote-modify-bullet)))) + (when new-bul (org-list-set-bullet item struct new-bul))))) (ind (lambda (cell) (let* ((item (car cell)) diff --git a/testing/lisp/test-org-list.el b/testing/lisp/test-org-list.el index bbd6ee71d..c3864caa4 100644 --- a/testing/lisp/test-org-list.el +++ b/testing/lisp/test-org-list.el @@ -270,6 +270,18 @@ (org-list-demote-modify-bullet '(("1." . "+")))) (org-indent-item)) (buffer-string)))) + (should + (equal " +a. Item 1 + - Item 2" + (org-test-with-temp-text " +a. Item 1 +b. Item 2" + (let ((org-plain-list-ordered-item-terminator t) + (org-list-allow-alphabetical t) + (org-list-demote-modify-bullet '(("A." . "a.") ("a." . "-")))) + (org-indent-item)) + (buffer-string)))) ;; When a region is selected, indent every item within. (should (equal "