From 7e917e97f99bf9e9266b64f5066bfaa5f8ca98ee Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Sun, 15 Jun 2014 22:39:29 +0200 Subject: [PATCH] ox: Title fallbacks to nil instead of file name * lisp/ox.el (org-export--get-inbuffer-options): (org-export-as): Remove title default value handling. (org-export--get-buffer-attributes): Remove unnecessary property. * doc/org.texi (Document title): (Export settings): * doc/orgguide.texi (Export options): Update documentation. * testing/lisp/test-ox.el (test-org-export/set-title): Update tests according to new specifications. --- doc/org.texi | 7 +---- doc/orgguide.texi | 2 +- lisp/ox.el | 24 ++-------------- testing/lisp/test-ox.el | 76 +++++++++++++++++++++++++++---------------------- 4 files changed, 47 insertions(+), 62 deletions(-) diff --git a/doc/org.texi b/doc/org.texi index 441b08c..dcb5a9c 100644 --- a/doc/org.texi +++ b/doc/org.texi @@ -9595,10 +9595,6 @@ The title of the exported document is taken from the special line #+TITLE: This is the title of the document @end example -@noindent -If this line does not exist, the title will be the name of the file -associated with the buffer, without extension, or the buffer name. - @cindex property, EXPORT_TITLE If you are exporting only a subtree, its heading will become the title of the document. If the subtree has a property @code{EXPORT_TITLE}, that will take @@ -10580,8 +10576,7 @@ be executed during export even though the subtree is not exported. @item TITLE @cindex #+TITLE -The title to be shown (otherwise derived from buffer's name). You can use -several such keywords for long titles. +The title to be shown. You can use several such keywords for long titles. @end table The @code{#+OPTIONS} keyword is a compact@footnote{If you want to configure diff --git a/doc/orgguide.texi b/doc/orgguide.texi index ab856e9..6842592 100644 --- a/doc/orgguide.texi +++ b/doc/orgguide.texi @@ -2324,7 +2324,7 @@ Insert template with export options, see example below. @end table @smallexample -#+TITLE: the title to be shown (default is the buffer name) +#+TITLE: the title to be shown #+AUTHOR: the author (default taken from @code{user-full-name}) #+DATE: a date, fixed, or an Org timestamp #+EMAIL: his/her email address (default from @code{user-mail-address}) diff --git a/lisp/ox.el b/lisp/ox.el index 4bfef52..605c5a4 100644 --- a/lisp/ox.el +++ b/lisp/ox.el @@ -1343,10 +1343,6 @@ The back-end could then be called with, for example: ;; - category :: tree ;; - type :: list of elements and objects ;; -;; + `:input-buffer' :: Original buffer name. -;; - category :: option -;; - type :: string -;; ;; + `:input-file' :: Full path to input file, if any. ;; - category :: option ;; - type :: string or nil @@ -1794,19 +1790,13 @@ Assume buffer is in Org mode. Narrowing, if any, is ignored." (when (stringp value) (setq plist (plist-put plist property - (or (org-element-parse-secondary-string - value (org-element-restriction 'keyword)) - ;; When TITLE keyword sets an empty - ;; string, make sure it doesn't - ;; appear as nil in the plist. - (and (eq property :title) "")))))))))) + (org-element-parse-secondary-string + value (org-element-restriction 'keyword)))))))))) (defun org-export--get-buffer-attributes () "Return properties related to buffer attributes, as a plist." ;; Store full path of input file name, or nil. For internal use. - (let ((visited-file (buffer-file-name (buffer-base-buffer)))) - (list :input-file visited-file - :input-buffer (buffer-name (buffer-base-buffer))))) + (list :input-file (buffer-file-name (buffer-base-buffer)))) (defun org-export--get-global-options (&optional backend) "Return global export options as a plist. @@ -3098,14 +3088,6 @@ Return code as a string." (org-export-install-filters (org-combine-plists info (org-export-get-environment backend subtreep ext-plist)))) - ;; Special case: provide original file name or buffer name as - ;; default value for :title property. - (unless (plist-get info :title) - (plist-put - info :title - (let ((file (plist-get info :input-file))) - (if file (file-name-sans-extension (file-name-nondirectory file)) - (plist-get info :input-buffer))))) ;; Expand export-specific set of macros: {{{author}}}, ;; {{{date}}}, {{{email}}} and {{{title}}}. It must be done ;; once regular macros have been expanded, since document diff --git a/testing/lisp/test-ox.el b/testing/lisp/test-ox.el index 234032e..664891e 100644 --- a/testing/lisp/test-ox.el +++ b/testing/lisp/test-ox.el @@ -270,58 +270,66 @@ Paragraph" (ert-deftest test-org-export/set-title () "Test title setting." - ;; If no title if specified, use file name. + ;; Without TITLE keyword. (should - (apply - 'equal - (org-test-with-temp-text-in-file "Test" - (org-mode) - (list (org-export-as - (org-export-create-backend - :transcoders - '((template . (lambda (text info) - (org-element-interpret-data - (plist-get info :title))))))) - (file-name-nondirectory - (file-name-sans-extension (buffer-file-name))))))) - ;; If no title is specified, and no file is associated to the - ;; buffer, use buffer's name. - (should - (apply - 'equal + (equal + "" (org-test-with-temp-text "Test" - (org-mode) - (list (org-export-as - (org-export-create-backend - :transcoders - '((template . (lambda (text info) - (org-element-interpret-data - (plist-get info :title))))))) - (buffer-name))))) - ;; If a title is specified, use it. + (org-export-as + (org-export-create-backend + :transcoders + '((template . (lambda (text info) + (org-element-interpret-data + (plist-get info :title)))))))))) + ;; With a blank TITLE keyword. + (should + (equal + "" + (org-test-with-temp-text "#+TITLE:\nTest" + (org-export-as + (org-export-create-backend + :transcoders + '((template . (lambda (text info) + (org-element-interpret-data + (plist-get info :title)))))))))) + ;; With a non-empty TITLE keyword. (should (equal "Title" - (org-test-with-temp-text-in-file "#+TITLE: Title\nTest" - (org-mode) + (org-test-with-temp-text "#+TITLE: Title\nTest" (org-export-as (org-export-create-backend :transcoders '((template . (lambda (text info) (org-element-interpret-data (plist-get info :title)))))))))) - ;; If an empty title is specified, do not set it. + ;; When exporting a subtree, its heading becomes the headline of the + ;; document... (should (equal - "" - (org-test-with-temp-text-in-file "#+TITLE:\nTest" - (org-mode) + "Headline" + (org-test-with-temp-text "* Headline\nBody" + (org-export-as + (org-export-create-backend + :transcoders + '((template . (lambda (text info) + (org-element-interpret-data + (plist-get info :title)))))) + 'subtree)))) + ;; ... unless there is an EXPORT_TITLE property at the root of the + ;; subtree. + (should + (equal + "B" + (org-test-with-temp-text + "* A\n :PROPERTIES:\n :EXPORT_TITLE: B\n :END:\nBody" (org-export-as (org-export-create-backend :transcoders '((template . (lambda (text info) (org-element-interpret-data - (plist-get info :title))))))))))) + (plist-get info :title)))))) + 'subtree))))) (ert-deftest test-org-export/handle-options () "Test if export options have an impact on output." -- 2.0.0