]> git.lyx.org Git - lyx.git/blobdiff - src/Buffer.h
Revert 23154.
[lyx.git] / src / Buffer.h
index 2c5a5a1c77251377f13990232462437383ed9e4c..ace9986f23880a6e5111f255335618e1d3ba39d8 100644 (file)
@@ -16,6 +16,7 @@
 
 #include "support/strfwd.h"
 #include "support/types.h"
+#include "support/SignalSlot.h"
 
 #include <string>
 #include <vector>
@@ -24,7 +25,8 @@
 namespace lyx {
 
 class BufferParams;
-class EmbeddedFiles;
+class EmbeddedFileList;
+class DocIterator;
 class ErrorItem;
 class ErrorList;
 class FuncRequest;
@@ -38,6 +40,7 @@ class LyXVC;
 class LaTeXFeatures;
 class Language;
 class MacroData;
+class MacroNameSet;
 class OutputParams;
 class Paragraph;
 class ParConstIterator;
@@ -47,6 +50,7 @@ class TeXErrors;
 class TexRow;
 class TocBackend;
 class Undo;
+class WordList;
 
 namespace frontend {
 class GuiBufferDelegate;
@@ -55,7 +59,6 @@ class WorkAreaManager;
 
 namespace support {
 class FileName;
-class FileNameList;
 }
 
 /** The buffer object.
@@ -142,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;
 
@@ -302,7 +305,7 @@ public:
        void updateBibfilesCache() const;
        /// Return the cache with all bibfiles in use (including bibfiles
        /// of loaded child documents).
-       support::FileNameList const & getBibfilesCache() const;
+       EmbeddedFileList const & getBibfilesCache() const;
        ///
        void getLabelList(std::vector<docstring> &) const;
 
@@ -359,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.
@@ -394,8 +405,9 @@ public:
        TocBackend & tocBackend() const;
        
        //@{
-       EmbeddedFiles & embeddedFiles();
-       EmbeddedFiles const & embeddedFiles() const;
+       EmbeddedFileList & embeddedFiles();
+       EmbeddedFileList const & embeddedFiles() const;
+       bool embedded() const;
        //@}
 
        Undo & undo();
@@ -441,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;
@@ -458,6 +498,17 @@ private:
        Impl * const d;
 
        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_;
 };