Function: org--align-tags-here
org--align-tags-here is a byte-compiled function defined in org.el.gz.
Signature
(org--align-tags-here TO-COL)
Documentation
Align tags on the current headline to TO-COL.
Assume point is on a headline. Preserve point when aligning tags.
Source Code
;; Defined in /usr/src/emacs/lisp/org/org.el.gz
(defun org--align-tags-here (to-col)
"Align tags on the current headline to TO-COL.
Assume point is on a headline. Preserve point when aligning
tags."
(when (org-match-line org-tag-line-re)
(let* ((tags-start (match-beginning 1))
(blank-start (save-excursion
(goto-char tags-start)
(skip-chars-backward " \t")
(point)))
(new (max (if (>= to-col 0) to-col
(- (abs to-col) (string-width (match-string 1))))
;; Introduce at least one space after the heading
;; or the stars.
(save-excursion
(goto-char blank-start)
(1+ (current-column)))))
(current
(save-excursion (goto-char tags-start) (current-column)))
(origin (point-marker))
(column (current-column))
(in-blank? (and (> origin blank-start) (<= origin tags-start))))
(when (/= new current)
(delete-region blank-start tags-start)
(goto-char blank-start)
(let ((indent-tabs-mode nil)) (indent-to new))
;; Try to move back to original position. If point was in the
;; blanks before the tags, ORIGIN marker is of no use because
;; it now points to BLANK-START. Use COLUMN instead.
(if in-blank? (org-move-to-column column) (goto-char origin))))))