unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* 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 public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

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