fix: scroll_cursor_min_border_distance should always be read from config

And fix an off-by-one issue causing the distance at the bottom of the view
to be one line less than the top.

close #506
This commit is contained in:
CJ van den Berg 2026-02-18 14:14:47 +01:00
parent f4cf15e5c3
commit 4fcde7b861
Signed by: neurocyte
GPG key ID: 8EB1E1BB660E3FB9
3 changed files with 11 additions and 10 deletions

View file

@ -2987,7 +2987,7 @@ pub const Editor = struct {
}
pub fn update_scroll_dest_abs(self: *Self, dest: usize) void {
const scroll_cursor_min_border_distance = tui.config().scroll_cursor_min_border_distance;
const scroll_cursor_min_border_distance = Buffer.View.scroll_cursor_min_border_distance;
const root = self.buf_root() catch return;
const max_view = if (root.lines() <= scroll_cursor_min_border_distance) 0 else root.lines() - scroll_cursor_min_border_distance;
self.scroll_dest = @min(dest, max_view);
@ -3057,7 +3057,7 @@ pub const Editor = struct {
pub const scroll_view_center_meta: Meta = .{ .description = "Scroll cursor to center of view" };
pub fn scroll_view_center_cycle(self: *Self, _: Context) Result {
const scroll_cursor_min_border_distance = tui.config().scroll_cursor_min_border_distance;
const scroll_cursor_min_border_distance = Buffer.View.scroll_cursor_min_border_distance;
const cursor_row = self.get_primary().cursor.row;
return if (cursor_row == self.view.row + scroll_cursor_min_border_distance)
self.scroll_view_bottom(.{})
@ -3069,14 +3069,14 @@ pub const Editor = struct {
pub const scroll_view_center_cycle_meta: Meta = .{ .description = "Scroll cursor to center/top/bottom of view" };
pub fn scroll_view_top(self: *Self, _: Context) Result {
const scroll_cursor_min_border_distance = tui.config().scroll_cursor_min_border_distance;
const scroll_cursor_min_border_distance = Buffer.View.scroll_cursor_min_border_distance;
return self.scroll_view_offset(scroll_cursor_min_border_distance);
}
pub const scroll_view_top_meta: Meta = .{};
pub fn scroll_view_bottom(self: *Self, _: Context) Result {
const scroll_cursor_min_border_distance = tui.config().scroll_cursor_min_border_distance;
return self.scroll_view_offset(if (self.view.rows > scroll_cursor_min_border_distance) self.view.rows - scroll_cursor_min_border_distance else 0);
const scroll_cursor_min_border_distance = Buffer.View.scroll_cursor_min_border_distance;
return self.scroll_view_offset(if (self.view.rows > scroll_cursor_min_border_distance) self.view.rows -| scroll_cursor_min_border_distance + 1 else 0);
}
pub const scroll_view_bottom_meta: Meta = .{};
@ -6386,7 +6386,7 @@ pub const Editor = struct {
const cursor = sel.begin;
const range_height = sel.end.row - sel.begin.row + 1;
const view_height = self.view.rows;
const scroll_cursor_min_border_distance = tui.config().scroll_cursor_min_border_distance;
const scroll_cursor_min_border_distance = Buffer.View.scroll_cursor_min_border_distance;
const offset = if (range_height > view_height - @min(view_height, scroll_cursor_min_border_distance * 2))
scroll_cursor_min_border_distance
else
@ -6416,7 +6416,7 @@ pub const Editor = struct {
primary.cursor = cursor;
const range_height = sel.end.row - sel.begin.row + 1;
const view_height = self.view.rows;
const scroll_cursor_min_border_distance = tui.config().scroll_cursor_min_border_distance;
const scroll_cursor_min_border_distance = Buffer.View.scroll_cursor_min_border_distance;
const offset = if (range_height > view_height - @min(view_height, scroll_cursor_min_border_distance * 2))
scroll_cursor_min_border_distance
else

View file

@ -177,6 +177,7 @@ fn init(allocator: Allocator) InitError!*Self {
tp.env.get().set("follow_directory_symlinks", conf.follow_directory_symlinks);
tp.env.get().set("log_ignored_links", conf.log_ignored_links);
tp.env.get().num_set("maximum_symlink_depth", @intCast(conf.maximum_symlink_depth));
Buffer.View.scroll_cursor_min_border_distance = conf.scroll_cursor_min_border_distance;
var self = try allocator.create(Self);
// don't destroy