[Development moved to git on April 1.  The Changelog was discontinued.]


2016-03-31  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (do_int_spell_fix): Replace a fake 'while', delete a
	redundant 'if', rename a variable, and adjust whitespace.

2016-03-30  Benno Schulenberg  <bensberg@justemail.net>
	* src/search.c (do_replace_loop, go_looking, findnextstr): Report
	"Cancelled" instead of "Not found" when the user aborts a replace
	that is taking too long.  This fixes Savannah bug #47439.
	* src/winio.c (do_replace_highlight): Rename this to 'spotlight',
	for clarity, and for contrast with 'do_replace/do_replace_loop'.
	* src/winio.c (spotlight): Rename a variable for clarity.
	* src/files.c (input_tab), src/prompt.c (get_prompt_string):
	Rename a variable to better indicate booleanness.
	* src/text.c (do_int_speller): Unwrap a few lines.

2016-03-29  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.c (main), src/text.c (do_justify, do_verbatim_input),
	src/winio.c (parse_escape_sequence): Place the cursor in the edit
	window also when --constantshow is in effect, after a ^J Justify or
	an invalid escape sequence, and when entering a verbatim keystroke.
	Leave the cursor off during Unicode input, for extra feedback.
	* src/browser.c (do_browser): Improve the wording of a message.
	* src/chars.c (is_valid_unicode): Speed up Unicode validation.
	* src/text.c (do_int_spell_fix): Allow to stop replacing a word
	without aborting the entire spell-fixing session.
	* src/search.c (do_replace_loop): Chop a now-unused parameter.

