Ticket #2499 (action to the mark current word)
added action CK_Mark_Word to the mark current word changed double-click the mouse handler of the editor Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
Этот коммит содержится в:
родитель
6cd8812756
Коммит
afed48a44a
@ -84,6 +84,8 @@ static name_keymap_t command_names[] = {
|
|||||||
{"EditRemove", CK_Remove},
|
{"EditRemove", CK_Remove},
|
||||||
{"EditMarkAll", CK_Mark_All},
|
{"EditMarkAll", CK_Mark_All},
|
||||||
{"EditUnmark", CK_Unmark},
|
{"EditUnmark", CK_Unmark},
|
||||||
|
{"EditMarkWord", CK_Mark_Word},
|
||||||
|
{"EditMarkLine", CK_Mark_Line},
|
||||||
{"EditSaveBlock", CK_Save_Block},
|
{"EditSaveBlock", CK_Save_Block},
|
||||||
{"EditColumnMark", CK_Column_Mark},
|
{"EditColumnMark", CK_Column_Mark},
|
||||||
{"EditFind", CK_Find},
|
{"EditFind", CK_Find},
|
||||||
|
@ -65,6 +65,8 @@
|
|||||||
#define CK_Shift_Block_Left 211
|
#define CK_Shift_Block_Left 211
|
||||||
#define CK_Shift_Block_Right 212
|
#define CK_Shift_Block_Right 212
|
||||||
#define CK_Mark_All 213
|
#define CK_Mark_All 213
|
||||||
|
#define CK_Mark_Word 214
|
||||||
|
#define CK_Mark_Line 215
|
||||||
|
|
||||||
/* search and replace */
|
/* search and replace */
|
||||||
#define CK_Find 301
|
#define CK_Find 301
|
||||||
|
@ -45,6 +45,8 @@ EditRemove = f8
|
|||||||
EditMarkAll =
|
EditMarkAll =
|
||||||
EditUnmark =
|
EditUnmark =
|
||||||
EditFind = f7
|
EditFind = f7
|
||||||
|
EditMarkLine =
|
||||||
|
EditMarkWord =
|
||||||
|
|
||||||
EditShiftBlockLeft =
|
EditShiftBlockLeft =
|
||||||
EditShiftBlockRight =
|
EditShiftBlockRight =
|
||||||
|
@ -43,6 +43,8 @@ EditRemove = f8
|
|||||||
EditMarkAll =
|
EditMarkAll =
|
||||||
EditUnmark =
|
EditUnmark =
|
||||||
EditFind = f7; ctrl-s
|
EditFind = f7; ctrl-s
|
||||||
|
EditMarkLine =
|
||||||
|
EditMarkWord =
|
||||||
|
|
||||||
EditShiftBlockLeft =
|
EditShiftBlockLeft =
|
||||||
EditShiftBlockRight =
|
EditShiftBlockRight =
|
||||||
|
@ -278,6 +278,8 @@ int edit_new_cmd (WEdit * edit);
|
|||||||
int edit_reload (WEdit * edit, const char *filename);
|
int edit_reload (WEdit * edit, const char *filename);
|
||||||
int edit_load_cmd (WEdit * edit, edit_current_file_t what);
|
int edit_load_cmd (WEdit * edit, edit_current_file_t what);
|
||||||
void edit_mark_cmd (WEdit * edit, int unmark);
|
void edit_mark_cmd (WEdit * edit, int unmark);
|
||||||
|
void edit_mark_current_word_cmd (WEdit * edit);
|
||||||
|
void edit_mark_current_line_cmd (WEdit * edit);
|
||||||
void edit_set_markers (WEdit * edit, long m1, long m2, int c1, int c2);
|
void edit_set_markers (WEdit * edit, long m1, long m2, int c1, int c2);
|
||||||
void edit_push_markers (WEdit * edit);
|
void edit_push_markers (WEdit * edit);
|
||||||
void edit_replace_cmd (WEdit * edit, int again);
|
void edit_replace_cmd (WEdit * edit, int again);
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
|
2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||||
|
|
||||||
Authors: Paul Sheer 1996, 1997
|
Authors: Paul Sheer 1996, 1997
|
||||||
Ilia Maslakov <il.smind@gmail.com> 2009, 2010, 2011
|
Ilia Maslakov <il.smind@gmail.com> 2009, 2010, 2011
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -663,6 +663,7 @@ get_prev_undo_action (WEdit * edit)
|
|||||||
c = edit->undo_stack[(sp - 1) & edit->undo_stack_size_mask];
|
c = edit->undo_stack[(sp - 1) & edit->undo_stack_size_mask];
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
/** is called whenever a modification is made by one of the four routines below */
|
/** is called whenever a modification is made by one of the four routines below */
|
||||||
|
|
||||||
@ -3239,6 +3240,56 @@ edit_mark_cmd (WEdit * edit, int unmark)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
/** highlight the word under cursor */
|
||||||
|
|
||||||
|
void
|
||||||
|
edit_mark_current_word_cmd (WEdit * edit)
|
||||||
|
{
|
||||||
|
long pos;
|
||||||
|
|
||||||
|
for (pos = edit->curs1; pos != 0; pos--)
|
||||||
|
{
|
||||||
|
int c1, c2;
|
||||||
|
|
||||||
|
c1 = edit_get_byte (edit, pos);
|
||||||
|
c2 = edit_get_byte (edit, pos - 1);
|
||||||
|
if (!isspace (c1) && isspace (c2))
|
||||||
|
break;
|
||||||
|
if ((my_type_of (c1) & my_type_of (c2)) == 0)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
edit->mark1 = pos;
|
||||||
|
|
||||||
|
for (; pos < edit->last_byte; pos++)
|
||||||
|
{
|
||||||
|
int c1, c2;
|
||||||
|
|
||||||
|
c1 = edit_get_byte (edit, pos);
|
||||||
|
c2 = edit_get_byte (edit, pos + 1);
|
||||||
|
if (!isspace (c1) && isspace (c2))
|
||||||
|
break;
|
||||||
|
if ((my_type_of (c1) & my_type_of (c2)) == 0)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
edit->mark2 = min (pos + 1, edit->last_byte);
|
||||||
|
|
||||||
|
edit->force |= REDRAW_LINE_ABOVE | REDRAW_AFTER_CURSOR;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
void
|
||||||
|
edit_mark_current_line_cmd (WEdit * edit)
|
||||||
|
{
|
||||||
|
long pos = edit->curs1;
|
||||||
|
|
||||||
|
edit->mark1 = edit_bol (edit, pos);
|
||||||
|
edit->mark2 = edit_eol (edit, pos);
|
||||||
|
|
||||||
|
edit->force |= REDRAW_LINE_ABOVE | REDRAW_AFTER_CURSOR;
|
||||||
|
}
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -3811,7 +3862,18 @@ edit_execute_cmd (WEdit * edit, unsigned long command, int char_for_insertion)
|
|||||||
edit->column_highlight = 0;
|
edit->column_highlight = 0;
|
||||||
edit_mark_cmd (edit, 1);
|
edit_mark_cmd (edit, 1);
|
||||||
break;
|
break;
|
||||||
|
case CK_Mark_Word:
|
||||||
|
if (edit->column_highlight)
|
||||||
|
edit_push_undo_action (edit, COLUMN_ON);
|
||||||
|
edit->column_highlight = 0;
|
||||||
|
edit_mark_current_word_cmd (edit);
|
||||||
|
break;
|
||||||
|
case CK_Mark_Line:
|
||||||
|
if (edit->column_highlight)
|
||||||
|
edit_push_undo_action (edit, COLUMN_ON);
|
||||||
|
edit->column_highlight = 0;
|
||||||
|
edit_mark_current_line_cmd (edit);
|
||||||
|
break;
|
||||||
case CK_Toggle_Line_State:
|
case CK_Toggle_Line_State:
|
||||||
option_line_state = !option_line_state;
|
option_line_state = !option_line_state;
|
||||||
if (option_line_state)
|
if (option_line_state)
|
||||||
|
@ -133,6 +133,20 @@ edit_event (Gpm_Event * event, void *data)
|
|||||||
|| event->x > edit->num_widget_columns || event->y > edit->num_widget_lines + 1)
|
|| event->x > edit->num_widget_columns || event->y > edit->num_widget_lines + 1)
|
||||||
return MOU_NORMAL;
|
return MOU_NORMAL;
|
||||||
|
|
||||||
|
/* Double click */
|
||||||
|
if ((event->type & (GPM_DOUBLE | GPM_UP)) == (GPM_UP | GPM_DOUBLE))
|
||||||
|
{
|
||||||
|
edit_mark_current_word_cmd (edit);
|
||||||
|
goto update;
|
||||||
|
}
|
||||||
|
#if 0
|
||||||
|
/* Triple click */
|
||||||
|
if ((event->type & (GPM_TRIPLE | GPM_UP)) == (GPM_UP | GPM_TRIPLE))
|
||||||
|
{
|
||||||
|
edit_mark_current_line_cmd (edit);
|
||||||
|
goto update;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
/* Wheel events */
|
/* Wheel events */
|
||||||
if ((event->buttons & GPM_B_UP) && (event->type & GPM_DOWN))
|
if ((event->buttons & GPM_B_UP) && (event->type & GPM_DOWN))
|
||||||
{
|
{
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user