]> git.lyx.org Git - lyx.git/blobdiff - src/Buffer.h
Fix bug #5879 (try 2): Move the autosave file of a buffer when the filename changes.
[lyx.git] / src / Buffer.h
index f57a4c09b5a0d6089be1f99f53d00871a07ea669..97a940c248db24bcbefdbe1fe5f40426173f3a61 100644 (file)
@@ -12,6 +12,8 @@
 #ifndef BUFFER_H
 #define BUFFER_H
 
+#include "update_flags.h"
+
 #include "insets/InsetCode.h"
 
 #include "support/strfwd.h"
@@ -27,10 +29,13 @@ namespace lyx {
 class BiblioInfo;
 class BufferParams;
 class BufferSet;
+class DispatchResult;
 class DocIterator;
+class docstring_list;
 class ErrorItem;
 class ErrorList;
 class FuncRequest;
+class FuncStatus;
 class Inset;
 class InsetRef;
 class InsetLabel;
@@ -54,6 +59,7 @@ class TeXErrors;
 class TexRow;
 class TocBackend;
 class Undo;
+class WordLangTuple;
 
 namespace frontend {
 class GuiBufferDelegate;
@@ -110,6 +116,12 @@ public:
                timestamp_method, ///< Use timestamp, and checksum if timestamp has changed
        };
 
+       ///
+       enum UpdateScope {
+               UpdateMaster,
+               UpdateChildOnly
+       };
+
        /// Constructor
        explicit Buffer(std::string const & file, bool b = false);
 
@@ -117,15 +129,16 @@ public:
        ~Buffer();
 
        /** High-level interface to buffer functionality.
-           This function parses a command string and executes it
+           This function parses a command string and executes it.
        */
-       bool dispatch(std::string const & command, bool * result = 0);
+       void dispatch(std::string const & command, DispatchResult & result);
 
        /// Maybe we know the function already by number...
-       bool dispatch(FuncRequest const & func, bool * result = 0);
+       void dispatch(FuncRequest const & func, DispatchResult & result);
 
-       /// Load the autosaved file.
-       void loadAutoSaveFile();
+       /// Can this function be exectued?
+       /// \return true if we made a decision
+       bool getStatus(FuncRequest const & cmd, FuncStatus & flag);
 
        /// read a new document from a string
        bool readString(std::string const &);
@@ -312,12 +325,13 @@ public:
 
        /// Update the cache with all bibfiles in use (including bibfiles
        /// of loaded child documents).
-       void updateBibfilesCache() const;
+       void updateBibfilesCache(UpdateScope scope = UpdateMaster) const;
        ///
        void invalidateBibinfoCache();
        /// Return the cache with all bibfiles in use (including bibfiles
        /// of loaded child documents).
-       support::FileNameList const & getBibfilesCache() const;
+       support::FileNameList const & 
+               getBibfilesCache(UpdateScope scope = UpdateMaster) const;
        /// \return the bibliography information for this buffer's master,
        /// or just for it, if it isn't a child.
        BiblioInfo const & masterBibInfo() const;
@@ -452,9 +466,17 @@ public:
 
        ///
        void autoSave() const;
+       ///
+       void removeAutosaveFile() const;
+       ///
+       void moveAutosaveFile(support::FileName const & old) const;
+       ///
+       support::FileName getAutosaveFilename() const;
 
        /// return the format of the buffer on a string
        std::string bufferFormat() const;
+       /// return the default output format of the current backend
+       std::string getDefaultOutputFormat() const;
 
        ///
        bool doExport(std::string const & format, bool put_in_tempdir,
@@ -481,15 +503,22 @@ public:
        // clear how to do it just for the individual pieces we need.
        void setBuffersForInsets() const;
        ///
-       enum UpdateScope {
-               UpdateMaster,
-               UpdateChildOnly
-       };
-       ///
        void updateLabels(UpdateScope = UpdateMaster) const;
        ///
        void updateLabels(ParIterator & parit) const;
 
+       /// Find next word starting from \p from.
+       /// \p from initial position to search, will then points to the next
+       ///    word.
+       /// \p to will points to the end of the next word.
+       /// \p word will contain the found word if any.
+       /// \return true if a new word was found.
+       bool nextWord(DocIterator & from, DocIterator & to,
+               docstring & word) const;
+
+       int spellCheck(DocIterator & from, DocIterator & to,
+               WordLangTuple & word_lang, docstring_list & suggestions) const;
+
 private:
        /// search for macro in local (buffer) table or in children
        MacroData const * getBufferMacro(docstring const & name,