SF.net SVN: geany:[4351] trunk
elextr at users.sourceforge.net
elextr at xxxxx
Thu Oct 22 00:46:56 UTC 2009
Revision: 4351
http://geany.svn.sourceforge.net/geany/?rev=4351&view=rev
Author: elextr
Date: 2009-10-22 00:46:54 +0000 (Thu, 22 Oct 2009)
Log Message:
-----------
Include code for project filetype execute commands and fix bug in
saving project filetypes list.
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/build.c
trunk/src/build.h
trunk/src/filetypes.h
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2009-10-21 11:59:33 UTC (rev 4350)
+++ trunk/ChangeLog 2009-10-22 00:46:54 UTC (rev 4351)
@@ -1,3 +1,10 @@
+2009-10-22 Lex Trotman <elextr.at.gmail.dot.com>
+
+ * src/build.c, src/build.h, src/filetypes.h:
+ Include code for project filetype execute commands and fix bug in
+ saving project filetypes list.
+
+
2009-10-20 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
* src/highlighting.c, src/filetypes.c, src/document.c, src/symbols.c,
Modified: trunk/src/build.c
===================================================================
--- trunk/src/build.c 2009-10-21 11:59:33 UTC (rev 4350)
+++ trunk/src/build.c 2009-10-22 00:46:54 UTC (rev 4351)
@@ -130,8 +130,6 @@
if (menu_items.menu != NULL && GTK_IS_WIDGET(menu_items.menu))
gtk_widget_destroy(menu_items.menu);
-/* if (latex_menu_items.menu != NULL && GTK_IS_WIDGET(latex_menu_items.menu))
- gtk_widget_destroy(latex_menu_items.menu); */
}
@@ -203,10 +201,11 @@
gboolean printbuildcmds = PRINTBUILDCMDS;
static GeanyBuildCommand **cl[GEANY_GBG_COUNT][GEANY_BCS_COUNT] = {
- /* GEANY_BCS_DEF, GEANY_BCS_FT, GEANY_BCS_HOME_FT, GEANY_BCS_PREF, GEANY_BCS_PROJ */
- { &ft_def, NULL, NULL, NULL, NULL },
- { &non_ft_def, NULL, NULL, &non_ft_pref, &non_ft_proj },
- { &exec_def, NULL, NULL, &exec_pref, &exec_proj }
+ /* GEANY_BCS_DEF, GEANY_BCS_FT, GEANY_BCS_HOME_FT, GEANY_BCS_PREF,
+ * GEANY_BCS_FT_PROJ, GEANY_BCS_PROJ */
+ { &ft_def, NULL, NULL, NULL, NULL, NULL },
+ { &non_ft_def, NULL, NULL, &non_ft_pref, NULL, &non_ft_proj },
+ { &exec_def, NULL, NULL, &exec_pref, NULL, &exec_proj }
};
@@ -231,6 +230,7 @@
cl[GEANY_GBG_NON_FT][GEANY_BCS_FT] = &(ft->ftdefcmds);
cl[GEANY_GBG_EXEC][GEANY_BCS_FT] = &(ft->execcmds);
cl[GEANY_GBG_EXEC][GEANY_BCS_HOME_FT] = &(ft->homeexeccmds);
+ cl[GEANY_GBG_EXEC][GEANY_BCS_PROJ_FT] = &(ft->projexeccmds);
}
for (i = 0; i < GEANY_BCS_COUNT; ++i)
{
@@ -305,6 +305,8 @@
static GeanyBuildCommand *get_next_build_cmd(GeanyDocument *doc, gint cmdgrp, gint cmdindex,
gint below, gint *from)
{
+ /* Note: parameter below used in macros above */
+
GeanyFiletype *ft = NULL;
gint sink, *fr = &sink;
@@ -337,6 +339,7 @@
break;
case GEANY_GBG_EXEC: /* order proj, proj ft, pref, home ft, ft, def */
return_cmd_if(GEANY_BCS_PROJ, exec_proj);
+ return_ft_cmd_if(GEANY_BCS_PROJ_FT, projexeccmds);
return_cmd_if(GEANY_BCS_PREF, exec_pref);
return_ft_cmd_if(GEANY_BCS_FT, homeexeccmds);
return_ft_cmd_if(GEANY_BCS_FT, execcmds);
@@ -423,20 +426,16 @@
}
break;
case GEANY_GBG_EXEC:
- if ((doc = document_get_current()) == NULL)
- return NULL;
- if ((ft = doc->file_type) == NULL)
- return NULL;
-
+ if ((doc = document_get_current()) == NULL) ft = doc->file_type;
switch (src)
{
case GEANY_BCS_DEF: return exec_def;
- case GEANY_BCS_FT: return ft->execcmds;
- case GEANY_BCS_HOME_FT: return ft->homeexeccmds;
+ case GEANY_BCS_FT: return ft? ft->execcmds: NULL;
+ case GEANY_BCS_HOME_FT: return ft? ft->homeexeccmds: NULL;
+ case GEANY_BCS_PROJ_FT: return ft? ft->projexeccmds: NULL;
case GEANY_BCS_PREF: return exec_pref;
case GEANY_BCS_PROJ: return exec_proj;
default: return NULL;
-
}
break;
default:
@@ -1375,7 +1374,7 @@
/* Call this whenever build menu items need to be enabled/disabled.
- * Uses current document (if there is one) when idx == -1 */
+ * Uses current document (if there is one) when doc == NULL */
void build_menu_update(GeanyDocument *doc)
{
gint i, cmdcount, cmd, grp;
@@ -2227,10 +2226,11 @@
{
gchar *regkey = g_strdup_printf("%serror_regex", *ftname);
g_ptr_array_add(pj->build_filetypes_list, ft);
- build_load_menu_grp(config, &(ft->projfilecmds), GEANY_GBG_FT, *ftname, FALSE);
setptr(ft->projerror_regex_string,
g_key_file_get_string(config, build_grp_name, regkey, NULL));
g_free(regkey);
+ build_load_menu_grp(config, &(ft->projfilecmds), GEANY_GBG_FT, *ftname, FALSE);
+ build_load_menu_grp(config, &(ft->projexeccmds), GEANY_GBG_EXEC, *ftname, FALSE);
}
}
g_free(ftlist);
@@ -2348,6 +2348,7 @@
key = g_strconcat(prefix == NULL ? "" : prefix, fixedkey, NULL);
for (cmd = 0; cmd < build_groups_count[grp]; ++cmd)
{
+ if (src[cmd].exists) ++count;
if (src[cmd].changed)
{
static gchar cmdbuf[4] = " ";
@@ -2363,7 +2364,6 @@
set_key_fld(key, config_keys[i]);
g_key_file_set_string(config, build_grp_name, key, src[cmd].entries[i]);
}
- ++count;
}
else
{
@@ -2395,6 +2395,7 @@
gchar *regkey = g_strdup_printf("%serror_regex", ft->name);
i += build_save_menu_grp(d->config, ft->projfilecmds, GEANY_GBG_FT, ft->name);
+ i += build_save_menu_grp(d->config, ft->projexeccmds, GEANY_GBG_EXEC, ft->name);
if (NZV(ft->projerror_regex_string))
{
g_key_file_set_string(d->config, build_grp_name, regkey, ft->projerror_regex_string);
Modified: trunk/src/build.h
===================================================================
--- trunk/src/build.h 2009-10-21 11:59:33 UTC (rev 4350)
+++ trunk/src/build.h 2009-10-22 00:46:54 UTC (rev 4351)
@@ -103,6 +103,7 @@
GEANY_BCS_FT, /**< System filetype values. */
GEANY_BCS_HOME_FT, /**< Filetypes in ~/.config/geany/filedefs */
GEANY_BCS_PREF, /**< Preferences file ~/.config/geany/geany.conf */
+ GEANY_BCS_PROJ_FT, /**< Project file filetype command */
GEANY_BCS_PROJ, /**< Project file if open. */
GEANY_BCS_COUNT /**< Count of sources. */
} GeanyBuildSource;
@@ -134,7 +135,7 @@
{
/** Pointers to g_string values of the command entries.
* Must be freed if the pointer is changed. */
- gchar *entries[GEANY_BC_CMDENTRIES_COUNT];
+ gchar *entries[GEANY_BC_CMDENTRIES_COUNT];
gboolean exists; /**< If the entries have valid values. */
gboolean changed; /**< Save on exit if @c changed, remove if not @c exist. */
gboolean old; /**< Converted from old format. */
Modified: trunk/src/filetypes.h
===================================================================
--- trunk/src/filetypes.h 2009-10-21 11:59:33 UTC (rev 4350)
+++ trunk/src/filetypes.h 2009-10-22 00:46:54 UTC (rev 4351)
@@ -130,6 +130,7 @@
GeanyBuildCommand *homefilecmds;
GeanyBuildCommand *homeexeccmds;
GeanyBuildCommand *projfilecmds;
+ GeanyBuildCommand *projexeccmds;
gint project_list_entry;
gchar *projerror_regex_string;
gchar *homeerror_regex_string;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Commits
mailing list