diff --git a/ChangeLog b/ChangeLog
index b1b51aba114618e02902cf22877fb413d9b93b98..1d922150c7a3c2845c9b33dde370a8722418b911 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,85 @@
+Changes between v2.9.3 and v2.9.4:
+----------------------------------
+
+Benno Schulenberg (65):
+      bindings: make a key defined as string work also in browser and viewer
+      bindings: rename the bindable function 'gototext' to 'flipgoto'
+      bindings: revert the ^/ changes, as ^/ is not always Go-To-Line
+      bindings: show ^/ instead of ^_ for Go-To-Line
+      build: fix compilation when configured with --enable-tiny
+      bump version numbers and add a news item for the 2.9.4 release
+      docs: mention that a key can be bound to a string
+      docs: note also in the Info manual that text can be selected with Shift
+      editing: when --smooth is used, make <Enter>-at-bottom scroll one row
+      general: detect in a better way whether we're running on a Linux console
+      gnulib: update to its current upstream state
+      goto: avoid a segfault, by initializing 'answer' when it is NULL
+      help: mention that some keys work on a region when the mark is on
+      help: tweak the descriptions of ^X and ^R
+      input: handle the implant() function separately also for the prompt
+      input: handle the implant() function separately, as it is special
+      memory: avoid a leak when toggling from Search to Goto
+      memory: squeal when there is something wrong, instead of stumbling on
+      new feature: allow binding a key to a string (in a nanorc file)
+      prompt: disallow pasting when in restricted mode
+      rcfile: allow a syntax name to be unquoted
+      search: clear the existing answer when starting a new search
+      search: get rid of some unneeded recursion when just toggling things
+      selecting: cancel the softmark upon any attempt to move the cursor
+      small addition: allow customizing the color of an error message
+      syntax: color also ^/ in nano's help texts and in nanorc files
+      syntaxes: remove quotes from each syntax name, and color it differently
+      syntax: nanorc: color also bindings to a string as valid
+      tweaks: adjust comments and indentation after the previous change
+      tweaks: adjust two comments, move two declarations, rewrap three lines
+      tweaks: appease valgrind concerning syscalls with uninitialized values
+      tweaks: condense a comment and elide an 'if'
+      tweaks: correct a typo in NEWS
+      tweaks: correct a typo that broke binding a key to a string
+      tweaks: do not needlessly renumber the lines in the buffer
+      tweaks: don't call strcmp() to determine whether a string is empty
+      tweaks: drop an assert, add a warning, and change a 'for' to a 'while'
+      tweaks: drop some debugging stuff, and adjust what remains of it
+      tweaks: elide another variable, to call a function less often
+      tweaks: elide an unneeded variable
+      tweaks: elide an unneeded variable
+      tweaks: elide an unneeded variable
+      tweaks: elide an unused variable and parameter
+      tweaks: elide two unneeded booleans
+      tweaks: exclude an unlikely error message from the tiny version
+      tweaks: exclude an unlikely warning from the tiny version
+      tweaks: fix a copy-and-paste error
+      tweaks: make the fsfromline() call only for the undo types that need it
+      tweaks: plug a memory leak when using Verbatim Input at a prompt
+      tweaks: refactor the implanting of a key expansion
+      tweaks: remove another superfluous check
+      tweaks: remove a superfluous check
+      tweaks: remove two deprecated options and six rebindable function names
+      tweaks: remove two superfluous checks, and restrict two others
+      tweaks: rename a parameter and a variable, to be more fitting
+      tweaks: rename a variable to be more distinct and greppable
+      tweaks: rename two variables, to be more meaningful
+      tweaks: reshuffle some code, to be slightly less ugly
+      tweaks: reshuffle some of the search-and-replace cleanup calls
+      tweaks: reshuffle the undo types into mostly the same order everywhere
+      tweaks: shorten the name of two record elements
+      tweaks: slightly rewrap the FAQ's table of contents
+      tweaks: transform a 'do' to a 'while', and reshuffle a comment
+      tweaks: unabbreviate two variable names
+      undo: when redoing, don't try to find a line number that might not exist
+
+Brand Huntsman (1):
+      color: remove unneeded bright comparision to prevent duplicate pairs
+
+David Lawrence Ramsey (3):
+      docs: mention that errorcolor does have default colors
+      input: don't stop prepending when the user adds text via a shortcut
+      tweaks: fix typo in rebindable function name
+
+Tom Levy (1):
+      syntax: go: highlight also floats with leading zeroes as valid
+
+
 Changes between v2.9.2 and v2.9.3:
 ----------------------------------
 
