From dfd1f1c64c902134083204dcdc27775ed6997dce Mon Sep 17 00:00:00 2001 From: Daniel Carl Date: Fri, 1 Mar 2013 15:28:50 +0100 Subject: [PATCH] Allow to set script name if a javascript is evaluated. --- src/hints.c | 15 +++++++++++---- src/hints.js | 1 + src/main.c | 22 ++++++++++++++-------- src/main.h | 2 +- 4 files changed, 27 insertions(+), 13 deletions(-) diff --git a/src/hints.c b/src/hints.c index 56d7155..e41e7de 100644 --- a/src/hints.c +++ b/src/hints.c @@ -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); diff --git a/src/hints.js b/src/hints.js index 84aeb27..c734e47 100644 --- a/src/hints.js +++ b/src/hints.js @@ -1,4 +1,5 @@ VimpHints = function Hints(bg, bgf, fg, style) { + "use strict"; var config = { maxHints: 200, hintCss: style, diff --git a/src/main.c b/src/main.c index c54daa4..8a6056f 100644 --- a/src/main.c +++ b/src/main.c @@ -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; + char* string; JSStringRef str_ref = JSValueToStringCopy(context, ref, NULL); size_t len = JSStringGetMaximumUTF8CStringSize(str_ref); diff --git a/src/main.h b/src/main.h index c93cc7e..7e152e9 100644 --- a/src/main.h +++ b/src/main.h @@ -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); -- 2.20.1