summaryrefslogtreecommitdiffstats
path: root/src/edit.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2006-02-09 23:53:20 +0000
committerBram Moolenaar <Bram@vim.org>2006-02-09 23:53:20 +0000
commit754b56089f334509ee23f70fe9d046120e91f0e6 (patch)
treea22dc3faed963271a15be3dff335fc4de2f37200 /src/edit.c
parentcf0c554e3f841eefd3208aee3f6359da3e6395f4 (diff)
updated for version 7.0195
Diffstat (limited to 'src/edit.c')
-rw-r--r--src/edit.c36
1 files changed, 27 insertions, 9 deletions
diff --git a/src/edit.c b/src/edit.c
index c59d08fc54..b7e416034c 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -149,7 +149,7 @@ static int quote_meta __ARGS((char_u *dest, char_u *str, int len));
#define BACKSPACE_WORD_NOT_SPACE 3
#define BACKSPACE_LINE 4
-static void ins_redraw __ARGS((void));
+static void ins_redraw __ARGS((int ready));
static void ins_ctrl_v __ARGS((void));
static void undisplay_dollar __ARGS((void));
static void insert_special __ARGS((int, int, int));
@@ -650,7 +650,7 @@ edit(cmdchar, startln, count)
* Redraw the display when no characters are waiting.
* Also shows mode, ruler and positions cursor.
*/
- ins_redraw();
+ ins_redraw(TRUE);
#ifdef FEAT_SCROLLBIND
if (curwin->w_p_scb)
@@ -732,7 +732,7 @@ edit(cmdchar, startln, count)
if (c == Ctrl_BSL)
{
/* may need to redraw when no more chars available now */
- ins_redraw();
+ ins_redraw(FALSE);
++no_mapping;
++allow_keys;
c = safe_vgetc();
@@ -1038,6 +1038,13 @@ doESCkey:
case K_IGNORE: /* Something mapped to nothing */
break;
+#ifdef FEAT_AUTOCMD
+ case K_CURSORHOLD: /* Didn't type something for a while. */
+ apply_autocmds(EVENT_CURSORHOLDI, NULL, NULL, FALSE, curbuf);
+ did_cursorhold = TRUE;
+ break;
+#endif
+
#ifdef FEAT_GUI_W32
/* On Win32 ignore <M-F4>, we get it when closing the window was
* cancelled. */
@@ -1345,11 +1352,22 @@ force_cindent:
* Only redraw when there are no characters available. This speeds up
* inserting sequences of characters (e.g., for CTRL-R).
*/
+/*ARGSUSED*/
static void
-ins_redraw()
+ins_redraw(ready)
+ int ready; /* not busy with something */
{
if (!char_avail())
{
+#ifdef FEAT_AUTOCMD
+ /* Trigger CursorMoved if the cursor moved. */
+ if (ready && has_cursormovedI()
+ && !equalpos(last_cursormoved, curwin->w_cursor))
+ {
+ apply_autocmds(EVENT_CURSORMOVEDI, NULL, NULL, FALSE, curbuf);
+ last_cursormoved = curwin->w_cursor;
+ }
+#endif
if (must_redraw)
update_screen(0);
else if (clear_cmdline || redraw_cmdline)
@@ -1369,7 +1387,7 @@ ins_ctrl_v()
int c;
/* may need to redraw when no more chars available now */
- ins_redraw();
+ ins_redraw(FALSE);
if (redrawing() && !char_avail())
edit_putchar('^', TRUE);
@@ -6652,7 +6670,7 @@ ins_reg()
if (redrawing() && !char_avail())
{
/* may need to redraw when no more chars available now */
- ins_redraw();
+ ins_redraw(FALSE);
edit_putchar('"', TRUE);
#ifdef FEAT_CMDL_INFO
@@ -8324,7 +8342,7 @@ ins_digraph()
if (redrawing() && !char_avail())
{
/* may need to redraw when no more chars available now */
- ins_redraw();
+ ins_redraw(FALSE);
edit_putchar('?', TRUE);
#ifdef FEAT_CMDL_INFO
@@ -8356,14 +8374,14 @@ ins_digraph()
if (redrawing() && !char_avail())
{
/* may need to redraw when no more chars available now */
- ins_redraw();
+ ins_redraw(FALSE);
if (char2cells(c) == 1)
{
/* first remove the '?', otherwise it's restored when typing
* an ESC next */
edit_unputchar();
- ins_redraw();
+ ins_redraw(FALSE);
edit_putchar(c, TRUE);
}
#ifdef FEAT_CMDL_INFO