[slime-devel] Re: per-slime-dialect slime-connected-hook implementation

Marco Baringer mb at bese.it
Thu Nov 30 16:03:38 UTC 2006

_deepfire at feelingofgreen.ru writes:

> +(defmacro define-slime-dialect (name &optional program hook connhook)
>    "Define a command slime-dialect-NAME to start a specific Lisp.
>  PROGRAM is the command to start the inferior process.
>  HOOK is function which is run before the process is started."
>    (let ((funsym (intern (format "slime-dialect-%s" name)))
>          (hooksym (intern (format "slime-dialect-%s-hook" name)))
> +        (connhooksym (intern (format "slime-dialect-%s-connected-hook" name)))
>          (progsym (intern (format "slime-dialect-%s-program" name))))
>      `(progn
>         (defvar ,progsym ,program)
>         (defvar ,hooksym ,hook)
> +       (defvar ,connhooksym ,connhook)
> +       (add-hook 'slime-connected-hook
> +		 (lambda ()
> +		   (when (equal *slime-in-dialect* ,name)
> +		     (run-hooks ',connhooksym))))
>         (defun ,funsym ()
>           ,(format "Start up slime according to `%s'." progsym)
>           (interactive)
>           (let ((inferior-lisp-program ,progsym))
> +	   (setq *slime-in-dialect* ,name)

would a let work jsut as well here? (i'd like to avoid a new global if
it's only purpose is to choose which hook to run).

>             (run-hooks ',hooksym)
>             (call-interactively 'slime))))))

Ring the bells that still can ring.
Forget your perfect offering.
There is a crack in everything.
That's how the light gets in.
	-Leonard Cohen

More information about the slime-devel mailing list