2016-03-28  Benno Schulenberg  <bensberg@justemail.net>
	* src/winio.c (statusbar): Don't bother putting back the cursor in
	the edit window, as it is off anyway, and will be placed back in the
	main loop.  This prevents a segfault when trying to open a directory.
	* src/search.c (findnextstr): Provide feedback when searching takes
	longer than roughly half a second (on average).
	* src/*.c: Remove the 'last_replace' variable that is never used.
	* src/winio.c (parse_kbinput): Delete a no-op.

2016-03-23  Benno Schulenberg  <bensberg@justemail.net>
	* src/search.c (findnextstr): Prevent the internal spell checker from
	finding the first occurrence twice.  And delete the piece of dead code
	that was meant to do this.  This fixes Savannah bug #47188.
	* src/search.c (findnextstr): Clean up and rename a variable.
	* src/search.c (findnextstr): Poll the keyboard once per second.
	* src/winio.c (reset_cursor): Remove a pointless condition, and make
	use of an existing intermediary variable.
	* src/winio.c (reset_cursor): Tidy up and rename a variable.
	* src/winio.c (onekey): Elide an unneeded 'if' and unneeded variable.

2016-03-22  Thomas Rosenau  <thomasr@fantasymail.de>
	* configure.ac, src/*.c: Check for the existence of the REG_ENHANCED
	regex flag, and use it when it's available (on OS X systems).  This
	completes the fix for Savannah bug #47325.

2016-03-21  Benno Schulenberg  <bensberg@justemail.net>
	* src/browser.c (findnextfile): Trim a duplicate variable.
	* src/browser.c (browser_refresh, findnextfile): Rename four vars.

2016-03-20  Benno Schulenberg  <bensberg@justemail.net>
	* src/files.c (do_writeout), src/nano.c (do_exit): Normalize the
	punctuation in some prompts: no space before a question mark, and
	a semicolon instead of a comma between phrases.
	* src/text.c (do_cutword): Don't put cut words into the cutbuffer --
	that is: treat the deletion of words like pressing Backspace/Delete.
	* src/search.c (get_history_completion, find_history): Cycle through
	the items from newest to oldest.  This fixes Savannah bug #47205.
	* src/files.c (do_writeout): When the name of the file was changed,
	always ask whether this is okay.  This fixes Savannah bug #46894.
	* src/search.c (do_research): Use 'return' instead of 'else'.
	* src/search.c (do_search): Don't bother setting 'answer'; just	use
	'last_search', which has been set to 'answer' in search_init().
	* src/search.c (go_looking): Factor out the common part of
	do_search() and do_research() into this new function.

2016-03-19  Benno Schulenberg  <bensberg@justemail.net>
	* src/search.c (search_init): Always remember the last typed string,
	also when it's an invalid regex.  This fixes Savannah bug #47440.
	* src/search.c (search_init, do_replace): Don't bother setting the
	current answer to the empty string, as do_prompt() can handle a NULL.
	* src/browser.c (do_browser): Delete a snippet of dead code.
	* src/browser.c (do_browser): Delete an unneeded variable.
	* src/search.c (do_gotolinecolumn): Delete another unneeded variable.
	* src/search.c (search_init): Snip an always-FALSE condition.
	* src/search.c (search_init): Reshuffle stuff to reduce indentation.
	* src/search.c (do_replace): Snip a useless setting of answer.

2016-03-17  Benno Schulenberg  <bensberg@justemail.net>
	* src/search.c (do_research): Use the Search key bindings also during
	a Re-search, to enable cancelling.  This fixes Savannah bug #47159.
	* src/search.c (do_replace): Remove two redundant returns.
	* src/search.c (findnextstr): Prune two #ifdefs.
	* src/search.c: Adjust some indentation.

2016-03-14  Benno Schulenberg  <bensberg@justemail.net>
	* src/color.c (color_update): Don't dereference a possible NULL.
	* src/rcfile.c (parse_colors): Make error message equal to others.
	* src/rcfile.c (parse_rcfile): Rearrange some things to reduce the
	indentation level by four steps, so we can unwrap a dozen lines.

2016-03-13  Benno Schulenberg  <bensberg@justemail.net>
	* src/search.c (regexp_init): Allow using the word boundary markers
	\< and \> in search strings on non-GNU systems.  This is a partial
	fix for Savannah bug #47325 reported by Thomas Rosenau.
	* src/rcfile.c (parse_rcfile, parse_colors, nregcomp): Combine the
	regular-expression flags at compile time instead of at run time.
	* src/rcfile.c (parse_syntax, parse_colors): Rename a variable.
	* src/winio.c (edit_draw): Give a central variable a ringing name.

2016-03-13  Thomas Rosenau  <thomasr@fantasymail.de>  (tiny change)
	* autogen.sh, README.SVN: Mention SVN instead of CVS.

2016-03-12  Benno Schulenberg  <bensberg@justemail.net>
	* src/color.c (color_update): Set the syntax and regex pointers
	just once, in a single place.  And unnest two 'if's.
	* src/rcfile.c (parse_one_include, parse_includes): New names for
	these functions, to be more distinguishable.
	* src/rcfile.c (parse_colors): Reduce the indentation.
	* src/rcfile.c (parse_colors): Rename a variable.
	* src/rcfile.c (parse_colors, parse_rcfile): Refind the tail of
	the colors list only when extending, not for every added color.

2016-03-11  Benno Schulenberg  <bensberg@justemail.net>
	* src/browser.c (do_browser): Fix compilation when configured with
	--enable-tiny plus --enable-browser.
	* src/rcfile.c: Tweak some comments and reshuffle some lines.
	* src/rcfile.c (color_to_short): Elide a variable.
	* src/rcfile.c (grab_and_store): First check that there is an
	open syntax before checking that it is named "default".
	* src/rcfile.c (parse_rcfile): Fix compilation when configured with
	--enable-tiny plus --enable-nanorc.

2016-03-10  Benno Schulenberg  <bensberg@justemail.net>
	* src/rcfile.c (grab_and_store): Do not accept 'header' and 'magic'
	commands for the default syntax.  This fixes Savannah bug #47323.
	* src/rcfile.c (pick_up_name): Fold the parsing of a linter and
	formatter command into a single routine.
	* src/rcfile.c (parse_header_exp, parse_magic_exp, grab_and_store):
	Elide the first two functions, and reshuffle parameters in the last.
	* src/rcfile.c (parse_syntax, parse_rcfile), src/color.c
	(color_update): Turn the linked list of syntaxes upside-down, so that
	the last-defined one comes first, so that searching can stop at the
	first match instead of always having to run through the entire list.
	* src/rcfile.c: Rename a variable to better fit its new role.

2016-03-09  Benno Schulenberg  <bensberg@justemail.net>
	* src/rcfile.c (parse_syntax): Produce an adequate error message
	when the syntax name is unquoted.  This fixes Savannah bug #47324.
	* src/rcfile.c (parse_syntax): Use the grab_and_store() function
	also for gathering up extension regexes.

2016-03-04  Benno Schulenberg  <bensberg@justemail.net>
	* src/color.c (found_in_list): Don't bother keeping the compiled
	regular expression when it matched -- drop this tiny optimization
	for when opening multiple files.  Instead stop calling malloc().
	* src/nano.h: Delete a now-unused struct member.
	* src/global.c (free_list_item): Elide this now too tiny function.
	* scr/global.c (thanks_for_all_the_fish): Rename three variables.
	* src/rcfile.c (parse_colors): Tweak a few things.
	* src/color.c (color_update): Rename a variable.

2016-03-01  Benno Schulenberg  <bensberg@justemail.net>
	* src/rcfile.c (parse_syntax), src/color.c (color_update): Don't
	bother discarding a duplicate syntax (it's too rare, saves little
	memory, and freeing it properly	would cost even more code), just
	select the last-defined one.  This addresses Savannah bug #47303.
	* src/color.c (color_update): Allow to select an empty syntax.

2016-02-29  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.h, src/rcfile.c, src/color.c: Rename a struct member.
	* src/rcfile.c (parse_rcfile): Don't allocate a struct for the
	"none" syntax (and thus prevent it from being extended).
	* src/nano.h, src/rcfile.c: Arrange some things more orderly.
	* src/rcfile.c (parse_rcfile): Close an extended syntax again.
	* src/rcfile.c (parse_rcfile): Rename a variable.
	* src/rcfile.c (grab_and_store): Fix breakage of r5695.
	* src/color.c (color_update): Do not dereference symlinks, so that
	the syntax will be derived from the name given on the command line,
	not from that of the target file.  This fixes Savannah bug #47307.

2016-02-28  Benno Schulenberg  <bensberg@justemail.net>
	* src/rcfile.c (parse_header_exp): Don't continue when something is
	wrong -- skip the rest of the line.  This fixes Savannah bug #47289.
	* src/rcfile.c (parse_header_exp, parse_magic_exp, grab_and_store):
	Use the now correct parsing of header regexes also for parsing magic
	regexes.  This fixes Savannah bug #47292 and saves 50 lines of code.
	* src/rcfile.c (grab_and_store): Rename a variable and densify.
	* src/rcfile.c (grab_and_store): Do not drop regexes that were
	gathered earlier.  This fixes Savannah bug #47285.
	* src/rcfile.c (grab_and_store): Rearrange things in my style.
	* src/rcfile.c (parse_syntax, parse_rcfile): Disallow adding any
	further things to a syntax when an rcfile ends or when an invalid
	syntax command is found.  This fixes Savannah bug #47207.

2016-02-26  Benno Schulenberg  <bensberg@justemail.net>
	* doc/man/nanorc.5, doc/texinfo/nano.texi, doc/syntax/nanorc.nanorc,
	doc/nanorc.sample.in: Correct the description of 'justifytrim', add
	it to the Info document, sort it, and tweak a wording.
	* src/color.c (color_update): Look for a default syntax only when
	all else failed -- forego the small, complicating optimization.
	* src/color.c (color_update): Strip things bare to see the sameness.
	* src/color.c (found_in_list): Factor out this triple repetition.
	* src/color.c (color_update): Rename a variable for conciseness.
	* src/color.c (nfreeregex): Elide this function, now used just once.
	* src/nano.h: Rename a struct element for aptness and contrast.
	* src/nano.h: Rename another element, because it refers not just
	to file extensions, but also to header lines and magic strings.

GNU nano 2.5.3 - 2016.02.25

2016-02-25  Benno Schulenberg  <bensberg@justemail.net>
	* src/browser.c (do_browser): Plug a memory leak by not copying
	a string twice.  This fixes Savannah bug #47206.
	* src/browser.c (do_browser): Now put things in the proper order.
	* src/files.c (make_new_buffer), src/nano.c (splice_opennode): Elide
	the latter function, by handling the two cases (the creation of the
	first element, and the insertion of a new element) directly.

2016-02-23  Benno Schulenberg  <bensberg@justemail.net>
	* src/prompt.c (do_statusbar_output, do_statusbar_delete):
	Rename a variable, for contrast and correctness.
	* src/cut.c (do_copy_text): Don't move the cursor when copying a
	backwardly marked region.  This fixes Savannah bug #46980.
	* src/text.c (do_undo, do_redo): Center the cursor when the
	thing being undone or redone is currently off the screen.
	* src/{files,nano,winio}.c: Rewrap and reshuffle some lines.

2016-02-22  Chris Allegretta  <chrisa@asty.org>
	* Add the ability to kill the trailing spaces when justifying text,
	by adding a new nanorc option 'justifytrim' -- we'll see whether
	this warrants a command-line flag or not.  Now with slightly
	better logic for multi-spaced lines.

2016-02-22  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.c (free_openfilestruct): Elide this function.
	* scr/global.c (thanks_for_all_the_fish, free_list_item): Condense.
	* src/winio.c (edit_scroll): The amount to scroll is never zero.
	* src/prompt.c (do_statusbar_prev_word, do_statusbar_next_word),
	src/move.c (do_prev_word, do_next_word): Sort these in standard way.
	* src/prompt.c (do_statusbar_output): Don't move too many bytes.
	This fixes Savannah bug #47219 (uncovered by r5655).
	* src/prompt.c (do_statusbar_output): Elide a variable.
	* src/prompt.c (do_statusbar_delete): There is no need for nulling:
	the charmove() already copies the terminating null byte.
	* src/text.c (do_justify), src/winio.c (parse_escape_sequence):
	Show the cursor after a justification and after an unrecognized
	escape sequence, and in the edit window when linting.
	* src/text.c (do_linter): Use the correct column number, also when
	messages are skipped.  And don't mind zero or negative numbers.
	This is a partial fix for Savannah bug #47131.

2016-02-21  Benno Schulenberg  <bensberg@justemail.net>
	* src/files.c (input_tab): If the first Tab added the part that all
	matches have in common, don't require a third Tab to show the list.
	* scr/global.c (thanks_for_all_the_fish): Remove unneeded checks.

2016-02-20  Benno Schulenberg  <bensberg@justemail.net>
	* src/search.c (get_history_completion): Avoid leaking memory
	when tabbing on a string that does not occur in the history.
	This fixes Savannah bug #47124 reported by Mike Frysinger.
	* src/files.c (input_tab): Parse a character in the correct
	buffer.  This fixes Savannah bug #47199.
	* src/prompt.c (do_statusbar_output): Reduce an allocation to what
	is actually needed.  This undoes the papering-over of above bug.

2016-02-18  Benno Schulenberg  <bensberg@justemail.net>
	* src/search.c (do_replace_loop), src/text.c (do_int_spell_fix),
	src/winio.c (edit_refresh): Fix Savannah bug #47127 the proper way.
	* src/nano.c (free_filestruct): Allow the parameter to be NULL.
	* src/search.c (search_init): Delete a debugging leftover.

2016-02-16  Benno Schulenberg  <bensberg@justemail.net>
	* src/files.c (initialize_buffer_text): Delete redundant assignment.

2016-02-15  Benno Schulenberg  <bensberg@justemail.net>
	* src/files.c (read_file): Free not just the struct but also the
	data it contains, and also when it is the first and only line.
	This fixes Savannah bug #47153 reported by Mike Frysinger.
	* src/files.c (get_full_path): Avoid losing a buffer when getcwd()
	fails. 	This fixes Savannah bug #47129 reported by Mike Frysinger.

2016-02-14  Benno Schulenberg  <bensberg@justemail.net>
	* src/search.c (do_replace_loop): Make iterating through replacement
	matches behave again like iterating through search matches: showing
	them centered when found offscreen.  This fixes Savannah bug #47127.
	* src/text.c (do_int_spell_fix): Restore the above behavior also for
	the internal spell fixer.
	* src/prompt.c (do_statusbar_input, do_statusbar_verbatim_input,
	do_statusbar_output): Do the copying from input to output just once.
	* src/prompt.c (do_statusbar_output): Rename and condense some stuff,
	and correct the main comment: filtering means allow_cntrls==FALSE.
	* README, TODO, doc/man/{nano.1,rnano.1,nanorc.5}: Say that 2.5.x
	is a "rolling" release, lock files are done, and prepare for 2.5.3.

2016-02-13  Benno Schulenberg  <bensberg@justemail.net>
	* src/browser.c (do_browser, browser_refresh): Rebuild the file list
	only when necessary, not for each and every cursor movement.  This
	fixes Savannah bug #47133.
	* src/files.c (save_poshistory): Allocate enough space for printing
	out the line and column numbers.  This fixes Savannah bug #47135.
	* src/*.c: Switch the cursor on and off at the appropriate moments,
	so that it no longer shows in the help screen nor in the file list.
	This fixes Savannah bug #47126.

GNU nano 2.5.2 - 2016.02.12

2016-02-11  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (do_linter): Go to the next item in the list before
	freeing the current one.  This fixes Savannah bug #46796.
	* src/text.c (do_formatter): Don't leave curses mode, as that would
	hide any error messages upon reentry.  And if there are any messages,
	allow the user a little time to read them.
	* src/text.c (do_linter, do_formatter): Condense some declarations,
	rewrap some lines, and improve a few comments.
	* doc/syntax/go.nanorc: Make the formatter command more visible.

2016-02-10  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (discard_until): Prevent a chain of editing actions from
	continuing after a discard.  This fixes Savannah bug #47104.
	* src/files.c (get_full_path): Plug a sneaky memory leak.  This fixes
	Savannah bug #47003 reported and solved by Mike Frysinger.
	* src/rcfile.c (parse_binding): Allow only control sequences in the
	proper range to be rebound.  This fixes Savannah bug #47025.
	* THANKS: Add a Spanish, a Catalan, and a Croat translator.
	* AUTHORS, THANKS: Remove SVN Id tags and a duplication.
	* src/winio.c (get_kbinput), src/nano.c (main): Switch the cursor on
	in the right place: in the central input routine.
	* src/files.c (load_poshistory): Free any records that are dropped.
	This fixes Savannah bug #47111 reported by Mike Frysinger.

2016-02-09  Benno Schulenberg  <bensberg@justemail.net>
	* src/files.c (stat_with_alloc, open_buffer, write_file): Check the
	result of a stat() to avoid referencing unitialized data.  Original
	patch was by Kamil Dudka.
	* doc/man/{nano.1,rnano.1,nanorc.5}: Adjust version for release.

2016-02-07  Benno Schulenberg  <bensberg@justemail.net>
	* src/files.c (update_poshistory): Don't put files in the history list
	when they have the default cursor position (line 1, column 1).
	* src/files.c (write_file): Avoid a pointless lstat() when not writing
	to a temp file, and in the bargain elide two variables.
	* src/files.c (write_file): Elide an unneeded 'if'.
	* doc/syntax/c.nanorc: Use a character class instead of a literal tab
	and space.  The change was inspired by David Niklas.
	* src/prompt.c (do_yesno_prompt): Normalize the indentation.
	* src/prompt.c (do_yesno_prompt): Rename a variable.

2016-02-06  Benno Schulenberg  <bensberg@justemail.net>
	* src/files.c (write_file): Remove the --nofollow option that hasn't
	been working for a dozen years.
	* src/winio.c (statusbar): Update the screen immediately whenever a
	message has been posted on the status bar.
	* src/winio.c (statusbar), src/nano.c (do_input): Turn the cursor off
	when writing in the status bar, and on when waiting for	input.
	* src/prompt.c (update_the_statusbar): Chop two parameters that are
	always the same, and that are global variables anyway.
	* src/prompt.c (update_bar_if_needed): Rename this for more contrast.
	* src/prompt.c (do_statusbar_backspace): Avoid updating the bar twice.
	* src/cut.c, src/files.c, src/prompt.c: Rewrap some lines and remove
	some useless comments.

2016-02-05  Benno Schulenberg  <bensberg@justemail.net>
	* doc/texinfo/nano.texi: Condense the descriptions of command-key
	sequences and of the screen layout, mention how to enter Unicode,
	and mention that regular expressions are line oriented.
	* src/global.c (shortcut_init): Put four strings in standard order.
	* src/text.c (do_undo), src/global.c (shortcut_init): Guide the
	translators a little bit.

2016-01-31  Benno Schulenberg  <bensberg@justemail.net>
	* src/files.c (has_valid_path): Be more specific in how a given path
	is invalid.  The change was improved by Rishabh Dave.
	* doc/syntax/nanorc.nanorc: Show ^^ and M-^ as valid key names.
	* src/prompt.c (do_statusbar_home): Make Home go always fully home.

2016-01-29  Benno Schulenberg  <bensberg@justemail.net>
	* src/files.c (do_insertfile): Do display the buffer when configured
	with only --disable-histories.  This fixes Savannah bug #47011.
	* src/nano.c (main): Check position history only when 'positionlog'
	is set.  This fixes a bug unconsciously reported by Mike Frysinger.
	* src/files.c (do_lockfile): Plug a couple of memory leaks.
	* src/files.c (update_poshistory): Plug another memory leak.
	* src/files.c (close_buffer): Update position history only when
	the option 'positionlog' is set.

2016-01-26  Benno Schulenberg  <bensberg@justemail.net>
	* src/files.c (update_poshistory): Do not add directories to the
	list of file positions.  This fixes Savannah bug #46971.
	* src/*.c: Adjust some indentation and some line wrapping.
	* src/prompt.c (do_statusbar_prev_word): When in the middle of a
	word, jump to the start of the current word, not to the start of
	the preceding one.  This fixes Savannah bug #46970.
	* src/prompt.c (do_statusbar_next_word): Use simpler algorithm.

2016-01-25  Benno Schulenberg  <bensberg@justemail.net>
	* src/files.c (update_poshistory): Handle an update of the first
	element correctly.
	* doc/texinfo/nano.texi: Document the --enable-altrcname option.
	The lack of this was pointed out by Frank.
	* doc/man/nano.1, doc/man/nanorc.5, doc/texinfo/nano.texi: Mention
	that the position history is limited to the 200 most recent files.

2016-01-24  Benno Schulenberg  <bensberg@justemail.net>
	* src/files.c (update_poshistory): Move an updated item to the end
	of the list, so that it won't be dropped any time soon.  The problem
	was pointed out by David Niklas.
	* src/winio.c (edit_redraw): Condense by removing a triplication.
	* src/prompt.c (do_statusbar_prev_word, do_statusbar_next_word):
	Chop an always-FALSE parameter and delete an unused return value.
	* src/prompt.c (do_prompt): Remove a superfluous free.
	* src/prompt.c (update_the_bar): Bundle some statements.
	* src/prompt.c (need_statusbar_update): Elide this function.
	* src/prompt.c (total_statusbar_refresh): Elide this function too.

2016-01-22  Benno Schulenberg  <bensberg@justemail.net>
	* src/utils.c (get_homedir): Don't use $HOME when we're root, because
	some sudos don't filter it out of the environment (which can lead to
	a root-owned .nano/ directory in the invoking user's home directory).
	It fixes https://bugs.launchpad.net/ubuntu/+source/nano/+bug/1471459.
	* src/files.c (read_line): Rename a variable for clarity and contrast.

2016-01-21  Benno Schulenberg  <bensberg@justemail.net>
	* src/prompt.c (get_prompt_string): Preserve the cursor position on
	the statusbar when just toggling a setting or making an excursion to
	the file browser.  This fixes Savannah bug #46945.
	* src/prompt.c (do_prompt_abort): Remove this unneeded function, as
	nothing can break out of do_prompt(), not a SIGWINCH either.
	* src/prompt.c (get_prompt_string): Delete code that is dead now.
	* src/prompt.c (get_prompt_string): Elide an unneeded variable.
	* src/browser.c (do_browser): Delete unneeded blanking of a variable.

2016-01-20  Benno Schulenberg  <bensberg@justemail.net>
	* src/files.c (open_buffer): Readjust the indentation and a comment.
	* src/files.c (has_valid_path): Get rid of a global variable.

2016-01-20  Rishabh Dave  <rishabhddave@gmail.com>
	* src/files.c (verify_path, open_buffer): When opening a new buffer,
	verify that the containing directory of the given filename exists.
	This fixes Savannah bug #44950.
	* src/files.c (do_lockfile): Remove the existence check on the
	directory, as this is now covered by verify_path().

2016-01-17  Benno Schulenberg  <bensberg@justemail.net>
	* src/global.c: Fix typo in #ifndef symbol.  Reported by Frank.
	* doc/syntax/nanorc.nanorc: Remove '+' as only one menu is allowed.
	* src/files.c (load_poshistory): Limit the number of loaded items.

2016-01-17  Mike Frysinger  <vapier@gentoo.org>
	* doc/syntax/nanorc.nanorc: Allow inline comments with key bindings.

2016-01-15  Benno Schulenberg  <bensberg@justemail.net>
	* src/winio.c (set_modified): Plug another memory leak.
	* src/files.c (set_modified): Move this function to its habitat.
	* src/files.c (open_file): Return the fantastic file descriptor
	when the opening of a non-existent file for reading succeeds.
	* src/nano.c (delete_opennode), src/text.c (discard_until):
	Free the items on the undo stack when a buffer is closed.
	This fixes Savannah bug #46904 reported by Mike Frysinger.

2016-01-15  Mike Frysinger  <vapier@gentoo.org>
	* src/files.c (open_file): Free the full filename in all cases.

2016-01-14  Benno Schulenberg  <bensberg@justemail.net>
	* doc/nanorc.sample.in: Remove a reference to an obsolete file.
	Reported by Mike Frysinger.
	* src/winio.c (edit_redraw): Delete an 'if' that is always FALSE.
	* src/winio.c (edit_redraw): Elide an unneeded variable and adjust
	some wrappings and whitespace.
	* src/proto.h: Delete two duplicate declarations.
	* src/rcfile.c (check_bad_binding): Elide this unneeded function.
	* src/rcfile.c (parse_binding): Show key only when it was rebound.

2016-01-13  Benno Schulenberg  <bensberg@justemail.net>
	* src/files.c (save_poshistory): Reduce the indentation.
	* src/*.c: Adjust a few comments and rewrap some lines.

2016-01-12  Benno Schulenberg  <bensberg@justemail.net>
	* NEWS: Fix some typos and whitespace, and normalize the dates.
	* src/files.c (load_poshistory): Rename a variable.
	* src/files.c (load_poshistory): Remove some code duplication.
	* src/files.c (save_poshistory, update_poshistory, check_poshistory,
	load_poshistory): Differentiate variable name from function names.
	* src/files.c (load_poshistory): Remove a senseless iteration.
	* src/files.c (load_poshistory): Condense the reading of a line.
	* src/files.c (load_poshistory): Reduce the indentation.

GNU nano 2.5.1 - 2016.01.11

2016-01-10  Benno Schulenberg  <bensberg@justemail.net>
	* NEWS: Add item for upcoming 2.5.1.
	* src/nano.c (version), src/winio.c (do_credits), doc/man/rnano.1,
	doc/man/nano.1, doc/man/nanorc.5: Adjust dates and version number.

2016-01-09  Benno Schulenberg  <bensberg@justemail.net>
	* src/color.c (precalc_multicolorinfo), src/winio.c (edit_draw):
	Make sure to keep advancing also when matches are zero-length.
	This fixes Savannah bug #26977 reported by Tigrmesh.
	* src/winio.c (update_line): For softwrap, don't go beyond the number
	of available rows in the edit window.  This fixes Savannah bug #42188.
	* ChangeLog: Snip inconsistent blank lines.

2016-01-07  Benno Schulenberg  <bensberg@justemail.net>
	* src/global.c (assign_keyinfo): Delete two unneeded #ifdefs: if
	they /could/ be false, the H and E keys would stop working.
	* src/global.c (assign_keyinfo): Add a comment and use a symbol.

2016-01-04  Benno Schulenberg  <bensberg@justemail.net>
	* src/global.c (shortcut_init): Nowadays the functions are defined
	only once, so there is no longer any need to free existing ones.
	* src/global.c (sctofunc): Rewrite the loop, and constify the input.
	* src/text.c (do_linter): Condense the exit code.
	* src/nano.c (allow_sigwinch): Improve its name and its comments.
	* src/global.c (shortcut_init): Add "Tab" as key description.
	* src/text.c (do_linter): Gettextize a forgotten string.
	* src/global.c (assign_keyinfo): Make "Tab" produce the appropriate
	keycode.  This fixes Savannah bug #46812 reported by Cody A. Taylor.

2016-01-04  Mike Frysinger  <vapier@gentoo.org>
	* src/global.c (strtosc, strtomenu): Constify the input parameter.

2016-01-03  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (do_deletion), src/nano.c (do_input): Let reset_multis()
	figure out whether after a deletion a full refresh is needed, before
	doing a redraw of the current line.  This fixes Savannah bug #46794.
	* src/nano.c (do_output): Let reset_multis() figure out whether after
	an addition a full refresh is needed (for multiline-regexes' sake),
	instead of doing it always.
	* src/color.c (reset_multis): Abort when having no multiline regexes.
	* src/nano.c (do_input): A functionless shortcut should be impossible.
	* src/nano.c (do_input): Adjust indentation.

2016-01-02  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (do_spell, do_formatter): Plug three tiny memory leaks.
	* src/text.c (do_alt_speller, do_formatter): There is no need here to
	reinitialize the windows; it will be done when polling the keybuffer.
	* src/winio.c (do_credits): Correctly restore the settings of NO_HELP
	and MORE_SPACE.

2015-12-31  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (do_formatter): Restore the cursor position differently.
	* src/search.c (do_gotopos): Delete this now unused function.
	* src/search.c (do_gotolinecolumn): Chop an always-FALSE parameter.
	* src/search.c (do_gotolinecolumn): Chop a duplicate parameter --
	'allow_update' always has the same value as 'interactive'.

2015-12-30  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.c (main), src/files.c (open_buffer): Don't try to position
	the cursor when opening a buffer failed (because the user specified a
	directory, for example).  This fixes Savannah bug #46778.
	* doc/syntax/ocaml.nanorc: Normalize the comments.

2015-12-29  Benno Schulenberg  <bensberg@justemail.net>
	* doc/syntax/{c,objc,asm}.nanorc: Disable the regex for multiline
	strings as it colours some things wrong and is a glutton on time.

2015-12-23  Benno Schulenberg  <bensberg@justemail.net>
	* src/files.c (do_writeout, do_writeout_void), src/global.c
	(shortcut_init, strtosc), src/nano.c (do_exit, close_and_go),
	doc/man/nanorc.5, doc/texinfo/nano.texi: In the writeout menu,
	offer ^Q to close and discard the buffer without saving it.  By
	default, the key is bound only when --tempfile is in effect.
	* doc/man/nanorc.5: Improve ordering of bindable functions.
	* src/files.c (read_file): Don't open an extra blank buffer when
	an empty file is read.  Bug was exposed by r5498, December 18.
	* src/files.c (do_writeout): When the user decides to save the
	buffer after all, go back to the filename prompt because the
	buffer may not have a name yet.  This fixes Savannah bug #46752.

2015-12-23  Mike Frysinger  <vapier@gentoo.org>
	* doc/syntax/autoconf.nanorc: Handle .m4 files too, add the "elif"
	keyword, handle dnl comments better, and mark trailing whitespace.
	* src/files.c (save_history, save_poshistory): Don't make the user
	hit Enter when there's an error saving history state at exit; it is
	pointless and annoying.  Just notify the user and move on.
	* src/nano.c (main): On most 64-bit systems, casting a pointer to
	an integer can cause valid pointers to be truncated and rejected.
	Rework the code to test for the two invalid values directly.

2015-12-23  Christian Weisgerber  <naddy@mips.inka.de>
	* configure.ac: AC_CHECK_HEADERS_ONCE() is very special and cannot be
	conditionalized.  Use plain AC_CHECK_HEADERS() instead, to not check
	for magic.h and zlib.h when configuring with --disable-libmagic.

2015-12-22  Benno Schulenberg  <bensberg@justemail.net>
	* src/color.c (precalc_multicolorinfo, alloc_multidata_if_needed):
	Move these two functions to the file where they belong.  And make
	the checking for an impatient user into a separate routine.
	* src/proto.h, src/winio.c (parse_escape_sequence, convert_sequence,
	arrow_from_abcd): Better names for these three functions.
	* src/winio.c (convert_sequence): Use return instead of a variable.

2015-12-20  Benno Schulenberg  <bensberg@justemail.net>
	* src/files.c (display_buffer), src/nano.c (main): Precalculate the
	multiline-regex cache data for each buffer, not just for the first.
	This fixes Savannah bug #46511.

2015-12-18  Benno Schulenberg  <bensberg@justemail.net>
	* src/color.c (color_init): Use less #ifdefs, and adjust indentation.
	* src/color.c (set_colorpairs): Improve comments and rename vars.
	* src/files.c (read_line): Chop a superfluous bool -- 'prevnode' being
	NULL is enough indication that the first line is being read.
	* src/files.c (switch_to_prevnext_buffer): Tweak comment and var name.

2015-12-11  Benno Schulenberg  <bensberg@justemail.net>
	* doc/syntax/Makefile.am: Add missing autoconf and nftables syntaxes.
	* ChangeLog: Correct a bug number, plus a few other tweaks.

2015-12-08  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.c (splice_node, unlink_node): Let these functions update
	'filebot', instead of doing it in four different places each.
	* src/search.c (goto_line_posx), src/move.c (do_down): It should not
	be necessary to doubly check for being at the end of file.
	* src/text.c (do_justify): Rewrap and reorder a few lines.

2015-12-07  Benno Schulenberg  <bensberg@justemail.net>
	* src/winio.c (edit_draw): Quit the loop when there is no end match.
	* src/files.c (do_writeout): When --tempfile is given, make ^O not
	write out the file rightaway, as otherwise there is no way to discard
	the edits.  This undoes the core part of r5378 of September 29.  See
	https://lists.gnu.org/archive/html/help-nano/2015-11/msg00005.html.

GNU nano 2.5.0 - 2015.12.05

2015-12-05  Chris Allegretta  <chrisa@asty.org>
	* src/nano.c (main): key_defined() is an ncurses-ism.  Add better
	checks for this.

2015-12-05  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c: Fix compilation with --enable-tiny --enable-justify.
	* doc/man/{nano.1,rnano.1,nanorc.5}, doc/texinfo/nano.texi:
	Update date and version number to match the upcoming release.
	* src/files.c, src/winio.c: Avoid two compilation warnings.

2015-12-04  Benno Schulenberg  <bensberg@justemail.net>
	* src/proto.h: Avoid a compilation warning.
	* src/color.c (reset_multis_for_id, reset_multis_before/after):
	Fuse these three functions into a single one.
	* src/*.c: Rewrap some lines and tweak some comments.

2015-12-03  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (discard_until): Move the trimming of the undo stack
	into a separate function, so it can be used elsewhere.
	* src/text.c (do_justify): Discard the entire undo stack, to prevent
	nano from dying (or making mistakes) when trying to undo edits after
	a justification.  This works around Savannah bug #45531.
	* src/text.c (do_indent): Also here discard the entire undo stack, to
	prevent nano from making mistakes when trying to undo edits after an
	indentation change.  This works around Savannah bug #46591.
	* doc/man/nano.1, doc/texinfo/nano.texi: Add a note about undo not
	working after a justification or reindentation.

2015-12-02  Benno Schulenberg  <bensberg@justemail.net>
	* doc/syntax/python.nanorc: Don't colour triple quotes by themselves.
	* doc/syntax/python.nanorc: Treat backslashed quotes properly, and
	don't colour triple-quoted strings in two manners.
	* src/text.c (do_justify): Accept not just the Uncut keystroke but
	also the Undo keystroke for undoing a justification.

2015-12-02  Arturo Borrero González  <arturo.borrero.glez@gmail.com>
	* doc/syntax/nftables.nanorc: New file; syntax colouring for nftables.
	This addresses Debian bug #805288.

2015-12-01  Benno Schulenberg  <bensberg@justemail.net>
	* src/files.c (do_insertfile): Mark the buffer as mofified only when
	actually something was inserted.  This fixes Savannah bug #45409.
	* src/files.c (do_insertfile): Rename two variables for clarity.
	* src/text.c (redo_cut): Delete two redundant assignments.
	* src/winio.c (edit_draw): Move a check to a better place.
	* src/winio.c (edit_draw): Rename a label and elide an 'else'.
	* src/winio.c (edit_draw): Unindent after previous change.
	* src/color.c (reset_multis_before, reset_multis_after): Delete four
	superfluous checks.

2015-11-30  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (redo_cut, update_undo): When cutting reaches the EOF,
	and NONEWLINES is set, there is no next line at which to put the
	cutting point for a redo.  So put it at the very end of the cut.
	This fixes Savannah bug #46541.
	* src/text.c (add_undo, update_undo, do_undo, do_redo), src/nano.h:
	Store and retrieve the correct file size before and after an action.
	This fixes Savannah bug #45523.
	* src/files.c (free_chararray): Allow the parameter to be NULL.
	This fixes Savannah bug #46420.

2015-11-29  Benno Schulenberg  <bensberg@justemail.net>
	* src/color.c (reset_multis): Evaluate correctly whether to reset
	the multidata cache.  This fixes Savannah bug #46543.
	* src/color.c (reset_multis): Reset the multidata a bit less often.
	* src/color.c (reset_multis): Adjust whitespace and comments.
	* src/winio.c (edit_draw): When an end is found but nothing is painted
	(because the coloured part is horizontally scrolled off), nevertheless
	set the multidata to CBEGINBEFORE.  This fixes Savannah bug #46545.
	* src/winio.c (edit_draw): Use the main cache-allocation routine.
	* src/winio.c (edit_draw): Delete two redundant conditions, and move
	the least frequent case to the end.
	* src/winio.c (edit_draw): Elide a variable, tweak some comments.

2015-11-28  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.c (main): Allow the user full control over the values of
	MALLOC_CHECK_ and MALLOC_PERTURB_; nano shouldn't override these.
	This reverts r5344 from August 6.
	* src/nano.c (alloc_multidata_if_needed): When allocating a new
	multidata array, initialize the array.  Problem was betrayed by
	using MALLOC_PERTURB_, and was located with valgrind.

2015-11-26  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (do_redo): Not just the undoing, also the redoing of a
	Backspace at EOF is a special case.  This fixes Savannah bug #46532.
	* src/text.c (do_redo): Warn about an impossible condition, instead
	of blithely continuing.  And elide an unneeded variable.

2015-11-25  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.c (do_output): Refreshing the whole edit window (instead
	of just the current line) is not needed for any kind of syntax, but
	only when there are multiline regexes.  And check for this not on
	every keystroke in a burst, but just once.
	* src/text.c (do_undo): Warn about a condition that should never
	occur, instead of silently continuing.
	* src/text.c (do_undo): Elide an unneeded variable, and don't skip
	the end of this function when things went wrong.
	* src/text.c (do_undo, do_redo, add_undo, update_undo): Handle more
	possible internal errors, and do it correctly.
	* AUTHORS: Add Mark and myself.

2015-11-24  Benno Schulenberg  <bensberg@justemail.net>
	* doc/syntax/makefile.nanorc: Also recognize the extensions .make and
	.mk as Makefiles.  Suggested by Emmanuel Bourg in Debian bug #804845.
	* src/color.c (color_update): Tell the user when a syntax name given
	on the command line does not exist.  This fixes Savannah bug #46503.
	* src/nano.c (splice_node): Inserting a new node into a linked list
	requires just two parameters: the insertion point and the new node.
	* src/nano.c (splice_node): Rename a variable for clarity.

2015-11-23  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.c (main), src/winio.c (parse_kbinput): Make Ctrl+Left and
	Ctrl+Right work on more terminals by asking ncurses for the keycodes.
	This addresses Debian bug #800681 reported by Arturo Borrero González.

2015-11-22  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (add_undo): Delete a condition that will never occur --
	this function is only ever called with PASTE when cutbuffer != NULL.
	* src/text.c: Rewrap, rewrite, rename, and reorder some things.
	* src/text.c (do_undo, do_redo): Elide an unneeded variable.
	* src/nano.c (unlink_node): After unlinking, also delete the node.

2015-11-21  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.c (main): Let the value of a --fill option on the
	command	line override the value of a "set fill" in an rcfile.
	This fixes Savannah bug #46492.
	* ChangeLog, NEWS: Add the release marker and copy the news item.

2015-11-21  David Lawrence Ramsey  <pooka109@gmail.com>
	* ChangeLog, NEWS: Fix a typo and adjust some spacing.

GNU nano 2.4.3 - 2015.11.18

2015-11-12  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (do_undo, update_undo): Store the correct end position of
	an inserted file, and use it when undoing.  Fixes Savannah bug #46414.
	* src/text.c (add_undo, update_undo): Delete an unneeded alias -- it
	wasn't being used consistently anyway.

2015-11-11  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (do_redo, update_undo): Redo an Enter from the stored
	undo data, instead of running do_enter() again, because the latter
	will behave differently depending on the setting of autoindent.
	This addresses Debian bug #793053 reported by Clancy.
	* src/text.c (do_enter): Chop the now unused parameter 'undoing'.
	* src/text.c (do_enter_void): Discard this now useless function.

2015-11-10  Benno Schulenberg  <bensberg@justemail.net>
	* src/winio.c (edit_draw): Skip a zero-length match only when there
	/is/ a match.  Found with valgrind.  This fixes Savannah bug #41908.
	* src/files.c (do_lockfile, update_poshistory): Plug memory leaks.

2015-11-08  Benno Schulenberg  <bensberg@justemail.net>
	* src/global.c (shortcut_init): Allow exiting from the file browser
	with the same key (^T) as it was entered (as ^G for the help viewer).
	* doc/syntax/changelog.nanorc: Accept longer bug and patch numbers.

2015-11-07  Benno Schulenberg  <bensberg@justemail.net>
	* src/search.c (do_replace_loop): Correct the logic for adjusting the
	x position of the mark -- it happened to work because 'mark_begin' is
	NULL when 'old_mark_set' is FALSE.  Also improve the comments.

2015-11-06  Benno Schulenberg  <bensberg@justemail.net>
	* src/files.c (write_lockfile): Don't bail out when the hostname is
	overlong, but instead truncate it properly and continue.  This fixes
	Ubuntu bug #1509081 reported by Sam Reed.
	* src/global.c (length_of_list), src/winio.c(get_mouseinput): Don't
	check whether a function has a help line, since all of them have.
	(And even if some didn't, they would still be valid functions.)
	* src/cut.c (cut_line): There is no need to set 'openfile->mark_begin'
	just like that; it will be set when 'openfile->mark_set' becomes TRUE.
	* src/text.c (do_redo): Delete a redundant assignment.

2015-11-02  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.h: Delete an unused type definition.
	* src/nano.h: Improve several comments.
	* src/text.c (do_wrap): Elide two variables.
	* src/cut.c (do_cut_text): Chop the 'undoing' parameter, so that the
	calls of this function become more symmetrical.

2015-10-31  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.c (copy_from_filestruct): When pasting while the mark is
	on, the mark's pointer needs to be refreshed only when it is on the
	same line as the cursor, and the mark's x coordinate only when the
	mark is located after the cursor.  This fixes Savannah bug #46347.
	* src/nano.c (copy_from_filestruct): Improve comments and combine
	two conditions.
	* ChangeLog: Correct the description of an old change.

2015-10-29  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (add_undo): Only skip adding an undo when the current
	action equals the last action.  This condition is needed for when
	typing text is broken by an undo+redo.  Fixes Savannah bug #46323.
	* src/text.c (do_redo): Check for "nothing to redo" earlier, so we
	can restore the possible warning about an internal error.
	* src/text.c (add_undo): Remove an 'if' that will never be true,
	and remove some assignments that have already been done.

2015-10-29  David Lawrence Ramsey  <pooka109@gmail.com>
	* src/files.c (do_writeout), src/nano.c (no_current_file_name_warning,
	do_exit): When option -t is given, make ^O work the same way as under
	Pico, writing out the file without prompting.  And make it work even
	better than Pico when the current file doesn't have a name yet.  This
	fixes Savannah bug #45415.  [Reverted in r5489 on December 7.]

2015-10-28  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (do_redo): For an INSERT, 'u->mark_begin_lineno' is not
	an actual line number, so spoof it.  It can be spoofed, because 'f'
	is not used for the INSERT case.  This fixes Savannah bug #45524.
	* src/text.c (do_redo): Remove a condition that can never occur.
	Also rewrite a loop to become somewhat clearer.

2015-10-27  Benno Schulenberg  <bensberg@justemail.net>
	* src/move.c (do_next_word): Rewrite this function to use the same
	logic as do_prev_word(), reducing its number of lines to half.
	* src/move.c (do_down): Don't calculate the line length twice.  And
	in the bargain avoid a warning about comparison of signed/unsigned.

2015-09-05  Benno Schulenberg  <bensberg@justemail.net>
	* src/winio.c (display_string, edit_draw): Force a redraw of a line
	only when it contains a multicolumn character, to spare all regular
	text this significant slowdown.  This fixes Savannah bug #45684
	reported by Wyatt Ward.
	* src/move.c (do_prev_word): Drop a return value that is never used.
	* src/move.c (do_prev_word): When in the middle of a word, jump to
	its beginning instead of to the beginning of the preceding word.
	Nano now matches the behaviour of Pico and of most other editors.
	This fixes Savannah bug #45413.

2015-09-04  Benno Schulenberg  <bensberg@justemail.net>
	* src/chars.c: Reverting r5354 from August 12.  This fixes Savannah
	bug #45874.  Apparently there is /some/ state somewhere after all.

2015-08-29  Benno Schulenberg  <bensberg@justemail.net>
	* doc/syntax/autoconf.nanorc: New file; syntax colouring for Autoconf.
	* src/files.c: Rewrap some lines and tweak two comments.

2015-08-16  Benno Schulenberg  <bensberg@justemail.net>
	* src/help.c (help_init, help_line_len): Avoid wide paragraphs of text
	in the help screens: wrap them at 74 columns if the screen is wider.
	* src/help.c (help_init): Reduce the scope of a variable.
	* src/help.c: Adjust some comments and whitespace.
	* src/help.c (do_help, do_help_void): Don't bother passing a function
	when it's used only once.
	* src/help.c (help_line_len): The wrap location can be beyond the EOL,
	so for determining the length of the current line, don't start at that
	location but at the beginning.  This fixes Savannah bug #45770.
	* src/help.c (help_line_len): Rename and reorder most of it.
	* src/nano.c (make_new_opennode), src/files.c (initialize_buffer):
	Remove some duplication in the initialization of a new openfile node.
	* src/nano.c (make_new_opennode): Don't bother setting things to NULL
	when they will be initialized right away.
	* src/files.c (make_new_buffer): Don't bother with a separate function
	when it's used only once, right there.
	* src/help.c (help_init): Since the new SIGWINCH handling, a resizing
	of the window will no longer break out of the help viewer, so there is
	no need any more for an extra freeing of the help text.

2015-08-13  Benno Schulenberg  <bensberg@justemail.net>
	* src/search.c (do_find_bracket): Remove mistaken comparison between
	pointer and literal character.  Found with cppcheck.
	* src/browser.c (browser_init): Speed up the finding of the longest
	filename: don't limit the value to that of COLS all the time, as this
	is done later anyway, and don't bother skipping the dot entry.
	* src/global.c (shortcut_init): In restricted mode, allow changing
	the file format, but actually disable Appending, Prepending, making
	Backups, and opening the File Browser.

2015-08-12  Benno Schulenberg  <bensberg@justemail.net>
	* src/chars.c: UTF-8 is a stateless encoding, so there is no need to
	reset any state.  [Reverted in r5369 on September 4.]

2015-08-11  Benno Schulenberg  <bensberg@justemail.net>
	* src/files.c (write_file): Avoid calling copy_file() with a null
	pointer.  Found with cppcheck.
	* src/files.c (write_file): A failure to delete the temporary file
	does not mean that it wasn't copied properly.

2015-08-09  Benno Schulenberg  <bensberg@justemail.net>
	* src/global.c, src/help.c (help_init), src/nano.c (do_toggle, main),
	src/winio.c (display_string, statusbar): Allow toggling the display
	of whitespace also when support for nanorc files was not built in,
	because the default values are quite usable.
	* src/files.c (read_file), src/rcfile.c, src/nano.c (main, usage):
	Fix compilation with --enable-tiny; file formats are not available
	then, so option --unix has no place; also add its description.
	* src/nano.c (finish): Remove an unneeded and mistaken condition.
	* src/nano.c (say_there_is_no_help): Make it sound more definitive.

2015-08-08  Benno Schulenberg  <bensberg@justemail.net>
	* src/winio.c (display_string): For some reason the reallocation done
	by null_at() messes things up.  So put in the null byte "manually".
	This is a fix -- or workaround -- for Savannah bug #45718.

2015-08-06  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.c (main): For --enable-debug builds, let malloc() help
	to find initialization failures and uses-after-free.  Suggested by
	Mike Frysinger.  [Reverted in r5446 on November 28.]
	* doc/texinfo/nano.texi: Improve the formatting, using @t to mark
	double-quoted literal strings, @: to mark periods that do not end
	sentences, and @. to mark a finishing period after a capital.

2015-08-04  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.c (main), src/files.c (read_file), src/rcfile.c,
	doc/man/nano.1, doc/man/nanorc.5, doc/texinfo/nano.texi: Add
	the option --unix, to save a file by default in Unix format.
	* doc/nanorc.sample.in: Advertise the five new bindable functions.
	* doc/man/nano.1, doc/man/nanorc.5, doc/texinfo/nano.texi: Tweaks.

2015-08-03  Benno Schulenberg  <bensberg@justemail.net>
	* src/rcfile.c (parse_binding): Check the value of shortcut->toggle
	only if it actually is a toggle.  Found with valgrind.
	* src/files.c (write_lockfile): Plug a leak.  Found with valgrind.
	* src/rcfile.c (parse_binding): Plug a tiny leak.

2015-08-02  Benno Schulenberg  <bensberg@justemail.net>
	* src/files.c (initialize_buffer): Initialize also openfile->syntax.
	This addresses Debian bug #787914 reported by Paul Wise.

2015-08-01  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.c (precalc_multicolorinfo): Set each multiline-color
	value instead of OR-ing it.  This fixes Savannah bug #45640.
	* src/help.c (help_init): Show also the dedicated keys in the
	^G help text.  This helps to clarify some keys, and helps to
	see which ones could easily be rebound.
	* src/nano.c (usage): Add "and exit" to the description of --help,
	to match --version, and to distinguish it more from ^G.

2015-07-31  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (do_cutword, do_cut_prev_word, do_cut_next_word),
	src/global.c (shortcut_init, strtosc), doc/texinfo/nano.texi,
	doc/man/nanorc.5: Add two new bindable functions, 'cutwordleft'
	and 'cutwordright', which delete all characters from the cursor
	to the preceding or succeeding word start.  Fixes bug #32803.

2015-07-30  Benno Schulenberg  <bensberg@justemail.net>
	* src/global.c (shortcut_init): Don't show ^R and ^T in the help
	lines in restricted mode (if possible), to give visual feedback.
	* src/*.c: Normalize the whitespace after the preceding changes.
	* src/nano.c (show_restricted_warning, say_there_is_no_help):
	Differentiate between something being disabled/restricted (because
	of the way of invocation) and help texts being unavailable (which
	is a compile-time decision).
	* src/global.c (shortcut_init): Change "Justify" to a tag and regroup.
	* src/nano.c (do_suspend_void, do_suspend): Provide feedback when
	suspension is not enabled; and it cannot be enabled in restricted
	mode any longer, so there is no need to check for that any more.

2015-07-29  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (do_linter): When the linter is called in restricted mode
	(possible when nano was built with --disable-speller), it is better to
	say that this function is disabled than that no linter was defined.
	* src/nano.c (usage): When asking for --help in restricted mode, don't
	show options that don't have any effect.
	* src/nano.c (do_toggle): Make the four toggles that don't have any
	effect in restricted mode say that they're disabled.

2015-07-28  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (do_formatter), src/nano.c (allow_pending_sigwinch):
	Reenable SIGWINCH-es also when invoking the formatter fails, and
	correct some comments.
	* src/text.c (do_linter, do_formatter): In restricted mode, no nanorc
	files are read, so no linter or formatter will be defined, so these
	routines will never be called.  Also, the formatter will only ever
	be called when a syntax applies to the current file and this syntax
	defines a formatter, so there is no need to check this again.

2015-07-26  Benno Schulenberg  <bensberg@justemail.net>
	* src/search.c (do_replace_loop): When doing regex replacements, find
	each zero-length match only once.  This fixes Savannah bug #45626.
	* src/global.c (shortcut_init, strtosc), src/search.c (do_findnext,
	do_findprevious), doc/man/nanorc.5, doc/texinfo/nano.texi: Add two
	new bindable functions, 'findnext' and 'findprevious', which repeat
	the last search command in a fixed direction without prompting.
	* src/global.c (shortcut_init): Tweak a string.
	* src/search.c, src/move.c: Improve a few of the comments.
	* src/search.c (replace_regexp, replace_line): Rename two variables,
	and make the calculation of the new line size more symmetrical.

2015-07-25  Benno Schulenberg  <bensberg@justemail.net>
	* src/global.c (shortcut_init, strtosc), src/files.c (savefile),
	doc/man/nanorc.5, doc/texinfo/nano.texi: Add a new bindable function,
	'savefile', which writes a file to disk without first asking for its
	name.  This implements Savannah patch #8208 submitted by Seiya Nuta.

2015-07-23  Benno Schulenberg  <bensberg@justemail.net>
	* doc/man/{nano.1,nanorc.5}, doc/texinfo/nano.texi: Add deprecation
	notices for the options 'set const', 'set poslog' and '--poslog'.
	Suggested by Eitan Adler.
	* doc/faq.html: Mention --disable-histories and --disable-libmagic.
	* src/chars.c (mbstrcasestr, mbrevstrcasestr): When searching, find
	only valid UTF-8 byte sequences.  This fixes Savannah bug #45579,
	first reported in 2009 by Mike Frysinger.

2015-07-22  Mike Frysinger  <vapier@gentoo.org>
	* src/files.c (check_dotnano), src/global.c (thanks_for_all_the_fish),
	src/rcfile.c (parse_binding): Plug a few memory leaks.

2015-07-19  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.c (main): Accept again a +LINE argument for each file
	given on the command line.  This fixes Savannah bug #45576.
	* src/nano.c (main): Adjust some comments and rewrap some lines.

2015-07-18  Benno Schulenberg  <bensberg@justemail.net>
	* src/winio.c (edit_draw): When looking for multiline-regex matches,
	look for a new start only after an end, instead of right after the
	last start.  This fixes bug #45525 and bug #41313 on Savannah.
	* src/nano.c, src/text.c, src/winio.c: Adjust some comments.
	* doc/faq.html: Fix a few typos and make some updates for 2.4.*.
	* ChangeLog: Make the release markers stand out more.

2015-07-17  Benno Schulenberg  <bensberg@justemail.net>
	* src/files.c (open_buffer): Verify that a named and existing file
	is a normal file, to avoid opening an empty buffer when the name of
	a directory is specified.  This fixes Savannah bug #45383 reported
	by Mike Frysinger, and also Savannah bug #27839 (which is an echo
	from Debian bug #551717 reported by Paul Wise).
	* src/files.c (load_history): Remove an earlier attempt to make M-W
	work at startup.  It no longer worked because the assigned value gets
	overwritten by a later initialization of 'last_search' to the empty
	string.  Found through the use of valgrind.
	* src/text.c (do_alt_speller): Avoid an unfounded warning about a
	possibly uninitialized variable.

2015-07-17  Mike Frysinger  <vapier@gentoo.org>
	* src/browser.c (browser_refresh): Use the proper type (off_t) for
	the size of a file, and avoid warnings about too large bit shifts.

2015-07-15  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.c, src/rcfile.c, doc/nanorc.sample.in, doc/man/nano.1,
	doc/man/nanorc.5, doc/texinfo/nano.texi, doc/syntax/nanorc.nanorc:
	Unabbreviate the long option --const to --constantshow, and --poslog
	to --positionlog, to be more understandable.
	* src/nano.h, src/global.c (add_to_sclist), src/help.c (help_init),
	src/rcfile.c (parse_binding), src/winio.c (get_shortcut): Rename
	the 'menu' item in the sc (shortcut) struct to 'menus', as it can
	refer to more than one menu.

2015-07-13  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (do_int_spell_fix, do_alt_speller): Remove an unneeded
	condition; 'added_magicline' can only be true when NO_NEWLINES isn't.
	* src/files.c (replace_buffer): Prevent a segfault when spellchecking
	a marked region and nonewlines isn't set.

2015-07-12  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (do_alt_speller): Rename the variable 'totsize_save'
	to 'size_of_surrounding', to better describe what it contains.
	* src/files.c (read_file): Remove a stray space from a message.

2015-07-10  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.c (delete_opennode): Plug a small memory leak.
	* src/files.c (do_lockfile): Rename a variable; it does not contain
	the size of the file but the size of the name.
	* src/nano.c (do_toggle): Elide an unneeded variable.
	* src/files.c: Unwrap some lines and rewrap some others in a more
	congenial manner; tweak some comments and whitespace and braces.
	* src/files.c (read_line): Remove two lines of dead code.
	* src/files.c (read_line): Rearrange a few lines and some whitespace.

2015-07-06  Benno Schulenberg  <bensberg@justemail.net>
	* src/global.c (add_to_sclist), src/help.c (help_init), src/nano.h,
	src/rcfile.c (parse_binding): When defining the toggles, give each
	of them a sequence number, so that, when they are rebound, they can
	still be listed in the original order in the help text.  This fixes
	Savannah bug #45417.
	* src/text.c (do_undo): Make it clearer what WAS_FINAL_BACKSPACE does.
	* src/text.c (add_undo, do_deletion): Move the check for a Delete at
	the end-of-file to a less frequently travelled path.
	* src/text.c (do_deletion): If a Backspace happens at the end-of-file,
	don't remove and then re-add the magic line; just add an undo item.
	* src/help.c (help_init), src/text.c (do_undo): Adjust whitespace and
	bracing after the previous changes.

GNU nano 2.4.2 - 2015.07.05

2015-06-28  Benno Schulenberg  <bensberg@justemail.net>
	* src/browser.c (browser_refresh): Limit the selected file to the
	available ones in the list -- after a refresh the number may have
	decreased.  This fixes Savannah bug #45424.
	* src/text.c (do_deletion): There is no need to check again for the
	line ending -- it was done already in the encompassing 'if'.
	* src/text.c: Unwrap some lines, rewrap some others more logically,
	plus several other esthetic tweaks.
	* doc/syntax/xml.nanorc: Recognize many more kinds of XML files.
	This addresses Debian bug #790017 reported by Emmanuel Bourg.
	Also colour the strings in tags differently, and add some comments.

2015-06-27  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (do_undo, add_undo): Skip undoing a backspace *only* when
	it really tried to delete the final, magic newline.
	* src/nano.h, src/text.c: Rename three flags for clarity.
	* src/files.c (replace_buffer): This function is only ever called with
	a temporary file as parameter, so forget the case of an empty filename.
	Also, don't bother putting the pointer at the top of the buffer, as the
	first action after this function is to restore the cursor position.
	* src/files.c: Normalize whitespace and comments.
	* src/nano.h: Remove obsolete execute flag from the shortcut struct.
	* src/global.c (shortcut_init): Remove a duplicate binding of ^T, to
	prevent it being shown twice in the ^G help text.  It will be rebound
	dynamically when for the current syntax another function is available.

2015-06-23  Benno Schulenberg  <bensberg@justemail.net>
	* src/winio.c (edit_draw): Verify that there exists multidata for the
	found starting line before trying to use it.  When a file is inserted
	(^R), it will not have any precalculated multidata associated with it.
	This fixes Savannah bug #45377 reported by Cody A. Taylor.

2015-06-20  Benno Schulenberg  <bensberg@justemail.net>
	* src/search.c (do_research): If nothing was searched for yet during
	this run of nano, take the most recent item from the search history.
	This makes M-W work also right after startup, like <n> in vim/less.
	* src/utils.c (get_homedir): Keep homedir NULL when no home directory
	could be determined, so that nano will show a message about it.  This
	is a fix for Savannah bug #45343.
	* doc/syntax/nanorc.nanorc: Colour key-binding lines affirmatively
	only when the specified menu name is an existing one.
	* doc/syntax/changelog.nanorc: Stop the changed-files colour from
	spilling beyond a blank line.  Also highlight releases.
	* src/nano.c (main), src/rcfile.c: Remove the obsolete long option
	--undo.  And sort --help and the softwrap option more consistently.

2015-06-18  Benno Schulenberg  <bensberg@justemail.net>
	* src/rcfile.c: Allow a tiny nano's ~/.nanorc to enable search and
	position histories.  Also sort the options more strictly.
	* src/nano.h: Delete two unused things, and add two comments.

2015-06-17  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (do_undo, add_undo): When undoing a Backspace at the tail
	of the file and nonewlines is not set, then don't add another newline
	but just reposition the cursor.  Also, when doing a Delete at the tail
	of the file, don't add a superfluous undo structure.  This prevents
	the appearance of an extra newline when undoing the Backspace/Delete.
	Patch partially by Mark Majeres.  The problem was first reported in
	https://lists.gnu.org/archive/html/nano-devel/2015-06/msg00003.html.
	* src/text.c (do_undo): Adjust whitespace after the previous change.
	* src/text.c (add_undo): Elide an unneeded variable and correct two
	comments.  And try to put the more frequent condition first.
	* src/text.c (add_undo): Rename the parameter 'current_action' to
	'action', to match the other functions.
	* src/text.c (do_undo, add_undo, update_undo): Improve the visibility
	of the undo-related debugging messages.

2015-06-14  Benno Schulenberg  <bensberg@justemail.net>
	* src/winio.c (edit_draw): Add some debugging code to track which
	multidata codes (for multiline regexes) get assigned to which lines.
	* src/winio.c (edit_draw): Start and end regexes can be very similar;
	so if a found start has been qualified as an end earlier, believe it
	and skip to the next step.  This helps with Python's docstrings.
	* src/winio.c (edit_draw): When the whole line has been coloured,
	don't bother looking for any more starts.  This prevents some lines
	from being erroneously marked as CENDAFTER instead of CWHOLELINE.
	* src/*.c: Don't check for non-NULL before freeing; it's unneeded.

2015-06-11  Benno Schulenberg  <bensberg@justemail.net>
	* src/winio.c (get_key_buffer): Add some debugging code to make it
	easy to see what codes a keystroke produces.

2015-06-07  Benno Schulenberg  <bensberg@justemail.net>
	* doc/texinfo/nano.texi: Show the node with the command-line options
	in the main menu, to make it easy to find.
	* doc/texinfo/nano.texi: Improve some formatting, hyphenation, wording
	and dashes.  And remove some confusing, historical things.
	* doc/man/nano.1, doc/man/nanorc.5, doc/texinfo/nano.texi: Clarify the
	meaning of --backupdir: it doesn't just specify a directory for saving
	backup files, it mainly causes uniquely numbered backups to be made.
	* doc/man/nano.1: Add a section on the non-obvious functioning of the
	cutbuffer and the mark.

2015-06-04  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.h: Fix compilation with --enable-tiny.
	* nano.spec.in: Add the post-install and pre-uninstall rules for the
	Info document, plus some tweaks.  (Patch was tested by Kamil Dudka.)

2015-06-02  Benno Schulenberg  <bensberg@justemail.net>
	* doc/man/nanorc.5, doc/texinfo/nano.texi: Tweak some wordings, and
	add some missing formatting to the Info document, and fix an mdash.
	* doc/syntax/debian.nanorc: Colour also an optional option.
	This addresses Debian bug #664456 reported by Shawn Landden.
	Also shorten the name of the syntax to "sources.list".
	* doc/syntax/python.nanorc: Require again that the triple quote	that
	starts a docstring is followed by some character -- it is better to
	*not* colour some strings than far too often colour far too much.
	This addresses Debian bug #785508 reported by Alexandre Detiste.

2015-05-31  Mahyar Abbaspour  <mahyar.abaspour@gmail.com>
	* src/prompt.c (get_statusbar_page_start): Prevent a floating-point
	exception when the available length for an answer becomes zero.

2015-05-28  Benno Schulenberg  <bensberg@justemail.net>
	* src/help.c (do_help), src/prompt.c (do_yesno_prompt): Normalize
	the whitespace after the recent changes in logic.
	* src/prompt.c (do_yesno_prompt): Use 'width' instead of hardcoded
	16.  Also always first set the string and then position the cursor.
	* TODO: Mark window resizes and better file-type detection as done.
	* doc/syntax/debian.nanorc: Allow a CD name to contain any character.
	This addresses Debian bug #688892 reported by Dani Möller Montull.

2015-05-28  Mahyar Abbaspour  <mahyar.abaspour@gmail.com>
	* src/nano.c (handle_sigwinch, regenerate_screen), src/global.c,
	src/prompt.c (do_statusbar_input, get_prompt_string, do_yesno_prompt),
	src/browser.c (do_browser, browser_refresh), src/help.c (do_help),
	src/winio.c (get_key_buffer, unget_input, get_input, parse_kbinput),
	src/text.c (do_justify, do_linter), src/nano.h, src/proto.h:
	Handle a SIGWINCH (signalling a change in window size) not when it
	happens but only when checking for input.  Report the SIGWINCH via
	a special key value to the calling routine, to allow not only the
	main editor but also the help viewer and the file browser to adapt
	their display to the new size.  (Patch edited by Benno.)

2015-05-20  Devrim Gündüz  <devrim@gunduz.org>
	* doc/syntax/postgresql.nanorc: New file -- syntax highlighting for
	PostgreSQL, first posted as Savannah patch #8601.  Trimmed by Benno.

2015-05-08  Benno Schulenberg  <bensberg@justemail.net>
	* src/browser.c (browser_refresh): Take the distant possibility of
	terabyte files into account, and in the bargain get rid of the need
	to calculate the number of digits in UINT_MAX.
	* src/files.c (get_next_filename): Limit the number of backup files
	to one hundred thousand -- which should be far more than enough --
	before finding an unused filename takes an annoying amount of time.
	* src/utils.c (digits): Delete this now unneeded function.

2015-05-03  Benno Schulenberg  <bensberg@justemail.net>
	* src/browser.c (browser_refresh): Display an ellipsis only when the
	filename is longer than the available space, not when it still fits.
	* src/browser.c, src/nano.c: Adjust a few comments and line wrappings.
	* doc/syntax/groff.nanorc: Use character classes correctly.

2015-04-28  Benno Schulenberg  <bensberg@justemail.net>
	* src/color.c (color_update): Match the file regex of a syntax against
	the absolute, canonical path instead of against the path the user gave.
	This fixes Savannah bug #44288, reported by Mike Frysinger.
	* doc/syntax/po.nanorc: Improve the colouring of message tags.
	* src/winio.c (get_escape_seq_kbinput): Unwrap a bunch of comments.

2015-04-25  Benno Schulenberg  <bensberg@justemail.net>
	* src/search.c (do_replace_loop): Remove the unintended special
	case for replacing multiple occurrences of a literal ^ or $; see
	https://lists.gnu.org/archive/html/nano-devel/2015-04/msg00065.html.
	* src/search.c (findnextstr): Delete an always-FALSE parameter.
	* src/search.c (findnextstr): Rename the parameter 'whole_word'
	to 'whole_word_only', for clarity.

2015-04-21  Benno Schulenberg  <bensberg@justemail.net>
	* src/browser.c (findnextfile): Save the settings of the global
	case-sens, direction, and regexp flags, and restore them on exit.
	And do this not in do_filesearch() but in findnextfile(), so that
	it will also work for do_fileresearch().
	* src/text.c (do_int_spell_fix): Save and restore the global flags
	in the same short and quick way as above.
	* src/nano.c (main): Initialize the search and replace strings in
	a central place, to get rid of a bunch of ifs.
	* src/search.c (search_init_globals): Elide this tiny function.

2015-04-20  Benno Schulenberg  <bensberg@justemail.net>
	* src/winio.c (need_horizontal_update, need_vertical_update): Fuse
	two identical functions into one: need_screen_update().
	* src/prompt.c (need_statusbar_horizontal_update): Rename function
	to need_statusbar_update() as there is no vertical counterpart.
	* src/search.c (do_search, do_research): Delete redundant reprises
	of a regex search: finding an occurrence only at the very starting
	point of the search necessarily means it is the only occurrence.

2015-04-18  Benno Schulenberg  <bensberg@justemail.net>
	* src/global.c, src/nano.c, doc/man/nanorc.5, doc/texinfo/nano.texi:
	Make the descriptions of the multibuffer feature more accurate.
	* src/winio.c (display_string): Make sure an invalid starting byte
	of a multibyte sequence is properly terminated, so that it doesn't
	pick up lingering bytes of any previous content.  This prevents the
	displaying of ghosts -- characters that aren't really there -- when a
	file contains valid ánd invalid UTF-8 sequences.  For an example see:
	https://lists.gnu.org/archive/html/nano-devel/2015-04/msg00052.html.
	Also make two comments more accurate: an invalid multibyte sequence
	will never be categorized as a control character or anything else.

2015-04-18  Mark Oteiza  <mvoteiza@udel.edu>
	* doc/syntax/{python,ruby,sh,tex}.nanorc: Add a linter definition.
	* doc/syntax/elisp.nanorc: New file; syntax highlighting for Elisp.
	* doc/syntax/guile.nanorc: New file; syntax highlighting for Guile.

2015-04-17  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (do_alt_speller, do_linter, do_formatter): Distinguish
	a failure to launch the linter from receiving zero parsable lines;
	add a new function to glue together the invocation-error string.
	* src/global.c (shortcut_init): In the Help Viewer and File Browswer,
	bind the unbound Home and End keys to goto_top and goto_bottom, to
	mimic the behaviour of these keys in file viewers and web browsers.
	Also show ^Y and ^V in the WhereisFile menu instead of M-\ and M-/,
	for similarity with the WhereIs menu.
	* src/global.c (shortcut_init): Arrange the movement keys in the File
	Browser in the order of ascending stride, as in the Help Viewer.

GNU nano 2.4.1 - 2015.04.14

2015-04-13  Benno Schulenberg  <bensberg@justemail.net>
	* src/search.c (do_replace_loop): Fix compilation with --enable-tiny.
	* README: Mention also the Savannah page for reporting bugs.

2015-04-12  Benno Schulenberg  <bensberg@justemail.net>
	* src/browser.c (filesearch_init): Stop M-\ and M-/ in WhereisFile
	menu (reached via ^R ^T ^W) from doing also an unrequested search
	after having performed their function.  Fixes Savannah bug #44790.
	* src/global.c (shortcut_init): Rebind ^Y and ^V in the WhereisFile
	menu from the pointless page_up() and page_down() to the effective
	first_file() and last_file().  Also unbind some other useless keys.
	* src/browser.c (filesearch_init): Remove an unused variable, and
	adjust the introductory comment for the recently tweaked logic.
	* src/rcfile.c (parse_linter, parse_formatter): Use mallocstrcpy()
	in a correct manner; don't let it free an unrelated string.

2015-04-11  Benno Schulenberg  <bensberg@justemail.net>
	* src/search.c (do_replace_loop): Do not split off the marked region
	into a separate partition, but do the replacings in the current one,
	taking good care to stay within the boundaries of the region.  This
	fixes an undo bug where the first part of a line would disappear if
	the region started in the middle of a line.  Bug was reported here:
	https://lists.gnu.org/archive/html/nano-devel/2015-03/msg00077.html.
	Original idea and patch were by Mark Majeres.

2015-04-08  Benno Schulenberg  <bensberg@justemail.net>
	* src/browser.c (browser_select_dirname, findnextfile): Rename
	'currselected' to 'looking_at', for more contrast with 'selected',
	and rename browser_select_filename() to browser_select_dirname().
	* src/text.c: Correct and adjust some comments.

2015-04-07  Benno Schulenberg  <bensberg@justemail.net>
	* src/browser.c (do_fileresearch): Don't search for the empty string
	when nothing was sought yet (when historylog is set).
	* src/browser.c (filesearch_init): Remove an unfitting comment
	(there are no toggles here) and tweak some others.
	* src/search.c (do_search, do_research): Use the same variable as
	in the surrounding code, for consistency.
	* src/browser.c (findnextfile_wrap_reset): Elide this function,
	and rename 'search_last_file' to 'came_full_circle'.
	* src/browser.c (filesearch_init, do_fileresearch): Avoid setting
	'focusing' when searching only for filenames.
	* src/browser.c (findnextfile, do_filesearch, do_fileresearch):
	Greatly simplify the searching for the next matching filename.
	* src/{browser,files,help,prompt,text,winio}.c: Let the function
	bottombars() set the global variable 'currmenu' -- the displayed
	menu must necessarily be the active one.
	* src/browser.c (filesearch_abort): Elide this tiny function.
	* THANKS: Add the names of recent translators, and sort the list.
	* THANKS: A neater layout, plus two table headers.

2015-04-05  Benno Schulenberg  <bensberg@justemail.net>
	* doc/texinfo/nano.texi: Expand on nano's features, condense the
	synopsis, and "online" means something else to most people.

2015-04-03  Benno Schulenberg  <bensberg@justemail.net>
	* README: Update text to the fifth milestone, 2.4.x, plus tweaks.
	* src/rcfile.c: Remove two superfluous (because nested) #ifndefs.
	* src/rcfile.c (parse_rcfile): Ignore any magic when libmagic was
	disabled, and ignore a formatter when spell checking was disabled.

2015-03-28  Benno Schulenberg  <bensberg@justemail.net>
	* src/search.c (search_init_globals, search_replace_abort),
	src/winio.c (edit_redraw), src/proto.h, src/global.c: When finding
	an off-screen string, put it on the center line of the screen and
	not on the bottom or top line.  This restores the old behaviour
	that was unintentionally changed in r5149 six days ago.
	* src/winio.c (edit_refresh): When pasting lines on the bottom line,
	only scroll the required number of lines and not half a screen --
	that is, when smooth scrolling is enabled.
	* doc/syntax/changelog.nanorc: Also colour a series of changed files
	that spans more than one line.

2015-03-27  Mark Majeres  <mark@engine12.com>
	* src/text.c (do_alt_speller): Adjust the end point of the marked
	region for any change in length of the region's last line.

2015-03-27  Benno Schulenberg  <bensberg@justemail.net>
	* doc/syntax/patch.nanorc: Recognize also Debian package diffs.
	Fixes https://bugs.launchpad.net/ubuntu/+source/nano/+bug/1300565
	requested by Rolf Leggewie.
	* src/search.c (do_replace_loop): Adjust some whitespace and wrapping.
	* src/search.c (do_replace_loop): Place a call to edit_refresh better,
	and remove two unneeded ones.  This greatly speeds up nano when doing
	a Replace All with *lots* of occurrences.
	* src/{color,global,nano,text,utils}.c: Normalize some whitespace.
	* src/global.c (strtosc): The linter is only available when colour is.
	* src/global.c, src/text.c: Treat the formatter like a speller,	to fix
	compilation with --disable-speller.  Fixes Savannah bug #44607.

2015-03-25  Benno Schulenberg  <bensberg@justemail.net>
	* doc/syntax/debian.nanorc: Slightly widen and relax the header regex.
	* doc/syntax/python.nanorc: Hashes inside triple-quoted strings should
	not cause comment colouring.  (Inside single-qouted strings neither,
	but then quotes in comments will be coloured like strings.)  This
	solves https://bugs.launchpad.net/ubuntu/+source/nano/+bug/481363.
	* src/global.c (strtomenu): Remove mistaken menu name -- as the
	formatter allows no interaction it needs no associated menu.
	* src/text.c (do_formatter): Remove unneeded statement -- nothing
	has changed the value of 'currmenu'.
	* src/global.c (strtosc), doc/man/nanorc.5: Allow rebinding the
	linter when nano was configured with --disable-speller.

2015-03-23  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (do_alt_speller): Avoid the spell checker reporting
	an error when the marked region is zero bytes long.  The message
	is not needed -- it gets printed by the caller.  This generalizes
	the fix for Savannah bug #29393.
	* src/text.c (do_alt_speller): Do not unset the mark before the
	possible bailout because of a zero-sized region.
	* NEWS: Option --noread allows writing, not reading, to named pipes.

2015-03-22  Chris Allegretta  <chrisa@asty.org>
	* src/text.c (do_alt_speller): timestamp can just be a time_t.
	Fixes compilation on win32 and macOS.

GNU nano 2.4.0 - 2015.03.22

2015-03-22  Benno Schulenberg  <bensberg@justemail.net>
	* src/chars.c (move_mbleft): Start looking for a multibyte char
	not at the start of the string, but only as far back as such a
	char can possibly be.  Change suggested by Mark Majeres.
	* src/search.c (findnextstr): Step backward or forward not simply
	one byte but one character (possibly multibyte).  Fixes Savannah
	bug #42175, reported by myself, and the finding of ghosts seen in
	https://lists.gnu.org/archive/html/nano-devel/2015-03/msg00055.html.
	* src/winio.c (edit_redraw): Do not center the current line when
	smooth scrolling is used.  This fixes Savannah bug #42654.

2015-03-21  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (do_alt_speller): Remove some leftovers.
	* src/search.c: Place some comments better and unwrap some lines.

2015-03-21  Mark Majeres  <mark@engine12.com>
	* src/text.c (do_alt_speller): Restore the positions of the mark
	and the cursor in a better way: to the columns where they were.
	This fixes Savannah bug #44542, reported by Benno Schulenberg.

2015-03-20  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.c (finish_stdin_pager, cancel_stdin_pager, stdin_pager):
	Normalize the whitespace, remove an old comment, and place another
	one better.
	* src/text.c (do_undo): Make a message equal to another one.  It
	was mistakenly changed in r4950.  (This	is translation-neutral.)
	* src/global.c (shortcut_init): Keep related items together in the
	^G help screen.

2015-03-17  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (do_alt_speller): Do not set the modified flag when
	an external spell checker didn't make any changes.  This fixes
	Savannah bug #44320, reported by Cody A. Taylor.

2015-03-14  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (do_formatter): Fix a message plus a few comments.

2015-03-14  Mark Majeres  <mark@engine12.com>
	* src/nano.c (renumber): Get out if there is nothing to renumber,
	to prevent do_undo() from falling over trying to renumber emptiness.
	This fixes Savannah bug #44488, reported by Dennis Decker Jensen.

2015-03-08  Benno Schulenberg  <bensberg@justemail.net>
	* src/proto.h, src/nano.c: Fix compilation with --enable-tiny plus
	--enable-nanorc.
	* src/rcfile.c (parse_binding): Fix the rebinding of toggles.
	* doc/man/{nano.1,rnano.1,nanorc.5}, doc/texinfo/nano.texi: Update
	years and version numbers in the docs in anticipation of a release.
	* src/nano.c (version): Drop compile time from version information
	to enable a reproducible build.  Proposed by Jérémy Bobbio and Jordi
	Mallach (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=774388).

2015-03-07  Benno Schulenberg  <bensberg@justemail.net>
	* doc/man/nanorc.5, doc/texinfo/nano.texi: Add a note about the
	inherent imperfection of using regular expressions for syntax
	highlighting, as suggested by Mike Frysinger in bug #30962.
	* doc/man/nanorc.5: Improve the indentation of some lists.
	* doc/man/nanorc.5, doc/texinfo/nano.texi: Remove the mistaken
	square brackets around the arguments of "header" and "magic" --
	those arguments are not optional.  Also add "formatter" to the
	texinfo document, and slightly improve its punctuation.

GNU nano 2.3.99pre3 - 2015.02.27

2015-02-25  Chris Allegretta  <chrisa@asty.org>
	* src/rcfile.c (parse_binding): Add an exception for do_toggle() as
	rebinding toggles broke with r5022.  (Fixed in r5134.)

2015-02-21  Benno Schulenberg  <bensberg@justemail.net>
	* README: Fix the explanation of how to subscribe to a mailing list.
	* doc/syntax/{java,lua,python,ruby}.nanorc: Wrap some overlong lines.

2015-02-18  Mike Frysinger  <vapier@gentoo.org>
	* doc/syntax/sh.nanorc: Recognize also dash, openrc and runscript.

2015-02-16  Mike Frysinger  <vapier@gentoo.org>
	* .gitignore: Ignore the autotools 'compile' file.

2015-02-15  Benno Schulenberg  <bensberg@justemail.net>
	* src/file.c (do_lockfile): Also show the name of the affected file
	when finding a lock file, for when many files are opened at once.
	* src/file.c (do_lockfile): The user does the editing, not the editor.

2015-02-09  Chris Allegretta  <chrisa@asty.org>
	* nano.spec.in: Add dependency on texinfo, docdir files for
	RPM file creation.

GNU nano 2.3.99pre2 - 2015.02.06

2015-02-03  Alex Henrie  <alexhenrie24@gmail.com>
	* src/cut.c (do_cut_text): Make sure to set modified even when
	using --enable-tiny.

2015-02-01  Kamil Dudka  <kdudka@redhat.com>
	* src/files.c (write_lockfile): Avoid writing uninitialized bytes to
	the lock file -- a simple null_at() would not initialize the buffer.
	* src/files.c (do_lockfile): Make sure that 'lockprog' and 'lockuser'
	are terminated -- strncpy() does not guarantee that on its own.
	* src/files.c (do_lockfile): Avoid printing a wrong PID on the status
	bar due to treating serialized PID bytes as signed integers.  This
	addresses https://bugzilla.redhat.com/1186384 reported by Don Swaner.
	* src/files.c (write_lockfile): Do not trim the nano version number
	-- snprintf() counts the trailing zero into the size limit.

2015-02-01  Benno Schulenberg  <bensberg@justemail.net>
	* src/winio.c (do_credits): Add a general entry for all translators.
	* src/nano.c (version), src/winio.c (do_credits): Update the copyright
	years to include 2015.

2015-01-13  Chris Allegretta  <chrisa@asty.org>
	* src/files.c (open_buffer): Check here for locking and properly
	handle choosing to not open a file when locked instead of in
	open_file().  Fixes Savannah bug #42373 reported by Benno Schulenberg.

GNU nano 2.3.99pre1 - 2015.01.06

2015-01-03  Chris Allegretta  <chrisa@asty.org>
	* New formatter code to support syntaxes like Go that have tools to
	automatically lint and reformat the text (gofmt), which is lovely.
	Added rcfile option formatter, a function do_formatter() in text.c
	and some other calls.

2014-12-28  Benno Schulenberg  <bensberg@justemail.net>
	* src/files.c (do_lockfile): Gettextize the "File being edited"
	prompt, and improve its wording.
	* src/winio.c (do_credits): Remove the names of past translators
	from the Easter-egg scroll.
	* THANKS: Add a missing	historical translator name.
	* src/winio.c (do_credits): Add Mark to the scroll, for all his
	undo work, colouring nano's interface, and other patches.

2014-11-30  Benno Schulenberg  <bensberg@justemail.net>
	* doc/syntax/spec.nanorc: Colorize %pretrans and %posttrans fully.
	Original patch from Savannah patch #8573 by Daniel Vrátil.

2014-09-21  Benno Schulenberg  <bensberg@justemail.net>
	* doc/syntax/{perl,python,ruby,sh}.nanorc: Recognize also header
	lines of the form "#!/usr/bin/env thing" besides "#!/bin/thing".
	This fixes Savannah bug #43270 reported by Kitty.

2014-08-29  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (do_justify): Replace the old get_shortcut() wrapper
	with the new func_from_key().

2014-08-10  Benno Schulenberg  <bensberg@justemail.net>
	* doc/texinfo/nano.texi: Improve some wordings and formatting.

2014-08-07  Benno Schulenberg  <bensberg@justemail.net>
	* doc/syntax/nanorc.nanorc: Remove a mistaken OR which causes a
	'Bad regex, empty (sub)expression' error on some systems.  This
	fixes Savannah bug #42929 reported by Misty De Meo.

2014-08-03  Benno Schulenberg  <bensberg@justemail.net>
	* doc/man/nano.1, doc/man/rnano.1: Tweak the formatting a bit so that
	po4a will create a nicer POT file.
	* doc/man/nanorc.5: Improve some of the wordings and formatting.

2014-08-02  Benno Schulenberg  <bensberg@justemail.net>
	* doc/texinfo/nano.texi: Standardize the formatting of command-line
	options -- each one separately.  Also add some more markup.

2014-08-01  Benno Schulenberg  <bensberg@justemail.net>
	* doc/man/nano.1, doc/man/rnano.1: Separate short and long option
	by a comma instead of putting the long one between parentheses.
	And showing the required quotes around the argument of -Q.

2014-07-31  Benno Schulenberg  <bensberg@justemail.net>
	* src/files.c (do_insertfile): Adjust some indentation.
	* src/prompt.c (do_statusbar_input), src/browser.c (do_browser):
	Reorder a few things, and adjust some whitespace.

2014-07-27  Benno Schulenberg  <bensberg@justemail.net>
	* src/global.c (add_to_sclist): Remove the now unused and unneeded
	addition ability from this builder function of the shortcut list.
	* src/global.c (strtokeytype): Move this to a better place.
	* src/global.c (first_sc_for): Move this too to a better place.
	* src/prompt.c (do_yesno_prompt): Use the new and more direct
	func_from_key() wrapper instead of get_shortcut().
	* src/text.c (do_linter): Likewise.
	* src/files.c (do_insertfile, do_writeout): Likewise.

2014-07-24  Jordi Mallach  <jordi@gnu.org>
	* doc/texinfo/nano.texi, doc/man/nanorc.5: Typo fix.

2014-07-22  Benno Schulenberg  <bensberg@justemail.net>
	* doc/syntax/nanorc.nanorc: Remove 'undo' from the valid options.

2014-07-21  Jordi Mallach  <jordi@gnu.org>
	* doc/nanorc.sample.in: Remove ‘undo’ section which is now obsolete.

GNU nano 2.3.6 - 2014.07.17

2014-07-16  Jordi Mallach  <jordi@gnu.org>
	* doc/man/rnano.1: Additional printing formatting improvement from
	Bjarni Ingi Gislason.

2014-07-16  Jordi Mallach  <jordi@gnu.org>
	* doc/man/fr/nano.1, doc/man/fr/rnano.1: Apply similar escaping fixes
	to French manpages.
	* doc/man/fr/nano.1, doc/man/fr/rnano.1, doc/man/fr/nanorc.5: Recode
	as UTF-8.

2014-07-16  Jordi Mallach  <jordi@gnu.org>
	* doc/syntax/debian.nanorc: Add https, tor and spacewalk to supported
	APT methods.
	* doc/syntax/debian.nanorc: Apply the syntax to apt/sources.list.d/
	entries as well, as reported by Rodolphe Pelloux-Prayer.

2014-07-16  Jordi Mallach  <jordi@gnu.org>
	* doc/man/nano.1, doc/man/rnano.1: Add some escaping and formatting
	fixes as suggested Bjarni Ingi Gislason <bjarniig@rhi.hi.is> in
	Debian bugs #662842 and #726956.

2014-07-16  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c: Normalize the tabbing.

2014-07-16  Mark Majeres  <mark@engine12.com>
	* src/text.c (do_undo): Make sure renumbering starts far enough back
	after undoing a cut or paste.  This fixes a segmentation fault when
	undoing a repeated cutting and pasting of the first line of a file.
	* src/nano.c (move_to_filestruct, copy_from_filestruct): Fix two leaks.

2014-07-13  David Lawrence Ramsey  <pooka109@gmail.com>
	* ChangeLog: Typo fix.

2014-07-12  Benno Schulenberg  <bensberg@justemail.net>
	* configure.ac: The warning about datarootdir being ignored is
	not merely a warning, it also activates a workaround.

2014-07-11  Mark Majeres  <mark@engine12.com>
	* src/text.c (do_undo, do_redo): Do not speak of "line wrap"
	but instead of "text add" when undoing/redoing text additions
	that caused automatic line breaks.

2014-07-11  Benno Schulenberg  <bensberg@justemail.net>
	* src/files.c (write_lockfile): Refix typo in error message.

GNU nano 2.3.5 - 2014.07.11

2014-07-11  Chris Allegretta  <chrisa@asty.org>
	* src/files.c (do_lockfile, open_file): If locking fails,
	allow the lock failure message to be preserved AND
	preserve the filename passed on the cmdline.  Fixes
	Savannah bug #42668.

2014-07-02  Chris Allegretta  <chrisa@asty.org>
	* src/files.c (do_lockfile): Check whether the directory
	of the file we're trying to lock exists, and make the
	resulting error message more intuitive.  Fixes
	Savannah bug #42639 reported by Benno Schulenberg.

2014-07-02  Mark Majeres  <mark@engine12.com>
	* src/text.c (undo_cut, redo_cut, update_undo): Handle the
	cases of cutting-from-cursor-to-end-of-line correctly.
	* src/nano.c (do_input): Don't preserve the cutbuffer when
	CUT_TO_END is toggled -- it would intermix two cut types.
	* src/text.c (redo_cut, do_undo, do_redo): Don't forget to
	free the cutbuffer after use.

2014-07-02  Benno Schulenberg  <bensberg@justemail.net>
	* src/proto.h: Add a typedef for a pointer to a function.
	* src/global.c (func_from_key): New wrapper.
	* src/prompt.c (get_prompt_string, do_prompt): Use the new
	wrapper to make the code a bit cleaner.
	* src/help.c (do_help, parse_help_input): Use the wrapper.
	* src/browser.c (do_browser, parse_browser_input): Likewise.
	* src/search.c (search_init, do_gotolinecolumn): Likewise.
	* src/search.c (findnextstr): Replace a call of old wrapper
	'getfuncfromkey()' with	a call of new 'func_from_key()'.
	* src/winio.c (getfuncfromkey): Delete now unneeded wrapper.
	* src/nano.c (usage, main), doc/texinfo/nano.texi: Properly
	exclude the --quiet option when --disable-nanorc was given.

2014-07-01  Benno Schulenberg  <bensberg@justemail.net>
	* src/browser.c (do_browser), src/help.c (do_help): Make sure
	to always set 'currmenu', so that we can rely on it.
	* src/*.c (get_shortcut): Now that 'currmenu' is really global,
	stop passing it around.
	* src/help.c (help_init), src/winio.c (bottombars): There are
	no tagless functions, so there is no need to check.
	* src/prompt.c (do_prompt, get_prompt_string): Don't pass the
	menu, just set it earlier.
	* src/prompt.c (get_prompt_string): Group the arguments better.
	* src/global.c (shortcut_init), src/browser.c (do_filesearch):
	Show that it is possible to have backwards, regular-expressive
	and case-sensitive searching in the file browser.
	* src/browser.c (filesearch_init, do_filesearch): Now delete
	these abilities again and all provisions for them.
	* src/global.c (shortcut_init): Add two defines to make the
	functions list clearer.

2014-06-30  Mark Majeres  <mark@engine12.com>
	* src/cut.c, src/global.c, src/nano.c: Rename 'cut_till_end' to
	'cut_till_eof', and 'do_cut_till_end' to 'do_cut_till_eof', to
	reduce confusion with CUT_TO_END, which is about end-of-line.

2014-06-30  Benno Schulenberg  <bensberg@justemail.net>
	* src/color.c (color_update): When there are no syntaxes, for example
	with --ignorercfiles, do not try to find one, because that would lead
	to the magic database being searched, which slows down startup a lot.
	* src/color.c (color_update): Move some variables to a better place.
	* src/*: Make 'meta_key' and 'func_key' into global variables, instead
	of having them declared everywhere and passing them around endlessly.
	* src/global.c (sc_seq_or): Now fix a bug introduced somewhere after
	2.3.2 where binding a movement function to a Meta key would make the
	corresponding Arrow key stop working (producing a character instead).

2014-06-29  Benno Schulenberg  <bensberg@justemail.net>
	* src/rcfile.c: Fix compilation with --enable-tiny --enable-nanorc.
	* src/winio.c (parse_kbinput, get_escape_seq_kbinput): Make Ctrl-Left
	and Ctrl-Right produce special codes, and map these codes to Prevword
	and Nextword instead of reducing them to a plain Left and Right.  The
	codes 539 and 554 were so chosen because some terminals produce these.

2014-06-29  Mark Majeres  <mark@engine12.com>
	* src/text.c (do_undo): Update the pointer to the bottom of the file
	when undoing line deletions at file's end.

2014-06-28  Benno Schulenberg  <bensberg@justemail.net>
	* src/prompt.c (do_statusbar_input): Remove the useless parameters
	'have_shortcut and 'allow_funcs'; the latter is only ever TRUE.
	* src/global.c (shortcut_init), src/prompt.c (do_statusbar_input):
	Eradicate the execute flag -- it is only FALSE for functions that are
	empty placeholders (so executing them will not do anything anyway) or
	for functions ('total_refresh', 'do_suspend_void') that do not exist
	in menus with a prompt.  The only two exceptions are 'do_cancel' and
	'do_gotolinecolumn_void'.  The first is handled specially, so do that
	too for the second and then get to drop 140 parameters.
	* src/global.c (strtosc): Move recognition of the toggles to the end,
	use a single assignment of do_toggle_void, trim the unneeded braces.

2014-06-27  Benno Schulenberg  <bensberg@justemail.net>
	* src/global.c (shortcut_init): Add default keybindings for Cut,
	PrevWord and NextWord in the prompt input lines; the code for those
	special operations already exists, just the shortcuts were missing.
	* src/rcfile.c (parse_binding): When binding keys, only allow those
	menus where the bound function is actually present.  This reduces
	the meaning of 'all' to "all menus where the function exists".
	* src/rcfile.c (is_universal): New function, returning TRUE for the
	functions that are present in most menus but only listed in MMAIN.
	* doc/man/nanorc.5, doc/texinfo/nano.texi: Update the docs for this.
	* prompt.c (find_statusbar_bracket_match, do_statusbar_find_bracket):
	Remove these functions and thus the ability to search for a matching
	bracket in a prompt input line.  The find_bracket function never had
	a default keybinding outside MMAIN, so is unlikely to have been used.
	* src/prompt.c (do_statusbar_input): Normalize the indentation.
	* src/winio.c: Normalize some whitespace.
	* Makefile.am, nano.spec.in: Stop distributing the BUGS file.
	* BUGS: Remove obsolete file, as all the bugs in it have been fixed
	long ago.  Nowadays bugs are tracked on Savannah.
	* configure.ac: Silence a useless warning about ignoring datarootdir.

2014-06-25  Benno Schulenberg  <bensberg@justemail.net>
	* src/browser.c (do_browser): Allow 'firstfile' and 'lastfile' to be
	rebound to Ctrl keys -- checking meta_key is wrong, the function has
	already been determined, that is all that matters.
	* src/help.c (do_help): Same thing for 'firstline'/'lastline'.

2014-06-23  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.h, src/move.c (do_up, do_down), src/winio.c (edit_scroll):
	Rename UP_DIR and DOWN_DIR to UPWARD and DOWNWARD, for clarity.
	* src/proto.h, src/global.c, src/search.c: Rename 'no_replace_void()'
	to 'flip_replace_void()', to show what it actually does.
	* doc/man/nanorc.5, doc/texinfo/nano.texi: Update the docs for that.
	* src/global.c (strtosc): Add the bindable function 'gotodir'.
	* doc/man/nanorc.5, doc/texinfo/nano.texi: Document the bindable
	functions 'tofiles','gotodir' and 'flipnewbuffer', and correct
	the description of 'gototext' (not being about the file browser).
	* doc/syntax/nanorc.nanorc: Show Ins and Del as valid rebindable keys.
	* src/help.c (do_help): Normalize the indentation.
	* src/files.c (do_insertfile): Give audible feedback when flipping
	the new buffer to off is not allowed in view mode.

2014-06-22  Benno Schulenberg  <bensberg@justemail.net>
	* src/browser.c (parse_browser_input), src/help.c (parse_help_input):
	Remove two pointless calls of get_shortcut(), and adjust the comments.
	* src/nano.c (do_toggle): When toggling softwrap, only the edit window
	needs to be refreshed, not the entire screen.
	* src/browser.c (do_browser): Remove superfluous abortion variable,
	and place two comments better.
	* src/text.c (do_redo): Rename 'undidmsg' to 'redidmsg', to be apt.

2014-06-22  Mark Majeres  <mark@engine12.com>
	* src/text.c (do_redo): When redoing a line join at the tail
	of the file, make sure openfile->filebot is updated.
	* src/text.c (undo_cut, redo_cut, do_undo, add_undo, update_undo):
	Fix three leaks of the cutbuffer, shorten and regroup some stuff,
	and remove an unneeded iteration of cutbottom.

2014-06-21  Mark Majeres  <mark@engine12.com>
	* src/text.c (undo_cut, add_undo): When undoing a cut-till-eof,
	put the cursor back where the cut started, and not at the end.
	* src/text.c (do_undo): When undoing a line break at the tail
	of the file, make sure openfile->filebot is updated.

2014-06-21  David Lawrence Ramsey  <pooka109@gmail.com>
	* src/move.c, src/nano.c: Miscellaneous whitespace fixes, one
	type fix, and one more #ifdef NANO_TINY.

2014-06-20  Benno Schulenberg  <bensberg@justemail.net>
	* src/proto.h, src/global.c: Remove two obsolete variables and an
	unneeded extern, and regroup some stuff.
	* src/files.c (check_dotnano): Wrap long lines and actually report
	the name that is not a directory.
	* src/*: Miscellaneous whitespace adjustments and comment tweaks.
	* src/files.c: Fix compilation with --enable-tiny --enable-browser.
	* doc/man/nano.1, doc/texinfo/nano.texi: History logging no longer
	depends upon nanorc support, plus many other tweaks.
	* src/global.c (strtosc): Fix compilation with --enable-tiny
	--enable-histories --enable-nanorc.
	* src/text.c: Fix compilation with --enable-tiny --enable-wrapping.
	* src/files.c (do_insertfile): Fix compilation with --enable-tiny
	--enable-histories --enable-multibuffer.
	* src/nano.c: Fix compilation with --enable-tiny --enable-mouse.
	* doc/man/nanorc.5, doc/texinfo/nano.texi: Explain better what "all"
	means when rebinding keys.  This is a fix for Savannah bug #42552.
	* src/nano.c (main): Make +1 and +,1 start on line one column one,
	overriding a historical position.  This fixes Savannah bug #42538.

2014-06-19  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.c (window_init): Rename 'no_more_space()' to 'more_space()'
	for consistency, and tweak the related comments.
	* src/files.c: Update some comments to match the current status.
	* src/nano (finish, main): Allow -H/--historylog and -P/--poslog to
	function also when -I/--ignorercfiles is given.
	* configure.ac: Add a --disable-histories flag, to disable the code
	for the histories of search/replace strings and cursor positions.
	* doc/texinfo/nano.texi: Document the new configure flag.
	* src/*: Transform many DISABLE_NANORC to the new DISABLE_HISTORIES.
	This completes the fix for Savannah bug #42539.

2014-06-18  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c: Rename 'to_end' to 'to_eof', to lessen confusion
	with CUT_TO_END (which is about cutting to end-of-line).
	* src/text.c: Upon better thought, elide the unneeded 'to_eof'.
	* src/text.c: And elide a totally unused 'strdata2'.
	* src/text.c: Rename the undo type UNSPLIT to JOIN, for clarity.
	* src/global.c, src/rcfile.c: Rename function_type to key_type.
	* src/text.c (break_line): Remove a condition and a break that
	cancel each other.

2014-06-18  Mark Majeres  <mark@engine12.com>
	* src/text.c (add_undo): Don't start a new undo for CUT when the
	cutbuffer is being preserved, because then the cuts are contiguous
	and will form a single undo item.  And make sure the cutbuffer will
	be cleared when a new undo item for CUT is created.
	* src/cut.c (keeping_cutbuffer): New function, to access the status
	of 'keep_cutbuffer' from the undo/redo code in src/text.c.
	* src/cut.c (do_copy_text): Blow away the contents of the cutbuffer
	if the mark is set or the cursor has moved between two copy commands.

2014-06-17  Mark Majeres  <mark@engine12.com>
	* src/text.c (do_undo, do_redo): After an undo or redo, update the
	'placewewant' (the desired horizontal position of the cursor).

2014-06-17  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (do_undo, do_redo): Remove obsolete boolean variable.
	* doc/man/nano.1, doc/man/nanorc.5, doc/texinfo/nano.texi: Replace
	SYSCONFDIR with an absolute path or a circumlocution, as suggested
	by Mike Frysinger, plus some other tweaks.

2014-06-16  David Lawrence Ramsey  <pooka109@gmail.com>
	* src/nano.c (do_exit): Display the message "No file name" on the
	statusbar for two seconds when --tempfile was given and the current
	buffer has no name.  This fixes Savannah bug #41750.

2014-06-16  Benno Schulenberg  <bensberg@justemail.net>
	* configure.ac: For the sake of statically linked systems, make sure
	the compiler also links against libz, which is used by libmagic.
	This fixes Savannah bug #38378, reported by Alan Hourihane.
	* src/nano.c (do_mouse, do_input): Don't bother returning zero when
	the cursor moved, just reset the cutbuffer directly.  This avoids an
	"Unknown Command" message on every cursor-positioning mouse click.
	* src/nano.c (do_mouse): Put a common statement outside of then/else.
	* src/Makefile.am: Remove -I m4; it is needed only at the top level.
	* Makefile.am: Trim the contents of EXTRA_DIST to what is required.
	* doc/man/nano.1, doc/man/nanorc.5, doc/texinfo/nano.texi: Update
	the docs for the changed location of nano's search history.
	* doc/man/nano.1, doc/man/nanorc.5, doc/texinfo/nano.texi: Change
	some wordings, triggered by Savannah bug #42539.

2014-06-14  Mark Majeres  <mark@engine12.com>
	* src/nano.h, src/text.c (undo_cut, update_undo): When undoing a
	backwards cut, put the cursor back in front of it, where it was.

2014-06-13  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.c (do_input): Repositioning the cursor with the mouse
	(result == 0) should break a series of ^Ks.
	* src/nano.c (do_mouse): Clicking on the titlebar or the statusbar
	should not break a series of ^Ks, thus result must not be zero.
	* src/nano.c (do_input): A toggle should not break a series of ^Ks.
	* src/winio.c (get_shortcut): Do not treat holding both Control and
	Meta the same as holding only Control.
	* src/global.c, src/rcfile.c, src/nano.h, src/nano.c, src/text.c:
	Remove the --undo option, having the undo functions always enabled.
	If wished, the user can unbind them.  This fixes Savannah bug #42456.
	* doc/man/{nano.1,nanorc.5}, doc/texinfo/nano.texi: Update the docs.
	* nano.spec.in: Remove useless info dir file from the build directory,
	don't clean this directory first, it's unnecessary, add a suggestion
	for a pico symlink, and update the license and the source URL.

2014-06-11  Benno Schulenberg  <bensberg@justemail.net>
	* src/winio.c (get_mouseinput): Produce the correct return value for
	when a mouse event reinserted something into the keyboard buffer.
	* src/nano.c (do_input): Do not continue when there is a spurious
	mouse event (a touch of the touchpad, for example) but get out.
	Continuing would result in the cutbuffer being cleared upon the
	next cut.  These two changes together fix Savannah bug #42326.
	* src/nano.c (do_input): Always accept mouse events, also when
	just looking for Unjustify.  This fixes Savannah bug #42322.
	* src/nano.c (do_input): Remove a superfluous switch statement.
	* src/winio.c (get_mouseinput): Set the type of a reinserted key,
	also when it is a function key.  This fixes Savannah bug #42092.

2014-06-10  Benno Schulenberg  <bensberg@justemail.net>
	* src/browser.c, src/files.c, src/nano.c src/prompt.c, src/winio.c:
	A few minimalistic whitespace adjustments.
	* src/rcfile.c (check_bad_binding): Avoid a compiler warning.

2014-06-10  David Lawrence Ramsey  <pooka109@gmail.com>
	* src/winio.c: One more type fix and two tiny message tweaks.

2014-06-09  David Lawrence Ramsey  <pooka109@gmail.com>
	* src/*.c: Cosmetic tweaks of comments and whitespace.
	* src/help.c, src/rcfile.c, src/winio.c: Elide a function call by
	not comparing with an empty string but checking for the final \0.
	* src/files.c, src/nano.c, src/text.c, src/winio.c: Type fixes in
	debugging stuff -- line numbers are long, x positions unsigned long.
	* src/files.c, src/move.c, src/nano.c, src/text.c, src/winio.c:
	Make tiny nano a bit tinier by preening out some soft-wrap stuff.
	* src/global.c, src/nano.c, src/winio.c: A few more cosmetic tweaks
	(whitespace, order, braces, parentheses, and a typo) and type fixes.

2014-06-09  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.c (do_input): Remove two superfluous false conditions.
	* src/nano.h, src/text.c (add_undo): Avoid a compiler warning with
	--disable-wrapping.

2014-06-09  Mark Majeres  <mark@engine12.com>
	* src/text.c (do_undo, do_redo, add_undo, update_undo, do-wrap):
	Rewrite the line-wrapping code to make use of the existing line-break
	code.  And undo line wraps together with their causal text additions,
	and not as separate actions because the user did not make them.

2014-06-08  Mark Majeres  <mark@engine12.com>
	* src/text.c (do_delete, do_deletion, do_undo, do_redo, update_undo):
	Differentiate between undoing a Delete and undoing a Backspace -- the
	cursor should be in a slightly but significantly different position.

2014-06-04  Benno Schulenberg  <bensberg@justemail.net>
	* src/global.c (shortcut_init), src/files.c (do_insertfile): Rename
	'ext_cmd_void' to 'flip_execute_void' to better match what it does.
	* src/global.c (strtosc), doc/man/nanorc.5, doc/texinfo/nano.texi:
	Add function name 'flipexecute' to enable rebinding ^X in the menus
	Read File and Execute Command.

2014-06-04  David Lawrence Ramsey  <pooka109@gmail.com>
	* src/*.c: Adjustments of whitespace and comments.
	* doc/nanorc.sample.in: Interpunction tweaks.
	* src/global.c (add_to_funcs): Add cast to subnfunc* for nmalloc().
	* src/files.c (do_lockfile): Properly make the variable 'lockfilesize'
	a size_t instead of a ssize_t, since it holds the result of strlen().
	And use charalloc() instead of (char *)nmalloc().
	* src/text.c (do_undo): Use charealloc() and not (char *)nrealloc().
	* src/text.c (add_undo): Make use of null_at() to both null-terminate
	the multibyte character and align it to use only the amount of memory
	necessary.

GNU nano 2.3.4 - 2014.06.02

2014-06-02  Chris Allegretta  <chrisa@asty.org>
	* doc/syntax/default.nanorc: Can't do trailing spaces in the
	  default syntax or it will hilight the spaces as you type them
	  into a new file, which for non-programming is infuriating.

2014-05-29  Mark Majeres  <mark@engine12.com>
	* src/text.c (do_delete): For the undo structure, differentiate
	between deleting a newline and any other character.

2014-05-29  Chris Allegretta  <chrisa@asty.org>
	* src/chars.c (addstrings): This function needs to be available even
	  on non-utf-8 systems.
	* nano-regress: Added --disable-utf8 to regression check.

GNU nano 2.3.3 - 2014.05.29

2014-05-28  Chris Allegretta  <chrisa@asty.org>
	* doc/syntax/mutt.nanorc: Include Benno's awesome signature
	  matcher, modified slightly to also work for quoted sigs.
	* doc/syntax/default.nanorc: Be far more gentle with something
	  which affects every file which doesn't match another syntax, and
	  the user may not be able to override if their distro turns on
	  highlighting by default.

2014-05-28  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.c (do_input): Remove the three unused parameters 's_or_t',
	'ran_func', and 'finished'.  They are only ever set and never used.
	* src/text.c (do_justify): Adjust a call of do_input().
	* src/browser (do_browser): Actually translate the go-to-dir prompt.
	* src/browser, src/search.c: There is no need to repeat translator
	comments for the same string -- once is enough to get them included.
	Add instead some translator comments for the prompts.
	* src/global.c (shortcut_init): Make ^X in the Read-File menu toggle
	between executing a command and inserting a file.  The mechanism in
	do_insertfile() in files.c is already present -- in the past just
	the wrong function was used in the relevant function-list item:
	'do_insertfile_void' instead of the unintuitive 'ext_cmd_void'.
	* src/browser (filesearch_init): Remove an unneeded format specifier.
	* src/nano.c (usage): Add a translator comment for the --help output.
	* src/global.c (shortcut_init): Elide four unneeded tags.
	* src/global.c (shortcut_init): Make tiny nano just a bit tinier.
	* src/global.c (shortcut_init): Standardize the add_to_funcs() calls,
	breaking always between the menus and the tag.

2014-05-27  Chris Allegretta  <chrisa@asty.org>
	* src/winio.c (edit_refresh): wredrawln() is not supported under
	  slang.

2014-05-27  Benno Schulenberg  <bensberg@justemail.net>
	* src/global.c (shortcut_init): Improve the arrangement of help items
	under certain compilation conditions.
	* src/global.c (strtosc): Make tiny nano a bit tinier.
	* src/global.c (strtosc): Allow rebinding 'suspend' in tiny nano.
	* src/winio.c (set_modified): Adjust translator comment to make it
	show up in the POT file, and make it take the "[  ]" into account.

2014-05-26  Benno Schulenberg  <bensberg@justemail.net>
	* src/cut.c (cut_line): Fix compilation with --enable-tiny.
	* src/text.c (do_linter): Avoid a warning with --enable-tiny.
	* src/global.c (shortcut_init): Unwrap some lines, and reorder two.

2014-05-25  Benno Schulenberg  <bensberg@justemail.net>
	* src/global.c: Cut down on the size of tiny nano, by not compiling
	the function strtosc() when --disable-nanorc is given or implied.

2014-05-25  Mark Majeres  <mark@engine12.com>
	* src/chars.c (addstrings): New function, concatenates two allocated
	strings, tacking the second onto the first and freeing the second.
	* src/cut.c (do_uncut_text): Update the undo structure for a paste.
	* src/text.c (undo_cut, redo_cut, add_undo, update_undo): Place the
	cursor after an undo there where it was before the do, and handle
	multibyte characters correctly.

2014-05-23  Benno Schulenberg  <bensberg@justemail.net>
	* src/winio.c (edit_draw): Finally, the proper fix for bug #31743;
	telling ncurses to really redraw the line, without optimization, so
	it will not mistakenly assume that a wide character at the start of
	a line takes up just one column.  This deletes the workaround that
	had the side effect of creating pastes full of trailing whitespace.

2014-05-19  Mark Majeres  <mark@engine12.com>
	* src/winio.c (edit_draw): Paint the current line *after* tickling the
	terminal, so that the character in the final column will be displayed
	properly.  Bug was introduced five days ago.

2014-05-18  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano (precalc_multicolorinfo): Do not match the ^ anchor when
	looking further on in a line.  This prevents an end="^$" from being
	sometimes mistakenly matched.  Fix inspired by Savannah bug #27708.
	* doc/syntax/default.nanorc: New file, example for a default syntax.

2014-05-17  Benno Schulenberg  <bensberg@justemail.net>
	* doc/syntax/json.nanorc: New file, originally from Aapo Rantalainen,
	but edited, extended, and improved.  See Savannah patch #7410.
	* src/winio.c (edit_draw): Do not skip the colour-off commands at the
	end of the loop.  Based on Savannah patch #7550 by Ryan Lothian.
	This fixes bug #26111 reported by Dave Geering <dreamlax@Savannah>.

2014-05-16  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c, src/winio.c: Remove some more double spaces.
	* doc/syntax/patch.nanorc: Show trailing whitespace on added lines.
	* doc/syntax/debian.nanorc: Make the component colouring simpler,
	and the URI colouring completer, and improve the comments.
	* doc/syntax/*.nanorc: Harmonize (partially) the syntax files.

2014-05-16  David Lawrence Ramsey  <pooka109@gmail.com>
	* src/color.c, src/cut.c, src/text.c: Tweak some whitespace.
	* src/global.c, src/move.c: Use TRUE and FALSE instead of 1 and 0.
	* src/winio.c (edit_draw): Mention the name of the tickling character.
	* src/search.c (goto_line_posx): Remove unneeded call of edit_refresh.
	* src/text.c (do_undo, do_redo): Use size_t for line lengths.

2014-05-15  Mark Majeres  <mark@engine12.com>
	* src/*, but mainly src/text.c (undo_cut, redo_cut, do_undo, do_redo):
	Go to the correct positions for undoing/redoing the cuts and pastes.
	This fixes several undo problems and Savannah bug #25585.

2014-05-15  Benno Schulenberg  <bensberg@justemail.net>
	* doc/syntax/c.nanorc: Improve the magic regex, plus tweaks.
	* src/color.c (color_update): Adjust a comment, and be clearer.
	* src/nano.h: Improve two comments, and elide one macro.
	* doc/syntax/Makefile.am: Add texinfo.nanorc to the packing list.

2014-05-14  Benno Schulenberg  <bensberg@justemail.net>
	* src/winio.c (edit_draw): Poke a non-breaking space into the last
	column of every line, to startle the terminal into handling wide,
	two-column characters properly.  This fixes Savannah bug #31743.
	* src/nano.c (precalc_multicolorinfo): Improve debugging messages,
	and remove superfluous assignment (fileptr already equals endptr).
	* src/color.c (color_update): Move magic check to after headerline.
	* src/color.c (color_update): Open the magic database only when
	actually going to use it, and close it afterward.
	* doc/syntax/{perl.nanorc,xml.nanorc}: Improve two magic regexes.
	* src/color.c (color_update): Stop seeking when a magic matched.
	* doc/nanorc.sample.in: Add an example of colouring nano's interface
	elements, and tweak some of the other descriptions.

2014-05-13  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (do_linter): Make an error message somewhat clearer.
	* src/rcfile.c (parse_binding): Improve another error message.
	* doc/syntax/nanorc.nanorc: Show key names like M-6 and M-/ as valid.
	* src/global.c (thanks_for_all_the_fish): Upon exit also free the
	lists with functions and shortcuts.
	* src/*.c: Several random whitespace and comment tweaks.
	* src/global.c (replace_scs_for): Condense the function a bit.
	* src/help.c (help_init): No need to keep looping when two are found.
	* src/global.c: Improve compilation with --disable-browser.
	* src/nano.h, src/*.c: A few more comment tweaks.

2014-05-12  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (do_spell): Provide startup feedback, as for the linter.
	* doc/syntax/nanorc.nanorc: Show bright foreground colours as valid.
	* src/rcfile.c: Improve some comments, and remove some others that
	are mispasted or superfluous.
	* doc/texinfo/nano.texi: Add missing parenthesis, remove blank line.
	* src/rcfile.c (parse_magictype, parse_headers): Handle the libmagic
	and headerline regexes in the same manner, eliding a static variable
	while renaming some others.
	* src/*.h, src/rcfile.c (parse_magictype, parse_headers): Rename them
	to parse_magic_exp() and parse_header_exp() to be more fitting, further
	symmetrify them, and improve some comments.
	* src/nano.h, src/color.c, src/global.c, src/rcfile.c: Rename struct
	type 'exttype' to 'regexlisttype', to better match its functions, and
	upon exit also free the regexes for libmagic results and headerlines.
	* doc/syntax/python.nanorc: Improve the multiline regexes, make the
	one with single quotes work again, and add some comments.
	* doc/syntax/{man,python,fortran}.nanorc: Add regexes for comments,
	trailing whitespace and reminders, and trim some trailing spaces.
	* src/rcfile.c: Move parse_magic_exp() next to its sister.
	* src/color.c (color_update): Rename a variable, and elide another.

2014-05-10  Chris Allegretta  <chrisa@asty.org>
	* src/rcfile.c (parse_color_names): Redefine false and true to
	  their appropriate macro names so --with-slang works (slangv2 anyway).
	* src/text.c (do_linter): Care about whether user cancelled the file
	  save (cancel the operation) versus just said no (continue but don't
	  save the file).  Also doupdate() after statusbar message that
	  linter is being invoked and blank the shortcuts to draw the eye.
	  Also allow user to cancel at the "open in a new buffer" prompt.
	  New function lint_cleanup().  Fixes Savannah bug #42203.

2014-05-10  Benno Schulenberg  <bensberg@justemail.net>
	* doc/texinfo/nano.texi: Make syntax highlighting into a separate
	section, and add the still missing section on rebinding keys.

2014-05-10  Mark Majeres  <mark@engine12.com>
	* src/*.h, src/*.c: Make it possible for the foreground colour of
	interface elements to be bright.

2014-05-09  Benno Schulenberg  <bensberg@justemail.net>
	* src/winio.c (get_mouseinput): Count only shortcuts that are actually
	shown, so that clicking on the ones after ^T (Speller/Linter) will work
	again correctly.  This fixes the second part of Savannah bug #42093.
	* src/global.c (shortcut_init, strtosc): Do not define nor accept
	shortcuts for functions that are disabled.
	* src/global.c (shortcut_init, strtosc): Define shortcut for the linter
	when speller is disabled, and fix compilation with --disable-speller.
	* src/global.c (shortcut_init, strtosc), doc/man/nanorc.5: Put softwrap
	back among the "Appearance" toggles.
	* doc/man/nanorc.5: Describe bindable functions in the third person.

2014-05-06  Benno Schulenberg  <bensberg@justemail.net>
	* doc/texinfo/nano.texi: Let makeinfo figure out the node pointers.
	* doc/syntax/texinfo.nanorc: New file, colouring for Texinfo files.
	* doc/texinfo/nano.texi: Add sections on the Cutbuffer and the Mark,
	remove option '-?', and make some other tweaks.
	* doc/man/{nano.1,nanorc.5}, doc/texinfo/nano.texi: Synchronize the
	documentation, and tweak some wording here and there.
	* doc/syntax/texinfo.nanorc: Stop the brace content from spilling.

2014-05-05  Benno Schulenberg  <bensberg@justemail.net>
	* doc/man/nanorc.5: Give syntax highlighting its own section,
	add the "header" command, tweak some wording and formatting,
	and trim some duplicate introductory information.
	* src/global.c (strtosc), doc/man/nanorc.5: Allow the function
	do_cut_till_end (naming it "cutrestoffile") to be rebound.
	* doc/syntax/nanorc.nanorc: Add the four new *color options.
	* doc/syntax/nanorc.nanorc: Differentiate between options that
	take an argument and those that don't.

2014-05-04  Benno Schulenberg  <bensberg@justemail.net>
	* src/winio.c (statusbar): Elide a variable.
	* src/*: Rename the variable 'reverse_attr' to 'hilite_attribute',
	and remove an unneeded call of wattroff().
	* doc/man/nanorc.5, doc/texinfo/nano.tex: Document the settings
	of titlecolor, statuscolor, keycolor and functioncolor.
	* doc/man/nanorc.5, doc/texinfo/nano.tex: Show quotes where quotes
	are needed, remove some unneeded spaces, and do other tweaks.
	* src/global.c (strtosc), doc/man/nanorc.5: Allow the Backwards
	toggle to be rebound, document it, and document Backspace too.

2014-05-03  Benno Schulenberg  <bensberg@justemail.net>
	* src/*.h, src/*.c: Add the ability to colour four elements of
	nano's interface differently: title bar, status bar, key combo,
	and function tag.  Idea and original patch #8421 by Mark Majeres.
	* src/global.c (shortcut_init): Unfold long lines consistently.
	* src/global.c (shortcut_init): Order the shortcuts in roughly
	the same manner as in the help lines, and group them per menu.
	* src/global.c (shortcut_init): Remove the search-mode toggles
	from the inappropriate WHEREISFILE and REPLACEWITH menus.
	* src/global.c (shortcut_init): Paragraph jumping only makes
	sense in the main editing menu; remove it from all others.

2014-04-30  Benno Schulenberg  <bensberg@justemail.net>
	* src/*, doc/*: Update the years in the copyright notices -- there
	were releases in 2010, 2011, and 2013, and there will be in 2014.

2014-04-27  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.c (usage, main): Don't blurt out the full help text
	but just a hint when the command line contains some mistake, to
	avoid drowning out the error message.
	* src/nano.c (usage): Mention only those options that actually do
	something.  For the no-op compat flags the man page is the place.
	* src/global.c (shortcut_init): In the help lines of Search/Replace
	show the important toggles early on, and group them better.
	* src/global.c (shortcut_init): Improve order and grouping in the
	main help text and help lines.
	* src/global.c (strtosc): Fix compilation with --enable-tiny.
	* src/global.c (shortcut_init): Improve the order of the help items
	still further, and make them also group nicely in the tiny version.

2014-04-27  Mark Majeres  <mark@engine12.com>
	* src/rcfile.c (parse_include): Plug two tiny memory leaks.

2014-04-26  Benno Schulenberg  <bensberg@justemail.net>
	* src/global.c (add_to_funcs): Add a pointer to the tail of the
	functions list, to simplify and speed up adding new items.  And
	make use of it to remember the location of the Uncut item.
	* src/global.c, src/files.c (make_new_buffer, close_buffer): Make
	help lines show "Close" again when more than one buffer is open.
	* src/global.c (strtosc), doc/man/nanorc.5: Allow the do_spell
	(and thus do_lint) function to be bound to other key combos.
	* src/global.c (strtosc), doc/man/nanorc.5: Group related functions
	together, remove duplicate up/down, add missing prevpage/nextpage.

2014-04-24  Benno Schulenberg  <bensberg@justemail.net>
	* doc/faq.html: Update a few URLs, delete some obsolete ones, update
	the section on configuration flags and on translating nano, plus a
	whole series of other small fixes and adjustments.

2014-04-23  Benno Schulenberg  <bensberg@justemail.net>
	* src/winio.c, src/help.c, src/text.c, src/browser.c: Remove
	several unneeded double semicolons, and two relic comments.
	* src/help.c (parse_help_input), src/browser.c (parse_browser_input):
	Make the Minus and Space keys work in the help viewer and file browser
	also when the PrevPage and NextPage functions are bound to meta-key
	sequences -- searching for these will not find them.  So, instead put
	in the standard key code.  This fixes Savannah bug #42140.
	* src/global.c (first_sc_for): Stop the whole charade of preferring
	control keys over meta keys over function keys, but return the first
	one in the list -- just like the function name implies.  This will
	make a user-defined shortcut appear in the two bottomlines without
	having to unbind the existing one first -- better feedback.
	* src/global.c (shortcut_init, flagtostr, strtosc): Put the two
	wrapping toggles together and increase their contrast a bit.
	* src/nano.c (usage), doc/man/nano{.1,rc.5}, doc/texinfo/nano.texi:
	Increase the contrast between hard-wrapping and soft-wrapping.

2014-04-22  Benno Schulenberg  <bensberg@justemail.net>
	* src/global.c (shortcut_init): Put the movement keys in the
	help viewer in the order of increasing stride.
	* src/global.c (shortcut_init): Rename many constants from
	'*_msg' to '*_tag' to reduce confusion with 'nano_*_msg'.
	* src/global.c (shortcut_init): Elide several pointless constants.
	* src/global.c (shortcut_init): Elide more unneeded constants, and
	update some translator comments and shorten a few tags.
	* src/global.c (shortcut_init): Delete unneeded empty funcs; being
	in the list of shortcuts is enough.
	* src/global.c (shortcut_init): Put left/right in normal order.
	* src/global.c (shortcut_init): List function key after meta key.
	* src/help.c (help_init): Show just two shortcuts per function --
	only three functions showed three, but who has an F13, F14, F15?
	This also fixes Savannah bug #41889: misalignment of help text.
	* src/help.c (help_init): Split the toggles into three groups,
	and do not show toggle keys that have been rebound.

2014-04-21  Benno Schulenberg  <bensberg@justemail.net>
	* doc/syntax/nanorc.nanorc: There is no F0 key.
	* src/global.c (first_sc_for): Adjust two comments -- the help
	viewer no longer sorts keys to be control first, meta second.
	* src/global.c (first_sc_for): Put meta first, for clarity.
	* src/global.c (strtokeytype): No need to check for lowercase
	'm' or 'f', the source doesn't use them and rc-file processing
	uppercases them.  Also put control first, for clarity.
	* src/global.c (strtosc, strtomenu): Sort functions slightly
	better, and allow things to be rebound in the linter menu.
	* src/nano.h: Delete a large bunch of unused defines.
	* src/nano.h, src/proto.h: Delete some more unused stuff.
	* src/rcfile.c (parse_binding), src/winio.c (get_mouseinput):
	Avoid three compiler warnings with --enable-debug.
	* src/global.c (assign_keyinfo): Decombine repetitive condition.
	* src/global.c (assign_keyinfo, shortcut_init): Give nicer names
	to the dedicated keys, for when they show up in the help lines.
	* src/rcfile.c (parse_binding): K-keys no longer exist.
	* src/global.c, src/rcfile.c, doc/nanorc.sample.in: Allow the
	codes from the Ins and Del keys to be rebound.
	* src/rcfile.c (parse_binding): Improve two error messages, and
	complain about wrong menu names after wrong function names.

2014-04-16  Benno Schulenberg  <bensberg@justemail.net>
	* src/winio.c (get_mouseinput): Properly find also the zeroeth
	item from a certain menu in the list of functions.  Until now
	this accidentally worked, because "Get Help" was the very first
	item in almost all menus.  Partly fixes Savannah bug #42093.
	* src/nano.h: MHELP should not be part of MALL, as ^B and ^F and
	Enter and Backspace and so on don't make any sense there.
	* src/nano.h, src/global.c (shortcut_init): Rename MALL to MMOST,
	to be more accurate.
	* src/nano.h, src/global.c, src/help.c, src/search.c: Rename
	MREPLACE2 to MREPLACEWITH, for clarity.
	* src/nano.h: Adjust some tabbing and spacing.
	* src/global.c (shortcut_init): Make better use of MMOST.

2014-04-15  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.c (precalc_multicolorinfo): Actually set the intended
	non-blocking mode for keyboard input.
	* src/winio.c: Relocate and correct a few comments.
	* README.SVN: To build nano from svn, ssh is not required.
	* src/*.c: Normalize whitespace around '==' comparison.
	* configure.ac: Check for the availability of snprintf(),
	fixes Savannah bug #42070 reported by David Lawrence Ramsey.
	* src/global.c (shortcut_init), src/help.c (do_help): Add the
	shortcuts M-\ and M-/ for First Line and Last Line to the help
	viewer, instead of ^Y and ^V, which are already taken for Page
	Up and Page Down.  Also, stop them from aborting the viewer.
	* src/help.c (do_help): Remove superfluous abortion variable.
	* src/global.c (shortcut_init), src/help.c (do_help): Add the
	shortcut ^L for Refresh to the help viewer and stop it aborting;
	a changed version of patch #7013 from David Lawrence Ramsey.

2014-04-14  Benno Schulenberg  <bensberg@justemail.net>
	* src/{proto.h,cut.c,nano.c,text.c}: Remove the unused parameter
	'file_bot' from copy_from_filestruct(), and rename the other.
	* src/*: Remove the unused parameter 'func_key' from get_shortcut(),
	and subsequently from parse_browser_input() and parse_help_input().
	* src/*: Adjust some whitespace and tweak a few comments.
	* src/winio.c (getfuncfromkey): Elide variable and condense comment.
	* src/text.c (break_line): Initialize a variable to avoid a compiler
	warning, rename it to be more apt, add a comment, tweak some others,
	and remove an unneeded 'if'.
	* src/char.c (move_mbleft): Avoid a compiler warning (int → size_t),
	rename the variable, and another, and straighten out the logic.

2014-04-13  Benno Schulenberg  <bensberg@justemail.net>
	* proto.h, global.c, rcfile.c: Remove the unused parameter 'menu'
	from strtosc().
	* global.c (shortcut_init): Remove mistaken browser item from the
	Go-To-Line menu.
	* global.c (shortcut_init): Delete a misplaced setting of 'currmenu'.
	* global.c (shortcut_init, strtomenu): Cosmetic tweaks.
	* doc/syntax/{changelog,c,po}.nanorc: Some small extra colourings.
	* configure.ac, doc/texinfo/nano.texi: Make --enable-tiny disable
	the use of libmagic, and document the --disable-libmagic flag.
	* src/nano.c (version): Print the correct --enable/--disable option.
	* configure.ac, src/*, doc/texinfo/nano.texi: Convert all occurrences
	of #ifdef ENABLE_NANORC to #ifndef DISABLE_NANORC, and adapt for it.
	* configure.ac: Complain about --enable-color without --enable-nanorc.

2014-04-10  Benno Schulenberg  <bensberg@justemail.net>
	* doc/syntax/Makefile.am: Add four recent syntaxes to the packlist.

2014-04-08  Benno Schulenberg  <bensberg@justemail.net>
	* doc: Add the documentation for the new --noread option.
	* doc: Add missing --poslog option to the texinfo file, plus tweaks.

2014-04-08  Hans Alves  <fonsvandeachterburen@gmail.com>
	* nano.h, files.c, nano.c: Adding the command-line option --noread
	to treat any name on the command line as a new file.  This allows
	nano to write to named pipes -- it will start with a blank buffer,
	and will write to the pipe when the user saves the file.  This way
	nano can be used as an editor in combination with for instance gpg
	without having to write sensitive data to disk first.

2014-04-08  David Lawrence Ramsey  <pooka109@gmail.com>
	* src/*.c: More editing of comment blocks and trimming of blank lines.

2014-04-08  Benno Schulenberg  <bensberg@justemail.net>
	* src/rcfile.c: Correct two comments, and tweak two others.
	* src/color.c (color_update): Correct one comment, tweak some others,
	remove two superfluous ones, and remove an unneeded 'if'.

2014-04-08  David Lawrence Ramsey  <pooka109@gmail.com>
	* src/nano.c (main): Convert the literal UTF-8 whitespace string into
	its corresponding byte sequence, and add a comment for it.
	* src/{files.c,global.c,help.c,winio.c}: Reformat some comment blocks,
	fix a few typos, and remove a few unneeded blank lines.

2014-04-08  Benno Schulenberg  <bensberg@justemail.net>
	* src/rcfile.c (parse_binding): Melt the binding and unbinding code,
	which are very similar, into a single function.
	* src/rcfile.c (parse_binding): Uppercase only the first two or three
	characters of the key name, in order to preserve ^Space and M-Space,
	so they can be unbound.  Fixes Savannah bug #41940.
	* doc/syntax/go.nanorc: Extend the syntax highlighting for Go lang,
	from the submission by Robert Clausecker <fuzxxl@Savannah>.

2014-04-07  Benno Schulenberg  <bensberg@justemail.net>
	* src/{proto.h,global.c,text.c}: Keep a pointer to the Uncut item in
	the functions list, to be able to change its description to Unjustify
	at the appropriate moment.  This avoids having to fully repopulate
	the functions and shortcuts lists before and after every Justify.
	Also, look for ^U only in the main menu, to which ^W M-J factually
	returns and which shortcut_init() "sneakily" sets.
	* src/{proto.h,files.c,global.c,nano.c,rcfile.c}: Drop the obsolete
	argument of shortcut_init(), and remove two unneeded calls of it.
	* src/global.c (shortcut_init): Allow M-J after an --enable-justify.
	* src/rcfile.c (parse_rcfile): The user documentation only speaks
	of options, not of flags.  Make the error messages conform.
	* src/rcfile.c (check_vitals_mapped): Improve layout of message.

2014-04-06  Benno Schulenberg  <bensberg@justemail.net>
	* src/global.c (shortcut_init): Limit M-T (cut-till-end-of-file) to
	the main menu, and M-J (full-justify) to the main and search menus.
	* src/proto.h: There is no need for the helpline tags to be external,
	they are only ever used in src/global.c.
	* src/global.c: Do not set any helpline tags to empty strings;
	compilation should fail if they are needed and not defined.

2014-04-05  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.c (version): Print the correct configuration options.
	* src/{chars.c,nano.c,text.c}: Cosmetic tweaks.
	* doc/texinfo/nano.texi: Adjust for new disabling config options.

2014-04-05  Mike Frysinger  <vapier@gentoo.org>
	* src/nano.c (do_input): Reload possibly freed function pointer.

2014-04-04  Benno Schulenberg  <bensberg@justemail.net>
	* src/{files.c,nano.c}: Avoid two more compilation warnings.
	* configure.ac: Allow --enable-extra and --enable-multibuffer
	to override --enable-tiny.
	* src/rcfile.c (check_vitals_mapped): Do not allow 'set quiet'
	to suppress a fatal-error message, make sure the user sees it.
	* src/color.c: Comment tweaks.
	* src/{*.h,*.c}, configure.ac: Convert all occurrences of
	#ifdef ENABLE_COLOR to #ifndef DISABLE_COLOR.
	* src/nano.h: Comment tweaks.
	* configure.ac: Move the enabling stuff to after the disablers.
	* configure.ac: Add submissive colour disabling to --enable-tiny.
	* configure.ac: Allow other enablers to override --enable-tiny too.
	* src/{proto.h,search.c}: Fix compilation with --enable-browser.
	* src/global.c (shortcut_init): Fix warnings with --enable-help.
	* src/text.c (do_justify): Fix compilation with --enable-justify.
	* src/nano.c (do_mouse): Fix warning with --enable-mouse.
	* src/prompt.c (get_prompt_string): Fix compilation for the
	combination of --enable-tiny with --enable-tabcomp.
	* src/prompt.c (get_prompt_string): Normalize the indentation.
	* src/text.c: Comment tweaks.

2014-04-03  Benno Schulenberg  <bensberg@justemail.net>
	* configure.ac: Remove unused '*_support' variables.
	* doc/syntax/po.nanorc: New file, syntax colouring for PO files.
	* configure.ac: Stop --with-slang from duplicating --enable-tiny.
	* configure.ac: Sort all the disabling options alphabetically.
	* src/{proto.h,files.c,global.c,nano.c,rcfile.c}, configure.ac:
	Convert #ifdef ENABLE_MULTIBUFFER to #ifndef DISABLE_MULTIBUFFER.
	* src/{proto.h,files.c,,nano.c,winio.c}, configure.ac:
	Convert #ifdef NANO_EXTRA to #ifndef DISABLE_EXTRA.
	* src/{global.c,text.c}: Fix two compilation warnings for tiny.

2014-04-02  Benno Schulenberg  <bensberg@justemail.net>
	* configure.ac, doc/Makefile.am: Try to build the info documentation
	only when 'makeinfo' is available.  Patch partly by Mike Frysinger.
	* configure.ac: Upping the required version of Autoconf, to ensure the
	ONCE macros are defined.  Suggested by Kamil Dudka and Mike Frysinger.

2014-04-02  Mike Frysinger  <vapier@gentoo.org>
	* doc/man/{,fr}/Makefile.am: Simplify the man rules still further.
	* .gitignore: Add 'config.cache', created by './configure -C'.
	* src/nano.c (die_save_file): Newer gcc warns about set-but-unused
	variables, so add a dummy if() check to kill that off.
	* src/search.c (search_init): Silence a compiler warning about a
	variable possibly being used uninitialized.

2014-03-31  Chris Allegretta  <chrisa@asty.org>
	* doc/syntax/go.nanorc: New file, basic go syntax highlighting.

2014-03-30  Benno Schulenberg  <bensberg@justemail.net>
	* doc/syntax/changelog.nanorc: New file, first attempt at colouring
	Changelog files.
	* ChangeLog: Consistently use a colon after names of changed files.

2014-03-30  Mike Frysinger  <vapier@gentoo.org>
	* doc/Makefile.am, doc/man/Makefile.am, doc/man/fr/Makefile.am:
	The build already provides a standard htmldir for installing html
	files.  Use that instead of creating our own.
	* doc/man/Makefile.am, doc/man/fr/Makefile.am: Use dist_ prefixes
	and += appending supported by automake to produce simpler files.
	* doc/Makefile.am: Drop redundant localedir, as autoconf/automake
	already creates this for us.
	* src/rcfile.c, doc/nanorc.sample.in: Hard-listing all the wanted
	syntax files is a PITA.  Support globs in include paths, so people
	can easily drop in new files and have it "just work".

2014-03-27  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.c (main): Fix compilation with --disable-utf8.
	* src/global.c (shortcut_init): Place a help string among
	its kin, adjust some indentation, group function pairs more
	tightly, bundle restricted stuff, and delete an unused item.

2014-03-27  Mike Frysinger  <vapier@gentoo.org>
	* configure.ac: Make --disable-nanorc with --enable-color barf.
	* configure.ac: Allow --disable-utf8 and --enable-utf8 to work.

2014-03-26  Benno Schulenberg  <bensberg@justemail.net>
	* configure.ac: Word, tab, and comment tweaks.
	* src/global.c: Some comment tweaks, and whitespace trimmings.
	* src/global.c (print_sclist): Also print last shortcut in list.
	* doc/texinfo/nano.texi: Explain how to select and paste with
	the mouse when mouse support is enabled: by holding down Shift.
	* nano.spec.in, doc/faq.html, doc/texinfo/nano.texi: Remove
	vestiges of the obsolete '--enable-all' configure flag.
	* src/rcfile.c: Fix compilation with --disable-color.
	* src/rcfile.c: Allow (un)binding keys when colour is disabled.
	* src/help.c: Fix compilation with --disable-browser.
	* src/{proto.h,browser.c,help.c}: Remove a superfluous function.

2014-03-26  Mike Frysinger  <vapier@gentoo.org>
	* configure.ac: Clean up most of the --with/--enable flags:
	- use AS_HELP_STRING instead of writing the text ourselves;
	- use the normal enable_xxx var AC_ARG_ENABLE creates for us;
	- delete duplicate checks in a few places (due to previous cleanup);
	- unwrap some macros/var assignments;
	- delete trailing whitespace;
	- delete old --enable-all flag;
	- fix quoting on a lot of vars that come from the user;
	- use AC_MSG_* helpers instead of raw `echo`.

2014-03-24  Benno Schulenberg  <bensberg@justemail.net>
	* src/{nano,move,winio}.c: Fix a few compiler warnings.
	* src/{global,rcfile,winio}.c: Print menu numbers for debugging
	in hex, and tweak a few of those debugging messages.
	* src/nano.c: Harmonize comments, and trim some blank lines.

2014-03-24  Mike Frysinger  <vapier@gentoo.org>
	* doc/syntax/gentoo.nanorc: Match more files, add a trailing
	whitespace check, and EAPI=5 updates.
	* doc/syntax/javascript.nanorc: New file, based on C syntax.
	* doc/syntax/{nanorc,python}.nanorc: Highlight trailing whitespace.
	* configure.ac, m4/ax_check_compile_flag.m4: Start building with
	warnings enabled, to help prevent issues from silently creeping in.
	* configure.ac: Newer ncurses include pkg-config files which tell
	us the right -I/-L paths we need, so default to that before trying
	the legacy ways.
	* configure.ac: Add a configure flag to disable the use of the
	fattening libmagic.

2014-03-23  Benno Schulenberg  <bensberg@justemail.net>
	* src/rcfile.c (parse_keybinding, parse_unbinding): Improve a
	debugging message, fix a translator comment, and tweak others.

2014-03-22  Benno Schulenberg  <bensberg@justemail.net>
	* THANKS: Add some missing translator names, and tweak others.

2014-03-21  Benno Schulenberg  <bensberg@justemail.net>
	* src/chars.c (is_punct_mbchar, mbstrchr): Elide a variable,
	thus making two ifs identical to six others.
	* doc/syntax/nanorc.nanorc: Add the 'extendsyntax' directive,
	and change two colours to be legible on a light background.

2014-03-19  Benno Schulenberg  <bensberg@justemail.net>
	* doc/nanorc.sample.in: Document the changed whitespace defaults.
	* src/global.c, doc/man/nanorc.5: Allow softwrap to be rebound.
	* doc/nanorc.sample.in: Sort the includes alphabetically, and
	add the ones for Lua, Magicpoint, and Spec files.
	* doc/nanorc.sample.in: Add "poslog", plus tiny textual tweaks.
	* src/global.c, doc/man/nanorc.5: Group softwrap with the toggles
	that affect how things look -- it does not belong in the group of
	general program functions, nor in the group of editing behaviour.
	* doc/man/nanorc.5: Add the descriptions of six missing bindable
	functions, and tweak those of a few others.

2014-03-18  Benno Schulenberg  <bensberg@justemail.net>
	* src/global.c (shortcut_init): In the file browser one cannot
	search for a regular expression, so do not mention it.

2014-03-17  Benno Schulenberg  <bensberg@justemail.net>
	* src/global.c (shortcut_init): Show ^F and ^B instead of kright
	and kleft in the help lines of the tiny version.
	* src/global.c (shortcut_init): Remove some inconsistent spaces
	and newlines, condense three statements into one, place an #endif
	better, melt two #ifndefs into one, and add a comment.
	* src/winio.c (edit_scroll): Remove the old softwrap scrolling code.
	* src/{nano.h,proto.h,color.c,cut.c,files.c,global.c,help.c,nano.c,
	search.c,text.c,utils.c}: Add, fix, and remove some #endif comments,
	remove an obsolete comment, and remove some superfluous #ifndefs.
	* src/global.c (shortcut_init): Put ^B and ^F in the same order as
	all other command keys: first the backward then the forward motion.
	* src/{nano.h,*.c}: Remove stray spaces before tabs.

2014-03-16  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.h: Display more help items when the terminal is wider.

2014-03-14  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.c (main): When in a UTF-8 locale, use prettier characters
	(»·) for indicating whitespace, and for similarity use ">." instead of
	":." when not in a UTF-8 locale.  Changes suggested by Mike Frysinger.

2014-03-05  Benno Schulenberg  <bensberg@justemail.net>
	* src/move.c (do_down): Initialize the correct variable to zero.
	Solves jumpy scrolling behaviour reported by Chris Allegretta.

2014-03-04  Chris Allegretta  <chrisa@asty.org>
	* global.c (first_sc_for): Return raw keystrokes last, so
	  they will not be displayed if there are F-keys or Meta keys
	  mapped for an item in the shortcut list.

2014-03-04  Benno Schulenberg  <bensberg@justemail.net>
	* doc/syntax/nanorc.nanorc: Add keyword 'quiet', sort 'locking',
	and concatenate the two separate strings into one.
	* src/nano.c (main), doc/nanorc.sample.in: Make the M-P toggle
	actually do something by default, by using visible characters.
	* src/global.c (shortcut_init): Normalize the writing of three
	help-line items: "Write Out", "Uncut Text", and "Unjustify", to
	better stress the O and U -- the big C and J were distracting.
	* doc/{syntax/nanorc.nanorc,man/nanorc.5,texinfo/nano.texi}:
	Remove erroneous 'suspendenable' -- it is not a settable option
	but a bindable function.

2014-03-03  Chris Allegretta  <chrisa@asty.org>
	* global.c (shortcut_init): Don't actually free the shortcut
	  list, since the next pass via justifying will then remove all
	  custom shortcuts.  Fixes bug discovered by Benno Schulenberg.
	* text.c (do_linter): Remove some unused variables to quiet
	  -pedantic -Wall.

2014-03-03  Benno Schulenberg  <bensberg@justemail.net>
	* src/global.c (add_to_funcs): Add a newline, for clarity.
	* src/global.c (shortcut_init): Mark, don't translate yet.
	* src/move.c (do_down): Correctly compute the minimum amount
	to scroll when softwrap is on and there are overlong lines.
	* src/winio.c (edit_scroll): Disable amount computation here.
	* src/move.c (do_down): Trim some redundant code, and correct
	the scrolling behaviour when softwrap is off -- the construct
	(amount ? amount : 1) wasn't doing what I intended.
	* doc/man/nano{.1,rc.5}: Slightly improve formatting and wording.
	* doc/{texinfo/nano.texi,man/nanorc.5}: Add some missing options
	to the texinfo documentation, and improve alphabetization a bit.
	* src/nano.c (usage): Don't mention --softwrap in tiny version.

2014-03-01  Chris Allegretta  <chrisa@asty.org>
	* global.c (shortcut_init): Fix an issue with the split
	  do_research() setup when using --enable-tiny.
	* rcfile.c (parse_linter): Allow linter to be unset using "".
	* rcfile.c: Allow syntaxes to be extended via "extendsyntax"
	  directive.  Color, header, magic and linter should all be
	  able to be extended.  Man page updates for nanorc(5).
	* doc/nanorc.sample.in: Document 'set quiet'.

2014-03-01  Mike Frysinger  <vapier@gentoo.org>
	* src/color.c (color_update): Do not write to stderr on magic
	errors.  If the magic db has errors such that magic_load() fails,
	the current code dumps to stderr which messes up the terminal.
	The error message is also vague to the point where it's confusing
	-- I thought nano had problems writing to the file I was editing.
	Instead, use statusbar() and clarify the messages.
	(Patch tweaked by Benno.)

2014-02-28  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (execute_command): Equalize pipe error messages.
	* src/global.c (thanks_for_all_the_fish): Remove a redundant
	'#ifdef DEBUG', it is contained within a wider one.
	* src/global.c (strtosc): Correct a misspelled keyword.
	* src/rcfile.c (check_vitals_mapped): Actually translate a
	helpful message, and reword it somewhat for clarity.
	* src/global.c: Remove unused function 'free_shortcutage'.
	* src/global.c (strtosc): Indent conditions consistently.

2014-02-28  Eitan Adler  <lists@eitanadler.com>
	* src/nano.c (do_toggle): Constify a char pointer, to fix
	a warning when compiling with clang (and -Wall).

2014-02-27  Mike Frysinger  <vapier@gentoo.org>
	* doc/man/nanorc.5: Relocate the misplaced unbind section,
	and improve formatting.  (Patch tweaked by Benno.)
	* doc/syntax/nanorc.nanorc: Add the bind/unbind commands,
	so they will look supported when using syntax highlighting.

2014-02-27  Benno Schulenberg  <bensberg@justemail.net>
	* src/help.c (parse_help_input): Make 'Space' again an alias
	for PageDown and 'Minus' for PageUp -- they were mistakenly
	swapped during code conversion in r4223.

2014-02-26  Mike Frysinger  <vapier@gentoo.org>
	* doc/syntax/sh.nanorc: Highlight more shell builtins and
	common commands, and rewrite the variable highlighting to be
	more exact and handle cases where string operations are used.
	* doc/syntax/gentoo.nanorc: Update to newer EAPIs, and fold
	in updated shell changes too.  Much of this is based on work
	by Davide Pesavento <pesa@gentoo.org>.
	* doc/syntax/makefile.nanorc: Highlight trailing whitespace.

2014-02-26  Benno Schulenberg  <bensberg@justemail.net>
	* src/global.c (shortcut_init): Put PageUp and PageDown
	and also WhereIs and WhereIsNext together in the help lines
	of the file browser, and WriteOut and Readfile in the help
	lines of the main window -- related stuff in one column.
	* doc/syntax/man.nanorc: Better colouring of manpage files.

2014-02-26  Konstantin Abakumov  <abakumov@Savannah>  (tiny change)
	* doc/syntax/python.nanorc: Slightly improve the regexes for
	multiline strings in Python, reducing spillage.

2014-02-26  Benno Schulenberg  <bensberg@justemail.net>
	* src/move.c (do_down), src/winio.c (edit_scroll): Scroll an
	extra amount when softwrap is on and the current line would
	otherwise run off the screen, and recalculate maxrows after
	each scroll.  Solves bug #27550 reported by Hannes Schueller.

2014-02-25  Benno Schulenberg  <bensberg@justemail.net>
	* NEWS: Fix some typos and wordings, and rewrap a few lines.
	* src/global.c: Correcting some translator comments, removal
	of a few superfluous blank lines, and some pedantic comment
	tweaks (mainly adding missing periods and stars).
	* src/global.c: Ordering "Prev Word" and "Next Word" better.
	* src/global.c: Make ^G not only call help but also exit from
	it, and make ^C also exit from help and from the file browser.
	Also remove two redundant shortcut definitions.

2014-02-25  Mike Frysinger  <vapier@gentoo.org>
	* src/Makefile.am: Rename 'INCLUDES' to 'AM_CPPFLAGS', since
	Automake changed the naming of these a while ago, and at least
	version 1.13 now starts warning about it.
	* .gitignore: Ignore generated files (and bak files).

2014-02-25  Benno Schulenberg  <bensberg@justemail.net>
	* src/files.c (write_lockfile, do_lockfile): Fix a typo reported
	by Jean-Philippe Guérard and inconsistent spelling of "lock file"
	reported by myself on nano-devel in March 2013.

2014-02-25  Benno Schulenberg  <bensberg@justemail.net>
	* src/help.c (do_help_void): Call the help browser with the correct
	refresher for afterwards.  This solves a bug reported by myself on
	nano-devel in August 2010: after typing ^R ^T ^W ^G ^X, the file
	being edited would get displayed instead of the list of files.

2014-02-24  Chris Allegretta  <chrisa@asty.org>
	* New linter functionality, rcfile option "linter".
	* src/global.c (shortcut_init): Actually free the sclist
	  if it was allocated before.
	* src/winio.c (do_credits): Add Benno, my children,
	  update copyright info.

2014-02-23  Benno Schulenberg  <bensberg@justemail.net>
	* doc/syntax/*.nanorc: Comment and punctuation tweaks.
	* doc/syntax/sh.nanorc: Colour $VAR within a "" string
	but not within a '' string, and do not colour strings
	within comments.  Fixes bug #29943.

2014-02-23  Benno Schulenberg  <bensberg@justemail.net>
	* src/text.c (do_undo, do_redo, add_undo): Make warning
	sentences in the status bar consistently end in a period.

2014-02-22  Benno Schulenberg  <bensberg@justemail.net>
	* src/files.c (write_file): Add a missing malloc.
	Reported by an anonymous cross compiler, bug #30671.

2014-02-22  Benno Schulenberg  <bensberg@justemail.net>
	* src/winio.c (get_mouseinput): Correct an oversight,
	use the proper 'do_up_void' and 'do_down_void' names.
	Reported by Zhou Z.J. <zzj666@Savannah>, bug #38268.

2014-02-22  Lauri Kasanen  <laxy@Savannah>  (tiny change)
	* doc/syntax/html.nanorc: Also recognize htm as extension,
	use cyan for tags (more visible on dark background), correct
	the expression for ampersand codes, and colour strings too.

2014-02-22  Dennis Jenkins  <dennisjenkins@Savannah>  (tiny change)
	* doc/syntax/c.nanorc: Also recognize c++ as extension.

2014-02-22  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.c (move_to_filestruct): Update the data in 'mark_begin'
	when mark and cursor are on the same line.  This avoids a segfault
	after M-A, right, M-T, left, ^K, or a hang when the left is left out.

2014-02-22  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.c (main): Add two conditions on ENABLE_NANORC.
	* src/files.c (close_buffer, do_insertfile): Likewise.
	This avoids compilation failure when nano is configured
	with both --disable-color and --disable-nanorc.

2014-02-22  Felipe Bugno  <capent@Savannah>  (tiny change)
	* doc/nanorc.sample.in: Add an include for CMake files.

2014-02-22  David Lawrence Ramsey  <pooka109@gmail.com>
	* src/nano.c (allow_pending_sigwinch): A (char *) cast for pedantic purposes.
	* src/cut.c (do_cut_text): Wrap a reference to 'copy_text' in NANO_TINY.

2014-02-22  David Lawrence Ramsey  <pooka109@gmail.com>
	* ChangeLog, NEWS, doc/faq.html: Fix typos, wording, and spacing.

2014-01-25  Chris Allegretta  <chrisa@asty.org>
	* src/winio.c (set_modified): Check for a filename before trying to lock.

2014-01-24  Benno Schulenberg  <bensberg@justemail.net>
	* src/nano.c (copy_from_filestruct): Refresh the mark's pointer when
	  stuff was pasted into the line where the mark is.  This applies
	  Savannah patch #8180 and fixes the segfault reported on the list:
	  https://lists.gnu.org/archive/html/nano-devel/2012-07/msg00000.html.

2014-01-01  Chris Allegretta  <chrisa@asty.org>
	* doc/texinfo/nano.texi: Change '@sp4' since makeinfo 5.1 hates the
	  lack of spacing.  Fixes bug #40103 reported by flapane@Savannah.
	  Also change SVN status to non-binary so diffs work.

2014-01-01  Chris Allegretta  <chrisa@asty.org>
	* src/global.c (strtokeytype): Check for lower-case 'f' for defining F-key
	  sequences for consistency (previously was two checks for upper case 'F').
	  Fixes bug #40815 reported by David Binderman <dcb314@Savannah>.

2013-06-13 Matthew Fischer <mfisch@Savannah>
	* doc/syntax/c.nanorc: Add the 'auto' keyword.

2013-06-13  David Lawrence Ramsey <pooka109@gmail.com>
	* src/global.c (first_sc_for): Try to more consistently display keystrokes,
	  useful when the user has rebound a bunch of them.

2013-06-13 Kamil Dudka <kdudka@redhat.com>
	* doc/man/nano.1: Actually document the -P (--poslog) option.

2013-04-12 Chris Allegretta <chrisa@asty.org>
	* src/files.c (do_insertfile): Check for saved cursor position when inserting a
	  file as well.  Fixes Savannah bug #38600 reported by Craig Barnes.
	* src/files.c (write_file): Don't re-stat() the file if we're writing out
	  a marked portion (especially because it would give the wrong stat info).
	  Part two of issue reported by Benno Schulenberg.

2013-04-07 Michael Berg <mike@berg-net.us>
	* do_cut_text: Fix copying (not cutting) text setting Modified state.
	  Partly fixes an issue reported by Benno Schulenberg.

GNU nano 2.3.2 - 2013.03.23

2013-03-17 Chris Allegretta <chrisa@asty.org>
	* Revert r4547 as we should have a new release and the overlap code is not yet
	  ready for public consumption.

2013-01-20 Chris Allegretta <chrisa@asty.org>
	* src/text.c (do_histify): Don't allow sigwinch to be received while justifying
	  as that puts us into a wacky state.  Fixes crash on justify by Joshua Rogers.
	* configure.ac: Added --with-wordbounds option to let cross compilers force
	  whether their target system support GNU-style word boundaries or not.
	  Originally reported by Dave Festing.
	* doc/man/nanorc.5: Fix typo in softwrap description, reported by
	  cbart387@Savannah.

2013-01-19 Chris Allegretta <chrisa@asty.org>
	* configure.ac: Make ncurses checking to set $LIBS and check the ncursesw lib
	  actually works before defaulting to it over ncurses!  Shock!

2013-01-13 Chris Allegretta <chrisa@asty.org>
	* src/utils.c (parse_num): Initialize errno before calling strtol().  Fixes issue
	  where trying to go to a line number too long will break legitimate goto-lines
	  for the remainder of the editing session, reported by Joshua Rogers.

2013-01-09 Mike Frysinger <vapier@gentoo.org>
	* configure.ac: Check for ncursesw5-config and base $CPPFLAGS on it.

2013-01-09 Fabian Groffen <grobian@Savannah>
	* configure.ac, src/nano.h: Make the search for ncursesw more generalized.

2013-01-02 David Benjamin <davidben@Savannah>
	* src/search.c (parse_syntax): Fix blatantly and dangerously incorrect code
	  for deleting old syntaxes.

2013-01-02 Mike Frysinger <vapier@gentoo.org>
	* src/files.c (cwd_tab_completion): Remove unnecessary variables.
	* src/search.c (search_init): Fix gcc complaints on certain versions.

2013-01-02 Eitan Adler <lists@eitanadler.com>
	* configure.ac: Remove unnecessary checks.
	* src/nano.h, NEWS: Fix redundant wording.

2012-12-31 Chris Allegretta <chrisa@asty.org>
	* src/*: Introduce (basic) vim-style file locks.  Does not allow vim to recover
	  our changes, and just lets a vim user know we're editing a file.  Command-line
	  option "-G" or "--locking", nanorc option "locking".  New functions in
	  src/files.c: do_lockfile(), write_lockfile(), and delete_lockfile().

2012-02-05 Chris Allegretta <chrisa@asty.org>
	* src/*: Fix overlapping strings highlighting each other.  New variables in edit_draw
	  (slmatcharray, pbegin, paintok), new logic (with repeated setting of values in the
	  array but it's BFI after all).  FIXME: Need to create a new 'overlap'.
	* src/*: Fix a silly issue with the argument to nregcomp, as it's confusing to the caller.
	* src/nano.h: Change the color types to a compiler macro (COLORWIDTH), may not actually
	  even be worth doing, but someday who knows how wide a color curses implementation might
	  be, and maybe we'll even start checking for it in autoconf!

GNU nano 2.3.1 - 2011.05.10

2011-05-10 Chris Allegretta <chrisa@asty.org>
	* text.c (do_enter): Only increment totsize by the auto-indented amount, since the previous
	  line's size was already counted.  Fixes bug reported by Robert Spanjaard.

2011-05-08 Chris Allegretta <chrisa@asty.org>
	* doc/syntax/Makefile.am: Finally get around to sorting the syntax file list.

2011-05-08 Matthew Wild <mattj100@Savannah>
	* doc/syntax/spec.nanorc: New lua syntax highlighting config.

2011-03-28 Asterios Dramis <asterios.dramis@gmail.com>
	* doc/syntax/spec.nanorc: New RPM spec file highlighting config.

2011-03-12 Chris Allegretta <chrisa@asty.org>
	* po/*: Sync latest translation fixes, add an update_linguas.sh script.  Rename
	  existing update.pl to update_sources.pl to make it more specific.

2011-03-04 Chris Allegretta <chrisa@asty.org>
	* color.c (color_update): Add check for whether the file even exists
	  before we try to run the magic check on it.  Fixes error messages to stderr
	  when reading in files that don't exist, reported by Mike Frysinger.

2011-03-03 Chris Allegretta <chrisa@asty.org>
	* color.c (color_update): Remove unneeded debugging message from libmagic commit.
	  Fixed extra messages going to stderr, reported by Mike Frysinger.

GNU nano 2.3.0 - 2011.02.26

2011-02-26 Chris Allegretta <chrisa@asty.org>
	* Change RAW in function_type enum to RAWINPUT, to fix compilation on AIX,
	  reported by Richard G Daniel <skunk@iskunk.org>.

2011-02-23 Chris Allegretta <chrisa@asty.org>
	* Fix some more severe warnings from 'g++ -pedantic', from patch originally
	  by Eitan Adler <lists@eitanadler.com>.

2011-02-23 Kamil Dudka <kdudka@redhat.com>
	* doc/man/nanorc.5: Fix small typo.  Report and original patch by John Bradshaw.

2011-02-22 Chris Allegretta <chrisa@asty.org>
	* color.c (nfreeregex): Fix that we were trying to set the pointer passed by value
	  to NULL.  Fixes crashes on file save reported by Ken Tyler and Matthieu Lejeune.

2011-02-18 Chris Allegretta <chrisa@asty.org>
	* New saved cursor position history option.  Command line option -P or --poslog, rc file
	  entry "poslog".  Search history changes to ~/.nano/search_history, cursor position log
	  is ~/.nano/filepos_history.  Added checks to move the legacy .nano_history file to the
	  new location.  Several new functions to files.c: load_poshistory(), save_poshistory(),
	  check_poshistory(), update_poshistory(), and reworking of histfilename().  New FAQ entry
	  4.15 discussing the change and offering an interoperability workaround.
	* files.c (load_history): Set last_search to the last search value we loaded from history,
	  so do_research will succeed without needing to manually load the last search in.  Fixes
	  bug reported by Matthieu Lejeune.

2011-02-12 Chris Allegretta <chrisa@asty.org>
	* Initial libmagic implementation, adapted from Eitan Adler <eitanadlerlist@gmail.com>.
	  New nanorc entry "magic" to enable this functionality, nanorc file and man page updates.

2011-02-06 Chris Allegretta <chrisa@asty.org>
	* src/*: Retire iso_me_harder_funcmap based on suggestion by <bernd.spaeth@gmx.net>.
	  This does add 20KB to nano's executable size but it gets rid of a lot of indirection
	  that makes people's stomach turn.  There are several new stub functions and a need of
	  more tidying as a result of this.
	* files.c (write_file): Fix problems with writing the backup file (albeit interactively)
	  with new function prompt_failed_backupwrite(), allows more secure handling of problems
	  with failing to write the backup file compared to 'allow_insecure_backup'.
	* winio.c (edit_redraw): Remove unused variable.

GNU nano 2.2.6 - 2010.11.22

2010-11-15 Chris Allegretta <chrisa@asty.org>
	* Add a section to the FAQ about using nanorc on Win32 systems.

2010-11-12 Chris Allegretta <chrisa@asty.org>
	* Add check for RESTRICTED mode back to speller, suspend and insert file routines,
	  since adding key bindings broke the fact that they should be disabled in restricted\
	  mode.  Fixes Savannah bug #31625 reported by Charlie Somerville.

GNU nano 2.2.5 - 2010.08.05

2010-08-04 Lauri Kasanen <curaga@operamail.com>
	* doc/syntax/mgp.nanorc: New Magicpoint syntax highlighting definition.

2010-08-04 Peter <exodus@savannah>
	* doc/syntax/tex.nanorc: No longer highlight escaped comments

2010-06-20 Chris Allegretta <chrisa@asty.org>
	* New rc file option allow_insecure_backup, allows the previous security
	  fixes for backup files to be overridden if you're really positive
	  you want to.  Fixes Savannah bug #29732 by Brian Szymanski <skibrianski>.

2010-05-23 Chris Allegretta <chrisa@asty.org>
	* files.c (write_file): Don't even try to chown() the backup
	  file unless we're root, since it's probably going to fail if
	  we're editing a file we don't own.  Fixes Savannah bug
	  #29514: [nano 2.2.2] backup should ignore chown errors.

GNU nano 2.2.4 - 2010.04.15

2010-04-14 Chris Allegretta <chrisa@asty.org>
	* doc/man/nano.1,nanorc.5: Remove the backup file warnings now
	  that a sufficient security fix exists for the backup file code.

2010-04-14 Chris Allegretta <chrisa@asty.org>
	* text.c (do_alt_speller): Skip invoking the alt speller if the file size
	  is 0 bytes.  Fixes Savannah bug #29393 reported by Mike Frysinger.
	* files.c (write_file): Don't set current_stat when tmp == TRUE, check
	  whether current_stat is set when trying to use it, and don't do the
	  modification check if the filename changed, since we have no way
	  of knowing about it in that case.  Fixes Savannah bug #29392, reported
	  by Mike Frysinger.  [CVE-2010-1160]

2010-04-13 Felipe Bugno <necron@bol.com.br>
	* doc/syntax/cmake.nanorc: Added cmake syntax highlighting file.

2010-04-09 Chris Allegretta <chrisa@asty.org>
	* files.c (do_writeout): Better security fixes for backup file writing,
	  mangled from submission by Dan Rosenberg <dan.j.rosenberg at gmail>.
	  [CVE-2010-1161]

2010-04-08 Chris Allegretta <chrisa@asty.org>
	* files.c (do_writeout): Previous fixes should not cause a crash
	  when saving a new file.  Discovered by Mike Frysinger <vapier@gentoo.org>.

2010-04-07 Chris Allegretta <chrisa@asty.org>
	* doc/man/nano.1,nanorc.5: Add warnings about using backup
	  mode as root due to the Dan Rosenberg security analysis.

2010-04-02 Chris Allegretta <chrisa@asty.org>
	* files.c (do_writeout): Expand modification check to include both the
	  original file's device ID and inode number as reasons to warn the
	  user that the file has been modified.  Also abort on writing a backup
	  file when its owner doesn't match the edited file.  Based on security
	  analysis on nano by Dan Rosenberg.  [CVE-2010-1160]

2010-03-21 Chris Allegretta <chrisa@asty.org>
	* nano.c (page_stdin et al): Don't attempt to reset/reopen the terminal
	  settings when reading stdin if it was aborted with SIGINT.  May fix
	  Savannah bug #29114 reported by Mike Frysinger.

2010-03-21 Mike Frysinger <vapier@gentoo.org>
	* doc/syntax/c.nanorc: Add additional support for #include_next and #pragma.

2010-03-21 Chris Allegretta <chrisa@asty.org>
	* move.c (do_page_up, do_page_down()): Explicitly set current_y to 0 when
	  paging up when not in smooth scroll mode, as previous fixes would otherwise
	  cause the cursor to not really be moved to the top of the screen.

2010-03-07 Chris Allegretta <chrisa@asty.org>
	* configure.ac, nano.c (handle_sigwinch): Create check for whether LINES and
	  COLS can safely be redefined.  Fixes compilation issues with Cygwin, and likely
	  with newer versions of ncurses.  Fixes Savannah bug #28984 reported by Andy Koppe
	  and by Eric Oliver via mailing list.
	* winio.c (get_mouseinput): Fix stray semicolon in code, also reported in
	  bug #28984.

GNU nano 2.2.3 - 2010.02.11

2010-01-28 Chris Allegretta <chrisa@asty.org>
	* move.c (do_page_up, do_page_down): Fix for smooth mode not preserving cursor
	  position.  Part one of fix for Savannah bug #21178 by Mike Frysinger.

GNU nano 2.2.2 - 2010.01.17

2010-01-17 Chris Allegretta <chrisa@asty.org>
	* nano.c (main), prompt.c (do_statusbar_input): Handle problems with an unmapped
	  function due to key rebinding, fixes crashes on FreeBSD reported by Eitan
	  Adler <eitanadlerlist@gmail.com>.

2010-01-14 Chris Allegretta <chrisa@asty.org>
	* files.c (do_writeout): Fix for crash / incorrect external modification warning
	  due to earlier fix in r4467.

2010-01-12 Chris Allegretta <chrisa@asty.org>
	* move.c (do_page_up, do_page_down): Fix issues with not enough scrolling down/up
	  and cursor centering.
	* winio.c (edit_scroll): Remove lots of needless checking of line length for
	  soft wrapping code.
	* winio.c (edit_update): Remove extra code for when updating with old_current outside
	  of the new buffer boundary and centering issues.

2010-01-05 Tito <farmatito@tiscali.it>
	* search.c (update_history): Fix bad length check causing search crash on armel platform.

2010-01-04 Chris Allegretta <chrisa@asty.org>
	* winio.c: edit_update, edit_redraw: Fix search not scrolling to the middle of the screen
	  (reported by alpha@qzx.com) and places where we rely on maxrows but should not.

2009-12-26 Jordi Mallach <jordi@gnu.org>
	* doc/man/nano.1: Avoid a groff warning by prepending a zero-width
	space to a line starting with '.

2009-12-22 Chris Allegretta <chrisa@asty.org>
	* files.c (write_file): Fix compatibility with previous stat fix and tiny mode.

2009-12-22 David Lawrence Ramsey <pooka109@gmail.com>
	* global.c: Add new strings for forward/back in the file browser.  New variables
	  nano_forwardfile_msg and nano_backfile_msg.

2009-12-20 Chris Allegretta <chrisa@asty.org>
	* files.c (is_file_writable): remove assert check for f, since it's not
	  initialized at the time.  Fixes Savannah bug #28309, reported by Zoltan Kovacs.

2009-12-20 Brian Szymanski <skibrianski via Savannah>
	* src/files.c (write_file): Check whether stat struct exists, and if not, use the
	  just obtained stat data.  Fixes Ubuntu bug 471568, "reproducible crash in nano on
	  trying to save to a file different than the one specified on the command line".

2009-12-15 Chris Allegretta <chrisa@asty.org>
	* doc/nanorc.sample.in: Remove erroneous 'set suspendenable' as it's actually a
	  key binding (e.g. 'bind M-Z suspendenable all') and not a settable flag.  Fixes
	  Savannah bug #28299 reported by Mike Frysinger.

GNU nano 2.2.1 - 2009.12.12

2009-12-12 Chris Allegretta <chrisa@asty.org>
	* text.c (do_delete), nano.c (do_output): Add check for length of current line
	  before and after adding/deleting text, and do full refresh if it is now
	  a different multiple of COLS.  Also get rid of superfluous do_refresh
	  vars now that we have edit_refresh_needed.

2009-12-09 David Lawrence Ramsey <pooka109@gmail.com>
	* global.c (shortcut_init), browser.c (do_browser): Fix M-W not being bound to
	  research in either main menu or browser.

2009-12-09 Chris Allegretta <chrisa@asty.org>
	* files.c (read_file): Add parameter for whether we should even try to check
	  file writability, as the message is useless when we're inserting into an
	  existing buffer.  Fixes Savannah bug #28219.

2009-12-07 David Lawrence Ramsey <pooka109@gmail.com>
	* global.c (shortcut_init): Many fixes for keybindings code oversights, including
	  restore page up/down and GotoDir in browser.
	* browser.c (do_browser): Fix breaking out of a submenu (e.g. gotodir), it broke
	  out of the browser altogether.
	* doc/nanorc.sample.in: Add missing entries for fortran/ObjC/OCaml entries.

2009-12-03 David Lawrence Ramsey <pooka109@gmail.com>
	* global.c (shortcut_init): Remove help shortcut from help shortcut list. :-)  Tweaked
	  to reorder exit shortcut to end of list to not mess up prev/next shortcut symmetry.

2009-12-03 Eitan Adler <eitanadlerlist@gmail.com>
	* doc/syntax/makefile.nanorc: Fix poor regex for all alpha characters which sometimes
	  leads to error messages, reported by gibboris@gmail.com.

2009-12-02 Chris Allegretta <chrisa@asty.org>
	* text.c (add_undo, do_undo, do_redo): Do not execute cases for SPLIT when
	  DISABLE_WRAPPING is defined.  Fixes Savannah bug #28151 (anon).

2009-12-02 Jordi Mallach <jordi@gnu.org>
	* doc/man/nano.1: Fix escaping of hyphens for the -$ option.

2009-12-01 Kamil Dudka <kdudka@redhat.com>
	* chars.c, file.c: Better handle unused results for things like mbtowc(), new
	  macro IGNORE_CALL_RESULT.

2009-12-01 Chris Allegretta <chrisa@asty.org>
	* global.c (shortcut_init): Remove redundant entries for ^Y/^V reported by
	  Christian Weisgerber.
	* doc/man/nanorc.5: Fix typo in Meta documentation, reported by <gibboris@gmail.com>.

2009-12-01 David Lawrence Ramsey <pooka109@gmail.com>
	* global.c (shortcut_init): Add support for ^P and ^N in the help menu.
	* Update documentation for 2.2 features including sample nanorc file, texinfo
	  file, man pages, UPGRADE file, and update copyright notice for the current year.

GNU nano 2.2.0 - 2009.11.30

2009-11-29 Chris Allegretta <chrisa@asty.org>
	* prompt.c (get_prompt_string): Universally handle help key when it is disabled.
	  Fixes Savannah bug #28117 by David Lawrence Ramsey <pooka109@gmail.com>.
	* chars.c, files.c: Add junk vars to silence the compiler.  Sigh.

2009-11-29 David Lawrence Ramsey <pooka109@gmail.com>
	* Change several *chars to const char, additional cleanups and casts to make compilers happier.
	* global.c: Fix replace and insert file initializations for proper compilation options.
	* nano.c (do_suspend): Update comments to reflect actual code path, bad Chris, and thanks for
	  noticing, Jordi.
	* configure.ac: Fix typos.

2009-11-27 Chris Allegretta <chrisa@asty.org>
	* nano.c (do_suspend): Don't clear the screen but do move the cursor down to the last line
	  first in an effort to not corrupt the screen, which contradicts Pico but is consistent
	  with almost all other text editors.  Fixes Savannah bug #28110 / Debian bug 460510
	  reported by Tim Connors <reportbug@rather.puzzling.org>.
	* doc/syntax/makefile.nanorc: Sample Makefile highlighting based on wiki.linuxhelp.net version.

2009-11-26 Chris Allegretta <chrisa@asty.org>
	* winio.c (edit_scroll): Adjust for long lines when scrolling.
	* rcfile.c (parse_rcfile): initialize size argument to getline(), fixes crash on FreeBSD
	  reported by Eitan Adler <eitanadlerlist@gmail.com>.

2009-11-26 Jordi Mallach <jordi@gnu.org>
	* doc/man/*: Update all man pages to escape unescaped hyphens.

2009-11-24 Chris Allegretta <chrisa@asty.org>
	* move.c (do_page_up, do_page_down): Make these functions work better with soft
	  line wrapping.
	* winio.c (compute_maxrows): Make maxrows calculation more accurate when all lines are > COLS.

2009-11-22 Chris Allegretta <chrisa@asty.org>
	* nano.c (main): Allow edit_refresh_needed to take effect when using --enable-tiny
	  (fixes Savannah bug #28076 reported by David Lawrence Ramsey).

2009-11-22 David Lawrence Ramsey <pooka109@gmail.com>
	* nano.c (move_to_filestruct): Fix bug 71 (cut at top of line recenters).
	* Fix compilation with --enable-tiny.

2009-11-22 Mike Frysinger <vapier@gentoo.org>
	* doc/syntax/gentoo.nanorc: Tweak comment highlighting.

GNU nano 2.1.99pre2 - 2009.11.21

2009-11-21 Chris Allegretta <chrisa@asty.org>
	* rcfile.c: Add unbinding keyword, fixes Savannah bug #22852 reported by frankd.
	* prompt.c (update_statusbar_line): Set statusbar_pww when updating the line.
	  Fixes Savannah bug #24957 reported by Mike Frysinger.

2009-11-19 Chris Allegretta <chrisa@asty.org>
	* nano.c (die_save_file): Try and match the permissions of the file we were
	  editing but only make a minimal effort to do so. Fixes Savannah bug #27273
	  reported by Mike Frysinger.

2009-11-18 Adrian Bunk <bunk via Savannah>
	* nano.c (main): Allow --fill and --nowrap to override nanorc entries
	  and each other on the command line.

2009-11-15 Chris Allegretta <chrisa@asty.org>
	* winio.c (edit_refresh): Always computer maxsize regardless of whether smooth scrolling
	  is enabled.  Fixes Savannah bug #28024 by Mike Frysinger.

GNU nano 2.1.99pre1 - 2009.11.15

2009-11-14 Chris Allegretta <chrisa@asty.org>
	* move.c (do_first_line, do_last_line): Just set edit_refresh_needed
	  rather than get messy.
	* files.c (do_writeout): Only mention file modification if we're
	  writing the same file we originally opened.

2009-11-13 Chris Allegretta <chrisa@asty.org>
	* winio.c: Add new static maxsize for easier calculation with softwrap.
	* nano.c (do_mouse): Fix mouse support not working with soft wrapping.
	  Fixes Savannah bug #27549 reported by Hannes Schueller.

2009-11-11 Chris Allegretta <chrisa@asty.org>
	* winio.c: Large tweaking of cursor and text display based on COLS not COLS - 1,
	  due to finally understanding that display_string wasn't being called properly
	  when softwrap was enabled.  Fixes Savannah bug #27603, "Return key doesn't scroll
	  viewport" reported by Hannes Schueller.
	* Fix size_t formatting issues with -pedantic

2009-11-09 Chris Allegretta <chrisa@asty.org>
	* files.c (read_file): Remove debugging messages from file load.
	  Fixes Savannah bug #27838.

2009-11-07 Chris Allegretta <chrisa@asty.org>
	* nano.h: Add bogus value at begin of flags enumeration because it
	  caused the casesens rcfile option to misbehave, reported by Helmut
	  Jarausch <jarausch@igpm.rwth-aachen.de>.

2009-11-03 Chris Allegretta <chrisa@asty.org>
	* nano.h: Fix comma at end of enumerator list which angers -pedantic.
	* rcfile.c: Add in specific check for UNDOABLE and fix declaration as
	  to what flag it toggles.  Fixes undo mode being able to be called from
	  the rc file, reported by Helmut Jarausch <jarausch@igpm.rwth-aachen.de>.

2009-11-03 Mike Frysinger <vapier@gentoo.org>
	* files.c: Move up is_file_writable() to stop implicit definition complaints.

2009-10-27 Chris Allegretta <chrisa@asty.org>
	* browser.c (browser_init): Set column width to something sane when
	  initializing in a directory with no file entries.  Fixes Savannah
	  bug #24163 found (and initial patch) by Paul Wise.

2009-09-15 Chris Allegretta <chrisa@asty.org>
	* winio.c: Clean up some unused variables from the soft wrapping code.

GNU nano 2.1.11 - 2009.09.14

2009-09-12 Chris Allegretta <chrisa@asty.org>
	* winio.c (edit_update): properly update edittop when using soft wrapping.
	  Fixes lack of centering for searching for off-screen answers, found by
	  Hannes Schueller <mr_creosote@mutantwatch.de>.

2009-09-03 Chris Allegretta <chrisa@asty.org>
	* global.c (shortcut_init): Fix up/down keys not responding in the file browser,
	  discovered by Hannes Schueller <mr_creosote@mutantwatch.de>.
	* move.c (do_up): Fix another scrolling issue with softwrap when the cursor
	  is beyond COLS, discovered by Hannes Schueller <mr_creosote@mutantwatch.de>.

2009-09-02 Chris Allegretta <chrisa@asty.org>
	* Attempt to check file writability and emit a warning on the status bar
	  if nano doesn't think the file can be written to.  Feature originally
	  requested by Damien Joldersma <damien@skullsquad.com> et al.

2009-08-29 Chris Allegretta <chrisa@asty.org>
	* Fix more soft wrapping issues, particularly with scrolling,
	  discovered by Hannes Schueller <mr_creosote@mutantwatch.de>.

2009-08-19 Chris Allegretta <chrisa@asty.org>
	* Fix issue with soft wrapping not displaying the last character of each line,
	  fixed bug discovered by Hannes Schueller <mr_creosote@mutantwatch.de>.

2009-08-17 Mike Frysinger <vapier@gentoo.org>
	* doc/syntax/(gentoo|sh|tcl).nanorc: Fix problems with empty regexes on POSIX.
	  Fixes Savannah bug #27175.

2009-08-17 Chris Allegretta <chrisa@asty.org>
	* Initial soft line wrapping implementation.  Command-line flags -$ or --softwrap.
	* nano.c, text.c: Clean up some fprintf warnings in debug mode due to printing
	  a size_t without using the zd specifier.

2009-08-13 Chris Allegretta <chrisa@asty.org>
	* New global flag implementation courtesy of Adam Wysocki <gophi@arcabit.pl>, allows
	  previous undo flag to be implemented consistent with other flags.

GNU nano 2.1.10 - 2009.07.28

2009-07-27 Chris Allegretta <chrisa@asty.org>
	* text.c (undo_cut, redo_cut): Don't actually try and undo/redo an empty cut, i.e. the magicline.
	  Fixes crash on cutting last line discovered by Eitan Adler <eitanadlerlist@gmail.com>.

2009-07-11 Chris Allegretta <chrisa@asty.org>
	* nano-regress: Small tweaks.
	* Change undo code to off unless enabled via a command line option (-u/--undo).
	  Until this code stabilizes this is the only responsible way to treat it.

2009-03-08 Chris Allegretta <chrisa@asty.org>
	* TODO: Break out some targets for various features into 2.2
	  and 2.4 series for things which are feasible.

2009-02-28 Chris Allegretta <chrisa@asty.org>
	* configure.ac: Add check for whether _XOPEN_SOURCE_EXTENDED is needed for
	  curses to work w/color.  Fixes compilation on HP-UX with older GCC,
	  reported by jay.krell@cornell.edu.

2009-02-23 Eitan Adler <eitanadlerlist@gmail.com>
	* doc/man/Makefile.am: Fix make variable substitution to be more portable.

2009-02-23 Chris Allegretta <chrisa@asty.org>
	* rcfile.c (parse_keybinding): Define a var before tryung to use it.  Whoops!
	* fix some redefinitions causing compiler warnings, from Eitan Adler.  Other
	  (hopefully) fixes for uncasted malloc()s, reported by the same.
	* doc/man/fr/Makefile.am: Add groff check fix to fr files.

GNU nano 2.1.9 - 2009.02.16

2009-02-16 Chris Allegretta <chrisa@asty.org>
	* Add new argument to reset_multis for force redraws without attempting to
	  guess whether we need to, for functions that we don't have good info about
	  the text state.  New utility function color.c:reset_multis_for_id().

2009-02-15 Chris Allegretta <chrisa@asty.org>
	* configure.ac, doc/man/Makefile.am: Add check for HTML output support in GNU
	  groff.  Fixes Savannah bug #24461: build traps on groff.  Also, add installation
	  of html-ized man pages to $datadir/nano/man-html, since we should probably
	  install files we went to all the trouble of generating.

2009-02-14 Chris Allegretta <chrisa@asty.org>
	* nano.c (precalc_multicolorinfo): Add debugging so we have a better clue if further
	  issues arise.  Also start at the beginning of later lines when trying to match the
	  end of a multi-line regex.  Fixes more overly aggressive highlighting found by
	  Mike Frysinger.  Finally, advance to the match end for performance.

2009-02-11 Chris Allegretta <chrisa@asty.org>
	* nanorc.c (parse_include): Do call real_dir_from_tilde() on included
	  files in .nanorc, but still avoiding bug #25297.  Fixes ~ and ~user
	  specifications for nanorc include files, as reported by Eitan Adler.

2009-02-09 Chris Allegretta <chrisa@asty.org>
	* New option -q, --quiet, rcfile option "quiet" implemented.  Skips printing
	  errors about the rcfile and asking user to press enter.  Also, nano should
	  now only ask for one enter press when there is an error when not using -q.
	  Based on discussion between Eitan Adler and Mike Frysinger.
	* rcfile.c (parse_keybinding): Significant cleanups and fixes for
	  detecting and reporting errors in key bindings code.

2009-02-08 Chris Allegretta <chrisa@asty.org>
	* Make reset_multidata reset more lines, since contrary to previous problems the
	  syntax highlting is now too *un*ambitious, causing display glitches when
	  deleting a regex boundary.
	* Add more multidata initliazers for new buffers and 'magic lines'.  Fixes segfaults
	  with syntax highlighting in new buffers, initially reported by Mike Frysinger.

GNU nano 2.1.8 - 2009.02.07

2009-02-06 Chris Allegretta <chrisa@asty.org>
	* rcfile.c (parse_include): Abort on being unable to open an included rcfile.
	  Fixes Savannah bug #25490, nanorc: "include"ing a file which doesn't exist
	  causes nano to segfault.

2009-02-05 Chris Allegretta <chrisa@asty.org>
	* More color syntax speedups: Determine in reset_multis() whether we really need to call
	  edit_refresh().  Additional global var edit_refresh_needed() to hopefully reduce
	  repeated calls to the function.  New helper funcs reset_multis_before() and
	  reset_multis_after().

2009-02-02 Chris Allegretta <chrisa@asty.org>
	* New color precalculation code for mult-line regexes.  New function precalc_multicolorinfo(),
	  new structure multidata for keeping track of where regexes start/stop.  More
	  performance improvements forthcoming.

2009-01-29 Chris Allegretta <chrisa@asty.org>
	* nano.c (move_to_filestruct): Properly initialize new fileage for multiswatching, sigh.
	  Fix cut segfaults discovered by Mike Frysinger.

2009-01-29 Chris Allegretta <chrisa@asty.org>
	* nano.c (main): Add support for nano acting like a pager when invoked with - as first
	  file argument.

2009-01-28 Davide Pesavento <davidepesa@gmail.com>
	* doc/syntax/gentoo.nanorc: Updates from David and Mike Frysinger.

2009-01-25 Chris Allegretta <chrisa@asty.org>
	* files.c (open_file), nanorc.c (parse_include): Don't get_full_path on included
	  rc files, due to it potentially impacting the ability to read files in nano's
	  cwd().  Fixes Savnanah bug #25297 reported by Mike Frysinger.

2009-01-24 Chris Allegretta <chrisa@asty.org>
	* First pass at some caching of caching color info.  Right now it's only for
	  multi-line regexes but this may not be enough to increase performance.
	* Add interruptability to search functions.  New functions enable_nodelay and
	  disable_nodelay and changes to the routines to handle checking for pending
	  searches.  Fixes Savnnah bug #24946: Need interrrupt for search.

2009-01-19 Chris Allegretta <chrisa@asty.org>
	* Change function definitions to shorts instead of (void *)s.  New mapping function
	  iso_me_harder_funcmap().  Fixes compilation complaints with -pedantic,
	  reported by Eitan Adler <eitanadlerlist@gmail.com>.

GNU nano 2.1.7 - 2008.11.10

2008-10-20 Chris Allegretta <chrisa@asty.org>
	* files.c (do_writeout): Add check for file modification when saving
	  the file so the user can at least know they may be blowing away changes.

2008-10-14 Chris Allegretta <chrisa@asty.org>
	* nanorc.5: Fix redo man page entry and update explanation, reported by
	  Eitan Adler <eitanadlerlist@gmail.com>.
	* global.c (shortcut_init), search.c (search_init): Fix add_to_sclist for ^W^T so
	  invalid messages will display properly.  Fixes Savannah bug #24507.

2008-10-13 Chris Allegretta <chrisa@asty.org>
	* Remove CUTTOEND as an undo type as it's unneeded, fix u->to_end logic in undo struct.
	* undo.c (update_undo): Don't free cutbuffer if NULL, fixes Savannah bug #24499.

2008-10-04 Chris Allegretta <chrisa@asty.org>
	* cut.c (add_undo): Save last cut undo information so it can be used for
	  next uncut, fixes Savannah bug #24183.

GNU nano 2.1.6 - 2008.10.03

2008-10-03 Pascal Gentil <pascal.gentil@univ-rennes1.fr>
	* fortran.nanorc: Sample Fortran syntax highlighting file.

2008-09-30 Dirkjan Ochtman <dirkjan@ochtman.nl>
	* python.nanorc: Small Python syntax update.

2008-09-30 <bluestorm_dylc@hotmail.com>
	* ocaml.nanorc: Sample OCaml syntax highlighting file.

2008-09-30 Dave Geering <dgeering@toshiba-tap.com>
	* objc.nanorc: Sample Objective-C syntax hightlighting file.

2008-09-30 Chris Allegretta <chrisa@asty.org>
	* configure.ac: Change extra, multibuffer, color and rcfile configure options
	  to default to enabled --enable-tiny will now disable these options as well.
	* python.nanorc, ruby.nanorc: Add header lines for Python and Ruby as well.

2008-09-21 Chris Allegretta <chrisa@asty.org>
	* rcfile.c, color.c, nano.h: Add new capability for matching a syntax type by
	  the "header" (1st line) of a file being edited.  Based on Savannah bug #24197
	  and initial proof of concept by Dave Geering <dgeering@toshiba-tap.com>.

2008-09-16 Chris Allegretta <chrisa@asty.org>
	* text.c: Add support for undoing a text uncut.  Split out the undo and redo
	  of a text cut in order to avoid code duplication.

2008-09-06 Chris Allegretta <chrisa@asty.org>
	* nano.c: Do call disable_signals at startup regardless, since under Cygwin
	  we can't generate ^C without it.

GNU nano 2.1.5 - 2008.08.30

2008-08-29 Chris Allegretta <chrisa@asty.org>
	* configure.ac, color.c, rcfile.c, utils.c: 1st attempt at supporting systems
	  which don't support GNU-style word boundaries.  New function fixbounds() to
	  translate from GNU-style to BSD-style, autoconf option GNU_WORDBOUNDS.
	* nano-regress: New perl script to check for some of the more obvious issues
	  with compilation issues with certain configure options.
	* global.c, help.c, browser.c, files.c, proto.h: Fix several compilation and
	  programmatic issues with --disable-help, especially that do-writeout was
	  treating ^G the same as ^M.

2008-08-28 Chris Allegretta <chrisa@asty.org>
	* configure.ac, rcfile.c: Add support for an alternate rcfilename at configure time.  Maybe this
	  should become a command line option some day, but I don't see the need currently.  Start of
	  fix for Savannah bug #24128: Add nanorc support to win32 platform.

2008-08-21 Chris Allegretta <chrisa@asty.org>
	* text.c: Change error messages where we may possibly get into a bad state and urge the
	  user to save when this happens.  Originally by Benno Schulenberg <bensberg@justemail.net>
	* text.c (do_enter): Fix issue when compiled with --enable-debug, fixes Savannah bug #24092.

2008-08-08 Magnus Granberg <zorry@ume.nu> / Adam Conrad <?>
	* files.c (write_file): Add needed flags to open() calls when writing out files.
	  Fixes Savannah bug #23827: Compilation fails with -D_FORTIFY_SOURCE=2.

2008-08-08 Chris Allegretta <chrisa@asty.org>
	* files.c (write_file): Check the exit code of fclose(), since in certain
	  out-of-space conditions the OS will happily report successful fwrite()s
	  until you try and close the file.  Fixes Savannah bug #24000: no free
	  space on partition - nano claims successful write - file is empty.

GNU nano 2.1.4 - 2008.08.09

2008-08-08 Chris Allegretta <chrisa@asty.org>
	* files.c (write_file): Do not go on and attempt to write the main file if writing
	  the backup file failed, related to Savannah bug #24000.
	* text.c (do_redo): Fix improperly restoring the text when redoing a line split.
	* text.c (add_undo): Fix check for multi-line cut check skips adding other new legit events.

2008-07-23 Chris Allegretta <chrisa@asty.org>
	* text.c: Reset openfile-> to OTHER after an undo or redo so we don't
	  mistakenly think this is an update when it's really an add.  Also
	  fix an extra ; after an if statement which makes nano try to free
	  a struct which may be NULL.

GNU nano 2.1.3 - 2008.08.04

2008-07-23 Chris Allegretta <chrisa@asty.org>
	* configure.ac: Add ncursesw dir to include path if lib is detected.

2008-07-11 Mike Frysinger <vapier@gentoo.org>
	* doc/nanorc.sample.in: Include the updated files in the default sample nanorc.

2008-07-11 Fabian Groffen <grobian@gentoo.org>
	* nano.c: Don't include langinfo.h if not using ENABLE_UTF8
	  (Savannah patch #6565).

2008-07-11 Mitsuya Shibata <mty.shibata@gmail.com>
	* text.c: Fix crashing in help menu when using certain locales
	  (Savannah bug #23751).

2008-07-09 Chris Allegretta <chrisa@asty.org>
	* nano.c/nano.h/global.c/text.c: New generalized undo code, currently
	  just works for adding and deleting text and splitting and unsplitting lines.

2008-06-29 Chris Allegretta <chrisa@asty.org>
	* global.c: Fix for not having a search history when --disable-justify is used
	  (Savannah bug #23733).

GNU nano 2.1.2 - 2008.06.24

2008-06-24 Chris Allegretta <chrisa@asty.org>
	* rcfile.c: Added function check_bad_binding() to look for sequences which
	  shouldn't be bound, per Savannah bug #22674.

2008-05-31 Chris Allegretta <chrisa@asty.org>
	* prompt.c,search.c,global.c: Tentative fix for bug #23144: using arrow
	  keys in search buffer affects main window (by Mike Frysinger).

2008-05-31 Chris Allegretta <chrisa@asty.org>
	* global.c: Fix for Savannah bug #23442: left/right arrow keys
	  do not work with --enable-tiny (by Mike Frysinger).

2008-05-31 Chris Allegretta <chrisa@asty.org>
	* files.c,proto.h,text.c: Fix for conflicts with AIX curses
	  variables, from William Jojo <jojowil@hvcc.edu>.

2008-05-31 Chris Allegretta <chrisa@asty.org>
	* global.c: Fix for compile error when --disable-speller is used
	  (Savannah bug #23227 by Mike Frysinger).

2008-05-31 Chris Allegretta <chrisa@asty.org>
	* Fix for seg fault when window size is too small,
	  by Andreas Amann <andreas.amann@tyndall.ie>.

GNU nano 2.1.1 - 2008.04.01

2008-05-31 Chris Allegretta <chrisa@asty.org>
	* Added the following contributed files, by owner:
	  Donnie Berkholz <dberkholz@gentoo.org>
	    * Sample awk.nanorc
	  Simon Rupf <simon.rupf@int-ag.ch>
	    * Sample css.nanorc
	  Josef 'Jupp' Schugt <jupp@rubyforge.org>
	    * Sample ruby.nanorc

2008-03-31 Chris Allegretta <chrisa@asty.org>
	* global.c: Fix for issues compiling with --enable-tiny and
	  --enable-multibuffer, as reported by Mike Frysinger.
	* files.c: Fix the fact that the insert file prompt text did not
	  properly appears in tiny mode.

2008-03-19  Benno Schulenberg <bensberg@justemail.net>
	* help.c, nano.c: Fix toggle help not being translated, fix allocation
	  issue.

2008-03-19  Chris Allegretta <chrisa@asty.org>
	* global.c: Fix bracket matching sequence to be M-] not M-[, as reported
	  Nick Warne <nick@ukfsn.org>.
	* doc/syntax/Makefile.am: Actually include new syntaxes from Mike, etc.
	* debian.nanorc: New debian sources.list config since we're including
	  gentoo, adapted from Milian Wolff <mail@milianw.de>.

2008-03-18  Mike Frysinger <vapier@gentoo.org>
	* winio.c: Remove unneeded variable in parse_kbinput().
	* rcfile.c: Relocate check_vitals_mapped() function to just above where
	  it actually gets used and declare it "static void" in the process.
	* global.c: Only declare nano_justify_msg when justify support is enabled.
	* php.nanorc: Php syntax highlighting config.
	* tcl.nanorc: Tcl syntax highlighting config.
	* gentoo.nanorc: Gentoo syntax highlighting config.

2008-03-17  Benno Schulenberg <bensberg@justemail.net>
	* global.c: Fix incorrect first line jump messsage, fix
	  more comments to assist translators.
	* winio.c: Fix shortcut labels not being translated.

2008-03-17  Mike Frysinger <vapier@gentoo.org>
	* */.gitignore: Git ignore files for those running a local git
	  against SVN.

