[geany/geany-plugins] 0cd74f: Merge pull request #860 from LarsGit223/lineops-rm-every-n
Frank Lanitz
git-noreply at xxxxx
Fri Jul 12 07:20:11 UTC 2019
Branch: refs/heads/master
Author: Frank Lanitz <frank at frank.uvena.de>
Committer: GitHub <noreply at github.com>
Date: Fri, 12 Jul 2019 07:20:11 UTC
Commit: 0cd74f5fcee2adca89b686c342b147e38b3496cc
https://github.com/geany/geany-plugins/commit/0cd74f5fcee2adca89b686c342b147e38b3496cc
Log Message:
-----------
Merge pull request #860 from LarsGit223/lineops-rm-every-n
lineoperations: remove every n-th line
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(-)
===================================================================
@@ -264,6 +264,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