vi: fix "set ic" command; code shrink while at it. closes bug 1765
function old new delta colon 2970 2848 -122 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
92510141e2
commit
9f82d0be61
82
editors/vi.c
82
editors/vi.c
@ -793,7 +793,7 @@ static void colon(char *buf)
|
||||
//
|
||||
|
||||
if (!buf[0])
|
||||
goto vc1;
|
||||
goto ret;
|
||||
if (*buf == ':')
|
||||
buf++; // move past the ':'
|
||||
|
||||
@ -881,7 +881,7 @@ static void colon(char *buf)
|
||||
// don't edit, if the current file has been modified
|
||||
if (file_modified && !useforce) {
|
||||
status_line_bold("No write since last change (:edit! overrides)");
|
||||
goto vc1;
|
||||
goto ret;
|
||||
}
|
||||
if (args[0]) {
|
||||
// the user supplied a file name
|
||||
@ -892,11 +892,11 @@ static void colon(char *buf)
|
||||
} else {
|
||||
// no user file name, no current name- punt
|
||||
status_line_bold("No current filename");
|
||||
goto vc1;
|
||||
goto ret;
|
||||
}
|
||||
|
||||
if (init_text_buffer(fn) < 0)
|
||||
goto vc1;
|
||||
goto ret;
|
||||
|
||||
#if ENABLE_FEATURE_VI_YANKMARK
|
||||
if (Ureg >= 0 && Ureg < 28 && reg[Ureg] != 0) {
|
||||
@ -921,7 +921,7 @@ static void colon(char *buf)
|
||||
} else if (strncmp(cmd, "file", i) == 0) { // what File is this
|
||||
if (b != -1 || e != -1) {
|
||||
status_line_bold("No address allowed on this command");
|
||||
goto vc1;
|
||||
goto ret;
|
||||
}
|
||||
if (args[0]) {
|
||||
// user wants a new filename
|
||||
@ -967,11 +967,8 @@ static void colon(char *buf)
|
||||
if (c_is_no_print)
|
||||
standout_end();
|
||||
}
|
||||
#if ENABLE_FEATURE_VI_SET
|
||||
vc2:
|
||||
#endif
|
||||
Hit_Return();
|
||||
} else if (strncmp(cmd, "quit", i) == 0 // Quit
|
||||
} else if (strncmp(cmd, "quit", i) == 0 // quit
|
||||
|| strncmp(cmd, "next", i) == 0 // edit next file
|
||||
) {
|
||||
int n;
|
||||
@ -981,30 +978,30 @@ static void colon(char *buf)
|
||||
optind = save_argc;
|
||||
}
|
||||
editing = 0;
|
||||
goto vc1;
|
||||
goto ret;
|
||||
}
|
||||
// don't exit if the file been modified
|
||||
if (file_modified) {
|
||||
status_line_bold("No write since last change (:%s! overrides)",
|
||||
(*cmd == 'q' ? "quit" : "next"));
|
||||
goto vc1;
|
||||
goto ret;
|
||||
}
|
||||
// are there other file to edit
|
||||
n = save_argc - optind - 1;
|
||||
if (*cmd == 'q' && n > 0) {
|
||||
status_line_bold("%d more file(s) to edit", n);
|
||||
goto vc1;
|
||||
goto ret;
|
||||
}
|
||||
if (*cmd == 'n' && n <= 0) {
|
||||
status_line_bold("No more files to edit");
|
||||
goto vc1;
|
||||
goto ret;
|
||||
}
|
||||
editing = 0;
|
||||
} else if (strncmp(cmd, "read", i) == 0) { // read file into text[]
|
||||
fn = args;
|
||||
if (!fn[0]) {
|
||||
status_line_bold("No filename given");
|
||||
goto vc1;
|
||||
goto ret;
|
||||
}
|
||||
if (b < 0) { // no addr given- use defaults
|
||||
q = begin_line(dot); // assume "dot"
|
||||
@ -1018,7 +1015,7 @@ static void colon(char *buf)
|
||||
q = text + ofs;
|
||||
}
|
||||
if (ch < 0)
|
||||
goto vc1; // nothing was inserted
|
||||
goto ret; // nothing was inserted
|
||||
// how many lines in text[]?
|
||||
li = count_lines(q, q + ch - 1);
|
||||
status_line("\"%s\""
|
||||
@ -1049,25 +1046,21 @@ static void colon(char *buf)
|
||||
// only blank is regarded as args delmiter. What about tab '\t' ?
|
||||
if (!args[0] || strcasecmp(args, "all") == 0) {
|
||||
// print out values of all options
|
||||
go_bottom_and_clear_to_eol();
|
||||
printf("----------------------------------------\r\n");
|
||||
#if ENABLE_FEATURE_VI_SETOPTS
|
||||
if (!autoindent)
|
||||
printf("no");
|
||||
printf("autoindent ");
|
||||
if (!err_method)
|
||||
printf("no");
|
||||
printf("flash ");
|
||||
if (!ignorecase)
|
||||
printf("no");
|
||||
printf("ignorecase ");
|
||||
if (!showmatch)
|
||||
printf("no");
|
||||
printf("showmatch ");
|
||||
printf("tabstop=%d ", tabstop);
|
||||
status_line_bold(
|
||||
"%sautoindent "
|
||||
"%sflash "
|
||||
"%signorecase "
|
||||
"%sshowmatch "
|
||||
"tabstop=%u",
|
||||
autoindent ? "" : "no",
|
||||
err_method ? "" : "no",
|
||||
ignorecase ? "" : "no",
|
||||
showmatch ? "" : "no",
|
||||
tabstop
|
||||
);
|
||||
#endif
|
||||
printf("\r\n");
|
||||
goto vc2;
|
||||
goto ret;
|
||||
}
|
||||
#if ENABLE_FEATURE_VI_SETOPTS
|
||||
argp = args;
|
||||
@ -1077,17 +1070,15 @@ static void colon(char *buf)
|
||||
setops(argp, "autoindent ", i, "ai", VI_AUTOINDENT);
|
||||
setops(argp, "flash " , i, "fl", VI_ERR_METHOD);
|
||||
setops(argp, "ignorecase ", i, "ic", VI_IGNORECASE);
|
||||
setops(argp, "showmatch ", i, "ic", VI_SHOWMATCH);
|
||||
/* tabstopXXXX */
|
||||
if (strncmp(argp + i, "tabstop=%d ", 7) == 0) {
|
||||
sscanf(strchr(argp + i, '='), "tabstop=%d" + 7, &ch);
|
||||
if (ch > 0 && ch <= MAX_TABSTOP)
|
||||
tabstop = ch;
|
||||
setops(argp, "showmatch " , i, "sm", VI_SHOWMATCH );
|
||||
if (strncmp(argp + i, "tabstop=", 8) == 0) {
|
||||
int t = 0;
|
||||
sscanf(argp + i+8, "%u", &t);
|
||||
if (t > 0 && t <= MAX_TABSTOP)
|
||||
tabstop = t;
|
||||
}
|
||||
while (*argp && *argp != ' ')
|
||||
argp++; // skip to arg delimiter (i.e. blank)
|
||||
while (*argp && *argp == ' ')
|
||||
argp++; // skip all delimiting blanks
|
||||
argp = skip_non_whitespace(argp);
|
||||
argp = skip_whitespace(argp);
|
||||
}
|
||||
#endif /* FEATURE_VI_SETOPTS */
|
||||
#endif /* FEATURE_VI_SET */
|
||||
@ -1159,7 +1150,7 @@ static void colon(char *buf)
|
||||
#if ENABLE_FEATURE_VI_READONLY
|
||||
if (readonly_mode && !useforce) {
|
||||
status_line_bold("\"%s\" File is read only", fn);
|
||||
goto vc3;
|
||||
goto ret;
|
||||
}
|
||||
#endif
|
||||
// how many lines in text[]?
|
||||
@ -1196,9 +1187,6 @@ static void colon(char *buf)
|
||||
editing = 0;
|
||||
}
|
||||
}
|
||||
#if ENABLE_FEATURE_VI_READONLY
|
||||
vc3:;
|
||||
#endif
|
||||
#if ENABLE_FEATURE_VI_YANKMARK
|
||||
} else if (strncmp(cmd, "yank", i) == 0) { // yank lines
|
||||
if (b < 0) { // no addr given- use defaults
|
||||
@ -1214,7 +1202,7 @@ static void colon(char *buf)
|
||||
// cmd unknown
|
||||
not_implemented(cmd);
|
||||
}
|
||||
vc1:
|
||||
ret:
|
||||
dot = bound_dot(dot); // make sure "dot" is valid
|
||||
return;
|
||||
#if ENABLE_FEATURE_VI_SEARCH
|
||||
|
Loading…
Reference in New Issue
Block a user