diff options
Diffstat (limited to 'src/nvim/getchar.c')
| -rw-r--r-- | src/nvim/getchar.c | 27 | 
1 files changed, 15 insertions, 12 deletions
diff --git a/src/nvim/getchar.c b/src/nvim/getchar.c index 5c2eed363e..f955fe8859 100644 --- a/src/nvim/getchar.c +++ b/src/nvim/getchar.c @@ -34,6 +34,7 @@  #include "nvim/memory.h"  #include "nvim/message.h"  #include "nvim/misc1.h" +#include "nvim/plines.h"  #include "nvim/keymap.h"  #include "nvim/garray.h"  #include "nvim/move.h" @@ -2230,20 +2231,22 @@ static int vgetorpeek(bool advance)              timedout = true;              continue;            } -          /* When 'insertmode' is set, ESC just beeps in Insert -           * mode.  Use CTRL-L to make edit() return. -           * For the command line only CTRL-C always breaks it. -           * For the cmdline window: Alternate between ESC and -           * CTRL-C: ESC for most situations and CTRL-C to close the -           * cmdline window. */ -          if (p_im && (State & INSERT)) +          // When 'insertmode' is set, ESC just beeps in Insert +          // mode.  Use CTRL-L to make edit() return. +          // In Ex-mode \n is compatible with original Vim behaviour. +          // For the command line only CTRL-C always breaks it. +          // For the cmdline window: Alternate between ESC and +          // CTRL-C: ESC for most situations and CTRL-C to close the +          // cmdline window. +          if (p_im && (State & INSERT)) {              c = Ctrl_L; -          else if ((State & CMDLINE) -                   || (cmdwin_type > 0 && tc == ESC) -                   ) +          } else if (exmode_active) { +            c = '\n'; +          } else if ((State & CMDLINE) || (cmdwin_type > 0 && tc == ESC)) {              c = Ctrl_C; -          else +          } else {              c = ESC; +          }            tc = c;            break;          } @@ -2413,7 +2416,7 @@ static int vgetorpeek(bool advance)   *	1. a scriptfile   *	2. the keyboard   * - *  As much characters as we can get (upto 'maxlen') are put in "buf" and + *  As much characters as we can get (up to 'maxlen') are put in "buf" and   *  NUL terminated (buffer length must be 'maxlen' + 1).   *  Minimum for "maxlen" is 3!!!!   *  | 
