nano

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

commit 895d2b8e9c5c21f624b6cb5a45dc24677c534e39
parent 47068c37701b46b7f0a8509fac0dbd56ebaf1924
Author: Benno Schulenberg <bensberg@telfort.nl>
Date:   Mon, 17 Jun 2019 12:07:45 +0200

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

Diffstat:
MChangeLog | 249+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
MIMPROVEMENTS | 1+
MNEWS | 8++++++++
Mconfigure.ac | 2+-
Mdoc/faq.html | 2+-
Mdoc/nano.1 | 2+-
Mdoc/nano.texi | 8++++----
Mdoc/nanorc.5 | 2+-
Mdoc/rnano.1 | 2+-
Mroll-a-release.sh | 2+-
10 files changed, 268 insertions(+), 10 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -1,3 +1,252 @@ +Changes between v4.2 and v4.3: +------------------------------ + +Benno Schulenberg (235): + 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 viewer + 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 character + 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 ASCII + 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 copying + 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 justifying + 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.0 + feedback: don't clear off possible error messages after a spell check + feedback: don't try to represent keys outside of the seven-bit range + 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 interrupted + feedback: show an appropriate message when reading a file was cut short + 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 count + 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 Ctrl+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 append + 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 file + files: try matching a syntax after scooping data from standard input + 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-text 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 console + help: make the column for the first keystroke a little wider + help: write the text directly into a new buffer, without using a tempfile + justify: remove "--" from the quoting regex, to avoid false paragraphs + oops: apparently the line numbers in the cutbuffer do matter + rcfile: at terminating points, verify that a defined syntax is not empty + rcfile: check for missing color commands only when a syntax is still open + rcfile: close off a syntax when a non-syntax command is encountered + rcfile: disallow extending a syntax that is defined in a main nanorc + 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 opened + 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 input + startup: resave the terminal's state only when there were no signals + 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 lines + 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 label + tweaks: consistently report failures to fork (and the like) as errors + 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 shrunk + 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 regexes + tweaks: drop most of the remaining debugging code, and some timing code + tweaks: drop some checks that were made redundant by the previous commit + tweaks: drop two checks that were made redundant by the previous commit + 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 braces + 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 handler + tweaks: improve a couple of comments + tweaks: improve a handful of comments + tweaks: improve some comments, reshuffle a line, and rename a variable + 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 others + tweaks: make better use of two variables, and reshuffle two comments + 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 forward + tweaks: move a syntax check to a better place, to reduce duplication + 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 single 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 it + 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 symmetry + 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 abbrev + 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 consistently + tweaks: rename a variable, reshuffle declarations, and drop an assert + tweaks: rename a variable, to be shorter + tweaks: rename a variable, to better indicate it contains two characters + 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 contrast + tweaks: rename some single-letter variables to the same significant word + tweaks: rename three variables, to get rid of a suffix or an underscore + tweaks: rename three variables, to use full words instead of abbrevs + 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 alike + 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 first + 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 handler + 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 byte + tweaks: stop allocating and freeing a holder struct for every cut/paste + 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 help) + 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 size + zapping: disjoin a zap command from earlier ones when the mark is set + zapping: use the 'keep_cutbuffer' logic to keep undo items apart + +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 + + Changes between v4.1 and v4.2: ------------------------------ diff --git a/IMPROVEMENTS b/IMPROVEMENTS @@ -2,6 +2,7 @@ Improvements in GNU nano ======================== Since 4.0: + - The ability to both read from and write to a FIFO. - Automatic hard-wrapping is no longer the default. - Addition of --guidestripe to draw a helpful vertical bar. - Meta-Up and Meta-Down scroll the screen linewise. diff --git a/NEWS b/NEWS @@ -1,3 +1,11 @@ +2019.06.18 - GNU nano 4.3 "Musa Kart" +• The ability to read from and write to a FIFO has been regained. +• Startup time is reduced by fully parsing a syntax only when needed. +• Asking for help (^G) when using --operatingdir does not crash. +• The reading of a huge or slow file can be stopped with ^C. +• Cut, zap, and copy operations are undone separately when intermixed. +• M-D reports the correct number of lines (zero for an empty buffer). + 2019.04.24 - GNU nano 4.2 "Tax the rich, pay the teachers" • The integrated spell checker does not crash when 'spell' is missing. • Option --breaklonglines works also when --ignorercfiles is used. 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], [4.2], [nano-devel@gnu.org], [nano]) +AC_INIT([GNU nano], [4.3], [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 @@ -85,7 +85,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>4.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>4.3</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 4.2" "April 2019" +.TH NANO 1 "version 4.3" "June 2019" .SH NAME nano \- Nano's ANOther editor, inspired by Pico diff --git a/doc/nano.texi b/doc/nano.texi @@ -8,8 +8,8 @@ @smallbook @set EDITION 0.5 -@set VERSION 4.2 -@set UPDATED April 2019 +@set VERSION 4.3 +@set UPDATED June 2019 @dircategory Editors @direntry @@ -23,7 +23,7 @@ @titlepage @title GNU @command{nano} @subtitle a small and friendly text editor -@subtitle version 4.2 +@subtitle version 4.3 @author Chris Allegretta @page @@ -63,7 +63,7 @@ e-mail: @email{chrisa@@asty.org}@* @node Top @top -This manual documents the GNU @command{nano} editor, version 4.2. +This manual documents the GNU @command{nano} editor, version 4.3. @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 4.2" "April 2019" +.TH NANORC 5 "version 4.3" "June 2019" .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 4.2" "April 2019" +.TH RNANO 1 "version 4.3" "June 2019" .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="4.2" +VERSION="4.3" ./configure -C --enable-tiny && make && ./configure -C &&