unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#1072: Viper version is 3.14 of April 06, 2008; can't exit viper insert mode with ESC using emacsclient -t
       [not found] ` <20081006124104.25eb7619@kiferserv>
@ 2008-10-07 14:49   ` Stefano Zacchiroli
  2008-10-07 16:21     ` Lennart Borgman (gmail)
  2008-10-07 16:28     ` Michael Kifer
  0 siblings, 2 replies; 16+ messages in thread
From: Stefano Zacchiroli @ 2008-10-07 14:49 UTC (permalink / raw)
  To: Michael Kifer; +Cc: 1072

[ Many thanks for your feedback Michael, I'm Cc-ing the bug entry in
the Emacs bug tracking system to keep track of your suggestions ]

On Mon, Oct 06, 2008 at 12:41:04PM -0400, Michael Kifer wrote:
> Emacs works fine on a console for me.

Note that that works for me to, is especially the console emacsclient
which is broken.

> emacsclient -t does not work - says that -t is an invalid option.

So maybe it's a new feature, I'm using snapshot Emacs, I was trying to
help out with feedback about it reporting this bug. Here emacsclient
-t is supported:

  $ emacsclient --help | grep -- -t
  -t, --tty               Open a new Emacs frame on the current terminal

> Are you using a slow connection or something?

Not at all, it is my laptop, Emacs is running locally under X windows,
emacsclient -t is running in a local terminal.

> On a console, ESC is time sensitive. If something is sluggish
> then it won't work. Try to play with the variable viper-fast-keyseq-timeout
> Either increase or decrease it, and see if you see any changes.

I've tried, but nothing changed.

Let me point out again that it seems that ESC is not bound at all in
the console emacsclient, quoting my bugreport:

> The key different seems to be key binding, while in main Emacs and
> framed client "C-h k ESC" returns (viper-intercept-ESC-key), in
> console clients "C-h k ESC" hangs showing "ESC-" waiting for the
> next key in the binding.

Does this blink some light? (Or maybe explains that the bug is not at
all related to Viper and need to be looked for in some emacsclient
detail?)

Thanks a lot!
Cheers.

-- 
Stefano Zacchiroli -*- PhD in Computer Science \ PostDoc @ Univ. Paris 7
zack@{upsilon.cc,pps.jussieu.fr,debian.org} -<>- http://upsilon.cc/zack/
I'm still an SGML person,this newfangled /\ All one has to do is hit the
XML stuff is so ... simplistic  -- Manoj \/ right keys at the right time






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

* bug#1072: Viper version is 3.14 of April 06, 2008; can't exit viper insert mode with ESC using emacsclient -t
  2008-10-07 14:49   ` bug#1072: Viper version is 3.14 of April 06, 2008; can't exit viper insert mode with ESC using emacsclient -t Stefano Zacchiroli
@ 2008-10-07 16:21     ` Lennart Borgman (gmail)
  2008-10-07 23:06       ` Michael Kifer
  2008-10-09  9:08       ` Stefano Zacchiroli
  2008-10-07 16:28     ` Michael Kifer
  1 sibling, 2 replies; 16+ messages in thread
From: Lennart Borgman (gmail) @ 2008-10-07 16:21 UTC (permalink / raw)
  To: Stefano Zacchiroli, 1072; +Cc: Michael Kifer

Stefano Zacchiroli wrote:
>> The key different seems to be key binding, while in main Emacs and
>> framed client "C-h k ESC" returns (viper-intercept-ESC-key), in
>> console clients "C-h k ESC" hangs showing "ESC-" waiting for the
>> next key in the binding.
> 
> Does this blink some light? (Or maybe explains that the bug is not at
> all related to Viper and need to be looked for in some emacsclient
> detail?)

What is the value of emulation-mode-map-alists in both cases? Is
viper--intercept-key-maps there in both cases?

What is the value of this variable in both cases? It should be something
like

((viper-vi-intercept-minor-mode keymap
                                (f6 . viper-toggle-key-action)
                                (escape . viper-intercept-ESC-key)
                                (26))
 (viper-insert-intercept-minor-mode keymap
                                    (escape . viper-intercept-ESC-key))
 (viper-emacs-intercept-minor-mode keymap
                                   (f6 . viper-change-state-to-vi)
                                   (26)))

What is the values of the key variables in the association list?

> Thanks a lot!
> Cheers.
> 






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

* bug#1072: Viper version is 3.14 of April 06, 2008; can't exit viper insert mode with ESC using emacsclient -t
  2008-10-07 14:49   ` bug#1072: Viper version is 3.14 of April 06, 2008; can't exit viper insert mode with ESC using emacsclient -t Stefano Zacchiroli
  2008-10-07 16:21     ` Lennart Borgman (gmail)
@ 2008-10-07 16:28     ` Michael Kifer
  1 sibling, 0 replies; 16+ messages in thread
