in do_insertfile(), make sure the mark is always properly positioned
after inserting a one-line file with the mark on git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@4152 35c25a1d-7b9e-4130-9fde-d3aeb78583b8master
parent
bf70087541
commit
908b127b44
|
@ -3,6 +3,8 @@
|
||||||
* Makefile.am: Remove erroneous backslash after
|
* Makefile.am: Remove erroneous backslash after
|
||||||
ChangeLog.pre-2.1 in EXTRA_DIST, so that "make dist" works
|
ChangeLog.pre-2.1 in EXTRA_DIST, so that "make dist" works
|
||||||
again.
|
again.
|
||||||
|
* files.c (do_insertfile): Make sure the mark is always properly
|
||||||
|
positioned after inserting a one-line file with the mark on.
|
||||||
|
|
||||||
2007-08-11 David Lawrence Ramsey <pooka109@gmail.com>
|
2007-08-11 David Lawrence Ramsey <pooka109@gmail.com>
|
||||||
|
|
||||||
|
|
31
src/files.c
31
src/files.c
|
@ -697,6 +697,9 @@ void do_insertfile(
|
||||||
ssize_t current_y_save = openfile->current_y;
|
ssize_t current_y_save = openfile->current_y;
|
||||||
bool at_edittop = FALSE;
|
bool at_edittop = FALSE;
|
||||||
/* Whether we're at the top of the edit window. */
|
/* Whether we're at the top of the edit window. */
|
||||||
|
#ifndef NANO_TINY
|
||||||
|
bool do_mark_shift = FALSE;
|
||||||
|
#endif
|
||||||
|
|
||||||
while (TRUE) {
|
while (TRUE) {
|
||||||
#ifndef NANO_TINY
|
#ifndef NANO_TINY
|
||||||
|
@ -800,14 +803,20 @@ void do_insertfile(
|
||||||
#endif
|
#endif
|
||||||
/* If we're not inserting into a new buffer, partition
|
/* If we're not inserting into a new buffer, partition
|
||||||
* the filestruct so that it contains no text and hence
|
* the filestruct so that it contains no text and hence
|
||||||
* looks like a new buffer, and keep track of whether
|
* looks like a new buffer, keep track of whether the
|
||||||
* the top of the partition is the top of the edit
|
* top of the partition is the top of the edit
|
||||||
* window. */
|
* window, and keep track of whether the mark begins
|
||||||
|
* inside the partition and will need adjustment. */
|
||||||
filepart = partition_filestruct(openfile->current,
|
filepart = partition_filestruct(openfile->current,
|
||||||
openfile->current_x, openfile->current,
|
openfile->current_x, openfile->current,
|
||||||
openfile->current_x);
|
openfile->current_x);
|
||||||
at_edittop =
|
at_edittop =
|
||||||
(openfile->fileage == openfile->edittop);
|
(openfile->fileage == openfile->edittop);
|
||||||
|
#ifndef NANO_TINY
|
||||||
|
if (openfile->mark_set)
|
||||||
|
do_mark_shift = (openfile->current_x <=
|
||||||
|
openfile->mark_begin_x);
|
||||||
|
#endif
|
||||||
#ifdef ENABLE_MULTIBUFFER
|
#ifdef ENABLE_MULTIBUFFER
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -870,8 +879,20 @@ void do_insertfile(
|
||||||
/* Update the current x-coordinate to account for the
|
/* Update the current x-coordinate to account for the
|
||||||
* number of characters inserted on the current line. */
|
* number of characters inserted on the current line. */
|
||||||
openfile->current_x = strlen(openfile->filebot->data);
|
openfile->current_x = strlen(openfile->filebot->data);
|
||||||
if (openfile->fileage == openfile->filebot)
|
if (openfile->fileage == openfile->filebot) {
|
||||||
openfile->current_x += current_x_save;
|
#ifndef NANO_TINY
|
||||||
|
/* If the mark begins inside the partition, update
|
||||||
|
* the mark coordinates to account for the number of
|
||||||
|
* characters inserted on the current line. */
|
||||||
|
if (openfile->mark_set) {
|
||||||
|
openfile->mark_begin = openfile->current;
|
||||||
|
if (do_mark_shift)
|
||||||
|
openfile->mark_begin_x +=
|
||||||
|
openfile->current_x;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
openfile->current_x += strlen(filepart->top_data);
|
||||||
|
}
|
||||||
|
|
||||||
/* Update the current y-coordinate to account for the
|
/* Update the current y-coordinate to account for the
|
||||||
* number of lines inserted. */
|
* number of lines inserted. */
|
||||||
|
|
Loading…
Reference in New Issue