Menu

Diff of /joe/cmd.c [26aafc] .. [7c54b3]  Maximize  Restore

Switch to side-by-side view

--- a/joe/cmd.c
+++ b/joe/cmd.c
@@ -11,225 +11,226 @@
 
 /* Command table */
 
-int ubeep(BW *bw, int k)
+static int ubeep(W *w, int k)
 {
 	ttputc(7);
 	return 0;
 }
 
 CMD cmds[] = {
-	{USTR "abort", TYPETW + TYPEPW + TYPEMENU + TYPEQW, uabort, NULL, 0, NULL},
-	{USTR "abortbuf", TYPETW, uabortbuf, NULL, 0, NULL},
-	{USTR "arg", TYPETW + TYPEPW + TYPEMENU + TYPEQW, uarg, NULL, 0, NULL},
-	{USTR "ask", TYPETW + TYPEPW, uask, NULL, 0, NULL},
-	{USTR "uarg", TYPETW + TYPEPW + TYPEMENU + TYPEQW, uuarg, NULL, 0, NULL},
-	{USTR "backs", TYPETW + TYPEPW + ECHKXCOL + EFIXXCOL + EMINOR + EKILL + EMOD, ubacks, NULL, 1, USTR "delch"},
-	{USTR "backsmenu", TYPEMENU, umbacks, NULL, 1, NULL},
-	{USTR "backw", TYPETW + TYPEPW + ECHKXCOL + EFIXXCOL + EKILL + EMOD, ubackw, NULL, 1, USTR "delw"},
-	{USTR "beep", TYPETW + TYPEPW + TYPEMENU + TYPEQW, ubeep, NULL, 0, NULL},
-	{USTR "begin_marking", TYPETW + TYPEPW, ubegin_marking, NULL, 0, NULL},
-	{USTR "bknd", TYPETW, ubknd, NULL, 0, NULL},
-	{USTR "bkwdc", TYPETW + TYPEPW, ubkwdc, NULL, 1, USTR "fwrdc"},
-	{USTR "blkcpy", TYPETW + TYPEPW + EFIXXCOL + EMOD + EBLOCK, ublkcpy, NULL, 1, NULL},
-	{USTR "blkdel", TYPETW + TYPEPW + EFIXXCOL + EKILL + EMOD + EBLOCK, ublkdel, NULL, 0, NULL},
-	{USTR "blkmove", TYPETW + TYPEPW + EFIXXCOL + EMOD + EBLOCK, ublkmove, NULL, 0, NULL},
-	{USTR "blksave", TYPETW + TYPEPW + EBLOCK, ublksave, NULL, 0, NULL},
-	{USTR "bof", TYPETW + TYPEPW + EMOVE + EFIXXCOL, u_goto_bof, NULL, 0, NULL},
-	{USTR "bofmenu", TYPEMENU, umbof, NULL, 0, NULL},
-	{USTR "bol", TYPETW + TYPEPW + EFIXXCOL, u_goto_bol, NULL, 0, NULL},
-	{USTR "bolmenu", TYPEMENU, umbol, NULL, 0, NULL},
-	{USTR "bop", TYPETW + TYPEPW + EFIXXCOL, ubop, NULL, 1, USTR "eop"},
-	{USTR "bos", TYPETW + TYPEPW + EMOVE, ubos, NULL, 0, NULL},
-	{USTR "brpaste", TYPETW + TYPEPW + EMOD + EFIXXCOL, ubrpaste, NULL, 0, NULL},
-	{USTR "bufed", TYPETW, ubufed, NULL, 0, NULL},
-	{USTR "build", TYPETW + TYPEPW, ubuild, NULL, 0, NULL},
-	{USTR "byte", TYPETW + TYPEPW, ubyte, NULL, 0, NULL},
-	{USTR "cancel", TYPETW + TYPEPW + TYPEMENU + TYPEQW, ucancel, NULL, 0, NULL},
-	{USTR "cd", TYPETW, usetcd, NULL, 0, NULL},
-	{USTR "center", TYPETW + TYPEPW + EFIXXCOL + EMOD, ucenter, NULL, 1, NULL},
-	{USTR "charset", TYPETW + TYPEPW, ucharset, NULL, 0, NULL}, 
-	{USTR "ctrl", TYPETW + TYPEPW + EMOD, uctrl, NULL, 0, NULL},
-	{USTR "col", TYPETW + TYPEPW, ucol, NULL, 0, NULL},
-	{USTR "complete", TYPEPW + EMINOR + EMOD, ucmplt, NULL, 0, NULL},
-	{USTR "copy", TYPETW + TYPEPW, ucopy, NULL, 0, NULL},
-	{USTR "crawll", TYPETW + TYPEPW, ucrawll, NULL, 1, USTR "crawlr"},
-	{USTR "crawlr", TYPETW + TYPEPW, ucrawlr, NULL, 1, USTR "crawll"},
-	{USTR "defmdown", TYPETW+TYPEPW+TYPEQW+TYPEMENU, udefmdown, 0, 0, 0 },
-	{USTR "defmup", TYPETW+TYPEPW, udefmup, 0, 0, 0 },
-	{USTR "defmdrag", TYPETW+TYPEPW, udefmdrag, 0, 0, 0 },
-	{USTR "defm2down", TYPETW+TYPEPW+TYPEMENU, udefm2down, 0, 0, 0 },
-	{USTR "defm2up", TYPETW+TYPEPW, udefm2up, 0, 0, 0 },
-	{USTR "defm2drag", TYPETW+TYPEPW, udefm2drag, 0, 0, 0 },
-	{USTR "defm3down", TYPETW+TYPEPW, udefm3down, 0, 0, 0 },
-	{USTR "defm3up", TYPETW+TYPEPW, udefm3up, 0, 0, 0 },
-	{USTR "defm3drag", TYPETW+TYPEPW, udefm3drag, 0, 0, 0 },
-	{USTR "defmrdown", TYPETW+TYPEPW, udefmrdown, 0, 0, 0 },
-	{USTR "defmrup", TYPETW+TYPEPW, udefmrup, 0, 0, 0 },
-	{USTR "defmrdrag", TYPETW+TYPEPW, udefmrdrag, 0, 0, 0 },
-	{USTR "defmmdown", TYPETW+TYPEPW, udefmmdown, 0, 0, 0 },
-	{USTR "defmmup", TYPETW+TYPEPW, udefmmup, 0, 0, 0 },
-	{USTR "defmmdrag", TYPETW+TYPEPW, udefmmdrag, 0, 0, 0 },
-	{USTR "delbol", TYPETW + TYPEPW + EFIXXCOL + EKILL + EMOD, udelbl, NULL, 1, USTR "deleol"},
-	{USTR "delch", TYPETW + TYPEPW + ECHKXCOL + EFIXXCOL + EMINOR + EKILL + EMOD, udelch, NULL, 1, USTR "backs"},
-	{USTR "deleol", TYPETW + TYPEPW + EKILL + EMOD, udelel, NULL, 1, USTR "delbol"}, 
-	{USTR "dellin", TYPETW + TYPEPW + EFIXXCOL + EKILL + EMOD, udelln, NULL, 1, NULL}, 
-	{USTR "delw", TYPETW + TYPEPW + EFIXXCOL + ECHKXCOL + EKILL + EMOD, u_word_delete, NULL, 1, USTR "backw"},
-	{USTR "dnarw", TYPETW + TYPEPW + EMOVE, udnarw, NULL, 1, USTR "uparw"},
-	{USTR "dnarwmenu", TYPEMENU, umdnarw, NULL, 1, USTR "uparwmenu"}, 
-	{USTR "dnslide", TYPETW + TYPEPW + TYPEMENU + TYPEQW + EMOVE, udnslide, NULL, 1, USTR "upslide"},
-	{USTR "dnslidemenu", TYPEMENU, umscrdn, NULL, 1, USTR "upslidemenu"},
-	{USTR "drop", TYPETW + TYPEPW, udrop, NULL, 0, NULL},
-	{USTR "dupw", TYPETW, uduptw, NULL, 0, NULL},
-	{USTR "edit", TYPETW, uedit, NULL, 0, NULL},
-	{USTR "else", TYPETW+TYPEPW+TYPEMENU+TYPEQW+EMETA, uelse, 0, 0, 0 },
-	{USTR "elsif", TYPETW+TYPEPW+TYPEMENU+TYPEQW+EMETA, uelsif, 0, 0, 0 },
-	{USTR "endif", TYPETW+TYPEPW+TYPEMENU+TYPEQW+EMETA, uendif, 0, 0, 0 },
-	{USTR "eof", TYPETW + TYPEPW + EFIXXCOL + EMOVE, u_goto_eof, NULL, 0, NULL},
-	{USTR "eofmenu", TYPEMENU, umeof, NULL, 0, NULL},
-	{USTR "eol", TYPETW + TYPEPW + EFIXXCOL, u_goto_eol, NULL, 0, NULL},
-	{USTR "eolmenu", TYPEMENU, umeol, NULL, 0, NULL},
-	{USTR "eop", TYPETW + TYPEPW + EFIXXCOL, ueop, NULL, 1, USTR "bop"},
-	{USTR "execmd", TYPETW + TYPEPW, uexecmd, NULL, 0, NULL},
-	{USTR "explode", TYPETW + TYPEPW + TYPEMENU + TYPEQW, uexpld, NULL, 0, NULL},
-	{USTR "exsave", TYPETW + TYPEPW, uexsve, NULL, 0, NULL},
-	{USTR "extmouse", TYPETW+TYPEPW+TYPEMENU+TYPEQW, uextmouse, 0, 0, 0 },
-	{USTR "ffirst", TYPETW + TYPEPW, pffirst, NULL, 0, NULL},
-	{USTR "filt", TYPETW + TYPEPW + EMOD + EBLOCK, ufilt, NULL, 0, NULL},
-	{USTR "finish", TYPETW + TYPEPW + EMOD, ufinish, NULL, 1, NULL},
-	{USTR "fnext", TYPETW + TYPEPW, pfnext, NULL, 1, NULL},
-	{USTR "format", TYPETW + TYPEPW + EFIXXCOL + EMOD, uformat, NULL, 1, NULL},
-	{USTR "fmtblk", TYPETW + EMOD + EFIXXCOL + EBLOCK, ufmtblk, NULL, 1, NULL},
-	{USTR "fwrdc", TYPETW + TYPEPW, ufwrdc, NULL, 1, USTR "bkwdc"},
-	{USTR "gomark", TYPETW + TYPEPW + EMOVE, ugomark, NULL, 0, NULL},
-	{USTR "gparse", TYPETW, ugparse, NULL, 0, NULL},
-	{USTR "grep", TYPETW, ugrep, NULL, 0, NULL},
-	{USTR "groww", TYPETW+TYPEPW, ugroww, NULL, 1, USTR "shrinkw"},
-	{USTR "if", TYPETW+TYPEPW+TYPEMENU+TYPEQW+EMETA, uif, 0, 0, 0 },
-	{USTR "isrch", TYPETW + TYPEPW, uisrch, NULL, 0, NULL},
-	{USTR "jump", TYPETW, ujump, NULL, 0, NULL },
-	{USTR "killjoe", TYPETW + TYPEPW + TYPEMENU + TYPEQW, ukilljoe, NULL, 0, NULL},
-	{USTR "killproc", TYPETW + TYPEPW, ukillpid, NULL, 0, NULL},
-	{USTR "help", TYPETW + TYPEPW + TYPEQW, u_help, NULL, 0, NULL},
-	{USTR "home", TYPETW + TYPEPW + EFIXXCOL, uhome, NULL, 0, NULL},
-	{USTR "hnext", TYPETW + TYPEPW + TYPEQW, u_help_next, NULL, 0, NULL},
-	{USTR "hprev", TYPETW + TYPEPW + TYPEQW, u_help_prev, NULL, 0, NULL},
-	{USTR "insc", TYPETW + TYPEPW + EFIXXCOL + EMOD, uinsc, NULL, 1, USTR "delch"},
-	{USTR "keymap", TYPETW, ukeymap, 0, 0, 0 },    /* JM */
-	{USTR "insf", TYPETW + TYPEPW + EMOD, uinsf, NULL, 0, NULL}, 
-	{USTR "language", TYPETW + TYPEPW, ulanguage, NULL, 0, NULL}, 
-	{USTR "lindent", TYPETW + TYPEPW + EFIXXCOL + EMOD + EBLOCK, ulindent, NULL, 1, USTR "rindent"},
-	{USTR "line", TYPETW + TYPEPW, uline, NULL, 0, NULL},
-	{USTR "lose", TYPETW + TYPEPW, ulose, NULL, 0, NULL}, 
-	{USTR "lower", TYPETW + TYPEPW + EMOD + EBLOCK, ulower, NULL, 0, NULL},
-	{USTR "ltarw", TYPETW + TYPEPW /* + EFIXXCOL + ECHKXCOL */, u_goto_left, NULL, 1, USTR "rtarw"},
-	{USTR "ltarwmenu", TYPEMENU, umltarw, NULL, 1, USTR "rtarwmenu"},
-	{USTR "macros", TYPETW + EFIXXCOL, umacros, NULL, 0, NULL},
-	{USTR "debug_joe", TYPETW + EFIXXCOL, udebug_joe, NULL, 0, NULL},
-	{USTR "markb", TYPETW + TYPEPW, umarkb, NULL, 0, NULL},
-	{USTR "markk", TYPETW + TYPEPW, umarkk, NULL, 0, NULL},
-	{USTR "markl", TYPETW + TYPEPW, umarkl, NULL, 0, NULL},
-	{USTR "math", TYPETW + TYPEPW, umath, NULL, 0, NULL},
-	{USTR "maths", TYPETW + TYPEPW, usmath, NULL, 0, NULL},
-	{USTR "menu", TYPETW + TYPEPW + TYPEQW, umenu, NULL, 0, NULL},
-	{USTR "mode", TYPETW + TYPEPW + TYPEQW, umode, NULL, 0, NULL},
-	{USTR "msg", TYPETW + TYPEPW + TYPEQW + TYPEMENU, umsg, NULL, 0, NULL},
-	{USTR "mfit", TYPETW, umfit, NULL, 0, NULL},
-	{USTR "mwind", TYPETW, umwind, NULL, 0, NULL},
-	{USTR "name", TYPETW + TYPEPW, uname_joe, NULL, 0, NULL}, 
-	{USTR "nbuf", TYPETW + EFIXXCOL, unbuf, NULL, 1, USTR "pbuf"},
-	{USTR "nedge", TYPETW + TYPEPW + EFIXXCOL, unedge, NULL, 1, USTR "pedge"}, 
-	{USTR "nextpos", TYPETW + TYPEPW + EFIXXCOL + EMID + EPOS, unextpos, NULL, 1, USTR "prevpos"}, 
-	{USTR "nextw", TYPETW + TYPEPW + TYPEMENU + TYPEQW, unextw, NULL, 1, USTR "prevw"},
-	{USTR "nextword", TYPETW + TYPEPW + EFIXXCOL, u_goto_next, NULL, 1, USTR "prevword"},
-	{USTR "nmark", TYPETW + TYPEPW, unmark, NULL, 0, NULL},
-	{USTR "notmod", TYPETW, unotmod, NULL, 0, NULL},
-	{USTR "nxterr", TYPETW, unxterr, NULL, 1, USTR "prverr"},
-	{USTR "open", TYPETW + TYPEPW + EFIXXCOL + EMOD, uopen, NULL, 1, USTR "deleol"},
-	{USTR "parserr", TYPETW, uparserr, NULL, 0, NULL},
-	{USTR "paste", TYPETW + TYPEPW + EMOD, upaste, NULL, 0, NULL },
-	{USTR "pbuf", TYPETW + EFIXXCOL, upbuf, NULL, 1, USTR "nbuf"},
-	{USTR "pedge", TYPETW + TYPEPW + EFIXXCOL, upedge, NULL, 1, USTR "nedge"}, 
-	{USTR "pgdn", TYPETW + TYPEPW + TYPEMENU + TYPEQW + EMOVE, upgdn, NULL, 1, USTR "pgup"},
-	{USTR "pgdnmenu", TYPEMENU, umpgdn, NULL, 1, USTR "pgupmenu"}, 
-	{USTR "pgup", TYPETW + TYPEPW + TYPEMENU + TYPEQW + EMOVE, upgup, NULL, 1, USTR "pgdn"},
-	{USTR "pgupmenu", TYPEMENU, umpgup, NULL, 1, USTR "pgdnmenu"}, 
-	{USTR "picokill", TYPETW + TYPEPW + EFIXXCOL + EKILL + EMOD, upicokill, NULL, 1, NULL},
-	{USTR "play", TYPETW + TYPEPW + TYPEMENU + TYPEQW, uplay, NULL, 1, NULL},	/* EFIXX? */ 
-	{USTR "prevpos", TYPETW + TYPEPW + EPOS + EMID + EFIXXCOL, uprevpos, NULL, 1, USTR "nextpos"}, 
-	{USTR "prevw", TYPETW + TYPEPW + TYPEMENU + TYPEQW, uprevw, NULL, 1, USTR "nextw"}, 
-	{USTR "prevword", TYPETW + TYPEPW + EFIXXCOL + ECHKXCOL, u_goto_prev, NULL, 1, USTR "nextword"},
-	{USTR "prverr", TYPETW, uprverr, NULL, 1, USTR "nxterr"},
-	{USTR "psh", TYPETW + TYPEPW + TYPEMENU + TYPEQW, upsh, NULL, 0, NULL},
-	{USTR "pop", TYPETW + TYPEPW + TYPEMENU + TYPEQW, upop, NULL, 0, NULL},
-	{USTR "popabort", TYPETW + TYPEPW + TYPEMENU + TYPEQW, upopabort, NULL, 0, NULL},
-	{USTR "qrepl", TYPETW + TYPEPW + EMOD, pqrepl, NULL, 0, NULL},
-	{USTR "query", TYPETW + TYPEPW + TYPEMENU + TYPEQW, uquery, NULL, 0, NULL},
-	{USTR "querysave", TYPETW, uquerysave, NULL, 0, NULL},
-	{USTR "quote", TYPETW + TYPEPW + EMOD, uquote, NULL, 0, NULL},
-	{USTR "quote8", TYPETW + TYPEPW + EMOD, uquote8, NULL, 0, NULL},
-	{USTR "record", TYPETW + TYPEPW + TYPEMENU + TYPEQW, urecord, NULL, 0, NULL},
-	{USTR "redo", TYPETW + TYPEPW + EFIXXCOL, uredo, NULL, 1, USTR "undo"},
-	{USTR "release", TYPETW, urelease, NULL, 0, NULL},
-	{USTR "reload", TYPETW, ureload, NULL, 0, NULL },
-	{USTR "reloadall", TYPETW, ureload_all, NULL, 0, NULL },
-	{USTR "retype", TYPETW + TYPEPW + TYPEMENU + TYPEQW, uretyp, NULL, 0, NULL},
-	{USTR "rfirst", TYPETW + TYPEPW, prfirst, NULL, 0, NULL}, 
-	{USTR "rindent", TYPETW + TYPEPW + EFIXXCOL + EMOD + EBLOCK, urindent, NULL, 1, USTR "lindent"},
-	{USTR "run", TYPETW + TYPEPW, urun, NULL, 0, NULL},
-	{USTR "rsrch", TYPETW + TYPEPW, ursrch, NULL, 0, NULL},
-	{USTR "rtarw", TYPETW + TYPEPW /* + EFIXXCOL */, u_goto_right, NULL, 1, USTR "ltarw"}, /* EFIX removed for picture mode */
-	{USTR "rtarwmenu", TYPEMENU, umrtarw, NULL, 1, USTR "ltarwmenu"},
-	{USTR "rtn", TYPETW + TYPEPW + TYPEMENU + TYPEQW + EMOD, urtn, NULL, 1, NULL},
-	{USTR "save", TYPETW + TYPEPW, usave, NULL, 0, NULL},
-	{USTR "savenow", TYPETW + TYPEPW, usavenow, NULL, 0, NULL},
-	{USTR "scratch", TYPETW + TYPEPW, uscratch, NULL, 0, NULL},
-	{USTR "secure_type", TYPEPW + TYPEQW + TYPEMENU + EMINOR + EMOD, utype, NULL, 1, USTR "backs"},
-	{USTR "select", TYPETW + TYPEPW, uselect, NULL, 0, NULL},
-	{USTR "setmark", TYPETW + TYPEPW, usetmark, NULL, 0, NULL},
-	{USTR "shell", TYPETW + TYPEPW + TYPEMENU + TYPEQW, ushell, NULL, 0, NULL},
-	{USTR "showerr", TYPETW + TYPEPW, ucurrent_msg, NULL, 0, NULL},
-	{USTR "showlog", TYPETW, ushowlog, NULL, 0, NULL},
-	{USTR "shrinkw", TYPETW, ushrnk, NULL, 1, USTR "groww"},
-	{USTR "splitw", TYPETW, usplitw, NULL, 0, NULL},
-	{USTR "stat", TYPETW + TYPEPW, ustat, NULL, 0, NULL},
-	{USTR "stop", TYPETW + TYPEPW + TYPEMENU + TYPEQW, ustop, NULL, 0, NULL},
-	{USTR "swap", TYPETW + TYPEPW + EFIXXCOL, uswap, NULL, 0, NULL},
-	{USTR "switch", TYPETW + TYPEPW, uswitch, NULL, 0, NULL},
-	{USTR "sys", TYPETW + TYPEPW, usys, NULL, 0, NULL },
-	{USTR "tabmenu", TYPEMENU, umtab, NULL, 1, USTR "ltarwmenu"},
-	{USTR "tag", TYPETW + TYPEPW, utag, NULL, 0, NULL},
-	{USTR "tagjump", TYPETW + TYPEPW, utagjump, NULL, 0, NULL},
-	{USTR "toggle_marking", TYPETW + TYPEPW, utoggle_marking, NULL, 0, NULL},
-	{USTR "then", TYPEPW+EMOD, urtn, 0, 0, 0 },
-	{USTR "timer", TYPETW + TYPEPW + TYPEMENU + TYPEQW, utimer, NULL, 1, NULL},
-	{USTR "tomarkb", TYPETW + TYPEPW + EFIXXCOL + EBLOCK, utomarkb, NULL, 0, NULL},
-	{USTR "tomarkbk", TYPETW + TYPEPW + EFIXXCOL + EBLOCK, utomarkbk, NULL, 0, NULL},
-	{USTR "tomarkk", TYPETW + TYPEPW + EFIXXCOL + EBLOCK, utomarkk, NULL, 0, NULL},
-	{USTR "tomatch", TYPETW + TYPEPW + EFIXXCOL, utomatch, NULL, 0, NULL},
-	{USTR "tomouse", TYPETW+TYPEPW+TYPEQW+TYPEMENU, utomouse, 0, 0, 0 },
-	{USTR "tos", TYPETW + TYPEPW + EMOVE, utos, NULL, 0, NULL},
-	{USTR "tw0", TYPETW + TYPEPW + TYPEQW + TYPEMENU, utw0, NULL, 0, NULL},
-	{USTR "tw1", TYPETW + TYPEPW + TYPEQW + TYPEMENU, utw1, NULL, 0, NULL},
-	{USTR "txt", TYPETW + TYPEPW, utxt, NULL, 0, NULL}, 
-	{USTR "type", TYPETW + TYPEPW + TYPEQW + TYPEMENU + EMINOR + EMOD, utype, NULL, 1, USTR "backs"},
-	{USTR "undo", TYPETW + TYPEPW + EFIXXCOL, uundo, NULL, 1, USTR "redo"},
-	{USTR "uparw", TYPETW + TYPEPW + EMOVE, uuparw, NULL, 1, USTR "dnarw"},
-	{USTR "uparwmenu", TYPEMENU, umuparw, NULL, 1, USTR "dnarwmenu"}, 
-	{USTR "upper", TYPETW + TYPEPW + EMOD + EBLOCK, uupper, NULL, 0, NULL},
-	{USTR "upslide", TYPETW + TYPEPW + TYPEMENU + TYPEQW + EMOVE, uupslide, NULL, 1, USTR "dnslide"},
+	{"abort", TYPETW + TYPEPW + TYPEMENU + TYPEQW, uabort, NULL, 0, NULL},
+	{"abortbuf", TYPETW, uabortbuf, NULL, 0, NULL},
+	{"arg", TYPETW + TYPEPW + TYPEMENU + TYPEQW, uarg, NULL, 0, NULL},
+	{"ask", TYPETW + TYPEPW, uask, NULL, 0, NULL},
+	{"uarg", TYPETW + TYPEPW + TYPEMENU + TYPEQW, uuarg, NULL, 0, NULL},
+	{"backs", TYPETW + TYPEPW + ECHKXCOL + EFIXXCOL + EMINOR + EKILL + EMOD, ubacks, NULL, 1, "delch"},
+	{"backsmenu", TYPEMENU, umbacks, NULL, 1, NULL},
+	{"backw", TYPETW + TYPEPW + ECHKXCOL + EFIXXCOL + EKILL + EMOD, ubackw, NULL, 1, "delw"},
+	{"beep", TYPETW + TYPEPW + TYPEMENU + TYPEQW, ubeep, NULL, 0, NULL},
+	{"begin_marking", TYPETW + TYPEPW, ubegin_marking, NULL, 0, NULL},
+	{"bknd", TYPETW, ubknd, NULL, 0, NULL},
+	{"bkwdc", TYPETW + TYPEPW, ubkwdc, NULL, 1, "fwrdc"},
+	{"blkcpy", TYPETW + TYPEPW + EFIXXCOL + EMOD + EBLOCK, ublkcpy, NULL, 1, NULL},
+	{"blkdel", TYPETW + TYPEPW + EFIXXCOL + EKILL + EMOD + EBLOCK, ublkdel, NULL, 0, NULL},
+	{"blkmove", TYPETW + TYPEPW + EFIXXCOL + EMOD + EBLOCK, ublkmove, NULL, 0, NULL},
+	{"blksave", TYPETW + TYPEPW + EBLOCK, ublksave, NULL, 0, NULL},
+	{"bof", TYPETW + TYPEPW + EMOVE + EFIXXCOL, u_goto_bof, NULL, 0, NULL},
+	{"bofmenu", TYPEMENU, umbof, NULL, 0, NULL},
+	{"bol", TYPETW + TYPEPW + EFIXXCOL, u_goto_bol, NULL, 0, NULL},
+	{"bolmenu", TYPEMENU, umbol, NULL, 0, NULL},
+	{"bop", TYPETW + TYPEPW + EFIXXCOL, ubop, NULL, 1, "eop"},
+	{"bos", TYPETW + TYPEPW + EMOVE, ubos, NULL, 0, NULL},
+	{"brpaste", TYPETW + TYPEPW + EMOD + EFIXXCOL, ubrpaste, NULL, 0, NULL},
+	{"bufed", TYPETW, ubufed, NULL, 0, NULL},
+	{"build", TYPETW + TYPEPW, ubuild, NULL, 0, NULL},
+	{"byte", TYPETW + TYPEPW, ubyte, NULL, 0, NULL},
+	{"cancel", TYPETW + TYPEPW + TYPEMENU + TYPEQW, ucancel, NULL, 0, NULL},
+	{"cd", TYPETW, usetcd, NULL, 0, NULL},
+	{"center", TYPETW + TYPEPW + EFIXXCOL + EMOD, ucenter, NULL, 1, NULL},
+	{"charset", TYPETW + TYPEPW, ucharset, NULL, 0, NULL}, 
+	{"ctrl", TYPETW + TYPEPW + EMOD, uctrl, NULL, 0, NULL},
+	{"col", TYPETW + TYPEPW, ucol, NULL, 0, NULL},
+	{"complete", TYPEPW + EMINOR + EMOD, ucmplt, NULL, 0, NULL},
+	{"copy", TYPETW + TYPEPW, ucopy, NULL, 0, NULL},
+	{"crawll", TYPETW + TYPEPW, ucrawll, NULL, 1, "crawlr"},
+	{"crawlr", TYPETW + TYPEPW, ucrawlr, NULL, 1, "crawll"},
+	{"defmdown", TYPETW+TYPEPW+TYPEQW+TYPEMENU, udefmdown, 0, 0, 0 },
+	{"defmup", TYPETW+TYPEPW, udefmup, 0, 0, 0 },
+	{"defmdrag", TYPETW+TYPEPW, udefmdrag, 0, 0, 0 },
+	{"defm2down", TYPETW+TYPEPW+TYPEMENU, udefm2down, 0, 0, 0 },
+	{"defm2up", TYPETW+TYPEPW, udefm2up, 0, 0, 0 },
+	{"defm2drag", TYPETW+TYPEPW, udefm2drag, 0, 0, 0 },
+	{"defm3down", TYPETW+TYPEPW, udefm3down, 0, 0, 0 },
+	{"defm3up", TYPETW+TYPEPW, udefm3up, 0, 0, 0 },
+	{"defm3drag", TYPETW+TYPEPW, udefm3drag, 0, 0, 0 },
+	{"defmrdown", TYPETW+TYPEPW, udefmrdown, 0, 0, 0 },
+	{"defmrup", TYPETW+TYPEPW, udefmrup, 0, 0, 0 },
+	{"defmrdrag", TYPETW+TYPEPW, udefmrdrag, 0, 0, 0 },
+	{"defmmdown", TYPETW+TYPEPW, udefmmdown, 0, 0, 0 },
+	{"defmmup", TYPETW+TYPEPW, udefmmup, 0, 0, 0 },
+	{"defmmdrag", TYPETW+TYPEPW, udefmmdrag, 0, 0, 0 },
+	{"delbol", TYPETW + TYPEPW + EFIXXCOL + EKILL + EMOD, udelbl, NULL, 1, "deleol"},
+	{"delch", TYPETW + TYPEPW + ECHKXCOL + EFIXXCOL + EMINOR + EKILL + EMOD, udelch, NULL, 1, "backs"},
+	{"deleol", TYPETW + TYPEPW + EKILL + EMOD, udelel, NULL, 1, "delbol"}, 
+	{"dellin", TYPETW + TYPEPW + EFIXXCOL + EKILL + EMOD, udelln, NULL, 1, NULL}, 
+	{"delw", TYPETW + TYPEPW + EFIXXCOL + ECHKXCOL + EKILL + EMOD, u_word_delete, NULL, 1, "backw"},
+	{"dnarw", TYPETW + TYPEPW + EMOVE, udnarw, NULL, 1, "uparw"},
+	{"dnarwmenu", TYPEMENU, umdnarw, NULL, 1, "uparwmenu"}, 
+	{"dnslide", TYPETW + TYPEPW + TYPEMENU + TYPEQW + EMOVE, udnslide, NULL, 1, "upslide"},
+	{"dnslidemenu", TYPEMENU, umscrdn, NULL, 1, "upslidemenu"},
+	{"drop", TYPETW + TYPEPW, udrop, NULL, 0, NULL},
+	{"dupw", TYPETW, uduptw, NULL, 0, NULL},
+	{"edit", TYPETW, uedit, NULL, 0, NULL},
+	{"else", TYPETW+TYPEPW+TYPEMENU+TYPEQW+EMETA, uelse, 0, 0, 0 },
+	{"elsif", TYPETW+TYPEPW+TYPEMENU+TYPEQW+EMETA, uelsif, 0, 0, 0 },
+	{"endif", TYPETW+TYPEPW+TYPEMENU+TYPEQW+EMETA, uendif, 0, 0, 0 },
+	{"eof", TYPETW + TYPEPW + EFIXXCOL + EMOVE, u_goto_eof, NULL, 0, NULL},
+	{"eofmenu", TYPEMENU, umeof, NULL, 0, NULL},
+	{"eol", TYPETW + TYPEPW + EFIXXCOL, u_goto_eol, NULL, 0, NULL},
+	{"eolmenu", TYPEMENU, umeol, NULL, 0, NULL},
+	{"eop", TYPETW + TYPEPW + EFIXXCOL, ueop, NULL, 1, "bop"},
+	{"execmd", TYPETW + TYPEPW, uexecmd, NULL, 0, NULL},
+	{"explode", TYPETW + TYPEPW + TYPEMENU + TYPEQW, uexpld, NULL, 0, NULL},
+	{"exsave", TYPETW + TYPEPW, uexsve, NULL, 0, NULL},
+	{"extmouse", TYPETW+TYPEPW+TYPEMENU+TYPEQW, uextmouse, 0, 0, 0 },
+	{"ffirst", TYPETW + TYPEPW, pffirst, NULL, 0, NULL},
+	{"filt", TYPETW + TYPEPW + EMOD + EBLOCK, ufilt, NULL, 0, NULL},
+	{"finish", TYPETW + TYPEPW + EMOD, ufinish, NULL, 1, NULL},
+	{"fnext", TYPETW + TYPEPW, pfnext, NULL, 1, NULL},
+	{"format", TYPETW + TYPEPW + EFIXXCOL + EMOD, uformat, NULL, 1, NULL},
+	{"fmtblk", TYPETW + EMOD + EFIXXCOL + EBLOCK, ufmtblk, NULL, 1, NULL},
+	{"fwrdc", TYPETW + TYPEPW, ufwrdc, NULL, 1, "bkwdc"},
+	{"gomark", TYPETW + TYPEPW + EMOVE, ugomark, NULL, 0, NULL},
+	{"gparse", TYPETW, ugparse, NULL, 0, NULL},
+	{"grep", TYPETW, ugrep, NULL, 0, NULL},
+	{"groww", TYPETW+TYPEPW, ugroww, NULL, 1, "shrinkw"},
+	{"if", TYPETW+TYPEPW+TYPEMENU+TYPEQW+EMETA, uif, 0, 0, 0 },
+	{"isrch", TYPETW + TYPEPW, uisrch, NULL, 0, NULL},
+	{"jump", TYPETW, ujump, NULL, 0, NULL },
+	{"killjoe", TYPETW + TYPEPW + TYPEMENU + TYPEQW, ukilljoe, NULL, 0, NULL},
+	{"killproc", TYPETW + TYPEPW, ukillpid, NULL, 0, NULL},
+	{"help", TYPETW + TYPEPW + TYPEQW, u_help, NULL, 0, NULL},
+	{"home", TYPETW + TYPEPW + EFIXXCOL, uhome, NULL, 0, NULL},
+	{"hnext", TYPETW + TYPEPW + TYPEQW, u_help_next, NULL, 0, NULL},
+	{"hprev", TYPETW + TYPEPW + TYPEQW, u_help_prev, NULL, 0, NULL},
+	{"insc", TYPETW + TYPEPW + EFIXXCOL + EMOD, uinsc, NULL, 1, "delch"},
+	{"keymap", TYPETW, ukeymap, 0, 0, 0 },    /* JM */
+	{"insf", TYPETW + TYPEPW + EMOD, uinsf, NULL, 0, NULL}, 
+	{"language", TYPETW + TYPEPW, ulanguage, NULL, 0, NULL}, 
+	{"lindent", TYPETW + TYPEPW + EFIXXCOL + EMOD + EBLOCK, ulindent, NULL, 1, "rindent"},
+	{"line", TYPETW + TYPEPW, uline, NULL, 0, NULL},
+	{"lose", TYPETW + TYPEPW, ulose, NULL, 0, NULL}, 
+	{"lower", TYPETW + TYPEPW + EMOD + EBLOCK, ulower, NULL, 0, NULL},
+	{"ltarw", TYPETW + TYPEPW /* + EFIXXCOL + ECHKXCOL */, u_goto_left, NULL, 1, "rtarw"},
+	{"ltarwmenu", TYPEMENU, umltarw, NULL, 1, "rtarwmenu"},
+	{"macros", TYPETW + EFIXXCOL, umacros, NULL, 0, NULL},
+	{"debug_joe", TYPETW + EFIXXCOL, udebug_joe, NULL, 0, NULL},
+	{"markb", TYPETW + TYPEPW, umarkb, NULL, 0, NULL},
+	{"markk", TYPETW + TYPEPW, umarkk, NULL, 0, NULL},
+	{"markl", TYPETW + TYPEPW, umarkl, NULL, 0, NULL},
+	{"math", TYPETW + TYPEPW, umath, NULL, 0, NULL},
+	{"maths", TYPETW + TYPEPW, usmath, NULL, 0, NULL},
+	{"menu", TYPETW + TYPEPW + TYPEQW, umenu, NULL, 0, NULL},
+	{"mode", TYPETW + TYPEPW + TYPEQW, umode, NULL, 0, NULL},
+	{"msg", TYPETW + TYPEPW + TYPEQW + TYPEMENU, umsg, NULL, 0, NULL},
+	{"mfit", TYPETW, umfit, NULL, 0, NULL},
+	{"mwind", TYPETW, umwind, NULL, 0, NULL},
+	{"name", TYPETW + TYPEPW, uname_joe, NULL, 0, NULL}, 
+	{"nbuf", TYPETW + EFIXXCOL, unbuf, NULL, 1, "pbuf"},
+	{"nedge", TYPETW + TYPEPW + EFIXXCOL, unedge, NULL, 1, "pedge"}, 
+	{"nextpos", TYPETW + TYPEPW + EFIXXCOL + EMID + EPOS, unextpos, NULL, 1, "prevpos"}, 
+	{"nextw", TYPETW + TYPEPW + TYPEMENU + TYPEQW, unextw, NULL, 1, "prevw"},
+	{"nextword", TYPETW + TYPEPW + EFIXXCOL, u_goto_next, NULL, 1, "prevword"},
+	{"nmark", TYPETW + TYPEPW, unmark, NULL, 0, NULL},
+	{"notmod", TYPETW, unotmod, NULL, 0, NULL},
+	{"nxterr", TYPETW, unxterr, NULL, 1, "prverr"},
+	{"open", TYPETW + TYPEPW + EFIXXCOL + EMOD, uopen, NULL, 1, "deleol"},
+	{"parserr", TYPETW, uparserr, NULL, 0, NULL},
+	{"paste", TYPETW + TYPEPW + EMOD, upaste, NULL, 0, NULL },
+	{"pbuf", TYPETW + EFIXXCOL, upbuf, NULL, 1, "nbuf"},
+	{"pedge", TYPETW + TYPEPW + EFIXXCOL, upedge, NULL, 1, "nedge"}, 
+	{"pgdn", TYPETW + TYPEPW + TYPEMENU + TYPEQW + EMOVE, upgdn, NULL, 1, "pgup"},
+	{"pgdnmenu", TYPEMENU, umpgdn, NULL, 1, "pgupmenu"}, 
+	{"pgup", TYPETW + TYPEPW + TYPEMENU + TYPEQW + EMOVE, upgup, NULL, 1, "pgdn"},
+	{"pgupmenu", TYPEMENU, umpgup, NULL, 1, "pgdnmenu"}, 
+	{"picokill", TYPETW + TYPEPW + EFIXXCOL + EKILL + EMOD, upicokill, NULL, 1, NULL},
+	{"play", TYPETW + TYPEPW + TYPEMENU + TYPEQW, uplay, NULL, 1, NULL},	/* EFIXX? */ 
+	{"prevpos", TYPETW + TYPEPW + EPOS + EMID + EFIXXCOL, uprevpos, NULL, 1, "nextpos"}, 
+	{"prevw", TYPETW + TYPEPW + TYPEMENU + TYPEQW, uprevw, NULL, 1, "nextw"}, 
+	{"prevword", TYPETW + TYPEPW + EFIXXCOL + ECHKXCOL, u_goto_prev, NULL, 1, "nextword"},
+	{"prverr", TYPETW, uprverr, NULL, 1, "nxterr"},
+	{"psh", TYPETW + TYPEPW + TYPEMENU + TYPEQW, upsh, NULL, 0, NULL},
+	{"pop", TYPETW + TYPEPW + TYPEMENU + TYPEQW, upop, NULL, 0, NULL},
+	{"popabort", TYPETW + TYPEPW + TYPEMENU + TYPEQW, upopabort, NULL, 0, NULL},
+	{"qrepl", TYPETW + TYPEPW + EMOD, pqrepl, NULL, 0, NULL},
+	{"query", TYPETW + TYPEPW + TYPEMENU + TYPEQW, uquery, NULL, 0, NULL},
+	{"querysave", TYPETW, uquerysave, NULL, 0, NULL},
+	{"quote", TYPETW + TYPEPW + EMOD, uquote, NULL, 0, NULL},
+	{"quote8", TYPETW + TYPEPW + EMOD, uquote8, NULL, 0, NULL},
+	{"record", TYPETW + TYPEPW + TYPEMENU + TYPEQW, urecord, NULL, 0, NULL},
+	{"redo", TYPETW + TYPEPW + EFIXXCOL, uredo, NULL, 1, "undo"},
+	{"release", TYPETW, urelease, NULL, 0, NULL},
+	{"reload", TYPETW, ureload, NULL, 0, NULL },
+	{"reloadall", TYPETW, ureload_all, NULL, 0, NULL },
+	{"retype", TYPETW + TYPEPW + TYPEMENU + TYPEQW, uretyp, NULL, 0, NULL},
+	{"rfirst", TYPETW + TYPEPW, prfirst, NULL, 0, NULL}, 
+	{"rindent", TYPETW + TYPEPW + EFIXXCOL + EMOD + EBLOCK, urindent, NULL, 1, "lindent"},
+	{"run", TYPETW + TYPEPW, urun, NULL, 0, NULL},
+	{"rsrch", TYPETW + TYPEPW, ursrch, NULL, 0, NULL},
+	{"rtarw", TYPETW + TYPEPW /* + EFIXXCOL */, u_goto_right, NULL, 1, "ltarw"}, /* EFIX removed for picture mode */
+	{"rtarwmenu", TYPEMENU, umrtarw, NULL, 1, "ltarwmenu"},
+	{"rtn", TYPETW + TYPEPW + TYPEMENU + TYPEQW + EMOD, urtn, NULL, 1, NULL},
+	{"save", TYPETW + TYPEPW, usave, NULL, 0, NULL},
+	{"savenow", TYPETW + TYPEPW, usavenow, NULL, 0, NULL},
+	{"scratch", TYPETW + TYPEPW, uscratch, NULL, 0, NULL},
+	{"scratch_push", TYPETW + TYPEPW, uscratch_push, NULL, 0, NULL},
+	{"secure_type", TYPEPW + TYPEQW + TYPEMENU + EMINOR + EMOD, utype, NULL, 1, "backs"},
+	{"select", TYPETW + TYPEPW, uselect, NULL, 0, NULL},
+	{"setmark", TYPETW + TYPEPW, usetmark, NULL, 0, NULL},
+	{"shell", TYPETW + TYPEPW + TYPEMENU + TYPEQW, ushell, NULL, 0, NULL},
+	{"showerr", TYPETW + TYPEPW, ucurrent_msg, NULL, 0, NULL},
+	{"showlog", TYPETW, ushowlog, NULL, 0, NULL},
+	{"shrinkw", TYPETW, ushrnk, NULL, 1, "groww"},
+	{"splitw", TYPETW, usplitw, NULL, 0, NULL},
+	{"stat", TYPETW + TYPEPW, ustat, NULL, 0, NULL},
+	{"stop", TYPETW + TYPEPW + TYPEMENU + TYPEQW, ustop, NULL, 0, NULL},
+	{"swap", TYPETW + TYPEPW + EFIXXCOL, uswap, NULL, 0, NULL},
+	{"switch", TYPETW + TYPEPW, uswitch, NULL, 0, NULL},
+	{"sys", TYPETW + TYPEPW, usys, NULL, 0, NULL },
+	{"tabmenu", TYPEMENU, umtab, NULL, 1, "ltarwmenu"},
+	{"tag", TYPETW + TYPEPW, utag, NULL, 0, NULL},
+	{"tagjump", TYPETW + TYPEPW, utagjump, NULL, 0, NULL},
+	{"toggle_marking", TYPETW + TYPEPW, utoggle_marking, NULL, 0, NULL},
+	{"then", TYPEPW+EMOD, urtn, 0, 0, 0 },
+	{"timer", TYPETW + TYPEPW + TYPEMENU + TYPEQW, utimer, NULL, 1, NULL},
+	{"tomarkb", TYPETW + TYPEPW + EFIXXCOL + EBLOCK, utomarkb, NULL, 0, NULL},
+	{"tomarkbk", TYPETW + TYPEPW + EFIXXCOL + EBLOCK, utomarkbk, NULL, 0, NULL},
+	{"tomarkk", TYPETW + TYPEPW + EFIXXCOL + EBLOCK, utomarkk, NULL, 0, NULL},
+	{"tomatch", TYPETW + TYPEPW + EFIXXCOL, utomatch, NULL, 0, NULL},
+	{"tomouse", TYPETW+TYPEPW+TYPEQW+TYPEMENU, utomouse, 0, 0, 0 },
+	{"tos", TYPETW + TYPEPW + EMOVE, utos, NULL, 0, NULL},
+	{"tw0", TYPETW + TYPEPW + TYPEQW + TYPEMENU, utw0, NULL, 0, NULL},
+	{"tw1", TYPETW + TYPEPW + TYPEQW + TYPEMENU, utw1, NULL, 0, NULL},
+	{"txt", TYPETW + TYPEPW, utxt, NULL, 0, NULL}, 
+	{"type", TYPETW + TYPEPW + TYPEQW + TYPEMENU + EMINOR + EMOD, utype, NULL, 1, "backs"},
+	{"undo", TYPETW + TYPEPW + EFIXXCOL, uundo, NULL, 1, "redo"},
+	{"uparw", TYPETW + TYPEPW + EMOVE, uuparw, NULL, 1, "dnarw"},
+	{"uparwmenu", TYPEMENU, umuparw, NULL, 1, "dnarwmenu"}, 
+	{"upper", TYPETW + TYPEPW + EMOD + EBLOCK, uupper, NULL, 0, NULL},
+	{"upslide", TYPETW + TYPEPW + TYPEMENU + TYPEQW + EMOVE, uupslide, NULL, 1, "dnslide"},
+	{"upslidemenu", TYPEMENU, umscrup, NULL, 1, "dnslidemenu"},
+	{"vtbknd", TYPETW, uvtbknd, NULL, 0, NULL},
 #ifdef JOEWIN
-	{USTR "winblkcpy", TYPETW + TYPEPW + EFIXXCOL + EMOD + EBLOCK, uwinblkcpy, NULL, 0, NULL},
-	{USTR "wincontext", TYPETW + TYPEPW + TYPEQW + TYPEMENU, uwincontext, NULL, 0, NULL},
-	{USTR "wincopy", TYPETW + TYPEPW + EBLOCK, uwincopy, NULL, 0, NULL},
-	{USTR "winrawvt", TYPETW + TYPEPW, uwinrawvt, NULL, 0, NULL },
-	{USTR "winpaste", TYPETW + TYPEPW + EFIXXCOL + EMOD + EBLOCK, uwinpaste, NULL, 0, NULL},
+	{"winblkcpy", TYPETW + TYPEPW + EFIXXCOL + EMOD + EBLOCK, uwinblkcpy, NULL, 0, NULL},
+	{"wincontext", TYPETW + TYPEPW + TYPEQW + TYPEMENU, uwincontext, NULL, 0, NULL},
+	{"wincopy", TYPETW + TYPEPW + EBLOCK, uwincopy, NULL, 0, NULL},
+	{"winrawvt", TYPETW + TYPEPW, uwinrawvt, NULL, 0, NULL },
+	{"winpaste", TYPETW + TYPEPW + EFIXXCOL + EMOD + EBLOCK, uwinpaste, NULL, 0, NULL},
 #endif
-	{USTR "upslidemenu", TYPEMENU, umscrup, NULL, 1, USTR "dnslidemenu"},
-	{USTR "vtbknd", TYPETW, uvtbknd, NULL, 0, NULL},
-	{USTR "xtmouse", TYPETW+TYPEPW+TYPEMENU+TYPEQW, uxtmouse, 0, 0, 0 },
-	{USTR "yank", TYPETW + TYPEPW + EFIXXCOL + EMOD, uyank, NULL, 1, NULL},
-	{USTR "yapp", TYPETW + TYPEPW + EKILL, uyapp, NULL, 0, NULL},
-	{USTR "yankpop", TYPETW + TYPEPW + EFIXXCOL + EMOD, uyankpop, NULL, 1, NULL}
+	{"xtmouse", TYPETW+TYPEPW+TYPEMENU+TYPEQW, uxtmouse, 0, 0, 0 },
+	{"yank", TYPETW + TYPEPW + EFIXXCOL + EMOD, uyank, NULL, 1, NULL},
+	{"yapp", TYPETW + TYPEPW + EKILL, uyapp, NULL, 0, NULL},
+	{"yankpop", TYPETW + TYPEPW + EFIXXCOL + EMOD, uyankpop, NULL, 1, NULL}
 };
 
 /* Steal Lock dialog */
