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:
}
#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 */
int newsize, cuttingtoend = 0;
#endif
+
check_statblank();
if (fileptr == NULL || fileptr->data == NULL)
return 0;
free_filestruct(cutbuffer);
cutbuffer = NULL;
+ marked_cut = 0;
#ifdef DEBUG
fprintf(stderr, _("Blew away cutbuffer =)\n"));
#endif
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;
current->data = tmpstr;
current_x += strlen(cutbuffer->data);
totsize += strlen(cutbuffer->data);
+ if (strlen(cutbuffer->data) == 0)
+ totlines++;
placewewant = xplustabs();
update_cursor();
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(¤t->data[current_x]) + 1);
strcpy(tmp->data, ¤t->data[current_x]);
current = current->next;
current_x = 0;
placewewant = 0;
+
+ /* Extra line added, update stuff */
+ totlines++;
+ totsize++;
}
/* Renumber from BEFORE where we pasted ;) */
renumber(hold);
dump_buffer(cutbuffer);
set_modified();
edit_refresh();
+ UNSET(KEEP_CUTBUFFER);
return 0;
#else
if (0) {