diff --git a/doc/faq.html b/doc/faq.html
index bf32fbd4..7928aa48 100644
--- a/doc/faq.html
+++ b/doc/faq.html
@@ -222,10 +222,10 @@
Try holding down the Shift key and selecting or pasting the text as you normally would.
4.6. When I paste text into a document, each line gets indented further than the last. Why? And how can I stop this?
You have the autoindent feature turned on. Hit Meta-I to turn it off, paste your text, and then hit Meta-I again to turn it back on.
- Update: Since version 4.8, nano will suppress auto-indentation during a paste, so you no longer need to toggle it off and on manually.
+ Update: Since version 4.8, nano will suppress auto-indentation during a paste (when your terminal understands bracketed pastes), so you no longer need to toggle it off and on manually.
4.7. When I paste from Windows into a remote nano, nano rewraps the lines. What gives?
When pasting from Windows, in some situations linefeeds are sent instead of carriage returns (Enters). And linefeeds are ^Js, which make nano justify (rewrap) the current paragraph. To prevent these linefeeds from causing these unwanted justifications, add this line to your .nanorc on the remote Linux box: unbind ^J main or bind ^J enter main, depending on whether the paste contains CR + LF or only LF.
- Update: Since version 4.8, nano will ignore linefeed characters in a paste, so you no longer need the above workaround.
+ Update: Since version 4.8, nano will ignore linefeed characters in a paste (when your terminal understands bracketed pastes), so you no longer need the above workaround.
4.8. I've compiled nano with color support, but I don't see any color when I run it!
If you want nano to actually use color, you have to specify the color configurations you want it to use in your .nanorc. Several example configurations are in the syntax/ subdirectory of the nano source, which are normally installed to /usr/local/share/nano/. To enable all of them, uncomment the line # include "/usr/local/share/nano/*.nanorc" in your nanorc. See also section 3.9.
4.9. How do I make nano my default editor (in Pine, mutt, etc.)?
diff --git a/doc/nano.1 b/doc/nano.1
index fde6da75..73219b38 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
@@ -28,10 +28,10 @@ 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
+\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.
@@ -250,7 +250,7 @@ Make the cursor visible in the file browser (putting it on the
highlighted item) and in the help viewer. Useful for braille users
and people with poor vision.
.TP
-.BR \-h ", " \-\-help
+.BR \-h ", " \-? ", " \-\-help
Show a summary of the available command-line options and exit.
.TP
.BR \-i ", " \-\-autoindent
diff --git a/doc/nano.texi b/doc/nano.texi
index 6ab23579..0fe14e23 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.
@@ -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
@@ -574,6 +574,7 @@ highlighted item) and in the help viewer. Useful for braille users
and people with poor vision.
@item -h
+@itemx -?
@itemx --help
Show a summary of command-line options and exit.
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
diff --git a/doc/rnano.1 b/doc/rnano.1
index 27762bc6..1892d3e9 100644
--- a/doc/rnano.1
+++ b/doc/rnano.1
@@ -32,19 +32,23 @@ 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
-.BR \-h ", " \-\-help
+.BR \-h ", " \-? ", " \-\-help
Show the available command-line options and exit.
.P
For all existing options, see the \fBnano\fR(1) man page.
diff --git a/src/browser.c b/src/browser.c
index d569bb43..e5a4047c 100644
--- a/src/browser.c
+++ b/src/browser.c
@@ -436,7 +436,10 @@ char *browse(char *path)
titlebar(path);
- while (TRUE) {
+ if (list_length == 0) {
+ statusline(ALERT, _("No entries"));
+ napms(1200);
+ } else while (TRUE) {
functionptrtype function;
int kbinput;
diff --git a/src/definitions.h b/src/definitions.h
index 9eb54ac4..d687edcf 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/files.c b/src/files.c
index 5fdc9a00..c81474b1 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. */
diff --git a/src/global.c b/src/global.c
index e7217a02..fa6f31b1 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
@@ -981,7 +984,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,
@@ -1020,29 +1026,27 @@ 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);
+ 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
- }
-#endif /* !NANO_TINY */
+ /* Although not allowed in restricted mode, keep execution rebindable. */
+ if (ISSET(RESTRICTED))
+ add_to_funcs(do_execute, MMAIN,
+ N_("Execute"), WHENHELP(execute_gist), TOGETHER);
-#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);
@@ -1113,16 +1117,15 @@ 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);
- 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
@@ -1475,24 +1478,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);
diff --git a/src/nano.c b/src/nano.c
index 783f2997..3492745f 100644
--- a/src/nano.c
+++ b/src/nano.c
@@ -614,7 +614,7 @@ void usage(void)
#if defined(ENABLE_BROWSER) || defined(ENABLE_HELP)
print_opt("-g", "--showcursor", N_("Show cursor in file browser & help text"));
#endif
- print_opt("-h", "--help", N_("Show this help text and exit"));
+ print_opt("-h, -?", "--help", N_("Show this help text and exit"));
#ifndef NANO_TINY
print_opt("-i", "--autoindent", N_("Automatically indent new lines"));
print_opt("-j", "--jumpyscrolling", N_("Scroll per half-screen, not per line"));
@@ -1857,7 +1857,7 @@ int main(int argc, char **argv)
SET(RESTRICTED);
while ((optchr = getopt_long(argc, argv, "ABC:DEFGHIJ:KLMNOPQ:RS$T:UVWX:Y:Z"
- "abcdef:ghijklmno:pqr:s:tuvwxy!%_0", long_options, NULL)) != -1) {
+ "abcdef:gh?ijklmno:pqr:s:tuvwxy!%_0", long_options, NULL)) != -1) {
switch (optchr) {
#ifndef NANO_TINY
case 'A':
@@ -2007,9 +2007,6 @@ int main(int argc, char **argv)
SET(SHOW_CURSOR);
break;
#endif
- case 'h':
- usage();
- exit(0);
#ifndef NANO_TINY
case 'i':
SET(AUTOINDENT);
@@ -2106,7 +2103,13 @@ int main(int argc, char **argv)
SET(ZERO);
break;
#endif
- default:
+ case 'h':
+ case '?':
+ /* If the option is valid, print the help text and exit. */
+ if (!optopt) {
+ usage();
+ exit(0);
+ }
printf(_("Type '%s -h' for a list of available options.\n"), argv[0]);
exit(1);
}
diff --git a/src/winio.c b/src/winio.c
index 05883e74..0b5cf9d0 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -429,7 +429,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;