X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fbuffer_funcs.cpp;h=8224241ee1db2a4a871648da302dc2cb653ca8bb;hb=489b80aef4d7904d667aeb06a32f2cc4ecbb75fa;hp=ee52fc68ec0f687c533e90209e988f3ec7568887;hpb=2b9e44cb0110201ca4d6320266e6550160ee99b3;p=lyx.git diff --git a/src/buffer_funcs.cpp b/src/buffer_funcs.cpp index ee52fc68ec..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); @@ -152,21 +153,23 @@ Buffer * newFile(string const & filename, string const & templatename, } -Buffer * newUnnamedFile(string const & templatename, FileName const & path) +Buffer * newUnnamedFile(FileName const & path, string const & prefix, + string const & templatename) { - static int newfile_number; - - FileName filename(path, - "newfile" + convert(++newfile_number) + ".lyx"); - while (theBufferList().exists(filename) - || filename.isReadableFile()) { - ++newfile_number; - filename.set(path, - "newfile" + convert(newfile_number) + ".lyx"); + static map file_number; + + FileName filename; + + do { + filename.set(path, + prefix + convert(++file_number[prefix]) + ".lyx"); } + while (theBufferList().exists(filename) || filename.isReadableFile()); + return newFile(filename.absFilename(), templatename, false); } + /* * FIXME : merge with countChars. The structures of the two functions * are similar but, unfortunately, they seem to have a different @@ -247,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