From 69a7dd86ec3052211b33817f78321cf70e8789f4 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Tue, 11 Apr 2023 11:44:27 +0200 Subject: [PATCH 1/8] feedback: suppress filename and linecount when --zero is active This suppression prevents the filename flashing by at the bottom of the screen when switching between buffers. This addresses https://savannah.gnu.org/bugs/?64019 Reported-by: Alan Cristhian Ruiz Problem existed since version 6.0, since --zero was introduced. --- src/files.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/files.c b/src/files.c index c6eadc1c..20967446 100644 --- a/src/files.c +++ b/src/files.c @@ -535,7 +535,8 @@ void mention_name_and_linecount(void) if (ISSET(MINIBAR)) { report_size = TRUE; return; - } + } else if (ISSET(ZERO)) + return; if (openfile->fmt > NIX_FILE) /* TRANSLATORS: First %s is file name, second %s is file format. */ From 2c19345e58ddc0def4f4cb0e65ea249519cb43f2 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Sun, 30 Apr 2023 17:24:23 +0200 Subject: [PATCH 2/8] docs: in a synopsis, use braces around a choice of required parts This seems to be the convention. For an example, see `man tar`. This addresses https://savannah.gnu.org/bugs/?64125. Reported-by: Eric S. Raymond --- doc/nano.1 | 2 +- doc/nano.texi | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/nano.1 b/doc/nano.1 index fde6da75..af58338e 100644 --- a/doc/nano.1 +++ b/doc/nano.1 @@ -28,7 +28,7 @@ nano \- Nano's ANOther editor, inspired by Pico .B nano .RI [ options "] [" file [\fB: line [\fB: column "]]]..." .sp -.BR nano " [" \fIoptions "] [[" + [ crCR ]( / | ? ) \fIstring "] " \fIfile ]... +.BR nano " [" \fIoptions "] [[" + [ crCR ]{ / | ? } \fIstring "] " \fIfile ]... .SH DESCRIPTION \fBnano\fP is a small and friendly editor. It copies the look and feel diff --git a/doc/nano.texi b/doc/nano.texi index 6ab23579..2fc39495 100644 --- a/doc/nano.texi +++ b/doc/nano.texi @@ -163,7 +163,7 @@ A more complete command synopsis thus is: @blankline @example -@code{nano [OPTION]@dots{} [[+LINE[,COLUMN]|+[crCR](/|?)STRING] FILE]@dots{}} +@code{nano [OPTION]@dots{} [[+LINE[,COLUMN]|+[crCR]@{/|?@}STRING] FILE]@dots{}} @end example @blankline From 15c6396d42b06a85a50a78e15bb1940159647a5f Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Sat, 13 May 2023 12:31:09 +0200 Subject: [PATCH 3/8] tweaks: rename a symbol (to be clearer), and add three missing comments --- src/definitions.h | 2 +- src/global.c | 5 ++++- src/winio.c | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/definitions.h b/src/definitions.h index d6ca001d..7f0c4918 100644 --- a/src/definitions.h +++ b/src/definitions.h @@ -219,7 +219,7 @@ * needs execution or a specified function name is invalid. */ #define MORE_PLANTS 0x4EA #define MISSING_BRACE 0x4EB -#define PLANTED_COMMAND 0x4EC +#define PLANTED_A_COMMAND 0x4EC #define NO_SUCH_FUNCTION 0x4EF /* A special keycode for when is pressed while the mark is on. */ diff --git a/src/global.c b/src/global.c index ed93fa31..5e5f80e8 100644 --- a/src/global.c +++ b/src/global.c @@ -266,9 +266,12 @@ char *startup_problem = NULL; #endif #ifdef ENABLE_NANORC char *custom_nanorc = NULL; + /* The argument of the --rcfile option, when given. */ char *commandname = NULL; + /* The name (of a function) between braces in a string bind. */ keystruct *planted_shortcut = NULL; + /* The function that the above name resolves to, if any. */ #endif bool spotlighted = FALSE; @@ -464,7 +467,7 @@ const keystruct *get_shortcut(const int keycode) return NULL; #endif #ifdef ENABLE_NANORC - if (keycode == PLANTED_COMMAND) + if (keycode == PLANTED_A_COMMAND) return planted_shortcut; #endif diff --git a/src/winio.c b/src/winio.c index fee2a84e..e73419bb 100644 --- a/src/winio.c +++ b/src/winio.c @@ -380,7 +380,7 @@ int get_code_from_plantation(void) if (*plants_pointer != '\0') put_back(MORE_PLANTS); - return PLANTED_COMMAND; + return PLANTED_A_COMMAND; } else { char *opening = strchr(plants_pointer, '{'); char firstbyte = *plants_pointer; From bcdb27416c91b01161d121a1f5c175d9bbf7c198 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Sat, 13 May 2023 17:17:36 +0200 Subject: [PATCH 4/8] docs: describe nano more specifically as a text editor Especially the first sentences introducing nano should use the words "text editor" and not just "editor". --- doc/nano.1 | 4 ++-- doc/nano.texi | 2 +- doc/nanorc.5 | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/nano.1 b/doc/nano.1 index af58338e..556dedeb 100644 --- a/doc/nano.1 +++ b/doc/nano.1 @@ -19,7 +19,7 @@ .TH NANO 1 "version 7.2" "January 2023" .SH NAME -nano \- Nano's ANOther editor, inspired by Pico +nano \- Nano's ANOther text editor, inspired by Pico .SH SYNOPSIS .B nano @@ -31,7 +31,7 @@ nano \- Nano's ANOther editor, inspired by Pico .BR nano " [" \fIoptions "] [[" + [ crCR ]{ / | ? } \fIstring "] " \fIfile ]... .SH DESCRIPTION -\fBnano\fP is a small and friendly editor. It copies the look and feel +\fBnano\fP is a small and friendly text editor. It copies the look and feel of Pico, but is free software, and implements several features that Pico lacks, such as: opening multiple files, scrolling per line, undo/redo, syntax coloring, line numbering, and soft-wrapping overlong lines. diff --git a/doc/nano.texi b/doc/nano.texi index 2fc39495..df3dcbc0 100644 --- a/doc/nano.texi +++ b/doc/nano.texi @@ -35,7 +35,7 @@ The complete manual for the GNU nano text editor. @page -This manual documents the GNU @command{nano} editor. +This manual documents the GNU @command{nano} text editor. @sp 1 The contents of this manual are part of the GNU @command{nano} distribution. diff --git a/doc/nanorc.5 b/doc/nanorc.5 index 84db959d..3bd1d6e7 100644 --- a/doc/nanorc.5 +++ b/doc/nanorc.5 @@ -23,7 +23,7 @@ nanorc \- GNU nano's configuration file .SH DESCRIPTION The \fInanorc\fP files contain the default settings for \fBnano\fP, -a small and friendly editor. During startup, if \fB\-\-rcfile\fR +a small and friendly text editor. During startup, if \fB\-\-rcfile\fR is not given, \fBnano\fR will read two files: first the system-wide settings, from \fI/etc/nanorc\fP (the exact path might be different on your system), and then the user-specific settings, either From 7f17777a4ba55b5deddccd52b19edeab677611fa Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Sat, 13 May 2023 17:28:48 +0200 Subject: [PATCH 5/8] docs: mention that a restricted nano does not access the history files With some imagination, the lack of access could be inferred from the other descriptions, but it's much better to be clear and explicit. Also, separate two items that are unrelated and reshuffle them into a neater order. Triggered by https://savannah.gnu.org/bugs/?64181. --- doc/rnano.1 | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/doc/rnano.1 b/doc/rnano.1 index 27762bc6..5a920287 100644 --- a/doc/rnano.1 +++ b/doc/rnano.1 @@ -32,15 +32,19 @@ access to the filesystem nor to a command shell. .sp In restricted mode, \fBnano\fR will: .IP \[bu] 2 +not make backups; +.IP \[bu] not allow suspending; .IP \[bu] +not allow spell checking; +.IP \[bu] +not read nor write the history files; +.IP \[bu] not allow saving the current buffer under a different name; .IP \[bu] not allow inserting another file or opening a new buffer; .IP \[bu] -not allow appending or prepending to any file; -.IP \[bu] -not make backup files nor do spell checking. +not allow appending or prepending to any file. .SH OPTIONS .TP From fc42ab9b463acdc7cf61b6b4aeef3dce2dd569e8 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Sat, 20 May 2023 17:31:05 +0200 Subject: [PATCH 6/8] bindings: allow speller and friends to be rebound also in restricted mode Speller, linter, formatter, and execute-a-command cannot be used in restricted mode, but the relevant keys should report that the function is *disabled*, not that the key is unbound. This fixes https://savannah.gnu.org/bugs/?64226. Problem existed since version 3.2, since nano reads the nanorc files also in restricted mode. --- src/global.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/global.c b/src/global.c index 5e5f80e8..430db493 100644 --- a/src/global.c +++ b/src/global.c @@ -1013,7 +1013,6 @@ void shortcut_init(void) add_to_funcs(to_next_anchor, MMAIN, N_("Down to anchor"), WHENHELP(nextanchor_gist), BLANKAFTER); - if (!ISSET(RESTRICTED)) { #ifdef ENABLE_SPELLER add_to_funcs(do_spell, MMAIN, N_("Spell Check"), WHENHELP(spell_gist), TOGETHER); @@ -1026,7 +1025,10 @@ void shortcut_init(void) add_to_funcs(do_formatter, MMAIN, N_("Formatter"), WHENHELP(formatter_gist), BLANKAFTER); #endif - } + /* Although not allowed in restricted mode, keep execution rebindable. */ + if (ISSET(RESTRICTED)) + add_to_funcs(do_execute, MMAIN, + N_("Execute"), WHENHELP(execute_gist), TOGETHER); #endif /* !NANO_TINY */ #ifdef NANO_TINY From f7d8735b6b94db445f26b62ef0f7a607f1831fd3 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Sun, 21 May 2023 11:10:41 +0200 Subject: [PATCH 7/8] tweaks: reshuffle four lines, to allow folding some #ifdefs together Also remove an unneeded pair of braces, split a comment, and correct a mistaken #ifdef. --- src/global.c | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/src/global.c b/src/global.c index 430db493..d71eda75 100644 --- a/src/global.c +++ b/src/global.c @@ -981,7 +981,10 @@ void shortcut_init(void) add_to_funcs(do_verbatim_input, MMAIN, N_("Verbatim"), WHENHELP(verbatim_gist), BLANKAFTER); -#ifndef NANO_TINY +#ifdef NANO_TINY + add_to_funcs(do_search_backward, MMAIN, + N_("Where Was"), WHENHELP(wherewas_gist), BLANKAFTER); +#else add_to_funcs(do_indent, MMAIN, N_("Indent"), WHENHELP(indent_gist), TOGETHER); add_to_funcs(do_unindent, MMAIN, @@ -1029,15 +1032,11 @@ void shortcut_init(void) if (ISSET(RESTRICTED)) add_to_funcs(do_execute, MMAIN, N_("Execute"), WHENHELP(execute_gist), TOGETHER); -#endif /* !NANO_TINY */ -#ifdef NANO_TINY - add_to_funcs(do_search_backward, MMAIN, - N_("Where Was"), WHENHELP(wherewas_gist), BLANKAFTER); -#else add_to_funcs(do_suspend, MMAIN, N_("Suspend"), WHENHELP(suspend_gist), TOGETHER); -#endif +#endif /* !NANO_TINY */ + #ifdef ENABLE_HELP add_to_funcs(full_refresh, MMAIN, N_("Refresh"), WHENHELP(refresh_gist), TOGETHER); @@ -1108,7 +1107,7 @@ void shortcut_init(void) N_("No Conversion"), WHENHELP(convert_gist), BLANKAFTER); /* Command execution is only available when not in restricted mode. */ - if (!ISSET(RESTRICTED) && !ISSET(VIEW_MODE)) { + if (!ISSET(RESTRICTED) && !ISSET(VIEW_MODE)) add_to_funcs(flip_execute, MINSERTFILE, N_("Execute Command"), WHENHELP(execute_gist), BLANKAFTER); @@ -1117,7 +1116,6 @@ void shortcut_init(void) add_to_funcs(do_suspend, MEXECUTE, N_("Suspend"), WHENHELP(suspend_gist), BLANKAFTER); - } #endif /* !NANO_TINY */ #ifdef ENABLE_BROWSER @@ -1467,24 +1465,22 @@ void shortcut_init(void) #endif } #endif + add_to_sclist(MBROWSER|MHELP, "^C", 0, do_exit, 0); #ifdef ENABLE_BROWSER /* Only when not in restricted mode, allow entering the file browser. */ if (!ISSET(RESTRICTED)) add_to_sclist(MWRITEFILE|MINSERTFILE, "^T", 0, to_files, 0); -#endif - add_to_sclist(MBROWSER|MHELP, "^C", 0, do_exit, 0); - /* Allow exiting from the file browser and the help viewer with - * the same key as they were entered. */ -#ifdef ENABLE_BROWSER + /* Allow exiting the file browser with the same key as used for entry. */ add_to_sclist(MBROWSER, "^T", 0, do_exit, 0); #endif #ifdef ENABLE_HELP + /* Allow exiting the help viewer with the same keys as used for entry. */ add_to_sclist(MHELP, "^G", 0, do_exit, 0); add_to_sclist(MHELP, "F1", KEY_F(1), do_exit, 0); add_to_sclist(MHELP, "Home", KEY_HOME, to_first_line, 0); add_to_sclist(MHELP, "End", KEY_END, to_last_line, 0); #endif -#ifdef ENABLE_COLOR +#ifdef ENABLE_LINTER add_to_sclist(MLINTER, "^X", 0, do_cancel, 0); #endif add_to_sclist(MMOST & ~MFINDINHELP, "F1", KEY_F(1), do_help, 0); From cb1b3a28aba8a9cd8350c3e598838812c1c0daae Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Sun, 21 May 2023 11:29:02 +0200 Subject: [PATCH 8/8] tweaks: normalize the indentation after the previous changes --- src/global.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/global.c b/src/global.c index d71eda75..a73f2ef5 100644 --- a/src/global.c +++ b/src/global.c @@ -1017,16 +1017,16 @@ void shortcut_init(void) N_("Down to anchor"), WHENHELP(nextanchor_gist), BLANKAFTER); #ifdef ENABLE_SPELLER - add_to_funcs(do_spell, MMAIN, - N_("Spell Check"), WHENHELP(spell_gist), TOGETHER); + add_to_funcs(do_spell, MMAIN, + N_("Spell Check"), WHENHELP(spell_gist), TOGETHER); #endif #ifdef ENABLE_LINTER - add_to_funcs(do_linter, MMAIN, - N_("Linter"), WHENHELP(lint_gist), TOGETHER); + add_to_funcs(do_linter, MMAIN, + N_("Linter"), WHENHELP(lint_gist), TOGETHER); #endif #ifdef ENABLE_FORMATTER - add_to_funcs(do_formatter, MMAIN, - N_("Formatter"), WHENHELP(formatter_gist), BLANKAFTER); + add_to_funcs(do_formatter, MMAIN, + N_("Formatter"), WHENHELP(formatter_gist), BLANKAFTER); #endif /* Although not allowed in restricted mode, keep execution rebindable. */ if (ISSET(RESTRICTED)) @@ -1111,11 +1111,11 @@ void shortcut_init(void) add_to_funcs(flip_execute, MINSERTFILE, N_("Execute Command"), WHENHELP(execute_gist), BLANKAFTER); - add_to_funcs(cut_till_eof, MEXECUTE, - N_("Cut Till End"), WHENHELP(cuttilleof_gist), BLANKAFTER); + add_to_funcs(cut_till_eof, MEXECUTE, + N_("Cut Till End"), WHENHELP(cuttilleof_gist), BLANKAFTER); - add_to_funcs(do_suspend, MEXECUTE, - N_("Suspend"), WHENHELP(suspend_gist), BLANKAFTER); + add_to_funcs(do_suspend, MEXECUTE, + N_("Suspend"), WHENHELP(suspend_gist), BLANKAFTER); #endif /* !NANO_TINY */ #ifdef ENABLE_BROWSER