aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/find_replace.c6
-rw-r--r--src/lua_interface.c38
-rw-r--r--src/pm.c26
-rw-r--r--src/textadept.c57
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;
}
diff --git a/src/pm.c b/src/pm.c
index 590820cf..398c0631 100644
--- a/src/pm.c
+++ b/src/pm.c
@@ -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);