all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* factor out error message functions, access function stack to know location
@ 2015-10-26  1:17 Emanuel Berg
  0 siblings, 0 replies; 4+ messages in thread
From: Emanuel Berg @ 2015-10-26  1:17 UTC (permalink / raw)
  To: help-gnu-emacs

In the sweet science of shell scripting, I wrote some
zsh the other day (that appears last in this post),
along with a couple of other functions that will cover
other typical error situations. [1]

The thought is to have uniform error messages so that
when a function for example doesn't get sufficient
input, or cannot verity it, as those situations are
common to many functions, an error function will be
called to print a stderr message, rather than to have
that coded over and over in all those functions.

Only problem is, in order for debugging to be much
less painful, the location where the problem happens
must still be known. In the below zsh, the first line
handles this by accessing the function stack - pretty
clever, ey?

Note: arrays in zsh are *not* zero-indexed, so the
first element of funcstack is funcstack[1] and that is
the current function! Ergo, funcstack[2] is the
function that called the error handler!

My question is, how do I do the same in Lisp (Elisp)?

The zsh:

    no-file-msg () {
        local fun=$funcstack[2]
        local file=$1
        echo "$fun: no such file: $file" >&2
    }

[1] http://user.it.uu.se/~embe8573/conf/.zsh/error

-- 
underground experts united
http://user.it.uu.se/~embe8573




^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-10-27  1:50 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <mailman.1053.1445821696.7904.help-gnu-emacs@gnu.org>
2015-10-26  2:42 ` factor out error message functions, access function stack to know location Dan Espen
2015-10-27  0:27   ` Emanuel Berg
2015-10-27  1:50     ` Emanuel Berg
2015-10-26  1:17 Emanuel Berg

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.