From: "Robert D. Crawford" <rdc1x@comcast.net>
To: help-gnu-emacs@gnu.org
Subject: Re: elisp beginner's parens question ??
Date: Thu, 26 Apr 2007 21:58:31 -0500 [thread overview]
Message-ID: <87d51qcylk.fsf@comcast.net> (raw)
In-Reply-To: mailman.2572.1177641875.7795.help-gnu-emacs@gnu.org
William Case <billlinux@rogers.com> writes:
> However, the "mental tips or tricks" was really a 'by the way' or an
> after thought question. What I was really asking was how the
> interpreter or emacs uses parenthesis or how parenthesis are nested.
> Put another way, I was trying to develop for myself a minds eye view of
> how check-parens works. Does check-parens just count left parens and
> compare that to the number of right parens to find an error, or does it
> actually examine nested parens pairs and work inword (or outward) ?
This might provide your answer. If you do C-h f and supply a function
name, the resulting buffer, in X anyway, will have a link to the
function's definition.
(defun check-parens () ; lame name?
"Check for unbalanced parentheses in the current buffer.
More accurately, check the narrowed part of the buffer for unbalanced
expressions (\"sexps\") in general. This is done according to the
current syntax table and will find unbalanced brackets or quotes as
appropriate. (See Info node `(emacs)Parentheses'.) If imbalance is
found, an error is signaled and point is left at the first unbalanced
character."
(interactive)
(condition-case data
;; Buffer can't have more than (point-max) sexps.
(scan-sexps (point-min) (point-max))
(scan-error (goto-char (nth 2 data))
;; Could print (nth 1 data), which is either
;; "Containing expression ends prematurely" or
;; "Unbalanced parentheses", but those may not be so
;; accurate/helpful, e.g. quotes may actually be
;; mismatched.
(error "Unmatched bracket or quote"))
(error (cond ((eq 'scan-error (car data))
(goto-char (nth 2 data))
(error "Unmatched bracket or quote"))
(t (signal (car data) (cdr data)))))))
--
Robert D. Crawford rdc1x@comcast.net
If ignorance is bliss, why aren't there more happy people?
next prev parent reply other threads:[~2007-04-27 2:58 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <mailman.2563.1177608564.7795.help-gnu-emacs@gnu.org>
2007-04-26 19:31 ` elisp beginner's parens question ?? Thien-Thi Nguyen
2007-04-27 2:38 ` William Case
[not found] ` <mailman.2572.1177641875.7795.help-gnu-emacs@gnu.org>
2007-04-27 2:58 ` Robert D. Crawford [this message]
2007-04-27 5:43 ` William Case
2007-04-27 9:59 ` Thien-Thi Nguyen
2007-04-27 13:58 ` William Case
[not found] ` <mailman.2602.1177682661.7795.help-gnu-emacs@gnu.org>
2007-04-27 15:41 ` Thien-Thi Nguyen
2007-04-27 18:01 ` William Case
2007-04-27 21:22 ` Dieter Wilhelm
2007-04-26 17:23 William Case
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87d51qcylk.fsf@comcast.net \
--to=rdc1x@comcast.net \
--cc=help-gnu-emacs@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).