GNU bug report logs - #24882
25.1; edebug-defun fails when lparen in string at BOL

Previous Next

Package: emacs;

Reported by: David Bremner <david <at> tethera.net>

Date: Sat, 5 Nov 2016 13:34:01 UTC

Severity: normal

Tags: fixed

Found in version 25.1

Fixed in version 27.1

Done: Noam Postavsky <npostavs <at> users.sourceforge.net>

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 24882 in the body.
You can then email your comments to 24882 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-gnu-emacs <at> gnu.org:
bug#24882; Package emacs. (Sat, 05 Nov 2016 13:34:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to David Bremner <david <at> tethera.net>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sat, 05 Nov 2016 13:34:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: David Bremner <david <at> tethera.net>
To: bug-gnu-emacs <at> gnu.org
Subject: 25.1; edebug-defun fails when lparen in string at BOL
Date: Sat, 05 Nov 2016 10:33:12 -0300
1) save the following definitions into a file edebug-fail.el

(defun edebug-fail ()
  "blah"
  (glub "foo
(bar)"))

(defun edebug-success ()
  "blah"
  (glub "foo (bar)"))

2) emacs -Q edebug-defun.el

3) place the point after the defun for edebug fail

4) run M-x edebug-defun ; observe the next defun, for edebug-success is
evaled.

5) Add a space before (bar), repeat step 4. Observe the correct function
definition is evaluated


In GNU Emacs 25.1.1 (x86_64-pc-linux-gnu, GTK+ Version 3.22.1)
 of 2016-10-24, modified by Debian built on trouble
Windowing system distributor 'The X.Org Foundation', version 11.0.11804000
System Description:	Debian GNU/Linux testing (stretch)

Configured using:
 'configure --build x86_64-linux-gnu --prefix=/usr
 --sharedstatedir=/var/lib --libexecdir=/usr/lib
 --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --with-pop=yes
 --enable-locallisppath=/etc/emacs25:/etc/emacs:/usr/local/share/emacs/25.1/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/25.1/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --build x86_64-linux-gnu --prefix=/usr
 --sharedstatedir=/var/lib --libexecdir=/usr/lib
 --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --with-pop=yes
 --enable-locallisppath=/etc/emacs25:/etc/emacs:/usr/local/share/emacs/25.1/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/25.1/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --with-x=yes --with-x-toolkit=gtk3
 --with-toolkit-scroll-bars --with-xwidgets 'CFLAGS=-g -O2
 -fdebug-prefix-map=/build/emacs25-25.1+1=. -fstack-protector-strong
 -Wformat -Werror=format-security -Wall' 'CPPFLAGS=-Wdate-time
 -D_FORTIFY_SOURCE=2' LDFLAGS=-Wl,-z,relro'

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GCONF GSETTINGS
NOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11 XWIDGETS

Important settings:
  value of $LANG: en_CA.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Emacs-Lisp

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
edebug-fail
Edebug: edebug-success
edebug-success
Mark set
Saving file /home/bremner/edebug-fail.el...
Wrote /home/bremner/edebug-fail.el
Quit
Edebug: edebug-success
edebug-success

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message dired format-spec rfc822 mml
mml-sec password-cache epg epg-config gnus-util mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail
rfc2047 rfc2045 ietf-drums mm-util help-fns help-mode mail-prsvr
mail-utils edebug easymenu cl-loaddefs pcase cl-lib time-date mule-util
tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type
mwheel x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt
fringe tabulated-list newcomment elisp-mode lisp-mode prog-mode register
page menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock
font-lock syntax facemenu font-core frame cl-generic cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese charscript case-table epa-hook
jka-cmpr-hook help simple abbrev minibuffer cl-preloaded nadvice
loaddefs button faces cus-face macroexp files text-properties overlay
sha1 md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote dbusbind inotify dynamic-setting
system-font-setting font-render-setting xwidget-internal move-toolbar
gtk x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 89477 8763)
 (symbols 48 20211 0)
 (miscs 40 58 147)
 (strings 32 15351 4427)
 (string-bytes 1 434716)
 (vectors 16 12314)
 (vector-slots 8 436277 4899)
 (floats 8 167 66)
 (intervals 56 280 0)
 (buffers 976 19))

-- 
David Bremner                                  Professor, UNB Computer Science
bremner <at> unb.ca			           
http://www.cs.unb.ca/~bremner               Cross Appointment, UNB Mathematics




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#24882; Package emacs. (Sun, 06 Nov 2016 00:06:01 GMT) Full text and rfc822 format available.

Message #8 received at 24882 <at> debbugs.gnu.org (full text, mbox):

From: John Mastro <john.b.mastro <at> gmail.com>
To: 24882 <at> debbugs.gnu.org
Cc: David Bremner <david <at> tethera.net>
Subject: Re: bug#24882: 25.1; edebug-defun fails when lparen in string at BOL
Date: Sat, 5 Nov 2016 17:05:17 -0700
David Bremner <david <at> tethera.net> wrote:
> 1) save the following definitions into a file edebug-fail.el
>
> (defun edebug-fail ()
>   "blah"
>   (glub "foo
> (bar)"))
>
> (defun edebug-success ()
>   "blah"
>   (glub "foo (bar)"))
>
> 2) emacs -Q edebug-defun.el
>
> 3) place the point after the defun for edebug fail
>
> 4) run M-x edebug-defun ; observe the next defun, for edebug-success is
> evaled.
>
> 5) Add a space before (bar), repeat step 4. Observe the correct function
> definition is evaluated

