mirror of
https://github.com/vim/vim.git
synced 2025-09-23 03:43:49 -04:00
patch 8.1.1577: command line redrawn for +arabic without Arabic characters
Problem: Command line redrawn for +arabic without Arabic characters. (Dominique Pelle) Solution: Check if there actually are any Arabic characters. Do redraw after displaying incsearch. (closes #4569)
This commit is contained in:
@@ -450,6 +450,7 @@ may_do_incsearch_highlighting(
|
|||||||
#endif
|
#endif
|
||||||
int next_char;
|
int next_char;
|
||||||
int use_last_pat;
|
int use_last_pat;
|
||||||
|
int did_do_incsearch = is_state->did_incsearch;
|
||||||
|
|
||||||
// Parsing range may already set the last search pattern.
|
// Parsing range may already set the last search pattern.
|
||||||
// NOTE: must call restore_last_search_pattern() before returning!
|
// NOTE: must call restore_last_search_pattern() before returning!
|
||||||
@@ -459,6 +460,9 @@ may_do_incsearch_highlighting(
|
|||||||
{
|
{
|
||||||
restore_last_search_pattern();
|
restore_last_search_pattern();
|
||||||
finish_incsearch_highlighting(FALSE, is_state, TRUE);
|
finish_incsearch_highlighting(FALSE, is_state, TRUE);
|
||||||
|
if (did_do_incsearch && vpeekc() == NUL)
|
||||||
|
// may have skipped a redraw, do it now
|
||||||
|
redrawcmd();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -774,6 +778,35 @@ may_add_char_to_search(int firstc, int *c, incsearch_state_T *is_state)
|
|||||||
}
|
}
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEAT_ARABIC
|
||||||
|
/*
|
||||||
|
* Return TRUE if the command line has an Arabic character at or after "start"
|
||||||
|
* for "len" bytes.
|
||||||
|
*/
|
||||||
|
static int
|
||||||
|
cmdline_has_arabic(int start, int len)
|
||||||
|
{
|
||||||
|
int j;
|
||||||
|
int mb_l;
|
||||||
|
int u8c;
|
||||||
|
char_u *p;
|
||||||
|
int u8cc[MAX_MCO];
|
||||||
|
|
||||||
|
if (!enc_utf8)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
for (j = start; j < start + len; j += mb_l)
|
||||||
|
{
|
||||||
|
p = ccline.cmdbuff + j;
|
||||||
|
u8c = utfc_ptr2char_len(p, u8cc, start + len - j);
|
||||||
|
mb_l = utfc_ptr2len_len(p, start + len - j);
|
||||||
|
if (ARABIC_CHAR(u8c))
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -2366,7 +2399,8 @@ cmdline_changed:
|
|||||||
#ifdef FEAT_RIGHTLEFT
|
#ifdef FEAT_RIGHTLEFT
|
||||||
if (cmdmsg_rl
|
if (cmdmsg_rl
|
||||||
# ifdef FEAT_ARABIC
|
# ifdef FEAT_ARABIC
|
||||||
|| (p_arshape && !p_tbidi && enc_utf8)
|
|| (p_arshape && !p_tbidi
|
||||||
|
&& cmdline_has_arabic(0, ccline.cmdlen))
|
||||||
# endif
|
# endif
|
||||||
)
|
)
|
||||||
/* Always redraw the whole command line to fix shaping and
|
/* Always redraw the whole command line to fix shaping and
|
||||||
@@ -3164,7 +3198,7 @@ draw_cmdline(int start, int len)
|
|||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
#ifdef FEAT_ARABIC
|
#ifdef FEAT_ARABIC
|
||||||
if (p_arshape && !p_tbidi && enc_utf8 && len > 0)
|
if (p_arshape && !p_tbidi && cmdline_has_arabic(start, len))
|
||||||
{
|
{
|
||||||
static int buflen = 0;
|
static int buflen = 0;
|
||||||
char_u *p;
|
char_u *p;
|
||||||
|
@@ -777,6 +777,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1577,
|
||||||
/**/
|
/**/
|
||||||
1576,
|
1576,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user