Enhance jumping and fix its crashing
This commit is contained in:
parent
1b2c93b2af
commit
8c6ef1c9e9
1 changed files with 17 additions and 3 deletions
20
main.cpp
20
main.cpp
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue