Commit 40f45c86 authored by Chris Allegretta's avatar Chris Allegretta
Browse files

Last fixes, add reset of cutbuffer when uncutting marked text and reset...

Last fixes, add reset of cutbuffer when uncutting marked text and reset marked_cut when cutbuffer reset


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@688 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
parent 68b3dfb4
Showing with 25 additions and 5 deletions
+25 -5
......@@ -69,6 +69,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!
- faq.html:
- Brought the FAQ up to date, many little changes (Jordi).
- files.c:
......
......@@ -58,7 +58,8 @@ void add_to_cutbuffer(filestruct * inptr)
}
#ifndef NANO_SMALL
/* Cut a marked segment instead of a whole line. Only called from do_cut_text().
/* Cut a marked segment instead of a whole line. Only called from
do_cut_text().
destructive is whether to actually modify the file structure, if not then
just copy the buffer into cutbuffer and don't pull it from the file */
......@@ -162,6 +163,7 @@ int do_cut_text(void)
int newsize, cuttingtoend = 0;
#endif
check_statblank();
if (fileptr == NULL || fileptr->data == NULL)
return 0;
......@@ -172,6 +174,7 @@ int do_cut_text(void)
free_filestruct(cutbuffer);
cutbuffer = NULL;
marked_cut = 0;
#ifdef DEBUG
fprintf(stderr, _("Blew away cutbuffer =)\n"));
#endif
......@@ -185,15 +188,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;
......@@ -339,6 +349,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();
......@@ -399,7 +411,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 = charalloc(strlen(&current->data[current_x]) + 1);
strcpy(tmp->data, &current->data[current_x]);
......@@ -408,6 +420,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);
......@@ -416,6 +432,7 @@ int do_uncut_text(void)
dump_buffer(cutbuffer);
set_modified();
edit_refresh();
UNSET(KEEP_CUTBUFFER);
return 0;
#else
if (0) {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment