emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

non-local exits with signal and condition-case


From: Nic Ferrier
Subject: non-local exits with signal and condition-case
Date: Sun, 02 Jun 2013 17:24:47 +0100

Is it just me or is catch annoying for some non-local exits?

When I do non-local exits, which isn't often, I mostly want to
non-locally exit and pass some data back.

Maybe this is the fault of my exposure to Java programming and using
exceptions for flow control? Anyway. I find that catch rarely fulfils my
needs.

It's possible to use signal and condition-case to achieve the effect
that I most often want and I do use them.

But making new signals is slightly annoying because you need to add 2
different properties to a symbol.

I propose a simple macro to make this easier:

 (defmacro defsignal (err-symbol inherits-list message)
   (let ((errv (make-symbol "err-v")))
     `(let ((,errv ,err-symbol))
        (put ,errv
             'error-conditions
             (quote ,inherits-list))
        (put ,errv
             'error-message
             ,message))))

One uses it like this:

 (defsignal :nictest-blah (:nictest :nictest-blah) "blah!")

I'm not sure where to put this. I could package it. But I'm collecting a
list of these things (noflet, let-while, etc...) and gradually it seems
I'm inventing my own lisp.

This one though seems to be a genuine gap in elisp.

Is there any interest in core-ing it?



Nic



reply via email to

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