all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* Debugger and mode-line
@ 2006-06-28 16:38 Lars Hansen
  2006-06-29 12:58 ` Richard Stallman
  0 siblings, 1 reply; 13+ messages in thread
From: Lars Hansen @ 2006-06-28 16:38 UTC (permalink / raw)


For a long time, I have had problems with the Emacs lisp debugger: The
value returned from match-string calls was often wrong. Now I have found
out that match-data was overwritten during evaluation of the mode-line
because I have an abbreviate-file-name call there, and
abbreviate-file-name overwrites match-data.

Is this a debugger bug? Or should evaluation of the mode-line save
match-data?

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Debugger and mode-line
  2006-06-28 16:38 Debugger and mode-line Lars Hansen
@ 2006-06-29 12:58 ` Richard Stallman
  2006-06-29 15:21   ` Lars Hansen
  0 siblings, 1 reply; 13+ messages in thread
From: Richard Stallman @ 2006-06-29 12:58 UTC (permalink / raw)
  Cc: emacs-devel

    Is this a debugger bug? Or should evaluation of the mode-line save
    match-data?

It should save the match-data, because it is a generally useful
function and regexp matching is not part of its _purpose_.

I'll install that sometime soon.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Debugger and mode-line
  2006-06-29 12:58 ` Richard Stallman
@ 2006-06-29 15:21   ` Lars Hansen
  2006-06-30 11:07     ` Richard Stallman
  2006-07-08  1:12     ` Richard Stallman
  0 siblings, 2 replies; 13+ messages in thread
From: Lars Hansen @ 2006-06-29 15:21 UTC (permalink / raw)
  Cc: emacs-devel

Richard Stallman wrote:

>    Is this a debugger bug? Or should evaluation of the mode-line save
>    match-data?
>
>It should save the match-data, because it is a generally useful
>function and regexp matching is not part of its _purpose_.
>  
>
I agree that abbreviate-file-name should save match data.
But what I meant was: Maybe Emacs should save match data when
*evaluating the modeline*. Otherwise someone will run into the problem
of malfunctioning debugger because they happen to have something else in
the modeline that overwrite match data.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Debugger and mode-line
  2006-06-29 15:21   ` Lars Hansen
@ 2006-06-30 11:07     ` Richard Stallman
  2006-07-08  1:12     ` Richard Stallman
  1 sibling, 0 replies; 13+ messages in thread
From: Richard Stallman @ 2006-06-30 11:07 UTC (permalink / raw)
  Cc: emacs-devel

    I agree that abbreviate-file-name should save match data.
    But what I meant was: Maybe Emacs should save match data when
    *evaluating the modeline*.

That is a good idea.  Can someone please implement it and ack?

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Debugger and mode-line
  2006-06-29 15:21   ` Lars Hansen
  2006-06-30 11:07     ` Richard Stallman
@ 2006-07-08  1:12     ` Richard Stallman
  2006-07-08  9:53       ` Thien-Thi Nguyen
  1 sibling, 1 reply; 13+ messages in thread
From: Richard Stallman @ 2006-07-08  1:12 UTC (permalink / raw)
  Cc: emacs-devel

[I sent this message a week ago but did not get a response.
Could we get the discussion moving again?]

    I agree that abbreviate-file-name should save match data.
    But what I meant was: Maybe Emacs should save match data when
    *evaluating the modeline*.

That is a good idea.  Can someone please implement it and ack?

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Debugger and mode-line
  2006-07-08  1:12     ` Richard Stallman
@ 2006-07-08  9:53       ` Thien-Thi Nguyen
  2006-07-08 14:23         ` Andreas Schwab
  2006-07-08 20:57         ` Richard Stallman
  0 siblings, 2 replies; 13+ messages in thread
From: Thien-Thi Nguyen @ 2006-07-08  9:53 UTC (permalink / raw)


Richard Stallman <rms@gnu.org> writes:

> That is a good idea.  Can someone please implement it and ack?

does this patch look ok?

thi