From: Michael Kifer @ 2008-10-07 16:28 UTC (permalink / raw)
  To: Stefano Zacchiroli; +Cc: 1072



On Tue, 7 Oct 2008 15:49:50 +0100
Stefano Zacchiroli <zack@upsilon.cc> wrote:

> Does this blink some light? (Or maybe explains that the bug is not at
> all related to Viper and need to be looked for in some emacsclient
> detail?)

Turns out I was using an old version of emacsclient.
Something in emacsclient unbinds ESC.
I am sure it is and emacsclient problem. I don't see how
it can be a viper's problem.

My hunch is that emacsclient -t somehow ignores the minor-mode-map-alist or
does something strange with it.


michael






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

* bug#1072: Viper version is 3.14 of April 06, 2008; can't exit viper insert mode with ESC using emacsclient -t
  2008-10-07 16:21     ` Lennart Borgman (gmail)
@ 2008-10-07 23:06       ` Michael Kifer
  2008-10-07 23:56         ` Lennart Borgman (gmail)
  2008-11-14 13:48         ` Stefano Zacchiroli
  2008-10-09  9:08       ` Stefano Zacchiroli
  1 sibling, 2 replies; 16+ messages in thread
From: Michael Kifer @ 2008-10-07 23:06 UTC (permalink / raw)
  To: Lennart Borgman (gmail); +Cc: 1072, Stefano Zacchiroli

It is
(viper--intercept-key-maps viper--key-maps)
but it does not look like this kicks in.

The value of  viper--intercept-key-maps  is
((viper-vi-intercept-minor-mode keymap
                                (escape . viper-intercept-ESC-key)
                                (26 . viper-toggle-key-action))
 (viper-insert-intercept-minor-mode keymap
                                    (escape . viper-intercept-ESC-key))
 (viper-emacs-intercept-minor-mode keymap
                                   (26 . viper-change-state-to-vi)))

So, the keymaps are set correctly, but they do not seem to kick in.

michael


On Tue, 07 Oct 2008 18:21:40 +0200
"Lennart Borgman (gmail)" <lennart.borgman@gmail.com> wrote:

> Stefano Zacchiroli wrote:
> >> The key different seems to be key binding, while in main Emacs and
> >> framed client "C-h k ESC" returns (viper-intercept-ESC-key), in
> >> console clients "C-h k ESC" hangs showing "ESC-" waiting for the
> >> next key in the binding.
> > 
> > Does this blink some light? (Or maybe explains that the bug is not at
> > all related to Viper and need to be looked for in some emacsclient
> > detail?)
> 
> What is the value of emulation-mode-map-alists in both cases? Is
> viper--intercept-key-maps there in both cases?
> 
> What is the value of this variable in both cases? It should be something
> like
> 
> ((viper-vi-intercept-minor-mode keymap
>                                 (f6 . viper-toggle-key-action)
>                                 (escape . viper-intercept-ESC-key)
>                                 (26))
>  (viper-insert-intercept-minor-mode keymap
>                                     (escape . viper-intercept-ESC-key))
>  (viper-emacs-intercept-minor-mode keymap
>                                    (f6 . viper-change-state-to-vi)
>                                    (26)))
> 
> What is the values of the key variables in the association list?
> 
> > Thanks a lot!
> > Cheers.
> > 
> 






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

* bug#1072: Viper version is 3.14 of April 06, 2008; can't exit viper insert mode with ESC using emacsclient -t
  2008-10-07 23:06       ` Michael Kifer
@ 2008-10-07 23:56         ` Lennart Borgman (gmail)
  2008-11-14 13:48         ` Stefano Zacchiroli
  1 sibling, 0 replies; 16+ messages in thread
From: Lennart Borgman (gmail) @ 2008-10-07 23:56 UTC (permalink / raw)
  To: kifer; +Cc: 1072, Stefano Zacchiroli

Just to be sure: The values of the key variables?


