Ticket #303: 0001-Add-edit_move_block_to_left-edit_move_block_to_righ.patch
File 0001-Add-edit_move_block_to_left-edit_move_block_to_righ.patch, 4.5 KB (added by angel_il, 15 years ago) |
---|
-
edit/edit.c
From 47dd46a1c232762bb8f9d327cca1f59b8e9a79f7 Mon Sep 17 00:00:00 2001 From: Ilia Maslakov <il.smind@gmail.com> Date: Sun, 22 Mar 2009 22:53:21 +0000 Subject: [PATCH] Add edit_move_block_to_left, edit_move_block_to_right procedure for shift block. Tab: if block selected, shift block to right, M-Tab(complete): if block selected, shift block to left. Remove "static" from insert_spaces_tab. --- edit/edit.c | 29 +++++++++++++++------- edit/editcmd.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 90 insertions(+), 10 deletions(-) diff --git a/edit/edit.c b/edit/edit.c index 2b88204..a236987 100644
a b edit_delete_line (WEdit *edit) 1900 1900 }; 1901 1901 } 1902 1902 1903 staticvoid insert_spaces_tab (WEdit * edit, int half)1903 void insert_spaces_tab (WEdit * edit, int half) 1904 1904 { 1905 1905 int i; 1906 1906 edit_update_curs_col (edit); … … edit_execute_cmd (WEdit *edit, int command, int char_for_insertion) 2377 2377 break; 2378 2378 2379 2379 case CK_Tab: 2380 edit_tab_cmd (edit); 2381 if (option_auto_para_formatting) { 2382 format_paragraph (edit, 0); 2383 edit->force |= REDRAW_PAGE; 2384 } else 2385 check_and_wrap_line (edit); 2386 break; 2380 /* if text marked shift block */ 2381 if (edit->mark1 != edit->mark2) { 2382 edit_move_block_to_right (edit); 2383 } else { 2384 edit_tab_cmd (edit); 2385 if (option_auto_para_formatting) { 2386 format_paragraph (edit, 0); 2387 edit->force |= REDRAW_PAGE; 2388 } else { 2389 check_and_wrap_line (edit); 2390 } 2391 } 2392 break; 2387 2393 2388 2394 case CK_Toggle_Insert: 2389 2395 edit->overwrite = (edit->overwrite == 0); … … edit_execute_cmd (WEdit *edit, int command, int char_for_insertion) 2531 2537 edit_replace_cmd (edit, 1); 2532 2538 break; 2533 2539 case CK_Complete_Word: 2534 edit_complete_word_cmd (edit); 2540 /* if text marked shift block */ 2541 if (edit->mark1 != edit->mark2) { 2542 edit_move_block_to_left (edit); 2543 } else { 2544 edit_complete_word_cmd (edit); 2545 } 2535 2546 break; 2536 2547 case CK_Find_Definition: 2537 2548 edit_get_match_keyword_cmd (edit); -
edit/editcmd.c
diff --git a/edit/editcmd.c b/edit/editcmd.c index d3f8ecf..b4de907 100644
a b int edit_block_delete_cmd (WEdit * edit) 1183 1183 return edit_block_delete (edit); 1184 1184 } 1185 1185 1186 1187 1186 #define INPUT_INDEX 9 1188 1187 #define SEARCH_DLG_WIDTH 58 1189 1188 #define SEARCH_DLG_HEIGHT 10 … … edit_get_match_keyword_cmd (WEdit *edit) 3189 3188 } 3190 3189 g_free (match_expr); 3191 3190 } 3191 3192 void 3193 edit_move_block_to_right (WEdit * edit) 3194 { 3195 long start_mark, end_mark; 3196 long cur_bol, start_bol; 3197 3198 if ( eval_marks (edit, &start_mark, &end_mark) ) 3199 return; 3200 3201 start_bol = edit_bol (edit, start_mark); 3202 cur_bol = edit_bol (edit, end_mark - 1); 3203 do { 3204 edit_cursor_move (edit, cur_bol - edit->curs1); 3205 if ( option_fill_tabs_with_spaces ) { 3206 if ( option_fake_half_tabs ) { 3207 insert_spaces_tab (edit, 1); 3208 } else { 3209 insert_spaces_tab (edit, 0); 3210 } 3211 } else { 3212 edit_insert (edit, '\t'); 3213 } 3214 edit_cursor_move (edit, edit_bol (edit, cur_bol) - edit->curs1); 3215 if ( cur_bol == 0 ) { 3216 break; 3217 } 3218 cur_bol = edit_bol (edit, cur_bol - 1); 3219 } while (cur_bol >= start_bol) ; 3220 edit->force |= REDRAW_PAGE; 3221 } 3222 3223 void 3224 edit_move_block_to_left (WEdit * edit) 3225 { 3226 long start_mark, end_mark; 3227 long cur_bol, start_bol; 3228 int i, del_tab_width; 3229 int next_char; 3230 3231 if ( eval_marks (edit, &start_mark, &end_mark) ) 3232 return; 3233 3234 start_bol = edit_bol (edit, start_mark); 3235 cur_bol = edit_bol (edit, end_mark - 1); 3236 do { 3237 edit_cursor_move (edit, cur_bol - edit->curs1); 3238 if (option_fake_half_tabs) { 3239 del_tab_width = HALF_TAB_SIZE; 3240 } else { 3241 del_tab_width = option_tab_spacing; 3242 } 3243 next_char = edit_get_byte (edit, edit->curs1); 3244 if ( next_char == '\t' ) { 3245 edit_delete (edit); 3246 } else if ( next_char == ' ' ) { 3247 for (i = 1; i <= del_tab_width; i++) { 3248 if ( next_char == ' ' ) { 3249 edit_delete (edit); 3250 } 3251 next_char = edit_get_byte (edit, edit->curs1); 3252 } 3253 } 3254 if ( cur_bol == 0 ) { 3255 break; 3256 } 3257 cur_bol = edit_bol (edit, cur_bol - 1); 3258 } while (cur_bol >= start_bol) ; 3259 edit->force |= REDRAW_PAGE; 3260 }