_________________________________________________________
*** xdisp.c	1 Jul 2006 23:29:04 -0000	1.1109
--- xdisp.c	8 Jul 2006 09:50:41 -0000
***************
*** 16522,16527 ****
--- 16522,16528 ----
  {
    struct it it;
    struct face *face;
+   Lisp_Object match_data;
    int count = SPECPDL_INDEX ();
  
    init_iterator (&it, w, -1, -1, NULL, face_id);
***************
*** 16542,16548 ****
--- 16543,16551 ----
       kboard-local variables in the mode_line_format will get the right
       values.  */
    push_frame_kboard (it.f);
+   match_data = Fmatch_data (Qnil, Qnil, Qnil);
    display_mode_element (&it, 0, 0, 0, format, Qnil, 0);
+   Fset_match_data (match_data, Qnil);
    pop_frame_kboard ();
  
    unbind_to (count, Qnil);

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Debugger and mode-line
  2006-07-08  9:53       ` Thien-Thi Nguyen
@ 2006-07-08 14:23         ` Andreas Schwab
  2006-07-08 14:58           ` Stefan Monnier
  2006-07-08 20:57         ` Richard Stallman
  1 sibling, 1 reply; 13+ messages in thread
From: Andreas Schwab @ 2006-07-08 14:23 UTC (permalink / raw)
  Cc: emacs-devel

Thien-Thi Nguyen <ttn@gnu.org> writes:

> ***************
> *** 16542,16548 ****
> --- 16543,16551 ----
>        kboard-local variables in the mode_line_format will get the right
>        values.  */
>     push_frame_kboard (it.f);
> +   match_data = Fmatch_data (Qnil, Qnil, Qnil);
>     display_mode_element (&it, 0, 0, 0, format, Qnil, 0);
> +   Fset_match_data (match_data, Qnil);

You'll need to protect match_data from GC, since display_mode_element can
call eval.

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Debugger and mode-line
  2006-07-08 14:23         ` Andreas Schwab
@ 2006-07-08 14:58           ` Stefan Monnier
  0 siblings, 0 replies; 13+ messages in thread
From: Stefan Monnier @ 2006-07-08 14:58 UTC (permalink / raw)
  Cc: Thien-Thi Nguyen, emacs-devel

>> +   match_data = Fmatch_data (Qnil, Qnil, Qnil);
>> display_mode_element (&it, 0, 0, 0, format, Qnil, 0);
>> +   Fset_match_data (match_data, Qnil);

> You'll need to protect match_data from GC, since display_mode_element can
> call eval.

And from non-local exits as well, I believe,


        Stefan

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Debugger and mode-line
  2006-07-08  9:53       ` Thien-Thi Nguyen
  2006-07-08 14:23         ` Andreas Schwab
@ 2006-07-08 20:57         ` Richard Stallman
  2006-07-16 10:26           ` Thien-Thi Nguyen
  1 sibling, 1 reply; 13+ messages in thread
From: Richard Stallman @ 2006-07-08 20:57 UTC (permalink / raw)
  Cc: emacs-devel

This change should use record_unwind_protect.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Debugger and mode-line
  2006-07-08 20:57         ` Richard Stallman
@ 2006-07-16 10:26           ` Thien-Thi Nguyen
  2006-07-17  1:41             ` Richard Stallman
  0 siblings, 1 reply; 13+ messages in thread
From: Thien-Thi Nguyen @ 2006-07-16 10:26 UTC (permalink / raw)
  Cc: emacs-devel

Richard Stallman <rms@gnu.org> writes:

> This change should use record_unwind_protect.

how about the following?  is it true that using
`record_unwind_save_match_data' means it is not
necessary to use a separate auto var?

thi


___________________________________________________________
*** xdisp.c	1 Jul 2006 23:29:04 -0000	1.1109
--- xdisp.c	16 Jul 2006 10:24:53 -0000
***************
*** 16542,16547 ****
--- 16542,16548 ----
       kboard-local variables in the mode_line_format will get the right
       values.  */
    push_frame_kboard (it.f);
+   record_unwind_save_match_data ();
    display_mode_element (&it, 0, 0, 0, format, Qnil, 0);
    pop_frame_kboard ();

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Debugger and mode-line
  2006-07-16 10:26           ` Thien-Thi Nguyen
@ 2006-07-17  1:41             ` Richard Stallman
  2006-07-17  7:48               ` Thien-Thi Nguyen
  0 siblings, 1 reply; 13+ messages in thread
From: Richard Stallman @ 2006-07-17  1:41 UTC (permalink / raw)
  Cc: eliz, emacs-devel

    how about the following?  is it true that using
    `record_unwind_save_match_data' means it is not
    necessary to use a separate auto var?

Yes.  Would someone please install this change:

    *** xdisp.c	1 Jul 2006 23:29:04 -0000	1.1109
    --- xdisp.c	16 Jul 2006 10:24:53 -0000
    ***************
    *** 16542,16547 ****
    --- 16542,16548 ----
	   kboard-local variables in the mode_line_format will get the right
	   values.  */
	push_frame_kboard (it.f);
    +   record_unwind_save_match_data ();
	display_mode_element (&it, 0, 0, 0, format, Qnil, 0);
	pop_frame_kboard ();

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Debugger and mode-line
  2006-07-17  1:41             ` Richard Stallman
@ 2006-07-17  7:48               ` Thien-Thi Nguyen
  2006-07-17 16:21                 ` Lars Hansen
  0 siblings, 1 reply; 13+ messages in thread
From: Thien-Thi Nguyen @ 2006-07-17  7:48 UTC (permalink / raw)


Richard Stallman <rms@gnu.org> writes:

>     how about the following?  is it true that using
>     `record_unwind_save_match_data' means it is not
>     necessary to use a separate auto var?
> 
> Yes.  Would someone please install this change:

thanks for the confirmation.  installed.

thi

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: Debugger and mode-line
  2006-07-17  7:48               ` Thien-Thi Nguyen
@ 2006-07-17 16:21                 ` Lars Hansen
  0 siblings, 0 replies; 13+ messages in thread
From: Lars Hansen @ 2006-07-17 16:21 UTC (permalink / raw)
  Cc: emacs-devel

Thien-Thi Nguyen wrote:

>thanks for the confirmation.  installed.
>  
>
Thanks for fixing this!

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2006-07-17 16:21 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-06-28 16:38 Debugger and mode-line Lars Hansen
2006-06-29 12:58 ` Richard Stallman
2006-06-29 15:21   ` Lars Hansen
2006-06-30 11:07     ` Richard Stallman
2006-07-08  1:12     ` Richard Stallman
2006-07-08  9:53       ` Thien-Thi Nguyen
2006-07-08 14:23         ` Andreas Schwab
2006-07-08 14:58           ` Stefan Monnier
2006-07-08 20:57         ` Richard Stallman
2006-07-16 10:26           ` Thien-Thi Nguyen
2006-07-17  1:41             ` Richard Stallman
2006-07-17  7:48               ` Thien-Thi Nguyen
2006-07-17 16:21                 ` Lars Hansen

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.