Michael Kifer wrote:
> It is
> (viper--intercept-key-maps viper--key-maps)
> but it does not look like this kicks in.
> 
> The value of  viper--intercept-key-maps  is
> ((viper-vi-intercept-minor-mode keymap
>                                 (escape . viper-intercept-ESC-key)
>                                 (26 . viper-toggle-key-action))
>  (viper-insert-intercept-minor-mode keymap
>                                     (escape . viper-intercept-ESC-key))
>  (viper-emacs-intercept-minor-mode keymap
>                                    (26 . viper-change-state-to-vi)))
> 
> So, the keymaps are set correctly, but they do not seem to kick in.
> 
> michael
> 
> 
> On Tue, 07 Oct 2008 18:21:40 +0200
> "Lennart Borgman (gmail)" <lennart.borgman@gmail.com> wrote:
> 
>> Stefano Zacchiroli wrote:
>>>> The key different seems to be key binding, while in main Emacs and
>>>> framed client "C-h k ESC" returns (viper-intercept-ESC-key), in
>>>> console clients "C-h k ESC" hangs showing "ESC-" waiting for the
>>>> next key in the binding.
>>> Does this blink some light? (Or maybe explains that the bug is not at
>>> all related to Viper and need to be looked for in some emacsclient
>>> detail?)
>> What is the value of emulation-mode-map-alists in both cases? Is
>> viper--intercept-key-maps there in both cases?
>>
>> What is the value of this variable in both cases? It should be something
>> like
>>
>> ((viper-vi-intercept-minor-mode keymap
>>                                 (f6 . viper-toggle-key-action)
>>                                 (escape . viper-intercept-ESC-key)
>>                                 (26))
>>  (viper-insert-intercept-minor-mode keymap
>>                                     (escape . viper-intercept-ESC-key))
>>  (viper-emacs-intercept-minor-mode keymap
>>                                    (f6 . viper-change-state-to-vi)
>>                                    (26)))
>>
>> What is the values of the key variables in the association list?
>>
>>> Thanks a lot!
>>> Cheers.
>>>
> 






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

* bug#1072: Viper version is 3.14 of April 06, 2008; can't exit viper insert mode with ESC using emacsclient -t
  2008-10-07 16:21     ` Lennart Borgman (gmail)
  2008-10-07 23:06       ` Michael Kifer
@ 2008-10-09  9:08       ` Stefano Zacchiroli
  2008-10-09 14:24         ` Lennart Borgman (gmail)
  1 sibling, 1 reply; 16+ messages in thread
From: Stefano Zacchiroli @ 2008-10-09  9:08 UTC (permalink / raw)
  To: Lennart Borgman (gmail); +Cc: Michael Kifer, 1072

On Tue, Oct 07, 2008 at 06:21:40PM +0200, Lennart Borgman (gmail) wrote:
> What is the value of emulation-mode-map-alists in both cases?

in emacsclient -t: (viper--intercept-key-maps viper--key-maps)
in main emacs:     (viper--intercept-key-maps viper--key-maps)

(i.e., they are the same)

> Is viper--intercept-key-maps there in both cases?

Yes, it is there in both cases, and it appears to have the same
content.

> What is the value of this variable in both cases? It should be something
> like
> 
> ((viper-vi-intercept-minor-mode keymap
>                                 (f6 . viper-toggle-key-action)
>                                 (escape . viper-intercept-ESC-key)
>                                 (26))
>  (viper-insert-intercept-minor-mode keymap
>                                     (escape . viper-intercept-ESC-key))
>  (viper-emacs-intercept-minor-mode keymap
>                                    (f6 . viper-change-state-to-vi)
>                                    (26)))

It is similar, the only difference is that I'm missing f6. My verbatim
value is (in both cases):

((viper-vi-intercept-minor-mode keymap
				(escape . viper-intercept-ESC-key)
				(26 . viper-toggle-key-action))
 (viper-insert-intercept-minor-mode keymap
				    (escape . viper-intercept-ESC-key))
 (viper-emacs-intercept-minor-mode keymap
				   (26 . viper-change-state-to-vi)))

Do you see anything wrong with that?

Cheers.

-- 
Stefano Zacchiroli -*- PhD in Computer Science \ PostDoc @ Univ. Paris 7
zack@{upsilon.cc,pps.jussieu.fr,debian.org} -<>- http://upsilon.cc/zack/
I'm still an SGML person,this newfangled /\ All one has to do is hit the
XML stuff is so ... simplistic  -- Manoj \/ right keys at the right time






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

* bug#1072: Viper version is 3.14 of April 06, 2008; can't exit viper insert mode with ESC using emacsclient -t
  2008-10-09  9:08       ` Stefano Zacchiroli
@ 2008-10-09 14:24         ` Lennart Borgman (gmail)
  0 siblings, 0 replies; 16+ messages in thread
From: Lennart Borgman (gmail) @ 2008-10-09 14:24 UTC (permalink / raw)
  To: Stefano Zacchiroli; +Cc: Michael Kifer, 1072

Stefano Zacchiroli wrote:
> It is similar, the only difference is that I'm missing f6. My verbatim
> value is (in both cases):
> 
> ((viper-vi-intercept-minor-mode keymap
> 				(escape . viper-intercept-ESC-key)
> 				(26 . viper-toggle-key-action))
>  (viper-insert-intercept-minor-mode keymap
> 				    (escape . viper-intercept-ESC-key))
>  (viper-emacs-intercept-minor-mode keymap
> 				   (26 . viper-change-state-to-vi)))
> 
> Do you see anything wrong with that?

No, I forgot to remove f6. It is my custmization.






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

* bug#1072: Viper version is 3.14 of April 06, 2008; can't exit viper insert mode with ESC using emacsclient -t
  2008-10-07 23:06       ` Michael Kifer
  2008-10-07 23:56         ` Lennart Borgman (gmail)
@ 2008-11-14 13:48         ` Stefano Zacchiroli
  2008-11-14 19:50           ` Michael Kifer
  1 sibling, 1 reply; 16+ messages in thread
From: Stefano Zacchiroli @ 2008-11-14 13:48 UTC (permalink / raw)
  To: Michael Kifer; +Cc: Romain Francoise, 1072

OK, mainly thanks to Romain Francoise, I've made some progress on the
understanding of this bug. Romain pointed me to the fact that viper
initialization depends on whether *when Emacs start* an X11
environment is in use or not.

The client/server architecture offered by emacsclient and by --daemon
defeats the soundness of this approach. To solve the problem once and
for all we need per-client initialization so that when a terminal
client is used Viper can be initialized _locally_ with terminal
settings, dually when a X11 client is used.

The workaround that Romain proposed to me is to add *before* Viper is
loaded the following line in my ~/.emacs

  (setq viper-ESC-key (kbd "ESC"))	;; workaround for #1072

I don't know why :-) , but it solves *part* of the problem.

Still, the behavior of key bindings starting with "M-" is
broken. AFAIU the reason is that viper-ESC-keyseq-timeout is either
set to 0 (which is good for X11) or to 200 (which is good for
terminals). As I typically run the main Emacs in X11, my typical value
is 0; when I spawn terminal clients attached to that Emacs they
inherit the value and stuff like "M-x" first deliver an ESC which
makes Viper quit insert mode.

A possible solution would be to use hooks that set
viper-ESC-keyseq-timeout appropriately depending on the kind of
spawned client, but there are two sub-problems inhibiting them:

0) (my ignorance, probably not really a problem) I'm aware of the hook
   after-create-frame-functions, which can be used to hook the timeout
   to 0 for X11 clients, but I'm not aware of the equivalent for
   console clients, is there one?

1) viper-ESC-keyseq-timeout is a global variable, shared by all Emacs
   clients, can it be made local to a buffer (actually it would be
   enough to make it local to a client, but I don't believe it is
   possible), or there is some Viper magic which would defeat this
   solution not work?

For the moment I'm stuck at exiting from Viper insert mode before
being able to type M-something ...

Cheers.

-- 
Stefano Zacchiroli -o- PhD in Computer Science \ PostDoc @ Univ. Paris 7
zack@{upsilon.cc,pps.jussieu.fr,debian.org} -<>- http://upsilon.cc/zack/
Dietro un grande uomo c'è ..|  .  |. Et ne m'en veux pas si je te tutoie
sempre uno zaino ...........| ..: |.... Je dis tu à tous ceux que j'aime






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

