stumpwm-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]