2008-03-16  Benno Schulenberg <bensberg@justemail.net>
	* src/help.c, src/global: Fix help strings no longer being
	  translated properly.
	* src/global.c, doc/man/nanorc.5: Fix typos and poorly worded
	  lines in the source and man pages.

2008-03-04  Chris Allegretta <chrisa@asty.org>
	* everything: New shortcut backend.  New structs subnfunc
	for menu functions and toggles and sc for shortcut keys, old
	'shortcut' and 'toggles' structs are gone.  The current implementation
	has a bunch of broken stuff (some of which is documented in BUGS).
	Updated nanorc.5 with some mostly complete documentation on configuring.

2007-12-20  David Lawrence Ramsey  <pooka109@gmail.com>
	* AUTHORS, doc/faq.html: Update maintenance information.
	* NEWS: Resync with NEWS from the 2.0 branch.

2007-12-18  David Lawrence Ramsey  <pooka109@gmail.com>
	* nano.c (print_opt_full): Use strlenpt() instead of strlen(),
	so that tabs are placed properly when displaying translated
	strings in UTF-8, as found by Jean-Philippe Guérard.

2007-12-17  David Lawrence Ramsey  <pooka109@gmail.com>
	* configure.ac, doc/texinfo/nano.texi, nano.c (terminal_init):
	Change slang curses emulation support to turn off the same
	options as --enable-tiny, as it's hopelessly broken otherwise.
	* nano.c (disable_signals, main): Simplify terminal handling by
	using raw mode instead of cbreak mode.
	* text.c (execute_command): Call terminal_init() instead of just
	disable_signals() after executing the command, as the command
	may have changed the terminal settings.
	* ChangeLog.pre-2.1: Add missing attribution.
	* NEWS: Resync with NEWS from the 2.0 branch.