* bug#1072: Viper version is 3.14 of April 06, 2008; can't exit viper insert mode with ESC using emacsclient -t
  2008-11-14 13:48         ` Stefano Zacchiroli
@ 2008-11-14 19:50           ` Michael Kifer
  2008-11-14 20:40             ` Dan Nicolaescu
  0 siblings, 1 reply; 16+ messages in thread
From: Michael Kifer @ 2008-11-14 19:50 UTC (permalink / raw)
  To: Stefano Zacchiroli; +Cc: Romain Francoise, 1072



On Fri, 14 Nov 2008 14:48:14 +0100
Stefano Zacchiroli <zack@upsilon.cc> wrote:

> 1) viper-ESC-keyseq-timeout is a global variable, shared by all Emacs
>    clients, can it be made local to a buffer (actually it would be
>    enough to make it local to a client, but I don't believe it is
>    possible), or there is some Viper magic which would defeat this
>    solution not work?

I don't see a reason why this variable cannot be buffer-local.






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

* bug#1072: Viper version is 3.14 of April 06, 2008; can't exit viper insert mode with ESC using emacsclient -t
  2008-11-14 19:50           ` Michael Kifer
@ 2008-11-14 20:40             ` Dan Nicolaescu
  2008-11-14 20:55               ` Michael Kifer
  0 siblings, 1 reply; 16+ messages in thread
From: Dan Nicolaescu @ 2008-11-14 20:40 UTC (permalink / raw)
  To: kifer; +Cc: Romain Francoise, Stefano Zacchiroli, 1072

Michael Kifer <kifer@cs.sunysb.edu> writes:

  > On Fri, 14 Nov 2008 14:48:14 +0100
  > Stefano Zacchiroli <zack@upsilon.cc> wrote:
  > 
  > > 1) viper-ESC-keyseq-timeout is a global variable, shared by all Emacs
  > >    clients, can it be made local to a buffer (actually it would be
  > >    enough to make it local to a client, but I don't believe it is
  > >    possible), or there is some Viper magic which would defeat this
  > >    solution not work?
  > 
  > I don't see a reason why this variable cannot be buffer-local.

Disclaimer: I don't know anything about viper.

But the above does not sound right: a buffer can be used in both an X11
frame and a tty frame at the same time, so a buffer-local value won't
work.






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

* bug#1072: Viper version is 3.14 of April 06, 2008; can't exit viper insert mode with ESC using emacsclient -t
  2008-11-14 20:40             ` Dan Nicolaescu
@ 2008-11-14 20:55               ` Michael Kifer
  2008-11-14 21:22                 ` Dan Nicolaescu
  0 siblings, 1 reply; 16+ messages in thread
From: Michael Kifer @ 2008-11-14 20:55 UTC (permalink / raw)
  To: Dan Nicolaescu; +Cc: Romain Francoise, Stefano Zacchiroli, 1072



On Fri, 14 Nov 2008 12:40:21 -0800 (PST)
Dan Nicolaescu <dann@ics.uci.edu> wrote:

> Michael Kifer <kifer@cs.sunysb.edu> writes:
> 
>   > On Fri, 14 Nov 2008 14:48:14 +0100
>   > Stefano Zacchiroli <zack@upsilon.cc> wrote:
>   > 
>   > > 1) viper-ESC-keyseq-timeout is a global variable, shared by all Emacs
>   > >    clients, can it be made local to a buffer (actually it would be
>   > >    enough to make it local to a client, but I don't believe it is
>   > >    possible), or there is some Viper magic which would defeat this
>   > >    solution not work?
>   > 
>   > I don't see a reason why this variable cannot be buffer-local.
> 
> Disclaimer: I don't know anything about viper.
> 
> But the above does not sound right: a buffer can be used in both an X11
> frame and a tty frame at the same time, so a buffer-local value won't
> work.

Yes, you are right. If there is a way to find out whether the selected window
is in a terminal frame or X frame then viper-ESC-keyseq-timeout can be made
into a function.






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

* bug#1072: Viper version is 3.14 of April 06, 2008; can't exit viper insert mode with ESC using emacsclient -t
  2008-11-14 20:55               ` Michael Kifer
@ 2008-11-14 21:22                 ` Dan Nicolaescu
  2008-11-14 22:39                   ` Stefan Monnier
  0 siblings, 1 reply; 16+ messages in thread
From: Dan Nicolaescu @ 2008-11-14 21:22 UTC (permalink / raw)
  To: kifer; +Cc: Romain Francoise, Stefano Zacchiroli, 1072

