unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
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?

  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).