lineedit: trivial codeshrink for vi-mode
authorNatanael Copa <ncopa@alpinelinux.org>
Sun, 14 Aug 2016 21:30:29 +0000 (23:30 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Sun, 14 Aug 2016 21:30:29 +0000 (23:30 +0200)
Introduce and use BB_isalnum_or_underscore().

function                                             old     new   delta
BB_isalnum_or_underscore                               -      43     +43
vi_word_motion                                       162     150     -12
vi_end_motion                                        163     145     -18
vi_back_motion                                       198     179     -19
BB_isalnum                                            39       -     -39
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 0/3 up/down: 43/-88)            Total: -45 bytes

Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
libbb/lineedit.c

index 3e62f46b4cf548833db2e7df2def3f05aa3af984..3bfff008468be3143003ae26f0147dca0cd3fc05 100644 (file)
@@ -81,7 +81,9 @@
 # define CHAR_T wchar_t
 static bool BB_isspace(CHAR_T c) { return ((unsigned)c < 256 && isspace(c)); }
 # if ENABLE_FEATURE_EDITING_VI
-static bool BB_isalnum(CHAR_T c) { return ((unsigned)c < 256 && isalnum(c)); }
+static bool BB_isalnum_or_underscore(CHAR_T c) {
+       return ((unsigned)c < 256 && isalnum(c)) || c == '_';
+}
 # endif
 static bool BB_ispunct(CHAR_T c) { return ((unsigned)c < 256 && ispunct(c)); }
 # undef isspace
@@ -96,7 +98,11 @@ static bool BB_ispunct(CHAR_T c) { return ((unsigned)c < 256 && ispunct(c)); }
 # define BB_NUL '\0'
 # define CHAR_T char
 # define BB_isspace(c) isspace(c)
-# define BB_isalnum(c) isalnum(c)
+# if ENABLE_FEATURE_EDITING_VI
+static bool BB_isalnum_or_underscore(CHAR_T c) {
+       return ((unsigned)c < 256 && isalnum(c)) || c == '_';
+}
+# endif
 # define BB_ispunct(c) ispunct(c)
 #endif
 #if ENABLE_UNICODE_PRESERVE_BROKEN
@@ -1586,9 +1592,9 @@ vi_word_motion(int eat)
 {
        CHAR_T *command = command_ps;
 
-       if (BB_isalnum(command[cursor]) || command[cursor] == '_') {
+       if (BB_isalnum_or_underscore(command[cursor])) {
                while (cursor < command_len
-                && (BB_isalnum(command[cursor+1]) || command[cursor+1] == '_')
+                && (BB_isalnum_or_underscore(command[cursor+1]))
                ) {
                        input_forward();
                }
@@ -1630,9 +1636,9 @@ vi_end_motion(void)
                input_forward();
        if (cursor >= command_len-1)
                return;
-       if (BB_isalnum(command[cursor]) || command[cursor] == '_') {
+       if (BB_isalnum_or_underscore(command[cursor])) {
                while (cursor < command_len-1
-                && (BB_isalnum(command[cursor+1]) || command[cursor+1] == '_')
+                && (BB_isalnum_or_underscore(command[cursor+1]))
                ) {
                        input_forward();
                }
@@ -1665,9 +1671,9 @@ vi_back_motion(void)
                input_backward(1);
        if (cursor <= 0)
                return;
-       if (BB_isalnum(command[cursor]) || command[cursor] == '_') {
+       if (BB_isalnum_or_underscore(command[cursor])) {
                while (cursor > 0
-                && (BB_isalnum(command[cursor-1]) || command[cursor-1] == '_')
+                && (BB_isalnum_or_underscore(command[cursor-1]))
                ) {
                        input_backward(1);
                }