[ANNOUNCE] nano-4.3 is released

Benno Schulenberg <[email protected]> Tue, 18 Jun 2019 10:57:18 +0200
Newsgroups gmane.editors.nano.announce
Message-ID <778affad-068d-970d-ac23-04d5c4d35c37__24629.2932353512$1560848333$gmane$org@telfort.nl>
This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--===============0098624288415813013==
Content-Type: multipart/signed; micalg=pgp-sha512;
 protocol="application/pgp-signature";
 boundary="xqZT0yPeQNXSUewckqQwwOLPJMvQRJL6k"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--xqZT0yPeQNXSUewckqQwwOLPJMvQRJL6k
Content-Type: multipart/mixed; boundary="uvFY1YICGResGcM8GhfbPqBaT1ubmnHr0";
 protected-headers="v1"
From: Benno Schulenberg <[email protected]>
To: [email protected], [email protected]
Cc: [email protected]
Message-ID: <[email protected]>
Subject: [ANNOUNCE] nano-4.3 is released

--uvFY1YICGResGcM8GhfbPqBaT1ubmnHr0
Content-Type: text/plain; charset=utf-8
Content-Language: en-US
Content-Transfer-Encoding: quoted-printable


2019.06.18 - GNU nano 4.3  "Musa Kart"

=E2=80=A2 The ability to read from and write to a FIFO has been regained.=

=E2=80=A2 Startup time is reduced by fully parsing a syntax only when nee=
ded.
=E2=80=A2 Asking for help (^G) when using --operatingdir does not crash.
=E2=80=A2 The reading of a huge or slow file can be stopped with ^C.
=E2=80=A2 Cut, zap, and copy operations are undone separately when interm=
ixed.
=E2=80=A2 M-D reports the correct number of lines (zero for an empty buff=
er).


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.3.tar.xz
  https://nano-editor.org/dist/latest/nano-4.3.tar.xz.asc


Specific bugs that were fixed in this release:
  https://bugs.debian.org/583196        (could not edit FIFOs anymore)
  https://savannah.gnu.org/bugs/?29312  (unwanted CLOSE_WRITE event)
  https://savannah.gnu.org/bugs/?44907  (hanged on special system files)
  https://savannah.gnu.org/bugs/?56054  (Alt+D showed one-off line count)=

  https://savannah.gnu.org/bugs/?56241  (Ctrl+Del was noop when mark is o=
n)

  https://savannah.gnu.org/bugs/?56249  (Alt+6 near bottom scrolled halfs=
creen)
  https://savannah.gnu.org/bugs/?56251  (Ctrl+K appended its cut to an Al=
t+6)
  https://savannah.gnu.org/bugs/?56261  (single undo item for different z=
aps)
  https://savannah.gnu.org/bugs/?56274  (in view mode, Ctrl+W Ctrl+R misb=
ehaved)
  https://savannah.gnu.org/bugs/?56310  (no line count when reading from =
stdin)

  https://savannah.gnu.org/bugs/?56313  (Alt+arrow was dead in non-UTF8 l=
ocale)
  https://savannah.gnu.org/bugs/?56317  (Alt+S could scroll halfscreen)
  https://savannah.gnu.org/bugs/?56344  (always default syntax for stdin)=

  https://savannah.gnu.org/bugs/?56346  (wrong message on exit from help =
viewer)
  https://savannah.gnu.org/bugs/?56348  (unneeded message when piping int=
o nano)

  https://savannah.gnu.org/bugs/?56365  (unretained Shift-selected region=
)
  https://savannah.gnu.org/bugs/?56369  (with --operatingdir, ^G could cr=
ash)
  https://savannah.gnu.org/bugs/?56372  (misaligned --help for strange ta=
bsizes)
  https://savannah.gnu.org/bugs/?56394  (resizing could mess up terminal =
state)
  https://savannah.gnu.org/bugs/?56411  (resizing could switch to other b=
uffer)

  https://savannah.gnu.org/bugs/?56415  (message contained strange charac=
ter)
  https://savannah.gnu.org/bugs/?56438  (docs unclear about regex flavor)=

  https://savannah.gnu.org/bugs/?56462  (lines headed by "--" confused Ju=
stify)
  https://savannah.gnu.org/bugs/?56498  (stray color commands were not re=
