[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#20734: 25.0.50; "Args out of range" with help-window-select t
From: |
Nicolas Richard |
Subject: |
bug#20734: 25.0.50; "Args out of range" with help-window-select t |
Date: |
Fri, 05 Jun 2015 11:25:35 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux) |
Eli Zaretskii <eliz@gnu.org> writes:
>> I understand that
>> get_char_property_and_overlay
>> (make_number (PT), Qdisplay, selected_window,
>> &overlay))
>> should not refer to PT but to "PT in selected_window", but I don't know
>> how to do that.
>
> Are you saying that adjust_point_for_property is called with the
> current buffer different from what's recorded in selected_window's
> buffer?
Yes, that's what I was guessing anyway.
> If so, please show the evidence: what is in current_buffer
> and what is recorded as the selected window's buffer at that point.
Let me try that. What I did :
1. run under gdb
2. follow the recipe up to the point where I type "C-h f if", but don't
hit RET
3. then go to gdb window
4. hit C-z to put a breakpoint in adjust_point_for_property
5. continue
6. go back to emacs and hit RET
Now back to gdb :
(gdb) p XBUFFER(XWINDOW(selected_window)->contents)->name_
$1 = 143880388
(gdb) xpr
Lisp_String
$2 = (struct Lisp_String *) 0x89370c0
"*Help*"
(gdb) p current_buffer->name_
$3 = 139646148
(gdb) xpr
Lisp_String
$4 = (struct Lisp_String *) 0x852d4c0
"*Messages*"
(gdb) p PT
$5 = 10067
(gdb) p Fwindow_point (selected_window)
$6 = 6
> And please note that the conditions in the 'if' clause that determine
> whether adjust_point_for_property is called freely manipulate values
> of current_buffer and PT, so perhaps the solution is add there a
> condition that selected_window's buffer and current_buffer are equal,
> such that in the case in point adjust_point_for_property is not called
> at all.
In command_loop_1 ?
I can more or less follow the code step by step, but I don't really
understand it. The only thing I'm now almost 100% confident is that in
this call (found in adjust_point_for_property) :
get_char_property_and_overlay
(make_number (PT), Qdisplay, selected_window,
&overlay))
PT refers to current_buffer, which is different from the buffer in
selected_window in the situation I encountered.
> To answer your question directly, it should be possible to compute the
> (Lisp integer) value of point in the selected window as either
Thanks. This works for me, but is it TRT ?
Commit 53fb39a08a6d18b67ea6073966874fa700d9f97f
References: yf-master
Author: Nicolas Richard <youngfrog@members.fsf.org>
AuthorDate: Fri Jun 5 11:18:19 2015 +0200
Commit: Nicolas Richard <youngfrog@members.fsf.org>
CommitDate: Fri Jun 5 11:20:08 2015 +0200
* src/keyboard.c (adjust_point_for_property): Use selected window
(Bug#20590)
1 parent commit, 6 merged branches, 1 containing branch
Parent | f10a924 (todo-show): Throw an error if buffer is empty but was
modified.
Merged | emacs-24 master run-2015-05-29_19-09 running
yf-fix-query-replace-with-NULs yf-master
Containing | yf-master
Follows | emacs-24.5-rc3-fixed (4919)
1 file changed, 4 insertions(+), 2 deletions(-)
src/keyboard.c | 6 ++++--
modified src/keyboard.c
@@ -1702,8 +1702,10 @@ adjust_point_for_property (ptrdiff_t last_pt, bool
modified)
if (check_display
&& PT > BEGV && PT < ZV
&& !NILP (val = get_char_property_and_overlay
- (make_number (PT), Qdisplay, selected_window,
- &overlay))
+ (make_number
+ (marker_position
+ (XWINDOW (selected_window)->pointm)),
+ Qdisplay, selected_window, &overlay))
&& display_prop_intangible_p (val, overlay, PT, PT_BYTE)
&& (!OVERLAYP (overlay)
? get_property_and_range (PT, Qdisplay, &val, &beg, &end, Qnil)
--
Nico.
- bug#20734: 25.0.50; "Args out of range" with help-window-select t, Nicolas Richard, 2015/06/04
- bug#20734: 25.0.50; "Args out of range" with help-window-select t, Stefan Monnier, 2015/06/04
- bug#20734: 25.0.50; "Args out of range" with help-window-select t, Eli Zaretskii, 2015/06/05
- bug#20734: 25.0.50; "Args out of range" with help-window-select t,
Nicolas Richard <=
- bug#20734: 25.0.50; "Args out of range" with help-window-select t, Eli Zaretskii, 2015/06/05
- bug#20734: 25.0.50; "Args out of range" with help-window-select t, Nicolas Richard, 2015/06/05
- bug#20734: 25.0.50; "Args out of range" with help-window-select t, Eli Zaretskii, 2015/06/05
- bug#20734: 25.0.50; "Args out of range" with help-window-select t, Nicolas Richard, 2015/06/06
- bug#20734: 25.0.50; "Args out of range" with help-window-select t, Eli Zaretskii, 2015/06/06