#include "BufferView.h"
#include "buffer_funcs.h"
#include "cursor.h"
+#include "CutAndPaste.h"
#include "debug.h"
#include "gettext.h"
#include "session.h"
#include "lyxrc.h"
#include "lyxtext.h"
#include "paragraph.h"
+#include "undo.h"
#include "frontends/Alert.h"
#include "frontends/Application.h"
// Split argument by :
string name;
string tmpname = split(filename, name, ':');
- lyxerr[Debug::INFO] << "Arg is " << filename
+ LYXERR(Debug::INFO) << "Arg is " << filename
<< "\nName is " << name
<< "\nTemplate is " << tmpname << endl;
if (!bv->buffer())
return;
- // FIXME: We don't know the encoding of the file
- docstring const tmpstr = from_utf8(getContentsOfPlaintextFile(bv, f, asParagraph));
+ docstring const tmpstr = getContentsOfPlaintextFile(bv, f, asParagraph);
if (tmpstr.empty())
return;
- // clear the selection
- LyXText const & text = bv->buffer()->text();
- if (&text == bv->cursor().innerText())
- bv->cursor().clearSelection();
+ LCursor & cur = bv->cursor();
+ cap::replaceSelection(cur);
+ recordUndo(cur);
if (asParagraph)
- bv->cursor().innerText()->insertStringAsParagraphs(bv->cursor(), tmpstr);
+ cur.innerText()->insertStringAsParagraphs(cur, tmpstr);
else
- bv->cursor().innerText()->insertStringAsLines(bv->cursor(), tmpstr);
+ cur.innerText()->insertStringAsLines(cur, tmpstr);
}
-// Insert plain text file (if filename is empty, prompt for one)
-string getContentsOfPlaintextFile(BufferView * bv, string const & f, bool asParagraph)
+docstring const getContentsOfPlaintextFile(BufferView * bv, string const & f,
+ bool asParagraph)
{
FileName fname(f);
FileFilterList(), docstring());
if (result.first == FileDialog::Later)
- return string();
+ return docstring();
fname = makeAbsPath(to_utf8(result.second));
if (fname.empty())
- return string();
+ return docstring();
}
if (!fs::is_readable(fname.toFilesystemEncoding())) {
docstring const text = bformat(_("Could not read the specified document\n"
"%1$s\ndue to the error: %2$s"), file, error);
Alert::error(_("Could not read file"), text);
- return string();
+ return docstring();
}
ifstream ifs(fname.toFilesystemEncoding().c_str());
docstring const text = bformat(_("Could not open the specified document\n"
"%1$s\ndue to the error: %2$s"), file, error);
Alert::error(_("Could not open file"), text);
- return string();
+ return docstring();
}
ifs.unsetf(ios::skipws);
copy(ii, end, back_inserter(tmpstr));
#endif
- return tmpstr;
+ // FIXME UNICODE: We don't know the encoding of the file
+ return normalize_kc(from_utf8(tmpstr));
}