Merge branch '303_block_shift_unshift'
* 303_block_shift_unshift: Add edit_move_block_to_left, edit_move_block_to_right procedure for shift block. 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.
Этот коммит содержится в:
Коммит
a93bb95872
15
edit/edit.c
15
edit/edit.c
@ -1901,7 +1901,7 @@ edit_delete_line (WEdit *edit)
|
||||
};
|
||||
}
|
||||
|
||||
static void insert_spaces_tab (WEdit * edit, int half)
|
||||
void insert_spaces_tab (WEdit * edit, int half)
|
||||
{
|
||||
int i;
|
||||
edit_update_curs_col (edit);
|
||||
@ -2414,12 +2414,18 @@ edit_execute_cmd (WEdit *edit, int command, int char_for_insertion)
|
||||
break;
|
||||
|
||||
case CK_Tab:
|
||||
/* if text marked shift block */
|
||||
if (edit->mark1 != edit->mark2) {
|
||||
edit_move_block_to_right (edit);
|
||||
} else {
|
||||
edit_tab_cmd (edit);
|
||||
if (option_auto_para_formatting) {
|
||||
format_paragraph (edit, 0);
|
||||
edit->force |= REDRAW_PAGE;
|
||||
} else
|
||||
} else {
|
||||
check_and_wrap_line (edit);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case CK_Toggle_Insert:
|
||||
@ -2568,7 +2574,12 @@ edit_execute_cmd (WEdit *edit, int command, int char_for_insertion)
|
||||
edit_replace_cmd (edit, 1);
|
||||
break;
|
||||
case CK_Complete_Word:
|
||||
/* if text marked shift block */
|
||||
if (edit->mark1 != edit->mark2) {
|
||||
edit_move_block_to_left (edit);
|
||||
} else {
|
||||
edit_complete_word_cmd (edit);
|
||||
}
|
||||
break;
|
||||
case CK_Find_Definition:
|
||||
edit_get_match_keyword_cmd (edit);
|
||||
|
@ -154,6 +154,7 @@ void edit_block_copy_cmd (WEdit * edit);
|
||||
void edit_block_move_cmd (WEdit * edit);
|
||||
int edit_block_delete_cmd (WEdit * edit);
|
||||
void edit_delete_line (WEdit * edit);
|
||||
void insert_spaces_tab (WEdit * edit, int half);
|
||||
|
||||
int edit_delete (WEdit * edit);
|
||||
void edit_insert (WEdit * edit, int c);
|
||||
|
@ -1183,7 +1183,6 @@ int edit_block_delete_cmd (WEdit * edit)
|
||||
return edit_block_delete (edit);
|
||||
}
|
||||
|
||||
|
||||
#define INPUT_INDEX 9
|
||||
#define SEARCH_DLG_WIDTH 58
|
||||
#define SEARCH_DLG_HEIGHT 10
|
||||
@ -3189,3 +3188,73 @@ edit_get_match_keyword_cmd (WEdit *edit)
|
||||
}
|
||||
g_free (match_expr);
|
||||
}
|
||||
|
||||
void
|
||||
edit_move_block_to_right (WEdit * edit)
|
||||
{
|
||||
long start_mark, end_mark;
|
||||
long cur_bol, start_bol;
|
||||
|
||||
if ( eval_marks (edit, &start_mark, &end_mark) )
|
||||
return;
|
||||
|
||||
start_bol = edit_bol (edit, start_mark);
|
||||
cur_bol = edit_bol (edit, end_mark - 1);
|
||||
do {
|
||||
edit_cursor_move (edit, cur_bol - edit->curs1);
|
||||
if ( option_fill_tabs_with_spaces ) {
|
||||
if ( option_fake_half_tabs ) {
|
||||
insert_spaces_tab (edit, 1);
|
||||
} else {
|
||||
insert_spaces_tab (edit, 0);
|
||||
}
|
||||
} else {
|
||||
edit_insert (edit, '\t');
|
||||
}
|
||||
edit_cursor_move (edit, edit_bol (edit, cur_bol) - edit->curs1);
|
||||
if ( cur_bol == 0 ) {
|
||||
break;
|
||||
}
|
||||
cur_bol = edit_bol (edit, cur_bol - 1);
|
||||
} while (cur_bol >= start_bol) ;
|
||||
edit->force |= REDRAW_PAGE;
|
||||
}
|
||||
|
||||
void
|
||||
edit_move_block_to_left (WEdit * edit)
|
||||
{
|
||||
long start_mark, end_mark;
|
||||
long cur_bol, start_bol;
|
||||
int i, del_tab_width;
|
||||
int next_char;
|
||||
|
||||
if ( eval_marks (edit, &start_mark, &end_mark) )
|
||||
return;
|
||||
|
||||
start_bol = edit_bol (edit, start_mark);
|
||||
cur_bol = edit_bol (edit, end_mark - 1);
|
||||
do {
|
||||
edit_cursor_move (edit, cur_bol - edit->curs1);
|
||||
if (option_fake_half_tabs) {
|
||||
del_tab_width = HALF_TAB_SIZE;
|
||||
} else {
|
||||
del_tab_width = option_tab_spacing;
|
||||
}
|
||||
next_char = edit_get_byte (edit, edit->curs1);
|
||||
if ( next_char == '\t' ) {
|
||||
edit_delete (edit);
|
||||
} else if ( next_char == ' ' ) {
|
||||
for (i = 1; i <= del_tab_width; i++) {
|
||||
if ( next_char == ' ' ) {
|
||||
edit_delete (edit);
|
||||
}
|
||||
next_char = edit_get_byte (edit, edit->curs1);
|
||||
}
|
||||
}
|
||||
if ( cur_bol == 0 ) {
|
||||
break;
|
||||
}
|
||||
cur_bol = edit_bol (edit, cur_bol - 1);
|
||||
} while (cur_bol >= start_bol) ;
|
||||
edit->force |= REDRAW_PAGE;
|
||||
}
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user