aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2019-04-01 17:17:02 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2019-04-01 17:17:02 +0200
commitb29dce4bc293d6800e94569ac7d0df54bd1f8a94 (patch)
treec6d2255548855c14532179b5713403d073420e78
parent26f5e9d21ccf10ff447c68e4a28be2e723055356 (diff)
downloadbusybox-w32-b29dce4bc293d6800e94569ac7d0df54bd1f8a94.tar.gz
busybox-w32-b29dce4bc293d6800e94569ac7d0df54bd1f8a94.tar.bz2
busybox-w32-b29dce4bc293d6800e94569ac7d0df54bd1f8a94.zip
vi: code shrink
function old new delta get_input_line 172 175 +3 char_insert 444 447 +3 rawmode 36 24 -12 edit_file 644 626 -18 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/2 up/down: 6/-30) Total: -24 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--editors/vi.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/editors/vi.c b/editors/vi.c
index fe907c841..993630d6f 100644
--- a/editors/vi.c
+++ b/editors/vi.c
@@ -320,8 +320,9 @@ struct globals {
320 int screensize; // and its size 320 int screensize; // and its size
321 int tabstop; 321 int tabstop;
322 int last_forward_char; // last char searched for with 'f' (int because of Unicode) 322 int last_forward_char; // last char searched for with 'f' (int because of Unicode)
323 char erase_char; // the users erase character 323#if ENABLE_FEATURE_VI_CRASHME
324 char last_input_char; // last char read from user 324 char last_input_char; // last char read from user
325#endif
325 326
326#if ENABLE_FEATURE_VI_DOT_CMD 327#if ENABLE_FEATURE_VI_DOT_CMD
327 smallint adding2q; // are we currently adding user input to q 328 smallint adding2q; // are we currently adding user input to q
@@ -433,8 +434,9 @@ struct globals {
433#define screenbegin (G.screenbegin ) 434#define screenbegin (G.screenbegin )
434#define tabstop (G.tabstop ) 435#define tabstop (G.tabstop )
435#define last_forward_char (G.last_forward_char ) 436#define last_forward_char (G.last_forward_char )
436#define erase_char (G.erase_char ) 437#if ENABLE_FEATURE_VI_CRASHME
437#define last_input_char (G.last_input_char ) 438#define last_input_char (G.last_input_char )
439#endif
438#if ENABLE_FEATURE_VI_READONLY 440#if ENABLE_FEATURE_VI_READONLY
439#define readonly_mode (G.readonly_mode ) 441#define readonly_mode (G.readonly_mode )
440#else 442#else
@@ -560,7 +562,6 @@ static void rawmode(void)
560{ 562{
561 // no TERMIOS_CLEAR_ISIG: leave ISIG on - allow signals 563 // no TERMIOS_CLEAR_ISIG: leave ISIG on - allow signals
562 set_termios_to_raw(STDIN_FILENO, &term_orig, TERMIOS_RAW_CRNL); 564 set_termios_to_raw(STDIN_FILENO, &term_orig, TERMIOS_RAW_CRNL);
563 erase_char = term_orig.c_cc[VERASE];
564} 565}
565 566
566static void cookmode(void) 567static void cookmode(void)
@@ -1082,7 +1083,7 @@ static char *get_input_line(const char *prompt)
1082 c = get_one_char(); 1083 c = get_one_char();
1083 if (c == '\n' || c == '\r' || c == 27) 1084 if (c == '\n' || c == '\r' || c == 27)
1084 break; // this is end of input 1085 break; // this is end of input
1085 if (c == erase_char || c == 8 || c == 127) { 1086 if (c == term_orig.c_cc[VERASE] || c == 8 || c == 127) {
1086 // user wants to erase prev char 1087 // user wants to erase prev char
1087 buf[--i] = '\0'; 1088 buf[--i] = '\0';
1088 write1("\b \b"); // erase char on screen 1089 write1("\b \b"); // erase char on screen
@@ -1978,7 +1979,7 @@ static char *char_insert(char *p, char c, int undo) // insert the char c at 'p'
1978 if ((p[-1] != '\n') && (dot > text)) { 1979 if ((p[-1] != '\n') && (dot > text)) {
1979 p--; 1980 p--;
1980 } 1981 }
1981 } else if (c == erase_char || c == 8 || c == 127) { // Is this a BS 1982 } else if (c == term_orig.c_cc[VERASE] || c == 8 || c == 127) { // Is this a BS
1982 if (p > text) { 1983 if (p > text) {
1983 p--; 1984 p--;
1984 p = text_hole_delete(p, p, ALLOW_UNDO_QUEUED); // shrink buffer 1 char 1985 p = text_hole_delete(p, p, ALLOW_UNDO_QUEUED); // shrink buffer 1 char
@@ -4189,7 +4190,10 @@ static void edit_file(char *fn)
4189 mark[26] = mark[27] = text; // init "previous context" 4190 mark[26] = mark[27] = text; // init "previous context"
4190#endif 4191#endif
4191 4192
4192 last_forward_char = last_input_char = '\0'; 4193 last_forward_char = '\0';
4194#if ENABLE_FEATURE_VI_CRASHME
4195 last_input_char = '\0';
4196#endif
4193 crow = 0; 4197 crow = 0;
4194 ccol = 0; 4198 ccol = 0;
4195 4199
@@ -4253,7 +4257,10 @@ static void edit_file(char *fn)
4253 } 4257 }
4254 } 4258 }
4255#endif 4259#endif
4256 last_input_char = c = get_one_char(); // get a cmd from user 4260 c = get_one_char(); // get a cmd from user
4261#if ENABLE_FEATURE_VI_CRASHME
4262 last_input_char = c;
4263#endif
4257#if ENABLE_FEATURE_VI_YANKMARK 4264#if ENABLE_FEATURE_VI_YANKMARK
4258 // save a copy of the current line- for the 'U" command 4265 // save a copy of the current line- for the 'U" command
4259 if (begin_line(dot) != cur_line) { 4266 if (begin_line(dot) != cur_line) {