all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
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 



             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.