]> git.wh0rd.org Git - nano.git/commitdiff
Last fixes, add reset of cutbuffer when uncutting marked text and reset marked_cut...
authorChris Allegretta <chrisa@asty.org>
Thu, 21 Jun 2001 15:07:40 +0000 (15:07 +0000)
committerChris Allegretta <chrisa@asty.org>
Thu, 21 Jun 2001 15:07:40 +0000 (15:07 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/branches/nano_1_0_branch/nano@688 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
cut.c

index 616d7a7fbf125c818d2e36835d7d3b55ba91208d..67e5327bbce5c02a2cf23467b27295a1d0428cfb 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,9 @@ CVS code -
   do_cut_text()
        - If the line is empty when using -k and wasn't already added,
          create a dummy line and add it to the cutbuffer (fixes bug #61)
+       - Reset marked_cut if we blow away the cutbuffer.
+  do_uncut_text()
+       - Reset cutbuffer even if we're uncutting marked or cut to end text!
 - files.c:
   do_browser()
        - Don't shift the size of the file is it's less than 1K. Fixed
diff --git a/cut.c b/cut.c
index 13717c665a8d8a46b1095e5650c4a2ee0e743edb..e10ef6ce5b9873f02935798ebdc53c596b490448 100644 (file)
--- a/cut.c
+++ b/cut.c
@@ -142,6 +142,7 @@ int do_cut_text(void)
     int newsize, cuttingtoend = 0;
 #endif
 
+
     check_statblank();
     if (fileptr == NULL || fileptr->data == NULL)
        return 0;
@@ -152,6 +153,7 @@ int do_cut_text(void)
        free_filestruct(cutbuffer);
        cutbuffer = NULL;
 
+       marked_cut = 0;
 #ifdef DEBUG
        fprintf(stderr, _("Blew away cutbuffer =)\n"));
 #endif
@@ -165,15 +167,22 @@ int do_cut_text(void)
     if (ISSET(CUT_TO_END) && !ISSET(MARK_ISSET)) {
        if (current_x == strlen(current->data)) {
 
-           /* If the line is empty and we didn't just cut a non-blank
+       /* If the line is empty and we didn't just cut a non-blank
                line, create a dummy line and add it to the cutbuffer */
-           if (current_x == 0 && marked_cut != 1) {
+           if (marked_cut != 1) {
+
                filestruct *junk;
 
-               junk = copy_node(current);
+               junk = NULL;
+               junk = make_new_node(current);
+               junk->data = nmalloc(1 * sizeof (char));
+               junk->data[0] = 0;
 
                add_to_cutbuffer(junk);
+               dump_buffer(cutbuffer);
+
            }
+
            do_delete();
            SET(KEEP_CUTBUFFER);
            marked_cut = 2;
@@ -319,6 +328,8 @@ int do_uncut_text(void)
            current->data = tmpstr;
            current_x += strlen(cutbuffer->data);
            totsize += strlen(cutbuffer->data);
+           if (strlen(cutbuffer->data) == 0)
+               totlines++;
 
            placewewant = xplustabs();
            update_cursor();
@@ -379,7 +390,7 @@ int do_uncut_text(void)
           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)) {
+       if (marked_cut == 2) {
            tmp = make_new_node(current);
            tmp->data = nmalloc(strlen(&current->data[current_x]) + 1);
            strcpy(tmp->data, &current->data[current_x]);
@@ -388,6 +399,10 @@ int do_uncut_text(void)
            current = current->next;
            current_x = 0;
            placewewant = 0;
+
+           /* Extra line added, update stuff */
+           totlines++;
+           totsize++;
        }
        /* Renumber from BEFORE where we pasted ;) */
        renumber(hold);
@@ -396,6 +411,7 @@ int do_uncut_text(void)
        dump_buffer(cutbuffer);
        set_modified();
        edit_refresh();
+       UNSET(KEEP_CUTBUFFER);
        return 0;
 #else
     if (0) {