diff --git a/IMPROVEMENTS b/IMPROVEMENTS
index e21a0171d3b9aeaabcfbdf706ef0bf309c601a77..5200076ff9ef09f99c1116d4c0e4f59d0f83ca24 100644
--- a/IMPROVEMENTS
+++ b/IMPROVEMENTS
@@ -2,6 +2,8 @@ Improvements in GNU nano
 ========================
 
 Since 2.9.0:
+  - A key can be bound to a string -- any mix of text and commands.
+  - Error messages are shown by default in bright white on red.
   - <Tab> and <Shift+Tab> can be used to indent/unindent a marked region.
   - Can snip trailing whitespace while typing, with 'set trimblanks'.
   - The ability to record and replay a series of keystrokes (a macro).
diff --git a/NEWS b/NEWS
index 1019b1d13cf06967d71eeef45d2754a0d3f05fa8..8ffcb7ca3b41dc8de3e65152eb36d5a0f7e5b16b 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,16 @@
+2018.03.08 - GNU nano 2.9.4 "Isabel" allows binding a key to a string
+             (any piece of text and/or commands), permits customizing
+             the color of error messages with 'set errorcolor', colors
+             those error messages by default in bright white on red,
+             makes <Enter> at the bottom of the screen scroll just one
+             row when --smooth is used, does not fail when redoing a
+             file insertion, and cancels a Shift-selection when any
+             cursor key is pressed without Shift even when the cursor
+             cannot move.  Further, it treats tabs fully the same as
+             spaces when doing automatic hard-wrapping, allows syntax
+             names to be unquoted, and removes two deprecated options
+             and six deprecated bindable function names.
+
 2018.01.29 - GNU nano 2.9.3 "Córdoba" fixes a segfault with trimblanks
              that could occur when a typed space caused the word after
              it to be pushed to the next line.  It further makes macros
diff --git a/configure.ac b/configure.ac
index 5edf7ee02ec1f0630565161fcd1564f7cb78b8a1..af488702213e6c6271f94ce841564216dfc96943 100644
--- a/configure.ac
+++ b/configure.ac
@@ -16,7 +16,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see http://www.gnu.org/licenses/.
 
-AC_INIT([GNU nano], [2.9.3], [nano-devel@gnu.org], [nano])
+AC_INIT([GNU nano], [2.9.4], [nano-devel@gnu.org], [nano])
 AC_CONFIG_SRCDIR([src/nano.c])
 AC_CANONICAL_HOST
 AM_INIT_AUTOMAKE([1.14])
diff --git a/doc/faq.html b/doc/faq.html
index 5782b2a5e4ecbb0192f939d201efdd0fabb40a93..f1346df41d836ea47e3010b6b4faa700c5439f32 100644
--- a/doc/faq.html
+++ b/doc/faq.html
@@ -90,7 +90,7 @@
 <h2><a name="1.3"></a>1.3. Why the name change from TIP?</h2>
 <blockquote><p>On January 10, 2000, TIP was officially renamed to nano because of a namespace conflict with another program called 'tip'. The original 'tip' program &quot;establishes a full duplex terminal connection to a remote host&quot;, and was included with many older Unix systems (and newer ones like Solaris). The conflict was not noticed at first because there is no 'tip' utility included with most GNU/Linux distributions (where nano was developed).</p></blockquote>
 <h2><a name="1.4"></a>1.4. What is the current version of nano?</h2>
