- {
- case KEY_CURSOR_HOME:
- case 'H':
- crow = absr = min_row;
- ccol = absc = min_col;
- break;
- case KEY_CURSOR_END:
- case 'L':
- absr = max_absr;
- absc = max_absc;
- crow = rows() - 1;
- ccol = cols() - 1;
- break;
- case KEY_CURSOR_LEFT:
- case 'h':
- if (ccol > min_col)
- {
- --ccol;
- if (ccol < absc)
- absc = ccol;
- }
- else if (crow > min_row)
- {
- ccol = cols() -1;
- if (ccol - absc > dcols)
- absc = ccol - dcols;
- --crow;
- if (crow < absr)
- absr = crow;
- }
- break;
- case KEY_CURSOR_RIGHT:
- case 'l':
- if (ccol + 1 < cols())
- {
- ++ccol;
- if (ccol - absc > dcols)
- absc = ccol - dcols;
- }
- else if (crow + 1 < rows())
- {
- absc = ccol = min_col;
- ++crow;
- if (crow - absr >= drows)
- absr = crow - drows + 1;
- }
- break;
- case KEY_CURSOR_UP:
- case 'k':
- if (crow > min_row)
- {
- --crow;
- if (crow < absr)
- absr = crow;
- }
- break;
- case KEY_CURSOR_DOWN:
- case 'j':
- if (crow + 1 < rows())
- {
- ++crow;
- if (crow - absr >= drows)
- absr = crow - drows + 1;
- }
- break;
- case KEY_PAGE_UP:
- case 'K':
- if (crow >= drows + min_row)
- {
- crow -= drows;
- if (absr >= drows)
- absr -= drows;
- else
- absr = 0;
- }
- else
- {
- crow = min_row;
- absr = 0;
- }
- break;
- case KEY_PAGE_DOWN:
- case 'J':
- if (crow + 1 + drows < rows())
- {
- crow += drows;
- if (absr + drows <= max_absr)
- absr += drows;
- else
- absr = max_absr;
- }
- else
- {
- crow = rows() -1;
- absr = max_absr;
- }
- break;
- case KEY_ESC:
- Jdb::abort_command();
- return false;
- default:
- if (Jdb::is_toplevel_cmd(c))
- return false;
- break;
- }
-
- if (absc > max_absc) absc = max_absc;
- if (absr > max_absr) absr = max_absr;
+ {
+ case KEY_CURSOR_HOME:
+ case 'H':
+ crow = absr = min_row;
+ ccol = absc = min_col;
+ break;
+ case KEY_CURSOR_END:
+ case 'L':
+ absr = max_absr;
+ absc = max_absc;
+ crow = rows() - 1;
+ ccol = cols() - 1;
+ break;
+ case KEY_CURSOR_LEFT:
+ case 'h':
+ if (ccol > min_col)
+ {
+ --ccol;
+ if (ccol < absc)
+ absc = ccol;
+ }
+ else if (crow > min_row)
+ {
+ ccol = cols() - 1;
+ if (ccol - absc > dcols)
+ absc = ccol - dcols;
+ --crow;
+ if (crow < absr)
+ absr = crow;
+ }
+ break;
+ case KEY_CURSOR_RIGHT:
+ case 'l':
+ if (ccol + 1 < cols())
+ {
+ ++ccol;
+ if (ccol - absc > dcols)
+ absc = ccol - dcols;
+ }
+ else if (crow + 1 < rows())
+ {
+ absc = ccol = min_col;
+ ++crow;
+ if (crow - absr >= drows)
+ absr = crow - drows + 1;
+ }
+ break;
+ case KEY_CURSOR_UP:
+ case 'k':
+ if (crow > min_row)
+ {
+ --crow;
+ if (crow < absr)
+ absr = crow;
+ }
+ break;
+ case KEY_CURSOR_DOWN:
+ case 'j':
+ if (crow + 1 < rows())
+ {
+ ++crow;
+ if (crow - absr >= drows)
+ absr = crow - drows + 1;
+ }
+ break;
+ case KEY_PAGE_UP:
+ case 'K':
+ if (crow >= drows + min_row)
+ {
+ crow -= drows;
+ if (absr >= drows)
+ absr -= drows;
+ else
+ absr = 0;
+ }
+ else
+ {
+ crow = min_row;
+ absr = 0;
+ }
+ break;
+ case KEY_PAGE_DOWN:
+ case 'J':
+ if (crow + 1 + drows < rows())
+ {
+ crow += drows;
+ if (absr + drows <= max_absr)
+ absr += drows;
+ else
+ absr = max_absr;
+ }
+ else
+ {
+ crow = rows() - 1;
+ absr = max_absr;
+ }
+ break;
+ case KEY_ESC:
+ Jdb::abort_command();
+ return false;
+ default:
+ if (Jdb::is_toplevel_cmd(c))
+ return false;
+ break;
+ }
+
+ if (absc > max_absc)
+ absc = max_absc;
+ if (absr > max_absr)
+ absr = max_absr;