Browse Source

Fix C-u M-x org-align-tags not aligning all tags in buffer

* lisp/org.el (org-align-tags): Move point to the beginning of the
  visible buffer first before attempting to look for Org headline
  tags.

* testing/lisp/test-org.el (test-org/tag-align): Add test.

Fixes a regression in
https://code.orgmode.org/bzg/org-mode/commit/1615261cdc5da6dbe50176d7958c775d6d54411e.

Bug reported in
<https://lists.gnu.org/r/emacs-orgmode/2019-01/msg00051.html>.
Kaushal Modi 1 year ago
parent
commit
539091799b
2 changed files with 19 additions and 3 deletions
  1. 4 2
      lisp/org.el
  2. 15 1
      testing/lisp/test-org.el

+ 4 - 2
lisp/org.el

@@ -14354,8 +14354,10 @@ visible part of the buffer."
 	(org--align-tags-here (funcall get-indent-column))
       (save-excursion
 	(if all
-	    (while (re-search-forward org-tag-line-re nil t)
-	      (org--align-tags-here (funcall get-indent-column)))
+	    (progn
+	      (goto-char (point-min))
+	      (while (re-search-forward org-tag-line-re nil t)
+		(org--align-tags-here (funcall get-indent-column))))
 	  (org-back-to-heading t)
 	  (org--align-tags-here (funcall get-indent-column)))))))
 

+ 15 - 1
testing/lisp/test-org.el

@@ -6121,7 +6121,21 @@ Paragraph<point>"
 	  (let ((org-tags-column 78)
 		(indent-tabs-mode nil))
 	    (org-fix-tags-on-the-fly))
-	  (current-column)))))
+	  (current-column))))
+  ;; Aligning all tags in visible buffer.
+  (should
+   ;;              12345678901234567890
+   (equal (concat "* Level 1      :abc:\n"
+                  "** Level 2     :def:")
+          (org-test-with-temp-text (concat "* Level 1 :abc:\n"
+                                           "** Level 2 :def:")
+            (let ((org-tags-column -20)
+                  (indent-tabs-mode nil))
+              ;; (org-align-tags :all) must work even when the point
+              ;; is at the end of the buffer.
+              (goto-char (point-max))
+              (org-align-tags :all))
+            (buffer-string)))))
 
 (ert-deftest test-org/get-tags ()
   "Test `org-get-tags' specifications."