diff --git a/ChangeLog b/ChangeLog index fe15827c..7b6a7581 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,224 @@ +Changes between v4.8 and v4.9: +------------------------------ + +Benno Schulenberg (209): + 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 --disable-utf8 + build: update the conditional placement of the "Go To Line" menu item + bump version numbers and add a news item for the 4.9 release + chars: optimize a function for the most common blanks: space and tab + copyright: update to the current year for significantly changed files + cutting: let M-T cut a trailing empty line, but not nothing at all + cutting: with --cutfromcursor, allow ^K to cut the penultimate empty line + display: do not show a "[" double-width placeholder when softwrapping + display: keep the help items aligned, by not writing too many characters + 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 format + docs: trim some TODO items, and condense several others + docs: update the form of an option, --suspendable / 'set suspendable' + docs: update the missed occurrences of --suspendable / 'set suspendable' + feedback: give a clearer message when trying to justify an empty region + feedback: make sure that a later message can overwrite a short warning + files: be consistent in which code means "New File" + files: don't check uninitialized memory when writing new file [valgrind] + files: when piping, always pipe whatever was cut to the external command + 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 whitespace + justify: do not crash when the user attempts to justify an empty region + justify: do not take an empty line as template for first-line indentation + justify: give the first line of a marked region its proper indentation + 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 indentation + justify: skip over in-line whitespace only, not over leading whitespace + justify: trim prefixed whitespace when justifying a marked region + justify: trim the leading blanks of a marked region at the right moment + 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 + 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= is not matched with an end=, 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 row + syntax: nanorc: colorize 'rawsequences', not the obsolete 'rebindkeypad' + syntax: spec: add two missing % signs, and colorize also "%triggerprein" + syntax: spec: colorize the date and author of changelog items differently + 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 statements + tweaks: add calls of die() for five theoretical programming mistakes + tweaks: adjust some whitespace, reshuffle two ifs, and remove two braces + tweaks: adjust the indentation after the previous change + tweaks: always determine the second lead, to simplify the rewrap call + 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 success + tweaks: change a function with two possible results to boolean + tweaks: change an integer to a short, and reshuffle it for better packing + tweaks: change another function with two possible results to boolean + 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 unwanted 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 faster + 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 support + tweaks: extend the undo data for deleting and backspacing more directly + tweaks: factor out a three-line condition into a separate function + tweaks: frob a statement, rewrap two lines, and remove a pair of braces + 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 buffer + tweaks: instead of swapping the end points later, assign them correctly + 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 functions + 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 'cutbottom' + 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 ones + tweaks: rename a function, to be more fitting, and improve some comments + tweaks: rename a function, to remove an obscuring abbreviation + tweaks: rename another function, to remove the obscuring abbreviation + 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 code + 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 role + 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 SPLIT_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 compactness + tweaks: reshuffle two declarations plus a fragment of code + tweaks: simplify the undoing and redoing of an + 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 items + 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 casts + 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 back + tweaks: when extending the marked region, include also exotic blanks + tweaks: when undoing an addition or redoing a deletion, do not reallocate + 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 better + undo: treat a cut-until-end-of-buffer like a backward marked region + undo: use the correct original fusion point when unjoining two lines + undo: when undoing a paste or an insertion, remove an added magic line + usage: improve the description of --softwrap + +Neal Gompa (1): + syntax: spec: add some keywords that were added in RPM 4.15 and 4.13 + +Saagar Jha (1): + rcfile: fix an out-of-bounds read on empty lines + + Changes between v4.7 and v4.8: ------------------------------ diff --git a/NEWS b/NEWS index d59d3188..86504ae6 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,14 @@ +2020.03.24 - GNU nano 4.9 "die fetten Jahre sind vorbei" +• When justifying a selection, the new paragraph and the + succeeding one get the appropriate first-line indent. +• Trying to justify an empty selection does not crash. +• Redoing the insertion of an empty file does not crash. +• On the BSDs and macOS, ^H has become rebindable again + (in most terminal emulators, not on the console). +• DOS line endings in nanorc files are accepted. +• Option --suspend / 'set suspend' has been renamed to + the more logical --suspendable / 'set suspendable'. + 2020.02.07 - GNU nano 4.8 "Jaška" • When something is pasted into nano, auto-indentation is suppressed, and the paste can be undone as a whole with a single M-U. diff --git a/configure.ac b/configure.ac index 3aaffd49..5a373c93 100644 --- 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.8], [nano-devel@gnu.org], [nano]) +AC_INIT([GNU nano], [4.9], [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 index 9f7a4862..1cd6448a 100644 --- a/doc/faq.html +++ b/doc/faq.html @@ -89,7 +89,7 @@

1.3. Why the name change from TIP?

On January 10, 2000, TIP was officially renamed to nano because of a namespace conflict with another program called 'tip'. The original 'tip' program "establishes a full duplex terminal connection to a remote host", 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).

1.4. What is the current version of nano?

-

The current version of nano should be 4.8. Of course, you should always check the nano homepage to see what the latest and greatest version is.

+

The current version of nano should be 4.9. Of course, you should always check the nano homepage to see what the latest and greatest version is.

1.5. I want to read the man page without having to download the program!

Jeez, demanding, aren't we? Okay, look here.


diff --git a/doc/nano.1 b/doc/nano.1 index 5f6547a6..1d1b49d1 100644 --- a/doc/nano.1 +++ b/doc/nano.1 @@ -16,7 +16,7 @@ .\" Documentation License along with this program. If not, see .\" . .\" -.TH NANO 1 "version 4.8" "February 2020" +.TH NANO 1 "version 4.9" "March 2020" .SH NAME nano \- Nano's ANOther editor, inspired by Pico diff --git a/doc/nano.texi b/doc/nano.texi index e59d83a1..868744e6 100644 --- a/doc/nano.texi +++ b/doc/nano.texi @@ -8,8 +8,8 @@ @smallbook @set EDITION 0.5 -@set VERSION 4.8 -@set UPDATED February 2020 +@set VERSION 4.9 +@set UPDATED March 2020 @dircategory Editors @direntry @@ -23,7 +23,7 @@ @titlepage @title GNU @command{nano} @subtitle a small and friendly text editor -@subtitle version 4.8 +@subtitle version 4.9 @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.8. +This manual documents the GNU @command{nano} editor, version 4.9. @menu * Introduction:: diff --git a/doc/nanorc.5 b/doc/nanorc.5 index 0a124cab..ad2604b9 100644 --- a/doc/nanorc.5 +++ b/doc/nanorc.5 @@ -16,7 +16,7 @@ .\" Documentation License along with this program. If not, see .\" . .\" -.TH NANORC 5 "version 4.8" "February 2020" +.TH NANORC 5 "version 4.9" "March 2020" .SH NAME nanorc \- GNU nano's configuration file diff --git a/doc/rnano.1 b/doc/rnano.1 index b00f07a2..93303992 100644 --- a/doc/rnano.1 +++ b/doc/rnano.1 @@ -16,7 +16,7 @@ .\" Documentation License along with this program. If not, see .\" . .\" -.TH RNANO 1 "version 4.8" "February 2020" +.TH RNANO 1 "version 4.9" "March 2020" .SH NAME rnano \- a restricted nano diff --git a/roll-a-release.sh b/roll-a-release.sh index 4abc53f9..811f1689 100755 --- a/roll-a-release.sh +++ b/roll-a-release.sh @@ -1,6 +1,6 @@ #!/bin/bash -VERSION="4.8" +VERSION="4.9" ./configure -C --enable-tiny && make && ./configure -C &&