aboutsummaryrefslogtreecommitdiffhomepage
path: root/input.cpp
diff options
context:
space:
mode:
authorGravatar ridiculousfish <corydoras@ridiculousfish.com>2012-07-17 12:47:01 -0700
committerGravatar ridiculousfish <corydoras@ridiculousfish.com>2012-07-17 12:47:01 -0700
commitd06d6c69645c4d355772cb19043469328c05ccc5 (patch)
treeba9f91943b94b9b59b3e781580eca5d3230ac493 /input.cpp
parent977a4477f646e344e66a7b0bc22e2e89b72d20db (diff)
Various changes to reduce fish's compiled code size
OS X release build executable size dropped from 672k to 511k
Diffstat (limited to 'input.cpp')
-rw-r--r--input.cpp312
1 files changed, 155 insertions, 157 deletions
diff --git a/input.cpp b/input.cpp
index 7855ee52..0ae04c54 100644
--- a/input.cpp
+++ b/input.cpp
@@ -224,14 +224,7 @@ static std::vector<input_mapping_t> mapping_list;
/* Terminfo map list */
static std::vector<terminfo_mapping_t> terminfo_mappings;
-/** Add a new terminfo mapping */
-static inline void terminfo_add(const wchar_t *name, const char *seq)
-{
- terminfo_mapping_t mapping = {name, seq};
- terminfo_mappings.push_back(mapping);
-}
-#define TERMINFO_ADD(key) do { terminfo_add((L ## #key)+4, key); } while (0)
-
+#define TERMINFO_ADD(key) { (L ## #key) + 4, key }
/**
@@ -614,52 +607,53 @@ bool input_mapping_get( const wcstring &sequence, wcstring &cmd )
*/
static void input_terminfo_init()
{
- TERMINFO_ADD(key_a1);
- TERMINFO_ADD(key_a3);
- TERMINFO_ADD(key_b2);
- TERMINFO_ADD(key_backspace);
- TERMINFO_ADD(key_beg);
- TERMINFO_ADD(key_btab);
- TERMINFO_ADD(key_c1);
- TERMINFO_ADD(key_c3);
- TERMINFO_ADD(key_cancel);
- TERMINFO_ADD(key_catab);
- TERMINFO_ADD(key_clear);
- TERMINFO_ADD(key_close);
- TERMINFO_ADD(key_command);
- TERMINFO_ADD(key_copy);
- TERMINFO_ADD(key_create);
- TERMINFO_ADD(key_ctab);
- TERMINFO_ADD(key_dc);
- TERMINFO_ADD(key_dl);
- TERMINFO_ADD(key_down);
- TERMINFO_ADD(key_eic);
- TERMINFO_ADD(key_end);
- TERMINFO_ADD(key_enter);
- TERMINFO_ADD(key_eol);
- TERMINFO_ADD(key_eos);
- TERMINFO_ADD(key_exit);
- TERMINFO_ADD(key_f0);
- TERMINFO_ADD(key_f1);
- TERMINFO_ADD(key_f2);
- TERMINFO_ADD(key_f3);
- TERMINFO_ADD(key_f4);
- TERMINFO_ADD(key_f5);
- TERMINFO_ADD(key_f6);
- TERMINFO_ADD(key_f7);
- TERMINFO_ADD(key_f8);
- TERMINFO_ADD(key_f9);
- TERMINFO_ADD(key_f10);
- TERMINFO_ADD(key_f11);
- TERMINFO_ADD(key_f12);
- TERMINFO_ADD(key_f13);
- TERMINFO_ADD(key_f14);
- TERMINFO_ADD(key_f15);
- TERMINFO_ADD(key_f16);
- TERMINFO_ADD(key_f17);
- TERMINFO_ADD(key_f18);
- TERMINFO_ADD(key_f19);
- TERMINFO_ADD(key_f20);
+ const terminfo_mapping_t tinfos[] = {
+ TERMINFO_ADD(key_a1),
+ TERMINFO_ADD(key_a3),
+ TERMINFO_ADD(key_b2),
+ TERMINFO_ADD(key_backspace),
+ TERMINFO_ADD(key_beg),
+ TERMINFO_ADD(key_btab),
+ TERMINFO_ADD(key_c1),
+ TERMINFO_ADD(key_c3),
+ TERMINFO_ADD(key_cancel),
+ TERMINFO_ADD(key_catab),
+ TERMINFO_ADD(key_clear),
+ TERMINFO_ADD(key_close),
+ TERMINFO_ADD(key_command),
+ TERMINFO_ADD(key_copy),
+ TERMINFO_ADD(key_create),
+ TERMINFO_ADD(key_ctab),
+ TERMINFO_ADD(key_dc),
+ TERMINFO_ADD(key_dl),
+ TERMINFO_ADD(key_down),
+ TERMINFO_ADD(key_eic),
+ TERMINFO_ADD(key_end),
+ TERMINFO_ADD(key_enter),
+ TERMINFO_ADD(key_eol),
+ TERMINFO_ADD(key_eos),
+ TERMINFO_ADD(key_exit),
+ TERMINFO_ADD(key_f0),
+ TERMINFO_ADD(key_f1),
+ TERMINFO_ADD(key_f2),
+ TERMINFO_ADD(key_f3),
+ TERMINFO_ADD(key_f4),
+ TERMINFO_ADD(key_f5),
+ TERMINFO_ADD(key_f6),
+ TERMINFO_ADD(key_f7),
+ TERMINFO_ADD(key_f8),
+ TERMINFO_ADD(key_f9),
+ TERMINFO_ADD(key_f10),
+ TERMINFO_ADD(key_f11),
+ TERMINFO_ADD(key_f12),
+ TERMINFO_ADD(key_f13),
+ TERMINFO_ADD(key_f14),
+ TERMINFO_ADD(key_f15),
+ TERMINFO_ADD(key_f16),
+ TERMINFO_ADD(key_f17),
+ TERMINFO_ADD(key_f18),
+ TERMINFO_ADD(key_f19),
+ TERMINFO_ADD(key_f20),
/*
I know of no keyboard with more than 20 function keys, so
adding the rest here makes very little sense, since it will
@@ -667,109 +661,113 @@ static void input_terminfo_init()
but with no benefit.
*/
/*
- TERMINFO_ADD(key_f21);
- TERMINFO_ADD(key_f22);
- TERMINFO_ADD(key_f23);
- TERMINFO_ADD(key_f24);
- TERMINFO_ADD(key_f25);
- TERMINFO_ADD(key_f26);
- TERMINFO_ADD(key_f27);
- TERMINFO_ADD(key_f28);
- TERMINFO_ADD(key_f29);
- TERMINFO_ADD(key_f30);
- TERMINFO_ADD(key_f31);
- TERMINFO_ADD(key_f32);
- TERMINFO_ADD(key_f33);
- TERMINFO_ADD(key_f34);
- TERMINFO_ADD(key_f35);
- TERMINFO_ADD(key_f36);
- TERMINFO_ADD(key_f37);
- TERMINFO_ADD(key_f38);
- TERMINFO_ADD(key_f39);
- TERMINFO_ADD(key_f40);
- TERMINFO_ADD(key_f41);
- TERMINFO_ADD(key_f42);
- TERMINFO_ADD(key_f43);
- TERMINFO_ADD(key_f44);
- TERMINFO_ADD(key_f45);
- TERMINFO_ADD(key_f46);
- TERMINFO_ADD(key_f47);
- TERMINFO_ADD(key_f48);
- TERMINFO_ADD(key_f49);
- TERMINFO_ADD(key_f50);
- TERMINFO_ADD(key_f51);
- TERMINFO_ADD(key_f52);
- TERMINFO_ADD(key_f53);
- TERMINFO_ADD(key_f54);
- TERMINFO_ADD(key_f55);
- TERMINFO_ADD(key_f56);
- TERMINFO_ADD(key_f57);
- TERMINFO_ADD(key_f58);
- TERMINFO_ADD(key_f59);
- TERMINFO_ADD(key_f60);
- TERMINFO_ADD(key_f61);
- TERMINFO_ADD(key_f62);
- TERMINFO_ADD(key_f63);*/
- TERMINFO_ADD(key_find);
- TERMINFO_ADD(key_help);
- TERMINFO_ADD(key_home);
- TERMINFO_ADD(key_ic);
- TERMINFO_ADD(key_il);
- TERMINFO_ADD(key_left);
- TERMINFO_ADD(key_ll);
- TERMINFO_ADD(key_mark);
- TERMINFO_ADD(key_message);
- TERMINFO_ADD(key_move);
- TERMINFO_ADD(key_next);
- TERMINFO_ADD(key_npage);
- TERMINFO_ADD(key_open);
- TERMINFO_ADD(key_options);
- TERMINFO_ADD(key_ppage);
- TERMINFO_ADD(key_previous);
- TERMINFO_ADD(key_print);
- TERMINFO_ADD(key_redo);
- TERMINFO_ADD(key_reference);
- TERMINFO_ADD(key_refresh);
- TERMINFO_ADD(key_replace);
- TERMINFO_ADD(key_restart);
- TERMINFO_ADD(key_resume);
- TERMINFO_ADD(key_right);
- TERMINFO_ADD(key_save);
- TERMINFO_ADD(key_sbeg);
- TERMINFO_ADD(key_scancel);
- TERMINFO_ADD(key_scommand);
- TERMINFO_ADD(key_scopy);
- TERMINFO_ADD(key_screate);
- TERMINFO_ADD(key_sdc);
- TERMINFO_ADD(key_sdl);
- TERMINFO_ADD(key_select);
- TERMINFO_ADD(key_send);
- TERMINFO_ADD(key_seol);
- TERMINFO_ADD(key_sexit);
- TERMINFO_ADD(key_sf);
- TERMINFO_ADD(key_sfind);
- TERMINFO_ADD(key_shelp);
- TERMINFO_ADD(key_shome);
- TERMINFO_ADD(key_sic);
- TERMINFO_ADD(key_sleft);
- TERMINFO_ADD(key_smessage);
- TERMINFO_ADD(key_smove);
- TERMINFO_ADD(key_snext);
- TERMINFO_ADD(key_soptions);
- TERMINFO_ADD(key_sprevious);
- TERMINFO_ADD(key_sprint);
- TERMINFO_ADD(key_sr);
- TERMINFO_ADD(key_sredo);
- TERMINFO_ADD(key_sreplace);
- TERMINFO_ADD(key_sright);
- TERMINFO_ADD(key_srsume);
- TERMINFO_ADD(key_ssave);
- TERMINFO_ADD(key_ssuspend);
- TERMINFO_ADD(key_stab);
- TERMINFO_ADD(key_sundo);
- TERMINFO_ADD(key_suspend);
- TERMINFO_ADD(key_undo);
- TERMINFO_ADD(key_up);
+ TERMINFO_ADD(key_f21),
+ TERMINFO_ADD(key_f22),
+ TERMINFO_ADD(key_f23),
+ TERMINFO_ADD(key_f24),
+ TERMINFO_ADD(key_f25),
+ TERMINFO_ADD(key_f26),
+ TERMINFO_ADD(key_f27),
+ TERMINFO_ADD(key_f28),
+ TERMINFO_ADD(key_f29),
+ TERMINFO_ADD(key_f30),
+ TERMINFO_ADD(key_f31),
+ TERMINFO_ADD(key_f32),
+ TERMINFO_ADD(key_f33),
+ TERMINFO_ADD(key_f34),
+ TERMINFO_ADD(key_f35),
+ TERMINFO_ADD(key_f36),
+ TERMINFO_ADD(key_f37),
+ TERMINFO_ADD(key_f38),
+ TERMINFO_ADD(key_f39),
+ TERMINFO_ADD(key_f40),
+ TERMINFO_ADD(key_f41),
+ TERMINFO_ADD(key_f42),
+ TERMINFO_ADD(key_f43),
+ TERMINFO_ADD(key_f44),
+ TERMINFO_ADD(key_f45),
+ TERMINFO_ADD(key_f46),
+ TERMINFO_ADD(key_f47),
+ TERMINFO_ADD(key_f48),
+ TERMINFO_ADD(key_f49),
+ TERMINFO_ADD(key_f50),
+ TERMINFO_ADD(key_f51),
+ TERMINFO_ADD(key_f52),
+ TERMINFO_ADD(key_f53),
+ TERMINFO_ADD(key_f54),
+ TERMINFO_ADD(key_f55),
+ TERMINFO_ADD(key_f56),
+ TERMINFO_ADD(key_f57),
+ TERMINFO_ADD(key_f58),
+ TERMINFO_ADD(key_f59),
+ TERMINFO_ADD(key_f60),
+ TERMINFO_ADD(key_f61),
+ TERMINFO_ADD(key_f62),
+ TERMINFO_ADD(key_f63),*/
+ TERMINFO_ADD(key_find),
+ TERMINFO_ADD(key_help),
+ TERMINFO_ADD(key_home),
+ TERMINFO_ADD(key_ic),
+ TERMINFO_ADD(key_il),
+ TERMINFO_ADD(key_left),
+ TERMINFO_ADD(key_ll),
+ TERMINFO_ADD(key_mark),
+ TERMINFO_ADD(key_message),
+ TERMINFO_ADD(key_move),
+ TERMINFO_ADD(key_next),
+ TERMINFO_ADD(key_npage),
+ TERMINFO_ADD(key_open),
+ TERMINFO_ADD(key_options),
+ TERMINFO_ADD(key_ppage),
+ TERMINFO_ADD(key_previous),
+ TERMINFO_ADD(key_print),
+ TERMINFO_ADD(key_redo),
+ TERMINFO_ADD(key_reference),
+ TERMINFO_ADD(key_refresh),
+ TERMINFO_ADD(key_replace),
+ TERMINFO_ADD(key_restart),
+ TERMINFO_ADD(key_resume),
+ TERMINFO_ADD(key_right),
+ TERMINFO_ADD(key_save),
+ TERMINFO_ADD(key_sbeg),
+ TERMINFO_ADD(key_scancel),
+ TERMINFO_ADD(key_scommand),
+ TERMINFO_ADD(key_scopy),
+ TERMINFO_ADD(key_screate),
+ TERMINFO_ADD(key_sdc),
+ TERMINFO_ADD(key_sdl),
+ TERMINFO_ADD(key_select),
+ TERMINFO_ADD(key_send),
+ TERMINFO_ADD(key_seol),
+ TERMINFO_ADD(key_sexit),
+ TERMINFO_ADD(key_sf),
+ TERMINFO_ADD(key_sfind),
+ TERMINFO_ADD(key_shelp),
+ TERMINFO_ADD(key_shome),
+ TERMINFO_ADD(key_sic),
+ TERMINFO_ADD(key_sleft),
+ TERMINFO_ADD(key_smessage),
+ TERMINFO_ADD(key_smove),
+ TERMINFO_ADD(key_snext),
+ TERMINFO_ADD(key_soptions),
+ TERMINFO_ADD(key_sprevious),
+ TERMINFO_ADD(key_sprint),
+ TERMINFO_ADD(key_sr),
+ TERMINFO_ADD(key_sredo),
+ TERMINFO_ADD(key_sreplace),
+ TERMINFO_ADD(key_sright),
+ TERMINFO_ADD(key_srsume),
+ TERMINFO_ADD(key_ssave),
+ TERMINFO_ADD(key_ssuspend),
+ TERMINFO_ADD(key_stab),
+ TERMINFO_ADD(key_sundo),
+ TERMINFO_ADD(key_suspend),
+ TERMINFO_ADD(key_undo),
+ TERMINFO_ADD(key_up)
+ };
+ const size_t count = sizeof tinfos / sizeof *tinfos;
+ terminfo_mappings.reserve(terminfo_mappings.size() + count);
+ terminfo_mappings.insert(terminfo_mappings.end(), tinfos, tinfos + count);
}
const wchar_t *input_terminfo_get_sequence( const wchar_t *name )