From: NeilBrown Date: Mon, 21 Aug 2023 11:41:18 +0000 (+1000) Subject: Introduce "Cancel" commands - K:ESC in emacs X-Git-Url: http://git.neil.brown.name/?a=commitdiff_plain;h=e23281fcd3394ee2b905f67948b3f653905817f7;p=edlib.git Introduce "Cancel" commands - K:ESC in emacs "Cancel" is like "Abort", but softer. Currently it cancels any active selection. Signed-off-by: NeilBrown --- diff --git a/DOC/TODO.md b/DOC/TODO.md index 7b050d87..b172e273 100644 --- a/DOC/TODO.md +++ b/DOC/TODO.md @@ -52,6 +52,7 @@ the file. - [ ] history doesn't restore initial default (or empty) string when returning after excursion into history or favourites. - [ ] how can we save history-favourites back to a config file? +- [X] K:ESC should cancel any current selection. ### Small diff --git a/DOC/render-control b/DOC/render-control index 90ffac5e..23cdf201 100644 --- a/DOC/render-control +++ b/DOC/render-control @@ -200,7 +200,7 @@ Several pane attributes can affect the pane as a whole: - "scale" - width/height values to aim for - in "points" which are 1/10 for an M e.g. if 800x240, then text is scaled so that at least 80 M's fit across, and 24 M's fit down. - - "render-wrap" - if define by not "yes", don't wrap long lines, else shift left to + - "render-wrap" - if define but not "yes", don't wrap long lines, else shift left to fit cursor on pane. - "prefix" - text to place at start of each line. This can be used as a prompt in a dialogue box. diff --git a/emacs-search.c b/emacs-search.c index ab06c597..f702b389 100644 --- a/emacs-search.c +++ b/emacs-search.c @@ -669,7 +669,7 @@ static void emacs_search_init_map(void) key_add(es_map, "K:A-r", &search_replace); key_add(es_map, "K:S:Tab", &search_replace); key_add(es_map, "K:A-%", &search_replace); - key_add(es_map, "K:ESC", &search_escape); + key_add(es_map, "Cancel", &search_escape); key_add(es_map, "search:replace", &do_replace); key_add(es_map, "Notify:Close", &search_notify_close); @@ -683,7 +683,7 @@ static void emacs_search_init_map(void) key_add(er_map, "K:C-S", &replace_forward); key_add(er_map, "K:C-R", &replace_forward); key_add(er_map, "K:C-L", &replace_forward); - key_add(er_map, "K:ESC", &replace_escape); + key_add(er_map, "Cancel", &replace_escape); key_add(er_map, "K:Up", &replace_prev); key_add(er_map, "K:Down", &replace_next); key_add(er_map, "doc:reundo", &replace_undo); diff --git a/lib-menu.c b/lib-menu.c index 2c9625f1..f21ec370 100644 --- a/lib-menu.c +++ b/lib-menu.c @@ -125,7 +125,7 @@ static void menu_init_map(void) key_add(menu_map, "render:reposition", &menu_reposition); key_add(menu_map, "menu-add", &menu_add); - key_add(menu_map, "K:ESC", &menu_abort); + key_add(menu_map, "Cancel", &menu_abort); key_add(menu_map, "K:Enter", &menu_done); key_add(menu_map, "menu-select", &menu_done); } diff --git a/mode-emacs.c b/mode-emacs.c index 793c3fb3..389c18bf 100644 --- a/mode-emacs.c +++ b/mode-emacs.c @@ -543,6 +543,7 @@ static struct simple_command { {CMD(emacs_simple), "lib-server:done", "K:CX-#"}, {CMD(emacs_simple), "mode-swap-mark", "K:CX:C-X"}, {CMD(emacs_simple), "Abort", "K:C-G"}, + {CMD(emacs_simple), "Cancel", "K:ESC"}, {CMD(emacs_simple), "NOP", "K:A-G"}, {CMD(emacs_simple), "NOP", "K:CX:C-G"}, {CMD(emacs_simple), "NOP", "K:CX4:C-G"}, @@ -3259,7 +3260,6 @@ DEF_CMD(emacs_quote) return 1; } -DEF_PFX_CMD(alt_cmd, ":A"); DEF_PFX_CMD(cx_cmd, ":CX"); DEF_PFX_CMD(cx4_cmd, ":CX4"); DEF_PFX_CMD(cx5_cmd, ":CX5"); @@ -3275,7 +3275,6 @@ static void emacs_init(void) if (emacs_map) return; m = key_alloc(); - key_add(m, "K:ESC", &alt_cmd.c); key_add(m, "K:C-X", &cx_cmd.c); key_add(m, "K:CX-4", &cx4_cmd.c); /* C-\ is generated by C-4. Weird... */ @@ -3385,6 +3384,7 @@ static void emacs_init(void) key_add(m, "mode-set-mark", &emacs_mark); key_add(m, "mode-swap-mark", &emacs_swap_mark); key_add(m, "Abort", &emacs_abort); + key_add(m, "Cancel", &emacs_abort); key_add(m, "K:C-W", &emacs_wipe); key_add(m, "K:A-w", &emacs_copy); key_add(m, "K:C-Y", &emacs_yank); diff --git a/tests.d/00-basic b/tests.d/00-basic index 7c8cfff4..27eeea41 100644 --- a/tests.d/00-basic +++ b/tests.d/00-basic @@ -444,136 +444,125 @@ Display 80,30 24C4E65F2513F6FFC77B0F11C5BF714B 61,2 Key ":ESC" Display 80,30 CD11F3189ACF483C830F2B16FF4CAB57 29,20 Key ":ESC" -Display 80,30 B43C3BD308C084CDC7E3AF4847642B0A 29,20 Key ":C-S" -Display 80,30 CD11F3189ACF483C830F2B16FF4CAB57 29,20 -Key "-h" -Display 80,30 BA04BB1B4F5999462112F3D1A54946C9 30,20 -Key "-a" -Display 80,30 AC45C4ECAA0F743173158C23E5BCAF52 31,20 -Key "-n" -Display 80,30 AD9E028031179F77F4D6D614F5B54E4E 32,20 -Key "-d" -Display 80,30 C1EA05C5522D14D27DC426FFAFB73A42 33,20 -Key ":C-S" -Display 80,30 0487C9F5A9131431D147ABCC5CFC97FC 50,0 +Display 80,30 78EC5FD7DD6F5BFD5ADB3101BCDAC91C 50,0 Key "-h" -Display 80,30 44EFDBD0C887AD83BE48B6DF7F60E8D6 51,0 -Display 80,30 F9F18834AFDE5A9663994809A46544E9 51,0 +Display 80,30 AA52D6A21B46D8259E6E6B740CAD43BA 51,0 +Display 80,30 B7863D828348B7603B65834A537243F1 51,0 Key "-a" -Display 80,30 BF5B23F2FA7B0C43C7333A56E88CAE80 52,0 -Display 80,30 2C2E160F54BC9C6821DC847F4578EEAC 52,0 +Display 80,30 B0BCCE906B040CF4136B49B1368D6F23 52,0 +Display 80,30 6641D7EBB65B164CA88D232C30771ACF 52,0 Key "-n" -Display 80,30 4D4840EA8AC507534A1D8ECA6B081607 53,0 -Display 80,30 CA51C0C01A7E40DF109F165E14AD2E84 53,0 +Display 80,30 5E4E874BE950F3DAC3DDE05C34152D42 53,0 +Display 80,30 07BC6924FD976D51A797FAFF8C29284D 53,0 Key "-d" -Display 80,30 AFA467DFBE26652F38869289222C43E3 54,0 -Display 80,30 76F1F86FD2E3D50251B77E2014C58912 54,0 +Display 80,30 ABE68EE9126A08197984D8540CF4CDDD 54,0 +Display 80,30 AD393DE18DB585EA2BF710324E0AA51C 54,0 Key "-l" -Display 80,30 12538496A651D35E62BCD2CF5BFB0CB5 55,0 -Display 80,30 217FFAC910F7D466E821D5678FDD3224 55,0 +Display 80,30 1436B829F71B5A78D6642F73642F9DDC 55,0 +Display 80,30 6FCFD8EE6ACBF8367D8645C623ED8940 55,0 Key "-e" -Display 80,30 1D32244F5F19DCEB8FA917947DF61E74 56,0 -Display 80,30 C80B5FBEF3907721BAA014AFCC26E364 56,0 +Display 80,30 505C009328E817FD81F2A0159001BE1A 56,0 +Display 80,30 3A3928F44756187453DA87E8DCB6692B 56,0 Key ":C-R" -Display 80,30 D002A8BA7E31F2BCFC3204250B92C2CD 64,0 -Display 80,30 ADB08C1FDADAF0261CD3353D72A50192 64,0 +Display 80,30 DDBCA015C84AE04872A324A395F8B210 64,0 +Display 80,30 3DE3330CAD918F3B5B91EB698D8F9338 64,0 Key ":C-R" -Display 80,30 949FA93EF5F18658C143102AD09049DE 64,0 -Display 80,30 ADB08C1FDADAF0261CD3353D72A50192 64,0 +Display 80,30 142D59F35E842FA87CF489A88ACEFF16 64,0 +Display 80,30 3DE3330CAD918F3B5B91EB698D8F9338 64,0 Key ":C-R" -Display 80,30 0AF0138010531830A4A88552A9C34F09 64,0 -Display 80,30 ADB08C1FDADAF0261CD3353D72A50192 64,0 +Display 80,30 B18814C779A6ABB78545B6B6BBDA2B74 64,0 +Display 80,30 3DE3330CAD918F3B5B91EB698D8F9338 64,0 Key ":C-R" -Display 80,30 7BB7E6356378CDF944FCD11769215E06 64,0 -Display 80,30 ADB08C1FDADAF0261CD3353D72A50192 64,0 +Display 80,30 7F2554B8F43EE26D6156DF250EC63A2D 64,0 +Display 80,30 3DE3330CAD918F3B5B91EB698D8F9338 64,0 Key ":C-R" -Display 80,30 AF259A0200510007F8076F9D3AE5A16D 64,0 -Display 80,30 ADB08C1FDADAF0261CD3353D72A50192 64,0 +Display 80,30 4C5F019BBC7389A0CDC78745EE8D230D 64,0 +Display 80,30 3DE3330CAD918F3B5B91EB698D8F9338 64,0 Key ":Enter" -Display 80,30 78AFB97EA34E94F5CBA3E460423ACF4E 39,12 +Display 80,30 A5753A3D8D18E66689253DD2B60C7BAF 39,12 Key ":C-X" -Display 80,30 010846B81B25D0115BE2E53EC7E79465 39,12 +Display 80,30 23AFDB765F096937C9346802F8BDBC24 39,12 Key "-3" -Display 80,30 47E4CB690A59F7B06365597DC37A521F 1,22 +Display 80,30 AC3150C970DDA6AF2F05C88EE25CF2A6 1,22 Key ":C-X" -Display 80,30 9189CDE9629243154556C41B51A35934 1,22 +Display 80,30 C0C0145B721DEDE73372B2E64C9CE6DB 1,22 Key "-2" -Display 80,30 49DECBFB2A41E29F2A4E3D11414E63CD 1,6 +Display 80,30 76D8E7BC878C6E77E3E0019C7E0FC1C6 1,6 Key ":C-X" -Display 80,30 B704A177DA5EB1C12A89E4BD1A733A5A 1,6 +Display 80,30 1C6CAB265E3F426643D9AD2B6F0ADFBF 1,6 Key "-3" -Display 80,30 1253E9C407D87A32FC4FE191F5A99670 5,11 +Display 80,30 343285DFAD744FA033363206B833D306 5,11 Key ":C-X" -Display 80,30 EC3ADB646947764A80526E3335BEF4DB 5,11 +Display 80,30 00FBBC835770DE77B539A7290EA40F96 5,11 Key "-1" -Display 80,30 B239318A0DD9E1855A5A26A3F691A514 1,5 +Display 80,30 549C1A67AC9581A34D72DA4E81EEDD49 1,5 Key "-1" -Display 80,30 7CE6F50089626122AA324DC3405B81D1 1,5 +Display 80,30 2DA9F6E10FA570E5CF456966C745799B 1,5 Key ":C-X" -Display 80,30 3F3E99E22F900FE80219C96345C56493 1,5 +Display 80,30 79D6C37AE399DAD5D90558D77282F6E9 1,5 Key "-0" -Display 80,30 D12F9B9766EA8C031BF7DA882F9D21BA 39,6 +Display 80,30 BFC9564FC49ADEABE49BFFF8EE0C0F7D 39,6 Key ":C-P" -Display 80,30 5FEA0CC4CA6227890AED740A6AC3AE74 39,5 +Display 80,30 4944E829825415A1144FC3DDD7A260B3 39,5 Key ":C-P" -Display 80,30 23DF7DA6DA46C95A60DA0E91ED9A3603 39,4 +Display 80,30 420B7830D5907468A6E6CE9C595C7EF0 39,4 Key ":C-P" -Display 80,30 A25D3E9C22A2ECAE5EA104E4C20B1057 39,3 +Display 80,30 B7DD99FCDC37460EEEAA3606229D1006 39,3 Key ":C-P" -Display 80,30 471C93E1490F5E15BDE12AD485D17022 1,2 +Display 80,30 4B3E0B8D9CED942689778F414EAA32E3 1,2 Key "- " -Display 80,30 471C93E1490F5E15BDE12AD485D17022 2,2 +Display 80,30 4B3E0B8D9CED942689778F414EAA32E3 2,2 Key "-i" -Display 80,30 EA584F30589CE18F25444073E4F8EFD1 3,2 +Display 80,30 0B2A00107E64B5074DE184875072FF49 3,2 Key "-n" -Display 80,30 2D9CAEBE0DF22BD1DF1340AD7BA1C0D7 4,2 +Display 80,30 925C9D1CF85B2CA0CAFB21C2CE4D06C3 4,2 Key "- " -Display 80,30 2D9CAEBE0DF22BD1DF1340AD7BA1C0D7 5,2 +Display 80,30 925C9D1CF85B2CA0CAFB21C2CE4D06C3 5,2 Key "-d" -Display 80,30 C01C4455F2633B3C64BDAC090E180FE4 6,2 +Display 80,30 B5AD21E865FB262F9FD072748856BF55 6,2 Key "-i" -Display 80,30 0DF174F50FDB948D787EC9B1988D5093 7,2 +Display 80,30 0420B5BF31D0708506627EF35749556E 7,2 Key "-s" -Display 80,30 A204F0C592E1A8AE814ED69C9E216D77 8,2 +Display 80,30 4C9EB6CB6F4DF7DD2A92B112A85E7330 8,2 Key "-p" -Display 80,30 19D2763584C949BA5D02F4F9AE57B0F2 9,2 +Display 80,30 FFB93A7B1E51162DABECE193B8E8AA78 9,2 Key ":A-/" -Display 80,30 A1E582F95603809A9E8DC276497C1A05 12,2 +Display 80,30 8D5DE59D884A3B90EE5A30CFF33E3AF4 12,2 Key ":A-/" -Display 80,30 CEB607FDD0638B06E07DA5E4ADBA26CD 5,3 +Display 80,30 38955E6783D09D8748DF996AFD8E70AD 5,3 Key ":Down" -Display 80,30 B377A99E826EB134A9FC79E3F1C65B4A 5,4 +Display 80,30 A50BFDC434495230FE5F0C8B8CD444AB 5,4 Key ":Down" -Display 80,30 B377A99E826EB134A9FC79E3F1C65B4A 5,5 +Display 80,30 A50BFDC434495230FE5F0C8B8CD444AB 5,5 Key ":Enter" -Display 80,30 230C36088D1C059C02EC5D312B554667 13,2 +Display 80,30 9748AF118093B2B55F454FC94FCDBB26 13,2 Key ":A:Backspace" -Display 80,30 2D9CAEBE0DF22BD1DF1340AD7BA1C0D7 5,2 +Display 80,30 925C9D1CF85B2CA0CAFB21C2CE4D06C3 5,2 Key "-d" -Display 80,30 C01C4455F2633B3C64BDAC090E180FE4 6,2 +Display 80,30 B5AD21E865FB262F9FD072748856BF55 6,2 Key "-i" -Display 80,30 0DF174F50FDB948D787EC9B1988D5093 7,2 +Display 80,30 0420B5BF31D0708506627EF35749556E 7,2 Key "-s" -Display 80,30 A204F0C592E1A8AE814ED69C9E216D77 8,2 +Display 80,30 4C9EB6CB6F4DF7DD2A92B112A85E7330 8,2 Key "- " -Display 80,30 A204F0C592E1A8AE814ED69C9E216D77 9,2 +Display 80,30 4C9EB6CB6F4DF7DD2A92B112A85E7330 9,2 Key "- " -Display 80,30 A204F0C592E1A8AE814ED69C9E216D77 10,2 +Display 80,30 4C9EB6CB6F4DF7DD2A92B112A85E7330 10,2 Key ":Backspace" -Display 80,30 A204F0C592E1A8AE814ED69C9E216D77 9,2 +Display 80,30 4C9EB6CB6F4DF7DD2A92B112A85E7330 9,2 Key ":Backspace" -Display 80,30 A204F0C592E1A8AE814ED69C9E216D77 8,2 +Display 80,30 4C9EB6CB6F4DF7DD2A92B112A85E7330 8,2 Key ":A-/" -Display 80,30 339EB5E1166F780D543CAAFD17373EE7 5,3 +Display 80,30 2AC6ADA9A5C59105FD1A9B73DE689D28 5,3 Key ":Down" -Display 80,30 22185AF34B819136D188663E549A62CC 5,4 +Display 80,30 EAF023AAFC12B73DBC1B820C63B5F0F5 5,4 Key ":Enter" -Display 80,30 0BDDE97F395CADE8D323D2FA282014DA 19,2 +Display 80,30 0B6390BE830686AD365C4BFF41CD9512 15,2 Key ":C-U" -Display 80,30 0BAB2CA069001D0A57048D5A27B290A3 19,2 +Display 80,30 85CE2162A99E7F12D40B8E4F8BD2923E 15,2 Key ":C-X" -Display 80,30 BFDE34A6C5119A8ADFDDD8EBF984221E 19,2 +Display 80,30 2EFCC41A42B9DD2238BC6A18C36B6504 15,2 Key "-k" Display 80,30 41AC9C3CD03D07B52B6A3DA48C7AB730 1,8 Key ":C-X" @@ -716,5 +705,4 @@ Key ":C-X" Display 80,30 CF77174CFC77ECAC2102213E88F4BF50 2,7 Key ":C-C" Display 80,30 7EB025B1893D47CC56F241B3FAB0090A 21,8 -Key "-q" -Close 1819 +Close 1809