[geany/geany-plugins] 2833d9: lineoperations: remove every n-th line

LarsGit223 git-noreply at xxxxx
Tue Jul 16 19:58:46 UTC 2019


Branch:      refs/heads/master
Author:      LarsGit223 <lars_paulsen at web.de>
Committer:   LarsGit223 <lars_paulsen at web.de>
Date:        Tue, 14 May 2019 16:41:47 UTC
Commit:      2833d96aa868fe6f370fdeeac1871c4734d270f4
             https://github.com/geany/geany-plugins/commit/2833d96aa868fe6f370fdeeac1871c4734d270f4

Log Message:
-----------
lineoperations: remove every n-th line

Imlements a new feature which allows to remove every n-th line.
The user can enter the value of 'n' in a dialog. Implements #772.


Modified Paths:
--------------
    lineoperations/README
    lineoperations/src/linefunctions.c
    lineoperations/src/linefunctions.h
    lineoperations/src/lineoperations.c
    po/POTFILES.in

Modified: lineoperations/README
25 lines changed, 25 insertions(+), 0 deletions(-)
===================================================================
@@ -19,6 +19,7 @@ Features
 * Keep Unique Lines
 * Remove Empty Lines
 * Remove Whitespace Lines
+* Remove Every Nth Line
 * Sort Lines Ascending
 * Sort Lines Descending
 
@@ -197,6 +198,30 @@ Removes all lines that have only whitespace characters.
         Line 1\n
     Line 2\n
 
+Remove Every Nth Line
+---------------------
+
+The user can enter a number N. Every Nth line will be removed then.
+
+  Example: Suppose a file has the following lines and the user enters the
+  value 2 for N. (#comments added for clarity)
+
+  ::
+
+    Line 1
+    Line 2    #removed
+    Line 3
+    Line 4    #removed
+    Line 5
+
+  The **Remove Every Nth Line** (N=2) will change the file into this:
+
+  ::
+
+    Line 1
+    Line 3
+    Line 5
+
 Sort Lines
 ----------
 


Modified: lineoperations/src/linefunctions.c
42 lines changed, 42 insertions(+), 0 deletions(-)
===================================================================
@@ -301,3 +301,45 @@ sortlndesc(gchar **lines, gint num_lines, gchar *new_file)
 
 	return num_lines;
 }
+
+
+/* Remove Every Nth Line */
+gint
+rmnthln(ScintillaObject *sci, gint line_num, gint end_line_num)
+{
+	gboolean ok;
+	gdouble n;
+	gint count;
+	gint changed = 0;     /* number of lines removed */
+
+	ok = dialogs_show_input_numeric(_("Remove every Nth line"),
+		_("Value of N"), &n, 1, 1000, 1);
+	if (ok == FALSE)
+	{
+		return 0;
+	}
+
+	count = n;
+	while(line_num <= end_line_num)    /* loop through lines */
+	{
+		count--;
+
+		/* check if this is the nth line. */
+		if(count == 0)
+		{
+			scintilla_send_message(sci,
+					   SCI_DELETERANGE,
+					   sci_get_position_from_line(sci, line_num),
+					   sci_get_line_length(sci, line_num));
+
+			line_num--;
+			end_line_num--;
+			changed++;
+			count = n;
+		}
+		line_num++;
+	}
+
+	/* return the number of lines deleted */
+	return -changed;
+}


Modified: lineoperations/src/linefunctions.h
5 lines changed, 5 insertions(+), 0 deletions(-)
===================================================================
@@ -69,4 +69,9 @@ sortlnsasc(gchar **lines, gint num_lines, gchar *new_file);
 gint
 sortlndesc(gchar **lines, gint num_lines, gchar *new_file);
 
+
+/* Remove Every Nth Line */
+gint
+rmnthln(ScintillaObject *sci, gint line_num, gint end_line_num);
+
 #endif


Modified: lineoperations/src/lineoperations.c
3 lines changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -265,6 +265,9 @@ lo_init(GeanyPlugin *plugin, gpointer gdata)
 		{ N_("Remove _Whitespace Lines"),
 		  G_CALLBACK(action_sci_manip_item), (gpointer) rmwhspln },
 		{ NULL },
+		{ N_("Remove Every _Nth Line"),
+		  G_CALLBACK(action_sci_manip_item), (gpointer) rmnthln },
+		{ NULL },
 		{ N_("Sort Lines _Ascending"),
 		  G_CALLBACK(action_indir_manip_item), (gpointer) sortlnsasc },
 		{ N_("Sort Lines _Descending"),


Modified: po/POTFILES.in
1 lines changed, 1 insertions(+), 0 deletions(-)
===================================================================
@@ -220,6 +220,7 @@ keyrecord/src/keyrecord.c
 
 # LineOperations
 lineoperations/src/lineoperations.c
+lineoperations/src/linefunctions.c
 
 # lipsum
 lipsum/src/lipsum.c



--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).


More information about the Plugins-Commits mailing list