Reveal tags after setting them

* lisp/org.el (org-set-tags): Reveal newly inserted tags.
* testing/lisp/test-org.el (test-org/set-tags): New test.

Sometimes freshly added tags can be sucked into invisible outline
region (denoted by ellipsis) - and to see them you need to do the full
global visibilty cycle.
This commit is contained in:
Alexey Lebedeff 2016-12-25 13:24:04 +03:00 committed by Nicolas Goaziou
parent 57ca9ba80a
commit 3e68d01bdd
2 changed files with 22 additions and 1 deletions

View File

@ -15189,7 +15189,10 @@ When JUST-ALIGN is non-nil, only align tags."
;; white spaces. ;; white spaces.
(end-of-line) (end-of-line)
(if (not (equal tags "")) (if (not (equal tags ""))
(insert " " tags) ;; When text is being inserted on an invisible
;; region boundary, it can be inadvertently sucked
;; into invisibility.
(outline-flag-region (point) (progn (insert " " tags) (point)) nil)
(skip-chars-backward " \t") (skip-chars-backward " \t")
(delete-region (point) (line-end-position))))) (delete-region (point) (line-end-position)))))
;; Align tags, if any. Fix tags column if `org-indent-mode' ;; Align tags, if any. Fix tags column if `org-indent-mode'

View File

@ -5144,6 +5144,24 @@ Paragraph<point>"
(should-not (should-not
(org-test-with-temp-text "Paragraph" (org-hide-block-toggle-maybe)))) (org-test-with-temp-text "Paragraph" (org-hide-block-toggle-maybe))))
(ert-deftest test-org/set-tags ()
"Test `org-set-tags' specifications."
;; Tags set via fast-tag-selection should be visible afterwards
(should
(let ((org-tag-alist '(("NEXT" . ?n)))
(org-fast-tag-selection-single-key t))
(cl-letf (((symbol-function 'read-char-exclusive) (lambda () ?n))
((symbol-function 'window-width) (lambda (&rest args) 100)))
(org-test-with-temp-text "<point>* Headline\nAnd its content\n* And another headline\n\nWith some content"
;; Show only headlines
(org-content)
;; Set NEXT tag on current entry
(org-set-tags nil nil)
;; Move point to that NEXT tag
(search-forward "NEXT") (backward-word)
;; And it should be visible (i.e. no overlays)
(not (overlays-at (point))))))))
(ert-deftest test-org/show-set-visibility () (ert-deftest test-org/show-set-visibility ()
"Test `org-show-set-visibility' specifications." "Test `org-show-set-visibility' specifications."
;; Do not throw an error before first heading. ;; Do not throw an error before first heading.