* bug#10195: 24.0.92; M-w may no longer provide visual feedback
@ 2011-12-02 16:09 Jay Berkenbilt
2011-12-02 16:23 ` Eli Zaretskii
0 siblings, 1 reply; 18+ messages in thread
From: Jay Berkenbilt @ 2011-12-02 16:09 UTC (permalink / raw)
To: 10195
Type some text. Save it in the kill ring with
C-a C-SPC M-f M-w
Then do this again:
M-w
In emacs 23, the cursor would bounce between the point and the mark the
second time M-w was pressed, since the highlighting of the region turned
off after the first time. Or, if transient-mark-mode is nil, then the
first M-w would bounce the cursor between the point and mark. In
emacs24, M-w seems to never cause the cursor to bounce between the point
and mark. I don't see anything in NEWS about this change, and I don't
see anything in the documentation of kill-ring-save that discusses this
or how to influence this behavior. I personally do not use transient
mark mode, so this cursor movement is the only visual feedback I have
that I have selected the region I intended to select. While I've been
using GNU emacs since 1987 and this behavior is a relatively recent
addition, I had no idea how much I've become accustomed to it!
In GNU Emacs 24.0.92.1 (x86_64-unknown-linux-gnu, GTK+ Version 2.24.6)
of 2011-12-01 on jberkenbilt-linux
Windowing system distributor `The X.Org Foundation', version 11.0.11004000
configured using `configure '--prefix=/opt/emacs-24.0.92''
Important settings:
value of $LC_ALL: nil
value of $LC_COLLATE: nil
value of $LC_CTYPE: nil
value of $LC_MESSAGES: nil
value of $LC_MONETARY: nil
value of $LC_NUMERIC: nil
value of $LC_TIME: nil
value of $LANG: en_US.UTF-8
value of $XMODIFIERS: nil
locale-coding-system: utf-8-unix
default enable-multibyte-characters: t
Major mode: Outline
Minor modes in effect:
shell-dirtrack-mode: t
which-function-mode: t
tooltip-mode: t
mouse-wheel-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
column-number-mode: t
line-number-mode: t
view-mode: t
Recent input:
k i l l - r i n g C-s C-s C-a C-r c l i p b o a r d
C-r C-r C-r C-a M-x m a n <return> x t e r m <return>
C-x o C-s c l i p b o a r d C-s C-s C-s C-s C-s C-s
C-s C-s C-s C-s C-s C-s C-s C-s C-s C-a C-s c l i p
b o a r d C-s C-s C-a C-x C-f ~ / C-g C-f C-g C-x C-g
C-g C-x o C-x 1 C-x C-l C-s y a n k C-a C-x b * s c
<tab> <return> C-y <C-backspace> <down-mouse-1> <mouse-1>
<down-mouse-1> <mouse-1> C-y C-x b s s <tab> <return>
C-s r a s C-g C-s r s a C-s C-a C-s p k c s 1 2 C-s
C-s C-s C-s C-s C-s C-a C-s p i c C-g C-g C-r p k c
s 1 2 SPC C-s C-s M-x m a n <return> p k c s 1 2 <return>
C-x o C-s k e y C-a C-s - o u t C-s C-x 1 C-x # C-x
o C-s k C-a C-x o C-s k e y C-s C-s C-a C-x o C-s C-s
C-s C-s C-s C-s C-s C-s C-s C-s C-s C-s C-s C-s C-s
C-a C-x k <return> C-a C-SPC M-f M-w C-h c M-w C-h
f k i l l SPC r i n <tab> <return> M-w M-w C-a C-SPC
M-f M-w C-h n C-x 1 C-s d e l e t i o n C-s C-s C-a
C-v C-s k i l l C-s C-s C-s C-s M-< C-s C-s C-s C-s
C-s C-s C-a M-x r e p o r t SPC e b <backspace> m SPC
b SPC <return>
Recent messages:
Mark saved where search started
When done with a buffer, type C-x #
Mark saved where search started [3 times]
Mark set
M-w runs the command kill-ring-save
Type C-x 1 to delete the help window.
Mark activated
Mark saved where search started [2 times]
Mark set
Mark saved where search started
Load-path shadows:
/home/ejb/elisp/startup hides /opt/emacs-24.0.92/share/emacs/24.0.92/lisp/startup
Features:
(shadow sort flyspell ispell mail-extr emacsbug man noutline outline
easy-mmode multi-isearch tabify vc-rcs add-log cc-mode cc-fonts cc-guess
cc-menus cc-cmds shell pcomplete grep dired help-mode view vc-svn vc
ediff-merg ediff-diff ediff-wind ediff-help ediff-util ediff-mult
ediff-init ediff vc-dispatcher qmime qmime-compose qmime-view which-func
imenu filecache server uniquify warnings compile ange-ftp comint ring
message format-spec rfc822 mml mml-sec mm-decode mm-bodies mm-encode
mail-parse rfc2231 mailabbrev gmm-utils mailheader cc-styles cc-align
cc-engine cc-vars cc-defs smtpmail auth-source eieio byte-opt bytecomp
byte-compile cconv macroexp assoc gnus-util password-cache sendmail
regexp-opt rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils
project advice help-fns advice-preload jka-compr cus-edit easymenu
wid-edit cus-start cus-load edmacro kmacro cl time-date tooltip
ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd tool-bar dnd
fontset image fringe lisp-mode register page menu-bar rfn-eshadow timer
select scroll-bar mouse jit-lock font-lock syntax facemenu font-core
frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai
tai-viet lao korean japanese hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help
simple abbrev minibuffer loaddefs button faces cus-face files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote make-network-process
dbusbind dynamic-setting system-font-setting font-render-setting
move-toolbar gtk x-toolkit x multi-tty emacs)
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#10195: 24.0.92; M-w may no longer provide visual feedback
2011-12-02 16:09 bug#10195: 24.0.92; M-w may no longer provide visual feedback Jay Berkenbilt
@ 2011-12-02 16:23 ` Eli Zaretskii
2011-12-03 5:31 ` Michael Welsh Duggan
0 siblings, 1 reply; 18+ messages in thread
From: Eli Zaretskii @ 2011-12-02 16:23 UTC (permalink / raw)
To: Jay Berkenbilt; +Cc: 10195
> From: Jay Berkenbilt <ejb@ql.org>
> Date: Fri, 02 Dec 2011 11:09:53 -0500
>
> Type some text. Save it in the kill ring with
>
> C-a C-SPC M-f M-w
>
> Then do this again:
>
> M-w
>
> In emacs 23, the cursor would bounce between the point and the mark the
> second time M-w was pressed, since the highlighting of the region turned
> off after the first time. Or, if transient-mark-mode is nil, then the
> first M-w would bounce the cursor between the point and mark. In
> emacs24, M-w seems to never cause the cursor to bounce between the point
> and mark.
It still does that to me, in the current trunk tip.
Does it work in "emacs -Q" for you?
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#10195: 24.0.92; M-w may no longer provide visual feedback
2011-12-02 16:23 ` Eli Zaretskii
@ 2011-12-03 5:31 ` Michael Welsh Duggan
2011-12-03 7:09 ` Eli Zaretskii
0 siblings, 1 reply; 18+ messages in thread
From: Michael Welsh Duggan @ 2011-12-03 5:31 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 10195, Jay Berkenbilt
Eli Zaretskii <eliz@gnu.org> writes:
>> From: Jay Berkenbilt <ejb@ql.org>
>> Date: Fri, 02 Dec 2011 11:09:53 -0500
>>
>> Type some text. Save it in the kill ring with
>>
>> C-a C-SPC M-f M-w
>>
>> Then do this again:
>>
>> M-w
>>
>> In emacs 23, the cursor would bounce between the point and the mark the
>> second time M-w was pressed, since the highlighting of the region turned
>> off after the first time. Or, if transient-mark-mode is nil, then the
>> first M-w would bounce the cursor between the point and mark. In
>> emacs24, M-w seems to never cause the cursor to bounce between the point
>> and mark.
>
> It still does that to me, in the current trunk tip.
>
> Does it work in "emacs -Q" for you?
>
It appears to be inconsistent. Sometimes it will happen, sometimes it
will not. I first noticed this many months ago, but at the time
couldn't cause it to happen on command, and as such forgot about it for
a while. Today, I tried again with emacs -Q built from bzr revno
106562. I definitely see this behavior, without fail.
emacs -Q
(In *scratch* buffer)
C-p C-p C-p C-SPC C-e M-w
It's a lot more noticeable with tmm off.
GNU Emacs 24.0.92.1 (i686-pc-linux-gnu, X toolkit) of 2011-11-30 on maru
--
Michael Welsh Duggan
(md5i@md5i.com)
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#10195: 24.0.92; M-w may no longer provide visual feedback
2011-12-03 5:31 ` Michael Welsh Duggan
@ 2011-12-03 7:09 ` Eli Zaretskii
2011-12-03 15:19 ` Michael Welsh Duggan
0 siblings, 1 reply; 18+ messages in thread
From: Eli Zaretskii @ 2011-12-03 7:09 UTC (permalink / raw)
To: Michael Welsh Duggan; +Cc: 10195, ejb
> From: Michael Welsh Duggan <md5i@md5i.com>
> Cc: Jay Berkenbilt <ejb@ql.org>, 10195@debbugs.gnu.org
> Date: Sat, 03 Dec 2011 00:31:36 -0500
>
> >> Type some text. Save it in the kill ring with
> >>
> >> C-a C-SPC M-f M-w
> >>
> >> Then do this again:
> >>
> >> M-w
> >>
> >> In emacs 23, the cursor would bounce between the point and the mark the
> >> second time M-w was pressed, since the highlighting of the region turned
> >> off after the first time. Or, if transient-mark-mode is nil, then the
> >> first M-w would bounce the cursor between the point and mark. In
> >> emacs24, M-w seems to never cause the cursor to bounce between the point
> >> and mark.
> >
> > It still does that to me, in the current trunk tip.
> >
> > Does it work in "emacs -Q" for you?
For the record, Jay replied off-list that "emacs -Q" has the same
problem for him.
> It appears to be inconsistent. Sometimes it will happen, sometimes it
> will not. I first noticed this many months ago, but at the time
> couldn't cause it to happen on command, and as such forgot about it for
> a while. Today, I tried again with emacs -Q built from bzr revno
> 106562. I definitely see this behavior, without fail.
>
> emacs -Q
> (In *scratch* buffer)
> C-p C-p C-p C-SPC C-e M-w
This is not the right recipe. The first M-w does NOT show the region
by momentarily moving point to its other end, because the default is
to have transient-mark-mode on, which already shows the region. You
need to type M-w twice or more in a row to see point move.
Anyway, I don't see it on any machine to which I have access, FWIW. I
tried both unoptimized and optimized builds, on Windows and on
GNU/Linux, and they all behave as expected.
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#10195: 24.0.92; M-w may no longer provide visual feedback
2011-12-03 7:09 ` Eli Zaretskii
@ 2011-12-03 15:19 ` Michael Welsh Duggan
2011-12-03 15:22 ` Michael Welsh Duggan
2011-12-03 16:38 ` Eli Zaretskii
0 siblings, 2 replies; 18+ messages in thread
From: Michael Welsh Duggan @ 2011-12-03 15:19 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 10195, ejb
Eli Zaretskii <eliz@gnu.org> writes:
>> From: Michael Welsh Duggan <md5i@md5i.com>
>> Cc: Jay Berkenbilt <ejb@ql.org>, 10195@debbugs.gnu.org
>> Date: Sat, 03 Dec 2011 00:31:36 -0500
>>
>> >> Type some text. Save it in the kill ring with
>> >>
>> >> C-a C-SPC M-f M-w
>> >>
>> >> Then do this again:
>> >>
>> >> M-w
>> >>
>> >> In emacs 23, the cursor would bounce between the point and the mark the
>> >> second time M-w was pressed, since the highlighting of the region turned
>> >> off after the first time. Or, if transient-mark-mode is nil, then the
>> >> first M-w would bounce the cursor between the point and mark. In
>> >> emacs24, M-w seems to never cause the cursor to bounce between the point
>> >> and mark.
>> >
>> > It still does that to me, in the current trunk tip.
>> >
>> > Does it work in "emacs -Q" for you?
>
> For the record, Jay replied off-list that "emacs -Q" has the same
> problem for him.
>
>> It appears to be inconsistent. Sometimes it will happen, sometimes it
>> will not. I first noticed this many months ago, but at the time
>> couldn't cause it to happen on command, and as such forgot about it for
>> a while. Today, I tried again with emacs -Q built from bzr revno
>> 106562. I definitely see this behavior, without fail.
>>
>> emacs -Q
>> (In *scratch* buffer)
>> C-p C-p C-p C-SPC C-e M-w
>
> This is not the right recipe. The first M-w does NOT show the region
> by momentarily moving point to its other end, because the default is
> to have transient-mark-mode on, which already shows the region. You
> need to type M-w twice or more in a row to see point move.
Sorry, I forgot to type the second M-w. I usually use emacs without
tmm, and that is why I made that error.
> Anyway, I don't see it on any machine to which I have access, FWIW. I
> tried both unoptimized and optimized builds, on Windows and on
> GNU/Linux, and they all behave as expected.
I just tried this again in a random buffer in my running non -Q emacs.
The first M-w caused the cursor to bounce, the second did not, the third
did, the fourth and fifth did not. This is why I called the behavior
inconsistent. I just tried it in emacs -Q again, and had it bounce
three times out of 15 tries. When it does bounce, and the mark and
point are on different lines, I also see the line indicator change along
with the bounce. When it does not bounce, the line indicator does not
change.
I am running in an unoptimized debug build with assertions turned on,
and am familiar with gdb. If there is any way I can help debug this,
please let me know.
--
Michael Welsh Duggan
(md5i@md5i.com)
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#10195: 24.0.92; M-w may no longer provide visual feedback
2011-12-03 15:19 ` Michael Welsh Duggan
@ 2011-12-03 15:22 ` Michael Welsh Duggan
2011-12-03 16:38 ` Eli Zaretskii
1 sibling, 0 replies; 18+ messages in thread
From: Michael Welsh Duggan @ 2011-12-03 15:22 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 10195, ejb
Michael Welsh Duggan <md5i@md5i.com> writes:
> I just tried this again in a random buffer in my running non -Q emacs.
> The first M-w caused the cursor to bounce, the second did not, the third
> did, the fourth and fifth did not. This is why I called the behavior
> inconsistent. I just tried it in emacs -Q again, and had it bounce
> three times out of 15 tries. When it does bounce, and the mark and
> point are on different lines, I also see the line indicator change along
> with the bounce. When it does not bounce, the line indicator does not
> change.
I should mention that when I say I tries this N times, I mean without
moving the mark or point.
--
Michael Welsh Duggan
(md5i@md5i.com)
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#10195: 24.0.92; M-w may no longer provide visual feedback
2011-12-03 15:19 ` Michael Welsh Duggan
2011-12-03 15:22 ` Michael Welsh Duggan
@ 2011-12-03 16:38 ` Eli Zaretskii
2011-12-03 17:05 ` Eli Zaretskii
` (2 more replies)
1 sibling, 3 replies; 18+ messages in thread
From: Eli Zaretskii @ 2011-12-03 16:38 UTC (permalink / raw)
To: Michael Welsh Duggan; +Cc: 10195, ejb
> From: Michael Welsh Duggan <md5i@md5i.com>
> Cc: ejb@ql.org, 10195@debbugs.gnu.org
> Date: Sat, 03 Dec 2011 10:19:06 -0500
>
> I just tried this again in a random buffer in my running non -Q emacs.
> The first M-w caused the cursor to bounce, the second did not, the third
> did, the fourth and fifth did not. This is why I called the behavior
> inconsistent. I just tried it in emacs -Q again, and had it bounce
> three times out of 15 tries.
Does "C-h l" show all the 15 M-w keystrokes you did?
> I am running in an unoptimized debug build with assertions turned on,
> and am familiar with gdb. If there is any way I can help debug this,
> please let me know.
M-w calls sit-for after bouncing point to the position of mark; the
default waiting period is 1 sec. How about instrumenting sit-for with
calls to `message' and seeing what's going on there? One possibility
is that some input event terminates the wait immediately (see
sit-for's code). Another possibility is that something happens in
read-event, in which case you will need to use GDB. But I think it
would be good to see what's going on in sit-for before you go to the C
level.
Another idea is to replace the call to sit-for in kill-ring-save with
a call to sleep-for, and see if that changes anything. If it does,
the probably culprit is sit-for and whatever it calls.
Thanks.
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#10195: 24.0.92; M-w may no longer provide visual feedback
2011-12-03 16:38 ` Eli Zaretskii
@ 2011-12-03 17:05 ` Eli Zaretskii
2011-12-03 17:38 ` Michael Welsh Duggan
2011-12-04 2:29 ` Chong Yidong
2 siblings, 0 replies; 18+ messages in thread
From: Eli Zaretskii @ 2011-12-03 17:05 UTC (permalink / raw)
To: md5i; +Cc: 10195, ejb
> Date: Sat, 03 Dec 2011 18:38:03 +0200
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: 10195@debbugs.gnu.org, ejb@ql.org
>
> M-w calls sit-for after bouncing point to the position of mark; the
> default waiting period is 1 sec. How about instrumenting sit-for with
> calls to `message' and seeing what's going on there?
Of course `message' enters redisplay, so it could obscure the
problem...
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#10195: 24.0.92; M-w may no longer provide visual feedback
2011-12-03 16:38 ` Eli Zaretskii
2011-12-03 17:05 ` Eli Zaretskii
@ 2011-12-03 17:38 ` Michael Welsh Duggan
2011-12-04 2:29 ` Chong Yidong
2 siblings, 0 replies; 18+ messages in thread
From: Michael Welsh Duggan @ 2011-12-03 17:38 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 10195, ejb
Eli Zaretskii <eliz@gnu.org> writes:
>> From: Michael Welsh Duggan <md5i@md5i.com>
>> Cc: ejb@ql.org, 10195@debbugs.gnu.org
>> Date: Sat, 03 Dec 2011 10:19:06 -0500
>>
>> I just tried this again in a random buffer in my running non -Q emacs.
>> The first M-w caused the cursor to bounce, the second did not, the third
>> did, the fourth and fifth did not. This is why I called the behavior
>> inconsistent. I just tried it in emacs -Q again, and had it bounce
>> three times out of 15 tries.
>
> Does "C-h l" show all the 15 M-w keystrokes you did?
>
>> I am running in an unoptimized debug build with assertions turned on,
>> and am familiar with gdb. If there is any way I can help debug this,
>> please let me know.
Yes, and the region does end up in the kill ring.
> M-w calls sit-for after bouncing point to the position of mark; the
> default waiting period is 1 sec. How about instrumenting sit-for with
> calls to `message' and seeing what's going on there? One possibility
> is that some input event terminates the wait immediately (see
> sit-for's code). Another possibility is that something happens in
> read-event, in which case you will need to use GDB. But I think it
> would be good to see what's going on in sit-for before you go to the C
> level.
>
> Another idea is to replace the call to sit-for in kill-ring-save with
> a call to sleep-for, and see if that changes anything. If it does,
> the probably culprit is sit-for and whatever it calls.
I'm away from home until late tonight. I'll give this (or something
similar) a try then.
--
Michael Welsh Duggan
(md5i@md5i.com)
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#10195: 24.0.92; M-w may no longer provide visual feedback
2011-12-03 16:38 ` Eli Zaretskii
2011-12-03 17:05 ` Eli Zaretskii
2011-12-03 17:38 ` Michael Welsh Duggan
@ 2011-12-04 2:29 ` Chong Yidong
2011-12-04 3:29 ` Michael Welsh Duggan
2011-12-04 3:59 ` Eli Zaretskii
2 siblings, 2 replies; 18+ messages in thread
From: Chong Yidong @ 2011-12-04 2:29 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 10195, ejb
Eli Zaretskii <eliz@gnu.org> writes:
> M-w calls sit-for after bouncing point to the position of mark; the
> default waiting period is 1 sec. How about instrumenting sit-for with
> calls to `message' and seeing what's going on there? One possibility
> is that some input event terminates the wait immediately (see
> sit-for's code). Another possibility is that something happens in
> read-event, in which case you will need to use GDB. But I think it
> would be good to see what's going on in sit-for before you go to the C
> level.
>
> Another idea is to replace the call to sit-for in kill-ring-save with
> a call to sleep-for, and see if that changes anything. If it does,
> the probably culprit is sit-for and whatever it calls.
FWIW, I can see this problem, and the following workaround seems to do
the trick. Your pending input explanation is probably right.
=== modified file 'lisp/simple.el'
*** lisp/simple.el 2011-11-19 19:49:56 +0000
--- lisp/simple.el 2011-12-04 02:25:33 +0000
***************
*** 3251,3256 ****
--- 3251,3257 ----
;; Swap point and mark.
(set-marker (mark-marker) (point) (current-buffer))
(goto-char other-end)
+ (redisplay t)
(sit-for blink-matching-delay)
;; Swap back.
(set-marker (mark-marker) other-end (current-buffer))
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#10195: 24.0.92; M-w may no longer provide visual feedback
2011-12-04 2:29 ` Chong Yidong
@ 2011-12-04 3:29 ` Michael Welsh Duggan
2011-12-04 3:59 ` Eli Zaretskii
1 sibling, 0 replies; 18+ messages in thread
From: Michael Welsh Duggan @ 2011-12-04 3:29 UTC (permalink / raw)
To: Chong Yidong; +Cc: 10195, ejb
Chong Yidong <cyd@gnu.org> writes:
> Eli Zaretskii <eliz@gnu.org> writes:
>
>> M-w calls sit-for after bouncing point to the position of mark; the
>> default waiting period is 1 sec. How about instrumenting sit-for with
>> calls to `message' and seeing what's going on there? One possibility
>> is that some input event terminates the wait immediately (see
>> sit-for's code). Another possibility is that something happens in
>> read-event, in which case you will need to use GDB. But I think it
>> would be good to see what's going on in sit-for before you go to the C
>> level.
>>
>> Another idea is to replace the call to sit-for in kill-ring-save with
>> a call to sleep-for, and see if that changes anything. If it does,
>> the probably culprit is sit-for and whatever it calls.
>
> FWIW, I can see this problem, and the following workaround seems to do
> the trick. Your pending input explanation is probably right.
Yes, this seems to do the trick for me as well.
> === modified file 'lisp/simple.el'
> *** lisp/simple.el 2011-11-19 19:49:56 +0000
> --- lisp/simple.el 2011-12-04 02:25:33 +0000
> ***************
> *** 3251,3256 ****
> --- 3251,3257 ----
> ;; Swap point and mark.
> (set-marker (mark-marker) (point) (current-buffer))
> (goto-char other-end)
> + (redisplay t)
> (sit-for blink-matching-delay)
> ;; Swap back.
> (set-marker (mark-marker) other-end (current-buffer))
>
--
Michael Welsh Duggan
(md5i@md5i.com)
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#10195: 24.0.92; M-w may no longer provide visual feedback
2011-12-04 2:29 ` Chong Yidong
2011-12-04 3:29 ` Michael Welsh Duggan
@ 2011-12-04 3:59 ` Eli Zaretskii
2011-12-04 8:11 ` Chong Yidong
1 sibling, 1 reply; 18+ messages in thread
From: Eli Zaretskii @ 2011-12-04 3:59 UTC (permalink / raw)
To: Chong Yidong; +Cc: 10195, ejb
> From: Chong Yidong <cyd@gnu.org>
> Cc: Michael Welsh Duggan <md5i@md5i.com>, 10195@debbugs.gnu.org, ejb@ql.org
> Date: Sun, 04 Dec 2011 10:29:16 +0800
>
> Your pending input explanation is probably right.
The question is: what input is pending?
Looking at the event queue should reveal that. If that shows nothing
appropriate, then try looking lower at the socket read.
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#10195: 24.0.92; M-w may no longer provide visual feedback
2011-12-04 3:59 ` Eli Zaretskii
@ 2011-12-04 8:11 ` Chong Yidong
2011-12-04 11:25 ` Eli Zaretskii
0 siblings, 1 reply; 18+ messages in thread
From: Chong Yidong @ 2011-12-04 8:11 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 10195, ejb
Eli Zaretskii <eliz@gnu.org> writes:
>> Your pending input explanation is probably right.
>
> The question is: what input is pending?
It's an X selection request event. I'm not sure where the request is
coming from---Gnome's clipboard manager, maybe. Setting
interprogram-cut-function to nil also inhibits the problem.
OTOH, I don't see why the pending input doesn't trigger for Emacs 23,
since M-w copies to the primary selection there too. Maybe it's a
subtle effect of one of the changes to the primary selection code a few
months ago.
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#10195: 24.0.92; M-w may no longer provide visual feedback
2011-12-04 8:11 ` Chong Yidong
@ 2011-12-04 11:25 ` Eli Zaretskii
2011-12-04 15:59 ` Chong Yidong
0 siblings, 1 reply; 18+ messages in thread
From: Eli Zaretskii @ 2011-12-04 11:25 UTC (permalink / raw)
To: Chong Yidong; +Cc: 10195, ejb
> From: Chong Yidong <cyd@gnu.org>
> Cc: md5i@md5i.com, 10195@debbugs.gnu.org, ejb@ql.org
> Date: Sun, 04 Dec 2011 16:11:20 +0800
>
> Eli Zaretskii <eliz@gnu.org> writes:
>
> >> Your pending input explanation is probably right.
> >
> > The question is: what input is pending?
>
> It's an X selection request event. I'm not sure where the request is
> coming from---Gnome's clipboard manager, maybe.
Looks like readable_events should filter out a few more event types,
when passed READABLE_EVENTS_FILTER_EVENTS in `flags'? I could think
of additional events that should not end sit-for, e.g. keyboard
language switch.
> OTOH, I don't see why the pending input doesn't trigger for Emacs 23,
> since M-w copies to the primary selection there too.
?? Doesn't M-w copy to the clipboard now?
> Maybe it's a subtle effect of one of the changes to the primary
> selection code a few months ago.
Probably. But selection requests shouldn't interrupt sit-for
regardless, since (AFAIR) they can come in out of Emacs's control.
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#10195: 24.0.92; M-w may no longer provide visual feedback
2011-12-04 11:25 ` Eli Zaretskii
@ 2011-12-04 15:59 ` Chong Yidong
2011-12-04 16:58 ` Eli Zaretskii
0 siblings, 1 reply; 18+ messages in thread
From: Chong Yidong @ 2011-12-04 15:59 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 10195, ejb
Eli Zaretskii <eliz@gnu.org> writes:
>> It's an X selection request event. I'm not sure where the request is
>> coming from---Gnome's clipboard manager, maybe.
>
> Looks like readable_events should filter out a few more event types,
> when passed READABLE_EVENTS_FILTER_EVENTS in `flags'? I could think
> of additional events that should not end sit-for, e.g. keyboard
> language switch... selection requests shouldn't interrupt sit-for
> regardless, since (AFAIR) they can come in out of Emacs's control.
I don't think sit-for should ignore selection requests. If so, doing
(sit-for 10) would cause Emacs to stop responding to selection requests
from other applications for 10 seconds. That doesn't sound right.
The workaround of putting the (redisplay t) in kill-ring-save works
because Fredisplay calls swallow_events(), which has code in it to
process selection request events.
I think the right fix is for input-pending-p to call swallow_events(),
as below. Thoughts?
*** src/keyboard.c 2011-12-01 18:27:52 +0000
--- src/keyboard.c 2011-12-04 15:58:03 +0000
***************
*** 10522,10527 ****
--- 10522,10528 ----
|| !NILP (Vunread_input_method_events))
return (Qt);
+ swallow_events (0);
get_input_pending (&input_pending,
READABLE_EVENTS_DO_TIMERS_NOW
| READABLE_EVENTS_FILTER_EVENTS);
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#10195: 24.0.92; M-w may no longer provide visual feedback
2011-12-04 15:59 ` Chong Yidong
@ 2011-12-04 16:58 ` Eli Zaretskii
2011-12-05 3:29 ` Stefan Monnier
2011-12-05 15:17 ` Chong Yidong
0 siblings, 2 replies; 18+ messages in thread
From: Eli Zaretskii @ 2011-12-04 16:58 UTC (permalink / raw)
To: Chong Yidong; +Cc: 10195, ejb
> From: Chong Yidong <cyd@gnu.org>
> Cc: md5i@md5i.com, 10195@debbugs.gnu.org, ejb@ql.org
> Date: Sun, 04 Dec 2011 23:59:15 +0800
>
> I don't think sit-for should ignore selection requests. If so, doing
> (sit-for 10) would cause Emacs to stop responding to selection requests
> from other applications for 10 seconds. That doesn't sound right.
What happens if an application receives a selection request while it
is busy with some long calculation? won't the response be delayed in
that case as well?
> I think the right fix is for input-pending-p to call swallow_events(),
> as below. Thoughts?
I'm no expert on this, but it looks OK. It only swallows selection
requests, though; are these the only ones that can cause this kind of
problems?
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#10195: 24.0.92; M-w may no longer provide visual feedback
2011-12-04 16:58 ` Eli Zaretskii
@ 2011-12-05 3:29 ` Stefan Monnier
2011-12-05 15:17 ` Chong Yidong
1 sibling, 0 replies; 18+ messages in thread
From: Stefan Monnier @ 2011-12-05 3:29 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 10195, ejb, Chong Yidong
> What happens if an application receives a selection request while it
> is busy with some long calculation? won't the response be delayed in
> that case as well?
Yes, and that's a problem as well.
Stefan
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#10195: 24.0.92; M-w may no longer provide visual feedback
2011-12-04 16:58 ` Eli Zaretskii
2011-12-05 3:29 ` Stefan Monnier
@ 2011-12-05 15:17 ` Chong Yidong
1 sibling, 0 replies; 18+ messages in thread
From: Chong Yidong @ 2011-12-05 15:17 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 10195, ejb
Eli Zaretskii <eliz@gnu.org> writes:
> I'm no expert on this, but it looks OK. It only swallows selection
> requests, though; are these the only ones that can cause this kind of
> problems?
They are the only ones I can think of. I'll go ahead and check in a fix
along those lines.
The READABLE_EVENTS_FILTER_EVENTS looks pretty sketchy to me; it's not
clear that disregarding focus events like that is the right thing to do.
But I'd rather not touch that part of the code now.
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2011-12-05 15:17 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-12-02 16:09 bug#10195: 24.0.92; M-w may no longer provide visual feedback Jay Berkenbilt
2011-12-02 16:23 ` Eli Zaretskii
2011-12-03 5:31 ` Michael Welsh Duggan
2011-12-03 7:09 ` Eli Zaretskii
2011-12-03 15:19 ` Michael Welsh Duggan
2011-12-03 15:22 ` Michael Welsh Duggan
2011-12-03 16:38 ` Eli Zaretskii
2011-12-03 17:05 ` Eli Zaretskii
2011-12-03 17:38 ` Michael Welsh Duggan
2011-12-04 2:29 ` Chong Yidong
2011-12-04 3:29 ` Michael Welsh Duggan
2011-12-04 3:59 ` Eli Zaretskii
2011-12-04 8:11 ` Chong Yidong
2011-12-04 11:25 ` Eli Zaretskii
2011-12-04 15:59 ` Chong Yidong
2011-12-04 16:58 ` Eli Zaretskii
2011-12-05 3:29 ` Stefan Monnier
2011-12-05 15:17 ` Chong Yidong
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).