Michael Kifer <kifer@cs.sunysb.edu> writes:

  > On Fri, 14 Nov 2008 12:40:21 -0800 (PST)
  > Dan Nicolaescu <dann@ics.uci.edu> wrote:
  > 
  > > Michael Kifer <kifer@cs.sunysb.edu> writes:
  > > 
  > >   > On Fri, 14 Nov 2008 14:48:14 +0100
  > >   > Stefano Zacchiroli <zack@upsilon.cc> wrote:
  > >   > 
  > >   > > 1) viper-ESC-keyseq-timeout is a global variable, shared by all Emacs
  > >   > >    clients, can it be made local to a buffer (actually it would be
  > >   > >    enough to make it local to a client, but I don't believe it is
  > >   > >    possible), or there is some Viper magic which would defeat this
  > >   > >    solution not work?
  > >   > 
  > >   > I don't see a reason why this variable cannot be buffer-local.
  > > 
  > > Disclaimer: I don't know anything about viper.
  > > 
  > > But the above does not sound right: a buffer can be used in both an X11
  > > frame and a tty frame at the same time, so a buffer-local value won't
  > > work.
  > 
  > Yes, you are right. If there is a way to find out whether the selected window
  > is in a terminal frame or X frame then viper-ESC-keyseq-timeout can be made
  > into a function.

If (window-system) is nil, you are using a terminal frame.






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

* bug#1072: Viper version is 3.14 of April 06, 2008; can't exit viper insert mode with ESC using emacsclient -t
  2008-11-14 21:22                 ` Dan Nicolaescu
@ 2008-11-14 22:39                   ` Stefan Monnier
  2008-11-14 22:46                     ` Michael Kifer
  0 siblings, 1 reply; 16+ messages in thread
From: Stefan Monnier @ 2008-11-14 22:39 UTC (permalink / raw)
  To: Dan Nicolaescu; +Cc: Stefano Zacchiroli, Romain Francoise, kifer, 1072

>> Yes, you are right. If there is a way to find out whether the selected window
>> is in a terminal frame or X frame then viper-ESC-keyseq-timeout can be made
>> into a function.

> If (window-system) is nil, you are using a terminal frame.

Or if you want code that also works with Emacs-22 (don't know about
XEmacs), you can use (framep (selected-frame)) which also returns info
about the kind of terminal used.


        Stefan






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

* bug#1072: Viper version is 3.14 of April 06, 2008; can't exit viper insert mode with ESC using emacsclient -t
  2008-11-14 22:39                   ` Stefan Monnier
@ 2008-11-14 22:46                     ` Michael Kifer
  2008-11-15  1:32                       ` Stefano Zacchiroli
  0 siblings, 1 reply; 16+ messages in thread
From: Michael Kifer @ 2008-11-14 22:46 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Dan Nicolaescu, Romain Francoise, Stefano Zacchiroli, 1072



On Fri, 14 Nov 2008 17:39:30 -0500
Stefan Monnier <monnier@iro.umontreal.ca> wrote:

> >> Yes, you are right. If there is a way to find out whether the selected window
> >> is in a terminal frame or X frame then viper-ESC-keyseq-timeout can be made
> >> into a function.
> 
> > If (window-system) is nil, you are using a terminal frame.
> 
> Or if you want code that also works with Emacs-22 (don't know about
> XEmacs), you can use (framep (selected-frame)) which also returns info
> about the kind of terminal used.

Actually, viper has the code for this, which works everywhere.
I forgot about it. All that is needed is to convert viper-ESC-keyseq-timeout
from a var to a function.






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

