X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBuffer.h;h=ba066f724c5cd86f61435060bc515cd4b72941d3;hb=0515bfa989474c6dc46256b1bea52cff7f330336;hp=977d893c33ed7526025abd542dd82b7c076dc881;hpb=dba1e40b520f67faeb49759b7cec9ec4f981f9a1;p=lyx.git diff --git a/src/Buffer.h b/src/Buffer.h index 977d893c33..ba066f724c 100644 --- a/src/Buffer.h +++ b/src/Buffer.h @@ -17,7 +17,6 @@ #include "support/unique_ptr.h" #include "support/strfwd.h" #include "support/types.h" -#include "support/FileNameList.h" #include #include @@ -39,9 +38,6 @@ class FuncRequest; class FuncStatus; class Inset; class InsetLabel; -class InsetRef; -class Font; -class Format; class Lexer; class Text; class LyXVC; @@ -52,10 +48,9 @@ class MacroNameSet; class MacroSet; class OutputParams; class otexstream; -class Paragraph; -class ParConstIterator; -class ParIterator; class ParagraphList; +class ParIterator; +class ParConstIterator; class TeXErrors; class TexRow; class TocBackend; @@ -70,6 +65,7 @@ class WorkAreaManager; namespace support { class DocFileName; class FileName; +class FileNameList; } // namespace support namespace graphics { @@ -82,6 +78,7 @@ class Buffer; typedef std::list ListOfBuffers; /// a list of Buffers we cloned typedef std::set CloneList; +typedef std::shared_ptr CloneList_ptr; /** The buffer object. @@ -96,8 +93,6 @@ typedef std::set CloneList; * \author Lars Gullik Bjønnes */ -class MarkAsExporting; - class Buffer { public: /// What type of log will \c getLogName() return? @@ -153,7 +148,7 @@ public: /// Constructor explicit Buffer(std::string const & file, bool readonly = false, - Buffer const * cloned_buffer = 0); + Buffer const * cloned_buffer = nullptr); /// Destructor ~Buffer(); @@ -226,12 +221,17 @@ public: int readHeader(Lexer & lex); double fontScalingFactor() const; + /// check for active synctex support: + /// - either the document has synchronize output enabled or + /// - there is a converter to dvi or pdf defined with synctex command line argument + /// this is the "expert mode", false positives are possible + bool isSyncTeXenabled() const; private: /// typedef std::map BufferMap; /// - void cloneWithChildren(BufferMap &, CloneList *) const; + void cloneWithChildren(BufferMap &, CloneList_ptr) const; /// save checksum of the given file. void saveCheckSum() const; /// read a new file @@ -264,7 +264,7 @@ public: bool autoSave() const; /// save emergency file /// \return a status message towards the user. - docstring emergencyWrite(); + docstring emergencyWrite() const; //FIXME:The following function should be private //private: @@ -334,9 +334,9 @@ public: OutputParams const & runparams_in, OutputWhat output = FullSource) const; /// - ExportStatus writeDocBookSource(odocstream & os, std::string const & filename, - OutputParams const & runparams_in, - OutputWhat output = FullSource) const; + ExportStatus writeDocBookSource(odocstream & os, + OutputParams const & runparams_in, + OutputWhat output = FullSource) const; /// ExportStatus makeLyXHTMLFile(support::FileName const & filename, OutputParams const & runparams_in) const; @@ -347,7 +347,7 @@ public: /// returns the main language for the buffer (document) Language const * language() const; /// get l10n translated to the buffers language - docstring const B_(std::string const & l10n) const; + docstring B_(std::string const & l10n) const; /// int runChktex(); @@ -439,7 +439,7 @@ public: std::string latexName(bool no_path = true) const; /// Get the name and type of the log. - std::string logName(LogType * type = 0) const; + std::string logName(LogType * type = nullptr) const; /// Set document's parent Buffer. void setParent(Buffer const *); @@ -526,8 +526,8 @@ public: void invalidateCiteLabels() const; /// bool citeLabelsValid() const; - /// - void getLabelList(std::vector &) const; + /// two strings: plain label name and label as gui string + void getLabelList(std::vector> &) const; /// This removes the .aux and .bbl files from the temp dir. void removeBiblioTempFiles() const; @@ -572,6 +572,8 @@ public: ParIterator par_iterator_end(); /// ParConstIterator par_iterator_end() const; + /// Is document empty ? + bool empty() const; // Position of the child buffer where it appears first in the master. DocIterator firstChildPosition(Buffer const * child); @@ -624,7 +626,7 @@ public: mutable UserMacroSet usermacros; /// Replace the inset contents for insets which InsetCode is equal - /// to the passed \p inset_code. + /// to the passed \p inset_code. Handles undo. void changeRefsIfUnique(docstring const & from, docstring const & to); /// get source code (latex/docbook) for some paragraphs, or all paragraphs @@ -731,13 +733,17 @@ public: /// Updates screen labels and some other information associated with /// insets and paragraphs. Actually, it's more like a general "recurse /// through the Buffer" routine, that visits all the insets and paragraphs. - void updateBuffer() const { updateBuffer(UpdateMaster, InternalUpdate); } + void updateBuffer() const; /// \param scope: whether to start with the master document or just /// do this one. /// \param output: whether we are preparing for output. void updateBuffer(UpdateScope scope, UpdateType utype) const; /// - void updateBuffer(ParIterator & parit, UpdateType utype) const; + void updateBuffer(ParIterator & parit, UpdateType utype, bool const deleted = false) const; + /// Forces an updateBuffer() call + void forceUpdate() const; + /// Do we need to call updateBuffer()? + bool needUpdate() const; /// Spellcheck starting from \p from. /// \p from initial position, will then points to the next misspelled @@ -747,6 +753,8 @@ public: /// \return progress if a new word was found. int spellCheck(DocIterator & from, DocIterator & to, WordLangTuple & word_lang, docstring_list & suggestions) const; + /// Marks the whole buffer to be checked (again) + void requestSpellcheck(); /// void checkChildBuffers(); /// @@ -774,13 +782,24 @@ public: int wordCount() const; int charCount(bool with_blanks) const; - /// FIXME: dummy function for now - bool areChangesPresent() const { return true; } + /// + bool areChangesPresent() const; /// void registerBibfiles(docstring_list const & bf) const; /// support::FileName getBibfilePath(docstring const & bibid) const; + /// Return the list with all bibfiles in use (including bibfiles + /// of loaded child documents). + docstring_list const & + getBibfiles(UpdateScope scope = UpdateMaster) const; + + /// routines for dealing with possible self-inclusion + void pushIncludedBuffer(Buffer const * buf) const; + void popIncludedBuffer() const; + bool isBufferIncluded(Buffer const * buf) const; +private: + void clearIncludeList() const; private: friend class MarkAsExporting; @@ -797,10 +816,6 @@ private: /// last time we loaded the cache. Note that this does NOT update the /// cached information. void checkIfBibInfoCacheIsValid() const; - /// Return the list with all bibfiles in use (including bibfiles - /// of loaded child documents). - docstring_list const & - getBibfiles(UpdateScope scope = UpdateMaster) const; /// void collectChildren(ListOfBuffers & children, bool grand_children) const;