mirror of
https://github.com/vim/vim.git
synced 2025-09-25 03:54:15 -04:00
patch 8.1.0859: "%v" in 'errorformat' does handle multi-byte characters
Problem: "%v" in 'errorformat' does handle multi-byte characters. Solution: Handle multi-byte characters. (Yegappan Lakshmanan, closes #3700)
This commit is contained in:
@@ -3047,9 +3047,6 @@ qf_jump_goto_line(
|
||||
char_u *qf_pattern)
|
||||
{
|
||||
linenr_T i;
|
||||
char_u *line;
|
||||
colnr_T screen_col;
|
||||
colnr_T char_col;
|
||||
|
||||
if (qf_pattern == NULL)
|
||||
{
|
||||
@@ -3063,29 +3060,11 @@ qf_jump_goto_line(
|
||||
}
|
||||
if (qf_col > 0)
|
||||
{
|
||||
curwin->w_cursor.col = qf_col - 1;
|
||||
curwin->w_cursor.coladd = 0;
|
||||
if (qf_viscol == TRUE)
|
||||
{
|
||||
// Check each character from the beginning of the error
|
||||
// line up to the error column. For each tab character
|
||||
// found, reduce the error column value by the length of
|
||||
// a tab character.
|
||||
line = ml_get_curline();
|
||||
screen_col = 0;
|
||||
for (char_col = 0; char_col < curwin->w_cursor.col; ++char_col)
|
||||
{
|
||||
if (*line == NUL)
|
||||
break;
|
||||
if (*line++ == '\t')
|
||||
{
|
||||
curwin->w_cursor.col -= 7 - (screen_col % 8);
|
||||
screen_col += 8 - (screen_col % 8);
|
||||
}
|
||||
else
|
||||
++screen_col;
|
||||
}
|
||||
}
|
||||
coladvance(qf_col - 1);
|
||||
else
|
||||
curwin->w_cursor.col = qf_col - 1;
|
||||
curwin->w_set_curswant = TRUE;
|
||||
check_cursor();
|
||||
}
|
||||
|
Reference in New Issue
Block a user