Subject: Re: .safe keymap doesn't use builtin widgets?
From: Bart Schaefer <[email-masked]>
To: [email-masked]
Date: Tue, 10 May 2016 11:00:03 -0700
List-Id: Zsh Workers List <zsh-workers.zsh.org>

On May 9, 10:17pm, Daniel Shahaf wrote:
} 
} Shouldn't it use the dot-prefixed versions of self-insert and
} accept-line [...]
} 
} ?

The immutable keymap and the immortal widgets were invented at different
times, so this was probably just overlooked when setting things up.
Fortunately it's pretty easy to change, and makes sense.

diff --git a/Src/Zle/zle_keymap.c b/Src/Zle/zle_keymap.c
index 13fd138..f547dbf 100644
--- a/Src/Zle/zle_keymap.c
+++ b/Src/Zle/zle_keymap.c
@@ -1322,15 +1322,15 @@ default_bindings(void)
 	amap->first[i] = refthingy(t_undefinedkey);
 
     /* safe fallback keymap:
-     *   0-255  self-insert, except: *
-     *    '\n'  accept-line          *
-     *    '\r'  accept-line          */
+     *   0-255  .self-insert, except: *
+     *    '\n'  .accept-line          *
+     *    '\r'  .accept-line          */
     for (i = 0; i < 256; i++)
-	smap->first[i] = refthingy(t_selfinsert);
-    unrefthingy(t_selfinsert);
-    unrefthingy(t_selfinsert);
-    smap->first['\n'] = refthingy(t_acceptline);
-    smap->first['\r'] = refthingy(t_acceptline);
+	smap->first[i] = refthingy(t_Dselfinsert);
+    unrefthingy(t_Dselfinsert);
+    unrefthingy(t_Dselfinsert);
+    smap->first['\n'] = refthingy(t_Dacceptline);
+    smap->first['\r'] = refthingy(t_Dacceptline);
 
     /* vt100 arrow keys are bound by default, for historical reasons. *
      * Both standard and keypad modes are supported.                  */