* bug#24882: 25.1; edebug-defun fails when lparen in string at BOL
@ 2016-11-05 13:33 David Bremner
2016-11-06 0:05 ` John Mastro
2018-02-10 14:03 ` Noam Postavsky
0 siblings, 2 replies; 5+ messages in thread
From: David Bremner @ 2016-11-05 13:33 UTC (permalink / raw)
To: 24882
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@unb.ca
http://www.cs.unb.ca/~bremner Cross Appointment, UNB Mathematics
^ permalink raw reply [flat|nested] 5+ messages in thread
* bug#24882: 25.1; edebug-defun fails when lparen in string at BOL
2016-11-05 13:33 bug#24882: 25.1; edebug-defun fails when lparen in string at BOL David Bremner
@ 2016-11-06 0:05 ` John Mastro
2016-11-30 8:48 ` Matt Armstrong
2018-02-10 14:03 ` Noam Postavsky
1 sibling, 1 reply; 5+ messages in thread
From: John Mastro @ 2016-11-06 0:05 UTC (permalink / raw)
To: 24882; +Cc: David Bremner
David Bremner <david@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
^ permalink raw reply [flat|nested] 5+ messages in thread
* bug#24882: 25.1; edebug-defun fails when lparen in string at BOL
2016-11-06 0:05 ` John Mastro
@ 2016-11-30 8:48 ` Matt Armstrong
2016-11-30 11:59 ` David Bremner
0 siblings, 1 reply; 5+ messages in thread
From: Matt Armstrong @ 2016-11-30 8:48 UTC (permalink / raw)
To: John Mastro; +Cc: David Bremner, 24882
John Mastro <john.b.mastro@gmail.com> writes:
> David Bremner <david@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?
^ permalink raw reply [flat|nested] 5+ messages in thread
* bug#24882: 25.1; edebug-defun fails when lparen in string at BOL
2016-11-30 8:48 ` Matt Armstrong
@ 2016-11-30 11:59 ` David Bremner
0 siblings, 0 replies; 5+ messages in thread
From: David Bremner @ 2016-11-30 11:59 UTC (permalink / raw)
To: Matt Armstrong, John Mastro; +Cc: 24882
Matt Armstrong <marmstrong@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.
^ permalink raw reply [flat|nested] 5+ messages in thread
* bug#24882: 25.1; edebug-defun fails when lparen in string at BOL
2016-11-05 13:33 bug#24882: 25.1; edebug-defun fails when lparen in string at BOL David Bremner
2016-11-06 0:05 ` John Mastro
@ 2018-02-10 14:03 ` Noam Postavsky
1 sibling, 0 replies; 5+ messages in thread
From: Noam Postavsky @ 2018-02-10 14:03 UTC (permalink / raw)
To: David Bremner; +Cc: 24882
tags 24882 fixed
close 24882 27.1
quit
David Bremner <david@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
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2018-02-10 14:03 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-11-05 13:33 bug#24882: 25.1; edebug-defun fails when lparen in string at BOL David Bremner
2016-11-06 0:05 ` John Mastro
2016-11-30 8:48 ` Matt Armstrong
2016-11-30 11:59 ` David Bremner
2018-02-10 14:03 ` Noam Postavsky
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.