[ANNOUNCE] nano-9.0 is released

Benno Schulenberg <[email protected]> Wed, 8 Apr 2026 20:15:51 +0200
Newsgroups gmane.editors.nano.devel
Message-ID <[email protected]>
2026.04.08 - GNU nano 9.0  "Le bonheur est dans le pré"

• When the cursor almost goes offscreen to the right, all lines are
    now scrolled sideways together, by just the amount needed to keep
    the cursor in view.  Use --solosidescroll or 'set solosidescroll'
    to get back the old, jerky, single-line horizontal scrolling.
• The viewport can be scrolled sideways (in steps of one tabsize)
    with M-< and M->.  See `man nanorc` if M-< and M-> should switch
    between buffers (as they did earlier).
• M-Left, M-Right, M-Up, and M-Down have become rebindable.
• Stopping the recording of a macro immediately after starting it
    cancels the recording and leaves an existing macro in place.
• Feature toggles no longer break a chain of ^K cuts or M-6 copies,
    except the M-K cut-from-cursor toggle.
• With --mouse and --indicator, one can click in the scrollbar area
    to roughly navigate within the buffer.



GNU nano is a simple and easy-to-use editor for on the terminal.
    https://nano-editor.org/manual.html

A concise overview of nano's command keystrokes:
    https://nano-editor.org/cheatsheet.html

The tarball and its signature are here:
    https://nano-editor.org/dist/v9/nano-9.0.tar.xz
    https://nano-editor.org/dist/v9/nano-9.0.tar.xz.asc



Syntax highlighting for AsciiDoc files:
    https://nano-editor.org/more-syntaxes/adoc.nanorc
Syntax highlighting for TOML files:
    https://nano-editor.org/more-syntaxes/toml.nanorc



Specific issues that were addressed in this release:
    https://savannah.gnu.org/bugs/?68046  (`runmacro` caused cutbuffer clearing)
    https://savannah.gnu.org/bugs/?68050  (all toggles caused cutbuffer clearing)
    https://savannah.gnu.org/bugs/?68109  (uncolored end-of-line groff comments)
    https://savannah.gnu.org/bugs/?68117  (no config for reading /etc/nanorc)
    https://bugzilla.redhat.com/2455314   (too broad permissions for ~/.local)



Changes between v8.7 and v9.0:
------------------------------

Charles Mirabile (1):
        macro: cancel the recording if nothing was entered between start and stop

Benno Schulenberg (93):
        bindings: assign M-< and M-> to the sideways-scrolling functions
        build: add move.c to the list of files that contain translatable strings
        build: avoid three warnings when compiling against glibc-2.43
        build: exclude whole-window sideways scrolling from the tiny version
        bump version numbers and add a news item for the 9.0 release
        copyright: update the years for significantly changed files
        copyright: update the years for significantly changed files
        copyright: update the years for the FSF
        display: add extra variable, to avoid one-way toggling of SOLO_SIDESCROLL
        display: begin looking for new start matches at the correct place
        display: correct the previous commit -- the -1 is needed when going left
        display: draw the "<" marker only if part of the line is onscreen
        display: for narrow windows, fall back to single-line sidescrolling
        display: let option --jumpyscrolling affect also sideways scrolling
        display: put cursor at CUSHION columns from edge when scrolling sideways
        display: redraw the screen also when 'brink' is not what it should be
        display: store `brink` per buffer, to keep the viewport stable
        display: when scrolling sideways, refresh edit window only if mark is on
        docs: add an Exit Status section to the man page and the manual
        docs: add a notice about the changed sideways scrolling behavior
        docs: add a section about the recording and replaying of keyboard macros
        docs: add ^B among the list of keystrokes for --modernbindings
        docs: add notices about the reassignment of the M-< and M-> keystrokes
        docs: adjust the cheatsheet for the new functions and changed bindings
        docs: adjust the description of `scrollright` for the changed behavior
        docs: adjust the description of `scrollright` for the improved behavior
        docs: advise the use of --sysconfdir=/etc when configuring nano
        docs: copy the 8.7.1 news item from the release branch
        docs: document the new bindable `scrollleft` and `scrollright` functions
        docs: document the new --solosidescroll and 'set solosidescroll' options
        docs: explain what "overlong" means for --breaklonglines
        docs: in the cheatsheet, place Ctrl+L in the Special movement section
        docs: mention that M-Left, M-Right, M-Up, and M-Down are valid keynames
        docs: reshuffle the --solosidescroll option to match the order in --help
        docs: trim stuff that is more than four years old from the changelog
        docs: use rebindable names M-Up and M-Down instead of Alt+Up and Alt+Down
        feedback: prevent interpretation of %s and similar in a filename
        files: include also the slash when re-adding the filename to the path
        gnulib: update to a recent version, to allow compiling against glibc-2.43
        gnulib: update to its current upstream state
        help: group the sideways scrolling keystrokes with the horizontal movers
        history: create the ~/.local directory with limited access rights
        input: allow `recordmacro` and `runmacro` to continue cuts and copies
        input: prevent also a string bind from breaking a chain of cuts or copies
        input: prevent most toggles from breaking a series of cuts or copies
        mouse: allow clicking before the answer to place cursor at its beginning
        moving: ignore `scrollleft` and `scrollright` when softwrapping
        moving: ignore `scrollleft` and `scrollright` with --solosidescroll too
        moving: make the minimum step for sideways scrolling two cells
        moving: stay in the viewport when stepping to a longer line
        moving: when scrolling sideways, search also upward for a longer line
      * new default feature: smooth whole-window sideways scrolling
      * new feature: bindable functions for scrolling a tabsize left or right
      * new feature: clicking in the scrollbar jumps to the corresponding line
        options: accept --solosidescroll and 'set solosidescroll'
        po: update translations and regenerate POT file and PO files
        rcfile: allow rebinding M-Left, M-Right, M-Up, and M-Down
        syntax: elisp: remove file -- something specific to Emacs is not for nano
        syntax: groff, man: colorize also \" tail comments and \# line comments
        syntax: guile: colorize more syntax words and procedure names
        syntax: nanorc: colorize M-Left, M-Right, M-Up, M-Down as valid keynames
        syntax: python: colorize also the `match` and `case` keywords
        syntax: python: require a blank after the keyword `match`
        syntaxes: add a license line to the files created by Mark Oteiza
        tweaks: add a comment for an unclear fragment of code
        tweaks: avoid having to restore the original click coordinates
        tweaks: condense the Python coloring rules, and reword a comment
        tweaks: condense two oververbose comments
        tweaks: correct a comment
        tweaks: correct and simplify the logic from the previous two commits
        tweaks: defend against hypothetical format specifiers
        tweaks: give the three "debugging" feedback messages a more unusual color
        tweaks: lowercase subsequent words in section titles, to be less pompous
        tweaks: move a function to a more logical place
        tweaks: no need to be overpolite when giving directions
        tweaks: normalize brace placement after the previous change
        tweaks: reduce the scope of two variables
        tweaks: refer to two renamed gnulib modules with their adjusted names
        tweaks: remove an unneeded parameter from get_mouseinput()
        tweaks: rename a type, away from a double abbreviation
        tweaks: rename a variable, away from a double abbreviation
        tweaks: rename a variable, for contrast, and to be more fitting
        tweaks: rename a variable, to be more fitting
        tweaks: rename a variable, to be more fitting and away from an abbrev
        tweaks: rename a variable whose function has changed over time
        tweaks: rename three functions, to be more accurate
        tweaks: rename two functions, reword some comments, rewrap a line
        tweaks: rename two variables, away from abbreviations
        tweaks: reorder a list of keys, starting with singles, ending with group
        tweaks: replace the three instances of impersonal "one" with direct "you"
        tweaks: reshuffle or transmute a few lines, to elide an 'if'
        tweaks: slightly adjust a wording
        tweaks: slightly improve three comments in the sample nanorc


-- 

Benno
OpenPGP_signature.asc (application/pgp-signature, 840 B)
-----BEGIN PGP SIGNATURE-----

wsF5BAABCAAjFiEEFo5vQpe/16ea/USWUUu+Lrjhlh8FAmnWm1gFAwAAAAAACgkQUUu+Lrjhlh+L
DBAA0YeeT6A6vYwSn9CvtVYwodRqj3ctTTVarBWApsePw0hjzUkKInpgxP170RreXAHNCY5dGvnv
BVely/QJ67XpgYACbGvymuHzaS9V9cdvaK7sERTPVtMQ8kxMDJHVNldM1+eRIVhar3NtWJdp+XKw
hYKB7BxllnE/PXkRKDOTqSm81J56ILFriPB87bYkAj2ydkdGrKlSjk93xR57I8WRNB44xpS+WXuD
iGlCSErRAFNu8BX5E3PyST83nABhiav1F7RaFeaoz3sQZXKyfDndoFRN9C1VJ5CPfGpiwamZGJ0M
49kusRj51tmDZoOWmLWxbjVX+qRWEADac1LZTF8fKwZ0PSegzdfa+jBcc1qevYktLytaaO+rzIXZ
74tO6HwKKx3/FnpYWM2hK/ZxAsR5q2Fejc6EyBdn8e3XpSrGlJALoONDXc/J0A8MFOf2hKUmDOr5
Qc9u5Hj+P4ThLG9dLc5p7Dp0UZhE6gNKLBc9ce0/6YHXXuiKmizqaazvWs35cEUa/RU4mnbTUvuJ
/1z+vnKhBp1JjTwwy/jeqbPCAzFuRNvkPq0J4Es6MbWzCV7RLh0I5yf2THsEPjoZTPJ3Cj3fyirC
1ZouilsXekhCr9Vnc1ddJf5NdC/2U0r0Hhd08h9gCWWpWCPZGf4E2ICTDGFOyHExV+Ycwr5qqe0n
jjQ=
=LUiy
-----END PGP SIGNATURE-----