Hier sind ein paar Skripte die ich verwendet habe:
Was passiert gerade im Z-Lineeditor:
#!/usr/sbin/dtrace -s
#pragma D option flowindent
pid$target:zle.so::entry,
pid$target:zle.so::return
{
}
Der Userstack Backtrace sobald
selectkeymap
aufgerufen wird, inklusive der Information um welche Keymap es sich handelt:
#!/usr/sbin/dtrace -s
pid$target:zle.so:selectkeymap:entry
{
ustack();
printf("%s",copyinstr(arg0));
}
Und das ganze nochmal für
selectlocalmap
:
#!/usr/sbin/dtrace -s
pid$target:zle.so:selectlocalmap:entry
/arg0 != 0/
{
ustack();
printf("%p",arg0);
}
Das ganze lief am Ende darauf hinaus das im aktuellen Source der Version 4.3.6 einfach die Zeile 2315 in der Datei complist.c von
selectlocalmap(mskeymap)
in selectkeymap("menuselect",1)
geändert werden musste. Da das ganze ein ziemlicher Quickhack ist, übernehme ich aber für nichts die Garantie ;).Auf jeden Fall kann ich jetzt selbst geschriebene Widgets an die menuselect Keymap binden und $KEYMAP wird beim Wechsel auch richtig gesetzt, alles ohne viel Aufwand oder einer Debugversion von ZSH :D. Mal sehen was Upstream dazu sagt.
Ich sage dazu nur: DTRACE ROCKT!
Keine Kommentare:
Kommentar veröffentlichen