-<blockquote><p>The current version of nano <i>should</i> be <b>2.9.3</b>.  Of course, you should always check the <a href="https://nano-editor.org/">nano homepage</a> to see what the latest and greatest version is.</p></blockquote>
+<blockquote><p>The current version of nano <i>should</i> be <b>2.9.4</b>.  Of course, you should always check the <a href="https://nano-editor.org/">nano homepage</a> to see what the latest and greatest version is.</p></blockquote>
 <h2><a name="1.5"></a>1.5. I want to read the man page without having to download the program!</h2>
 <blockquote><p>Jeez, demanding, aren't we? Okay, look <a href="https://nano-editor.org/dist/latest/nano.1.html">here</a>.</p></blockquote>
 <hr width="100%">
diff --git a/doc/nano.1 b/doc/nano.1
index 20170850d132b6ae8ca12e8864fa8311716b8de8..6c168619a536e3bb904938496cb62348ffe1cb4c 100644
--- a/doc/nano.1
+++ b/doc/nano.1
@@ -16,7 +16,7 @@
 .\"   Documentation License along with this program.  If not, see
 .\"   <http://www.gnu.org/licenses/>.
 .\"
-.TH NANO 1 "version 2.9.3" "January 2018"
+.TH NANO 1 "version 2.9.4" "March 2018"
 
 .SH NAME
 nano \- Nano's ANOther editor, an enhanced free Pico clone
diff --git a/doc/nano.texi b/doc/nano.texi
index 5ad64fe21c387aa15c4ef5fa872ef9eab85e4ec1..04dc575690b4c0c9df38e37e4e83c5373c0da4e9 100644
--- a/doc/nano.texi
+++ b/doc/nano.texi
@@ -8,8 +8,8 @@
 
 @smallbook
 @set EDITION 0.5
-@set VERSION 2.9.3
-@set UPDATED January 2018
+@set VERSION 2.9.4
+@set UPDATED March 2018
 
 @dircategory Editors
 @direntry
@@ -23,7 +23,7 @@
 @titlepage
 @title GNU @command{nano}
 @subtitle a small and friendly text editor
-@subtitle version 2.9.3
+@subtitle version 2.9.4
 
 @author Chris Allegretta
 @page
@@ -63,7 +63,7 @@ e-mail: @email{chrisa@@asty.org}@*
 @node Top
 @top
 
-This manual documents the GNU @command{nano} editor, version 2.9.3.
+This manual documents the GNU @command{nano} editor, version 2.9.4.
 
 @menu
 * Introduction::
diff --git a/doc/nanorc.5 b/doc/nanorc.5
index 168539c4b33156e484f01f6ea199fd86e7f3ef5b..0e6198aa6cff586780e9d42dc6c318df9e8ab7e1 100644
--- a/doc/nanorc.5
+++ b/doc/nanorc.5
@@ -16,7 +16,7 @@
 .\"   Documentation License along with this program.  If not, see
 .\"   <http://www.gnu.org/licenses/>.
 .\"
-.TH NANORC 5 "version 2.9.3" "January 2018"
+.TH NANORC 5 "version 2.9.4" "March 2018"
 
 .SH NAME
 nanorc \- GNU nano's configuration file
diff --git a/doc/rnano.1 b/doc/rnano.1
index e66d0434444dd2cf4da309b4e82696dfbaea2506..0cf82cd88e2489226c334a838213e88ae51694c9 100644
--- a/doc/rnano.1
+++ b/doc/rnano.1
@@ -16,7 +16,7 @@
 .\"   Documentation License along with this program.  If not, see
 .\"   <http://www.gnu.org/licenses/>.
 .\"
-.TH RNANO 1 "version 2.9.3" "January 2018"
+.TH RNANO 1 "version 2.9.4" "March 2018"
 
 .SH NAME
 rnano \- a restricted nano