From: Glenn Morris <rgm@gnu.org>
To: "Vincent Belaïche" <vincent.b.1@hotmail.fr>
Cc: Edward Reingold <reingold@iit.edu>, emacs-devel <emacs-devel@gnu.org>
Subject: Re: cal-tex.el landscape patch
Date: Mon, 28 Aug 2017 13:55:59 -0400 [thread overview]
Message-ID: <xma82jwp8w.fsf@fencepost.gnu.org> (raw)
In-Reply-To: <AM5PR10MB0676500E709C57DDF541B7C784980@AM5PR10MB0676.EURPRD10.PROD.OUTLOOK.COM> ("Vincent \=\?utf-8\?Q\?Bela\=C3\=AFche\=22's\?\= message of "Sat, 26 Aug 2017 15:29:34 +0000")
Thanks, comments below.
> --- a/lisp/calendar/cal-tex.el
> +++ b/lisp/calendar/cal-tex.el
> @@ -259,12 +259,37 @@ cal-tex-list-diary-entries
> (defun cal-tex-preamble (&optional args)
> "Insert the LaTeX calendar preamble into `cal-tex-buffer'.
> Preamble includes initial definitions for various LaTeX commands.
> -Optional string ARGS are included as options for the article document class."
> +Optional string ARGS are included as options for the article
> +document class with inclusion of default values \"12pt\" for
> +size, and \"a4paper\" for paper unless size or paper are already
> +specified in ARGS. When ARGS is omitted, by default the option
> +\"12pt,a4paper\" is passed.
I think in hindsight my suggestion to default to 12pt was not a good
one, because it makes the argument parsing ugly. Sorry.
And please don't default to A4 paper, since the default locale for Emacs is
the US one (spelling etc).
> +Please note that if ARGS is \"\" then
> +\"\\documentclass[]{article}\" is inserted, while if ARGS it `t'
> +then \"\\documentclass{article}\" is inserted."
This doesn't seem like a nice interface.
Why do you need the ARGS t case when it can be nil?
> (set-buffer (generate-new-buffer cal-tex-buffer))
> - (insert (format "\\documentclass%s{article}\n"
> - (if (stringp args)
> - (format "[%s]" args)
> - "")))
> + (save-match-data
> + (insert (format "\\documentclass%s{article}\n"
> + (cond
> + ((stringp args)
> + ;; set default size
> + (unless (string-match "\\(^\\|,\\) *[0-9]+pt *\\(,\\|$\\)" args)
> + (setq args (concat args ",12pt")))
> + ;; set default paper
> + (unless (string-match "\\(^\\|,\\) *\\([ab][4-5]\\|le\\(tter\\|gal\\)\\|executive\\)paper *\\(,\\|$\\)" args)
> + (setq args (concat args ",a4paper")))
> + (when (string= (substring args 0 1) ",")
> + (setq args (substring args 1)))
> + (format "[%s]" args))
> + ((null args) "[12pt]")
> + (t ""))))
This seems overly complicated to me.
Again, it wasa bad suggestion of mine to have default values.
string-match-p would avoid the need to save-match-data.
next prev parent reply other threads:[~2017-08-28 17:55 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-21 14:19 cal-tex.el landscape patch Vincent Belaïche
2017-08-22 7:04 ` Marcin Borkowski
2017-08-22 22:05 ` Vincent Belaïche
2017-08-25 1:10 ` Glenn Morris
2017-08-25 9:07 ` Vincent Belaïche
2017-08-25 17:58 ` Vincent Belaïche
2017-08-25 18:25 ` Edward Reingold
2017-08-26 15:06 ` Vincent Belaïche
2017-08-26 15:29 ` Vincent Belaïche
2017-08-28 17:20 ` Paul Eggert
2017-08-28 17:55 ` Glenn Morris [this message]
2017-08-30 9:45 ` Vincent Belaïche
2017-09-14 12:46 ` Vincent Belaïche
2017-09-14 20:31 ` Glenn Morris
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xma82jwp8w.fsf@fencepost.gnu.org \
--to=rgm@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=reingold@iit.edu \
--cc=vincent.b.1@hotmail.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.