This should finish the -k functionality. Would someone be kind enough to test this against Pico and send me a comparison?
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@132 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
diff --git a/cut.c b/cut.c
index 290309a..dbe1b46 100644
--- a/cut.c
+++ b/cut.c
@@ -153,9 +153,6 @@
if (ISSET(CUT_TO_END) && !ISSET(MARK_ISSET)) {
if (current_x == strlen(current->data))
{
-
- /* FIXME - We really need to put this data into the
- cutbuffer, not delete it and forget about it. */
do_delete();
SET(KEEP_CUTBUFFER);
marked_cut = 2;
@@ -315,7 +312,6 @@
placewewant = xplustabs();
update_cursor();
- renumber(current);
} else { /* yuck -- no kidding! */
tmp = current->next;
/* New beginning */
@@ -358,13 +354,27 @@
i = editbot->lineno;
- renumber(current);
-
current = newend;
if (i <= newend->lineno)
edit_update(current);
}
+ /* If marked cut == 2, that means that we're doing a cut to end
+ and we don't want anything else on the line, so we have to
+ screw up all the work we just did and separate the line. There
+ must be a better way to do this, but not at 1AM on a work night. */
+
+ if (marked_cut == 2 && current_x != strlen(current->data)) {
+ tmp = make_new_node(current);
+ tmp->data = nmalloc(strlen(¤t->data[current_x]));
+ strcpy(tmp->data, ¤t->data[current_x]);
+ tmp->next = current->next;
+ current->next = tmp;
+ tmp->prev = current;
+ current->data[current_x] = 0;
+ current->data = nrealloc(current->data, strlen(current->data) + 1);
+ }
+ renumber(current);
dump_buffer(fileage);
dump_buffer(cutbuffer);
set_modified();