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
29
edit/edit.c
29
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;
|
int i;
|
||||||
edit_update_curs_col (edit);
|
edit_update_curs_col (edit);
|
||||||
@ -2414,13 +2414,19 @@ edit_execute_cmd (WEdit *edit, int command, int char_for_insertion)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case CK_Tab:
|
case CK_Tab:
|
||||||
edit_tab_cmd (edit);
|
/* if text marked shift block */
|
||||||
if (option_auto_para_formatting) {
|
if (edit->mark1 != edit->mark2) {
|
||||||
format_paragraph (edit, 0);
|
edit_move_block_to_right (edit);
|
||||||
edit->force |= REDRAW_PAGE;
|
} else {
|
||||||
} else
|
edit_tab_cmd (edit);
|
||||||
check_and_wrap_line (edit);
|
if (option_auto_para_formatting) {
|
||||||
break;
|
format_paragraph (edit, 0);
|
||||||
|
edit->force |= REDRAW_PAGE;
|
||||||
|
} else {
|
||||||
|
check_and_wrap_line (edit);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case CK_Toggle_Insert:
|
case CK_Toggle_Insert:
|
||||||
edit->overwrite = (edit->overwrite == 0);
|
edit->overwrite = (edit->overwrite == 0);
|
||||||
@ -2568,7 +2574,12 @@ edit_execute_cmd (WEdit *edit, int command, int char_for_insertion)
|
|||||||
edit_replace_cmd (edit, 1);
|
edit_replace_cmd (edit, 1);
|
||||||
break;
|
break;
|
||||||
case CK_Complete_Word:
|
case CK_Complete_Word:
|
||||||
edit_complete_word_cmd (edit);
|
/* if text marked shift block */
|
||||||
|
if (edit->mark1 != edit->mark2) {
|
||||||
|
edit_move_block_to_left (edit);
|
||||||
|
} else {
|
||||||
|
edit_complete_word_cmd (edit);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case CK_Find_Definition:
|
case CK_Find_Definition:
|
||||||
edit_get_match_keyword_cmd (edit);
|
edit_get_match_keyword_cmd (edit);
|
||||||
|
@ -154,6 +154,7 @@ void edit_block_copy_cmd (WEdit * edit);
|
|||||||
void edit_block_move_cmd (WEdit * edit);
|
void edit_block_move_cmd (WEdit * edit);
|
||||||
int edit_block_delete_cmd (WEdit * edit);
|
int edit_block_delete_cmd (WEdit * edit);
|
||||||
void edit_delete_line (WEdit * edit);
|
void edit_delete_line (WEdit * edit);
|
||||||
|
void insert_spaces_tab (WEdit * edit, int half);
|
||||||
|
|
||||||
int edit_delete (WEdit * edit);
|
int edit_delete (WEdit * edit);
|
||||||
void edit_insert (WEdit * edit, int c);
|
void edit_insert (WEdit * edit, int c);
|
||||||
|
@ -1183,7 +1183,6 @@ int edit_block_delete_cmd (WEdit * edit)
|
|||||||
return edit_block_delete (edit);
|
return edit_block_delete (edit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#define INPUT_INDEX 9
|
#define INPUT_INDEX 9
|
||||||
#define SEARCH_DLG_WIDTH 58
|
#define SEARCH_DLG_WIDTH 58
|
||||||
#define SEARCH_DLG_HEIGHT 10
|
#define SEARCH_DLG_HEIGHT 10
|
||||||
@ -3189,3 +3188,73 @@ edit_get_match_keyword_cmd (WEdit *edit)
|
|||||||
}
|
}
|
||||||
g_free (match_expr);
|
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