From: torys.anderson@gmail.com (Tory S. Anderson)
To: emacs list <help-gnu-emacs@gnu.org>
Subject: Possible to conditionally bind variable?
Date: Thu, 11 Sep 2014 07:11:41 -0400 [thread overview]
Message-ID: <87lhpq8l8y.fsf@gmail.com> (raw)
I have several redundancies in the following code:
(defun go-or-make-agenda (&optional new-frame)
(interactive "P")
(let ((buffer "\*Org Agenda\*"))
(if (get-buffer buffer)
(if new-frame
(switch-to-buffer-other-frame buffer)
(switch-to-buffer buffer))
(if new-frame
(switch-to-buffer-other-frame org-agenda-list)
(org-agenda-list)))))
I'd like to do something like the following, to chop out much of the switch-to-[other-]-buffer cruft:
(defun go-or-make-agenda (&optional new-frame)
(interactive "P")
(let ((buffer "\*Org Agenda\*")
(some-other-buffer "*scratch*")
(my-switch-function (if new-frame ;; is there some way to do this?
'(switch-to-other-buffer)
'(switch-to-buffer)))
(if (get-buffer buffer)
(my-switch-function buffer)
(my-switch-function some-other-buffer)))))
I'm not sure this is possible (short of the rather daunting http://stackoverflow.com/questions/25115876/conditional-variable-binding-in-common-lisp), but I have trust that in the awesomeness of Lisp it just might be.
- Tory
next reply other threads:[~2014-09-11 11:11 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-11 11:11 Tory S. Anderson [this message]
2014-09-11 12:24 ` Possible to conditionally bind variable? Nicolas Richard
2014-09-11 12:34 ` Stefan Monnier
2014-09-11 12:43 ` Tory S. Anderson
2014-09-11 13:54 ` Nicolas Richard
[not found] ` <mailman.8690.1410443522.1147.help-gnu-emacs@gnu.org>
2014-09-12 2:56 ` Rusi
[not found] ` <mailman.8684.1410438907.1147.help-gnu-emacs@gnu.org>
2014-09-12 3:55 ` Rusi
2014-09-12 3:59 ` Rusi
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=87lhpq8l8y.fsf@gmail.com \
--to=torys.anderson@gmail.com \
--cc=help-gnu-emacs@gnu.org \
/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.