我正在用 javascript 编写类似 Nano 的编辑器,并且在计算光标位置和文件偏移以进行显示时遇到问题:
当您在第 20 行移动光标_rows
并且settings.verticalMoveOffset
有 19 行光标偏移verticalMoveOffset
.
我在这几个小时内工作,无法弄清楚如何将文件指针(行)映射到编辑器光标和文件的偏移量(它开始视图的行)。
最后一次尝试是
if (y >= this._rows) {
var page = Math.floor(y / (this._rows-this._settings.verticalMoveOffset))-1;
var new_offset = (this._rows - this._settings.verticalMoveOffset) * page;
if (this._offset !== new_offset) {
this._view(new_offset);
}
cursor_y = y - (this._rows*page) + this._settings.verticalMoveOffset;
} else {
if (y <= this._rows - this._settings.verticalMoveOffset - 1 &&
this._offset !== 0) {
this._pointer.x = x;
this._pointer.y = y;
this._view(0);
cursor_y = y;
} else if (this._offset !== 0) {
cursor_y = (y - this._settings.verticalMoveOffset) + 1;
} else {
cursor_y = y;
}
}
当我从第 1 页切换到第 2 页并返回到第 3 页时,它会切换到 1 行以快速切换,cursor_y
即 -1。在计算页面时,我尝试在不同的地方加上正负 1,但它不起作用。
任何人都可以帮助我吗?