[ANNOUNCE] nano-9.0 is released

Benno Schulenberg via Info-nano <[email protected]> Wed, 8 Apr 2026 17:28:31 +0200
Newsgroups gmane.editors.nano.announce,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

_______________________________________________
Info-nano mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/info-nano
OpenPGP_signature.asc (application/pgp-signature, 840 B)
-----BEGIN PGP SIGNATURE-----

wsF5BAABCAAjFiEEFo5vQpe/16ea/USWUUu+Lrjhlh8FAmnWdCAFAwAAAAAACgkQUUu+Lrjhlh+6
8A//Ut0DiMqlpBhIQzo0olE09Y/i5T3r3attRJa43iTAwfH36IBjsdwOhstE1GFivYtLhQf6sMfp
LRuG0u3EPP3WaysdUOdZTHdOC4ZSSxkEx8UAmeQYWVaWkhvbhNbyuDMXoWdtrZtN1K19kaSBByeq
4Kq23aR7uo+omoQ4zAHEHJPy87NtYpspZ0/GGUKZh+7Zz7l0Ei33zx5WCReMWgfx/r3jOVLNGy2f
zUDX1FIHccoMFF0bFh7gmkxvN49tGSYsPWmrzlm1hFf3QpK2QLrplTstChqjpp4M6BILJ83pk/j+
E1XZh6KLiS8+DyNFSiyMxD7nZD61Q27KRrZUSUsisoWhqe0cJ/HTXUrPAWNgUMOMx4FOMSn4v/tb
wnxSaeXOYf/OwGX9aYd2KDRjopTswC4MU6rNe+OJnsBakMX+MGZYUmF9Fo/YFSkTnaFkl7JM9uS1
Dov+z0IN0B5OQqIu94tmwCd4+ZgVmO95Ntk+nffs8GLohlSvJOe8rkCN8zwLBXoStagsH+YXJCSw
4dubv0sVeD5fA2qKkc9027H/cczIT3xc8JVuocrKmUi0lumIyOH0hEVQd3RcDO5XwCRT+DHQRDdP
vZmK1BrjBjsyZfZ3ii2fDsjf7+CO8PsK5xudolfXPkyTOL68DLuuD0ICMuQ+KkZ3j8L90LHgF3D5
GvY=
=UBMP
-----END PGP SIGNATURE-----