Merged code from mode.c into main.c
authorDaniel Carl <danielcarl@gmx.de>
Sat, 21 Feb 2015 22:02:08 +0000 (23:02 +0100)
committerDaniel Carl <danielcarl@gmx.de>
Sat, 21 Feb 2015 22:02:08 +0000 (23:02 +0100)
src/dom.c
src/ex.c
src/hints.c
src/input.c
src/main.c
src/main.h
src/map.c
src/mode.c [deleted file]
src/mode.h [deleted file]
src/normal.c
tests/test-map.c

index e5e1fc1..5850cc1 100644 (file)
--- a/src/dom.c
+++ b/src/dom.c
@@ -20,7 +20,6 @@
 #include "config.h"
 #include "main.h"
 #include "dom.h"
-#include "mode.h"
 
 extern VbCore vb;
 
@@ -208,7 +207,7 @@ static gboolean auto_insert(Element *element)
      * want to remove the content and force a switch to input mode. And to
      * switch to input mode when this is already active makes no sense. */
     if (vb.mode->id == 'n' && dom_is_editable(element)) {
-        mode_enter('i');
+        vb_enter('i');
 
         return true;
     }
index 1960e7e..a75ae5c 100644 (file)
--- a/src/ex.c
+++ b/src/ex.c
@@ -28,7 +28,6 @@
 #include "ascii.h"
 #include "completion.h"
 #include "hints.h"
-#include "mode.h"
 #include "command.h"
 #include "history.h"
 #include "dom.h"
@@ -279,7 +278,7 @@ VbResult ex_keypress(int key)
 
             case CTRL('['):
             case CTRL('C'):
-                mode_enter('n');
+                vb_enter('n');
                 vb_set_input_text("");
                 break;
 
@@ -361,7 +360,7 @@ VbResult ex_keypress(int key)
     if (check_empty) {
         gtk_text_buffer_get_bounds(buffer, &start, &end);
         if (gtk_text_iter_equal(&start, &end)) {
-            mode_enter('n');
+            vb_enter('n');
             vb_set_input_text("");
         }
     }
@@ -451,7 +450,7 @@ static void input_activate(void)
     switch (*text) {
         case '/': count = 1; /* fall through */
         case '?':
-            mode_enter('n');
+            vb_enter('n');
             command_search(&((Arg){count, cmd}));
             break;
 
@@ -461,7 +460,7 @@ static void input_activate(void)
             break;
 
         case ':':
-            mode_enter('n');
+            vb_enter('n');
             res = ex_run_string(cmd, true);
             if (!(res & VB_CMD_KEEPINPUT)) {
                 /* clear input on success if this is not explicit ommited */
@@ -832,7 +831,7 @@ static VbCmdResult ex_unmap(const ExArg *arg)
 
 static VbCmdResult ex_normal(const ExArg *arg)
 {
-    mode_enter('n');
+    vb_enter('n');
 
     /* if called with bang - don't apply mapping */
     map_handle_string(arg->rhs->str, !arg->bang);
index b0a40ed..0249b8c 100644 (file)
@@ -26,7 +26,6 @@
 #include "dom.h"
 #include "command.h"
 #include "hints.js.h"
-#include "mode.h"
 #include "input.h"
 #include "map.h"
 #include "js.h"
@@ -135,7 +134,7 @@ void hints_create(const char *input)
     if (!hints_parse_prompt(input, &hints.mode, &hints.gmode)) {
         /* if input is not valid, clear possible previous hint mode */
         if (vb.mode->flags & FLAG_HINTING) {
-            mode_enter('n');
+            vb_enter('n');
         }
         return;
     }
@@ -301,11 +300,11 @@ static gboolean call_hints_function(const char *func, int count, JSValueRef para
          * normal mode when the hinting triggered a click that set focus on
          * editable element that lead vimb to switch to input mode. */
         if (!hints.gmode && vb.mode->id == 'c') {
-            mode_enter('n');
+            vb_enter('n');
         }
     } else if (!strncmp(value, "INSERT:", 7)) {
         fire_timeout(false);
-        mode_enter('i');
+        vb_enter('i');
         if (hints.mode == 'e') {
             input_open_editor();
         }
@@ -314,7 +313,7 @@ static gboolean call_hints_function(const char *func, int count, JSValueRef para
         /* switch first to normal mode - else we would clear the inputbox
          * on switching mode also if we want to show yanked data */
         if (!hints.gmode) {
-            mode_enter('n');
+            vb_enter('n');
         }
 
         char *v = (value + 5);
@@ -334,7 +333,7 @@ static gboolean call_hints_function(const char *func, int count, JSValueRef para
             case 'T':
                 vb_echo(VB_MSG_NORMAL, false, "%s %s", (hints.mode == 'T') ? ":tabopen" : ":open", v);
                 if (!hints.gmode) {
-                    mode_enter('c');
+                    vb_enter('c');
                 }
                 break;
 
index 26bd599..8b88254 100644 (file)
@@ -19,7 +19,6 @@
 
 #include "config.h"
 #include <glib/gstdio.h>
-#include "mode.h"
 #include "main.h"
 #include "input.h"
 #include "dom.h"
@@ -81,7 +80,7 @@ VbResult input_keypress(int key)
 
     switch (key) {
         case CTRL('['): /* esc */
-            mode_enter('n');
+            vb_enter('n');
             return RESULT_COMPLETE;
 
         case CTRL('O'):
@@ -95,7 +94,7 @@ VbResult input_keypress(int key)
             return input_open_editor();
 
         case CTRL('Z'):
-            mode_enter('p');
+            vb_enter('p');
             return RESULT_COMPLETE;
     }
 
index 1fe02d5..51c900e 100644 (file)
@@ -34,7 +34,6 @@
 #include "history.h"
 #include "cookiejar.h"
 #include "hsts.h"
-#include "mode.h"
 #include "normal.h"
 #include "ex.h"
 #include "input.h"
 #include "autocmd.h"
 #include "arh.h"
 #include "io.h"
+#include "ascii.h"
 
 /* variables */
 static char *argv0;
 VbCore      vb;
 
 /* callbacks */
+
+static void buffer_changed_cb(GtkTextBuffer* buffer, gpointer data);
 #if WEBKIT_CHECK_VERSION(1, 10, 0)
 static gboolean context_menu_cb(WebKitWebView *view, GtkWidget *menu,
     WebKitHitTestResult *hitTestResult, gboolean keyboard, gpointer data);
@@ -66,6 +68,8 @@ static void webview_request_starting_cb(WebKitWebView *view,
     WebKitNetworkResponse *resp, gpointer data);
 static void destroy_window_cb(GtkWidget *widget);
 static void scroll_cb(GtkAdjustment *adjustment);
+static gboolean input_focus_in_cb(GtkWidget *widget, GdkEventFocus *event,
+    gpointer data);
 static WebKitWebView *inspector_new(WebKitWebInspector *inspector, WebKitWebView *webview);
 static gboolean inspector_show(WebKitWebInspector *inspector);
 static gboolean inspector_close(WebKitWebInspector *inspector);
@@ -115,6 +119,29 @@ static gboolean hide_message();
 static void set_status(const StatusType status);
 static void input_print(gboolean force, const MessageType type, gboolean hide, const char *message);
 static void vb_cleanup(void);
+static void cleanup_modes(void);
+static void free_mode(Mode *mode);
+
+/**
+ * Creates a new mode with given callback functions.
+ */
+void vb_add_mode(char id, ModeTransitionFunc enter, ModeTransitionFunc leave,
+    ModeKeyFunc keypress, ModeInputChangedFunc input_changed)
+{
+    Mode *new = g_slice_new(Mode);
+    new->id            = id;
+    new->enter         = enter;
+    new->leave         = leave;
+    new->keypress      = keypress;
+    new->input_changed = input_changed;
+    new->flags         = 0;
+
+    /* Initialize the hashmap if this was not done before */
+    if (!vb.modes) {
+        vb.modes = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, (GDestroyNotify)free_mode);
+    }
+    g_hash_table_insert(vb.modes, GINT_TO_POINTER(id), new);
+}
 
 void vb_echo_force(const MessageType type, gboolean hide, const char *error, ...)
 {
@@ -142,6 +169,103 @@ void vb_echo(const MessageType type, gboolean hide, const char *error, ...)
     g_free(buffer);
 }
 
+/**
+ * Enter into the new given mode and leave possible active current mode.
+ */
+void vb_enter(char id)
+{
+    Mode *new = g_hash_table_lookup(vb.modes, GINT_TO_POINTER(id));
+
+    g_return_if_fail(new != NULL);
+
+    if (vb.mode) {
+        /* don't do anything if the mode isn't a new one */
+        if (vb.mode == new) {
+            return;
+        }
+
+        /* if there is a active mode, leave this first */
+        if (vb.mode->leave) {
+            vb.mode->leave();
+        }
+    }
+
+    /* reset the flags of the new entered mode */
+    new->flags = 0;
+
+    /* set the new mode so that it is available also in enter function */
+    vb.mode = new;
+    /* call enter only if the new mode isn't the current mode */
+    if (new->enter) {
+        new->enter();
+    }
+
+#ifndef TESTLIB
+    vb_update_statusbar();
+#endif
+}
+
+/**
+ * Set the prompt chars and switch to new mode.
+ *
+ * @id:           Mode id.
+ * @prompt:       Prompt string to set as current prompt.
+ * @print_prompt: Indicates if the new set prompt should be put into inputbox
+ *                after switching the mode.
+ */
+void vb_enter_prompt(char id, const char *prompt, gboolean print_prompt)
+{
+    /* set the prompt to be accessible in vb_enter */
+    strncpy(vb.state.prompt, prompt, PROMPT_SIZE - 1);
+    vb.state.prompt[PROMPT_SIZE - 1] = '\0';
+
+    vb_enter(id);
+
+    if (print_prompt) {
+        /* set it after the mode was entered so that the modes input change
+         * event listener could grep the new prompt */
+        vb_echo_force(VB_MSG_NORMAL, false, vb.state.prompt);
+    }
+}
+
+VbResult vb_handle_key(int key)
+{
+    VbResult res;
+    static gboolean ctrl_v = false;
+
+    if (ctrl_v) {
+        vb.state.processed_key = false;
+        ctrl_v = false;
+
+        return RESULT_COMPLETE;
+    }
+    if (vb.mode->id != 'p' && key == CTRL('V')) {
+        vb.mode->flags |= FLAG_NOMAP;
+        ctrl_v = true;
+
+        return RESULT_MORE;
+    }
+
+    if (vb.mode && vb.mode->keypress) {
+#ifdef DEBUG
+        int flags = vb.mode->flags;
+        int id    = vb.mode->id;
+        res = vb.mode->keypress(key);
+        if (vb.mode) {
+            PRINT_DEBUG(
+                "%c[%d]: %#.2x '%c' -> %c[%d]",
+                id - ' ', flags, key, (key >= 0x20 && key <= 0x7e) ? key : ' ',
+                vb.mode->id - ' ', vb.mode->flags
+            );
+        }
+#else
+        res = vb.mode->keypress(key);
+#endif
+        return res;
+    }
+    return RESULT_ERROR;
+}
+
 static void input_print(gboolean force, const MessageType type, gboolean hide,
     const char *message)
 {
@@ -467,6 +591,28 @@ static gboolean hide_message()
     return false;
 }
 
+/**
+ * Process input changed event on current active mode.
+ */
+static void buffer_changed_cb(GtkTextBuffer* buffer, gpointer data)
+{
+    char *text;
+    GtkTextIter start, end;
+    /* don't observe changes in completion mode */
+    if (vb.mode->flags & FLAG_COMPLETION) {
+        return;
+    }
+    /* don't process changes not typed by the user */
+    if (gtk_widget_is_focus(vb.gui.input) && vb.mode && vb.mode->input_changed) {
+        gtk_text_buffer_get_bounds(buffer, &start, &end);
+        text = gtk_text_buffer_get_text(buffer, &start, &end, false);
+
+        vb.mode->input_changed(text);
+
+        g_free(text);
+    }
+}
+
 #if WEBKIT_CHECK_VERSION(1, 10, 0)
 static gboolean context_menu_cb(WebKitWebView *view, GtkWidget *menu,
     WebKitHitTestResult *hitTestResult, gboolean keyboard, gpointer data)
@@ -613,7 +759,7 @@ static void webview_load_status_cb(WebKitWebView *view, GParamSpec *pspec)
 #endif
             /* if we load a page from a submitted form, leave the insert mode */
             if (vb.mode->id == 'i') {
-                mode_enter('n');
+                vb_enter('n');
             }
             break;
 
@@ -688,6 +834,15 @@ static void scroll_cb(GtkAdjustment *adjustment)
     vb_update_statusbar();
 }
 
+static gboolean input_focus_in_cb(GtkWidget *widget, GdkEventFocus *event,
+    gpointer data)
+{
+    /* enter the command mode if the focus is on inputbox */
+    vb_enter('c');
+
+    return false;
+}
+
 static WebKitWebView *inspector_new(WebKitWebInspector *inspector, WebKitWebView *webview)
 {
     return WEBKIT_WEB_VIEW(webkit_web_view_new());
@@ -857,11 +1012,10 @@ static void init_core(void)
 #endif
 
     /* initialize the modes */
-    mode_init();
-    mode_add('n', normal_enter, normal_leave, normal_keypress, NULL);
-    mode_add('c', ex_enter, ex_leave, ex_keypress, ex_input_changed);
-    mode_add('i', input_enter, input_leave, input_keypress, NULL);
-    mode_add('p', pass_enter, pass_leave, pass_keypress, NULL);
+    vb_add_mode('n', normal_enter, normal_leave, normal_keypress, NULL);
+    vb_add_mode('c', ex_enter, ex_leave, ex_keypress, ex_input_changed);
+    vb_add_mode('i', input_enter, input_leave, input_keypress, NULL);
+    vb_add_mode('p', pass_enter, pass_leave, pass_keypress, NULL);
 
     /* initialize the marks with empty values */
     marks_clear();
@@ -897,7 +1051,7 @@ static void init_core(void)
     }
 
     /* enter normal mode */
-    mode_enter('n');
+    vb_enter('n');
 
     vb.config.default_zoom = 1.0;
 
@@ -992,7 +1146,7 @@ static void setup_signals()
             G_OBJECT(vb.gui.window), "key-press-event", G_CALLBACK(map_keypress), NULL
         );
         g_signal_connect(
-            G_OBJECT(vb.gui.input), "focus-in-event", G_CALLBACK(mode_input_focusin), NULL
+            G_OBJECT(vb.gui.input), "focus-in-event", G_CALLBACK(input_focus_in_cb), NULL
         );
 
         /* inspector */
@@ -1008,7 +1162,7 @@ static void setup_signals()
     /* There is no inputbox in kioskmode - but the contents may be changed in
      * case vimb is controlled via socket. To track inputbox changes is
      * required for the hinting to work. */
-    g_signal_connect(G_OBJECT(vb.gui.buffer), "changed", G_CALLBACK(mode_input_changed), NULL);
+    g_signal_connect(G_OBJECT(vb.gui.buffer), "changed", G_CALLBACK(buffer_changed_cb), NULL);
 
     /* webview adjustment */
     g_signal_connect(G_OBJECT(vb.gui.adjust_v), "value-changed", G_CALLBACK(scroll_cb), NULL);
@@ -1184,11 +1338,11 @@ static gboolean button_relase_cb(WebKitWebView *webview, GdkEventButton *event)
              * element after a click - switch to insert mode. The later is
              * used for WYSIWYG editors where the click runs into a div and
              * not the editable element itself. */
-            mode_enter('i');
+            vb_enter('i');
         } else if (vb.mode->id == 'i' || vb.mode->id == 'c') {
             /* make sure we leave insert mode or command/hint mode if the user
              * click on a none editable element */
-            mode_enter('n');
+            vb_enter('n');
         }
     }
     g_object_unref(result);
@@ -1549,7 +1703,7 @@ static void vb_cleanup(void)
 
     completion_clean();
     map_cleanup();
-    mode_cleanup();
+    cleanup_modes();
     setting_cleanup();
     history_cleanup();
     session_cleanup();
@@ -1574,6 +1728,20 @@ static void vb_cleanup(void)
     }
 }
 
+static void cleanup_modes(void)
+{
+    if (vb.modes) {
+        g_hash_table_destroy(vb.modes);
+        vb.modes = NULL;
+        vb.mode  = NULL;
+    }
+}
+
+static void free_mode(Mode *mode)
+{
+    g_slice_free(Mode, mode);
+}
+
 static gboolean autocmdOptionArgFunc(const gchar *option_name, const gchar *value, gpointer data, GError **error)
 {
     vb.config.cmdargs = g_slist_append(vb.config.cmdargs, g_strdup(value));
index 04be883..97cc83d 100644 (file)
@@ -380,14 +380,20 @@ typedef struct {
 #else
     GdkNativeWindow embed;
 #endif
+    GHashTable      *modes; /* all available browser main modes */
 } VbCore;
 
 /* main object */
 extern VbCore core;
 
 /* functions */
+void vb_add_mode(char id, ModeTransitionFunc enter, ModeTransitionFunc leave,
+    ModeKeyFunc keypress, ModeInputChangedFunc input_changed);
 void vb_echo_force(const MessageType type,gboolean hide, const char *error, ...);
 void vb_echo(const MessageType type, gboolean hide, const char *error, ...);
+void vb_enter(char id);
+void vb_enter_prompt(char id, const char *prompt, gboolean print_prompt);
+VbResult vb_handle_key(int key);
 void vb_set_input_text(const char *text);
 char *vb_get_input_text(void);
 void vb_input_activate(void);
index 123ede9..e7455d6 100644 (file)
--- a/src/map.c
+++ b/src/map.c
@@ -22,7 +22,6 @@
 #include "map.h"
 #include "normal.h"
 #include "ascii.h"
-#include "mode.h"
 
 /* convert the lower 4 bits of byte n to its hex character */
 #define NR2HEX(n)   (n & 0xf) <= 9 ? (n & 0xf) + '0' : (c & 0xf) - 10 + 'a'
@@ -239,7 +238,7 @@ MapState map_handle_keys(const guchar *keys, int keylen, gboolean use_map)
             vb.mode->flags &= ~FLAG_NOMAP;
 
             /* send the key to the parser */
-            if (RESULT_MORE != mode_handle_key((int)qk)) {
+            if (RESULT_MORE != vb_handle_key((int)qk)) {
                 showcmd(0);
                 showlen = 0;
             } else if (showlen > 0) {
diff --git a/src/mode.c b/src/mode.c
deleted file mode 100644 (file)
index 237591e..0000000
+++ /dev/null
@@ -1,192 +0,0 @@
-/**
- * vimb - a webkit based vim like browser.
- *
- * Copyright (C) 2012-2015 Daniel Carl
- *
- * 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
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see http://www.gnu.org/licenses/.
- */
-
-#include "config.h"
-#include "main.h"
-#include "mode.h"
-#include "ascii.h"
-#include <glib.h>
-
-static GHashTable *modes = NULL;
-extern VbCore vb;
-
-static void free_mode(Mode *mode);
-
-
-void mode_init(void)
-{
-    modes = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, (GDestroyNotify)free_mode);
-}
-
-void mode_cleanup(void)
-{
-    if (modes) {
-        g_hash_table_destroy(modes);
-        vb.mode = NULL;
-    }
-}
-
-/**
- * Creates a new mode with given callback functions.
- */
-void mode_add(char id, ModeTransitionFunc enter, ModeTransitionFunc leave,
-    ModeKeyFunc keypress, ModeInputChangedFunc input_changed)
-{
-    Mode *new = g_slice_new(Mode);
-    new->id            = id;
-    new->enter         = enter;
-    new->leave         = leave;
-    new->keypress      = keypress;
-    new->input_changed = input_changed;
-    new->flags         = 0;
-
-    g_hash_table_insert(modes, GINT_TO_POINTER(id), new);
-}
-
-/**
- * Enter into the new given mode and leave possible active current mode.
- */
-void mode_enter(char id)
-{
-    Mode *new = g_hash_table_lookup(modes, GINT_TO_POINTER(id));
-
-    g_return_if_fail(new != NULL);
-
-    if (vb.mode) {
-        /* don't do anything if the mode isn't a new one */
-        if (vb.mode == new) {
-            return;
-        }
-
-        /* if there is a active mode, leave this first */
-        if (vb.mode->leave) {
-            vb.mode->leave();
-        }
-    }
-
-    /* reset the flags of the new entered mode */
-    new->flags = 0;
-
-    /* set the new mode so that it is available also in enter function */
-    vb.mode = new;
-    /* call enter only if the new mode isn't the current mode */
-    if (new->enter) {
-        new->enter();
-    }
-
-#ifndef TESTLIB
-    vb_update_statusbar();
-#endif
-}
-
-/**
- * Set the prompt chars and switch to new mode.
- *
- * @id:           Mode id.
- * @prompt:       Prompt string to set as current prompt.
- * @print_prompt: Indicates if the new set prompt should be put into inputbox
- *                after switching the mode.
- */
-void mode_enter_prompt(char id, const char *prompt, gboolean print_prompt)
-{
-    /* set the prompt to be accessible in mode_enter */
-    strncpy(vb.state.prompt, prompt, PROMPT_SIZE - 1);
-    vb.state.prompt[PROMPT_SIZE - 1] = '\0';
-
-    mode_enter(id);
-
-    if (print_prompt) {
-        /* set it after the mode was entered so that the modes input change
-         * event listener could grep the new prompt */
-        vb_echo_force(VB_MSG_NORMAL, false, vb.state.prompt);
-    }
-}
-
-VbResult mode_handle_key(int key)
-{
-    VbResult res;
-    static gboolean ctrl_v = false;
-
-    if (ctrl_v) {
-        vb.state.processed_key = false;
-        ctrl_v = false;
-
-        return RESULT_COMPLETE;
-    }
-    if (vb.mode->id != 'p' && key == CTRL('V')) {
-        vb.mode->flags |= FLAG_NOMAP;
-        ctrl_v = true;
-
-        return RESULT_MORE;
-    }
-
-    if (vb.mode && vb.mode->keypress) {
-#ifdef DEBUG
-        int flags = vb.mode->flags;
-        int id    = vb.mode->id;
-        res = vb.mode->keypress(key);
-        if (vb.mode) {
-            PRINT_DEBUG(
-                "%c[%d]: %#.2x '%c' -> %c[%d]",
-                id - ' ', flags, key, (key >= 0x20 && key <= 0x7e) ? key : ' ',
-                vb.mode->id - ' ', vb.mode->flags
-            );
-        }
-#else
-        res = vb.mode->keypress(key);
-#endif
-        return res;
-    }
-    return RESULT_ERROR;
-}
-
-gboolean mode_input_focusin(GtkWidget *widget, GdkEventFocus *event, gpointer data)
-{
-    /* enter the command mode if the focus is on inputbox */
-    mode_enter('c');
-
-    return false;
-}
-
-/**
- * Process input changed event on current active mode.
- */
-void mode_input_changed(GtkTextBuffer* buffer, gpointer data)
-{
-    char *text;
-    GtkTextIter start, end;
-    /* don't observe changes in completion mode */
-    if (vb.mode->flags & FLAG_COMPLETION) {
-        return;
-    }
-    /* don't process changes not typed by the user */
-    if (gtk_widget_is_focus(vb.gui.input) && vb.mode && vb.mode->input_changed) {
-        gtk_text_buffer_get_bounds(buffer, &start, &end);
-        text = gtk_text_buffer_get_text(buffer, &start, &end, false);
-
-        vb.mode->input_changed(text);
-
-        g_free(text);
-    }
-}
-
-static void free_mode(Mode *mode)
-{
-    g_slice_free(Mode, mode);
-}
diff --git a/src/mode.h b/src/mode.h
deleted file mode 100644 (file)
index ccac3d5..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * vimb - a webkit based vim like browser.
- *
- * Copyright (C) 2012-2015 Daniel Carl
- *
- * 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
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see http://www.gnu.org/licenses/.
- */
-
-#ifndef _MODE_H
-#define _MODE_H
-
-#include "config.h"
-#include "main.h"
-
-void mode_init(void);
-void mode_cleanup(void);
-void mode_add(char id, ModeTransitionFunc enter, ModeTransitionFunc leave,
-    ModeKeyFunc keypress, ModeInputChangedFunc input_changed);
-void mode_enter(char id);
-void mode_enter_prompt(char id, const char *prompt, gboolean print_prompt);
-VbResult mode_handle_key(int key);
-gboolean mode_input_focusin(GtkWidget *widget, GdkEventFocus *event, gpointer data);
-gboolean mode_input_focusout(GtkWidget *widget, GdkEventFocus *event, gpointer data);
-void mode_input_changed(GtkTextBuffer* buffer, gpointer data);
-
-#endif /* end of include guard: _MODE_H */
index fa9ddfd..b43f48b 100644 (file)
@@ -19,7 +19,6 @@
 
 #include <gdk/gdkkeysyms.h>
 #include "config.h"
-#include "mode.h"
 #include "main.h"
 #include "normal.h"
 #include "ascii.h"
@@ -329,7 +328,7 @@ void pass_leave(void)
 VbResult pass_keypress(int key)
 {
     if (key == CTRL('[')) { /* esc */
-        mode_enter('n');
+        vb_enter('n');
     }
     vb.state.processed_key = false;
     return RESULT_COMPLETE;
@@ -401,12 +400,12 @@ static VbResult normal_descent(const NormalCmdInfo *info)
 static VbResult normal_ex(const NormalCmdInfo *info)
 {
     if (info->key == 'F') {
-        mode_enter_prompt('c', ";t", true);
+        vb_enter_prompt('c', ";t", true);
     } else if (info->key == 'f') {
-        mode_enter_prompt('c', ";o", true);
+        vb_enter_prompt('c', ";o", true);
     } else {
         char prompt[2] = {info->key, '\0'};
-        mode_enter_prompt('c', prompt, true);
+        vb_enter_prompt('c', prompt, true);
     }
 
     return RESULT_COMPLETE;
@@ -415,7 +414,7 @@ static VbResult normal_ex(const NormalCmdInfo *info)
 static VbResult normal_focus_input(const NormalCmdInfo *info)
 {
     if (dom_focus_input(vb.gui.webview)) {
-        mode_enter('i');
+        vb_enter('i');
 
         return RESULT_COMPLETE;
     }
@@ -479,7 +478,7 @@ static VbResult normal_do_hint(const char *prompt)
         return RESULT_ERROR;
     }
 
-    mode_enter_prompt('c', prompt, true);
+    vb_enter_prompt('c', prompt, true);
     return RESULT_COMPLETE;
 }
 
@@ -503,7 +502,7 @@ static VbResult normal_input_open(const NormalCmdInfo *info)
     }
     /* switch mode after setting the input text to not trigger the
      * commands modes input change handler */
-    mode_enter_prompt('c', ":", false);
+    vb_enter_prompt('c', ":", false);
 
     return RESULT_COMPLETE;
 }
@@ -611,7 +610,7 @@ static VbResult normal_open(const NormalCmdInfo *info)
 
 static VbResult normal_pass(const NormalCmdInfo *info)
 {
-    mode_enter('p');
+    vb_enter('p');
     return RESULT_COMPLETE;
 }
 
index e0a66b5..8fe5ace 100644 (file)
@@ -21,7 +21,7 @@
 #include <gdk/gdkkeysyms.h>
 #include <gdk/gdkkeysyms-compat.h>
 #include <src/map.h>
-#include <src/mode.h>
+#include <src/main.h>
 
 static char queue[20];  /* receives the keypresses */
 static int  qpos = 0;   /* points to the queue entry for the next keypress */
@@ -147,9 +147,8 @@ int main(int argc, char *argv[])
     g_test_init(&argc, &argv, NULL);
 
     /* add a test mode to handle the maped sequences */
-    mode_init();
-    mode_add('t', NULL, NULL, keypress, NULL);
-    mode_enter('t');
+    vb_add_mode('t', NULL, NULL, keypress, NULL);
+    vb_enter('t');
     map_init();
 
     g_test_add_func("/test-map/handle_string/simple", test_handle_string_simple);