Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/edit/edit.c

    rc8444d8 r8f6bffdd  
    126126static int file_save_range(char const *fname, spt_t const *spos,
    127127    spt_t const *epos);
     128static char *filename_prompt(char const *prompt, char const *init_value);
    128129static char *range_get_str(spt_t const *spos, spt_t const *epos);
    129 
    130 static char *prompt(char const *prompt, char const *init_value);
    131130
    132131static void pane_text_display(void);
     
    143142static void caret_move_word_left(void);
    144143static void caret_move_word_right(void);
    145 static void caret_move_to_line(int row);
    146 static void caret_go_to_line_ask(void);
    147144
    148145static bool selection_active(void);
     
    407404                caret_move_word_left();
    408405                break;
    409         case KC_L:
    410                 caret_go_to_line_ask();
    411                 break;
    412406        default:
    413407                break;
     
    429423}
    430424
    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)
     425static void key_handle_movement(unsigned int key, bool select)
    434426{
    435427        spt_t pt;
     
    443435        had_sel = !spt_equal(&caret_pt, &pt);
    444436
    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        }
    446465
    447466        if (select == false) {
     
    468487}
    469488
    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 
    502489/** Save the document. */
    503490static int file_save(char const *fname)
     
    533520        char *fname;
    534521       
    535         fname = prompt("Save As", old_fname);
     522        fname = filename_prompt("Save As", old_fname);
    536523        if (fname == NULL) {
    537524                status_display("Save cancelled.");
     
    548535}
    549536
    550 /** Ask for a string. */
    551 static char *prompt(char const *prompt, char const *init_value)
     537/** Ask for a file name. */
     538static char *filename_prompt(char const *prompt, char const *init_value)
    552539{
    553540        kbd_event_t ev;
     
    855842                /* Fill until the end of display area. */
    856843
    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);
    859846                else
    860847                        fill = 0;
     
    10901077        pane.rflags |= REDRAW_TEXT;
    10911078}
    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 
    11271079
    11281080/** Check for non-empty selection. */
Note: See TracChangeset for help on using the changeset viewer.