more fixes for uncutting text/inserting files with the mark on
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@4156 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
Этот коммит содержится в:
родитель
b4e5fc100b
Коммит
ee89418102
@ -4,7 +4,9 @@
|
||||
ChangeLog.pre-2.1 in EXTRA_DIST, so that "make dist" works
|
||||
again.
|
||||
* files.c (do_insertfile): Make sure the mark is always properly
|
||||
positioned after inserting a one-line file with the mark on.
|
||||
positioned after inserting a file with the mark on.
|
||||
* nano.c (copy_from_file): Make sure the mark is always properly
|
||||
positioned after uncutting multiple lines with the mark on.
|
||||
|
||||
2007-08-11 David Lawrence Ramsey <pooka109@gmail.com>
|
||||
|
||||
|
11
src/files.c
11
src/files.c
@ -814,7 +814,10 @@ void do_insertfile(
|
||||
#ifndef NANO_TINY
|
||||
if (openfile->mark_set)
|
||||
do_mark_shift = (openfile->current_x <=
|
||||
openfile->mark_begin_x);
|
||||
openfile->mark_begin_x ||
|
||||
openfile->current->lineno <=
|
||||
openfile->mark_begin->lineno);
|
||||
|
||||
#endif
|
||||
#ifdef ENABLE_MULTIBUFFER
|
||||
}
|
||||
@ -890,8 +893,12 @@ void do_insertfile(
|
||||
openfile->current_x;
|
||||
}
|
||||
#endif
|
||||
openfile->current_x += strlen(filepart->top_data);
|
||||
openfile->current_x += current_x_save;
|
||||
}
|
||||
#ifndef NANO_TINY
|
||||
else if (openfile->mark_set && do_mark_shift)
|
||||
openfile->mark_begin_x -= current_x_save;
|
||||
#endif
|
||||
|
||||
/* Update the current y-coordinate to account for the
|
||||
* number of lines inserted. */
|
||||
|
11
src/nano.c
11
src/nano.c
@ -393,6 +393,7 @@ void move_to_filestruct(filestruct **file_top, filestruct **file_bot,
|
||||
void copy_from_filestruct(filestruct *file_top, filestruct *file_bot)
|
||||
{
|
||||
filestruct *top_save;
|
||||
size_t current_x_save = openfile->current_x;
|
||||
bool edittop_inside;
|
||||
#ifndef NANO_TINY
|
||||
bool do_mark_shift = FALSE;
|
||||
@ -409,7 +410,9 @@ void copy_from_filestruct(filestruct *file_top, filestruct *file_bot)
|
||||
edittop_inside = (openfile->edittop == openfile->fileage);
|
||||
#ifndef NANO_TINY
|
||||
if (openfile->mark_set)
|
||||
do_mark_shift = (openfile->current_x <= openfile->mark_begin_x);
|
||||
do_mark_shift = (openfile->current_x <=
|
||||
openfile->mark_begin_x || openfile->current->lineno <=
|
||||
openfile->mark_begin->lineno);
|
||||
#endif
|
||||
|
||||
/* Put the top and bottom of the filestruct at copies of file_top
|
||||
@ -432,8 +435,12 @@ void copy_from_filestruct(filestruct *file_top, filestruct *file_bot)
|
||||
openfile->mark_begin_x += openfile->current_x;
|
||||
}
|
||||
#endif
|
||||
openfile->current_x += strlen(filepart->top_data);
|
||||
openfile->current_x += current_x_save;
|
||||
}
|
||||
#ifndef NANO_TINY
|
||||
else if (openfile->mark_set && do_mark_shift)
|
||||
openfile->mark_begin_x -= current_x_save;
|
||||
#endif
|
||||
|
||||
/* Get the number of characters in the copied text, and add it to
|
||||
* totsize. */
|
||||
|
Загрузка…
Ссылка в новой задаче
Block a user