[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [STUMP] define run-or-raise keybinding with anonymous function
From: |
Tamas Papp |
Subject: |
Re: [STUMP] define run-or-raise keybinding with anonymous function |
Date: |
Sat, 28 Nov 2015 19:25:35 +0100 |
User-agent: |
mu4e 0.9.15; emacs 24.5.1 |
I found a workaround:
(define-key *root-map* (kbd "c")
"eval-line (run-or-raise \"calibre\" '(:title \"calibre\"))")
I can of course write a macro for all of this:
(defmacro define-key-run-or-raise (map key command
&optional (props `(:title ,command)))
`(define-key ,map (kbd ,key)
,(with-output-to-string (str)
(princ "eval-line " str)
(write `(run-or-raise ,command ',props) :stream str))))
and apply it as
(define-key-run-or-raise *root-map* "c" "calibre")
(define-key-run-or-raise *root-map* "b" "iceweasel" (:title "Iceweasel"))
but this is as unlispy as it gets so please help me find a more elegant
and idiomatic solution if there is one.
Best,
Tamas
On Sat, Nov 28 2015, Tamas Papp <address@hidden> wrote:
> Hi,
>
> I am new to stumpwm and find it amazing, but I need to wrap my head
> around a few things.
>
> One of them is "commands", in particular, I am looking for an equivalent
> of (lambda ...) when I don't want to name a command that I would just
> use once. Eg instead of
>
> (defcommand ensure-calibre () ()
> "raise calibre if there is a running instance, otherwise start it"
> (run-or-raise "calibre" '(:title "calibre")))
> (define-key *root-map* (kbd "c") "ensure-calibre")
>
> I am looking for something like
>
> (define-key *root-map* (kbd "c")
> (lambda ()
> (run-or-raise "calibre" '(:title "calibre"))))
>
> which of course does not work. Is there a way around this?
>
> Thanks,
>
> Tamas