From 6f16612796076077c95176be0929677ffe8e0d3d Mon Sep 17 00:00:00 2001 Message-ID: <6f16612796076077c95176be0929677ffe8e0d3d.1713348551.git.yantar92@posteo.net> From: Ihor Radchenko Date: Wed, 17 Apr 2024 13:04:52 +0300 Subject: [PATCH] Respect `org-auto-align-tags' in all the editing commands * lisp/org-mobile.el (org-mobile-edit): * lisp/org.el (org-insert-heading): (org-edit-headline): (org-priority): (org-set-tags): (org-entry-put): (org-self-insert-command): (org-delete-backward-char): (org-delete-char): (org-kill-line): Only re-align tags when `org-auto-align-tags' is set to non-nil. * etc/ORG-NEWS (~org-auto-align-tags~ is not respected universally): Announce the breaking change. Link: https://orgmode.org/list/87msxoc3qp.fsf@localhost --- etc/ORG-NEWS | 10 ++++++++++ lisp/org-mobile.el | 2 +- lisp/org.el | 20 ++++++++++---------- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index e61bd6988..e6dc35f87 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -13,6 +13,16 @@ Please send Org bug reports to mailto:emacs-orgmode@gnu.org. * Version 9.7 (not released yet) ** Important announcements and breaking changes +*** ~org-auto-align-tags~ is not respected universally + +Previously, only a subset of Org editing commands respected +~org-auto-align-tags~ option. Now, it is no longer the case. All the +editing commands, including typing (~org-self-insert-command~) and +deletion respect the option. + +~org-auto-align-tags~ is still disabled by default. Now, none of the +Org editing commands re-align tags to ~org-tags-column~ by default. + *** Underline syntax now takes priority over subscript when both are applicable Previously, Org mode interpreted =(_text_)= as subscript. diff --git a/lisp/org-mobile.el b/lisp/org-mobile.el index 83e0316fd..b34623686 100644 --- a/lisp/org-mobile.el +++ b/lisp/org-mobile.el @@ -1057,7 +1057,7 @@ (defun org-mobile-edit (what old new) (goto-char (match-beginning 4)) (insert new) (delete-region (point) (+ (point) (length current))) - (org-align-tags)) + (when org-auto-align-tags (org-align-tags))) (t (error "Heading changed in the mobile device and on the computer"))))))) diff --git a/lisp/org.el b/lisp/org.el index a53f36d33..c4475cd62 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -6565,7 +6565,7 @@ (defun org-insert-heading (&optional arg invisible-ok level) ;; Preserve tags. (let ((split (delete-and-extract-region (point) (match-end 4)))) (if (looking-at "[ \t]*$") (replace-match "") - (org-align-tags)) + (when org-auto-align-tags (org-align-tags))) (end-of-line) (when blank? (insert "\n")) (insert "\n" stars " ") @@ -6677,7 +6677,7 @@ (defun org-edit-headline (&optional heading) (if old (replace-match new t t nil 4) (goto-char (or (match-end 3) (match-end 2) (match-end 1))) (insert " " new)) - (org-align-tags) + (when org-auto-align-tags (org-align-tags)) (when (looking-at "[ \t]*$") (replace-match "")))))))) (defun org-insert-heading-after-current () @@ -11215,7 +11215,7 @@ (defun org-priority (&optional action show) (insert " [#" news "]")) (goto-char (match-beginning 3)) (insert "[#" news "] ")))) - (org-align-tags)) + (when org-auto-align-tags (org-align-tags))) (if remove (message "Priority removed") (message "Priority of current item set to %s" news))))) @@ -12021,7 +12021,7 @@ (defun org-set-tags (tags) (unless (org-invisible-p (line-beginning-position)) (org-fold-region (point) (line-end-position) nil 'outline)))) ;; Align tags, if any. - (when tags (org-align-tags)) + (when (and tags org-auto-align-tags) (org-align-tags)) (when tags-change? (run-hooks 'org-after-tags-change-hook)))))) (defun org-change-tag-in-region (beg end tag off) @@ -13261,10 +13261,10 @@ (defun org-entry-put (epom property value) ((not (member value org-todo-keywords-1)) (user-error "\"%s\" is not a valid TODO state" value))) (org-todo value) - (org-align-tags)) + (when org-auto-align-tags (org-align-tags))) ((equal property "PRIORITY") (org-priority (if (org-string-nw-p value) (string-to-char value) ?\s)) - (org-align-tags)) + (when org-auto-align-tags (org-align-tags))) ((equal property "SCHEDULED") (forward-line) (if (and (looking-at-p org-planning-line-re) @@ -17088,7 +17088,7 @@ (defun org-self-insert-command (N) ;; Interactively, point should never be inside invisible regions (org-fold-core-suppress-folding-fix (self-insert-command N) - (org-fix-tags-on-the-fly)) + (when org-auto-align-tags (org-fix-tags-on-the-fly))) (when org-self-insert-cluster-for-undo (if (not (eq last-command 'org-self-insert-command)) (setq org-self-insert-command-undo-counter 1) @@ -17118,7 +17118,7 @@ (defun org-delete-backward-char (N) (org-at-table-p)) (progn (forward-char -1) (org-delete-char 1)) (funcall-interactively #'backward-delete-char N) - (org-fix-tags-on-the-fly)))) + (when org-auto-align-tags (org-fix-tags-on-the-fly))))) (defun org-delete-char (N) "Like `delete-char', but insert whitespace at field end in tables. @@ -17134,7 +17134,7 @@ (defun org-delete-char (N) (save-excursion (skip-chars-backward " \t") (bolp)) (not (org-at-table-p))) (delete-char N) - (org-fix-tags-on-the-fly)) + (when org-auto-align-tags (org-fix-tags-on-the-fly))) ((looking-at ".\\(.*?\\)|") (let* ((update? org-table-may-need-update) (noalign (looking-at-p ".*? |"))) @@ -21175,7 +21175,7 @@ (defun org-kill-line (&optional _arg) (kill-region (point) (line-end-position)) (kill-region (point) end))) ;; Only align tags when we are still on a heading: - (if (org-at-heading-p) (org-align-tags))) + (if (and (org-at-heading-p) org-auto-align-tags) (org-align-tags))) (t (kill-region (point) (line-end-position))))) (defun org-yank (&optional arg) -- 2.44.0