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'.
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 justification) https://savannah.gnu.org/bugs/?56308 (copy first-line indent [request]) https://savannah.gnu.org/bugs/?57437 (possible mistaken first-line indent) https://savannah.gnu.org/bugs/?57756 (accept nanorc in DOS format [request]) https://savannah.gnu.org/bugs/?57777 (useless buffer when honoring lock 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 hardwrap) https://savannah.gnu.org/bugs/?57851 (unwanted jumpy scroll with softwrap) 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 insertion) 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 memory) https://savannah.gnu.org/bugs/?57942 (nanorc allowed some empty regexes) https://savannah.gnu.org/bugs/?57950 (start= without end= was stored anyway) https://savannah.gnu.org/bugs/?57958 (poorly placed cursor upon some redos) https://savannah.gnu.org/bugs/?57959 (*crash* when justifying empty region) https://savannah.gnu.org/bugs/?57960 (backward selection not always retained) https://savannah.gnu.org/bugs/?57972 (out-of-bounds access when justifying) https://savannah.gnu.org/bugs/?57974 (succeeding indentation could be wrong) https://savannah.gnu.org/bugs/?57981 (rebinding ^H on macOS did not work) https://savannah.gnu.org/bugs/?57984 (possible miswrapping for small widths) https://savannah.gnu.org/bugs/?57987 (unwanted linefeed in help text) https://savannah.gnu.org/bugs/?57991 (help text could scroll horizontally) 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 paste) 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.13 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 --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 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= 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 <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 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 -- Benno
signature.asc
Description: OpenPGP digital signature
-- If you have a working or partly working program that you'd like to offer to the GNU project as a GNU package, see https://www.gnu.org/help/evaluation.html.
