Fix window_range expansion

It relied on the buffer first char being visible, and could trigger
segfaults when that was not the case.
This commit is contained in:
Maxime Coste 2019-12-16 14:09:20 +11:00
parent efabe28173
commit 878a7fbb90
2 changed files with 4 additions and 7 deletions

View File

@ -305,12 +305,9 @@ static const EnvVarDesc builtin_env_vars[] = { {
"window_range", false, "window_range", false,
[](StringView name, const Context& context, Quoting quoting) -> String [](StringView name, const Context& context, Quoting quoting) -> String
{ {
const auto top_left = context.window().display_position({0, 0}); auto setup = context.window().compute_display_setup(context);
const auto window_dim = context.window().dimensions(); return format("{} {} {} {}", setup.window_pos.line, setup.window_pos.column,
setup.window_range.line, setup.window_range.column);
return format("{} {} {} {}", top_left->line, top_left->column,
window_dim.line - top_left->line,
window_dim.column - top_left->column);
} }
} }
}; };

View File

@ -50,11 +50,11 @@ public:
void clear_display_buffer(); void clear_display_buffer();
void run_resize_hook_ifn(); void run_resize_hook_ifn();
DisplaySetup compute_display_setup(const Context& context) const;
private: private:
Window(const Window&) = delete; Window(const Window&) = delete;
void on_option_changed(const Option& option) override; void on_option_changed(const Option& option) override;
DisplaySetup compute_display_setup(const Context& context) const;
friend class ClientManager; friend class ClientManager;
void run_hook_in_own_context(Hook hook, StringView param, void run_hook_in_own_context(Hook hook, StringView param,