Function: org-element--headline-parse-title

org-element--headline-parse-title is a byte-compiled function defined in org-element.el.gz.

Signature

(org-element--headline-parse-title HEADLINE RAW-SECONDARY-P)

Documentation

Resolve title properties of HEADLINE for side effect.

When RAW-SECONDARY-P is non-nil, headline's title will not be parsed as a secondary string, but as a plain string instead.

Throw :org-element-deferred-retry signal at the end.

Source Code

;; Defined in /usr/src/emacs/lisp/org/org-element.el.gz
(defun org-element--headline-parse-title (headline raw-secondary-p)
  "Resolve title properties of HEADLINE for side effect.
When RAW-SECONDARY-P is non-nil, headline's title will not be
parsed as a secondary string, but as a plain string instead.

Throw `:org-element-deferred-retry' signal at the end."
  (with-current-buffer (org-element-property :buffer headline)
    (org-with-point-at (org-element-begin headline)
      (let* ((begin (point))
             (true-level (prog1 (skip-chars-forward "*")
                           (skip-chars-forward " \t")))
	     (level (org-reduced-level true-level))
	     (todo (and org-todo-regexp
                        (let (case-fold-search) (looking-at (concat org-todo-regexp "\\(?: \\|$\\)")))
                        (progn (goto-char (match-end 0))
			       (skip-chars-forward " \t")
                               (org-element--get-cached-string (match-string-no-properties 1)))))
	     (todo-type
	      (and todo (if (member todo org-done-keywords) 'done 'todo)))
	     (priority (and (looking-at "\\[#.\\][ \t]*")
			    (progn (goto-char (match-end 0))
				   (aref (match-string 0) 2))))
	     (commentedp
	      (and (let ((case-fold-search nil))
                     (looking-at org-element--headline-comment-re))
                   (prog1 t
		     (goto-char (match-end 0))
                     (skip-chars-forward " \t"))))
	     (title-start (point))
	     (tags (when (re-search-forward
			  "\\(:[[:alnum:]_@#%:]+:\\)[ \t]*$"
			  (line-end-position)
			  'move)
		     (goto-char (match-beginning 0))
                     (mapcar #'org-element--get-cached-string
                             (org-split-string (match-string-no-properties 1) ":"))))
	     (title-end (point))
	     (raw-value
              (org-element-deferred-create
               t #'org-element--headline-raw-value
               (- title-start begin) (- title-end begin))))
        (org-element-put-property headline :raw-value raw-value)
        (org-element-put-property headline :level level)
        (org-element-put-property headline :priority priority)
        (org-element-put-property headline :tags tags)
        (org-element-put-property headline :todo-keyword todo)
        (org-element-put-property headline :todo-type todo-type)
        (org-element-put-property
         headline :footnote-section-p org-element--headline-footnote-section-p)
        (org-element-put-property headline :archivedp org-element--headline-archivedp)
        (org-element-put-property headline :commentedp commentedp)
	(org-element-put-property
	 headline :title
	 (if raw-secondary-p
             org-element--headline-raw-value
	   (org-element--parse-objects
	    (progn (goto-char title-start)
		   (skip-chars-forward " \t")
		   (point))
	    (progn (goto-char title-end)
		   (skip-chars-backward " \t")
		   (point))
	    nil
	    (org-element-restriction
             (org-element-type headline))
	    headline))))))
  (throw :org-element-deferred-retry nil))