[O] small koma bug
Hello Rasmus and all, I think I have found a small bug in ox-koma-letter, but to fix it I would like your input. The bug: if from-address is not specified in the file, then it will be set unconditionally to the empty string, even if it is specified in an lco file. The reason of the bug is as follows. To set up the from address, we call this: #+begin_src emacs-lisp (let ((from-address (org-koma-letter--determine-to-and-from info 'from))) (and from-address (format \\setkomavar{fromaddress}{%s}\n from-address))) #+end_src This uses this function: #+begin_src emacs-lisp (defun org-koma-letter--determine-to-and-from (info key) Given INFO determine KEY for the letter. KEY should be `to' or `from'. `ox-koma-letter' allows two ways to specify TO and FROM. If both are present return the preferred one as determined by `org-koma-letter-prefer-special-headings'. (let ((option (plist-get info (if (eq key 'to) :to-address :from-address))) (headline (org-koma-letter--get-tagged-contents key))) (replace-regexp-in-string \n \n (org-trim (or (if (plist-get info :special-headings) (or headline option) (or option headline)) ;; Fallback values. (if (eq key 'to) \\mbox{} org-koma-letter-from-address)) #+end_src Note that in the default case we return org-koma-letter-from-address, which is set to the empty string by default: #+begin_src emacs-lisp (defcustom org-koma-letter-from-address Sender's address, as a string. This option can also be set with one or more FROM_ADDRESS keywords. :group 'org-export-koma-letter :type 'string) #+end_src As the empty string is considered as true, we apply the format function in the first code block. I would suggest to have org-koma-letter-from-address begin nil as default. My question is: is it an allowed value for a string? Thanks, Alan
Re: [O] small koma bug
Hi Alan, Alan Schmitt alan.schm...@polytechnique.org writes: I think I have found a small bug in ox-koma-letter, but to fix it I would like your input. The bug: if from-address is not specified in the file, then it will be set unconditionally to the empty string, even if it is specified in an lco file. OK. AFAIK it's OK to leave out the fromaddress and fromname. The reason of the bug is as follows. To set up the from address, we call this: #+begin_src emacs-lisp (let ((from-address (org-koma-letter--determine-to-and-from info 'from))) (and from-address (format \\setkomavar{fromaddress}{%s}\n from-address))) #+end_src How about: (let ((from-address (org-koma-letter--determine-to-and-from info 'from))) (and (org-string-nw-p from-address) (format \\setkomavar{fromaddress}{%s}\n from-address))) Or more explicitly (let ((from-address (org-koma-letter--determine-to-and-from info 'from))) (when (org-string-nw-p from-address) (format \\setkomavar{fromaddress}{%s}\n from-address))) This uses this function: #+begin_src emacs-lisp (defun org-koma-letter--determine-to-and-from (info key) Given INFO determine KEY for the letter. KEY should be `to' or `from'. `ox-koma-letter' allows two ways to specify TO and FROM. If both are present return the preferred one as determined by `org-koma-letter-prefer-special-headings'. (let ((option (plist-get info (if (eq key 'to) :to-address :from-address))) (headline (org-koma-letter--get-tagged-contents key))) (replace-regexp-in-string \n \n (org-trim (or (if (plist-get info :special-headings) (or headline option) (or option headline)) ;; Fallback values. (if (eq key 'to) \\mbox{} org-koma-letter-from-address)) #+end_src I guess org-koma-letter-from-address can be left empty, but for instance 'to must have a value different from the empty string to not create a LaTeX error. As I said above, quick testing suggest this is not necessary for fromaddress. As the empty string is considered as true, we apply the format function in the first code block. See below. I would suggest to have org-koma-letter-from-address begin nil as default. My question is: is it an allowed value for a string? You can use org-string-nw-p to test is S is only white-space. When Nicolas cleaned the file he made all (or most?) defaults into strings, so let's stick with that. Let me know if your happy with this. —Rasmus -- Summon the Mothership!
Re: [O] small koma bug
Rasmus ras...@gmx.us writes: How about: (let ((from-address (org-koma-letter--determine-to-and-from info 'from))) (and (org-string-nw-p from-address) (format \\setkomavar{fromaddress}{%s}\n from-address))) Or more explicitly (let ((from-address (org-koma-letter--determine-to-and-from info 'from))) (when (org-string-nw-p from-address) (format \\setkomavar{fromaddress}{%s}\n from-address))) It sounds good. I'll commit this change. Thanks, Alan