SF.net SVN: geany: [672] trunk

ntrel at users.sourceforge.net ntrel at xxxxx
Sat Aug 5 12:25:56 UTC 2006


Revision: 672
Author:   ntrel
Date:     2006-08-05 05:25:49 -0700 (Sat, 05 Aug 2006)
ViewCVS:  http://svn.sourceforge.net/geany/?rev=672&view=rev

Log Message:
-----------
Use unique filetype id in geany.conf to avoid new filetype problems; Make unique id numbers compatible with Geany 0.7 filetype order

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/filetypes.c
    trunk/src/filetypes.h
    trunk/src/keyfile.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2006-08-05 12:11:55 UTC (rev 671)
+++ trunk/ChangeLog	2006-08-05 12:25:49 UTC (rev 672)
@@ -1,6 +1,9 @@
 2006-08-05  Nick Treleaven  <nick.treleaven at btinternet.com>
 
  * src/callbacks.c: Allow partial word selection for Find Usage.
+ * src/keyfile.c, src/filetypes.c, src/filetypes.h:
+   Use unique filetype id in geany.conf to avoid new filetype problems.
+   Make unique id numbers compatible with Geany 0.7 filetype order.
 
 
 2006-08-04  Nick Treleaven  <nick.treleaven at btinternet.com>

Modified: trunk/src/filetypes.c
===================================================================
--- trunk/src/filetypes.c	2006-08-05 12:11:55 UTC (rev 671)
+++ trunk/src/filetypes.c	2006-08-05 12:25:49 UTC (rev 672)
@@ -32,6 +32,36 @@
 #include "msgwindow.h"
 
 
+/* This is the order of unique ids used in the config file.
+ * The order must not be changed but can be appended to. */
+enum
+{
+	FILETYPE_UID_C = 0,		// 0
+	FILETYPE_UID_CPP,		// 1
+	FILETYPE_UID_JAVA,		// 2
+	FILETYPE_UID_PERL,		// 3
+	FILETYPE_UID_PHP,		// 4
+	FILETYPE_UID_XML,		// 5
+	FILETYPE_UID_DOCBOOK,	// 6
+	FILETYPE_UID_PYTHON,	// 7
+	FILETYPE_UID_LATEX,		// 8
+	FILETYPE_UID_PASCAL,	// 9
+	FILETYPE_UID_SH,		// 10
+	FILETYPE_UID_MAKE,		// 11
+	FILETYPE_UID_CSS,		// 12
+	FILETYPE_UID_CONF,		// 13
+	FILETYPE_UID_ASM,		// 14
+	FILETYPE_UID_SQL,		// 15
+	FILETYPE_UID_CAML,		// 16
+	FILETYPE_UID_OMS,		// 17
+	FILETYPE_UID_RUBY,		// 18
+	FILETYPE_UID_TCL,		// 19
+	FILETYPE_UID_ALL,		// 20
+	FILETYPE_UID_D,			// 21
+	//FILETYPE_UID_HTML,	// 22
+};
+
+
 static void filetypes_create_menu_item(GtkWidget *menu, gchar *label, filetype *ftype);
 static void filetypes_create_newmenu_item(GtkWidget *menu, gchar *label, filetype *ftype);
 static void filetypes_init_build_programs(filetype *ftype);
@@ -39,6 +69,39 @@
 static GtkWidget *radio_items[GEANY_MAX_FILE_TYPES];
 
 
