GNU bug report logs - #1406
backward-up-list reports scan error incorrectly?

Previous Next

Package: emacs;

Reported by: xah lee <xah <at> xahlee.org>

Date: Fri, 21 Nov 2008 21:30:03 UTC

Severity: normal

Tags: notabug, wontfix

Done: Glenn Morris <rgm <at> gnu.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 1406 in the body.
You can then email your comments to 1406 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#1406; Package emacs. Full text and rfc822 format available.

Acknowledgement sent to xah lee <xah <at> xahlee.org>:
New bug report received and forwarded. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. Full text and rfc822 format available.

Message #5 received at submit <at> emacsbugs.donarmstrong.com (full text, mbox):

From: xah lee <xah <at> xahlee.org>
To: bug-gnu-emacs <at> gnu.org
Subject: backward-up-list reports scan error incorrectly?
Date: Fri, 21 Nov 2008 13:24:30 -0800
This appears to be a bug of backward-up-list.

Summary: when i do backward-up-list in a particular lisp file, when  
the cursor is inside a double quote, it tell me Unbalanced  
parentheses, but there does not seems to be any unbalanced paren. The  
file byte-compiles fine.

steps to reproduce:

Save the following function to a file.

(defun replace-keybinding-notation (p1 p2)
  "Do a bunch of find/replace on current text selection."
  (interactive "r")

  (let (mystr (case-fold-search nil) (case-replace nil))
    (setq mystr (buffer-substring p1 p2))

    (setq mystr
          (with-temp-buffer
            (insert mystr)

            ;; C-
            (goto-char (point-min))
            (while
                (search-forward-regexp "C-" nil t)
              (replace-match "Ctlr+" t) )

            ;; M-
            (goto-char (point-min))
            (while
                (search-forward-regexp "M-" nil t)
              (replace-match "Alt+" t) )

            ;; Ctrl+Alt+t
            (goto-char (point-min))
            (while
                (search-forward-regexp "Ctrl\\+Alt\\+\\([[:graph:]]\ 
\)" nil t)
              (replace-match "<span class=\"kbd\"><span class=\"key 
\">Ctrl</span>+<span class=\"key\">Alt</span>+<span class=\"key\">\ 
\1</span></span>" t) )

            ;; Cmd+Shift+t
            (goto-char (point-min))
            (while
                (search-forward-regexp "Cmd\\+Shift\\+\\([[:graph:]]\ 
\)" nil t)
              (replace-match "<span class=\"kbd\"><span class=\"key 
\">Cmd</span>+<span class=\"key\">Shift</span>+<span class=\"key\">\ 
\1</span></span>" t) )

            ;; Alt+Shift+t
            (goto-char (point-min))
            (while
                (search-forward-regexp "Alt\\+Shift\\+\\([[:graph:]]\ 
\)" nil t)
              (replace-match "<span class=\"kbd\"><span class=\"key 
\">Alt</span>+<span class=\"key\">Shift</span>+<span class=\"key\">\ 
\1</span></span>" t) )

            ;; Ctrl+t Ctrl+t
            (goto-char (point-min))
            (while
                (search-forward-regexp "Ctrl\\+\\([[:graph:]]\\) Ctrl 
\\+\\([[:graph:]]\\)" nil t)
              (replace-match "<span class=\"kbd\"><span class=\"key 
\">Ctrl</span>+<span class=\"key\">\\1</span> <span class=\"key 
\">Ctrl</span>+<span class=\"key\">\\2</span></span>" t) )

            ;; Ctrl+t
            (goto-char (point-min))
            (while
                (search-forward-regexp "Ctrl\\+\\([[:graph:]]\\)"  
nil t)
              (replace-match "<span class=\"kbd\"><span class=\"key 
\">Ctrl</span>+<span class=\"key\">\\1</span></span>" t) )

            ;; Alt+t
            (goto-char (point-min))
            (while
                (search-forward-regexp "Alt\\+\\([[:graph:]]\\)" nil t)
              (replace-match "<span class=\"kbd\"><span class=\"key 
\">Alt</span>+<span class=\"key\">\\1</span></span>" t) )

            ;; Meta+t
            (goto-char (point-min))
            (while
                (search-forward-regexp "Meta\\+\\([[:graph:]]\\)"  
nil t)
              (replace-match "<span class=\"kbd\"><span class=\"key 
\">Meta</span>+<span class=\"key\">\\1</span></span>" t) )

            ;; Cmd+t
            (goto-char (point-min))
            (while
                (search-forward-regexp "Cmd\\+\\([[:graph:]]\\)" nil t)
              (replace-match "<span class=\"kbd\"><span class=\"key 
\">Cmd</span>+<span class=\"key\">\\1</span></span>" t) )

            (buffer-string)
            )
          )

    (delete-region p1 p2)
    (insert mystr)
    )
  )

• start emacs by /Applications/Emacs.app/Contents/MacOS/Emacs -q

• open the file.

• interactive search for “M-”, do it twice so that your cursor  
is in between the double quote on the line: (search-forward-regexp  
"M-" nil t). Press return so that your cursor is just before the  
closing quote.

• press Ctrl+Alt+↑ (invoke backward-up-list).

• emacs says: “up-list: Scan error: "Unbalanced parentheses", 582,  
1”

---------------------------------

In GNU Emacs 22.2.1 (powerpc-apple-darwin8.11.0, Carbon Version 1.6.0)
 of 2008-04-05 on g5.tokyo.stp.isas.jaxa.jp
Windowing system distributor `Apple Inc.', version 10.4.11
configured using `configure  '--prefix=/Applications/Emacs.app/ 
Contents/Resources' '--with-carbon' '--without-x' '--libexecdir=/ 
Volumes/Emacs/Emacs.app/Contents/MacOS/libexec' 'CFLAGS=-Os -arch  
i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk -DUSE_ATSUI - 
DUSE_MAC_TSM''

  Xah
∑ http://xahlee.org/

Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#1406; Package emacs. Full text and rfc822 format available.

Acknowledgement sent to xah lee <xah <at> xahlee.org>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. Full text and rfc822 format available.

Message #10 received at 1406 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: xah lee <xah <at> xahlee.org>
To: 1406 <at> debbugs.gnu.org
Subject: Re: bug#1406: Acknowledgement (backward-up-list reports scan error  incorrectly?)
Date: Fri, 21 Nov 2008 13:39:56 -0800
addendum:

the problem does not occur if you switch to text-mode.

It occur if you switch to emacs-lisp-mode or fundamental-mode.

(so, the bug seems having to do with syntax table)

  Xah
∑ http://xahlee.org/

☄


On Nov 21, 2008, at 1:30 PM, Emacs bug Tracking System wrote:


Thank you for filing a new bug report with Emacs.

This is an automatically generated reply to let you know your message
has been received.

Your message is being forwarded to the package maintainers and other
interested parties for their attention; they will reply in due course.

Your message has been sent to the package maintainer(s):
 Emacs Bugs <bug-gnu-emacs <at> gnu.org>

If you wish to submit further information on this problem, please
send it to 1406 <at> debbugs.gnu.org, as before.

Please do not send mail to help-debbugs <at> gnu.org unless you wish
to report a problem with the Bug-tracking system.


-- 
1406: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=1406
Emacs Bug Tracking System
Contact help-debbugs <at> gnu.org with problems

☄






Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#1406; Package emacs. Full text and rfc822 format available.

Acknowledgement sent to Alan Mackenzie <acm <at> muc.de>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. Full text and rfc822 format available.

Message #15 received at submit <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Alan Mackenzie <acm <at> muc.de>
To: xah lee <xah <at> xahlee.org>, 1406 <at> debbugs.gnu.org
Cc: bug-gnu-emacs <at> gnu.org
Subject: Re: bug#1406: backward-up-list reports scan error incorrectly?
Date: Fri, 21 Nov 2008 23:19:44 +0000
'Evening, Xah!

On Fri, Nov 21, 2008 at 01:24:30PM -0800, xah lee wrote:
> This appears to be a bug of backward-up-list.

> Summary: when i do backward-up-list in a particular lisp file, when
> the cursor is inside a double quote, it tell me Unbalanced
> parentheses, but there does not seems to be any unbalanced paren. The
> file byte-compiles fine.

What do you mean, "the cursor is inside a double quote"?  Functions like
backward-up-list don't know whether or not they start inside a string or
comment; the only way they could find out would be by doing a
partial-parse-sexp from some "safe" position earlier on in the file.

So these functions assume they're NOT in a string or comment.
backward-up-list moves back to the quote mark, and tries to jump over the
"string it's just found", possibly taking it to the beginning of the
buffer.

The bug appears to be in the doc string of the function, which forgets to
mention this assumption.

If you really, really, need a function which works the way you've
pictured, it's not too difficult to write.  But it will be SLOW, SLOW,
SLOW.

-- 
Alan Mackenzie (Nuremberg, Germany).





Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#1406; Package emacs. Full text and rfc822 format available.

Acknowledgement sent to Alan Mackenzie <acm <at> muc.de>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. Full text and rfc822 format available.

Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#1406; Package emacs. Full text and rfc822 format available.

Acknowledgement sent to xah lee <xah <at> xahlee.org>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. Full text and rfc822 format available.

Message #25 received at submit <at> emacsbugs.donarmstrong.com (full text, mbox):

From: xah lee <xah <at> xahlee.org>
To: Alan Mackenzie <acm <at> muc.de>
Cc: 1406 <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
Subject: Re: bug#1406: backward-up-list reports scan error incorrectly?
Date: Fri, 21 Nov 2008 15:26:03 -0800
Hi Alan,

it works if you switch to text mode though.

It doesn't work while in emacs-lisp-mode and fundamental mode.

In any case, normally it works when inside string too. Just not in  
this particular case.

  Xah
∑ http://xahlee.org/

☄

On Nov 21, 2008, at 3:19 PM, Alan Mackenzie wrote:

'Evening, Xah!

On Fri, Nov 21, 2008 at 01:24:30PM -0800, xah lee wrote:
> This appears to be a bug of backward-up-list.

> Summary: when i do backward-up-list in a particular lisp file, when
> the cursor is inside a double quote, it tell me Unbalanced
> parentheses, but there does not seems to be any unbalanced paren. The
> file byte-compiles fine.

What do you mean, "the cursor is inside a double quote"?  Functions like
backward-up-list don't know whether or not they start inside a string or
comment; the only way they could find out would be by doing a
partial-parse-sexp from some "safe" position earlier on in the file.

So these functions assume they're NOT in a string or comment.
backward-up-list moves back to the quote mark, and tries to jump over  
the
"string it's just found", possibly taking it to the beginning of the
buffer.

The bug appears to be in the doc string of the function, which  
forgets to
mention this assumption.

If you really, really, need a function which works the way you've
pictured, it's not too difficult to write.  But it will be SLOW, SLOW,
SLOW.

-- 
Alan Mackenzie (Nuremberg, Germany).

☄







Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#1406; Package emacs. Full text and rfc822 format available.

Acknowledgement sent to xah lee <xah <at> xahlee.org>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. Full text and rfc822 format available.

Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#1406; Package emacs. Full text and rfc822 format available.

Acknowledgement sent to Alan Mackenzie <acm <at> muc.de>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. Full text and rfc822 format available.

Message #35 received at submit <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Alan Mackenzie <acm <at> muc.de>
To: xah lee <xah <at> xahlee.org>
Cc: 1406 <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
Subject: Re: bug#1406: backward-up-list reports scan error incorrectly?
Date: Sat, 22 Nov 2008 12:36:45 +0000
Hi, Xah!

On Fri, Nov 21, 2008 at 03:26:03PM -0800, xah lee wrote:
> Hi Alan,

> it works if you switch to text mode though.

> It doesn't work while in emacs-lisp-mode and fundamental mode.

> In any case, normally it works when inside string too. Just not in  
> this particular case.

OK, I think half of the problem here is your prolixity, the other half
is my prolixity.  :-)

Try instead the following example:

(defun foo (arg)
  "foo does nothing."
  (interactive "P"))

Put point inside "P", and do C-M-u `backward-up-list'.  You get the
error.  Now modify the above function by inserting an open paren into
the doc string,

(defun foo (arg)
  "foo does nothing. ("
    (interactive "P"))

, and do the same again.  It finds that paren.  Why?  Because
backward-up-list assumes its starting point is NOT in a string.  It
jumps backwards over (what it thinks is) the string

    "\n(interactive "

, and then finds the ?\(. 

This is exactly what is happening in your somewhat larger example.

In text mode, presumably the syntax table doesn't define ?\" as a string
quote.  In fundamental mode, presumably it does.  "(syntax-after
(point))" is your friend here.

>   Xah

-- 
Alan Mackenzie (Nuremberg, Germany).





Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#1406; Package emacs. Full text and rfc822 format available.

Acknowledgement sent to Alan Mackenzie <acm <at> muc.de>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. Full text and rfc822 format available.

Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#1406; Package emacs. Full text and rfc822 format available.

Acknowledgement sent to xah lee <xah <at> xahlee.org>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. Full text and rfc822 format available.

Message #45 received at submit <at> emacsbugs.donarmstrong.com (full text, mbox):

From: xah lee <xah <at> xahlee.org>
To: Alan Mackenzie <acm <at> muc.de>
Cc: 1406 <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
Subject: Re: bug#1406: backward-up-list reports scan error incorrectly?
Date: Sat, 22 Nov 2008 04:53:57 -0800
hi Alan,

> (defun foo (arg)
>   "foo does nothing."
>   (interactive "P"))
>
> Put point inside "P", and do C-M-u `backward-up-list'.  You get the
> error.


i couldn't duplicate this. It seems to work for me.

am using
GNU Emacs 22.2.1 (powerpc-apple-darwin8.11.0, Carbon Version 1.6.0)  
of 2008-04-05 on g5.tokyo.stp.isas.jaxa.jp

i tried aquamacs. I can duplicate it with -Q, but not with -q.

Now i try carbon emacs again with -q, and i _can_ duplicate it.

... umm... not sure what is the problem now... since i'm pretty sure  
i don't have any customization for emacs-lisp-mode ...

am kinda tired now. Maybe i'll do some more testing to see what i  
find out.

  Xah
∑ http://xahlee.org/

☄

On Nov 22, 2008, at 4:36 AM, Alan Mackenzie wrote:

Hi, Xah!

On Fri, Nov 21, 2008 at 03:26:03PM -0800, xah lee wrote:
> Hi Alan,

> it works if you switch to text mode though.

> It doesn't work while in emacs-lisp-mode and fundamental mode.

> In any case, normally it works when inside string too. Just not in
> this particular case.

OK, I think half of the problem here is your prolixity, the other half
is my prolixity.  :-)

Try instead the following example:

(defun foo (arg)
  "foo does nothing."
  (interactive "P"))

Put point inside "P", and do C-M-u `backward-up-list'.  You get the
error.  Now modify the above function by inserting an open paren into
the doc string,

(defun foo (arg)
  "foo does nothing. ("
    (interactive "P"))

, and do the same again.  It finds that paren.  Why?  Because
backward-up-list assumes its starting point is NOT in a string.  It
jumps backwards over (what it thinks is) the string

    "\n(interactive "

, and then finds the ?\(.

This is exactly what is happening in your somewhat larger example.

In text mode, presumably the syntax table doesn't define ?\" as a string
quote.  In fundamental mode, presumably it does.  "(syntax-after
(point))" is your friend here.

>   Xah

-- 
Alan Mackenzie (Nuremberg, Germany).

☄







Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#1406; Package emacs. Full text and rfc822 format available.

Acknowledgement sent to xah lee <xah <at> xahlee.org>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. Full text and rfc822 format available.

Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#1406; Package emacs. Full text and rfc822 format available.

Acknowledgement sent to xah lee <xah <at> xahlee.org>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. Full text and rfc822 format available.

Message #55 received at submit <at> emacsbugs.donarmstrong.com (full text, mbox):

From: xah lee <xah <at> xahlee.org>
To: xah lee <xah <at> xahlee.org>
Cc: Alan Mackenzie <acm <at> muc.de>, 1406 <at> debbugs.gnu.org,
        bug-gnu-emacs <at> gnu.org
Subject: Re: bug#1406: backward-up-list reports scan error incorrectly?
Date: Sat, 22 Nov 2008 05:01:10 -0800
Sorry never mind.

i was able to duplicate your error. Some of my testing in previous  
post went wrong because i was in text-mode.

though, isn't this something easy to fix? I mean, it surely is easy  
to determine if cursor is in inside double quotes, therefore it can  
simply move out the quote then do backward-up-list?

In any case, thanks.

  Xah
∑ http://xahlee.org/

☄

On Nov 22, 2008, at 4:53 AM, xah lee wrote:

hi Alan,

> (defun foo (arg)
>   "foo does nothing."
>   (interactive "P"))
>
> Put point inside "P", and do C-M-u `backward-up-list'.  You get the
> error.


i couldn't duplicate this. It seems to work for me.

am using
GNU Emacs 22.2.1 (powerpc-apple-darwin8.11.0, Carbon Version 1.6.0)  
of 2008-04-05 on g5.tokyo.stp.isas.jaxa.jp

i tried aquamacs. I can duplicate it with -Q, but not with -q.

Now i try carbon emacs again with -q, and i _can_ duplicate it.

... umm... not sure what is the problem now... since i'm pretty sure  
i don't have any customization for emacs-lisp-mode ...

am kinda tired now. Maybe i'll do some more testing to see what i  
find out.

  Xah
∑ http://xahlee.org/

☄

On Nov 22, 2008, at 4:36 AM, Alan Mackenzie wrote:

Hi, Xah!

On Fri, Nov 21, 2008 at 03:26:03PM -0800, xah lee wrote:
> Hi Alan,

> it works if you switch to text mode though.

> It doesn't work while in emacs-lisp-mode and fundamental mode.

> In any case, normally it works when inside string too. Just not in
> this particular case.

OK, I think half of the problem here is your prolixity, the other half
is my prolixity.  :-)

Try instead the following example:

(defun foo (arg)
  "foo does nothing."
  (interactive "P"))

Put point inside "P", and do C-M-u `backward-up-list'.  You get the
error.  Now modify the above function by inserting an open paren into
the doc string,

(defun foo (arg)
  "foo does nothing. ("
    (interactive "P"))

, and do the same again.  It finds that paren.  Why?  Because
backward-up-list assumes its starting point is NOT in a string.  It
jumps backwards over (what it thinks is) the string

    "\n(interactive "

, and then finds the ?\(.

This is exactly what is happening in your somewhat larger example.

In text mode, presumably the syntax table doesn't define ?\" as a string
quote.  In fundamental mode, presumably it does.  "(syntax-after
(point))" is your friend here.

>   Xah

-- 
Alan Mackenzie (Nuremberg, Germany).

☄



☄







Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#1406; Package emacs. Full text and rfc822 format available.

Acknowledgement sent to xah lee <xah <at> xahlee.org>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. Full text and rfc822 format available.

Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#1406; Package emacs. Full text and rfc822 format available.

Acknowledgement sent to Alan Mackenzie <acm <at> muc.de>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. Full text and rfc822 format available.

Message #65 received at submit <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Alan Mackenzie <acm <at> muc.de>
To: xah lee <xah <at> xahlee.org>
Cc: 1406 <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
Subject: Re: bug#1406: backward-up-list reports scan error incorrectly?
Date: Sat, 22 Nov 2008 14:04:46 +0000
Hi, Xah!

On Sat, Nov 22, 2008 at 05:01:10AM -0800, xah lee wrote:
> i was able to duplicate your error. Some of my testing in previous
> post went wrong because i was in text-mode.

> though, isn't this something easy to fix?

No, because it isn't a bug.  It's the way the function is meant to work.
If there is a bug, it's that the doc-string (and maybe the elisp manual,
I haven't looked) is vague and incomplete.

It seems that you really want a slightly different function.

> I mean, it surely is easy  to determine if cursor is in inside double
> quotes, therefore it can simply move out the quote then do
> backward-up-list?

Well, it's easy, but very slow.  You first have to define what "inside"
and "outside" mean.

For example, you might scan from BOB, and point is inside a string if
there've been an odd number of string-quotes up to now (taking comments,
etc. into account).

Emacs Lisp Mode defines "inside a string" as an odd number of
string-quotes since the last "(" in column-0.  Try going into a large
Elisp file and deleting one of the "s.  It throws the fontification out
for the rest of the function, but then "recovers" for the rest of the
file.

> In any case, thanks.

You're welcome!

>   Xah
> ??? http://xahlee.org/

-- 
Alan Mackenzie (Nuremberg, Germany).


> On Nov 22, 2008, at 4:53 AM, xah lee wrote:
 
> hi Alan,

> >(defun foo (arg)
> >  "foo does nothing."
> >  (interactive "P"))

> >Put point inside "P", and do C-M-u `backward-up-list'.  You get the
> >error.

> (defun foo (arg)
>   "foo does nothing. ("
>     (interactive "P"))

> , and do the same again.  It finds that paren.  Why?  Because
> backward-up-list assumes its starting point is NOT in a string.  It
> jumps backwards over (what it thinks is) the string

>     "\n(interactive "

> , and then finds the ?\(.

> This is exactly what is happening in your somewhat larger example.

> In text mode, presumably the syntax table doesn't define ?\" as a string
> quote.  In fundamental mode, presumably it does.  "(syntax-after
> (point))" is your friend here.






Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#1406; Package emacs. Full text and rfc822 format available.

Acknowledgement sent to Alan Mackenzie <acm <at> muc.de>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. Full text and rfc822 format available.

Tags added: notabug, wontfix Request was from Glenn Morris <rgm <at> gnu.org> to control <at> emacsbugs.donarmstrong.com. (Mon, 01 Dec 2008 21:55:04 GMT) Full text and rfc822 format available.

Reply sent to Glenn Morris <rgm <at> gnu.org>:
You have taken responsibility. (Sat, 09 Jul 2011 18:05:02 GMT) Full text and rfc822 format available.

Notification sent to xah lee <xah <at> xahlee.org>:
bug acknowledged by developer. (Sat, 09 Jul 2011 18:05:02 GMT) Full text and rfc822 format available.

Message #77 received at 1406-done <at> debbugs.gnu.org (full text, mbox):

From: Glenn Morris <rgm <at> gnu.org>
To: 1406-done <at> debbugs.gnu.org
Subject: Re: bug#1406: backward-up-list reports scan error incorrectly?
Date: Sat, 09 Jul 2011 14:04:09 -0400
I don't see a need to keep open this particular report.
The doc of backward-up-list says:
"This command assumes point is not in a string or comment."






bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sun, 07 Aug 2011 11:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 14 years and 5 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.