* bug#1072: Viper version is 3.14 of April 06, 2008; can't exit viper insert mode with ESC using emacsclient -t
  2008-11-14 22:46                     ` Michael Kifer
@ 2008-11-15  1:32                       ` Stefano Zacchiroli
       [not found]                         ` <20081116000252.32203b3a@kiferserv>
  0 siblings, 1 reply; 16+ messages in thread
From: Stefano Zacchiroli @ 2008-11-15  1:32 UTC (permalink / raw)
  To: Michael Kifer; +Cc: Dan Nicolaescu, Romain Francoise, 1072

On Fri, Nov 14, 2008 at 05:46:55PM -0500, Michael Kifer wrote:
> Actually, viper has the code for this, which works everywhere.
> I forgot about it. All that is needed is to convert viper-ESC-keyseq-timeout
> from a var to a function.

With the risk of looking naive, I'm asking: who will invoke the
function then? Of course we do want the thing to work even when
switching from one X11 frame to a console frame containing the very
same buffer (OK, it is extreme, but still ...). In that case who will
trigger the function execution upon switching from frame to frame?

BTW, if/when you have some proof of concept code I can test it, to
ensure that nothing else remains to be nailed down.

Cheers.

-- 
Stefano Zacchiroli -o- PhD in Computer Science \ PostDoc @ Univ. Paris 7
zack@{upsilon.cc,pps.jussieu.fr,debian.org} -<>- http://upsilon.cc/zack/
Dietro un grande uomo c'è ..|  .  |. Et ne m'en veux pas si je te tutoie
sempre uno zaino ...........| ..: |.... Je dis tu à tous ceux que j'aime






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

* bug#1072: Viper version is 3.14 of April 06, 2008; can't exit viper insert mode with ESC using emacsclient -t
       [not found]                         ` <20081116000252.32203b3a@kiferserv>
@ 2008-11-16 16:18                           ` Stefano Zacchiroli
  0 siblings, 0 replies; 16+ messages in thread
From: Stefano Zacchiroli @ 2008-11-16 16:18 UTC (permalink / raw)
  To: Michael Kifer; +Cc: 1072

On Sun, Nov 16, 2008 at 12:02:52AM -0500, Michael Kifer wrote:
> I committed the changes to cvs.
> Pls see if it solves the problem.

First of all many thanks for the quick feedback!

I took the following 5 files from Emacs CVS:

  viper-cmd.el
  viper.el
  viper-init.el
  viper-keym.el
  viper-util.el

AFAICT they are the only files you touched to implement the fix, is
that correct?

Using those files part of the problem is solved, but not its
entirety. In particular, exiting from insert mode in console clients
works out of the box without needing the hack:

  (setq viper-ESC-key (kbd "ESC"))	;; workaround for #1072

before loading Viper. And that's already great!

Still, typing M-x (or other M-something) does not work appropriately,
i.e. it stills makes Viper exit insert mode. I double checked and in
a freshly run "emacs -nw" it does work as expected.

Nevertheless, the timeout is visibly set properly, I assume via the
new introduced function. Indeed typing ESC in a X11 frame immediately
exits insert mode, while doing that in console has some delay, I guess
the 200 ms which the function correctly return. Evaluating
(viper-ESC-keyseq-timeout) in the two cases confirms that it is the
case.

My best guess at an explanation for the remaining problem is that
there is some additional setting which deserves the same treatment,
but I've no idea about which one ...

Let me know how can I debug this any further.

TIA,
Cheers.

-- 
Stefano Zacchiroli -o- PhD in Computer Science \ PostDoc @ Univ. Paris 7
zack@{upsilon.cc,pps.jussieu.fr,debian.org} -<>- http://upsilon.cc/zack/
Dietro un grande uomo c'è ..|  .  |. Et ne m'en veux pas si je te tutoie
sempre uno zaino ...........| ..: |.... Je dis tu à tous ceux que j'aime






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

end of thread, other threads:[~2008-11-16 16:18 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20081006095245.2FE176A99@usha.takhisis.invalid>
     [not found] ` <20081006124104.25eb7619@kiferserv>
2008-10-07 14:49   ` bug#1072: Viper version is 3.14 of April 06, 2008; can't exit viper insert mode with ESC using emacsclient -t Stefano Zacchiroli
2008-10-07 16:21     ` Lennart Borgman (gmail)
2008-10-07 23:06       ` Michael Kifer
2008-10-07 23:56         ` Lennart Borgman (gmail)
2008-11-14 13:48         ` Stefano Zacchiroli
2008-11-14 19:50           ` Michael Kifer
2008-11-14 20:40             ` Dan Nicolaescu
2008-11-14 20:55               ` Michael Kifer
2008-11-14 21:22                 ` Dan Nicolaescu
2008-11-14 22:39                   ` Stefan Monnier
2008-11-14 22:46                     ` Michael Kifer
2008-11-15  1:32                       ` Stefano Zacchiroli
     [not found]                         ` <20081116000252.32203b3a@kiferserv>
2008-11-16 16:18                           ` Stefano Zacchiroli
2008-10-09  9:08       ` Stefano Zacchiroli
2008-10-09 14:24         ` Lennart Borgman (gmail)
2008-10-07 16:28     ` Michael Kifer

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