1
1

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.
Этот коммит содержится в:
Ilia Maslakov 2009-04-06 21:17:55 +00:00
родитель 19fddfa787 a8512b94a5
Коммит a93bb95872
3 изменённых файлов: 91 добавлений и 10 удалений

Просмотреть файл

@ -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;
}