mirror of
https://github.com/vim/vim.git
synced 2025-07-25 10:54:51 -04:00
patch 8.0.1046: code duplication in diff mode
Problem: Code duplication in diff mode. Solution: Use diff_equal_char() also in diff_cmp(). (Rick Howe)
This commit is contained in:
parent
6a8691d483
commit
ae96b8d058
94
src/diff.c
94
src/diff.c
@ -1660,6 +1660,40 @@ diff_equal_entry(diff_T *dp, int idx1, int idx2)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Compare the characters at "p1" and "p2". If they are equal (possibly
|
||||||
|
* ignoring case) return TRUE and set "len" to the number of bytes.
|
||||||
|
*/
|
||||||
|
static int
|
||||||
|
diff_equal_char(char_u *p1, char_u *p2, int *len)
|
||||||
|
{
|
||||||
|
#ifdef FEAT_MBYTE
|
||||||
|
int l = (*mb_ptr2len)(p1);
|
||||||
|
|
||||||
|
if (l != (*mb_ptr2len)(p2))
|
||||||
|
return FALSE;
|
||||||
|
if (l > 1)
|
||||||
|
{
|
||||||
|
if (STRNCMP(p1, p2, l) != 0
|
||||||
|
&& (!enc_utf8
|
||||||
|
|| !(diff_flags & DIFF_ICASE)
|
||||||
|
|| utf_fold(utf_ptr2char(p1))
|
||||||
|
!= utf_fold(utf_ptr2char(p2))))
|
||||||
|
return FALSE;
|
||||||
|
*len = l;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
if ((*p1 != *p2)
|
||||||
|
&& (!(diff_flags & DIFF_ICASE)
|
||||||
|
|| TOLOWER_LOC(*p1) != TOLOWER_LOC(*p2)))
|
||||||
|
return FALSE;
|
||||||
|
*len = 1;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Compare strings "s1" and "s2" according to 'diffopt'.
|
* Compare strings "s1" and "s2" according to 'diffopt'.
|
||||||
* Return non-zero when they are different.
|
* Return non-zero when they are different.
|
||||||
@ -1689,30 +1723,10 @@ diff_cmp(char_u *s1, char_u *s2)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
#ifdef FEAT_MBYTE
|
if (!diff_equal_char(p1, p2, &l))
|
||||||
l = (*mb_ptr2len)(p1);
|
|
||||||
if (l != (*mb_ptr2len)(p2))
|
|
||||||
break;
|
break;
|
||||||
if (l > 1)
|
p1 += l;
|
||||||
{
|
p2 += l;
|
||||||
if (STRNCMP(p1, p2, l) != 0
|
|
||||||
&& (!enc_utf8
|
|
||||||
|| !(diff_flags & DIFF_ICASE)
|
|
||||||
|| utf_fold(utf_ptr2char(p1))
|
|
||||||
!= utf_fold(utf_ptr2char(p2))))
|
|
||||||
break;
|
|
||||||
p1 += l;
|
|
||||||
p2 += l;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
if (*p1 != *p2 && (!(diff_flags & DIFF_ICASE)
|
|
||||||
|| TOLOWER_LOC(*p1) != TOLOWER_LOC(*p2)))
|
|
||||||
break;
|
|
||||||
++p1;
|
|
||||||
++p2;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1949,40 +1963,6 @@ diffopt_horizontal(void)
|
|||||||
return (diff_flags & DIFF_HORIZONTAL) != 0;
|
return (diff_flags & DIFF_HORIZONTAL) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Compare the characters at "p1" and "p2". If they are equal (possibly
|
|
||||||
* ignoring case) return TRUE and set "len" to the number of bytes.
|
|
||||||
*/
|
|
||||||
static int
|
|
||||||
diff_equal_char(char_u *p1, char_u *p2, int *len)
|
|
||||||
{
|
|
||||||
#ifdef FEAT_MBYTE
|
|
||||||
int l = (*mb_ptr2len)(p1);
|
|
||||||
|
|
||||||
if (l != (*mb_ptr2len)(p2))
|
|
||||||
return FALSE;
|
|
||||||
if (l > 1)
|
|
||||||
{
|
|
||||||
if (STRNCMP(p1, p2, l) != 0
|
|
||||||
&& (!enc_utf8
|
|
||||||
|| !(diff_flags & DIFF_ICASE)
|
|
||||||
|| utf_fold(utf_ptr2char(p1))
|
|
||||||
!= utf_fold(utf_ptr2char(p2))))
|
|
||||||
return FALSE;
|
|
||||||
*len = l;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
if ((*p1 != *p2)
|
|
||||||
&& (!(diff_flags & DIFF_ICASE)
|
|
||||||
|| TOLOWER_LOC(*p1) != TOLOWER_LOC(*p2)))
|
|
||||||
return FALSE;
|
|
||||||
*len = 1;
|
|
||||||
}
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Find the difference within a changed line.
|
* Find the difference within a changed line.
|
||||||
* Returns TRUE if the line was added, no other buffer has it.
|
* Returns TRUE if the line was added, no other buffer has it.
|
||||||
|
@ -769,6 +769,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 */
|
||||||
|
/**/
|
||||||
|
1046,
|
||||||
/**/
|
/**/
|
||||||
1045,
|
1045,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user