+// If uid is valid, return corresponding filetype, otherwise NULL.
+filetype *filetypes_get_from_uid(gint uid)
+{
+	switch (uid)
+	{
+		case FILETYPE_UID_C:		return filetypes[GEANY_FILETYPES_C];
+		case FILETYPE_UID_CPP:		return filetypes[GEANY_FILETYPES_CPP];
+		case FILETYPE_UID_JAVA:		return filetypes[GEANY_FILETYPES_JAVA];
+		case FILETYPE_UID_PERL:		return filetypes[GEANY_FILETYPES_PERL];
+		case FILETYPE_UID_PHP:		return filetypes[GEANY_FILETYPES_PHP];
+		case FILETYPE_UID_XML:		return filetypes[GEANY_FILETYPES_XML];
+		case FILETYPE_UID_DOCBOOK:	return filetypes[GEANY_FILETYPES_DOCBOOK];
+		case FILETYPE_UID_PYTHON:	return filetypes[GEANY_FILETYPES_PYTHON];
+		case FILETYPE_UID_LATEX:	return filetypes[GEANY_FILETYPES_LATEX];
+		case FILETYPE_UID_PASCAL:	return filetypes[GEANY_FILETYPES_PASCAL];
+		case FILETYPE_UID_SH:		return filetypes[GEANY_FILETYPES_SH];
+		case FILETYPE_UID_MAKE:		return filetypes[GEANY_FILETYPES_MAKE];
+		case FILETYPE_UID_CSS:		return filetypes[GEANY_FILETYPES_CSS];
+		case FILETYPE_UID_CONF:		return filetypes[GEANY_FILETYPES_CONF];
+		case FILETYPE_UID_ASM:		return filetypes[GEANY_FILETYPES_ASM];
+		case FILETYPE_UID_SQL:		return filetypes[GEANY_FILETYPES_SQL];
+		case FILETYPE_UID_CAML:		return filetypes[GEANY_FILETYPES_CAML];
+		case FILETYPE_UID_OMS:		return filetypes[GEANY_FILETYPES_OMS];
+		case FILETYPE_UID_RUBY:		return filetypes[GEANY_FILETYPES_RUBY];
+		case FILETYPE_UID_TCL:		return filetypes[GEANY_FILETYPES_TCL];
+		case FILETYPE_UID_ALL:		return filetypes[GEANY_FILETYPES_ALL];
+		case FILETYPE_UID_D:		return filetypes[GEANY_FILETYPES_D];
+		//case FILETYPE_UID_HTML:	return filetypes[GEANY_FILETYPES_HTML];
+		default: 					return NULL;
+	}
+}
+
+
 /* inits the filetype array and fill it with the known filetypes
  * and create the filetype menu*/
 void filetypes_init_types(void)
@@ -49,7 +112,7 @@
 #define C	// these macros are only to ease navigation
 	filetypes[GEANY_FILETYPES_C] = g_new0(filetype, 1);
 	filetypes[GEANY_FILETYPES_C]->id = GEANY_FILETYPES_C;
-	filetypes[GEANY_FILETYPES_C]->uid = 0; // never change this value
+	filetypes[GEANY_FILETYPES_C]->uid = FILETYPE_UID_C;
 	filetypes[GEANY_FILETYPES_C]->item = NULL;
 	filetypes[GEANY_FILETYPES_C]->lang = 0;
 	filetypes[GEANY_FILETYPES_C]->name = g_strdup("C");
@@ -70,7 +133,7 @@
 #define CPP
 	filetypes[GEANY_FILETYPES_CPP] = g_new0(filetype, 1);
 	filetypes[GEANY_FILETYPES_CPP]->id = GEANY_FILETYPES_CPP;
-	filetypes[GEANY_FILETYPES_CPP]->uid = 1; // never change this value
+	filetypes[GEANY_FILETYPES_CPP]->uid = FILETYPE_UID_CPP;
 	filetypes[GEANY_FILETYPES_CPP]->item = NULL;
 	filetypes[GEANY_FILETYPES_CPP]->lang = 1;
 	filetypes[GEANY_FILETYPES_CPP]->name = g_strdup("C++");
@@ -99,7 +162,7 @@
 #define D
 	filetypes[GEANY_FILETYPES_D] = g_new0(filetype, 1);
 	filetypes[GEANY_FILETYPES_D]->id = GEANY_FILETYPES_D;
-	filetypes[GEANY_FILETYPES_D]->uid = 2; // never change this value
+	filetypes[GEANY_FILETYPES_D]->uid = FILETYPE_UID_D;
 	filetypes[GEANY_FILETYPES_D]->item = NULL;
 	filetypes[GEANY_FILETYPES_D]->lang = 17;
 	filetypes[GEANY_FILETYPES_D]->name = g_strdup("D");
@@ -121,7 +184,7 @@
 	filetypes[GEANY_FILETYPES_JAVA] = g_new0(filetype, 1);
 	filetypes[GEANY_FILETYPES_JAVA]->id = GEANY_FILETYPES_JAVA;
 	filetypes[GEANY_FILETYPES_JAVA]->name = g_strdup("Java");
