[ANNOUNCE] nano-4.9 is released
Benno Schulenberg <[email protected]> Tue, 24 Mar 2020 11:47:16 +0100
| Newsgroups | gmane.editors.nano.announce,gmane.editors.nano.devel |
|---|---|
| Message-ID | <[email protected]> |
This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--===============2299461703758199098==
Content-Type: multipart/signed; micalg=pgp-sha512;
protocol="application/pgp-signature";
boundary="AYFttuDp2UpkqtPmxxzsXwMCwU3F9CK0x"
This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--AYFttuDp2UpkqtPmxxzsXwMCwU3F9CK0x
Content-Type: multipart/mixed; boundary="ztiMh9kUTrNXGOOcpQY40N2Rw1mhfaQu5"
--ztiMh9kUTrNXGOOcpQY40N2Rw1mhfaQu5
Content-Type: text/plain; charset=utf-8
Content-Language: en-US
Content-Transfer-Encoding: quoted-printable
2020.03.24 - GNU nano 4.9 "die fetten Jahre sind vorbei"
=E2=80=A2 When justifying a selection, the new paragraph and the
succeeding one get the appropriate first-line indent.
=E2=80=A2 Trying to justify an empty selection does not crash.
=E2=80=A2 Redoing the insertion of an empty file does not crash.
=E2=80=A2 On the BSDs and macOS, ^H has become rebindable again
(in most terminal emulators, not on the console).
=E2=80=A2 DOS line endings in nanorc files are accepted.
=E2=80=A2 Option --suspend / 'set suspend' has been renamed to
the more logical --suspendable / 'set suspendable'.
GNU nano is a simple and easy-to-use editor for on the terminal.
https://nano-editor.org/
https://nano-editor.org/manual.html
A concise overview of nano's shortcut keystrokes:
https://nano-editor.org/cheatsheet.html
The tarball and its signature are here:
https://nano-editor.org/dist/latest/nano-4.9.tar.xz
https://nano-editor.org/dist/latest/nano-4.9.tar.xz.asc
Specific issues that were addressed in this release:
https://savannah.gnu.org/bugs/?56307 (trailing blanks after justificat=
ion)
https://savannah.gnu.org/bugs/?56308 (copy first-line indent [request=
])
https://savannah.gnu.org/bugs/?57437 (possible mistaken first-line ind=
ent)
https://savannah.gnu.org/bugs/?57756 (accept nanorc in DOS format [re=
quest])
https://savannah.gnu.org/bugs/?57777 (useless buffer when honoring loc=
k file)
https://savannah.gnu.org/bugs/?57804 (wrong character count after M-V)=
https://savannah.gnu.org/bugs/?57808 (remaining tail line after undo)
https://savannah.gnu.org/bugs/?57832 (wrong count after undoing hardwr=
ap)
https://savannah.gnu.org/bugs/?57851 (unwanted jumpy scroll with softw=
rap)
https://savannah.gnu.org/bugs/?57897 (^K did not cut penultimate line)=
https://savannah.gnu.org/bugs/?57900 (M-T could cut emptiness at EOF)
https://savannah.gnu.org/bugs/?57901 (missing feedback with --tempfile=
)
https://savannah.gnu.org/bugs/?57915 (*crash* when redoing empty inser=
tion)
https://savannah.gnu.org/bugs/?57931 (filtering could filter too much)=
https://savannah.gnu.org/bugs/?57932 (use of some uninitialized memory=
)
https://savannah.gnu.org/bugs/?57934 (another use of uninitialized mem=
ory)
https://savannah.gnu.org/bugs/?57942 (nanorc allowed some empty regexe=
s)
https://savannah.gnu.org/bugs/?57950 (start=3D without end=3D was stor=
ed anyway)
https://savannah.gnu.org/bugs/?57958 (poorly placed cursor upon some r=
edos)
https://savannah.gnu.org/bugs/?57959 (*crash* when justifying empty re=
gion)
https://savannah.gnu.org/bugs/?57960 (backward selection not always re=
tained)
https://savannah.gnu.org/bugs/?57972 (out-of-bounds access when justif=
ying)
https://savannah.gnu.org/bugs/?57974 (succeeding indentation could be =
wrong)
https://savannah.gnu.org/bugs/?57981 (rebinding ^H on macOS did not wo=
rk)
https://savannah.gnu.org/bugs/?57984 (possible miswrapping for small w=
idths)
https://savannah.gnu.org/bugs/?57987 (unwanted linefeed in help text)
https://savannah.gnu.org/bugs/?57991 (help text could scroll horizonta=
lly)
https://savannah.gnu.org/bugs/?57993 (misplaced "[" with softwrap)
https://savannah.gnu.org/bugs/?57994 (no title bar in Korean locale)
https://savannah.gnu.org/bugs/?58010 (LF was ignored in bracketed past=
e)
Changes between v4.8 and v4.9:
------------------------------
Saagar Jha (1):
rcfile: fix an out-of-bounds read on empty lines
Neal Gompa (1):
syntax: spec: add some keywords that were added in RPM 4.15 and 4.1=
3
Benno Schulenberg (210):
bindings: remove the translation of ^H to Backspace on the BSDs
build: fix compilation for --enable-tiny --enable-justify
build: restore non-UTF8 fallbacks, to allow compiling with --disabl=
e-utf8
build: update the conditional placement of the "Go To Line" menu it=
em
bump version numbers and add a news item for the 4.9 release
chars: optimize a function for the most common blanks: space and ta=
b
copyright: update to the current year for significantly changed fil=
es
cutting: let M-T cut a trailing empty line, but not nothing at all
cutting: with --cutfromcursor, allow ^K to cut the penultimate empt=
y line
display: do not show a "[" double-width placeholder when softwrappi=
ng
display: keep the help items aligned, by not writing too many chara=
cters
docs: improve the descriptions of --softwrap and 'set softwrap'
docs: mark bracketed pasting as done in the TODO list
docs: mention that ^[ (Esc) is unbindable, and explain why
docs: remove the note saying that nanorc files must be in Unix form=
at
docs: trim some TODO items, and condense several others
docs: update the form of an option, --suspendable / 'set suspendabl=
e'
docs: update the missed occurrences of --suspendable / 'set suspend=
able'
feedback: give a clearer message when trying to justify an empty re=
gion
feedback: make sure that a later message can overwrite a short warn=
ing
files: be consistent in which code means "New File"
files: don't check uninitialized memory when writing new file [val=
grind]
files: when piping, always pipe whatever was cut to the external co=
mmand
gnulib: update to its current upstream state
help: do not break a line inside the 17-column keystrokes area
help: increase the minimum help-text width from 32 to 40 columns
input: accommodate silly emulators that have LF instead of CR in a =
paste
input: after reallocating a string, do not write to its old address=
input: allocate sufficient bytes for entering a Unicode codepoint
input: keep a multibyte character together during verbatim entry
justify: do not copy too many bytes when trimming leading whitespac=
e
justify: do not crash when the user attempts to justify an empty re=
gion
justify: do not take an empty line as template for first-line inden=
tation
justify: give the first line of a marked region its proper indentat=
ion
justify: never break a line in leading whitespace
justify: restore a region properly when it was marked backwards
justify: skip over blanks after the region, to not skew the indenta=
tion
justify: skip over in-line whitespace only, not over leading whites=
pace
justify: trim prefixed whitespace when justifying a marked region
justify: trim the leading blanks of a marked region at the right mo=
ment
justify: when appropriate, move end point of marked region forward
justify: when the cursor is at the left edge, keep it there
locking: do not open an empty buffer when respecting the first lock=
file
moving: do not put the cursor at end-of-line when in a help text
options: rename --suspend to --suspendable, to make more sense
po: update translations and regenerate POT file and PO files
prompt: insert a burst of bytes in one go instead of characterwise
rcfile: allow alternate line endings in nanorc files
rcfile: do not allow a regex for name, header, or magic to be empty=
rcfile: don't store a coloring rule before it is complete
rcfile: rename bindable function 'suspendenable' to 'suspendable'
rcfile: when a start=3D is not matched with an end=3D, abandon the =
whole rule
rcfile: when finding a mistake, skip the rest of the line
shutdown: don't refer to an open file when there aren't any
softwrap: when typing goes beyond the bottom row, scroll just one r=
ow
syntax: nanorc: colorize 'rawsequences', not the obsolete 'rebindke=
ypad'
syntax: spec: add two missing % signs, and colorize also "%triggerp=
rein"
syntax: spec: colorize the date and author of changelog items diffe=
rently
syntax: spec: drop invalid parentheses after "Summary"
tweaks: abort in three situations that should never occur
tweaks: add a COUPLE_END undo item a bit later, instead of updating=
it
tweaks: add a different helping variable
tweaks: add a supporting variable, in order to condense some statem=
ents
tweaks: add calls of die() for five theoretical programming mistake=
s
tweaks: adjust some whitespace, reshuffle two ifs, and remove two b=
races
tweaks: adjust the indentation after the previous change
tweaks: always determine the second lead, to simplify the rewrap ca=
ll
tweaks: avoid a complaint about uninitialized memory [valgrind]
tweaks: call add_undo() before the character is actually added
tweaks: change a function to return the name of the lock file on su=
ccess
tweaks: change a function with two possible results to boolean
tweaks: change an integer to a short, and reshuffle it for better p=
acking
tweaks: change another function with two possible results to boolea=
n
tweaks: check for a starting quote in one place instead of three
tweaks: combine two ifs into one
tweaks: condense a comment, reshuffle conditions, and remove unwant=
ed one
tweaks: condense a fragment of code
tweaks: condense two fragments of code
tweaks: convert integers to bytes in one place instead of two
tweaks: copy and store a deleted character in a conciser manner
tweaks: correct a typo, improve two indentations, and rewrap a line=
tweaks: correct two typos in a changelog, and drop a doubled word
tweaks: create an undo item earlier, and discard it when needed
tweaks: don't bother reallocating the line data when undoing a line=
join
tweaks: do some text alignments properly: with spaces, not tabs
tweaks: drop a check for something that will not occur
tweaks: drop two comments that contain variable names
tweaks: elide a function call, by copying a byte directly
tweaks: elide an intermediate copy of a character during injection,=
twice
tweaks: elide an intermediate copy of an added character
tweaks: elide a parameter, and rename a variable
tweaks: elide a supporting variable, to make four loops slightly fa=
ster
tweaks: elide a variable and an unneeded iteration
tweaks: elide one variable and three gotos
tweaks: elide three unneeded #defines
tweaks: elide two variables and their two assignments
tweaks: exclude a function when compiled without spell-checking sup=
port
tweaks: extend the undo data for deleting and backspacing more dire=
ctly
tweaks: factor out a three-line condition into a separate function
tweaks: frob a statement, rewrap two lines, and remove a pair of br=
aces
tweaks: frob two statements, condense another, and add a comment
tweaks: highlight keystrokes in the documentation more consistently=
tweaks: improve four comments, and condense two fragments of code
tweaks: improve three comments, and reshuffle two declarations
tweaks: improve two comments
tweaks: improve two comments, and remove an unneeded one
tweaks: inject the entire burst of bytes at once into the edit buff=
er
tweaks: instead of swapping the end points later, assign them corre=
ctly
tweaks: invert the logic of a symbol, to make more sense
tweaks: make prompt-bar input more similar to edit-buffer input
tweaks: make two conditions more direct, and thus elide two functio=
ns
tweaks: mesh two bits of code together
tweaks: move a function to after the one that it calls
tweaks: move a function to before the one that calls it
tweaks: move a function to before the one that calls it
tweaks: move a function to its proper place in the order of things
tweaks: move a function to where it is used
tweaks: move another function to where it is used
tweaks: move some definitions closer to where they are used
tweaks: move two functions to before the ones that call them
tweaks: normalize a translator hint, update one, and add another
tweaks: normalize the indentation after the previous change
tweaks: normalize the indentation after the previous change
tweaks: normalize the indentation after the previous two changes
tweaks: pull the NUL-terminating of a string into a function
tweaks: rearrange a case item, so that PASTE is always after CUT
tweaks: rearrange some conditions, for compactness
tweaks: relocate a function to before its callers
tweaks: relocate eleven functions to before they are called
tweaks: remove a now-unused helper function
tweaks: remove an unneeded indirection
tweaks: remove a redundant assignment
tweaks: remove a redundant statement, a spurious reference to 'cutb=
ottom'
tweaks: remove a superfluous assignment, and reshuffle a call
tweaks: remove non-UTF-8 code from three more functions
tweaks: remove some redundant filtering, and thus elide a parameter=
tweaks: remove some unneeded braces, not used elsewhere either
tweaks: remove two redundant case labels
tweaks: remove two superfluous checks
tweaks: remove two superfluous conditions
tweaks: rename a constant, and rename and relocate a function
tweaks: rename a function, and condense a few comments
tweaks: rename a function, and split a variable into two separate o=
nes
tweaks: rename a function, to be more fitting, and improve some com=
ments
tweaks: rename a function, to remove an obscuring abbreviation
tweaks: rename another function, to remove the obscuring abbreviati=
on
tweaks: rename a parameter and a variable, and reword two comments
tweaks: rename a symbol, to match the corresponding renamed option
tweaks: rename a variable, and add a helping one
tweaks: rename a variable, and reshuffle a declaration
tweaks: rename a variable, away from a single letter
tweaks: rename a variable, away from a single letter
tweaks: rename a variable, for aptness
tweaks: rename a variable, reshuffle an assignment, and change a co=
de
tweaks: rename a variable, to be a bit clearer
tweaks: rename a variable, to get out of the way of a later rename
tweaks: rename a variable, to not be a substring of a function name=
tweaks: rename four more functions, to get rid of an abbreviation
tweaks: rename four parameters, to be more distinct and telling
tweaks: rename four variables, to be a bit more telling
tweaks: rename to the same name two variables that have the same ro=
le
tweaks: rename two elements of an undo record, to be more telling
tweaks: rename two functions, for shortness
tweaks: rename two functions, to match the style of others
tweaks: rename two more elements of an undo record, for symmetry
tweaks: rename two more functions, to match the style of others
tweaks: rename two more variables, to harmonize with two others
tweaks: rename two parameters, to not overlap with other names
tweaks: rename two symbols, to be more precise
tweaks: rename two variables, and frob four comments
tweaks: rename two variables, and reshuffle a few things
tweaks: rename two variables, for distinctiveness
tweaks: rename two variables, to be different or for more contrast
tweaks: rename two variables, to harmonize with two others
tweaks: rename two variables, to suit both the marked and unmarked =
case
tweaks: reorder a case item, to have SPLIT_BEGIN always before SPLI=
T_END
tweaks: reshuffle a condition, for compacter code
tweaks: reshuffle a condition, for compactness
tweaks: reshuffle a few declarations and assignments
tweaks: reshuffle an assignment and a free()
tweaks: reshuffle some code, in preparation for improving it
tweaks: reshuffle some stuff, to have related things together
tweaks: reshuffle the setting of the starting point of a cut
tweaks: reshuffle the trimming of leading whitespace, for compactne=
ss
tweaks: reshuffle two declarations plus a fragment of code
tweaks: simplify the undoing and redoing of an <Enter>
tweaks: strip a parameter that is equivalent to 'openfile' for both=
calls
tweaks: strip a parameter that is TRUE for both calls
tweaks: swap the use of 'head' and 'tail' for CUT and PASTE undo it=
ems
tweaks: trim an unnecessary detail from an error message
tweaks: unabbreviate the name of a variable
tweaks: unwrap four lines, and use explicit codes where possible
tweaks: update several comments after the previous changes
tweaks: update some comments after the previous changes
tweaks: use a symbol instead of a number, and drop two unneeded cas=
ts
tweaks: use spaces when aligning things, not tabs
tweaks: use the variable that suits 'END' better
tweaks: weld two fragments together, twice, by eliding an unneeded =
'if'
tweaks: when appropriate, move starting point of justified region b=
ack
tweaks: when extending the marked region, include also exotic blank=
s
tweaks: when undoing an addition or redoing a deletion, do not real=
locate
undo: do not mark the buffer as modified when pasting back nothing
undo: do not try to copy a cutbuffer that is NULL
undo: do not try to paste back an empty cutbuffer
undo: for an automatic hard-wrap, store the correct previous buffer=
size
undo: store the cursor row, for redoing filtering & justification b=
etter
undo: treat a cut-until-end-of-buffer like a backward marked region=
undo: use the correct original fusion point when unjoining two line=
s
undo: when undoing a paste or an insertion, remove an added magic l=
ine
usage: improve the description of --softwrap
--=20
Benno
--ztiMh9kUTrNXGOOcpQY40N2Rw1mhfaQu5--
--AYFttuDp2UpkqtPmxxzsXwMCwU3F9CK0x
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCgAdFiEEv9AJBh5TUFKtDfIVDSjU0qCs6IQFAl555T4ACgkQDSjU0qCs
6ISrKA//eq+MXU9K3RMrXeQjhTti9XNhPeeq9vcqRT8r794vHwMFaYiTMpPEeiQA
kTMVo5M8sD7LtLxDQIqfE4t+GRoI4FtizWGu2qSqMjqLw+FhklneXM1PSd2VFHE9
CnZ4TIYW7VQZcefnxahfGX3y8BQichdWMUq2yNkDBPHzhQnv8NHkHXDTDCzQqarV
Tar0oqe++gpTDR9B4Osx+aAizJZyeEBx3TN/rtvaRD6SUJylYyZi3TKpC5k1D7nZ
7CKt6Bi8+EJZAgBnJooW2zbYYzwUTaLiiwFoP8AT421vUPgaqq3a1tqYVsUlKPBY
fh1twfTonoEAYGKlAmui4JoBwFvhIMoJFG4OBd+HwtSd0yoYkLqdR/Y7Qsjq46wu
EYyh35lmRI+J3+9c+7snGJFuF3ZJUegC87Ba7O0uKNI5UUMGeAUbgjOeoh0so6Tl
Yf23d2pZtOc+vybnUh8pDgmPdTvq1JBYhY6gkU5Hh7Dz9bwCGkBiAhMUMKXYepdG
40vxS4WSNuGM799THn4ntdgHUx4OPNA8HnBXLke5dz4kucdd+RpRyoPEGghTFPE+
2YqaHpOOoWp4f+1ufjBJfvU3TjG4wTBxzdz1aBTA/Nji48MyxcYaS7mFnT1Uyqrs
tEprk9xjJtNP+xuOBJe7E2llaYMoii35u4f9a2eMtTNZys2LoRY=
=MUtA
-----END PGP SIGNATURE-----
--AYFttuDp2UpkqtPmxxzsXwMCwU3F9CK0x--
--===============2299461703758199098==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW5mby1uYW5v
IG1haWxpbmcgbGlzdApJbmZvLW5hbm9AZ251Lm9yZwpodHRwczovL2xpc3RzLmdudS5vcmcvbWFp
bG1hbi9saXN0aW5mby9pbmZvLW5hbm8K
--===============2299461703758199098==--