diff options
author | mitchell <70453897+orbitalquark@users.noreply.github.com> | 2020-09-19 17:43:04 -0400 |
---|---|---|
committer | mitchell <70453897+orbitalquark@users.noreply.github.com> | 2020-09-19 17:43:04 -0400 |
commit | 86fbeb5f24a0a5b7a116ba2ac7ea6f1a07ba02f2 (patch) | |
tree | 8e5dfb1d23afda63c9d52fbe94a81f510ec89800 /src/textadept.c | |
parent | 14e524cf217250388d374433cf6f3241f66e4e01 (diff) |
Added `events.COMMAND_TEXT_CHANGED`.
This is analagous to `events.FIND_TEXT_CHANGED`.
Diffstat (limited to 'src/textadept.c')
-rw-r--r-- | src/textadept.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/textadept.c b/src/textadept.c index 9b1a8b8a..d0edf402 100644 --- a/src/textadept.c +++ b/src/textadept.c @@ -1913,8 +1913,12 @@ static void emit_notification(lua_State *L, SCNotification *n) { /** Signal for a Scintilla notification. */ static void notified(Scintilla *view, int _, SCNotification *n, void *L) { - if (focused_view == view || n->nmhdr.code == SCN_URIDROPPED) { - if (focused_view != view) view_focused(view, L); + if (view == command_entry) { + if (n->nmhdr.code == SCN_MODIFIED && + (n->modificationType & (SC_MOD_INSERTTEXT | SC_MOD_DELETETEXT))) + emit(L, "command_text_changed", -1); + } else if (view == focused_view || n->nmhdr.code == SCN_URIDROPPED) { + if (view != focused_view) view_focused(view, L); emit_notification(L, n); } else if (n->nmhdr.code == SCN_FOCUSIN) view_focused(view, L); @@ -2348,6 +2352,7 @@ static void new_window() { command_entry = scintilla_new(); gtk_widget_set_size_request(command_entry, 1, 1); + g_signal_connect(command_entry, SCINTILLA_NOTIFY, G_CALLBACK(notified), lua); g_signal_connect(command_entry, "key-press-event", G_CALLBACK(keypress), lua); g_signal_connect( command_entry, "focus-out-event", G_CALLBACK(focus_lost), lua); @@ -2371,7 +2376,7 @@ static void new_window() { dummy_view = scintilla_new(); #elif CURSES pane = new_pane(new_view(0)), resize_pane(pane, LINES - 2, COLS, 1, 0); - command_entry = scintilla_new(NULL, NULL); + command_entry = scintilla_new(notified, lua); wresize(scintilla_get_window(command_entry), 1, COLS); mvwin(scintilla_get_window(command_entry), LINES - 2, 0); dummy_view = scintilla_new(NULL, NULL); |