-	filetypes[GEANY_FILETYPES_JAVA]->uid = 3; // never change this value
+	filetypes[GEANY_FILETYPES_JAVA]->uid = FILETYPE_UID_JAVA;
 	filetypes[GEANY_FILETYPES_JAVA]->item = NULL;
 	filetypes[GEANY_FILETYPES_JAVA]->lang = 2;
 	filetypes[GEANY_FILETYPES_JAVA]->has_tags = TRUE;
@@ -140,7 +203,7 @@
 #define PAS // to avoid warnings when building under Windows, the symbol PASCAL is there defined
 	filetypes[GEANY_FILETYPES_PASCAL] = g_new0(filetype, 1);
 	filetypes[GEANY_FILETYPES_PASCAL]->id = GEANY_FILETYPES_PASCAL;
-	filetypes[GEANY_FILETYPES_PASCAL]->uid = 4; // never change this value
+	filetypes[GEANY_FILETYPES_PASCAL]->uid = FILETYPE_UID_PASCAL;
 	filetypes[GEANY_FILETYPES_PASCAL]->item = NULL;
 	filetypes[GEANY_FILETYPES_PASCAL]->lang = 4;
 	filetypes[GEANY_FILETYPES_PASCAL]->name = g_strdup("Pascal");
@@ -164,7 +227,7 @@
 #define ASM
 	filetypes[GEANY_FILETYPES_ASM] = g_new0(filetype, 1);
 	filetypes[GEANY_FILETYPES_ASM]->id = GEANY_FILETYPES_ASM;
-	filetypes[GEANY_FILETYPES_ASM]->uid = 5; // never change this value
+	filetypes[GEANY_FILETYPES_ASM]->uid = FILETYPE_UID_ASM;
 	filetypes[GEANY_FILETYPES_ASM]->item = NULL;
 	filetypes[GEANY_FILETYPES_ASM]->lang = 9;
 	filetypes[GEANY_FILETYPES_ASM]->name = g_strdup("ASM");
@@ -183,7 +246,7 @@
 #define CAML
 	filetypes[GEANY_FILETYPES_CAML] = g_new0(filetype, 1);
 	filetypes[GEANY_FILETYPES_CAML]->id = GEANY_FILETYPES_CAML;
-	filetypes[GEANY_FILETYPES_CAML]->uid = 6; // never change this value
+	filetypes[GEANY_FILETYPES_CAML]->uid = FILETYPE_UID_CAML;
 	filetypes[GEANY_FILETYPES_CAML]->item = NULL;
 	filetypes[GEANY_FILETYPES_CAML]->lang = -2;
 	filetypes[GEANY_FILETYPES_CAML]->name = g_strdup("CAML");
@@ -203,7 +266,7 @@
 #define PERL
 	filetypes[GEANY_FILETYPES_PERL] = g_new0(filetype, 1);
 	filetypes[GEANY_FILETYPES_PERL]->id = GEANY_FILETYPES_PERL;
-	filetypes[GEANY_FILETYPES_PERL]->uid = 7; // never change this value
+	filetypes[GEANY_FILETYPES_PERL]->uid = FILETYPE_UID_PERL;
 	filetypes[GEANY_FILETYPES_PERL]->item = NULL;
 	filetypes[GEANY_FILETYPES_PERL]->lang = 5;
 	filetypes[GEANY_FILETYPES_PERL]->name = g_strdup("Perl");
@@ -224,7 +287,7 @@
 #define PHP
 	filetypes[GEANY_FILETYPES_PHP] = g_new0(filetype, 1);
 	filetypes[GEANY_FILETYPES_PHP]->id = GEANY_FILETYPES_PHP;
-	filetypes[GEANY_FILETYPES_PHP]->uid = 8; // never change this value
+	filetypes[GEANY_FILETYPES_PHP]->uid = FILETYPE_UID_PHP;
 	filetypes[GEANY_FILETYPES_PHP]->item = NULL;
 	filetypes[GEANY_FILETYPES_PHP]->lang = 6;
 	filetypes[GEANY_FILETYPES_PHP]->name = g_strdup("PHP");