@@ -239,9 +240,9 @@
 #define LOCKMSG2 _("Could not create lock. (I) edit anyway, (Q) cancel edit? ")
 #define LOCKMSG1 _("Locked by %s. (S)teal lock, (I) edit anyway, (Q) cancel edit? ")
 
-unsigned char *steallock_key= (unsigned char *) _("|steal the lock|sS");
-unsigned char *canceledit_key= (unsigned char *) _("|cancel edit due to lock|qQ");
-unsigned char *ignorelock_key= (unsigned char *) _("|ignore lock, continue with edit|iI");
+const char *steallock_key= _("|steal the lock|sS");
+const char *canceledit_key= _("|cancel edit due to lock|qQ");
+const char *ignorelock_key=  _("|ignore lock, continue with edit|iI");
 
 /* Try to lock: start dialog if we can't.  Returns 0 if we couldn't lock */
 
@@ -250,8 +251,8 @@
 	/* First time we modify the file */
 	/* If we're a plain file, acquire lock */
 	if (!nolocks && plain_file(b)) {
-		unsigned char bf1[256];
-		unsigned char bf[300];
+		char bf1[256];
+		char bf[300];
 		int x;
 		/* It's a plain file- try to lock it */
 		while (lock_it(b->name,bf1)) {
@@ -259,9 +260,9 @@
 			for(x=0;bf1[x] && bf1[x]!=':';++x);
 			bf1[x]=0;
 			if(bf1[0])
-				joe_snprintf_1(bf,sizeof(bf),joe_gettext(LOCKMSG1),bf1);
+				joe_snprintf_1(bf,SIZEOF(bf),joe_gettext(LOCKMSG1),bf1);
 			else
-				joe_snprintf_0(bf, sizeof(bf), joe_gettext(LOCKMSG2));
+				joe_snprintf_0(bf, SIZEOF(bf), joe_gettext(LOCKMSG2));
 			c = query(bw->parent, sz(bf), QW_NOMACRO); /* This should not take input from macro */
 			if (c == -1)
 				return 0;
@@ -309,7 +310,7 @@
 			}
 			b->didfirst = 1;
 			if (bw->o.mfirst)
-				exmacro(bw->o.mfirst,1);
+				exmacro(bw->o.mfirst, 1, NO_MORE_DATA);
 #ifdef JOEWIN
 			notify_changed_buffer(b);
 #endif
@@ -327,7 +328,7 @@
 		if (!b->didfirst) {
 			b->didfirst = 1;
 			if (bw->o.mfirst)
-				exmacro(bw->o.mfirst,1);
+				exmacro(bw->o.mfirst, 1, NO_MORE_DATA);
 #ifdef JOEWIN
 			notify_changed_buffer(b);
 #endif
@@ -351,7 +352,7 @@
 
 int call_cmd(va_list args)
 {
-	unsigned char *gc;
+	char *gc;
 	int rtn;
 	cmd_func_t *func;
 	void *obj;
@@ -375,18 +376,18 @@
 	/* Warning: bw is a BW * only if maint->curwin->watom->what &
 	    (TYPETW|TYPEPW) */
 
-#if junk
+#ifdef junk
 	/* Send data to shell window: this is broken ^K ^H (help) sends its ^H to shell */
 	if ((maint->curwin->watom->what & TYPETW) && bw->b->pid && !bw->b->vt && piseof(bw->cursor) &&
 	(k==3 || k==9 || k==13 || k==8 || k==127 || k==4 || (cmd->func==utype /* && k>=32 && k<256 */))) {
-		unsigned char c = k;
+		char c = k;
 		writempx(bw->b->out, &c, 1);
 		return 0;
 	}
 #endif
 
 	if (cmd->m) {
-		ret = exmacro(cmd->m, 0);
+		ret = exmacro(cmd->m, 0, NO_MORE_DATA);
 		return ret;
 	}
 
@@ -405,7 +406,7 @@
 
 	/* Complete selection for block commands */
 	if ((cmd->flag & EBLOCK) && nowmarking)
-		utoggle_marking(maint->curwin->object);
+		utoggle_marking(maint->curwin, 0);
 
 	/* We are about to modify the file */
 	if ((maint->curwin->watom->what & TYPETW) && (cmd->flag & EMOD)) {
@@ -414,8 +415,7 @@
 	}
 
 	/* Execute command */
-	ret = co_call(call_cmd, cmd->func, maint->curwin->object, k);
-	/* ret = cmd->func(maint->curwin->object, k); */
+	ret = co_call(call_cmd, cmd->func, maint->curwin, k);
 
 	if (smode)
 		--smode;
@@ -455,11 +455,11 @@
 
 	/* Recenter cursor to middle of screen */
 	if (cmd->flag & EMID) {
-		int omid = mid;
-
-		mid = 1;
+		int omid = opt_mid;
+
+		opt_mid = 1;
 		dofollows();
-		mid = omid;
+		opt_mid = omid;
 	}
 
 	if (joe_beep && ret)
@@ -473,9 +473,9 @@
 	static CMD *scrdn = 0;
 	static CMD *drag = 0;
 	if (!scrup) {
-		scrup = findcmd(USTR "upslide");
-		scrdn = findcmd(USTR "dnslide");
-		drag = findcmd(USTR "defmdrag");
+		scrup = findcmd("upslide");
+		scrdn = findcmd("dnslide");
+		drag = findcmd("defmdrag");
 	}
 	if (auto_scroll > 0)
 		execmd(scrdn,0);
@@ -496,20 +496,20 @@
 	int x;
 
 	cmdhash = htmk(256);
-	for (x = 0; x != sizeof(cmds) / sizeof(CMD); ++x)
+	for (x = 0; x != SIZEOF(cmds) / SIZEOF(CMD); ++x)
 		htadd(cmdhash, cmds[x].name, cmds + x);
 }
 
-CMD *findcmd(unsigned char *s)
+CMD *findcmd(const char *s)
 {
 	if (!cmdhash)
 		izcmds();
 	return (CMD *) htfind(cmdhash, s);
 }
 
-void addcmd(unsigned char *s, MACRO *m)
-{
-	CMD *cmd = (CMD *) joe_malloc(sizeof(CMD));
+void addcmd(const char *s, MACRO *m)
+{
+	CMD *cmd = (CMD *) joe_malloc(SIZEOF(CMD));
 
 	if (!cmdhash)
 		izcmds();
@@ -522,9 +522,9 @@
 	htadd(cmdhash, cmd->name, cmd);
 }
 
-static unsigned char **getcmds(void)
-{
-	unsigned char **s = vaensure(NULL, sizeof(cmds) / sizeof(CMD));
+static char **getcmds(void)
+{
+	char **s = vaensure(NULL, SIZEOF(cmds) / SIZEOF(CMD));
 	int x;
 	HENTRY *e;
 
@@ -537,9 +537,9 @@
 
 /* Command line */
 
-unsigned char **scmds = NULL;	/* Array of command names */
-
-static int cmdcmplt(BW *bw)
+char **scmds = NULL;	/* Array of command names */
+
+static int cmdcmplt(BW *bw, int k)
 {
 	if (!scmds) {
 		scmds = getcmds();
@@ -550,19 +550,24 @@
 
 B *cmdhist = NULL;
 
-int uexecmd(BW *bw)
-{
+int uexecmd(W *w, int k)
+{
+	BW *bw;
 	MACRO *mac;
-	int ret = -1;
-	unsigned char *s = ask(bw->parent, joe_gettext(USTR _("Command: ")),
-	&cmdhist, USTR _("cmd"), cmdcmplt, locale_map, 0, 0, NULL);
-
+	ptrdiff_t ret = -1;
+	char *s;
+
+	WIND_BW(bw, w);
+	
+	s = ask(w, joe_gettext(_("Command: ")),
+		&cmdhist, _("cmd"), cmdcmplt, utf8_map, 0, 0, NULL);
+	
 	if (s) {
 		mac = mparse(NULL, s, &ret, 0);
 		if (ret < 0 || !mac) {
 			msgnw(bw->parent, joe_gettext(_("No such command")));
 		} else {
-			ret = exmacro(mac, 1);
+			ret = exmacro(mac, 1, NO_MORE_DATA);
 			rmmacro(mac);
 		}
 	}
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.