This is caused by the heuristic that an open paren in column zero
indicates the beginning of a defun, via end-of-defun. If you set
open-paren-in-column-0-is-defun-start to nil the recipe will work as
expected (i.e. edebug-defun will evaluate edebug-fail).

Not sure if there's anything that can be reasonably done to improve this
(other than changing the default for o-p-i-c-0-i-d-s).

        John




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#24882; Package emacs. (Wed, 30 Nov 2016 08:51:01 GMT) Full text and rfc822 format available.

Message #11 received at 24882 <at> debbugs.gnu.org (full text, mbox):

From: Matt Armstrong <marmstrong <at> google.com>
To: John Mastro <john.b.mastro <at> gmail.com>
Cc: David Bremner <david <at> tethera.net>, 24882 <at> debbugs.gnu.org
Subject: Re: bug#24882: 25.1; edebug-defun fails when lparen in string at BOL
Date: Wed, 30 Nov 2016 00:48:07 -0800
John Mastro <john.b.mastro <at> gmail.com> writes:

> David Bremner <david <at> tethera.net> wrote:
>> 1) save the following definitions into a file edebug-fail.el
>>
>> (defun edebug-fail ()
>>   "blah"
>>   (glub "foo
>> (bar)"))
>>
>> (defun edebug-success ()
>>   "blah"
>>   (glub "foo (bar)"))
>>
>> 2) emacs -Q edebug-defun.el
>>
>> 3) place the point after the defun for edebug fail
>>
>> 4) run M-x edebug-defun ; observe the next defun, for edebug-success is
>> evaled.
>>
>> 5) Add a space before (bar), repeat step 4. Observe the correct function
>> definition is evaluated
>
> This is caused by the heuristic that an open paren in column zero
> indicates the beginning of a defun, via end-of-defun. If you set
> open-paren-in-column-0-is-defun-start to nil the recipe will work as
> expected (i.e. edebug-defun will evaluate edebug-fail).
>
> Not sure if there's anything that can be reasonably done to improve this
> (other than changing the default for o-p-i-c-0-i-d-s).
>
>         John

Indeed this heuristic appears to be intentional, justified by an apeal
to efficiency.  The Emacs manual uses an example very similar to
`edebug-fail' above as a "what not to do" case:
https://www.gnu.org/software/emacs/manual/html_node/emacs/Left-Margin-Paren.html

David, if you agree with this rationale, mind closing the bug?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#24882; Package emacs. (Wed, 30 Nov 2016 12:00:03 GMT) Full text and rfc822 format available.

Message #14 received at 24882 <at> debbugs.gnu.org (full text, mbox):

From: David Bremner <david <at> tethera.net>
To: Matt Armstrong <marmstrong <at> google.com>,
 John Mastro <john.b.mastro <at> gmail.com>
Cc: 24882 <at> debbugs.gnu.org
Subject: Re: bug#24882: 25.1; edebug-defun fails when lparen in string at BOL
Date: Wed, 30 Nov 2016 07:59:44 -0400
Matt Armstrong <marmstrong <at> google.com> writes:

> Indeed this heuristic appears to be intentional, justified by an apeal
> to efficiency.  The Emacs manual uses an example very similar to
> `edebug-fail' above as a "what not to do" case:
> https://www.gnu.org/software/emacs/manual/html_node/emacs/Left-Margin-Paren.html
>
> David, if you agree with this rationale, mind closing the bug?

For what it's worth, I don't agree with the rationale. The debugger
should work on all syntactically correct defuns. If left parens in the
left margin are forbidden in emacs lisp, then I expect a syntax error
during normal evaluation.

At minimum, the debugger should detect this situation, rather than
silently doing the wrong thing.





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#24882; Package emacs. (Sat, 10 Feb 2018 14:04:01 GMT) Full text and rfc822 format available.

Message #17 received at 24882 <at> debbugs.gnu.org (full text, mbox):

From: Noam Postavsky <npostavs <at> users.sourceforge.net>
To: David Bremner <david <at> tethera.net>
Cc: 24882 <at> debbugs.gnu.org
Subject: Re: bug#24882: 25.1; edebug-defun fails when lparen in string at BOL
Date: Sat, 10 Feb 2018 09:03:30 -0500
tags 24882 fixed
close 24882 27.1
quit

David Bremner <david <at> tethera.net> writes:

> 1) save the following definitions into a file edebug-fail.el
>
> (defun edebug-fail ()
>   "blah"
>   (glub "foo
> (bar)"))
>
> (defun edebug-success ()
>   "blah"
>   (glub "foo (bar)"))
>
> 2) emacs -Q edebug-defun.el
>
> 3) place the point after the defun for edebug fail
>
> 4) run M-x edebug-defun ; observe the next defun, for edebug-success is
> evaled.
>
> 5) Add a space before (bar), repeat step 4. Observe the correct function
> definition is evaluated

This is fixed in master.

[1: 14b9558752]: 2017-12-12 23:03:00 -0500
  * src/syntax.c (find_defun_start): Use syntax-ppss
  https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=14b95587520959c5b54356547a0a69932a9bb480




Added tag(s) fixed. Request was from Noam Postavsky <npostavs <at> users.sourceforge.net> to control <at> debbugs.gnu.org. (Sat, 10 Feb 2018 14:04:02 GMT) Full text and rfc822 format available.

bug marked as fixed in version 27.1, send any further explanations to 24882 <at> debbugs.gnu.org and David Bremner <david <at> tethera.net> Request was from Noam Postavsky <npostavs <at> users.sourceforge.net> to control <at> debbugs.gnu.org. (Sat, 10 Feb 2018 14:04:02 GMT) Full text and rfc822 format available.

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

This bug report was last modified 7 years and 106 days ago.

Previous Next


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