mirror of
https://github.com/neovim/neovim.git
synced 2025-09-11 22:08:18 +00:00
Merge #7315 "'inccommand': multiline, other fixes"
closes #5589 closes #5590 closes #5598 closes #5608
This commit is contained in:
@@ -5278,6 +5278,44 @@ int bufhl_add_hl(buf_T *buf,
|
||||
return src_id;
|
||||
}
|
||||
|
||||
/// Add highlighting to a buffer, bounded by two cursor positions,
|
||||
/// with an offset.
|
||||
///
|
||||
/// @param buf Buffer to add highlights to
|
||||
/// @param src_id src_id to use or 0 to use a new src_id group,
|
||||
/// or -1 for ungrouped highlight.
|
||||
/// @param hl_id Highlight group id
|
||||
/// @param pos_start Cursor position to start the hightlighting at
|
||||
/// @param pos_end Cursor position to end the highlighting at
|
||||
/// @param offset Move the whole highlighting this many columns to the right
|
||||
void bufhl_add_hl_pos_offset(buf_T *buf,
|
||||
int src_id,
|
||||
int hl_id,
|
||||
lpos_T pos_start,
|
||||
lpos_T pos_end,
|
||||
colnr_T offset)
|
||||
{
|
||||
colnr_T hl_start = 0;
|
||||
colnr_T hl_end = 0;
|
||||
|
||||
for (linenr_T lnum = pos_start.lnum; lnum <= pos_end.lnum; lnum ++) {
|
||||
if (pos_start.lnum < lnum && lnum < pos_end.lnum) {
|
||||
hl_start = offset;
|
||||
hl_end = MAXCOL;
|
||||
} else if (lnum == pos_start.lnum && lnum < pos_end.lnum) {
|
||||
hl_start = pos_start.col + offset + 1;
|
||||
hl_end = MAXCOL;
|
||||
} else if (pos_start.lnum < lnum && lnum == pos_end.lnum) {
|
||||
hl_start = offset;
|
||||
hl_end = pos_end.col + offset;
|
||||
} else if (pos_start.lnum == lnum && pos_end.lnum == lnum) {
|
||||
hl_start = pos_start.col + offset + 1;
|
||||
hl_end = pos_end.col + offset;
|
||||
}
|
||||
(void)bufhl_add_hl(buf, src_id, hl_id, lnum, hl_start, hl_end);
|
||||
}
|
||||
}
|
||||
|
||||
/// Clear bufhl highlights from a given source group and range of lines.
|
||||
///
|
||||
/// @param buf The buffer to remove highlights from
|
||||
|
Reference in New Issue
Block a user