]> git.lyx.org Git - lyx.git/blobdiff - src/Buffer.h
Revert 23154.
[lyx.git] / src / Buffer.h
index 944530d338c76196197488f4a48e82df85723b80..ace9986f23880a6e5111f255335618e1d3ba39d8 100644 (file)
@@ -14,9 +14,9 @@
 
 #include "insets/InsetCode.h"
 
-#include "support/FileName.h"
 #include "support/strfwd.h"
 #include "support/types.h"
+#include "support/SignalSlot.h"
 
 #include <string>
 #include <vector>
@@ -25,7 +25,8 @@
 namespace lyx {
 
 class BufferParams;
-class EmbeddedFiles;
+class EmbeddedFileList;
+class DocIterator;
 class ErrorItem;
 class ErrorList;
 class FuncRequest;
@@ -39,6 +40,7 @@ class LyXVC;
 class LaTeXFeatures;
 class Language;
 class MacroData;
+class MacroNameSet;
 class OutputParams;
 class Paragraph;
 class ParConstIterator;
@@ -48,12 +50,17 @@ class TeXErrors;
 class TexRow;
 class TocBackend;
 class Undo;
+class WordList;
 
 namespace frontend {
 class GuiBufferDelegate;
 class WorkAreaManager;
 }
 
+namespace support {
+class FileName;
+}
+
 /** The buffer object.
  * This is the buffer object. It contains all the informations about
  * a document loaded into LyX.
@@ -138,7 +145,7 @@ public:
                pit_type &, pos_type &,
                Font const &, docstring const &, bool);
        ///
-       ParIterator getParFromID(int id) const;
+       DocIterator getParFromID(int id) const;
        /// do we have a paragraph with this id?
        bool hasParWithID(int id) const;
 
@@ -298,7 +305,7 @@ public:
        void updateBibfilesCache() const;
        /// Return the cache with all bibfiles in use (including bibfiles
        /// of loaded child documents).
-       std::vector<support::FileName> const & getBibfilesCache() const;
+       EmbeddedFileList const & getBibfilesCache() const;
        ///
        void getLabelList(std::vector<docstring> &) const;
 
@@ -324,7 +331,7 @@ public:
        LyXVC const & lyxvc() const;
 
        /// Where to put temporary files.
-       std::string const temppath() const;
+       std::string const temppath() const;
 
        /// Used when typesetting to place errorboxes.
        TexRow const & texrow() const;
@@ -355,16 +362,24 @@ public:
        //
        // Macro handling
        //
-       /// Collect macros in paragraphs
-       void updateMacros();
-       /// Look for macro defined before par (or in the master buffer)
-       bool hasMacro(docstring const & name, Paragraph const & par) const;
-       /// Look for macro defined anywhere in the buffer (or in the master buffer)
-       bool hasMacro(docstring const & name) const;
-       /// Return macro defined before par (or in the master buffer)
-       MacroData const & getMacro(docstring const & name, Paragraph const & par) const;
+       /// Collect macro definitions in paragraphs
+       void updateMacros() const;
+       /// Iterate through the whole buffer and try to resolve macros
+       void updateMacroInstances() const;
+
+       /// List macro names of this buffer. the parent and the children
+       void listMacroNames(MacroNameSet & macros) const;
+       /// Write out all macros somewhere defined in the parent,
+       /// its parents and its children, which are visible at the beginning 
+       /// of this buffer
+       void writeParentMacros(odocstream & os) const;
+
+       /// Return macro defined before pos (or in the master buffer)
+       MacroData const * getMacro(docstring const & name, DocIterator const & pos, bool global = true) const;
        /// Return macro defined anywhere in the buffer (or in the master buffer)
-       MacroData const & getMacro(docstring const & name) const;
+       MacroData const * getMacro(docstring const & name, bool global = true) const;
+       /// Return macro defined before the inclusion of the child
+       MacroData const * getMacro(docstring const & name, Buffer const & child, bool global = true) const;
 
        /// Replace the inset contents for insets which InsetCode is equal
        /// to the passed \p inset_code.
@@ -390,8 +405,9 @@ public:
        TocBackend & tocBackend() const;
        
        //@{
-       EmbeddedFiles & embeddedFiles();
-       EmbeddedFiles const & embeddedFiles() const;
+       EmbeddedFileList & embeddedFiles();
+       EmbeddedFileList const & embeddedFiles() const;
+       bool embedded() const;
        //@}
 
        Undo & undo();
@@ -437,8 +453,36 @@ public:
        ///
        std::vector<Format const *> exportableFormats(bool only_viewable) const;
 
+       /// Register word for completion word list.
+       void registerWord(docstring const & word);
+       ///
+       WordList const & registeredWords() const;
+       
 private:
-  /// 
+       /// search for macro in local (buffer) table or in children
+       MacroData const * getBufferMacro(docstring const & name,
+                                        DocIterator const & pos) const;
+       /** Update macro table in the whole text inset
+           \param it at the start of the text inset)
+       */
+       void updateInsetMacros(DocIterator & it, 
+                              DocIterator & scope) const;
+       /** Update macro table for paragraphs until \c lastpit
+           \param it in some text inset
+           \param lastpit last processed paragraph
+       */
+       void updateEnvironmentMacros(DocIterator & it, 
+                                    pit_type lastpit, 
+                                    DocIterator & scope) const;
+       /** Update macro table for one paragraph block with 
+           same layout and depth, until \c lastpit
+           \param it in some text inset
+           \param lastpit last processed paragraph
+       */
+       void updateBlockMacros(DocIterator & it, 
+                              DocIterator & scope) const;
+
+       /// 
        bool readFileHelper(support::FileName const & s);
        ///
        std::vector<std::string> backends() const;
@@ -453,11 +497,18 @@ private:
        /// The pointer never changes although *pimpl_'s contents may.
        Impl * const d;
 
-       /// A cache for the bibfiles (including bibfiles of loaded child
-       /// documents), needed for appropriate update of natbib labels.
-       mutable std::vector<support::FileName> bibfilesCache_;
-
        frontend::GuiBufferDelegate * gui_;
+
+       /// This function is called when the buffer structure is changed.
+       Signal structureChanged_;
+       /// This function is called when some parsing error shows up.
+       //Signal errors(std::string const &) = 0;
+       /// This function is called when some message shows up.
+       //Signal message(docstring const &) = 0;
+       /// This function is called when the buffer busy status change.
+       //Signal setBusy(bool) = 0;
+       /// Reset autosave timers for all users.
+       Signal resetAutosaveTimers_;
 };