Function: org-columns-store-format

org-columns-store-format is a byte-compiled function defined in org-colview.el.gz.

Signature

(org-columns-store-format)

Documentation

Store the text version of the current columns format.

The format is stored either in the COLUMNS property of the node starting the current column display, or in a #+COLUMNS line of the current buffer.

Source Code

;; Defined in /usr/src/emacs/lisp/org/org-colview.el.gz
(defun org-columns-store-format ()
  "Store the text version of the current columns format.
The format is stored either in the COLUMNS property of the node
starting the current column display, or in a #+COLUMNS line of
the current buffer."
  (let ((fmt (org-columns-uncompile-format org-columns-current-fmt-compiled)))
    (setq-local org-columns-current-fmt fmt)
    (when org-columns-overlays
      (org-with-point-at org-columns-top-level-marker
	(if (and (org-at-heading-p) (org-entry-get nil "COLUMNS"))
	    (org-entry-put nil "COLUMNS" fmt)
	  (goto-char (point-min))
	  (let ((case-fold-search t))
	    ;; Try to replace the first COLUMNS keyword available.
	    (catch :found
	      (while (re-search-forward "^[ \t]*#\\+COLUMNS:\\(.*\\)" nil t)
		(let ((element (save-match-data (org-element-at-point))))
		  (when (and (org-element-type-p element 'keyword)
			     (equal (org-element-property :key element)
				    "COLUMNS"))
		    (replace-match (concat " " fmt) t t nil 1)
		    (throw :found nil))))
	      ;; No COLUMNS keyword in the buffer.  Insert one at the
	      ;; beginning, right before the first heading, if any.
	      (goto-char (point-min))
	      (unless (org-at-heading-p) (outline-next-heading))
	      (let ((inhibit-read-only t))
		(insert-before-markers "#+COLUMNS: " fmt "\n"))))
	  (setq-local org-columns-default-format fmt))))))