@@ -249,7 +312,7 @@
 #define PYTHON
 	filetypes[GEANY_FILETYPES_PYTHON] = g_new0(filetype, 1);
 	filetypes[GEANY_FILETYPES_PYTHON]->id = GEANY_FILETYPES_PYTHON;
-	filetypes[GEANY_FILETYPES_PYTHON]->uid = 9; // never change this value
+	filetypes[GEANY_FILETYPES_PYTHON]->uid = FILETYPE_UID_PYTHON;
 	filetypes[GEANY_FILETYPES_PYTHON]->item = NULL;
 	filetypes[GEANY_FILETYPES_PYTHON]->lang = 7;
 	filetypes[GEANY_FILETYPES_PYTHON]->name = g_strdup("Python");
@@ -269,7 +332,7 @@
 #define RUBY
 	filetypes[GEANY_FILETYPES_RUBY] = g_new0(filetype, 1);
 	filetypes[GEANY_FILETYPES_RUBY]->id = GEANY_FILETYPES_RUBY;
-	filetypes[GEANY_FILETYPES_RUBY]->uid = 10; // never change this value
+	filetypes[GEANY_FILETYPES_RUBY]->uid = FILETYPE_UID_RUBY;
 	filetypes[GEANY_FILETYPES_RUBY]->item = NULL;
 	filetypes[GEANY_FILETYPES_RUBY]->lang = 14;
 	filetypes[GEANY_FILETYPES_RUBY]->name = g_strdup("Ruby");
@@ -290,7 +353,7 @@
 #define TCL
 	filetypes[GEANY_FILETYPES_TCL] = g_new0(filetype, 1);
 	filetypes[GEANY_FILETYPES_TCL]->id = GEANY_FILETYPES_TCL;
-	filetypes[GEANY_FILETYPES_TCL]->uid = 11; // never change this value
+	filetypes[GEANY_FILETYPES_TCL]->uid = FILETYPE_UID_TCL;
 	filetypes[GEANY_FILETYPES_TCL]->item = NULL;
 	filetypes[GEANY_FILETYPES_TCL]->lang = 15;
 	filetypes[GEANY_FILETYPES_TCL]->name = g_strdup("Tcl");
@@ -311,7 +374,7 @@
 #define SH
 	filetypes[GEANY_FILETYPES_SH] = g_new0(filetype, 1);
 	filetypes[GEANY_FILETYPES_SH]->id = GEANY_FILETYPES_SH;
-	filetypes[GEANY_FILETYPES_SH]->uid = 12; // never change this value
+	filetypes[GEANY_FILETYPES_SH]->uid = FILETYPE_UID_SH;
 	filetypes[GEANY_FILETYPES_SH]->item = NULL;
 	filetypes[GEANY_FILETYPES_SH]->lang = 16;
 	filetypes[GEANY_FILETYPES_SH]->name = g_strdup("Sh");
@@ -336,7 +399,7 @@
 #define MAKE
 	filetypes[GEANY_FILETYPES_MAKE] = g_new0(filetype, 1);
 	filetypes[GEANY_FILETYPES_MAKE]->id = GEANY_FILETYPES_MAKE;
-	filetypes[GEANY_FILETYPES_MAKE]->uid = 13; // never change this value
+	filetypes[GEANY_FILETYPES_MAKE]->uid = FILETYPE_UID_MAKE;
 	filetypes[GEANY_FILETYPES_MAKE]->item = NULL;
 	filetypes[GEANY_FILETYPES_MAKE]->lang = 3;
 	filetypes[GEANY_FILETYPES_MAKE]->name = g_strdup("Make");
@@ -356,7 +419,7 @@
 #define XML
 	filetypes[GEANY_FILETYPES_XML] = g_new0(filetype, 1);
 	filetypes[GEANY_FILETYPES_XML]->id = GEANY_FILETYPES_XML;
-	filetypes[GEANY_FILETYPES_XML]->uid = 14; // never change this value
+	filetypes[GEANY_FILETYPES_XML]->uid = FILETYPE_UID_XML;
 	filetypes[GEANY_FILETYPES_XML]->item = NULL;
 	filetypes[GEANY_FILETYPES_XML]->lang = -2;
 	filetypes[GEANY_FILETYPES_XML]->name = g_strdup("XML");
