nano

nano with my custom patches
git clone git://bsandro.tech/nano
Log | Files | Refs | README | LICENSE

commit ce5513b009a4c639d3a0b057fa0de94cd82e14e4
parent a98b03e46e5a655f14598895ff43b2cb82201f1f
Author: Benno Schulenberg <bensberg@telfort.nl>
Date:   Wed,  1 May 2024 10:01:44 +0200

bump version numbers and add a news item for the 8.0 release

Diffstat:
MChangeLog | 181+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
MIMPROVEMENTS | 8++++++++
MNEWS | 25+++++++++++++++++++++++++
MREADME | 2+-
Mconfigure.ac | 2+-
Mdoc/faq.html | 2+-
Mdoc/nano.1 | 2+-
Mdoc/nano.texi | 10+++++-----
Mdoc/nanorc.5 | 2+-
Mdoc/rnano.1 | 2+-
Mroll-a-release.sh | 2+-
Msyntax/default.nanorc | 4++--
12 files changed, 228 insertions(+), 14 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -1,3 +1,184 @@ +Changes between v7.2 and v8.0: +------------------------------ + +Andy Koppe (2): + input: scroll on mousewheel events instead of moving the cursor + rcfile: map the gray #rgb codes (#111 to #EEE) to the xterm grayscale + +Benjamin Valentin (1): + new feature: interpret also <filename>:<linenumber> when opening a file + +Benno Schulenberg (155): + bindings: allow speller and friends to be rebound also in restricted mode + bindings: in the tiny version, bind M-6 only in main, not at the prompts + bindings: let <Alt+Home/End> move the cursor to top/bottom of viewport + bindings: let M-" place/remove an anchor, and let M-' jump to one + bindings: let M-& show the ncurses version+patch, as a small Easter egg + bindings: make ^F start a forward search by default + bindings: make ^F start a forward search by default + bindings: set up modern bindings also when binary's name starts with "e" + bindings: show ^- instead of ^/ for 'flipgoto' when on a Linux console + bindings: with --modern, do not let ^Q^Q quit nano without saving + bindings: with --modern, use ^H for Help when the terminal allows it + browser: report an error instead of crashing when the folder disappears + browser: restore typing position at prompt after "^R name ^T ^F ^V ^C" + bump version numbers and add a news item for the 8.0 release + chars: add a helper function for stripping leading blanks from a string + copyright: update the years for the FSF + display: add a wnoutrefresh() call for NetBSD, to force a cursor update + display: do not attempt to draw a line that is outside the viewport + display: draw a new magic line rightaway when there are multiline regexes + display: show the help lines down to the tiniest possible terminal size + docs: add a caveat in the FAQ about bracketed pastes + docs: add a clarifying note to the description of --tabstospaces + docs: add an example binding for normalizing Unicode to the sample nanorc + docs: add a reference to the 'help-nano' mailing list + docs: add M-C and M-Z to the cheatsheet, and reshuffle for balance + docs: add ^T^S (spell check) and M-S (softwrap) to the cheatsheet + docs: add two examples of custom key bindings to the nanorc manpage + docs: adjust an example help line in the README to the current state + docs: adjust the cheatsheet for the changed meanings of ^F, ^B, M-F, M-B + docs: clarify that a fileregex is matched against the absolute filename + docs: delete a remark about libvte that is no longer relevant + docs: describe nano more specifically as a text editor + docs: document the <filename>:<linenumber> thing for cursor positioning + docs: document the new bindable functions 'toprow' and 'bottomrow' + docs: document the new --modernbindings option + docs: fix a ten-year-old typo, reported by `correctmost` + docs: improve the description of the 'flipexecute' bindable function + docs: in a synopsis, use braces around a choice of required parts + docs: in the sample nanorc, set the guidestripe to a soft grey + docs: mention backreferences (for replacements with regular expressions) + docs: mention how to get the old behavior of ^F, ^B, M-F, and M-B back + docs: mention that a restricted nano does not access the history files + docs: mention that 'light' background colors do not work on Linux console + docs: mention that --modernbindings overrides --preserve + docs: mention the changed meanings of ^F/^B and also in the texi manual + docs: mention the missing two options that override --bold + docs: say "mini bar", not "minibar", when referring to the actual bar + docs: trim stuff that is more than five years old from the changelog + docs: use a space after #, like everywhere else in the sample nanorc + editing: adjust the mark before trimming redundant blanks + execute: show "Older" and "Newer" in the help lines, to allow rebinding + feedback: drop an unnecessary warning, to not bother the user + feedback: lowercase a letter, as the phrase is not a full sentence + feedback: raise the level of "Macro is empty", to match similar messages + feedback: suppress filename and linecount when --zero is active + feedback: suppress format-conversion messages for --zero and --mini + files: do not allow M-U to remove text read from standard input + files: run `chmod` and `chown` on the descriptor, not on the filename + formatter: do not crash when the formatter command is empty + general: include the Copy function (M-6 or ^C) into the tiny version + general: let the constant-show toggle override the zero-interface mode + gnulib: update to current upstream state, to make a fresh checkout work + gnulib: update to its current upstream state + help: give the "Replace with" prompt its own help text + help: mention M-Home and M-End in the help text and help lines + help: rebalance the help items when --preserve is used + help: restore ^H and ^D as the primary shortcuts for Backspace and Delete + help: show ^F/^B as primary shortcuts for search, not as secondary + indicator: do not oversize the scroller when softwrapping + input: avoid hanging after a 39-character paste on a VSCode terminal + input: flush the keystroke buffer upon any kind of error condition + input: for one bump of the mousewheel scroll two lines, not three + input: intercept a spurious keycode and say what the actual problem is + input: let the handler of string binds return a byte whenever possible + input: neutralize two spurious keycodes from VTE terminals + input: prevent 'macro_length' from underflowing when hammering M-: + input: recognize certain escape sequences for F13 to F16 again + input: snip the `recordmacro` and `runmacro` keystrokes in a better way + input: store key codes in the macro buffer as they come in from ncurses + input: store keystroke in macro buffer only when about to interpret it [reverted] + justify: keep as much of the marked region onscreen as possible + justify: keep the cursor at the original end of a marked region + justify: recompute the multidata for paragraphs larger than the viewport + justify: set the correct starting point also with --cutfromcursor + justify: set `x = 0` for the undo item, for when using --cutfromcursor + linter: do not mess up the input stream when the linter command is empty + linter: use a format string, to deflect format-string attacks + memory: prevent a leak by freeing a possibly already existing color combo + minibar: mention the file format when it's DOS or Mac + moving: preserve horizontal position when jumping to top or bottom row + new feature: functions that jump to the top or bottom of the viewport + new feature: option --modernbindings sets up more widespread key bindings + options: make --modernbindings actually override --preserve + rcfile: add bindable functions for moving the cursor to top or bottom row + rcfile: avoid crashing on an include path that is way too long + replacing: stash the string to be replaced while asking for replacement + revert the previous commit -- forget about -? as a synonym for --help + screen: recalculate the multidata when detecting the need for it + search: avoid a crash after a nested search, reported by `correctmost` + search: avoid crashing after searching a help text during a regex replace + shutdown: ignore a modified buffer when in view mode + softwrap: adjust start-of-screen when the 'edittop' line is hard-wrapped + softwrap: realign start-of-screen when redoing an automatic hard-wrap + softwrap: remember the actual breaking point when wrapping at blanks + startup: use a format string, to deflect format-string attacks + syntax: c: require a preceding blank when a line comment contains a quote + syntax: javascript: recognize also the .mjs extension + syntax: makefile: ensure that the <Tab> key always produces a tab + syntax: makefile, sh: recognize also a fresh Makefile and fresh .profile + syntax: nanorc: colorize {toprow} and {bottomrow} for string binds + syntax: sh: recognize more shells than `sh` on a shebang line for busybox + tweaks: add a comment that refers to the VTE spurious-code issue + tweaks: add a missing 'type' attribute to a <style> tag + tweaks: add an extra variable, to avoid reusing one for another purpose + tweaks: add another translator hint, to help avoid overlong key tags + tweaks: adjust a comment for the changed handling of gray #rgb codes + tweaks: avoid calling isblank()/isalpha() on what could be a signed char + tweaks: condense the code that searches for a colon plus line number + tweaks: delete a redundant fragment of code from do_replace_loop() + tweaks: elide a redundant variable + tweaks: express an 'if' more concisely, and add two blank lines + tweaks: implement the fix of the previous commit somewhat differently + tweaks: improve three translator hints + tweaks: make two strings equal to a third, to slightly ease translation + tweaks: move two static declarations to the only function that uses them + tweaks: normalize the indentation after the previous change + tweaks: normalize the indentation after the previous changes + tweaks: pull a fragment of code a bit forward, to enable the next commit + tweaks: remove two pairs of unneeded braces, and normalize a line + tweaks: rename a function and variable, to describe better what they do + tweaks: rename a function, for contrast, and update antiquated comments + tweaks: rename a struct element, to avoid a theoretical name collision + tweaks: rename a symbol (to be clearer), and add three missing comments + tweaks: rename a variable, away from an abbreviation + tweaks: rename a variable, away from an abbreviation + tweaks: rename a variable, to be a bit more indicative + tweaks: rename a variable, to be clearer when seen in context + tweaks: rename a variable, to be more readable + tweaks: rename a variable, to better indicate what it represents + tweaks: rename two variables, to be clearer and to match others + tweaks: reshuffle four lines, to allow folding some #ifdefs together + tweaks: reshuffle three fragments of code, moving related things together + tweaks: rewrap a comment, and reshuffle seven declarations + tweaks: rewrap two old news items + tweaks: shrink the set of characters recognized as line-column separator + tweaks: slightly improve a comment, to be more accurate + tweaks: slightly reword the help text for the Replace-With prompt + tweaks: ungettextize three strings, to make a translator hint right again + tweaks: use a pair of parentheses to clarify the order of operations + undo: force a screen refresh also for the special case Bsp-at-EOF + undo: prevent a use-after-free, reported by `correctmost` + undo: recompute the multidata when a piece of text is replaced + undo the prelast commit in order to redo it with a fuller commit message + verbatim: avoid referencing an uninitialized value + wrapping: delete only single characters, not a possibly marked region + +Jordi Mallach (1): + docs: fix "availabilty" typo in the manual and the nanorc manpage + +Mateusz Kazimierczuk (1): + options: add -? as a synonym of -h (--help) [reverted] + +Matteo Raso (1): + syntax: python: colorize decorators specially + +Mike Frysinger (2): + build: link in $(GETRANDOM_LIB) from gnulib + gnulib: import canonicalize-lgpl for realpath + + Changes between v7.1 and v7.2: ------------------------------ diff --git a/IMPROVEMENTS b/IMPROVEMENTS @@ -1,6 +1,14 @@ Improvements in GNU nano ======================== +Since 8.0: + - To accommodate newcomers, ^F now starts a forward search. + - Option --modernbindings makes ^Q quit, ^X cut, ^C copy, ^V paste, + ^Z undo, ^Y redo, ^O open a file, and ^G find again, among others. + - M-Home/M-End put the cursor on the first/last row in the viewport. + - With `nano filename:number` the given file will be opened with the + cursor on the given line number. + Since 7.0: - String binds may contain bindable function names between braces. - Word completion looks for candidates in all open buffers. diff --git a/NEWS b/NEWS @@ -1,3 +1,28 @@ +2024.05.01 - GNU nano 8.0 "Grus grus" +• By default ^F is bound to starting a forward search, and ^B to + starting a backward search, while M-F and M-B repeat the search + in the corresponding direction. (See the documentation if you + want the old bindings back.) +• Command-line option --modernbindings (-/) makes ^Q quit, ^X cut, + ^C copy, ^V paste, ^Z undo, ^Y redo, ^O open a file, ^W write a + file, ^R replace, ^G find again, ^D find again backwards, ^A set + the mark, ^T jump to a line, ^P show the position, and ^E execute. +• Above modern bindings are activated also when the name of nano's + executable (or a symlink to it) starts with the letter "e". +• To open a file at a certain line number, one can now use also + `nano filename:number`, besides `nano +number filename`. +• <Alt+Home> and <Alt+End> put the cursor on the first and last + row in the viewport, while retaining the horizontal position. +• When the three digits in an #RGB color code are all the same, + the code is mapped to the xterm grey scale, giving access to + fourteen levels of grey instead of just four. +• For easier access, M-" is bound to placing/removing an anchor, + and M-' to jumping to the next anchor. +• Whenever an error occurs, the keystroke buffer is cleared, thus + stopping the execution of a macro or a string bind. +• The mousewheel scrolls the viewport instead of moving the cursor. + + 2023.01.18 - GNU nano 7.2 "Boer doe mij 't hekke lös!" • <Shift+Insert> is prevented from pasting in view mode. diff --git a/README b/README @@ -15,7 +15,7 @@ Appearance In rough ASCII graphics, this is what nano's screen looks like: ____________________________________________________________________ - | GNU nano 7.2 filename Modified | + | GNU nano 8.0 filename Modified | -------------------------------------------------------------------- | This is the text window, displaying the contents of a 'buffer', | | the contents of the file you are editing. | diff --git a/configure.ac b/configure.ac @@ -16,7 +16,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see https://www.gnu.org/licenses/. -AC_INIT([GNU nano], [7.2], [nano-devel@gnu.org], [nano]) +AC_INIT([GNU nano], [8.0], [nano-devel@gnu.org], [nano]) AC_CONFIG_SRCDIR([src/nano.c]) AC_CANONICAL_HOST AM_INIT_AUTOMAKE([1.14]) diff --git a/doc/faq.html b/doc/faq.html @@ -92,7 +92,7 @@ <h3><a name="1.3"></a>1.3. Why the name change from TIP?</h3> <blockquote><p>On January 10, 2000, TIP was officially renamed to nano because of a namespace conflict with another program called 'tip'. The original 'tip' program &quot;establishes a full duplex terminal connection to a remote host&quot;, and was included with many older Unix systems (and newer ones like Solaris). The conflict was not noticed at first because there is no 'tip' utility included with most GNU/Linux distributions (where nano was developed).</p></blockquote> <h3><a name="1.4"></a>1.4. What is the current version of nano?</h3> -<blockquote><p>The current version of nano <i>should</i> be <b>7.2</b>. Of course, you should always check the <a href="https://nano-editor.org/">nano homepage</a> to see what the latest and greatest version is.</p></blockquote> +<blockquote><p>The current version of nano <i>should</i> be <b>8.0</b>. Of course, you should always check the <a href="https://nano-editor.org/">nano homepage</a> to see what the latest and greatest version is.</p></blockquote> <h3><a name="1.5"></a>1.5. I want to read the man page without having to download the program!</h3> <blockquote><p>Jeez, demanding, aren't we? Okay, look <a href="https://nano-editor.org/dist/latest/nano.1.html">here</a>.</p></blockquote> <hr width="100%"> diff --git a/doc/nano.1 b/doc/nano.1 @@ -16,7 +16,7 @@ .\" Documentation License along with this program. If not, see .\" <https://www.gnu.org/licenses/>. .\" -.TH NANO 1 "version 7.2" "January 2023" +.TH NANO 1 "version 8.0" "May 2024" .SH NAME nano \- Nano's ANOther text editor, inspired by Pico diff --git a/doc/nano.texi b/doc/nano.texi @@ -12,9 +12,9 @@ The complete manual for the GNU nano text editor. @end documentdescription @smallbook -@set EDITION 0.7 -@set VERSION 7.2 -@set UPDATED January 2023 +@set EDITION 0.8 +@set VERSION 8.0 +@set UPDATED May 2024 @dircategory Editors @direntry @@ -29,7 +29,7 @@ The complete manual for the GNU nano text editor. @title GNU @command{nano} @subtitle a small and friendly text editor -@subtitle version 7.2 +@subtitle version 8.0 @author Chris Allegretta @@ -79,7 +79,7 @@ For suggesting improvements: @email{nano-devel@@gnu.org} @node Top @top -This manual documents GNU @command{nano}, version 7.2. +This manual documents GNU @command{nano}, version 8.0. @menu * Introduction:: diff --git a/doc/nanorc.5 b/doc/nanorc.5 @@ -16,7 +16,7 @@ .\" Documentation License along with this program. If not, see .\" <https://www.gnu.org/licenses/>. .\" -.TH NANORC 5 "version 7.2" "January 2023" +.TH NANORC 5 "version 8.0" "May 2024" .SH NAME nanorc \- GNU nano's configuration file diff --git a/doc/rnano.1 b/doc/rnano.1 @@ -16,7 +16,7 @@ .\" Documentation License along with this program. If not, see .\" <https://www.gnu.org/licenses/>. .\" -.TH RNANO 1 "version 7.2" "January 2023" +.TH RNANO 1 "version 8.0" "May 2024" .SH NAME rnano \- a restricted nano diff --git a/roll-a-release.sh b/roll-a-release.sh @@ -1,6 +1,6 @@ #!/bin/bash -VERSION="7.2" +VERSION="8.0" ./configure -C --enable-tiny && make && ./configure -C && diff --git a/syntax/default.nanorc b/syntax/default.nanorc @@ -8,8 +8,8 @@ comment "#" color ,red " + +" # Nano's release motto, then name plus version. -color italic,lime "\<[Nn]ano [1-7]\.[0-9][-.[:alnum:]]* "[^"]+"" -color brightred "\<(GNU )?[Nn]ano [1-7]\.[0-9][-.[:alnum:]]*\>" +color italic,lime "\<[Nn]ano [1-8]\.[0-9][-.[:alnum:]]* "[^"]+"" +color brightred "\<(GNU )?[Nn]ano [1-8]\.[0-9][-.[:alnum:]]*\>" # Dates color latte "\<[12][0-9]{3}\.(0[1-9]|1[012])\.(0[1-9]|[12][0-9]|3[01])\>"