diff options
-rw-r--r-- | src/find_replace.c | 6 | ||||
-rw-r--r-- | src/lua_interface.c | 38 | ||||
-rw-r--r-- | src/pm.c | 26 | ||||
-rw-r--r-- | src/textadept.c | 57 |
4 files changed, 66 insertions, 61 deletions
diff --git a/src/find_replace.c b/src/find_replace.c index 4d31e178..ebd35de8 100644 --- a/src/find_replace.c +++ b/src/find_replace.c @@ -97,6 +97,9 @@ static int get_flags() { return flags; } +/** Find entry key event. + * Enter - Find next or previous. + */ static bool fe_keypress(GtkWidget *, GdkEventKey *event, gpointer) { // TODO: if incremental, call l_find() if (event->keyval == 0xff0d) { @@ -105,6 +108,9 @@ static bool fe_keypress(GtkWidget *, GdkEventKey *event, gpointer) { } else return false; } +/** Replace entry key event. + * Enter - Find next or previous. + */ static bool re_keypress(GtkWidget *, GdkEventKey *event, gpointer) { if (event->keyval == 0xff0d) { l_find(find_text, get_flags(), true); diff --git a/src/lua_interface.c b/src/lua_interface.c index 920c7b5f..6fbb50fa 100644 --- a/src/lua_interface.c +++ b/src/lua_interface.c @@ -151,10 +151,8 @@ void l_goto_scintilla_window(GtkWidget *editor, int n, bool absolute) { break; } else lua_pop(lua, 1); // value idx += n; - if (idx > lua_objlen(lua, -1)) - idx = 1; - else if (idx < 1) - idx = lua_objlen(lua, -1); + if (idx > lua_objlen(lua, -1)) idx = 1; + else if (idx < 1) idx = lua_objlen(lua, -1); lua_rawgeti(lua, -1, idx); } else lua_rawgeti(lua, -1, n); editor = l_checkview(lua, -1, "No view exists at that index."); @@ -248,20 +246,19 @@ void l_goto_scintilla_buffer(GtkWidget *editor, int n, bool absolute) { sptr_t doc = SS(sci, SCI_GETDOCPOINTER); unsigned int idx = l_get_docpointer_index(doc); idx += n; - if (idx > lua_objlen(lua, -1)) - idx = 1; - else if (idx < 1) - idx = lua_objlen(lua, -1); + if (idx > lua_objlen(lua, -1)) idx = 1; + else if (idx < 1) idx = lua_objlen(lua, -1); lua_rawgeti(lua, -1, idx); } else lua_rawgeti(lua, -1, n); sptr_t doc = l_checkdocpointer(lua, -1, "No buffer exists at that index."); // Save previous buffer's properties. lua_getglobal(lua, "buffer"); - l_set_bufferp("_anchor", SS(sci, SCI_GETANCHOR)); - l_set_bufferp("_current_pos", SS(sci, SCI_GETCURRENTPOS)); - l_set_bufferp("_first_visible_line", - SS(sci, SCI_DOCLINEFROMVISIBLE, SS(sci, SCI_GETFIRSTVISIBLELINE))); - lua_pop(lua, 1); // buffer + if (lua_istable(lua, -1)) { + l_set_bufferp("_anchor", SS(sci, SCI_GETANCHOR)); + l_set_bufferp("_current_pos", SS(sci, SCI_GETCURRENTPOS)); + l_set_bufferp("_first_visible_line", + SS(sci, SCI_DOCLINEFROMVISIBLE, SS(sci, SCI_GETFIRSTVISIBLELINE))); + } lua_pop(lua, 1); // buffer // Change the view. SS(sci, SCI_SETDOCPOINTER, 0, doc); l_set_buffer_global(sci); @@ -442,8 +439,7 @@ void l_pm_populate(GtkTreeIter *initial_iter) { lua_pop(lua, 1); // display text } else warn("pm.populate: id key must have table value."); lua_pop(lua, 1); // value - } - lua_pop(lua, 1); // returned table + } lua_pop(lua, 1); // returned table } void l_pm_get_full_path(GtkTreePath *path) { @@ -486,13 +482,11 @@ void l_pm_popup_context_menu(GdkEventButton *event, GCallback callback) { menu_item = gtk_image_menu_item_new_from_stock(label, NULL); else if (streq(label, "separator")) menu_item = gtk_separator_menu_item_new(); - else - menu_item = gtk_menu_item_new_with_mnemonic(label); + else menu_item = gtk_menu_item_new_with_mnemonic(label); g_signal_connect(menu_item, "activate", callback, 0); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item); lua_pop(lua, 1); // value - } - lua_pop(lua, 1); // returned table + } lua_pop(lua, 1); // returned table gtk_widget_show_all(menu); gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, event ? event->button : 0, @@ -566,8 +560,7 @@ static long l_toscintillaparam(LS *lua, int type, int &arg_idx) { (SCMOD_SHIFT | SCMOD_CTRL | SCMOD_ALT)) << 16); else if (type > tVOID && type < tBOOL) return static_cast<long>(luaL_checknumber(lua, arg_idx++)); - else - return 0; + else return 0; } static bool l_is_ta_table_key(LS *lua, const char *table, const char *key) { @@ -716,8 +709,7 @@ LF l_view_mt_index(LS *lua) { if (GTK_IS_PANED(gtk_widget_get_parent(editor))) lua_pushnumber(lua, gtk_paned_get_position(GTK_PANED(gtk_widget_get_parent(editor)))); - else - lua_pushnil(lua); + else lua_pushnil(lua); } else lua_rawget(lua, 1); return 1; } @@ -2,6 +2,8 @@ #include "textadept.h" +#define signal(o, s, c) g_signal_connect(G_OBJECT(o), s, G_CALLBACK(c), 0) + GtkWidget *pm_view, *pm_entry, *pm_container; GtkTreeStore *pm_store; @@ -59,20 +61,13 @@ GtkWidget* pm_create_ui() { gtk_container_add(GTK_CONTAINER(scrolled), pm_view); gtk_box_pack_start(GTK_BOX(pm_container), scrolled, true, true, 0); - g_signal_connect(G_OBJECT(pm_entry), "activate", - G_CALLBACK(pm_entry_activated), 0); - g_signal_connect(G_OBJECT(pm_entry), "key_press_event", - G_CALLBACK(pm_entry_keypress), 0); - g_signal_connect(G_OBJECT(pm_view), "row_expanded", - G_CALLBACK(pm_row_expanded), 0); - g_signal_connect(G_OBJECT(pm_view), "row_collapsed", - G_CALLBACK(pm_row_collapsed), 0); - g_signal_connect(G_OBJECT(pm_view), "row_activated", - G_CALLBACK(pm_row_activated), 0); - g_signal_connect(G_OBJECT(pm_view), "button_press_event", - G_CALLBACK(pm_button_press), 0); - g_signal_connect(G_OBJECT(pm_view), "popup-menu", - G_CALLBACK(pm_popup_menu), 0); + signal(pm_entry, "activate", pm_entry_activated); + signal(pm_entry, "key_press_event", pm_entry_keypress); + signal(pm_view, "row_expanded", pm_row_expanded); + signal(pm_view, "row_collapsed", pm_row_collapsed); + signal(pm_view, "row_activated", pm_row_activated); + signal(pm_view, "button_press_event", pm_button_press); + signal(pm_view, "popup-menu", pm_popup_menu); return pm_container; } @@ -158,6 +153,9 @@ static void pm_entry_activated(GtkWidget *widget, gpointer) { if (l_pm_get_contents_for(entry_text)) l_pm_populate(); } +/** Project manager entry key events. + * Ctrl+Tab - Refocuses the Scintilla view. + */ static bool pm_entry_keypress(GtkWidget *, GdkEventKey *event, gpointer) { if (event->keyval == 0xff09 && event->state == GDK_CONTROL_MASK) { gtk_widget_grab_focus(focused_editor); diff --git a/src/textadept.c b/src/textadept.c index 98096123..5bdaa477 100644 --- a/src/textadept.c +++ b/src/textadept.c @@ -87,9 +87,7 @@ void new_scintilla_buffer(ScintillaObject *sci, bool create, bool addref) { doc = SS(sci, SCI_GETDOCPOINTER); if (create) { // create the new document doc = SS(sci, SCI_CREATEDOCUMENT); - //SS(sci, SCI_SETDOCPOINTER, 0, doc); - int index = l_add_scintilla_buffer(doc); - l_goto_scintilla_buffer(focused_editor, index); + l_goto_scintilla_buffer(focused_editor, l_add_scintilla_buffer(doc)); } else if (addref) { l_add_scintilla_buffer(doc); SS(sci, SCI_ADDREFDOCUMENT, 0, doc); @@ -147,28 +145,27 @@ void remove_scintilla_windows_in_pane(GtkWidget *pane) { bool unsplit_window(GtkWidget *editor) { GtkWidget *pane = gtk_widget_get_parent(editor); - if (GTK_IS_PANED(pane)) { - GtkWidget *other = gtk_paned_get_child1(GTK_PANED(pane)); - if (other == editor) other = gtk_paned_get_child2(GTK_PANED(pane)); - g_object_ref(editor); g_object_ref(other); - gtk_container_remove(GTK_CONTAINER(pane), editor); - gtk_container_remove(GTK_CONTAINER(pane), other); - GTK_IS_PANED(other) ? remove_scintilla_windows_in_pane(other) - : remove_scintilla_window(other); - GtkWidget *parent = gtk_widget_get_parent(pane); - gtk_container_remove(GTK_CONTAINER(parent), pane); - if (GTK_IS_PANED(parent)) - if (!gtk_paned_get_child1(GTK_PANED(parent))) - gtk_paned_add1(GTK_PANED(parent), editor); - else - gtk_paned_add2(GTK_PANED(parent), editor); + if (!GTK_IS_PANED(pane)) return false; + GtkWidget *other = gtk_paned_get_child1(GTK_PANED(pane)); + if (other == editor) other = gtk_paned_get_child2(GTK_PANED(pane)); + g_object_ref(editor); g_object_ref(other); + gtk_container_remove(GTK_CONTAINER(pane), editor); + gtk_container_remove(GTK_CONTAINER(pane), other); + GTK_IS_PANED(other) ? remove_scintilla_windows_in_pane(other) + : remove_scintilla_window(other); + GtkWidget *parent = gtk_widget_get_parent(pane); + gtk_container_remove(GTK_CONTAINER(parent), pane); + if (GTK_IS_PANED(parent)) + if (!gtk_paned_get_child1(GTK_PANED(parent))) + gtk_paned_add1(GTK_PANED(parent), editor); else - gtk_container_add(GTK_CONTAINER(parent), editor); - gtk_widget_show_all(parent); - gtk_widget_grab_focus(GTK_WIDGET(editor)); - g_object_unref(editor); g_object_unref(other); - return true; - } else return false; + gtk_paned_add2(GTK_PANED(parent), editor); + else + gtk_container_add(GTK_CONTAINER(parent), editor); + gtk_widget_show_all(parent); + gtk_widget_grab_focus(GTK_WIDGET(editor)); + g_object_unref(editor); g_object_unref(other); + return true; } void resize_split(GtkWidget *editor, int pos, bool increment) { @@ -205,6 +202,15 @@ void c_insert(const char *t) { gtk_editable_set_position(GTK_EDITABLE(command_entry), pos); } +/** Command entry key events. + * Escape - Hide the completion buffer if it's open. + * Tab - Show completion buffer. + * Alt+B - Insert 'buffer'. + * Alt+F - Insert 'find'. + * Alt+P - Insert 'pm'. + * Alt+T - Insert 'textadept'. + * Alt+V - Insert 'view'. + */ static bool c_keypress(GtkWidget *widget, GdkEventKey *event, gpointer) { if (event->state == 0) switch(event->keyval) { @@ -244,6 +250,9 @@ static bool t_keypress(GtkWidget*, GdkEventKey *event, gpointer) { return l_handle_keypress(event->keyval, event); } +/** Window key events. + * Escape - hides the search dialog if it's open. + */ static bool w_keypress(GtkWidget*, GdkEventKey *event, gpointer) { if (event->keyval == 0xff1b && GTK_WIDGET_VISIBLE(findbox)) { gtk_widget_hide(findbox); |