Enhance jumping and fix its crashing

This commit is contained in:
Matúš Púll 2025-04-20 18:25:04 +02:00
parent 1b2c93b2af
commit 8c6ef1c9e9

View file

@ -250,10 +250,16 @@ void move_cursor(char ch) {
break;
}
}
// Jump to line
// Jump to line TODO scroll down if needed
void jump(count_type r) {
if(r >= get_size()) r = get_size()-1;
if(r - file_offset > LINES || r < file_offset)
file_offset = max(0, min(file.size()-LINES, r));
file_offset = max(0, min(get_size()-LINES, r));
else if(file_offset + LINES > get_size() && get_size() > LINES)
file_offset = get_size() - LINES;
cur.r = max(0, r - file_offset);
jump_line_end();
}
@ -316,9 +322,15 @@ int main(int argc, char* argv[]) {
jump(get_number("line number"));
print_file(file_offset);
break;
case 'G':
jump(get_size());
print_file(file_offset);
break;
case 'd':
remove(file_offset + cur.r);
print_file(file_offset + cur.r);
if(file_offset + cur.r >= get_size())
jump(cur + file_offset);
print_file(file_offset);
break;
case 'x':
remove(cur + file_offset);
@ -418,6 +430,8 @@ int main(int argc, char* argv[]) {
break;
case 'x':
remove_selection(cur + file_offset);
if(file_offset + cur.r >= get_size())
jump(cur + file_offset);
print_file();
mode = NORMAL;
break;