Fix bug when demoting invisible headlines
* org.el (org-demote): Ignore invisible text when aligning tags. (org-set-tags): When JUST-ALIGN is 'ignore-column, ignore invisible text when restoring the cursor to the correct column. This fixes a bug about demoting hidden headlines. If org-move-to-column temporarily ignore visibility specs, this will prevent org-demote to work correctly in hidden regions. Thanks to Susan Cragin for reporting this bug.
This commit is contained in:
parent
3f7822d31b
commit
4a9820067a
13
lisp/org.el
13
lisp/org.el
|
@ -7959,7 +7959,7 @@ in the region."
|
|||
(diff (abs (- level (length down-head) -1))))
|
||||
(replace-match down-head nil t)
|
||||
;; Fixup tag positioning
|
||||
(and org-auto-align-tags (org-set-tags nil t))
|
||||
(and org-auto-align-tags (org-set-tags nil 'ignore-column))
|
||||
(if org-adapt-indentation (org-fixup-indentation diff))
|
||||
(run-hooks 'org-after-demote-entry-hook)))
|
||||
|
||||
|
@ -14457,15 +14457,18 @@ If DATA is nil or the empty string, any tags will be removed."
|
|||
(defvar org-indent-indentation-per-level)
|
||||
(defun org-set-tags (&optional arg just-align)
|
||||
"Set the tags for the current headline.
|
||||
With prefix ARG, realign all tags in headings in the current buffer."
|
||||
With prefix ARG, realign all tags in headings in the current buffer.
|
||||
When JUST-ALIGN is non-nil, only align tags.
|
||||
When JUST-ALIGN is 'ignore-column, align tags without trying to set
|
||||
the column by ignoring invisible text."
|
||||
(interactive "P")
|
||||
(if (and (org-region-active-p) org-loop-over-headlines-in-active-region)
|
||||
(let ((cl (if (eq org-loop-over-headlines-in-active-region 'start-level)
|
||||
'region-start-level 'region))
|
||||
org-loop-over-headlines-in-active-region)
|
||||
(org-map-entries
|
||||
;; We don't use ARG and JUST-ALIGN here these args are not
|
||||
;; useful when looping over headlines
|
||||
;; We don't use ARG and JUST-ALIGN here because these args
|
||||
;; are not useful when looping over headlines.
|
||||
`(org-set-tags)
|
||||
org-loop-over-headlines-in-active-region
|
||||
cl (if (outline-invisible-p) (org-end-of-subtree nil t))))
|
||||
|
@ -14554,7 +14557,7 @@ With prefix ARG, realign all tags in headings in the current buffer."
|
|||
(and (not (featurep 'xemacs)) c0 indent-tabs-mode (tabify p0 (point)))
|
||||
tags)
|
||||
(t (error "Tags alignment failed")))
|
||||
(org-move-to-column col nil nil t)
|
||||
(org-move-to-column col nil nil (not (eq just-align 'ignore-column)))
|
||||
(unless just-align
|
||||
(run-hooks 'org-after-tags-change-hook))))))
|
||||
|
||||
|
|
Loading…
Reference in New Issue