/* If we aren't on the last line of the file, move all the text of the * current line, plus the newline at the end, into the cutbuffer. If we * are, move all of the text of the current line into the cutbuffer. In * both cases, set the current place we want to the beginning of the * current line. */ void cut_line(void) { if (openfile->current != openfile->filebot) move_to_filestruct(&cutbuffer, &cutbottom, openfile->current, 0, openfile->current->next, 0); else move_to_filestruct(&cutbuffer, &cutbottom, openfile->current, 0, openfile->current, strlen(openfile->current->data)); openfile->placewewant = 0; }
/* If we aren't on the last line of the file, move all the text of the * current line, plus the newline at the end, into the cutbuffer. If we * are, move all of the text of the current line into the cutbuffer. In * both cases, set the current place we want to the beginning of the * current line. */ void cut_line(void) { #ifndef NANO_TINY if (!openfile->mark_begin) openfile->mark_begin = openfile->current; #endif if (openfile->current != openfile->filebot) move_to_filestruct(&cutbuffer, &cutbottom, openfile->current, 0, openfile->current->next, 0); else move_to_filestruct(&cutbuffer, &cutbottom, openfile->current, 0, openfile->current, strlen(openfile->current->data)); openfile->placewewant = 0; }
/* Move all currently marked text into the cutbuffer, and set the * current place we want to where the text used to start. */ void cut_marked(void) { linestruct *top, *bot; size_t top_x, bot_x; mark_order((const linestruct **)&top, &top_x, (const linestruct **)&bot, &bot_x, NULL); move_to_filestruct(&cutbuffer, &cutbottom, top, top_x, bot, bot_x); openfile->placewewant = xplustabs(); }
/* If we aren't at the end of the current line, move all the text from * the current cursor position to the end of the current line, not * counting the newline at the end, into the cutbuffer. If we are, and * we're not on the last line of the file, move the newline at the end * into the cutbuffer, and set the current place we want to where the * newline used to be. */ void cut_to_eol(void) { size_t data_len = strlen(openfile->current->data); assert(openfile->current_x <= data_len); if (openfile->current_x < data_len) /* If we're not at the end of the line, move all the text from * the current position up to it, not counting the newline at * the end, into the cutbuffer. */ move_to_filestruct(&cutbuffer, &cutbottom, openfile->current, openfile->current_x, openfile->current, data_len); else if (openfile->current != openfile->filebot) { /* If we're at the end of the line, and it isn't the last line * of the file, move all the text from the current position up * to the beginning of the next line, i.e. the newline at the * end, into the cutbuffer. */ move_to_filestruct(&cutbuffer, &cutbottom, openfile->current, openfile->current_x, openfile->current->next, 0); openfile->placewewant = xplustabs(); } }
/* Move all the text from the current cursor position to the end of the * file into the cutbuffer. */ void cut_to_eof(void) { move_to_filestruct(&cutbuffer, &cutbottom, openfile->current, openfile->current_x, openfile->filebot, strlen(openfile->filebot->data)); }