partition the filestruct properly when executing a command

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2082 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
master
David Lawrence Ramsey 2004-11-07 18:09:41 +00:00
parent 7105cf4f8e
commit c15802f8c3
1 changed files with 37 additions and 36 deletions

View File

@ -577,53 +577,54 @@ void do_insertfile(
execute = !execute;
continue;
}
#endif
#ifdef ENABLE_MULTIBUFFER
if (!ISSET(MULTIBUFFER)) {
#endif
/* If we're not inserting into a new buffer, partition
* the filestruct so that it contains no text and hence
* looks like a new buffer, and set edittop to the top
* of the partition. */
filepart = partition_filestruct(current, current_x,
current, current_x);
edittop = fileage;
#ifdef ENABLE_MULTIBUFFER
}
#endif
#ifndef NANO_SMALL
if (execute)
execute_command(answer);
else {
#endif
answer = mallocstrassn(answer, real_dir_from_tilde(answer));
#ifdef ENABLE_MULTIBUFFER
if (!ISSET(MULTIBUFFER)) {
#endif
/* If we're not inserting into a new buffer,
* partition the filestruct so that it contains no
* text and hence looks like a new buffer, and set
* edittop to the top of the partition. */
filepart = partition_filestruct(current, current_x,
current, current_x);
edittop = fileage;
#ifdef ENABLE_MULTIBUFFER
}
#endif
load_buffer(answer);
#ifdef ENABLE_MULTIBUFFER
if (!ISSET(MULTIBUFFER))
#endif
{
filestruct *top_save = fileage;
/* If we're not inserting into a new buffer,
* unpartition the filestruct so that it contains
* all the text again. Note that we've replaced the
* non-text originally in the partition with the
* text in the inserted file. */
unpartition_filestruct(filepart);
/* Renumber starting with the beginning line of the
* old partition. */
renumber(top_save);
/* Set edittop back to what it was before. */
edittop = edittop_save;
}
#ifndef NANO_SMALL
}
#endif
#ifdef ENABLE_MULTIBUFFER
if (!ISSET(MULTIBUFFER))
#endif
{
filestruct *top_save = fileage;
/* If we're not inserting into a new buffer, unpartition
* the filestruct so that it contains all the text
* again. Note that we've replaced the non-text
* originally in the partition with the text in the
* inserted file/executed command output. */
unpartition_filestruct(filepart);
/* Renumber starting with the beginning line of the old
* partition. */
renumber(top_save);
/* Set edittop back to what it was before. */
edittop = edittop_save;
}
#ifdef ENABLE_MULTIBUFFER
if (ISSET(MULTIBUFFER)) {
/* Update the titlebar. */