[geany/geany-plugins] 6171c9: only save file details if have closed folds or markers set

William Fraser git-noreply at xxxxx
Wed May 2 11:53:43 UTC 2012


Branch:      refs/heads/master
Author:      William Fraser <william.fraser at virgin.net>
Committer:   William Fraser <william.fraser at virgin.net>
Date:        Wed, 11 Apr 2012 07:54:42
Commit:      6171c9a3cf55cd9a48280e508eb1001772da054f
             https://github.com/geany/geany-plugins/commit/6171c9a3cf55cd9a48280e508eb1001772da054f

Log Message:
-----------
only save file details if have closed folds or markers set


Modified Paths:
--------------
    geanynumberedbookmarks/src/geanynumberedbookmarks.c

Modified: geanynumberedbookmarks/src/geanynumberedbookmarks.c
28 files changed, 24 insertions(+), 4 deletions(-)
===================================================================
@@ -382,6 +382,20 @@ static void SaveSettings(void)
 	/* now save file data */
 	while(fdTemp!=NULL)
 	{
+		/* first check if any bookmarks or folds for this file */
+		/* if not can skip it */
+		for(i=0;i<10;i++)
+			if(fdTemp->iBookmark[i]!=-1) break;
+		/* i==10 if no markers set */
+
+		/* skip if no folding data or markers */
+		if(i==10 && fdTemp->pcFolding==NULL)
+		{
+			fdTemp=fdTemp->NextNode;
+			continue;
+		}
+
+		/* now save file data */
 		cKey=g_strdup_printf("A%d",iFiles);
 		/* save filename */
 		g_key_file_set_string(config,"FileData",cKey,fdTemp->pcFileName);
@@ -392,7 +406,8 @@ static void SaveSettings(void)
 
 		/* save last saved time */
 		cKey[0]='C';
-		g_key_file_set_integer(config,"FileData",cKey,fdTemp->LastChangedTime);
+		if(fdTemp->LastChangedTime!=-1)
+			g_key_file_set_integer(config,"FileData",cKey,fdTemp->LastChangedTime);
 		/* save bookmarks */
 		cKey[0]='D';
 		pszMarkers=szMarkers;
@@ -413,7 +428,9 @@ static void SaveSettings(void)
 		/* don't need a ',' after last position (have '\0' instead) */
 		pszMarkers--;
 		pszMarkers[0]=0;
-		g_key_file_set_string(config,"FileData",cKey,szMarkers);
+		/* only save markers if have any set. Will contain 9 commas only if none set */
+		if(szMarkers[9]!=0)
+			g_key_file_set_string(config,"FileData",cKey,szMarkers);
 
 		/* save positions in bookmarked lines */
 		cKey[0]='E';
@@ -732,6 +749,7 @@ static void on_document_save(GObject *obj, GeanyDocument *doc, gpointer user_dat
 	struct stat sBuf;
 	GByteArray *gbaFoldData=g_byte_array_sized_new(1000);
 	guint8 guiFold=0;
+	gboolean bHasClosedFold=FALSE;
 
 	/* update markerpos */
 	fdTemp=GetFileData(doc->file_name);
@@ -749,6 +767,8 @@ static void on_document_save(GObject *obj, GeanyDocument *doc, gpointer user_dat
 			continue;
 
 		iFlags=scintilla_send_message(sci,SCI_GETFOLDEXPANDED,i,0);
+		/* make note of if any folds closed or not */
+		bHasClosedFold|=((iFlags&1)==0);
 		/* remember if folded or not */
 		guiFold|=(iFlags&1)<<iBitCounter;
 		iBitCounter++;
@@ -769,8 +789,8 @@ static void on_document_save(GObject *obj, GeanyDocument *doc, gpointer user_dat
 		g_byte_array_append(gbaFoldData,&guiFold,1);
 	}
 
-	/* transfer data to text string */
-	fdTemp->pcFolding=g_strndup((gchar*)(gbaFoldData->data),gbaFoldData->len);
+	/* transfer data to text string if have closed fold. Default will leave them open*/
+	fdTemp->pcFolding=(!bHasClosedFold)?NULL:g_strndup((gchar*)(gbaFoldData->data),gbaFoldData->len);
 
 	/* free byte array space */
 	g_byte_array_free(gbaFoldData,TRUE);


@@ Diff output truncated at 100000 characters. @@


--------------
This E-Mail was brought to you by github_commit_mail.py (Source: TBD).



More information about the Plugins-Commits mailing list