summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2017-04-30 21:15:56 +0100
committerMaxime Coste <mawww@kakoune.org>2017-05-07 16:26:14 +0100
commitbd3ba77e96fb7fdb2f6240f00dd8ff5649200a7c (patch)
treea5829d593e12678821fff25188b725a4d480be4b /src
parent5ee21ec932d1da0f1fbae8ee1f13b967b8014307 (diff)
Make Wrap highlighter only wrap on window width.
Diffstat (limited to 'src')
-rw-r--r--src/highlighters.cc27
-rw-r--r--src/window.cc10
-rw-r--r--src/window.hh3
3 files changed, 12 insertions, 28 deletions
diff --git a/src/highlighters.cc b/src/highlighters.cc
index 28fec02a..ac469d56 100644
--- a/src/highlighters.cc
+++ b/src/highlighters.cc
@@ -656,15 +656,13 @@ HighlighterAndId create_column_highlighter(HighlighterParameters params)
struct WrapHighlighter : Highlighter
{
- WrapHighlighter(String col_expr) : m_col_expr{std::move(col_expr)} {}
-
void highlight(const Context& context, HighlightPass pass,
DisplayBuffer& display_buffer, BufferRange) override
{
if (pass != HighlightPass::Wrap)
return;
- ColumnCount column = get_wrap_column(context);
+ ColumnCount column = context.window().display_setup().window_range.column;
if (column < 0)
return;
@@ -726,7 +724,7 @@ struct WrapHighlighter : Highlighter
if (pass != HighlightPass::Wrap)
return;
- ColumnCount column = get_wrap_column(context);
+ ColumnCount column = context.window().display_setup().window_range.column;
if (column < 0)
return;
@@ -784,28 +782,11 @@ struct WrapHighlighter : Highlighter
static HighlighterAndId create(HighlighterParameters params)
{
- if (params.size() != 1)
+ if (params.size() != 0)
throw runtime_error("wrong parameter count");
- return {"wrap_" + params[0], make_unique<WrapHighlighter>(params[0])};
- }
-
-private:
- ColumnCount get_wrap_column(const Context& context)
- {
- try
- {
- return {str_to_int_ifp(expand(m_col_expr, context)).value_or(0) - 1};
- }
- catch (runtime_error& err)
- {
- write_to_debug_buffer(
- format("Error evaluating highlight column expression: {}", err.what()));
- return {-1};
- }
+ return {"wrap", make_unique<WrapHighlighter>()};
}
-
- String m_col_expr;
};
void expand_tabulations(const Context& context, HighlightPass pass, DisplayBuffer& display_buffer, BufferRange)
diff --git a/src/window.cc b/src/window.cc
index 8d7475f6..430085d4 100644
--- a/src/window.cc
+++ b/src/window.cc
@@ -122,10 +122,10 @@ const DisplayBuffer& Window::update_display_buffer(const Context& context)
return m_display_buffer;
kak_assert(&buffer() == &context.buffer());
- auto setup = compute_display_setup(context);
- m_position = setup.window_pos;
+ m_display_setup = compute_display_setup(context);
+ m_position = m_display_setup.window_pos;
- for (LineCount line = 0; line < setup.window_range.line; ++line)
+ for (LineCount line = 0; line < m_display_setup.window_range.line; ++line)
{
LineCount buffer_line = m_position.line + line;
if (buffer_line >= buffer().line_count())
@@ -206,9 +206,9 @@ DisplaySetup Window::compute_display_setup(const Context& context)
m_dimensions,
DisplayCoord{cursor.line - m_position.line, cursor_col - m_position.column}
};
- for (auto pass : { HighlightPass::Wrap, HighlightPass::Move })
+ for (auto pass : { HighlightPass::Move, HighlightPass::Wrap })
m_highlighters.compute_display_setup(context, pass, offset, setup);
- for (auto pass : { HighlightPass::Wrap, HighlightPass::Move })
+ for (auto pass : { HighlightPass::Move, HighlightPass::Wrap })
m_builtin_highlighters.compute_display_setup(context, pass, offset, setup);
return setup;
diff --git a/src/window.hh b/src/window.hh
index 63c9b043..36bc0bd3 100644
--- a/src/window.hh
+++ b/src/window.hh
@@ -46,6 +46,8 @@ public:
void set_client(Client* client) { m_client = client; }
+ const DisplaySetup& display_setup() const { return m_display_setup; }
+
void clear_display_buffer();
private:
Window(const Window&) = delete;
@@ -62,6 +64,7 @@ private:
DisplayCoord m_position;
DisplayCoord m_dimensions;
DisplayBuffer m_display_buffer;
+ DisplaySetup m_display_setup;
HighlighterGroup m_highlighters;
HighlighterGroup m_builtin_highlighters;