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: Joram Schrijver
Subject: Re: [STUMP] define run-or-raise keybinding with anonymous function
Date: Sun, 29 Nov 2015 19:03:38 +0100

Hi,

Note that StumpWM supplies a macro called DEFPROGRAM-SHORTCUT that
handles
creating a run-or-raise command and binding it to a key. It won't be an
anonymous command, because such a thing doesn't exist, but there's no
real harm
in having a command like "calibre" or "iceweasel".

-- 
  Joram

On Sat, Nov 28, 2015, at 07:25 PM, Tamas Papp wrote:
> 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
> 
> _______________________________________________
> Stumpwm-devel mailing list
> address@hidden
> https://lists.nongnu.org/mailman/listinfo/stumpwm-devel



reply via email to

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