Changes in uspace/app/edit/edit.c [8f6bffdd:c8444d8] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/edit/edit.c
r8f6bffdd rc8444d8 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);129 128 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); 130 131 131 132 static void pane_text_display(void); … … 142 143 static void caret_move_word_left(void); 143 144 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); 144 147 145 148 static bool selection_active(void); … … 404 407 caret_move_word_left(); 405 408 break; 409 case KC_L: 410 caret_go_to_line_ask(); 411 break; 406 412 default: 407 413 break; … … 423 429 } 424 430 425 static void key_handle_movement(unsigned int key, bool select) 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) 426 434 { 427 435 spt_t pt; … … 435 443 had_sel = !spt_equal(&caret_pt, &pt); 436 444 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 } 445 caret_move(drow, dcolumn, align_dir); 465 446 466 447 if (select == false) { … … 487 468 } 488 469 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 489 502 /** Save the document. */ 490 503 static int file_save(char const *fname) … … 520 533 char *fname; 521 534 522 fname = filename_prompt("Save As", old_fname);535 fname = prompt("Save As", old_fname); 523 536 if (fname == NULL) { 524 537 status_display("Save cancelled."); … … 535 548 } 536 549 537 /** Ask for a file name. */538 static char * filename_prompt(char const *prompt, char const *init_value)550 /** Ask for a string. */ 551 static char *prompt(char const *prompt, char const *init_value) 539 552 { 540 553 kbd_event_t ev; … … 842 855 /* Fill until the end of display area. */ 843 856 844 if ( str_length(row_buf) < (unsigned)scr_columns)845 fill = scr_columns - str_length(row_buf);857 if ((unsigned)s_column - 1 < scr_columns) 858 fill = scr_columns - (s_column - 1); 846 859 else 847 860 fill = 0; … … 1077 1090 pane.rflags |= REDRAW_TEXT; 1078 1091 } 1092 1093 /** Change the caret position to a beginning of a given line 1094 */ 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 1079 1127 1080 1128 /** Check for non-empty selection. */
Note:
See TracChangeset
for help on using the changeset viewer.