From 5af6e5635cf8730abe211768f943192af2afce4b Mon Sep 17 00:00:00 2001 From: WrapEarnPass <293701378+WrapEarnPass@users.noreply.github.com> Date: Sun, 14 Jun 2026 22:20:59 -0400 Subject: [PATCH 1/5] fix doc is definitely used here --- workbench/src/plugin_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workbench/src/plugin_main.c b/workbench/src/plugin_main.c index 25ecdf6def..9700bec3ee 100644 --- a/workbench/src/plugin_main.c +++ b/workbench/src/plugin_main.c @@ -46,7 +46,7 @@ GeanyPlugin *geany_plugin; GeanyData *geany_data; /* Callback function for document open */ -static void plugin_workbench_on_doc_open(G_GNUC_UNUSED GObject * obj, G_GNUC_UNUSED GeanyDocument * doc, +static void plugin_workbench_on_doc_open(G_GNUC_UNUSED GObject * obj, GeanyDocument * doc, G_GNUC_UNUSED gpointer user_data) { g_return_if_fail(doc != NULL && doc->file_name != NULL); From 7fbd002e0b112b38d4a113cdc63d837fc711338f Mon Sep 17 00:00:00 2001 From: WrapEarnPass <293701378+WrapEarnPass@users.noreply.github.com> Date: Sun, 14 Jun 2026 22:27:56 -0400 Subject: [PATCH 2/5] ADD on_project_(open|close) handlers --- workbench/src/plugin_main.c | 40 +++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/workbench/src/plugin_main.c b/workbench/src/plugin_main.c index 9700bec3ee..4bf4c70bcf 100644 --- a/workbench/src/plugin_main.c +++ b/workbench/src/plugin_main.c @@ -114,9 +114,49 @@ static void plugin_workbench_help (G_GNUC_UNUSED GeanyPlugin *plugin, G_GNUC_UNU } +/* Load workbench from project */ +static void plugin_workbench_on_project_open(GObject* obj, GKeyFile* config, gpointer user_data) { + //if the project has a workbench, and one isn't loaded, load the workbench + if(wb_globals.opened_wb == NULL){ + //no workbench + const gchar* keyfile_string = utils_get_setting_string(config, "workbench", "workbench", ""); + if(g_strcmp0(keyfile_string, "") != 0){ + //this project has a workbench, load it + wb_globals.opened_wb = workbench_new(); + GError *error = NULL; + if (workbench_load(wb_globals.opened_wb, keyfile_string, &error)) + { + menu_set_context(MENU_CONTEXT_WB_OPENED); + sidebar_update(SIDEBAR_CONTEXT_WB_OPENED, NULL); + }else{ + //workbench attached to this project is invalid. + g_key_file_set_string(config, "workbench", "workbench", ""); + msgwin_status_add(_("Could not open workbench file: %s"), error->message); + workbench_free(wb_globals.opened_wb); + wb_globals.opened_wb = NULL; + } + } + } +} + +/* Attach workbench to project */ +static void plugin_workbench_on_project_save(GObject* obj, GKeyFile* config, gpointer user_data) { + //if the project doesn't have a workbench, but one is loaded, set the workbench + if(wb_globals.opened_wb != NULL){ + //we have a workbench + const gchar* keyfile_string = utils_get_setting_string(config, "workbench", "workbench", ""); + if(g_strcmp0(keyfile_string, "") == 0){ + //this project doesn't have a workbench, attach this one. + g_key_file_set_string(config, "workbench", "workbench", workbench_get_filename(wb_globals.opened_wb)); + } + } +} + static PluginCallback plugin_workbench_callbacks[] = { {"document-open", (GCallback) &plugin_workbench_on_doc_open, TRUE, NULL}, {"document-close", (GCallback) &plugin_workbench_on_doc_close, TRUE, NULL}, + {"project-open", (GCallback) & plugin_workbench_on_project_open, TRUE, NULL}, + {"project-save", (GCallback) & plugin_workbench_on_project_save, TRUE, NULL}, {NULL, NULL, FALSE, NULL} }; From 37c8336171b2bab768a2401510b65a138ea06a09 Mon Sep 17 00:00:00 2001 From: WrapEarnPass <293701378+WrapEarnPass@users.noreply.github.com> Date: Sun, 14 Jun 2026 22:35:20 -0400 Subject: [PATCH 3/5] ADD utils.h include --- workbench/src/plugin_main.c | 1 + 1 file changed, 1 insertion(+) diff --git a/workbench/src/plugin_main.c b/workbench/src/plugin_main.c index 4bf4c70bcf..b78693ca05 100644 --- a/workbench/src/plugin_main.c +++ b/workbench/src/plugin_main.c @@ -26,6 +26,7 @@ #include #include #include +#include #include From bc8d253244e5b6bb10f0be3d1127ec8b099d5bce Mon Sep 17 00:00:00 2001 From: WrapEarnPass <293701378+WrapEarnPass@users.noreply.github.com> Date: Sun, 14 Jun 2026 22:38:53 -0400 Subject: [PATCH 4/5] ADD G_GNUC_UNUSED Macros --- workbench/src/plugin_main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/workbench/src/plugin_main.c b/workbench/src/plugin_main.c index b78693ca05..c8e638683a 100644 --- a/workbench/src/plugin_main.c +++ b/workbench/src/plugin_main.c @@ -116,7 +116,7 @@ static void plugin_workbench_help (G_GNUC_UNUSED GeanyPlugin *plugin, G_GNUC_UNU /* Load workbench from project */ -static void plugin_workbench_on_project_open(GObject* obj, GKeyFile* config, gpointer user_data) { +static void plugin_workbench_on_project_open(G_GNUC_UNUSED GObject* obj, GKeyFile* config, G_GNUC_UNUSED gpointer user_data) { //if the project has a workbench, and one isn't loaded, load the workbench if(wb_globals.opened_wb == NULL){ //no workbench @@ -141,7 +141,7 @@ static void plugin_workbench_on_project_open(GObject* obj, GKeyFile* config, gpo } /* Attach workbench to project */ -static void plugin_workbench_on_project_save(GObject* obj, GKeyFile* config, gpointer user_data) { +static void plugin_workbench_on_project_save(G_GNUC_UNUSED GObject* obj, GKeyFile* config, G_GNUC_UNUSED gpointer user_data) { //if the project doesn't have a workbench, but one is loaded, set the workbench if(wb_globals.opened_wb != NULL){ //we have a workbench From 2076190936730d18e52ea3c9539ed6e3fc485035 Mon Sep 17 00:00:00 2001 From: WrapEarnPass <293701378+WrapEarnPass@users.noreply.github.com> Date: Sat, 20 Jun 2026 09:13:56 -0400 Subject: [PATCH 5/5] Move to existing 'Workbench' keyfile namespace --- workbench/src/plugin_main.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/workbench/src/plugin_main.c b/workbench/src/plugin_main.c index c8e638683a..e26adf5aac 100644 --- a/workbench/src/plugin_main.c +++ b/workbench/src/plugin_main.c @@ -120,7 +120,7 @@ static void plugin_workbench_on_project_open(G_GNUC_UNUSED GObject* obj, GKeyFil //if the project has a workbench, and one isn't loaded, load the workbench if(wb_globals.opened_wb == NULL){ //no workbench - const gchar* keyfile_string = utils_get_setting_string(config, "workbench", "workbench", ""); + const gchar* keyfile_string = utils_get_setting_string(config, "Workbench", "Attach-WB", ""); if(g_strcmp0(keyfile_string, "") != 0){ //this project has a workbench, load it wb_globals.opened_wb = workbench_new(); @@ -131,7 +131,7 @@ static void plugin_workbench_on_project_open(G_GNUC_UNUSED GObject* obj, GKeyFil sidebar_update(SIDEBAR_CONTEXT_WB_OPENED, NULL); }else{ //workbench attached to this project is invalid. - g_key_file_set_string(config, "workbench", "workbench", ""); + g_key_file_set_string(config, "Workbench", "Attach-WB", ""); msgwin_status_add(_("Could not open workbench file: %s"), error->message); workbench_free(wb_globals.opened_wb); wb_globals.opened_wb = NULL; @@ -145,10 +145,10 @@ static void plugin_workbench_on_project_save(G_GNUC_UNUSED GObject* obj, GKeyFil //if the project doesn't have a workbench, but one is loaded, set the workbench if(wb_globals.opened_wb != NULL){ //we have a workbench - const gchar* keyfile_string = utils_get_setting_string(config, "workbench", "workbench", ""); + const gchar* keyfile_string = utils_get_setting_string(config, "Workbench", "Attach-WB", ""); if(g_strcmp0(keyfile_string, "") == 0){ //this project doesn't have a workbench, attach this one. - g_key_file_set_string(config, "workbench", "workbench", workbench_get_filename(wb_globals.opened_wb)); + g_key_file_set_string(config, "Workbench", "Attach-WB", workbench_get_filename(wb_globals.opened_wb)); } } }