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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Jump to line
|
// Jump to line TODO scroll down if needed
|
||||||
void jump(count_type r) {
|
void jump(count_type r) {
|
||||||
|
if(r >= get_size()) r = get_size()-1;
|
||||||
|
|
||||||
if(r - file_offset > LINES || r < file_offset)
|
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);
|
cur.r = max(0, r - file_offset);
|
||||||
jump_line_end();
|
jump_line_end();
|
||||||
}
|
}
|
||||||
|
@ -316,9 +322,15 @@ int main(int argc, char* argv[]) {
|
||||||
jump(get_number("line number"));
|
jump(get_number("line number"));
|
||||||
print_file(file_offset);
|
print_file(file_offset);
|
||||||
break;
|
break;
|
||||||
|
case 'G':
|
||||||
|
jump(get_size());
|
||||||
|
print_file(file_offset);
|
||||||
|
break;
|
||||||
case 'd':
|
case 'd':
|
||||||
remove(file_offset + cur.r);
|
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;
|
break;
|
||||||
case 'x':
|
case 'x':
|
||||||
remove(cur + file_offset);
|
remove(cur + file_offset);
|
||||||
|
@ -418,6 +430,8 @@ int main(int argc, char* argv[]) {
|
||||||
break;
|
break;
|
||||||
case 'x':
|
case 'x':
|
||||||
remove_selection(cur + file_offset);
|
remove_selection(cur + file_offset);
|
||||||
|
if(file_offset + cur.r >= get_size())
|
||||||
|
jump(cur + file_offset);
|
||||||
print_file();
|
print_file();
|
||||||
mode = NORMAL;
|
mode = NORMAL;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue