X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fbuffer_funcs.cpp;h=8224241ee1db2a4a871648da302dc2cb653ca8bb;hb=f37a1b8aeaf8f3a3a66a22bf0b396f7d1ceca2ff;hp=3115f4a356527fec91fbcb0c5fe30dc90e7d80bf;hpb=316a17f414008b052975b4f1623f1c8d1cc32881;p=lyx.git diff --git a/src/buffer_funcs.cpp b/src/buffer_funcs.cpp index 3115f4a356..8224241ee1 100644 --- a/src/buffer_funcs.cpp +++ b/src/buffer_funcs.cpp @@ -75,6 +75,7 @@ Buffer * checkAndLoadLyXFile(FileName const & filename, bool const acceptDirty) return checkBuffer; // FIXME: should be LFUN_REVERT + checkBuffer->markClean(); theBufferList().release(checkBuffer); // Load it again. return checkAndLoadLyXFile(filename); @@ -165,7 +166,7 @@ Buffer * newUnnamedFile(FileName const & path, string const & prefix, } while (theBufferList().exists(filename) || filename.isReadableFile()); - return newFile(filename.absFilename(), "", false); + return newFile(filename.absFilename(), templatename, false); } @@ -249,4 +250,27 @@ int countChars(DocIterator const & from, DocIterator const & to, return chars + blanks; } + +Buffer * loadIfNeeded(FileName const & fname) +{ + Buffer * buffer = theBufferList().getBuffer(fname); + if (!buffer) { + if (!fname.exists()) + return 0; + + buffer = theBufferList().newBuffer(fname.absFilename()); + if (!buffer) + // Buffer creation is not possible. + return 0; + + if (!buffer->loadLyXFile(fname)) { + //close the buffer we just opened + theBufferList().release(buffer); + return 0; + } + } + return buffer; +} + + } // namespace lyx