Allow to set script name if a javascript is evaluated.
authorDaniel Carl <danielcarl@gmx.de>
Fri, 1 Mar 2013 14:28:50 +0000 (15:28 +0100)
committerDaniel Carl <danielcarl@gmx.de>
Fri, 1 Mar 2013 14:30:42 +0000 (15:30 +0100)
src/hints.c
src/hints.js
src/main.c
src/main.h

index 56d7155..e41e7de 100644 (file)
@@ -25,6 +25,7 @@
 #include "hints.js.h"
 
 #define HINT_VAR "VpHint"
+#define HINT_FILE "hints.js"
 
 static void hints_run_script(char* js);
 static void hints_fire(void);
@@ -36,7 +37,9 @@ void hints_init(void)
 {
     char* value = NULL;
     char* error = NULL;
-    vp_eval_script(webkit_web_view_get_main_frame(vp.gui.webview), HINTS_JS, &value, &error);
+    vp_eval_script(
+        webkit_web_view_get_main_frame(vp.gui.webview), HINTS_JS, HINT_FILE, &value, &error
+    );
     g_free(value);
     g_free(error);
 }
@@ -49,7 +52,9 @@ void hints_clear(void)
         char* value = NULL;
         char* error = NULL;
 
-        vp_eval_script(webkit_web_view_get_main_frame(vp.gui.webview), js, &value, &error);
+        vp_eval_script(
+            webkit_web_view_get_main_frame(vp.gui.webview), js, HINT_FILE, &value, &error
+        );
         g_free(value);
         g_free(error);
         g_free(js);
@@ -67,7 +72,7 @@ void hints_create(const char* input, guint mode, const guint prefixLength)
         vp.hints.num          = 0;
 
         js = g_strdup_printf(
-            "var %s = new VimpHints('%s', '%s', '%s', '%s');",
+            "%s = new VimpHints('%s', '%s', '%s', '%s');",
             HINT_VAR,
             style->hint_bg,
             style->hint_bg_focus,
@@ -114,7 +119,9 @@ static void hints_run_script(char* js)
     char* error = NULL;
     int mode = vp.hints.mode;
 
-    vp_eval_script(webkit_web_view_get_main_frame(vp.gui.webview), js, &value, &error);
+    vp_eval_script(
+        webkit_web_view_get_main_frame(vp.gui.webview), js, HINT_FILE, &value, &error
+    );
     if (error) {
         fprintf(stderr, "%s\n", error);
         g_free(error);
index 84aeb27..c734e47 100644 (file)
@@ -1,4 +1,5 @@
 VimpHints = function Hints(bg, bgf, fg, style) {
+    "use strict";
     var config = {
         maxHints: 200,
         hintCss: style,
index c54daa4..8a6056f 100644 (file)
@@ -608,7 +608,9 @@ static void vp_run_user_script(void)
         char* value = NULL;
         char* error = NULL;
 
-        vp_eval_script(webkit_web_view_get_main_frame(vp.gui.webview), js, &value, &error);
+        vp_eval_script(
+            webkit_web_view_get_main_frame(vp.gui.webview), js, core.files[FILES_SCRIPT], &value, &error
+        );
         if (error) {
             fprintf(stderr, "%s", error);
             g_free(error);
@@ -619,14 +621,18 @@ static void vp_run_user_script(void)
     }
 }
 
-void vp_eval_script(WebKitWebFrame* frame, char* script, char** value, char** error)
+void vp_eval_script(WebKitWebFrame* frame, char* script, char* file, char** value, char** error)
 {
-    JSContextRef js = webkit_web_frame_get_global_context(frame);
-    JSValueRef exception = NULL;
-    JSValueRef result    = NULL;
-    JSStringRef str      = JSStringCreateWithUTF8CString(script);
+    JSStringRef str, file_name;
+    JSValueRef exception = NULL, result = NULL;
+    JSContextRef js;
 
-    result = JSEvaluateScript(js, str, JSContextGetGlobalObject(js), NULL, 0, &exception);
+    js        = webkit_web_frame_get_global_context(frame);
+    str       = JSStringCreateWithUTF8CString(script);
+    file_name = JSStringCreateWithUTF8CString(file);
+
+    result = JSEvaluateScript(js, str, JSContextGetGlobalObject(js), file_name, 0, &exception);
+    JSStringRelease(file_name);
     JSStringRelease(str);
 
     if (result) {
@@ -638,7 +644,7 @@ void vp_eval_script(WebKitWebFrame* frame, char* script, char** value, char** er
 
 static char* vp_jsref_to_string(JSContextRef context, JSValueRef ref)
 {
-    char *string;
+    charstring;
     JSStringRef str_ref = JSValueToStringCopy(context, ref, NULL);
     size_t len          = JSStringGetMaximumUTF8CStringSize(str_ref);
 
index c93cc7e..7e152e9 100644 (file)
@@ -312,7 +312,7 @@ void vp_update_statusbar(void);
 void vp_update_urlbar(const char* uri);
 void vp_update_status_style(void);
 void vp_echo(const MessageType type, gboolean hide, const char *error, ...);
-void vp_eval_script(WebKitWebFrame* frame, char* script, char** value, char** error);
+void vp_eval_script(WebKitWebFrame* frame, char* script, char* file, char** value, char** error);
 gboolean vp_set_mode(Mode mode, gboolean clean);
 void vp_set_widget_font(GtkWidget* widget, const VpColor* fg, const VpColor* bg, PangoFontDescription* font);
 gboolean vp_load_uri(const Arg* arg);