zsh-workers
 help / color / mirror / code / Atom feed
* Re: big key binding patch
@ 1996-11-26 12:03 Duncan Sinclair
  1996-11-26 12:10 ` Zefram
  0 siblings, 1 reply; 8+ messages in thread
From: Duncan Sinclair @ 1996-11-26 12:03 UTC (permalink / raw)
  To: Zefram; +Cc: Z Shell workers mailing list


Zefram writes:
>Just to reiterate what I said yesterday, we should *not* use the patch
>to bind the ANSI arrow key sequences in vi insert mode.  It is completely
>the wrong thing to do, and actually causes more problems.
>

I'm curious.... why?  And what happens if you bind them using bindkey?
Can we use other ESC-prefixed bindings in vi-insert mode?

My version of vi ("nvi 1.34") allows me to use the cursor keys during
insert mode - with the obvious bindings: (output of :map!)

  ^[OA  ^[ka  cursor up
  ^[OB  ^[ja  cursor down
  ^[OC  ^[la  cursor right
  ^[OD  ^[ha  cursor left 

Cheers,



Duncan.


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

* Re: big key binding patch
  1996-11-26 12:03 big key binding patch Duncan Sinclair
@ 1996-11-26 12:10 ` Zefram
  0 siblings, 0 replies; 8+ messages in thread
From: Zefram @ 1996-11-26 12:10 UTC (permalink / raw)
  To: Duncan Sinclair; +Cc: zefram, zsh-workers

>>Just to reiterate what I said yesterday, we should *not* use the patch
>>to bind the ANSI arrow key sequences in vi insert mode.  It is completely
>>the wrong thing to do, and actually causes more problems.
>
>I'm curious.... why?

Because vi doesn't bind them, and because <ESC> already has a meaning
that its use as a prefix would interfere with.

>                      And what happens if you bind them using bindkey?

It'll work as expected.

>Can we use other ESC-prefixed bindings in vi-insert mode?

Yes, just bind them using bindkey.

>My version of vi ("nvi 1.34") allows me to use the cursor keys during
>insert mode - with the obvious bindings: (output of :map!)

I also use nvi, and those bindings really piss me off.  Especially
because I can't disable them (except by hacking the source).