2007-12-10  David Lawrence Ramsey  <pooka109@gmail.com>
	* nano.c (main): Exit if initscr() fails.

2007-12-09  David Lawrence Ramsey  <pooka109@gmail.com>
	* faq.html: Add minor punctuation and wording fixes, and update
	various sections to account for Alpine.

2007-12-08  David Lawrence Ramsey  <pooka109@gmail.com>
	* prompt.c (do_statusbar_mouse, reset_statusbar_cursor,
	update_statusbar_line, need_statusbar_horizontal_update): Fix
	minor display and cursor placement problems when scrolling
	between pages at the statusbar prompt.

2007-12-07  David Lawrence Ramsey  <pooka109@gmail.com>
	* winio.c (get_mouseinput): Fix longstanding problem where mouse
	clicks on the statusbar prompt text wouldn't be recognized
	unless the NO_HELP flag was turned off.
	* doc/man/rnano.1, doc/man/fr/rnano.1: Update copyright notices,
	as Thijs Kinkhorst's copyrights have now been assigned to the
	Free Software Foundation.

2007-12-04  David Lawrence Ramsey  <pooka109@gmail.com>
	* nano.c (main), prompt.c (get_prompt_string), winio.c
	(do_replace_highlight): Per OKATA Akio's patch, with minor
	tweaks by me, add wnoutrefresh() calls after
	reset_(statusbar_)?cursor() calls, to ensure that the cursor is
	placed properly when using NetBSD curses.
	* nano.c (disable_mouse_support, enable_mouse_support): When
	toggling mouse support on or off, save and restore the mouse
	click interval.

