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