>  ^[OA  ^[ka  cursor up

Have you tried using this binding after you gave i a count?  Look at
what that binding does; it's a disgusting kludge.  In ZLE it wouldn't
be kludged, but it would still be wrong.

-zefram


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

* Re: big key binding patch
  1996-11-25 22:05       ` Zefram
@ 1996-11-26  8:46         ` Zefram
  0 siblings, 0 replies; 8+ messages in thread
From: Zefram @ 1996-11-26  8:46 UTC (permalink / raw)
  To: Z Shell workers mailing list

-----BEGIN PGP SIGNED MESSAGE-----

Okay, this patch fixes some problems with the key binding patch:

* Src/zle_main.c: restored Thorsten's hack to avoid an illegal
  initialiser.  And commented it (-:

* Src/zle_vi.c: the one place I forgot to keep the bindtab and
  keybindtab in synch...  This caused SEGV when pressing <ESC> in vi
  command mode.  (grep verifies that the binding tables are maintained
  together correctly everywhere else.)

* configure.in: added -pedantic to the debugging version of the automatic
  gcc flags, just to keep us honest.  Also made the automatic LDFLAGS work
  the same way as the CFLAGS, and automatically use -s when not debugging.

Just to reiterate what I said yesterday, we should *not* use the patch
to bind the ANSI arrow key sequences in vi insert mode.  It is completely
the wrong thing to do, and actually causes more problems.

 -zefram

      Index: configure.in
      ===================================================================
      RCS file: /home/zefram/usr/cvsroot/zsh/configure.in,v
      retrieving revision 1.1.1.25
      retrieving revision 1.24
      diff -c -r1.1.1.25 -r1.24
      *** configure.in	1996/11/21 00:03:36	1.1.1.25
      --- configure.in	1996/11/25 23:30:26	1.24
      ***************
      *** 183,192 ****
        dnl CHECK THE COMPILER
        dnl ------------------
        dnl We want these before the checks, so the checks can modify their values.
      ! test -z "$CFLAGS"  && CFLAGS= auto_cflags=1
      ! if test "${enable_zsh_debug}" = yes; then
      !   test -z "$LDFLAGS" && LDFLAGS=-g
      ! fi
        
        AC_PROG_CC
        
      --- 183,190 ----
        dnl CHECK THE COMPILER
        dnl ------------------
        dnl We want these before the checks, so the checks can modify their values.
      ! test -z "$CFLAGS"  && CFLAGS=  auto_cflags=1
      ! test -z "$LDFLAGS" && LDFLAGS= auto_ldflags=1
        
        AC_PROG_CC
        
      ***************
      *** 196,202 ****
        if test -n "$auto_cflags"; then
          if test "${enable_zsh_debug}" = yes; then
            if test -n "$GCC"; then
      !       CFLAGS="$CFLAGS -Wall -Wno-implicit -Wmissing-prototypes -g"
            else
              CFLAGS="$CFLAGS -g"
            fi
      --- 194,200 ----
        if test -n "$auto_cflags"; then
          if test "${enable_zsh_debug}" = yes; then
            if test -n "$GCC"; then
      !       CFLAGS="$CFLAGS -Wall -Wno-implicit -Wmissing-prototypes -pedantic -ggdb"
            else
              CFLAGS="$CFLAGS -g"
            fi
      ***************
      *** 206,211 ****
      --- 204,216 ----
            else
              CFLAGS="$CFLAGS -O"
            fi
      +   fi
      + fi
      + if test -n "$auto_ldflags"; then
      +   if test "${enable_zsh_debug}" = yes; then
      +     LDFLAGS=-g
      +   else
      +     LDFLAGS=-s
          fi
        fi
        
      Index: Src/zle_main.c
      ===================================================================
      RCS file: /home/zefram/usr/cvsroot/zsh/Src/zle_main.c,v
      retrieving revision 1.30
      diff -c -r1.30 zle_main.c
      *** Src/zle_main.c	1996/11/25 23:23:14	1.30
      --- Src/zle_main.c	1996/11/25 23:48:41
      ***************
      *** 1305,1317 ****
        {
            int i, *tab = 0;
            HashTable keytab = NULL;
            struct {
        	int *tab;
      ! 	HashTable keytab;
            } list[] = {
      ! 	{ altbindtab, altkeybindtab },
      ! 	{ embindtab, emkeybindtab },
      ! 	{ vibindtab, vikeybindtab },
        	{ NULL, NULL }
            }, *ptr;
        
      --- 1305,1319 ----
        {
            int i, *tab = 0;
            HashTable keytab = NULL;
      +     /* N.B. we can't put the HashTable values in this table directly,  *
      +      * because ANSI C doesn't allow non-static aggregate initialisers. */
            struct {
        	int *tab;
      ! 	HashTable *keytabp;
            } list[] = {
      ! 	{ altbindtab, &altkeybindtab },
      ! 	{ embindtab,  &emkeybindtab  },
      ! 	{ vibindtab,  &vikeybindtab  },
        	{ NULL, NULL }
            }, *ptr;
        
      ***************
      *** 1325,1331 ****
        
        	    if(!(notall & 3)) {
        		tab = ptr->tab;
      ! 		keytab = ptr->keytab;
        	    }
        
        	    /*
      --- 1327,1333 ----
        
        	    if(!(notall & 3)) {
        		tab = ptr->tab;
      ! 		keytab = *ptr->keytabp;
        	    }
        
        	    /*
      Index: Src/zle_vi.c
      ===================================================================
      RCS file: /home/zefram/usr/cvsroot/zsh/Src/zle_vi.c,v
      retrieving revision 1.18
      diff -c -r1.18 zle_vi.c
      *** Src/zle_vi.c	1996/11/21 01:33:18	1.18
      --- Src/zle_vi.c	1996/11/25 23:42:30
      ***************
      *** 496,501 ****
      --- 496,502 ----
        	feep();
            else {
        	bindtab = altbindtab;
      + 	keybindtab = altkeybindtab;
        	undoing = 1;
        	vichgflag = 0;
        	if (cs != findbol())

-----BEGIN PGP SIGNATURE-----
Version: 2.6.2

iQCVAwUBMpo15HD/+HJTpU/hAQGtNwP8CIjBDQuB8UcaRl111osw6Wp57Nix10T5
64uhvlhgzMn8/PJdJEzgXpuphGD84wUhg3oLobxKS9q9VKpYKD2W5YrzRriHccRZ
XNZqXsxdytbqHeO3DU5vpRqllVkD8Rgmdc3Nmhcm4XB8BKBFJGLYEUQe4lBIBft4
kimueDOZOts=
=8ehV
-----END PGP SIGNATURE-----


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

* Re: big key binding patch
  1996-11-25 18:57     ` Thorsten Meinecke
@ 1996-11-25 22:05       ` Zefram
  1996-11-26  8:46         ` Zefram
  0 siblings, 1 reply; 8+ messages in thread
From: Zefram @ 1996-11-25 22:05 UTC (permalink / raw)
  To: Thorsten Meinecke; +Cc: zsh-workers

[-- Attachment #1: Type: text, Size: 1690 bytes --]

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

* Re: big key binding patch
  1996-11-25 16:02   ` Zefram
@ 1996-11-25 18:57     ` Thorsten Meinecke
  1996-11-25 22:05       ` Zefram
  0 siblings, 1 reply; 8+ messages in thread
From: Thorsten Meinecke @ 1996-11-25 18:57 UTC (permalink / raw)
  To: zsh-workers

In archive/latest/2472, Zefram wrote:
> That'll teach me to assume that someone else was mistaken.  The code I
> replaced had HashTable *'s in that list, and extra dereferences.

That'll teach me to put the rationale for such hacks into comments.
Don't you appreciate patches sent in by wannabe hackers from all
over the world?

Anyway, with Zefram's patch, which is sure impressive, I'm experi-
encing core dumps in vi mode.  Let's say, I'm pressing those keys in
an xterm: Cursor-up, cursor-down, cursor-up, ie.

  ~/wrk/z/zsh-3.1.0-test3/Src> <ESC>[A<ESC>[B<ESC>[A
  Program received signal SIGSEGV, Segmentation fault.
  0x8098b2b in getkeycmd () at zle_main.c:542
  542             if (cky->func == z_undefinedkey)
  (gdb) [A
        ^^
Now, after two feep()s and the third key-press, the prefix is recog-
nized, but there's no binding for it in keybindtab (== vikeybindtab),
dereferencing cky (== NULL).  The easy way out is to add the default
cursor key bindings also to vi insert mode. 

[ In a similar vain, what exactly happens to meta-bindings like "\M-x"
  after `bindkey -m'? They're displayed as "^[x", and `bindkey -{a,v}m'
  makes them look like (*iso8859-1 alert*) "ø".  They're working OK,
  albeit difficult to locate on my keyboard. ]

Regards,
--Thorsten

--- zle_main.c	1996/11/24 18:16:15	2.33
+++ zle_main.c	1996/11/25 18:11:40
@@ -687,6 +687,12 @@
     addbinding(altbindtab, altkeybindtab, "\33[A", 3, z_uplineorhistory);
     addbinding(altbindtab, altkeybindtab, "\33[B", 3, z_downlineorhistory);
 
+    /* vi insert mode: arrow keys */
+    addbinding(vibindtab, vikeybindtab, "\33[C", 3, z_forwardchar);
+    addbinding(vibindtab, vikeybindtab, "\33[D", 3, z_backwardchar);
+    addbinding(vibindtab, vikeybindtab, "\33[A", 3, z_uplineorhistory);
+    addbinding(vibindtab, vikeybindtab, "\33[B", 3, z_downlineorhistory);
+
     /* emacs mode: arrow keys */
     addbinding(embindtab, emkeybindtab, "\33[C", 3, z_forwardchar);
     addbinding(embindtab, emkeybindtab, "\33[D", 3, z_backwardchar);


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

* Re: big key binding patch
  1996-11-25 13:22 ` Peter Stephenson
@ 1996-11-25 16:02   ` Zefram
  1996-11-25 18:57     ` Thorsten Meinecke
  0 siblings, 1 reply; 8+ messages in thread
From: Zefram @ 1996-11-25 16:02 UTC (permalink / raw)
  To: Peter Stephenson; +Cc: zsh-workers

>This key binding overhaul was certainly necessary.

It certainly was, Stanley.

>the str Key element doesn't get set to null in addkeybindentry(),
>causing `already free' error messages later.  However, is the
>zfree(cur->str) immediately after the addkeybindentry() in
>bin_bindkey() still required?  It's not quite clear to me since the
>test at the end of addkeybindentry() is different (and so is the free,
>but that must be essentially cosmetic).

Urgh.  I'm planning another patch, after the next release, which among
other things will clean up this area of bin_bindkey() quite a bit.

>There's also some not-bugs with uninitialized variables that gcc complains
>about which I've fixed anyway (that's the current policy, not clear
>how necessary it really is but it eliminates a source of complaints).

Yes, I wonder why those didn't show up when I first compiled the new code.

>I still had -pedantic turned on when I first compiled this and gcc
>doesn't like having to initialise the keybindtab elements of list[] in
>unbindzlefunc() at load time.  That probably needs fixing (if there
>are any genuinely pedantic compilers around) but I couldn't think of a
>portable fix without more verbose code.

That'll teach me to assume that someone else was mistaken.  The code I
replaced had HashTable *'s in that list, and extra dereferences.

-zefram


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

* Re: big key binding patch
  1996-11-24 15:30 Zefram
@ 1996-11-25 13:22 ` Peter Stephenson
  1996-11-25 16:02   ` Zefram
  0 siblings, 1 reply; 8+ messages in thread
From: Peter Stephenson @ 1996-11-25 13:22 UTC (permalink / raw)
  To: Zsh hackers list

This key binding overhaul was certainly necessary.  There's one bug:
the str Key element doesn't get set to null in addkeybindentry(),
causing `already free' error messages later.  However, is the
zfree(cur->str) immediately after the addkeybindentry() in
bin_bindkey() still required?  It's not quite clear to me since the
test at the end of addkeybindentry() is different (and so is the free,
but that must be essentially cosmetic).

There's also some not-bugs with uninitialized variables that gcc complains
about which I've fixed anyway (that's the current policy, not clear
how necessary it really is but it eliminates a source of complaints).

I still had -pedantic turned on when I first compiled this and gcc
doesn't like having to initialise the keybindtab elements of list[] in
unbindzlefunc() at load time.  That probably needs fixing (if there
are any genuinely pedantic compilers around) but I couldn't think of a
portable fix without more verbose code.

*** Src/zle_main.c~	Mon Nov 25 09:24:14 1996
--- Src/zle_main.c	Mon Nov 25 14:00:26 1996
***************
*** 937,943 ****
  Key
  addkeybindentry(int *tab, HashTable keytab, char *str, int len)
  {
!     Key ret;
      int p, added=0;
      char *buf = zalloc(len*2 + 1);
  
--- 937,943 ----
  Key
  addkeybindentry(int *tab, HashTable keytab, char *str, int len)
  {
!     Key ret = NULL;
      int p, added=0;
      char *buf = zalloc(len*2 + 1);
  
***************
*** 958,965 ****
  	if(p == len)
  	    ret = ky;
      }
!     if(ret->func == z_sendstring)
  	free(ret->str);
      return ret;
  }
  
--- 958,967 ----
  	if(p == len)
  	    ret = ky;
      }
!     if(ret->func == z_sendstring) {
  	free(ret->str);
+ 	ret->str = NULL;
+     }
      return ret;
  }
  
***************
*** 1052,1058 ****
      while (*argv) {
  	Key ky = NULL;
  	char *s, *smeta;
! 	int func, len;
  
  	if (ops['u'] || ops['U']) {
  	    /* unbind all references to given function */
--- 1054,1060 ----
      while (*argv) {
  	Key ky = NULL;
  	char *s, *smeta;
! 	int func = 0, len;
  
  	if (ops['u'] || ops['U']) {
  	    /* unbind all references to given function */
***************
*** 1301,1308 ****
  void
  unbindzlefunc(int ifunc, int notall)
  {
!     int i, *tab;
!     HashTable keytab;
      struct {
  	int *tab;
  	HashTable keytab;
--- 1303,1310 ----
  void
  unbindzlefunc(int ifunc, int notall)
  {
!     int i, *tab = 0;
!     HashTable keytab = NULL;
      struct {
  	int *tab;
  	HashTable keytab;

-- 
Peter Stephenson <pws@ifh.de>       Tel: +49 33762 77366
WWW:  http://www.ifh.de/~pws/       Fax: +49 33762 77413
Deutches Electronen-Synchrotron --- Institut fuer Hochenergiephysik Zeuthen
DESY-IfH, 15735 Zeuthen, Germany.


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

* big key binding patch
@ 1996-11-24 15:30 Zefram
  1996-11-25 13:22 ` Peter Stephenson
  0 siblings, 1 reply; 8+ messages in thread
From: Zefram @ 1996-11-24 15:30 UTC (permalink / raw)
  To: Z Shell workers mailing list

-----BEGIN PGP SIGNED MESSAGE-----

This patch basically fixes multi-character key bindings.  Specifically:

* It adds a multi-character key binding table for the vi command mode.
  (This part was previously published as patch 1277, but didn't get into
  the baseline; it is not very useful without the rest of this patch.)

* It adds functions to manipulate key binding tables, to make it easier
  to keep them consistent.  These functions give the user the illusion of
  continuity between the single-character and multi-character binding
  tables; internally, single-character bindings are used wherever
  possible.

* By using these functions, it makes the code that adds and deletes key
  bindings a lot less messy and a lot more correct.  (I especially
  like the fact that the number of ^X sequences no longer needs to be
  hard coded.)

* It modifies the multi-character binding code to use metafication,
  so that it is possible to bind to arbitrary sequences such as "^@^@".

begin 644 bind_patch.gz
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
@?+`%2V@M[J784EF#*I4(4E0BN'/YU7\!KWJ[Q#7.````
`
end

-----BEGIN PGP SIGNATURE-----
Version: 2.6.2

iQCVAwUBMpfIgXD/+HJTpU/hAQGdSwP+OaD5V9dr/OloiO//Bku3XvN3wpYQegt2
6Dzl96YZ0TO5lNGLqtVm0ucqpXm8k+CrTrH3PIISlHa0kT+hMgIrjy/lEyTZM5Y8
mac8LW4KfSY2Abpf2aZgNVFXeTwp/UFaiH01VCy6rKhHp1kPdC14IynlC8ACfZ7V
8wG/ItUzEM4=
=VJ3M
-----END PGP SIGNATURE-----


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

end of thread, other threads:[~1996-11-26 12:19 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1996-11-26 12:03 big key binding patch Duncan Sinclair
1996-11-26 12:10 ` Zefram
  -- strict thread matches above, loose matches on Subject: below --
1996-11-24 15:30 Zefram
1996-11-25 13:22 ` Peter Stephenson
1996-11-25 16:02   ` Zefram
1996-11-25 18:57     ` Thorsten Meinecke
1996-11-25 22:05       ` Zefram
1996-11-26  8:46         ` Zefram

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

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 NNTP newsgroup(s).