ported)
  https://savannah.gnu.org/bugs/?56501  (an empty syntax was not reported=
)


Changes between v4.2 and v4.3:
------------------------------

Brand Huntsman (6):
      files: block SIGWINCH while opening a FIFO for reading or writing
      rcfile: compile the color regexes just once
      rcfile: fully parse a syntax file only when needed
      rcfile: store errors and display them when nano terminates
      startup: prevent a crash when no applicable syntax is found
      tweaks: remove an unneeded pre-processor '#else' clause

Benno Schulenberg (236):
      bindings: at a Yes-No prompt, accept also ^N and ^Q for "No"
      bindings: at a Yes-No prompt, accept also ^Y for "Yes"
      bindings: bind the Alt+arrow keystrokes also in non-UTF-8 locales
      browser: don't show a mistaken message when exiting from help viewe=
r
      build: avoid a warning on FreeBSD, OpenBSD, and Alpine
      build: avoid a warning when using --disable-utf8
      build: exclude the ability to open a FIFO from the tiny version
      build: fix compilation on another system
      build: fix compilation when configured with --disable-color
      build: fix compilation when configured with --enable-tiny
      build: move an #include to where it is needed
      build: remove two #includes that don't seem to be needed
      bump version numbers and add a news item for the 4.3 release
      chars: create a dedicated function for getting the length of a char=
acter
      chars: redo the speedup for plain ASCII from three commits ago
      chars: speed up case-insensitive searching by roughly one percent
      chars: speed up the determination of length and width for plain ASC=
II
      copying: let a copy command break a chain of cut or zap commands
      copying: make M-6 do nothing when at end of buffer
      copying: scroll just one line when M-6 is pressed on the bottom row=

      cutting: clear the cutbuffer when the previous operation was copyin=
g
      cutting: ignore the mark when a word is deleted
      display: properly show all characters in a non-UTF-8 build
      docs: add a light warning to the explanation of --nonewlines
      docs: adjust the wording of the README to be factually correct
      docs: clarify that in nano regexes are extended regular expressions=

      docs: mention the default value for 'errorcolor'
      docs: note Brand as the author of the delayed syntax parsing
      docs: note David as author of undoable indenting and undoable justi=
fying
      docs: remove "--" from the default value of 'quotestr'
      docs: say thanks to the Korean translator, and trim a double space
      docs: show double quotes where they are needed
      docs: slightly reword the notice about the changed defaults since 4=
=2E0
      feedback: don't clear off possible error messages after a spell che=
ck
      feedback: don't try to represent keys outside of the seven-bit rang=
e
      feedback: make an error check work also when curses hasn't started =
yet
      feedback: print helpful message only when data comes from keyboard
      feedback: show a more fitting message when opening a FIFO is interr=
upted
      feedback: show an appropriate message when reading a file was cut s=
hort
      feedback: treat statusline() being called outside of curses mode as=
 a bug
      feedback: when the last line is empty, don't include it in the coun=
t
      files: allow a given file to be a special file but not a directory
      files: allow to abort the reading of slow files with Ctrl+C
      files: allow to interrupt the opening of a FIFO for writing with Ct=
rl+C
      files: allow to interrupt the opening of a FIFO with Ctrl+C
      files: check for writability by the access bits, not by trying to a=
ppend
      files: don't close a newly-created buffer when it is the only one
      files: don't save the state of the terminal a second time
      files: don't say "Error...: Success" when aborting after resizing
      files: give feedback while waiting for a FIFO to open up
      files: suppress feedback when writing an emergency or temporary fil=
e
      files: try matching a syntax after scooping data from standard inpu=
t
      files: when needed, reconnect the keyboard and reenter curses mode
      gnulib: update to its current upstream state
      help: don't check for confinement when opening a temporary help-tex=
t file
      help: don't cycle through the buffers for every resizing step
      help: don't show Alt+Left and Alt+Right when running on a Linux con=
sole
      help: make the column for the first keystroke a little wider
      help: write the text directly into a new buffer, without using a te=
mpfile
      justify: remove "--" from the quoting regex, to avoid false paragra=
phs
      oops: apparently the line numbers in the cutbuffer do matter
      po: update translations and regenerate POT file and PO files
      rcfile: at terminating points, verify that a defined syntax is not =
