Function: org-export-insert-default-template
org-export-insert-default-template is an autoloaded, interactive and
byte-compiled function defined in ox.el.gz.
Signature
(org-export-insert-default-template &optional BACKEND SUBTREEP)
Documentation
Insert all export keywords with default values at beginning of line.
BACKEND is a symbol referring to the name of a registered export
backend, for which specific export options should be added to
the template, or default for default template. When it is nil,
the user will be prompted for a category.
If SUBTREEP is non-nil, export configuration will be set up locally for the subtree through node properties.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/org/ox.el.gz
;;;###autoload
(defun org-export-insert-default-template (&optional backend subtreep)
"Insert all export keywords with default values at beginning of line.
BACKEND is a symbol referring to the name of a registered export
backend, for which specific export options should be added to
the template, or `default' for default template. When it is nil,
the user will be prompted for a category.
If SUBTREEP is non-nil, export configuration will be set up
locally for the subtree through node properties."
(interactive)
(unless (derived-mode-p 'org-mode) (user-error "Not in an Org mode buffer"))
(when (and subtreep (org-before-first-heading-p))
(user-error "No subtree to set export options for"))
(let ((node (and subtreep (save-excursion (org-back-to-heading t) (point))))
(backend
(or backend
(intern
(org-completing-read
"Options category: "
(cons "default"
(mapcar (lambda (b)
(symbol-name (org-export-backend-name b)))
org-export-registered-backends))
nil t))))
options keywords)
;; Populate OPTIONS and KEYWORDS.
(dolist (entry (cond ((eq backend 'default) org-export-options-alist)
((org-export-backend-p backend)
(org-export-backend-options backend))
(t (org-export-backend-options
(org-export-get-backend backend)))))
(let ((keyword (nth 1 entry))
(option (nth 2 entry)))
(cond
(keyword (unless (assoc keyword keywords)
(let ((value
(if (eq (nth 4 entry) 'split)
(mapconcat #'identity (eval (nth 3 entry) t) " ")
(eval (nth 3 entry) t))))
(push (cons keyword value) keywords))))
(option (unless (assoc option options)
(push (cons option (eval (nth 3 entry) t)) options))))))
;; Move to an appropriate location in order to insert options.
(unless subtreep (forward-line 0))
;; First (multiple) OPTIONS lines. Never go past fill-column.
(when options
(let ((items
(mapcar
(lambda (opt) (format "%s:%S" (car opt) (cdr opt)))
(sort options (lambda (k1 k2) (string< (car k1) (car k2)))))))
(if subtreep
(org-entry-put
node "EXPORT_OPTIONS" (mapconcat #'identity items " "))
(while items
(insert "#+options:")
(let ((width 10))
(while (and items
(< (+ width (length (car items)) 1) fill-column))
(let ((item (pop items)))
(insert " " item)
(cl-incf width (1+ (length item))))))
(insert "\n")))))
;; Then the rest of keywords, in the order specified in either
;; `org-export-options-alist' or respective export backends.
(dolist (key (nreverse keywords))
(let ((val (cond ((equal (car key) "DATE")
(or (cdr key)
(with-temp-buffer
(org-insert-timestamp nil))))
((equal (car key) "TITLE")
(or (let ((visited-file
(buffer-file-name (buffer-base-buffer))))
(and visited-file
(file-name-sans-extension
(file-name-nondirectory visited-file))))
(buffer-name (buffer-base-buffer))))
(t (cdr key)))))
(if subtreep (org-entry-put node (concat "EXPORT_" (car key)) val)
(insert
(format "#+%s:%s\n"
(downcase (car key))
(if (org-string-nw-p val) (format " %s" val) ""))))))))