summaryrefslogtreecommitdiffstats
path: root/src/main.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2010-07-02 20:20:09 +0200
committerBram Moolenaar <Bram@vim.org>2010-07-02 20:20:09 +0200
commitb2c0350c67736b0e054718fb5bf136147ee2261e (patch)
treea1b4a9651813cbb1d8cb1b2362760f5c54e47976 /src/main.c
parent730cde924cea50977bdbfa5b977180bfaa188a27 (diff)
Make updating text for conceal mode simpler. A few compiler warning fixes.
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c44
1 files changed, 40 insertions, 4 deletions
diff --git a/src/main.c b/src/main.c
index 2ca1ebe84c..964bdd59a8 100644
--- a/src/main.c
+++ b/src/main.c
@@ -980,6 +980,11 @@ main_loop(cmdwin, noexmode)
{
oparg_T oa; /* operator arguments */
int previous_got_int = FALSE; /* "got_int" was TRUE */
+#ifdef FEAT_CONCEAL
+ linenr_T conceal_old_cursor_line = 0;
+ linenr_T conceal_new_cursor_line = 0;
+ int conceal_update_lines = FALSE;
+#endif
#if defined(FEAT_X11) && defined(FEAT_XCLIPBOARD)
/* Setup to catch a terminating error from the X server. Just ignore
@@ -1079,12 +1084,34 @@ main_loop(cmdwin, noexmode)
skip_redraw = FALSE;
else if (do_redraw || stuff_empty())
{
-#ifdef FEAT_AUTOCMD
+#if defined(FEAT_AUTOCMD) || defined(FEAT_CONCEAL)
/* Trigger CursorMoved if the cursor moved. */
- if (!finish_op && has_cursormoved()
- && !equalpos(last_cursormoved, curwin->w_cursor))
+ if (!finish_op && (
+# ifdef FEAT_AUTOCMD
+ has_cursormoved()
+# endif
+# if defined(FEAT_AUTOCMD) && defined(FEAT_CONCEAL)
+ ||
+# endif
+# ifdef FEAT_CONCEAL
+ curwin->w_p_conceal
+# endif
+ )
+ && !equalpos(last_cursormoved, curwin->w_cursor))
{
- apply_autocmds(EVENT_CURSORMOVED, NULL, NULL, FALSE, curbuf);
+# ifdef FEAT_AUTOCMD
+ if (has_cursormoved())
+ apply_autocmds(EVENT_CURSORMOVED, NULL, NULL,
+ FALSE, curbuf);
+# endif
+# ifdef FEAT_CONCEAL
+ if (curwin->w_p_conceal)
+ {
+ conceal_old_cursor_line = last_cursormoved.lnum;
+ conceal_new_cursor_line = curwin->w_cursor.lnum;
+ conceal_update_lines = TRUE;
+ }
+# endif
last_cursormoved = curwin->w_cursor;
}
#endif
@@ -1164,6 +1191,15 @@ main_loop(cmdwin, noexmode)
may_clear_sb_text(); /* clear scroll-back text on next msg */
showruler(FALSE);
+# if defined(FEAT_CONCEAL)
+ if (conceal_update_lines
+ && conceal_old_cursor_line != conceal_new_cursor_line)
+ {
+ update_single_line(curwin, conceal_old_cursor_line);
+ update_single_line(curwin, conceal_new_cursor_line);
+ curwin->w_valid &= ~VALID_CROW;
+ }
+# endif
setcursor();
cursor_on();