diff options
| author | Maxime Coste <mawww@kakoune.org> | 2017-04-30 21:15:56 +0100 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2017-05-07 16:26:14 +0100 |
| commit | bd3ba77e96fb7fdb2f6240f00dd8ff5649200a7c (patch) | |
| tree | a5829d593e12678821fff25188b725a4d480be4b /src | |
| parent | 5ee21ec932d1da0f1fbae8ee1f13b967b8014307 (diff) | |
Make Wrap highlighter only wrap on window width.
Diffstat (limited to 'src')
| -rw-r--r-- | src/highlighters.cc | 27 | ||||
| -rw-r--r-- | src/window.cc | 10 | ||||
| -rw-r--r-- | src/window.hh | 3 |
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; |
