Changes in uspace/app/edit/edit.c [c8444d8:8f6bffdd] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/edit/edit.c
rc8444d8 r8f6bffdd 126 126 static int file_save_range(char const *fname, spt_t const *spos, 127 127 spt_t const *epos); 128 static char *filename_prompt(char const *prompt, char const *init_value); 128 129 static char *range_get_str(spt_t const *spos, spt_t const *epos); 129 130 static char *prompt(char const *prompt, char const *init_value);131 130 132 131 static void pane_text_display(void); … … 143 142 static void caret_move_word_left(void); 144 143 static void caret_move_word_right(void); 145 static void caret_move_to_line(int row);146 static void caret_go_to_line_ask(void);147 144 148 145 static bool selection_active(void); … … 407 404 caret_move_word_left(); 408 405 break; 409 case KC_L:410 caret_go_to_line_ask();411 break;412 406 default: 413 407 break; … … 429 423 } 430 424 431 /** Move caret while preserving or resetting selection. */ 432 static void caret_movement(int drow, int dcolumn, enum dir_spec align_dir, 433 bool select) 425 static void key_handle_movement(unsigned int key, bool select) 434 426 { 435 427 spt_t pt; … … 443 435 had_sel = !spt_equal(&caret_pt, &pt); 444 436 445 caret_move(drow, dcolumn, align_dir); 437 switch (key) { 438 case KC_LEFT: 439 caret_move(0, -1, dir_before); 440 break; 441 case KC_RIGHT: 442 caret_move(0, 0, dir_after); 443 break; 444 case KC_UP: 445 caret_move(-1, 0, dir_before); 446 break; 447 case KC_DOWN: 448 caret_move(+1, 0, dir_before); 449 break; 450 case KC_HOME: 451 caret_move(0, -ED_INFTY, dir_before); 452 break; 453 case KC_END: 454 caret_move(0, +ED_INFTY, dir_before); 455 break; 456 case KC_PAGE_UP: 457 caret_move(-pane.rows, 0, dir_before); 458 break; 459 case KC_PAGE_DOWN: 460 caret_move(+pane.rows, 0, dir_before); 461 break; 462 default: 463 break; 464 } 446 465 447 466 if (select == false) { … … 468 487 } 469 488 470 static void key_handle_movement(unsigned int key, bool select)471 {472 switch (key) {473 case KC_LEFT:474 caret_movement(0, -1, dir_before, select);475 break;476 case KC_RIGHT:477 caret_movement(0, 0, dir_after, select);478 break;479 case KC_UP:480 caret_movement(-1, 0, dir_before, select);481 break;482 case KC_DOWN:483 caret_movement(+1, 0, dir_before, select);484 break;485 case KC_HOME:486 caret_movement(0, -ED_INFTY, dir_before, select);487 break;488 case KC_END:489 caret_movement(0, +ED_INFTY, dir_before, select);490 break;491 case KC_PAGE_UP:492 caret_movement(-pane.rows, 0, dir_before, select);493 break;494 case KC_PAGE_DOWN:495 caret_movement(+pane.rows, 0, dir_before, select);496 break;497 default:498 break;499 }500 }501 502 489 /** Save the document. */ 503 490 static int file_save(char const *fname) … … 533 520 char *fname; 534 521 535 fname = prompt("Save As", old_fname);522 fname = filename_prompt("Save As", old_fname); 536 523 if (fname == NULL) { 537 524 status_display("Save cancelled."); … … 548 535 } 549 536 550 /** Ask for a string. */551 static char * prompt(char const *prompt, char const *init_value)537 /** Ask for a file name. */ 538 static char *filename_prompt(char const *prompt, char const *init_value) 552 539 { 553 540 kbd_event_t ev; … … 855 842 /* Fill until the end of display area. */ 856 843 857 if ( (unsigned)s_column - 1 <scr_columns)858 fill = scr_columns - (s_column - 1);844 if (str_length(row_buf) < (unsigned) scr_columns) 845 fill = scr_columns - str_length(row_buf); 859 846 else 860 847 fill = 0; … … 1090 1077 pane.rflags |= REDRAW_TEXT; 1091 1078 } 1092 1093 /** Change the caret position to a beginning of a given line1094 */1095 static void caret_move_to_line(int row)1096 {1097 spt_t pt;1098 coord_t coord;1099 1100 tag_get_pt(&pane.caret_pos, &pt);1101 spt_get_coord(&pt, &coord);1102 1103 caret_movement(row - coord.row, 0, dir_before, false);1104 }1105 1106 /** Ask for line and go to it. */1107 static void caret_go_to_line_ask(void)1108 {1109 char *sline;1110 1111 sline = prompt("Go to line", "");1112 if (sline == NULL) {1113 status_display("Go to line cancelled.");1114 return;1115 }1116 1117 char *endptr;1118 int line = strtol(sline, &endptr, 10);1119 if (*endptr != '\0') {1120 status_display("Invalid number entered.");1121 return;1122 }1123 1124 caret_move_to_line(line);1125 }1126 1127 1079 1128 1080 /** Check for non-empty selection. */
Note:
See TracChangeset
for help on using the changeset viewer.