empty
      rcfile: check for missing color commands only when a syntax is stil=
l open
      rcfile: close off a syntax when a non-syntax command is encountered=

      rcfile: disallow extending a syntax that is defined in a main nanor=
c
      rcfile: fully read each included file, so all its syntaxes are seen=

      search: stay in the Search menu when trying to Replace in view mode=

      softwrap: use smooth scrolling when softwrapping is toggled on
      speller: be more concise and to the point when something goes wrong=

      speller: don't crash when the spell-checked tempfile cannot be open=
ed
      speller: ensure that a Shift-selected region is retained
      speller: when something goes wrong with 'sort', do not blame 'spell=
'
      startup: remove the now-unneeded workaround for a SIGWINCH during i=
nput
      startup: resave the terminal's state only when there were no signal=
s
      syntax: po: colorize also escaped hex and octal codes
      syntax: python: avoid miscoloring stuff between two empty strings
      tweaks: add a missing forward declaration of make_new_buffer()
      tweaks: add a pair of braces, to silence a compiler warning
      tweaks: add a warning for something that shouldn't occur
      tweaks: adjust a comment and drop two others, and reshuffle two lin=
es
      tweaks: adjust some indentation after the previous change
      tweaks: adjust some whitespace and rewrap a few lines
      tweaks: adjust the indentation after the previous change
      tweaks: adjust the indentation after the previous change
      tweaks: avoid an unneeded, extra stat() for temporary files
      tweaks: avoid parsing a character twice
      tweaks: be more sparing in redrawing things when exiting from help =
viewer
      tweaks: change a function to void, to make things more direct
      tweaks: check in a single place for files that should not be opened=

      tweaks: close a buffer differently and elide a parameter
      tweaks: condense a comment and reshuffle a couple of lines
      tweaks: condense a couple of comments, and reshuffle a line
      tweaks: condense the setup of the two signal handlers for Ctrl+C
      tweaks: condense two comments, and normalize the whitespace of a la=
bel
      tweaks: consistently report failures to fork (and the like) as erro=
rs
      tweaks: delete a leftover
      tweaks: delete a now-unused function
      tweaks: delete a now-unused function
      tweaks: don't bother calling mblen() in a non-UTF-8 build
      tweaks: don't bother checking the return value of wait()
      tweaks: don't bother keeping track of whether a squeezed line has s=
hrunk
      tweaks: don't bother renumbering the lines in the cutbuffer
      tweaks: don't bother saving and restoring 'cutbottom' all the time
      tweaks: don't bother to free the content of 'extendsyntax' commands=

      tweaks: don't check the user's nanorc file for accessibility twice
      tweaks: drop an unneeded parameter from open_file()
      tweaks: drop a useless tidying-up call, as spelling does not use re=
gexes
      tweaks: drop most of the remaining debugging code, and some timing =
code
      tweaks: drop some checks that were made redundant by the previous c=
ommit
      tweaks: drop two checks that were made redundant by the previous co=
mmit
      tweaks: elide a function that is an amalgam of three others
      tweaks: elide a function that is called in just one place
      tweaks: elide a function that is used just once
      tweaks: elide another parameter, and rename the function to match
      tweaks: elide an unneeded, duplicate stat() for the FIFO check
      tweaks: elide an unneeded 'if' and 'break'
      tweaks: elide an unneeded variable
      tweaks: elide a parameter and a return value
      tweaks: elide a pre-processor #else clause, by using braces instead=

      tweaks: elide a variable, drop a comment, and remove unneeded brace=
s
      tweaks: elide two unneeded variables
      tweaks: enforce the miminum amount of scrolling in a simpler way
      tweaks: exclude a bug check from the tiny version
      tweaks: exclude another bug check from the tiny version
      tweaks: factor out a fragment of code that is repeated three times
      tweaks: factor out the installing and restoring of the ^C signal ha=
ndler
      tweaks: improve a couple of comments
      tweaks: improve a handful of comments
      tweaks: improve some comments, reshuffle a line, and rename a varia=
ble
      tweaks: include the enabling of SIGINT into the tiny version
      tweaks: invert a condition, in order to return earlier
      tweaks: invert two conditions, in order to elide an extra variable
      tweaks: just mark four rcfile errors for translation, like the othe=
rs
      tweaks: make better use of two variables, and reshuffle two comment=
s
      tweaks: merge two functions, as the first is called just once
      tweaks: merge two functions, as the one is used only by the other
      tweaks: merge two very similar functions into a single one
      tweaks: move a bit of timing code to where it will be needed
      tweaks: move a function to the file where it is used
      tweaks: move an assignment that is useful only when searching forwa=
rd
      tweaks: move a syntax check to a better place, to reduce duplicatio=
n
      tweaks: move the tyding-up-after-a-search to a single exit point
      tweaks: normalize the indentation after the previous two changes
      tweaks: place a function better, and reduce some comments to a sing=
le one
      tweaks: put some timing code back into the search function
      tweaks: really don't bother renumbering the lines in the cutbuffer
      tweaks: reduce a bit of mark-adjusting code to its essence
      tweaks: reduce the scope of a variable, and let the compiler zero i=
t
      tweaks: remove a bit of redundant code
      tweaks: remove a check that is no longer relevant
      tweaks: remove a condition that has become superfluous
      tweaks: remove an unneeded "closing" of a syntax after extending it=

      tweaks: remove an unneeded setting and unsetting of a flag
      tweaks: remove a superfluous and ineffective assignment
      tweaks: remove a superfluous condition, in three places
      tweaks: remove four unneeded pre-processor directives
      tweaks: remove some unneeded braces, and reshuffle for more symmetr=
y
      tweaks: remove the two remaining handfuls of asserts
      tweaks: remove two more unneeded assignments
      tweaks: remove two unneeded assignments, and improve a comment
      tweaks: remove two unneeded checks for NULL
      tweaks: rename a bunch of variables, to become identical to others
      tweaks: rename a function and a variable, for contrast and variety
      tweaks: rename a function and its parameters, to be more fitting
      tweaks: rename a function, to be clearer and to stop using an old a=
bbrev
      tweaks: rename a function, to be more fitting
      tweaks: rename a function, to better indicate what it does
      tweaks: rename a function, to better suit what it does
      tweaks: rename a parameter and a variable, to be more distinct
      tweaks: rename a struct element, to be distinct
      tweaks: rename a type, for more contrast
      tweaks: rename a type, to make more sense
      tweaks: rename a variable, reduce its scope, and use it consistentl=
y
      tweaks: rename a variable, reshuffle declarations, and drop an asse=
rt
      tweaks: rename a variable, to be shorter
      tweaks: rename a variable, to better indicate it contains two chara=
cters
      tweaks: rename a variable, to better suit its counterpart
      tweaks: rename a variable, to fit a bit better
      tweaks: rename a variable, to fit a little better
      tweaks: rename a variable, to get out of the way of the next commit=

      tweaks: rename a variable, to match another with the same meaning
      tweaks: rename a variable, to match the style of its brothers
      tweaks: rename four elements of the holder struct, for more contras=
t
      tweaks: rename some single-letter variables to the same significant=
 word
      tweaks: rename three variables, to get rid of a suffix or an unders=
core
      tweaks: rename three variables, to use full words instead of abbrev=
s
      tweaks: rename two functions, to be simpler
      tweaks: rename two functions, to better describe what they do
      tweaks: rename two functions, to get rid of the "mb" abbreviation
      tweaks: rename two more functions, to be simpler too
      tweaks: rename two parameters, away from single letters
      tweaks: rename two parameters, for more contrast, and elide another=

      tweaks: rename two parameters, to differentiate them from function =
names
      tweaks: rename two variables, and frob some comments
      tweaks: rename two variables, and reshuffle their declarations
      tweaks: rename two variables, away from a single letter
      tweaks: rename two variables, for more contrast
      tweaks: rename two variables, for more contrast with the partition =
stuff
      tweaks: rename two variables, to be less cryptic
      tweaks: rename two variables, to be unique
      tweaks: rename two variables, to not be abbreviations
      tweaks: reorder some code, to further optimize display_string() for=
 ASCII
      tweaks: reshuffle a bit of code, to be less intertwined
      tweaks: reshuffle a couple of lines and adjust a few comments
      tweaks: reshuffle a few lines, to be more straightforward
      tweaks: reshuffle a few things, partly to make two chunks more alik=
e
      tweaks: reshuffle an assignment, to be able to return earlier
      tweaks: reshuffle some closing and switching to a better place
      tweaks: reshuffle some code to the one place that needs it
      tweaks: reshuffle some lines and frob some comments
      tweaks: reshuffle some lines, to group things more sensibly
      tweaks: reshuffle some lines, to put the most likely candidate firs=
t
      tweaks: reshuffle some lines, to reduce duplication
      tweaks: reshuffle two #ifdefs, to avoid an unpaired brace
      tweaks: reuse the install and restore functions for a signal handle=
r
      tweaks: set a boolean directly, instead of using a function call
      tweaks: set a boolean directly, instead of using a function call
      tweaks: sort three translator names better
      tweaks: specifically refer to the manual of GNU grep for more regex=
 info
      tweaks: speed up the counting of characters in mbstrlen()
      tweaks: squeeze excess spaces out of a line in situ
      tweaks: step away one character from the current bracket, not one b=
yte
      tweaks: stop allocating and freeing a holder struct for every cut/p=
aste
      tweaks: stop checking for a NULL result from line_from_number()
      tweaks: stop passing 'cutbuffer' and 'cutbottom' back and forth
      tweaks: switch to the preceding buffer in a cheaper way (when in he=
lp)
      tweaks: use a cheaper way to switch between buffers where possible
      tweaks: use a more direct call when a single linestruct is deleted
      tweaks: use a slightly faster function where appropriate
      tweaks: use a symbol instead of zero to refer to standard input
      tweaks: use FALSE for booleans instead of zero
      tweaks: when OR'ing, put the most likely condition first
      usage: make the --help output independent from the terminal's tab s=
ize
      zapping: disjoin a zap command from earlier ones when the mark is s=
et
      zapping: use the 'keep_cutbuffer' logic to keep undo items apart

--=20

Benno


--uvFY1YICGResGcM8GhfbPqBaT1ubmnHr0--

--xqZT0yPeQNXSUewckqQwwOLPJMvQRJL6k
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEv9AJBh5TUFKtDfIVDSjU0qCs6IQFAl0Ip3kACgkQDSjU0qCs
6IQp3hAAoVt+aCMaiARkUhNqcB/E2ZAxVwKUu8b6wjnYYKanttQ0Tj8RpzGKZ34A
LDOXGd7s27qpwlNnxn10rJIyD9ixMWVcb9quxv6G9sXYj1jx+68MeSoWJWEgduGA
TMGvCfOpWmWexuEDBPRpdCCZGRmNykPoHv6IejNGLFTga5zBAENV+xJstJvCrOAj
chjN7CHP6BN6e4Ac7CznVf/RuCPqYe3YjjyVsT4Q3pplvwbK8s8CqePnybg0Jafy
zB38KEi1DR5F46SFqEshispN2CaWuE0F1LeI2KV1F4ZLORI8Qte4WUhjKhDNvV8H
/9HEyAZF2Ca6Y48kj05n5QxHTJOW5b4InMPS8jLBmhV0cg81npNIb4dimgk7L3N5
t/zuegAxH0O+vGg5LoFBbd3VYhMZ9Tp+LuiA7c4cx6P2Cq58wsMWO4qk5F4WlOTo
6iTVPqowsQS2hu7UCGSFaQNY9nhsX3O9ZKifWYNN4XJ0UUXo0yG7KfhH/PmnZiBS
wC4JqBolH3nVcX6XDzeeKoAJPpjyRBa2PJ+hEQfakGcNRlH2KTLs6g6MieBIvG8K
D/CG8Kx4IXXaULzRqrJomPeWIkXXxRIIBdTpTOUUqFsjEKVQuJ5KMwueh7sfiig8
w24joT5eBXeiNZeHiDB79dObKdKYEqOtdOq+M33rkK/M6/LCvZQ=
=Dnyh
-----END PGP SIGNATURE-----

--xqZT0yPeQNXSUewckqQwwOLPJMvQRJL6k--


--===============0098624288415813013==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW5mby1uYW5v
IG1haWxpbmcgbGlzdApJbmZvLW5hbm9AZ251Lm9yZwpodHRwczovL2xpc3RzLmdudS5vcmcvbWFp
bG1hbi9saXN0aW5mby9pbmZvLW5hbm8K

--===============0098624288415813013==--