[Github-comments] [geany/geany-plugins] Workbench: project-related and global build commands (#733)

LarsGit223 notifications at xxxxx
Thu Apr 12 21:38:01 UTC 2018


I had a look at the code in ```build.c``` and tried to understand what it's doing. This is how I understood it:

If someone (a plugin) wants to re-write the build menu it would have to call ```build_menu_update``` and then the menu items are re-written according to the magic/selection process described above.

If we want to add plugins to be a build command source we would need to define a new ```GeanyBuildSource```, e.g. ```GEANY_BCS_PLUGIN```.

I'm not sure where the commands for the various sources are saved in memory. I assume the pointers to the commands are these:
```
/* the various groups of commands not in the filetype struct */
static GeanyBuildCommand *ft_def = NULL;
static GeanyBuildCommand *non_ft_proj = NULL;
static GeanyBuildCommand *non_ft_pref = NULL;
static GeanyBuildCommand *non_ft_def = NULL;
static GeanyBuildCommand *exec_proj = NULL;
static GeanyBuildCommand *exec_pref = NULL;
static GeanyBuildCommand *exec_def = NULL;
```
So e.g. ```exec_proj``` holds the commands for the prjoject and does not point to one command but to an array of 9 commands (maximum?).

For the case that there is more than one active plugin wanting to be a GeanyBuildSource I wonder if it wouldn't be better to call a function which is doing the decision for the plugins and returns the list of commands that won.

Also if I understood it correctly the build dialog can be re-used as it saves the set commands into ```dst``` which in this case would need to point to the memory area for the workbench plugin (using function ```GtkWidget *build_commands_table(GeanyDocument *doc, GeanyBuildSource dst, BuildTableData *table_data, GeanyFiletype *ft)```.

So what about exposing only one pointer, e,g, ```GeanyBuildCommand *exec_plugins = NULL;``` to geany-plugins and call some function which is doing the work of ```return_cmd_if``` for the plugins? And as @elextr suggested put some registration/priority handling/arm wrestling code to the shared utils lib in geany-plugins. 

Just an idea/brainstorming. Maybe I understood some things wrong, let's see.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany-plugins/issues/733#issuecomment-380952207
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.geany.org/pipermail/github-comments/attachments/20180412/5b2ddb2e/attachment.html>


More information about the Github-comments mailing list