From 115d9903c14ff610e86205b834131b38be181697 Mon Sep 17 00:00:00 2001 From: Rasmus Date: Thu, 16 Jul 2015 00:38:06 +0200 Subject: [PATCH] ox-koma-letter: Add closing special heading * ox-koma-letter.el (org-koma-letter-special-tags-in-letter): Add closing. (org-koma-letter-template): Potentially take closing value from closing spcical heading. (org-koma-letter--build-settings): Potentially take signature value from closing special heading. (org-koma-letter-closing): (org-koma-letter-signature): Update docstring. Suggested-by: Suvayu Ali --- contrib/lisp/ox-koma-letter.el | 52 +++++++++++++++++++++++++++++++++++------- 1 file changed, 44 insertions(+), 8 deletions(-) diff --git a/contrib/lisp/ox-koma-letter.el b/contrib/lisp/ox-koma-letter.el index d0a8109..64f1f7f 100644 --- a/contrib/lisp/ox-koma-letter.el +++ b/contrib/lisp/ox-koma-letter.el @@ -204,13 +204,29 @@ then the opening will be implicitly set as the headline title." (defcustom org-koma-letter-closing "" "Letter's closing, as a string. -This option can also be set with the CLOSING keyword." +This option can also be set with the CLOSING keyword. Moreover, +when: + (1) this value is the empty string; + (2) there's no CLOSING keyword or it is empty; + (3) `org-koma-letter-headline-is-opening-maybe' is non-nil; + (4) the letter contains a headline with the special + tag closing; +then the opening will be set as the title of the closing special +heading." :group 'org-export-koma-letter :type 'string) (defcustom org-koma-letter-signature "" "Signature, as a string. -This option can also be set with the SIGNATURE keyword." +This option can also be set with the SIGNATURE keyword. +Moreover, when: + (1) this value is the empty string; + (2) there's no CLOSING keyword or it is empty; + (3) `org-koma-letter-headline-is-opening-maybe' is non-nil; + (4) the letter contains a headline with the special + tag closing; +then the signature will be set as the content of the +closing special heading." :group 'org-export-koma-letter :type 'string) @@ -358,7 +374,7 @@ e.g. \"title-subject:t\"." :group 'org-export-koma-letter :type 'boolean) -(defconst org-koma-letter-special-tags-in-letter '(to from) +(defconst org-koma-letter-special-tags-in-letter '(to from closing) "Header tags related to the letter itself.") (defconst org-koma-letter-special-tags-after-closing '(ps encl cc) @@ -665,7 +681,17 @@ holding export options." ;; Letter body. contents ;; Closing. - (format "\n\\closing{%s}\n" (org-export-data (plist-get info :closing) info)) + (format "\n\\closing{%s}\n" + (org-export-data + (or (org-string-nw-p (plist-get info :closing)) + (when (plist-get info :with-headline-opening) + (org-element-map (plist-get info :parse-tree) 'headline + (lambda (head) + (when (eq (org-koma-letter--special-tag head info) + 'closing) + (org-element-property :title head))) + info t))) + info)) (org-koma-letter--special-contents-as-macro (plist-get info :with-after-closing)) ;; Letter end. @@ -711,10 +737,20 @@ a communication channel." (format "\\KOMAoption{fromphone}{%s}\n" (if (plist-get info :with-phone) "true" "false"))) ;; Signature. - (let ((signature (plist-get info :signature))) - (and (org-string-nw-p signature) - (funcall check-scope 'signature) - (format "\\setkomavar{signature}{%s}\n" signature))) + (let* ((heading-val + (and (plist-get info :with-headline-opening) + (org-string-nw-p + (org-trim + (org-export-data + (org-koma-letter--get-tagged-contents 'closing) + info))))) + (signature (org-string-nw-p (plist-get info :signature))) + (signature-scope (funcall check-scope 'signature))) + (and (or (and signature signature-scope) + heading-val) + (not (and (eq scope 'global) heading-val)) + (format "\\setkomavar{signature}{%s}\n" + (if signature-scope signature heading-val)))) ;; Back address. (and (funcall check-scope 'with-backaddress) (format "\\KOMAoption{backaddress}{%s}\n" -- 2.4.5