2009-02-09 Chris Allegretta <chrisa@asty.org>
* New option -q, --quiet, rcfile option "quiet" implemented. Skips printing errors about the rcfile and asking user to press enter. Also, nano should now only ask for one enter press when there is an error when not using -q. Based on discussion between Eitan Adler and Mike Frysinger. * rcfile.c (parse_keybinding) - Significant cleanups and fixes for detecting and reporting errors in key bindings code. git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@4374 35c25a1d-7b9e-4130-9fde-d3aeb78583b8master
parent
35686daf9d
commit
a30eb78006
|
@ -1,3 +1,11 @@
|
||||||
|
2009-02-09 Chris Allegretta <chrisa@asty.org>
|
||||||
|
* New option -q, --quiet, rcfile option "quiet" implemented. Skips printing
|
||||||
|
errors about the rcfile and asking user to press enter. Also, nano should
|
||||||
|
now only ask for one enter press when there is an error when not using -q.
|
||||||
|
Based on discussion between Eitan Adler and Mike Frysinger.
|
||||||
|
* rcfile.c (parse_keybinding) - Significant cleanups and fixes for
|
||||||
|
detecting and reporting errors in key bindings code.
|
||||||
|
|
||||||
2009-02-08 Chris Allegretta <chrisa@asty.org>
|
2009-02-08 Chris Allegretta <chrisa@asty.org>
|
||||||
* Make reset_multidata reset more lines, since contrary to previous problems the
|
* Make reset_multidata reset more lines, since contrary to previous problems the
|
||||||
syntax highlting is now too *un*ambitious, causing display glitches when
|
syntax highlting is now too *un*ambitious, causing display glitches when
|
||||||
|
|
|
@ -172,6 +172,10 @@ chroot.
|
||||||
Preserve the XON and XOFF sequences (^Q and ^S) so they will be caught
|
Preserve the XON and XOFF sequences (^Q and ^S) so they will be caught
|
||||||
by the terminal.
|
by the terminal.
|
||||||
.TP
|
.TP
|
||||||
|
.B \-q (\-\-quiet)
|
||||||
|
Do not report errors in the nanorc file and ask them to
|
||||||
|
be acknowledged by pressing enter at startup.
|
||||||
|
.TP
|
||||||
.B \-r \fIcols\fP (\-\-fill=\fIcols\fP)
|
.B \-r \fIcols\fP (\-\-fill=\fIcols\fP)
|
||||||
Wrap lines at column \fIcols\fP. If this value is 0 or less, wrapping
|
Wrap lines at column \fIcols\fP. If this value is 0 or less, wrapping
|
||||||
will occur at the width of the screen less \fIcols\fP columns, allowing
|
will occur at the width of the screen less \fIcols\fP columns, allowing
|
||||||
|
|
|
@ -145,6 +145,11 @@ paragraphs. They cannot contain blank characters. Only closing
|
||||||
punctuation, optionally followed by closing brackets, can end sentences.
|
punctuation, optionally followed by closing brackets, can end sentences.
|
||||||
The default value is "\fI!.?\fP".
|
The default value is "\fI!.?\fP".
|
||||||
.TP
|
.TP
|
||||||
|
.B set/unset quiet
|
||||||
|
\fBnano\fP will not report errors in the nanorc file and ask them to
|
||||||
|
be acknowledged by pressing enter at startup. If this is used it should
|
||||||
|
be placed at the top of the file to be fully effective.
|
||||||
|
.TP
|
||||||
.B set/unset quickblank
|
.B set/unset quickblank
|
||||||
Do quick statusbar blanking. Statusbar messages will disappear after 1
|
Do quick statusbar blanking. Statusbar messages will disappear after 1
|
||||||
keystroke instead of 25.
|
keystroke instead of 25.
|
||||||
|
|
10
src/nano.c
10
src/nano.c
|
@ -879,6 +879,8 @@ void usage(void)
|
||||||
#endif
|
#endif
|
||||||
print_opt("-p", "--preserve",
|
print_opt("-p", "--preserve",
|
||||||
N_("Preserve XON (^Q) and XOFF (^S) keys"));
|
N_("Preserve XON (^Q) and XOFF (^S) keys"));
|
||||||
|
print_opt("-q", "--quiet",
|
||||||
|
N_("Silently ignore startup issues like rc file errors"));
|
||||||
#ifndef DISABLE_WRAPJUSTIFY
|
#ifndef DISABLE_WRAPJUSTIFY
|
||||||
print_opt(_("-r <#cols>"), _("--fill=<#cols>"),
|
print_opt(_("-r <#cols>"), _("--fill=<#cols>"),
|
||||||
N_("Set wrapping point at column #cols"));
|
N_("Set wrapping point at column #cols"));
|
||||||
|
@ -1930,6 +1932,7 @@ int main(int argc, char **argv)
|
||||||
{"operatingdir", 1, NULL, 'o'},
|
{"operatingdir", 1, NULL, 'o'},
|
||||||
#endif
|
#endif
|
||||||
{"preserve", 0, NULL, 'p'},
|
{"preserve", 0, NULL, 'p'},
|
||||||
|
{"quiet", 0, NULL, 'q'},
|
||||||
#ifndef DISABLE_WRAPJUSTIFY
|
#ifndef DISABLE_WRAPJUSTIFY
|
||||||
{"fill", 1, NULL, 'r'},
|
{"fill", 1, NULL, 'r'},
|
||||||
#endif
|
#endif
|
||||||
|
@ -1993,11 +1996,11 @@ int main(int argc, char **argv)
|
||||||
while ((optchr =
|
while ((optchr =
|
||||||
#ifdef HAVE_GETOPT_LONG
|
#ifdef HAVE_GETOPT_LONG
|
||||||
getopt_long(argc, argv,
|
getopt_long(argc, argv,
|
||||||
"h?ABC:DEFHIKLNOQ:RST:UVWY:abcdefgijklmo:pr:s:tvwxz",
|
"h?ABC:DEFHIKLNOQ:RST:UVWY:abcdefgijklmo:pqr:s:tvwxz",
|
||||||
long_options, NULL)
|
long_options, NULL)
|
||||||
#else
|
#else
|
||||||
getopt(argc, argv,
|
getopt(argc, argv,
|
||||||
"h?ABC:DEFHIKLNOQ:RST:UVWY:abcdefgijklmo:pr:s:tvwxz")
|
"h?ABC:DEFHIKLNOQ:RST:UVWY:abcdefgijklmo:pqr:s:tvwxz")
|
||||||
#endif
|
#endif
|
||||||
) != -1) {
|
) != -1) {
|
||||||
switch (optchr) {
|
switch (optchr) {
|
||||||
|
@ -2125,6 +2128,9 @@ int main(int argc, char **argv)
|
||||||
case 'p':
|
case 'p':
|
||||||
SET(PRESERVE);
|
SET(PRESERVE);
|
||||||
break;
|
break;
|
||||||
|
case 'q':
|
||||||
|
SET(QUIET);
|
||||||
|
break;
|
||||||
#ifndef DISABLE_WRAPJUSTIFY
|
#ifndef DISABLE_WRAPJUSTIFY
|
||||||
case 'r':
|
case 'r':
|
||||||
if (!parse_num(optarg, &wrap_at)) {
|
if (!parse_num(optarg, &wrap_at)) {
|
||||||
|
|
|
@ -471,6 +471,7 @@ typedef struct subnfunc {
|
||||||
#define WORD_BOUNDS (1<<28)
|
#define WORD_BOUNDS (1<<28)
|
||||||
#define NO_NEWLINES (1<<29)
|
#define NO_NEWLINES (1<<29)
|
||||||
#define BOLD_TEXT (1<<30)
|
#define BOLD_TEXT (1<<30)
|
||||||
|
#define QUIET (1<<31)
|
||||||
|
|
||||||
/* Flags for which menus in which a given function should be present */
|
/* Flags for which menus in which a given function should be present */
|
||||||
#define MMAIN (1<<0)
|
#define MMAIN (1<<0)
|
||||||
|
|
49
src/rcfile.c
49
src/rcfile.c
|
@ -84,6 +84,7 @@ static const rcoption rcopts[] = {
|
||||||
{"historylog", HISTORYLOG},
|
{"historylog", HISTORYLOG},
|
||||||
{"matchbrackets", 0},
|
{"matchbrackets", 0},
|
||||||
{"noconvert", NO_CONVERT},
|
{"noconvert", NO_CONVERT},
|
||||||
|
{"quiet", QUIET},
|
||||||
{"quickblank", QUICK_BLANK},
|
{"quickblank", QUICK_BLANK},
|
||||||
{"smarthome", SMART_HOME},
|
{"smarthome", SMART_HOME},
|
||||||
{"smooth", SMOOTH_SCROLL},
|
{"smooth", SMOOTH_SCROLL},
|
||||||
|
@ -117,6 +118,9 @@ void rcfile_error(const char *msg, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
|
if (ISSET(QUIET))
|
||||||
|
return;
|
||||||
|
|
||||||
fprintf(stderr, "\n");
|
fprintf(stderr, "\n");
|
||||||
if (lineno > 0) {
|
if (lineno > 0) {
|
||||||
errors = TRUE;
|
errors = TRUE;
|
||||||
|
@ -388,41 +392,41 @@ void parse_keybinding(char *ptr)
|
||||||
|
|
||||||
if (keycopy[0] != 'M' && keycopy[0] != '^' && keycopy[0] != 'F' && keycopy[0] != 'K') {
|
if (keycopy[0] != 'M' && keycopy[0] != '^' && keycopy[0] != 'F' && keycopy[0] != 'K') {
|
||||||
rcfile_error(
|
rcfile_error(
|
||||||
N_("keybindings must begin with \"^\", \"M\", or \"F\"\n"));
|
N_("keybindings must begin with \"^\", \"M\", or \"F\""));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
funcptr = ptr;
|
funcptr = ptr;
|
||||||
ptr = parse_next_word(ptr);
|
ptr = parse_next_word(ptr);
|
||||||
|
|
||||||
if (funcptr == NULL) {
|
if (!strcmp(funcptr, "")) {
|
||||||
rcfile_error(
|
rcfile_error(
|
||||||
N_("Must specify function to bind key to\n"));
|
N_("Must specify function to bind key to"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
menuptr = ptr;
|
menuptr = ptr;
|
||||||
ptr = parse_next_word(ptr);
|
ptr = parse_next_word(ptr);
|
||||||
|
|
||||||
if (menuptr == NULL) {
|
if (!strcmp(menuptr, "")) {
|
||||||
rcfile_error(
|
rcfile_error(
|
||||||
/* Note to translators, do not translate the word "all"
|
/* Note to translators, do not translate the word "all"
|
||||||
in the sentence below, everything else is fine */
|
in the sentence below, everything else is fine */
|
||||||
N_("Must specify menu bind key to (or \"all\")\n"));
|
N_("Must specify menu to bind key to (or \"all\")"));
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
menu = strtomenu(menuptr);
|
|
||||||
if (menu < 1) {
|
|
||||||
rcfile_error(
|
|
||||||
N_("Could not map name \"%s\" to a menu\n"), menuptr);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
newsc = strtosc(menu, funcptr);
|
newsc = strtosc(menu, funcptr);
|
||||||
if (newsc == NULL) {
|
if (newsc == NULL) {
|
||||||
rcfile_error(
|
rcfile_error(
|
||||||
N_("Could not map name \"%s\" to a function\n"), funcptr);
|
N_("Could not map name \"%s\" to a function"), funcptr);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
menu = strtomenu(menuptr);
|
||||||
|
if (menu < 1) {
|
||||||
|
rcfile_error(
|
||||||
|
N_("Could not map name \"%s\" to a menu"), menuptr);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -444,7 +448,7 @@ void parse_keybinding(char *ptr)
|
||||||
|
|
||||||
if (check_bad_binding(newsc)) {
|
if (check_bad_binding(newsc)) {
|
||||||
rcfile_error(
|
rcfile_error(
|
||||||
N_("Sorry, keystr \"%s\" is an illegal binding\n"), newsc->keystr);
|
N_("Sorry, keystr \"%s\" is an illegal binding"), newsc->keystr);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1057,15 +1061,6 @@ void parse_rcfile(FILE *rcstream
|
||||||
lineno = 0;
|
lineno = 0;
|
||||||
|
|
||||||
check_vitals_mapped();
|
check_vitals_mapped();
|
||||||
|
|
||||||
if (errors) {
|
|
||||||
errors = FALSE;
|
|
||||||
fprintf(stderr,
|
|
||||||
_("\nPress Enter to continue starting nano.\n"));
|
|
||||||
while (getchar() != '\n')
|
|
||||||
;
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1146,6 +1141,14 @@ void do_rcfile(void)
|
||||||
free(nanorc);
|
free(nanorc);
|
||||||
nanorc = NULL;
|
nanorc = NULL;
|
||||||
|
|
||||||
|
if (errors && !ISSET(QUIET)) {
|
||||||
|
errors = FALSE;
|
||||||
|
fprintf(stderr,
|
||||||
|
_("\nPress Enter to continue starting nano.\n"));
|
||||||
|
while (getchar() != '\n')
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef ENABLE_COLOR
|
#ifdef ENABLE_COLOR
|
||||||
set_colorpairs();
|
set_colorpairs();
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue