Fix splitting display line in front of a replaced range
When a replaced buffer range atom was starting exactly at the location we wanted to split onto the code would split *after* that atom instead of before. Fixes #4052
This commit is contained in:
parent
fa3aa3c1a3
commit
978dfe4bdf
|
@ -113,7 +113,10 @@ DisplayLine::iterator DisplayLine::split(iterator it, ColumnCount count)
|
|||
|
||||
DisplayLine::iterator DisplayLine::split(BufferCoord pos)
|
||||
{
|
||||
auto it = find_if(begin(), end(), [pos](const DisplayAtom& a) { return a.type() == DisplayAtom::Range and a.end() > pos; });
|
||||
auto it = find_if(begin(), end(), [pos](const DisplayAtom& a) {
|
||||
return (a.has_buffer_range() && a.begin() >= pos) ||
|
||||
(a.type() == DisplayAtom::Range and a.end() > pos);
|
||||
});
|
||||
if (it == end() or it->begin() >= pos)
|
||||
return it;
|
||||
return ++split(it, pos);
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
fn main() {
|
||||
let my_str = String::from("abc");
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
declare-option -hidden range-specs test_inlay_hints
|
||||
add-highlighter window/whitespaces show-whitespaces -tab '›' -tabpad '⋅' -spc ' ' -nbsp '⍽'
|
||||
add-highlighter window/test_inlay_hints replace-ranges test_inlay_hints
|
||||
set buffer test_inlay_hints %val{timestamp} '2.15+0|{Information}{\}: String'
|
|
@ -0,0 +1,7 @@
|
|||
ui_out '{ "jsonrpc": "2.0", "method": "set_ui_options", "params": [{}] }'
|
||||
ui_out '{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "f" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "n" }, { "face": { "fg": "default", "bg": "default", "attributes": ["final_fg"] }, "contents": " " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "main()" }, { "face": { "fg": "default", "bg": "default", "attributes": ["final_fg"] }, "contents": " " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "{" }, { "face": { "fg": "default", "bg": "default", "attributes": ["final_fg"] }, "contents": "¬" }], [{ "face": { "fg": "default", "bg": "default", "attributes": ["final_fg"] }, "contents": " " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "let" }, { "face": { "fg": "default", "bg": "default", "attributes": ["final_fg"] }, "contents": " " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "my_str" }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": ": String" }, { "face": { "fg": "default", "bg": "default", "attributes": ["final_fg"] }, "contents": " " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "=" }, { "face": { "fg": "default", "bg": "default", "attributes": ["final_fg"] }, "contents": " " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "String::from(\"abc\");" }, { "face": { "fg": "default", "bg": "default", "attributes": ["final_fg"] }, "contents": "¬" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "}" }, { "face": { "fg": "default", "bg": "default", "attributes": ["final_fg"] }, "contents": "¬" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }'
|
||||
ui_out '{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }'
|
||||
ui_out '{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }'
|
||||
ui_out '{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:1 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sel" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - client0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }'
|
||||
ui_out '{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 0 }] }'
|
||||
ui_out '{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }'
|
Loading…
Reference in New Issue
Block a user