Remove, it needs a rewrite, most of it worked by accident, whooops! - pkgsrc-localpatches - leot's pkgsrc LOCALPATCHES
(HTM) hg clone https://bitbucket.org/iamleot/pkgsrc-localpatches
(DIR) Log
(DIR) Files
(DIR) Refs
---
(DIR) changeset f3eb7845cd6b2fc0a1b3d7db43eb51dca6b95656
(DIR) parent 11fdbb5d1c9d59e090529b37d3cb1c58c6ced6d3
(HTM) Author: Leonardo Taccari <iamleot@gmail.com>
Date: Sat, 20 Oct 2018 14:49:46
Remove, it needs a rewrite, most of it worked by accident, whooops!
(I will try to adjust that on `view_source_support' branch)
Diffstat:
wip/vimb3-git/patch-normal_view_support.patch | 336 --------------------------
1 files changed, 0 insertions(+), 336 deletions(-)
---
diff -r 11fdbb5d1c9d -r f3eb7845cd6b wip/vimb3-git/patch-normal_view_support.patch
--- a/wip/vimb3-git/patch-normal_view_support.patch Fri Oct 19 14:32:37 2018 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,336 +0,0 @@
-Sync with iamleot/vimb/view_source_support commits.
-
-diff --git src/command.c src/command.c
-index 118881f..41ce87b 100644
---- src/command.c
-+++ src/command.c
-@@ -30,6 +30,7 @@
- #endif
- #include "command.h"
- #include "history.h"
-+#include "util.h"
- #include "main.h"
-
- /**
-@@ -260,3 +261,62 @@ gboolean command_queue(Client *c, const Arg *arg)
- return res;
- }
- #endif
-+
-+gboolean command_spawn_editor(Client *c, const Arg *arg,
-+ GChildWatchFunc callback, gpointer data)
-+{
-+ char **argv = NULL, *file_path = NULL;
-+ char *command = NULL;
-+ int argc;
-+ GPid pid;
-+ gboolean success;
-+ char *editor_command;
-+ GError *error = NULL;
-+
-+ /* get the editor command */
-+ editor_command = GET_CHAR(c, "editor-command");
-+ if (!editor_command || !*editor_command) {
-+ vb_echo(c, MSG_ERROR, TRUE, "No editor-command configured");
-+ return FALSE;
-+ }
-+
-+ /* create a temp file to pass text in/to editor */
-+ if (!util_create_tmp_file(arg->s, &file_path)) {
-+ goto error;
-+ }
-+
-+ /* spawn editor */
-+ command = g_strdup_printf(editor_command, file_path);
-+ if (!g_shell_parse_argv(command, &argc, &argv, NULL)) {
-+ g_critical("Could not parse editor-command '%s'", command);
-+ goto error;
-+ }
-+
-+ success = g_spawn_async(
-+ NULL, argv, NULL, G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD,
-+ NULL, NULL, &pid, &error
-+ );
-+
-+ if (!success) {
-+ g_warning("Could not spawn editor-command: %s", error->message);
-+ g_error_free(error);
-+ goto error;
-+ }
-+ g_strfreev(argv);
-+
-+ EditorData *ed = g_slice_new0(EditorData);
-+ ed->file = file_path;
-+ ed->c = c;
-+ ed->data = data;
-+
-+ /* watch the editor process */
-+ g_child_watch_add(pid, callback, ed);
-+
-+ return TRUE;
-+
-+error:
-+ unlink(file_path);
-+ g_free(file_path);
-+ g_strfreev(argv);
-+ return FALSE;
-+}
-diff --git src/command.h src/command.h
-index c3f8b68..6483a50 100644
---- src/command.h
-+++ src/command.h
-@@ -43,11 +43,18 @@ enum {
- };
- #endif
-
-+typedef struct {
-+ Client *c;
-+ char *file;
-+ gpointer *data;
-+} EditorData;
-+
- gboolean command_search(Client *c, const Arg *arg, bool commit);
- gboolean command_yank(Client *c, const Arg *arg, char buf);
- gboolean command_save(Client *c, const Arg *arg);
- #ifdef FEATURE_QUEUE
- gboolean command_queue(Client *c, const Arg *arg);
- #endif
-+gboolean command_spawn_editor(Client *c, const Arg *arg, GChildWatchFunc callback, gpointer data);
-
- #endif /* end of include guard: _COMMAND_H */
-diff --git src/input.c src/input.c
-index ac6db07..a0646ae 100644
---- src/input.c
-+++ src/input.c
-@@ -22,6 +22,7 @@
- #include <string.h>
-
- #include "ascii.h"
-+#include "command.h"
- #include "config.h"
- #include "input.h"
- #include "main.h"
-@@ -31,13 +32,11 @@
- #include "ext-proxy.h"
-
- typedef struct {
-- Client *c;
-- char *file;
- char *element_id;
- unsigned long element_map_key;
--} EditorData;
-+} ElementEditorData;
-
--static void resume_editor(GPid pid, int status, EditorData *data);
-+static void resume_editor(GPid pid, int status, gpointer data);
-
- /**
- * Function called when vimb enters the input mode.
-@@ -111,25 +110,14 @@ VbResult input_keypress(Client *c, int key)
- VbResult input_open_editor(Client *c)
- {
- static unsigned long element_map_key = 0;
-- char *element_id = NULL, *command = NULL;
-- char **argv = NULL, *file_path = NULL;
-- const char *text = NULL, *id = NULL, *editor_command;
-- int argc;
-- GPid pid;
-+ char *element_id = NULL;
-+ char *text = NULL, *id = NULL;
- gboolean success;
- GVariant *jsreturn;
- GVariant *idreturn;
-- GError *error = NULL;
-
- g_assert(c);
-
-- /* get the editor command */
-- editor_command = GET_CHAR(c, "editor-command");
-- if (!editor_command || !*editor_command) {
-- vb_echo(c, MSG_ERROR, TRUE, "No editor-command configured");
-- return RESULT_ERROR;
-- }
--
- /* get the selected input element */
- jsreturn = ext_proxy_eval_script_sync(c, "vimb_input_mode_element.value");
- g_variant_get(jsreturn, "(bs)", &success, &text);
-@@ -150,78 +138,53 @@ VbResult input_open_editor(Client *c)
- element_id = g_strdup(id);
- }
-
-- /* create a temp file to pass text to and from editor */
-- if (!util_create_tmp_file(text, &file_path)) {
-- goto error;
-- }
--
-- /* spawn editor */
-- command = g_strdup_printf(editor_command, file_path);
-- if (!g_shell_parse_argv(command, &argc, &argv, NULL)) {
-- g_critical("Could not parse editor-command '%s'", command);
-- goto error;
-- }
--
-- success = g_spawn_async(
-- NULL, argv, NULL, G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD,
-- NULL, NULL, &pid, &error
-- );
--
-- if (!success) {
-- g_warning("Could not spawn editor-command: %s", error->message);
-- g_error_free(error);
-- goto error;
-- }
-- g_strfreev(argv);
-+ /* watch the editor process */
-+ ElementEditorData *data = g_slice_new0(ElementEditorData);
-+ data->element_id = element_id;
-+ data->element_map_key = element_map_key;
-
- /* disable the active element */
- ext_proxy_lock_input(c, element_id);
-
-- /* watch the editor process */
-- EditorData *data = g_slice_new0(EditorData);
-- data->file = file_path;
-- data->c = c;
-- data->element_id = element_id;
-- data->element_map_key = element_map_key;
--
-- g_child_watch_add(pid, (GChildWatchFunc)resume_editor, data);
-+ if (!command_spawn_editor(c, &((Arg){0, text}), resume_editor, data)) {
-+ goto error;
-+ }
-
- return RESULT_COMPLETE;
-
- error:
-- unlink(file_path);
-- g_free(file_path);
-- g_strfreev(argv);
- g_free(element_id);
- return RESULT_ERROR;
- }
-
--static void resume_editor(GPid pid, int status, EditorData *data)
-+static void resume_editor(GPid pid, int status, gpointer edata)
- {
- char *text, *escaped;
- char *jscode;
- char *jscode_enable;
-+ EditorData *ed = edata;
-+ ElementEditorData *eed = (ElementEditorData *)(ed->data);
-
- g_assert(pid);
-- g_assert(data);
-- g_assert(data->c);
-- g_assert(data->file);
-+ g_assert(ed);
-+ g_assert(ed->c);
-+ g_assert(ed->file);
-
- if (status == 0) {
- /* get the text the editor stored */
-- text = util_get_file_contents(data->file, NULL);
-+ text = util_get_file_contents(ed->file, NULL);
-
- if (text) {
- escaped = util_strescape(text, NULL);
-
- /* put the text back into the element */
-- if (data->element_id && strlen(data->element_id) > 0) {
-- jscode = g_strdup_printf("document.getElementById(\"%s\").value=\"%s\"", data->element_id, escaped);
-+ if (eed->element_id && strlen(eed->element_id) > 0) {
-+ jscode = g_strdup_printf("document.getElementById(\"%s\").value=\"%s\"", eed->element_id, escaped);
- } else {
-- jscode = g_strdup_printf("vimb_editor_map.get(\"%lu\").value=\"%s\"", data->element_map_key, escaped);
-+ jscode = g_strdup_printf("vimb_editor_map.get(\"%lu\").value=\"%s\"", eed->element_map_key, escaped);
- }
-
-- ext_proxy_eval_script(data->c, jscode, NULL);
-+ ext_proxy_eval_script(ed->c, jscode, NULL);
-
- g_free(jscode);
- g_free(escaped);
-@@ -229,17 +192,18 @@ static void resume_editor(GPid pid, int status, EditorData *data)
- }
- }
-
-- if (data->element_id && strlen(data->element_id) > 0) {
-- ext_proxy_unlock_input(data->c, data->element_id);
-+ if (eed->element_id && strlen(eed->element_id) > 0) {
-+ ext_proxy_unlock_input(ed->c, eed->element_id);
- } else {
- jscode_enable = g_strdup_printf(JS_FOCUS_EDITOR_MAP_ELEMENT,
-- data->element_map_key, data->element_map_key);
-- ext_proxy_eval_script(data->c, jscode_enable, NULL);
-+ eed->element_map_key, eed->element_map_key);
-+ ext_proxy_eval_script(ed->c, jscode_enable, NULL);
- g_free(jscode_enable);
- }
-- g_unlink(data->file);
-- g_free(data->file);
-- g_free(data->element_id);
-- g_slice_free(EditorData, data);
-+ g_unlink(ed->file);
-+ g_free(ed->file);
-+ g_free(eed->element_id);
-+ g_slice_free(ElementEditorData, eed);
-+ g_slice_free(EditorData, ed);
- g_spawn_close_pid(pid);
- }
-diff --git src/normal.c src/normal.c
-index 02ba27b..5ceb862 100644
---- src/normal.c
-+++ src/normal.c
-@@ -76,6 +76,7 @@ static VbResult normal_view_inspector(Client *c, const NormalCmdInfo *info);
- static VbResult normal_view_source(Client *c, const NormalCmdInfo *info);
- static VbResult normal_yank(Client *c, const NormalCmdInfo *info);
- static VbResult normal_zoom(Client *c, const NormalCmdInfo *info);
-+static void resume_editor(GPid pid, int status, gpointer edata);
-
- static struct {
- NormalCommand func;
-@@ -743,8 +744,42 @@ static VbResult normal_view_inspector(Client *c, const NormalCmdInfo *info)
-
- static VbResult normal_view_source(Client *c, const NormalCmdInfo *info)
- {
-- /* TODO the source mode isn't supported anymore use external editor for this */
-+ gboolean success;
-+ char *text = NULL;
-+ GVariant *jsreturn;
-+
-+ /* get the selected input element */
-+ jsreturn = ext_proxy_eval_script_sync(c, "document.documentElement.innerHTML");
-+ g_variant_get(jsreturn, "(bs)", &success, &text);
-+
-+ if (!success || !text) {
-+ goto error;
-+ }
-+
-+ if (!command_spawn_editor(c, &((Arg){0, text}), resume_editor, NULL)) {
-+ goto error;
-+ }
-+
- return RESULT_COMPLETE;
-+
-+error:
-+ g_free(text);
-+ return RESULT_ERROR;
-+}
-+
-+static void resume_editor(GPid pid, int status, gpointer edata)
-+{
-+ EditorData *ed = edata;
-+
-+ g_assert(pid);
-+ g_assert(ed);
-+ g_assert(ed->c);
-+ g_assert(ed->file);
-+
-+ unlink(ed->file);
-+ g_free(ed->file);
-+ g_slice_free(EditorData, ed);
-+ g_spawn_close_pid(pid);
- }
-
- static VbResult normal_yank(Client *c, const NormalCmdInfo *info)