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 <tkp...@gmail.com> 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 Stumpwm-devel@nongnu.org https://lists.nongnu.org/mailman/listinfo/stumpwm-devel