Remove avoidance of end of lines
Various places in Kakoune code used to modify selections so that cursors would not lie on an end of line. Remove those to increase Kakoune's consistency and simplicity. Now that end of lines are highlighted separately, they should not be handled specially in most commands.
This commit is contained in:
parent
171e787063
commit
67424aae1e
|
@ -1095,7 +1095,6 @@ public:
|
||||||
sel.cursor() = context().buffer().char_prev(sel.cursor());
|
sel.cursor() = context().buffer().char_prev(sel.cursor());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
selections.avoid_eol();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -614,7 +614,6 @@ void erase_selections(Context& context, NormalParams params)
|
||||||
}
|
}
|
||||||
ScopedEdition edition(context);
|
ScopedEdition edition(context);
|
||||||
context.selections().erase();
|
context.selections().erase();
|
||||||
context.selections().avoid_eol();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
template<bool yank>
|
template<bool yank>
|
||||||
|
@ -1841,7 +1840,6 @@ void move_in_history(Context& context, NormalParams params)
|
||||||
auto ranges = compute_modified_ranges(buffer, timestamp);
|
auto ranges = compute_modified_ranges(buffer, timestamp);
|
||||||
if (not ranges.empty())
|
if (not ranges.empty())
|
||||||
context.selections_write_only() = std::move(ranges);
|
context.selections_write_only() = std::move(ranges);
|
||||||
context.selections().avoid_eol();
|
|
||||||
|
|
||||||
context.print_status({ format("moved to change #{} ({})",
|
context.print_status({ format("moved to change #{} ({})",
|
||||||
history_id, max_history_id),
|
history_id, max_history_id),
|
||||||
|
@ -1925,9 +1923,6 @@ void move(Context& context, NormalParams params)
|
||||||
}
|
}
|
||||||
selections.sort();
|
selections.sort();
|
||||||
|
|
||||||
if (std::is_same<Type, LineCount>::value)
|
|
||||||
selections.avoid_eol();
|
|
||||||
|
|
||||||
selections.merge_overlapping();
|
selections.merge_overlapping();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -334,24 +334,6 @@ void SelectionList::sort_and_merge_overlapping()
|
||||||
merge_overlapping();
|
merge_overlapping();
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void _avoid_eol(const Buffer& buffer, BufferCoord& coord)
|
|
||||||
{
|
|
||||||
auto column = coord.column;
|
|
||||||
auto line = buffer[coord.line];
|
|
||||||
if (column != 0 and column == line.length() - 1)
|
|
||||||
coord.column = line.byte_count_to(line.char_length() - 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
void SelectionList::avoid_eol()
|
|
||||||
{
|
|
||||||
update();
|
|
||||||
for (auto& sel : m_selections)
|
|
||||||
{
|
|
||||||
_avoid_eol(buffer(), sel.anchor());
|
|
||||||
_avoid_eol(buffer(), sel.cursor());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
BufferCoord get_insert_pos(const Buffer& buffer, const Selection& sel,
|
BufferCoord get_insert_pos(const Buffer& buffer, const Selection& sel,
|
||||||
InsertMode mode)
|
InsertMode mode)
|
||||||
{
|
{
|
||||||
|
|
|
@ -100,8 +100,6 @@ struct SelectionList
|
||||||
size_t main_index() const { return m_main; }
|
size_t main_index() const { return m_main; }
|
||||||
void set_main_index(size_t main) { kak_assert(main < size()); m_main = main; }
|
void set_main_index(size_t main) { kak_assert(main < size()); m_main = main; }
|
||||||
|
|
||||||
void avoid_eol();
|
|
||||||
|
|
||||||
void push_back(const Selection& sel) { m_selections.push_back(sel); }
|
void push_back(const Selection& sel) { m_selections.push_back(sel); }
|
||||||
void push_back(Selection&& sel) { m_selections.push_back(std::move(sel)); }
|
void push_back(Selection&& sel) { m_selections.push_back(std::move(sel)); }
|
||||||
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
2.7,2.7
|
2.8,2.8
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
3.7,3.7
|
3.8,3.8
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
dP
|
dhP
|
||||||
|
|
|
@ -4,9 +4,9 @@
|
||||||
{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:2 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "[+]" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "yellow", "bg": "default", "attributes": [] }, "contents": "insert" }, { "face": { "fg": "cyan", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sels (1)" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - unnamed0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
|
{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:2 " }, { "face": { "fg": "black", "bg": "yellow", "attributes": [] }, "contents": "[+]" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "yellow", "bg": "default", "attributes": [] }, "contents": "insert" }, { "face": { "fg": "cyan", "bg": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "blue", "bg": "default", "attributes": [] }, "contents": "1 sels (1)" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": " - unnamed0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
|
||||||
{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 1 }] }
|
{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 1 }] }
|
||||||
{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
|
{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
|
||||||
{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "·" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "¬" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "¬" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }
|
{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "·" }, { "face": { "fg": "black", "bg": "cyan", "attributes": [] }, "contents": "¬" }], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "¬" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }
|
||||||
{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }
|
{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }
|
||||||
{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }
|
{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }
|
||||||
{ "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": " - unnamed0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
|
{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:2 " }, { "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": " - unnamed0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
|
||||||
{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 0 }] }
|
{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 1 }] }
|
||||||
{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
|
{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "this" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "→ " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "is" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "→ " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "a" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "→ " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "tes" }, { "face": { "fg": "black", "bg": "white", "attributes": [] }, "contents": "t" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "¬" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }
|
{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "this" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "→ " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "is" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "→ " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "a" }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "→ " }, { "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "test" }, { "face": { "fg": "black", "bg": "cyan", "attributes": [] }, "contents": "¬" }]], { "fg": "default", "bg": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "attributes": [] }] }
|
||||||
{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }
|
{ "jsonrpc": "2.0", "method": "menu_hide", "params": [] }
|
||||||
{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }
|
{ "jsonrpc": "2.0", "method": "info_hide", "params": [] }
|
||||||
{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:14 " }, { "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": " - unnamed0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
|
{ "jsonrpc": "2.0", "method": "draw_status", "params": [[], [{ "face": { "fg": "default", "bg": "default", "attributes": [] }, "contents": "out 1:15 " }, { "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": " - unnamed0@[kak-tests]" }], { "fg": "cyan", "bg": "default", "attributes": [] }] }
|
||||||
{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 27 }] }
|
{ "jsonrpc": "2.0", "method": "set_cursor", "params": ["buffer", { "line": 0, "column": 28 }] }
|
||||||
{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
|
{ "jsonrpc": "2.0", "method": "refresh", "params": [true] }
|
||||||
|
|
Loading…
Reference in New Issue
Block a user