summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2010-06-08 22:59:42 +0200
committerBram Moolenaar <Bram@vim.org>2010-06-08 22:59:42 +0200
commitd5b3a2cbd9dcdafd5615bc3275c426864ec9e818 (patch)
tree89f8c76a9d34a04055fdcaab6a7a3deccf6bd752
parentcdddaa46a205e3861e24af04037065abc01fbdc1 (diff)
downloadvim-git-d5b3a2cbd9dcdafd5615bc3275c426864ec9e818.tar.gz
Fix conceal feature for gj, gk, etc. (Vince Negri)
-rw-r--r--src/normal.c42
1 files changed, 41 insertions, 1 deletions
diff --git a/src/normal.c b/src/normal.c
index 002430d71..e161d455d 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -6664,7 +6664,7 @@ nv_percent(cap)
cmdarg_T *cap;
{
pos_T *pos;
-#ifdef FEAT_FOLDING
+#if defined(FEAT_FOLDING) || defined(FEAT_CONCEAL)
linenr_T lnum = curwin->w_cursor.lnum;
#endif
@@ -6716,6 +6716,13 @@ nv_percent(cap)
&& KeyTyped)
foldOpenCursor();
#endif
+#ifdef FEAT_CONCEAL
+ if (curwin->w_p_conceal && lnum != curwin->w_cursor.lnum)
+ {
+ update_single_line(curwin, lnum);
+ update_single_line(curwin, curwin->w_cursor.lnum);
+ }
+#endif
}
/*
@@ -6770,6 +6777,9 @@ nv_mark(cap)
nv_findpar(cap)
cmdarg_T *cap;
{
+#ifdef FEAT_CONCEAL
+ linenr_T oldline = curwin->w_cursor.lnum;
+#endif
cap->oap->motion_type = MCHAR;
cap->oap->inclusive = FALSE;
cap->oap->use_reg_one = TRUE;
@@ -6785,6 +6795,13 @@ nv_findpar(cap)
if ((fdo_flags & FDO_BLOCK) && KeyTyped && cap->oap->op_type == OP_NOP)
foldOpenCursor();
#endif
+#ifdef FEAT_CONCEAL
+ if (curwin->w_p_conceal && oldline != curwin->w_cursor.lnum)
+ {
+ update_single_line(curwin, oldline);
+ update_single_line(curwin, curwin->w_cursor.lnum);
+ }
+#endif
}
}
@@ -7706,6 +7723,9 @@ nv_g_cmd(cap)
#endif
int i;
int flag = FALSE;
+#ifdef FEAT_CONCEAL
+ linenr_T oldline;
+#endif
switch (cap->nchar)
{
@@ -7847,6 +7867,9 @@ nv_g_cmd(cap)
case K_DOWN:
/* with 'nowrap' it works just like the normal "j" command; also when
* in a closed fold */
+#ifdef FEAT_CONCEAL
+ oldline = curwin->w_cursor.lnum;
+#endif
if (!curwin->w_p_wrap
#ifdef FEAT_FOLDING
|| hasFolding(curwin->w_cursor.lnum, NULL, NULL)
@@ -7860,12 +7883,22 @@ nv_g_cmd(cap)
i = nv_screengo(oap, FORWARD, cap->count1);
if (i == FAIL)
clearopbeep(oap);
+#ifdef FEAT_CONCEAL
+ else if (curwin->w_p_conceal && oldline != curwin->w_cursor.lnum)
+ {
+ update_single_line(curwin, oldline);
+ update_single_line(curwin, curwin->w_cursor.lnum);
+ }
+#endif
break;
case 'k':
case K_UP:
/* with 'nowrap' it works just like the normal "k" command; also when
* in a closed fold */
+#ifdef FEAT_CONCEAL
+ oldline = curwin->w_cursor.lnum;
+#endif
if (!curwin->w_p_wrap
#ifdef FEAT_FOLDING
|| hasFolding(curwin->w_cursor.lnum, NULL, NULL)
@@ -7879,6 +7912,13 @@ nv_g_cmd(cap)
i = nv_screengo(oap, BACKWARD, cap->count1);
if (i == FAIL)
clearopbeep(oap);
+#ifdef FEAT_CONCEAL
+ else if (curwin->w_p_conceal && oldline != curwin->w_cursor.lnum)
+ {
+ update_single_line(curwin, oldline);
+ update_single_line(curwin, curwin->w_cursor.lnum);
+ }
+#endif
break;
/*