2007-11-29  Jean-Philippe Guérard <jean-philippe.guerard@tigreraye.org>
	* doc/man/fr/*.1, doc/man/fr/nanorc.5: Fix copyright notices.
	The copyrights are disclaimed on these translations, but the
	copyrights of the untranslated works also apply.

2007-11-28  David Lawrence Ramsey  <pooka109@gmail.com>
	* doc/man/fr/nanorc.5: Remove trailing whitespace.

2007-11-17  David Lawrence Ramsey  <pooka109@gmail.com>
	* files.c (read_file): Improve autodetection of DOS and Mac
	format files to not trigger on carriage returns in the middle of
	files, as found by Kjell Braden.

2007-11-06  David Lawrence Ramsey  <pooka109@gmail.com>
	* doc/man/rnano.1, doc/man/fr/rnano.1: Update copyright notices,
	as Jordi Mallach's copyrights have now been assigned to the Free
	Software Foundation.

2007-11-05  David Lawrence Ramsey  <pooka109@gmail.com>
	* search.c (do_gotolinecolumn): Use a clearer error message if
	we enter an invalid line or column number, per Mike Melanson's
	suggestion.

2007-10-11  David Lawrence Ramsey  <pooka109@gmail.com>
	* doc/man/nano.1, doc/man/fr/nano.1, doc/texinfo/nano.texi,
	src/*.c, src/*.h: Update copyright notices, as Chris
	Allegretta's copyrights have now been assigned to the Free
	Software Foundation.
	* doc/man/nanorc.5, doc/man/fr/nanorc.5: Make copyright notices
	for these files consistent in style.
	* files.c (cwd_tab_completion): Remove unneeded assert.
	* files.c (username_tab_completion, cwd_tab_completion): Rename
	variable buflen to buf_len, for consistency.
	* files.c (input_tab): Disable completion of usernames,
	directories, and filenames if the cursor isn't at the end of the
	line, as it can lead to odd behavior (e.g. adding a copy of the
	entire match to the middle of the line instead of just the
	uncompleted part of the match).

2007-10-05  David Lawrence Ramsey  <pooka109@gmail.com>
	* src/*.c, src/*.h: Update copyright notices, as my copyrights
	have now been assigned to the Free Software Foundation.

2007-09-16  David Lawrence Ramsey  <pooka109@gmail.com>
	* winio.c (edit_scroll): Fix problem where the screen wouldn't
	be updated properly if you paged up with the first line of the
	file onscreen and the mark on.

2007-08-26  David Lawrence Ramsey  <pooka109@gmail.com>
	* doc/faq.html: Update links to the Free Translation Project.

2007-08-23  Jean-Philippe Guérard <jean-philippe.guerard@tigreraye.org>
	* doc/man/fr/*.1, doc/man/fr/nanorc.5: Add translation of new
	licensing terms.

2007-08-23  David Lawrence Ramsey  <pooka109@gmail.com>
	* doc/man/fr/*.1, doc/man/fr/nanorc.5: Delete translation of
	old licensing terms, until it can be updated.

2007-08-22  David Lawrence Ramsey  <pooka109@gmail.com>
	* COPYING.DOC: Add a copy of the GNU FDL version 1.2.
	* Makefile.am: Add COPYING.DOC to EXTRA_DIST.
	* doc/man/*.1, doc/man/nanorc.5, doc/man/fr/*.1,
	doc/man/fr/nanorc.5, doc/texinfo/nano.texi: Relicense to the GNU
	GPL version 3 or later/the GNU FDL version 1.2 or later with no
	Invariant Sections, Front-Cover Texts, or Back-Cover Texts.

2007-08-21  David Lawrence Ramsey  <pooka109@gmail.com>
	* doc/man/rnano.1, doc/man/fr/rnano.1: Add missing copyright
	notice from nano-tiny.1, which rnano.1 is based on.
	* doc/man/fr/nano.1, doc/man/fr/nanorc.5, doc/man/fr/rnano.1:
	Make all copyright notices consistent.

2007-08-16  David Lawrence Ramsey  <pooka109@gmail.com>
	* files.c (do_insertfile): Properly handle more cases of
	inserting a file with the mark on.
	* nano.c (copy_from_file): Properly handle more cases of
	uncutting text with the mark on.

2007-08-15  David Lawrence Ramsey  <pooka109@gmail.com>
	* Makefile.am: Remove erroneous backslash after
	ChangeLog.pre-2.1 in EXTRA_DIST, so that "make dist" works
	again.
	* files.c (do_insertfile): Make sure the mark is always properly
	positioned after inserting a file with the mark on.
	* nano.c (copy_from_file): Make sure the mark is always properly
	positioned after uncutting multiple lines with the mark on.

2007-08-11  David Lawrence Ramsey  <pooka109@gmail.com>
	* COPYING: Add a copy of the GNU GPL version 3.
	* configure.ac, *.c, *.h: Relicense to the GNU GPL version 3 or
	later.

2007-08-10  David Lawrence Ramsey  <pooka109@gmail.com>
	* files.c (username_tab_completion, cwd_tab_completion,
	input_tab): Update copyright notice to account for
	modifications.
	* utils.c (ngetdelim): Simplify.
	* utils.c (ngetline, ngetdelim): Update copyright notice to
	account for modifications.

2007-08-07  David Lawrence Ramsey  <pooka109@gmail.com>
	* nano.c (copy_from_file): Fix potential segfault, found by Paul
	Goins, after uncutting one line of text with the mark on by
	properly preserving the beginning of the mark.
	* nano.c (copy_from_file): Make sure the mark is always properly
	positioned after uncutting one line of text with the mark on.

2007-08-01  David Lawrence Ramsey  <pooka109@gmail.com>
	* nano.c (version): Display copyright notices.

2007-07-31  David Lawrence Ramsey  <pooka109@gmail.com>
	* configure.ac: Update copyright notice to account for
	modifications.

2007-07-29  David Lawrence Ramsey  <pooka109@gmail.com>
	* doc/faq.html: Update RPM links for nano 2.0.x.

2007-07-11  David Lawrence Ramsey  <pooka109@gmail.com>
	* files.c (copy_file): Assert that inn and out don't both point
	to the same file.

2007-07-10  David Lawrence Ramsey  <pooka109@gmail.com>
	* chars.c (nstrcasestr, mbstrcasestr, revstrstr, revstrcasestr,
	mbrevstrcasestr): Simplify and rewrite to use the strncasecmp()
	equivalents.

2007-07-09  David Lawrence Ramsey  <pooka109@gmail.com>
	* chars.c (nstrcasestr, mbstrcasestr, revstrstr, revstrcasestr,
	mbrevstrcasestr): Fix typo that broke the check for needle's
	being blank.
	* chars.c (mbstrncasecmp, mbstrnlen, mbstrpbrk,
	has_blank_mbchars): Simplify by using for loops instead of while
	loops where possible, to match the single-byte versions of these
	functions.
	* search.c (do_replace_loop): Fix problem where replacing e.g.
	single-byte characters with multibyte ones could result in
	openfile->totsize's being miscalculated.

2007-07-06  David Lawrence Ramsey  <pooka109@gmail.com>
	* chars.c (nstrcasestr, mbstrcasestr, revstrstr, revstrcasestr,
	mbrevstrcasestr): Return char* instead of const char*.

2007-07-02  David Lawrence Ramsey  <pooka109@gmail.com>
	* chars.c (nstrcasestr, mbstrcasestr, revstrstr, revstrcasestr,
	mbrevstrcasestr): For efficiency, return haystack/rev_start
	immediately if needle is blank.

2007-07-01  David Lawrence Ramsey  <pooka109@gmail.com>
	* chars.c (nstrncasecmp, mbstrncasecmp): For efficiency, return
	zero immediately if s1 and s2 point to the same string.

2007-06-30  David Lawrence Ramsey  <pooka109@gmail.com>
	* prompt.c (do_yesno_prompt): Remove redundant check for
	NO_HELP's being FALSE.

2007-06-28  David Lawrence Ramsey  <pooka109@gmail.com>
	* browser.c (do_browser), nano.c (do_mouse), prompt.c
	(do_statusbar_mouse, do_yesno_prompt): Further simplify
	processing of mouse events by consolidating if clauses.
	* winio.c (do_mouseinput): Return unconditionally if we get a
	mouse event that we don't deal with, instead of inside an else
	clause.

2007-05-29  David Lawrence Ramsey  <pooka109@gmail.com>
	* winio.c (do_mouseinput): Deal with clicks of the first mouse
	button again.  Oddly, ncurses built without --enable-ext-mouse
	needs this, but ncurses built with --enable-ext-mouse doesn't.

2007-05-25  David Lawrence Ramsey  <pooka109@gmail.com>
	* configure.ac, nano.c (main): Replace the current hackish check
	for a UTF-8 locale with a proper call to nl_langinfo().
	* winio.c (get_key_buffer): Fix inaccurate comments.

2007-05-22  David Lawrence Ramsey  <pooka109@gmail.com>
	* browser.c (do_browser), nano.c (do_mouse), prompt.c
	(do_statusbar_mouse, do_yesno_prompt), winio.c (do_mouseinput):
	Simplify processing of mouse events.  Instead of calling
	wenclose() to get the window a mouse event took place in and
	manually adjusting the returned coordinates to be relative to
	that window the mouse event took place in, call wmouse_trafo(),
	which does both.

2007-05-20  David Lawrence Ramsey  <pooka109@gmail.com>
	* browser.c (do_browser), nano.c (do_mouse), prompt.c
	(do_statusbar_mouse, do_yesno_prompt), winio.c (do_mouseinput):
	Fix processing of mouse events so that those we don't handle are
	ignored instead of being erroneously passed through.
	* winio.c (do_mouseinput): Simplify handling of mouse events
	involving the first mouse button by only dealing with releases.
	* winio.c (do_mouseinput): Improve mouse wheel support to only
	move the cursor if we're in the edit window or on the statusbar.

2007-05-15  David Lawrence Ramsey  <pooka109@gmail.com>
	* winio.c (do_mouseinput): Add mouse wheel support, per Helmut
	Jarausch's suggestion.  Now, if mouse support is enabled, and
	nano is using a version of ncurses compiled with the
	--enable-ext-mouse option, rolling the mouse wheel up or down
	will move the cursor three lines up or down.

2007-04-23  David Lawrence Ramsey  <pooka109@gmail.com>
	* TODO: Add entries for fixing limitations with pasting text and
	handling bad/incomplete UTF-8 sequences.

2007-04-22  David Lawrence Ramsey  <pooka109@gmail.com>
	* text.c (backup_lines): Avoid a segfault when the mark begins
	and ends on the line after the last line of the paragraph.

2007-04-21  David Lawrence Ramsey  <pooka109@gmail.com>
	* files.c (do_writeout): If we're in restricted mode, we're not
	allowed to write selections to files, so don't display the
	"Write Selection to File" prompt.
	* files.c (do_writeout): Simplify.

2007-04-19  David Lawrence Ramsey  <pooka109@gmail.com>
	* files.c (tail): Remove unneeded if statement.

2007-04-18  John M. Gabriele  <jmg3000@gmail.com>
	* doc/faq.html: Add a new section 4.14 (with minor tweaks by
	David Lawrence Ramsey) to explain how autoindent affects pasted
	text.

2007-04-18  David Lawrence Ramsey  <pooka109@gmail.com>
	* files.c (open_file): Open files using their full paths
	whenever possible, so that ~user/file.txt and "~user/file.txt"
	are treated the same way if ~user is a user's home directory.
	* files.c (real_dir_from_tilde): Simplify.
	* files.c (do_writeout): Properly display the warning in all
	cases if we try to save (a) an existing file under a different
	name, or (b) a file with no name under an existing file's name.
	* files.c (do_writeout): Rename variable different_name to
	do_warning, for clarity.
	* rcfile.c (parse_include): Open files using their full paths
	whenever possible, so that ~user/file.txt and "~user/file.txt"
	are treated the same way if ~user is a user's home directory.
	* rcfile.c (parse_include): Properly check for the included
	file's being a directory, a character file, or a block file.
	* rcfile.c (parse_include): For consistency, display the
	filename as the user entered it if we can't read the specified
	file.
	* winio.c (parse_kbinput): Interpret Cancel and Shift-Cancel.
	* winio.c (get_escape_seq_kbinput): Add missing comments.

2007-04-17  David Lawrence Ramsey  <pooka109@gmail.com>
	* files.c (real_dir_from_tilde): Fix long-standing problem,
	found by Justin Fletcher, where directory names that began with
	"~", but that weren't users' home directories, could be
	erroneously treated as users' home directories (e.g. "~d/" would
	be treated as "~daemon/").
	* files.c (input_tab): Don't bother checking if num_matches is
	less than zero, as it's a size_t and hence unsigned.

2007-04-16  David Lawrence Ramsey  <pooka109@gmail.com>
	* files.c (real_dir_from_tilde): Fix segfault, found by Justin
	Fletcher, when dealing with directory names that begin with "~",
	but that aren't users' home directories.

2007-04-11  Mike Frysinger  <vapier@gentoo.org>
	* doc/syntax/asm.nanorc, doc/syntax/c.nanorc,
	doc/syntax/sh.nanorc: Copy the regex that highlights trailing
	whitespace (with minor tweaks by David Lawrence Ramsey) from
	doc/syntax/java.nanorc to these files, as it's also useful in
	them.

2007-04-04  David Lawrence Ramsey  <pooka109@gmail.com>
	* AUTHORS, faq.html: Update email address.
	* winio.c (get_escape_seq_kbinput): Add escape sequences for
	Terminal.

2007-02-01  Benno Schulenberg  <bensberg@justemail.net>
	* global.c (shortcut_init): Reword the movement shortcut
	descriptions so that they use "Go to" instead of "Move to",
	since not all of them move the cursor in the same way.
	* global.c (shortcut_init): Reword the paragraph movement
	shortcut descriptions to more accurately describe how they work.
	* nano.c (usage): Reword the description of the -S/--smooth
	command line option in order to differentiate it from the
	associated toggle description.

2007-01-29  David Lawrence Ramsey  <pooka109@cox.net>
	* ChangeLog: Rework the 2.1 branch's changelog to be more
	readable, per Jordi Mallach's suggestion.
	* ChangeLog.pre-2.1: Move the 2.0 branch's changelog here, per
	Jordi Mallach's suggestion.
	* Makefile.am: Add ChangeLog.pre-2.1 to EXTRA_DIST.
	* src/help.c (help_init): Add a missing space to the "Execute
	Command" help text.
