#include "support/lyxalgo.h"
#include "support/os.h"
#include "support/Package.h"
-#include "support/Path.h"
+#include "support/PathChanger.h"
#include "support/Systemcall.h"
#include "support/textutils.h"
#include "support/types.h"
/// This is here to force the test to be done whenever parent_buffer
/// is accessed.
- Buffer const * parent() const {
+ Buffer const * parent() const
+ {
// ignore_parent temporarily "orphans" a buffer
// (e.g. if a child is compiled standalone)
if (ignore_parent)
}
///
- void setParent(Buffer const * pb) {
+ void setParent(Buffer const * pb)
+ {
if (parent_buffer == pb)
// nothing to do
return;
/// \p from initial position
/// \p to points to the end position
void updateStatistics(DocIterator & from, DocIterator & to,
- bool skipNoOutput = true);
+ bool skipNoOutput = true);
/// statistics accessor functions
- int wordCount() const { return word_count_; }
- int charCount(bool with_blanks) const {
+ int wordCount() const
+ {
+ return word_count_;
+ }
+ int charCount(bool with_blanks) const
+ {
return char_count_
+ (with_blanks ? blank_count_ : 0);
}
Buffer * Buffer::cloneFromMaster() const
{
BufferMap bufmap;
- cloned_buffers.push_back(new CloneList());
+ cloned_buffers.push_back(new CloneList);
CloneList * clones = cloned_buffers.back();
masterBuffer()->cloneWithChildren(bufmap, clones);
Buffer * Buffer::cloneBufferOnly() const {
- cloned_buffers.push_back(new CloneList());
+ cloned_buffers.push_back(new CloneList);
CloneList * clones = cloned_buffers.back();
Buffer * buffer_clone = new Buffer(fileName().absFileName(), false, this);
clones->insert(buffer_clone);
void Buffer::setFileName(FileName const & fname)
{
+ bool const changed = fname != d->filename;
d->filename = fname;
+ if (changed)
+ lyxvc().file_found_hook(fname);
setReadonly(d->filename.isReadOnly());
saveCheckSum();
updateTitles();
}
+void Buffer::makeCitationLabels() const
+{
+ Buffer const * const master = masterBuffer();
+ return d->bibinfo_.makeCitationLabels(*master);
+}
+
+
bool Buffer::citeLabelsValid() const
{
return masterBuffer()->d->cite_labels_valid_;
switch (func.action()) {
case LFUN_BUFFER_TOGGLE_READ_ONLY:
- if (lyxvc().inUse())
- lyxvc().toggleReadOnly();
+ if (lyxvc().inUse()) {
+ string log = lyxvc().toggleReadOnly();
+ if (!log.empty())
+ dr.setMessage(log);
+ }
else
setReadonly(!isReadonly());
break;
buf->d->bak_clean = true;
FileName const fname = getAutosaveFileName();
- if (d->cloned_buffer_) {
- // If this buffer is cloned, we assume that
- // we are running in a separate thread already.
- FileName const tmp_ret = FileName::tempName("lyxauto");
- if (!tmp_ret.empty()) {
- writeFile(tmp_ret);
- // assume successful write of tmp_ret
- if (tmp_ret.moveTo(fname))
- return true;
- }
- // failed to write/rename tmp_ret so try writing direct
- return writeFile(fname);
- } else {
- /// This function is deprecated as the frontend needs to take care
- /// of cloning the buffer and autosaving it in another thread. It
- /// is still here to allow (QT_VERSION < 0x040400).
- AutoSaveBuffer autosave(*this, fname);
- autosave.start();
- return true;
+ LASSERT(d->cloned_buffer_, return false);
+
+ // If this buffer is cloned, we assume that
+ // we are running in a separate thread already.
+ FileName const tmp_ret = FileName::tempName("lyxauto");
+ if (!tmp_ret.empty()) {
+ writeFile(tmp_ret);
+ // assume successful write of tmp_ret
+ if (tmp_ret.moveTo(fname))
+ return true;
}
+ // failed to write/rename tmp_ret so try writing direct
+ return writeFile(fname);
}
"file."), from_utf8(d->filename.absFileName())));
}
markDirty();
+ lyxvc().file_found_hook(d->filename);
str = _("Document was successfully recovered.");
} else
str = _("Document was NOT successfully recovered.");
from_utf8(d->filename.absFileName())));
}
markDirty();
+ lyxvc().file_found_hook(d->filename);
return ReadSuccess;
}
return ReadAutosaveFailure;
d->bibinfo_cache_valid_ = true;
d->cite_labels_valid_ = true;
- cbuf.tocBackend().update();
+ cbuf.tocBackend().update(true);
if (scope == UpdateMaster)
cbuf.structureChanged();
}
}
switch(layout.labeltype) {
- case LABEL_COUNTER:
- if (layout.toclevel <= bp.secnumdepth
- && (layout.latextype != LATEX_ENVIRONMENT
- || it.text()->isFirstInSequence(it.pit()))) {
- if (counters.hasCounter(layout.counter))
- counters.step(layout.counter, utype);
- par.params().labelString(par.expandLabel(layout, bp));
- } else
- par.params().labelString(docstring());
- break;
-
case LABEL_ITEMIZE: {
// At some point of time we should do something more
// clever here, like:
par.params().labelString(docstring());
break;
+ case LABEL_ABOVE:
+ case LABEL_CENTERED:
+ case LABEL_STATIC: {
+ docstring const & lcounter = layout.counter;
+ if (!lcounter.empty()) {
+ if (layout.toclevel <= bp.secnumdepth
+ && (layout.latextype != LATEX_ENVIRONMENT
+ || it.text()->isFirstInSequence(it.pit()))) {
+ if (counters.hasCounter(lcounter))
+ counters.step(lcounter, utype);
+ par.params().labelString(par.expandLabel(layout, bp));
+ } else
+ par.params().labelString(docstring());
+ } else
+ par.params().labelString(par.expandLabel(layout, bp));
+ break;
+ }
+
case LABEL_MANUAL:
- case LABEL_TOP_ENVIRONMENT:
- case LABEL_CENTERED_TOP_ENVIRONMENT:
- case LABEL_STATIC:
case LABEL_BIBLIO:
par.params().labelString(par.expandLabel(layout, bp));
- break;
}
}