@@ -376,7 +439,7 @@
 #define DOCBOOK
 	filetypes[GEANY_FILETYPES_DOCBOOK] = g_new0(filetype, 1);
 	filetypes[GEANY_FILETYPES_DOCBOOK]->id = GEANY_FILETYPES_DOCBOOK;
-	filetypes[GEANY_FILETYPES_DOCBOOK]->uid = 15; // never change this value
+	filetypes[GEANY_FILETYPES_DOCBOOK]->uid = FILETYPE_UID_DOCBOOK;
 	filetypes[GEANY_FILETYPES_DOCBOOK]->item = NULL;
 	filetypes[GEANY_FILETYPES_DOCBOOK]->lang = 12;
 	filetypes[GEANY_FILETYPES_DOCBOOK]->name = g_strdup("Docbook");
@@ -395,7 +458,7 @@
 #define CSS
 	filetypes[GEANY_FILETYPES_CSS] = g_new0(filetype, 1);
 	filetypes[GEANY_FILETYPES_CSS]->id = GEANY_FILETYPES_CSS;
-	filetypes[GEANY_FILETYPES_CSS]->uid = 16; // never change this value;
+	filetypes[GEANY_FILETYPES_CSS]->uid = FILETYPE_UID_CSS;
 	filetypes[GEANY_FILETYPES_CSS]->item = NULL;
 	filetypes[GEANY_FILETYPES_CSS]->lang = 13;
 	filetypes[GEANY_FILETYPES_CSS]->name = g_strdup("CSS");
@@ -414,7 +477,7 @@
 #define SQL
 	filetypes[GEANY_FILETYPES_SQL] = g_new0(filetype, 1);
 	filetypes[GEANY_FILETYPES_SQL]->id = GEANY_FILETYPES_SQL;
-	filetypes[GEANY_FILETYPES_SQL]->uid = 17; // never change this value
+	filetypes[GEANY_FILETYPES_SQL]->uid = FILETYPE_UID_SQL;
 	filetypes[GEANY_FILETYPES_SQL]->item = NULL;
 	filetypes[GEANY_FILETYPES_SQL]->lang = 11;
 	filetypes[GEANY_FILETYPES_SQL]->name = g_strdup("SQL");
@@ -433,7 +496,7 @@
 #define LATEX
 	filetypes[GEANY_FILETYPES_LATEX] = g_new0(filetype, 1);
 	filetypes[GEANY_FILETYPES_LATEX]->id = GEANY_FILETYPES_LATEX;
-	filetypes[GEANY_FILETYPES_LATEX]->uid = 18; // never change this value
+	filetypes[GEANY_FILETYPES_LATEX]->uid = FILETYPE_UID_LATEX;
 	filetypes[GEANY_FILETYPES_LATEX]->item = NULL;
 	filetypes[GEANY_FILETYPES_LATEX]->lang = 8;
 	filetypes[GEANY_FILETYPES_LATEX]->name = g_strdup("LaTeX");
@@ -454,7 +517,7 @@
 #define OMS
 	filetypes[GEANY_FILETYPES_OMS] = g_new0(filetype, 1);
 	filetypes[GEANY_FILETYPES_OMS]->id = GEANY_FILETYPES_OMS;
-	filetypes[GEANY_FILETYPES_OMS]->uid = 19; // never change this value
+	filetypes[GEANY_FILETYPES_OMS]->uid = FILETYPE_UID_OMS;
 	filetypes[GEANY_FILETYPES_OMS]->item = NULL;
 	filetypes[GEANY_FILETYPES_OMS]->lang = -2;
 	filetypes[GEANY_FILETYPES_OMS]->name = g_strdup("O-Matrix");
@@ -473,7 +536,7 @@
 #define CONF
 	filetypes[GEANY_FILETYPES_CONF] = g_new0(filetype, 1);
 	filetypes[GEANY_FILETYPES_CONF]->id = GEANY_FILETYPES_CONF;
-	filetypes[GEANY_FILETYPES_CONF]->uid = 20; // never change this value
+	filetypes[GEANY_FILETYPES_CONF]->uid = FILETYPE_UID_CONF;
 	filetypes[GEANY_FILETYPES_CONF]->item = NULL;
 	filetypes[GEANY_FILETYPES_CONF]->lang = 10;
 	filetypes[GEANY_FILETYPES_CONF]->name = g_strdup("Conf");
