Function: org-agenda-align-tags

org-agenda-align-tags is a byte-compiled function defined in org-agenda.el.gz.

Signature

(org-agenda-align-tags &optional LINE)

Documentation

Align all tags in agenda items to org-agenda-tags-column.

When optional argument LINE is non-nil, align tags only on the current line.

Source Code

;; Defined in /usr/src/emacs/lisp/org/org-agenda.el.gz
(defun org-agenda-align-tags (&optional line)
  "Align all tags in agenda items to `org-agenda-tags-column'.
When optional argument LINE is non-nil, align tags only on the
current line."
  (let ((inhibit-read-only t)
	(org-agenda-tags-column (if (eq 'auto org-agenda-tags-column)
			  (- (window-max-chars-per-line))
			org-agenda-tags-column))
	(end (and line (line-end-position)))
	l c)
    (org-fold-core-ignore-modifications
      (save-excursion
        (goto-char (if line (line-beginning-position) (point-min)))
        (while (re-search-forward org-tag-group-re end t)
	  (add-text-properties
	   (match-beginning 1) (match-end 1)
	   (list 'face (delq nil (let ((prop (get-text-property
					    (match-beginning 1) 'face)))
                                 (or (listp prop) (setq prop (list prop)))
                                 (if (memq 'org-tag prop)
				     prop
				   (cons 'org-tag prop))))))
	  (setq l (string-width (match-string 1))
                c (if (< org-agenda-tags-column 0)
		      (- (abs org-agenda-tags-column) l)
		    org-agenda-tags-column))
	  (goto-char (match-beginning 1))
	  (delete-region (save-excursion (skip-chars-backward " \t") (point))
                         (point))
	  (insert (org-add-props
		      (make-string (max 1 (- c (current-column))) ?\s)
		      (plist-put (copy-sequence (text-properties-at (point)))
                                 'face nil))))
        (goto-char (point-min))
        (org-font-lock-add-tag-faces (point-max))))))