@@ -497,7 +560,7 @@
 	filetypes[GEANY_FILETYPES_ALL] = g_new0(filetype, 1);
 	filetypes[GEANY_FILETYPES_ALL]->id = GEANY_FILETYPES_ALL;
 	filetypes[GEANY_FILETYPES_ALL]->name = g_strdup("None");
-	filetypes[GEANY_FILETYPES_ALL]->uid = 21; // never change this value
+	filetypes[GEANY_FILETYPES_ALL]->uid = FILETYPE_UID_ALL;
 	filetypes[GEANY_FILETYPES_ALL]->item = NULL;
 	filetypes[GEANY_FILETYPES_ALL]->lang = -2;
 	filetypes[GEANY_FILETYPES_ALL]->has_tags = FALSE;

Modified: trunk/src/filetypes.h
===================================================================
--- trunk/src/filetypes.h	2006-08-05 12:11:55 UTC (rev 671)
+++ trunk/src/filetypes.h	2006-08-05 12:25:49 UTC (rev 672)
@@ -98,11 +98,13 @@
 filetype *filetypes[GEANY_MAX_FILE_TYPES];
 
 
+// If uid is valid, return corresponding filetype, otherwise NULL.
+filetype *filetypes_get_from_uid(gint uid);
+
 /* inits the filetype array and fill it with the known filetypes
  * and create the filetype menu*/
 void filetypes_init_types(void);
 
-
 /* simple filetype selection based on the filename extension */
 filetype *filetypes_get_from_filename(const gchar *filename);
 

Modified: trunk/src/keyfile.c
===================================================================
--- trunk/src/keyfile.c	2006-08-05 12:11:55 UTC (rev 671)
+++ trunk/src/keyfile.c	2006-08-05 12:25:49 UTC (rev 672)
@@ -180,7 +180,8 @@
 		if (idx >= 0 && doc_list[idx].file_name)
 		{
 			g_snprintf(entry, 13, "FILE_NAME_%d", j);
-			g_snprintf(fname, 255, "%d:%d:%s", sci_get_current_position(doc_list[idx].sci), doc_list[idx].file_type->id, doc_list[idx].file_name);
+			g_snprintf(fname, 255, "%d:%d:%s", sci_get_current_position(doc_list[idx].sci),
+				doc_list[idx].file_type->uid, doc_list[idx].file_name);
 			g_key_file_set_string(config, "files", entry, fname);
 			j++;
 		}
@@ -392,18 +393,18 @@
 gboolean configuration_open_files()
 {
 	gint i;
-	guint x, pos, ft_id, y, len;
+	guint x, pos, y, len;
 	gchar *file, *locale_filename, **array;
 	gboolean ret = FALSE;
 
 	i = app->tab_order_ltr ? 0 : GEANY_SESSION_FILES - 1;
 	while(TRUE)
 	{
-		if (session_files[i] && strlen(session_files[i]))
+		if (session_files[i] && *session_files[i])
 		{
+			gint uid = -1;
 			x = 0;
 			y = 0;
-			ft_id = GEANY_MAX_FILE_TYPES;
 
 			// yes it is :, it should be a ;, but now it is too late to change it
 			array = g_strsplit(session_files[i], ":", 3);
@@ -416,7 +417,7 @@
 			// read filetype (only if there are more than two fields, otherwise we have the old format)
 			if (len > 2 && array[1])
 			{
-				ft_id = atoi(array[1]);
+				uid = atoi(array[1]);
 				file = array[2];
 			}
 			else file = array[1];
@@ -427,8 +428,8 @@
 
 			if (g_file_test(locale_filename, G_FILE_TEST_IS_REGULAR || G_FILE_TEST_IS_SYMLINK))
 			{
-				document_open_file(-1, locale_filename, pos, FALSE,
-					(ft_id == GEANY_MAX_FILE_TYPES) ? NULL : filetypes[ft_id], NULL);
+				filetype *ft = filetypes_get_from_uid(uid);
+				document_open_file(-1, locale_filename, pos, FALSE, ft, NULL);
 				ret = TRUE;
 			}
 			g_free(locale_filename);


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