]> git.lyx.org Git - features.git/blobdiff - src/Buffer.h
Allow removing words from the personal dictionary, that weren't previously added.
[features.git] / src / Buffer.h
index 7b965de7c24764ae130639e4886641c390307d82..8f4474d311d4fef7b3342cd8a15a8e2891488937 100644 (file)
@@ -17,7 +17,6 @@
 #include "support/unique_ptr.h"
 #include "support/strfwd.h"
 #include "support/types.h"
-#include "support/FileNameList.h"
 
 #include <map>
 #include <list>
@@ -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 {
@@ -97,8 +93,6 @@ typedef std::shared_ptr<CloneList> CloneList_ptr;
  * \author Lars Gullik Bjønnes
  */
 
-class MarkAsExporting;
-
 class Buffer {
 public:
        /// What type of log will \c getLogName() return?
@@ -177,7 +171,7 @@ public:
 
        /// Can this function be exectued?
        /// \return true if we made a decision
-       bool getStatus(FuncRequest const & cmd, FuncStatus & flag);
+       bool getStatus(FuncRequest const & cmd, FuncStatus & flag) const;
 
        ///
        DocIterator getParFromID(int id) const;
@@ -227,6 +221,11 @@ 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:
        ///
@@ -265,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:
@@ -335,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;
@@ -527,8 +526,8 @@ public:
        void invalidateCiteLabels() const;
        ///
        bool citeLabelsValid() const;
-       ///
-       void getLabelList(std::vector<docstring> &) const;
+       /// two strings: plain label name and label as gui string
+       void getLabelList(std::vector<std::pair<docstring, docstring>> &) const;
 
        /// This removes the .aux and .bbl files from the temp dir.
        void removeBiblioTempFiles() const;
@@ -573,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);
@@ -665,6 +666,8 @@ public:
        void setBusy(bool on) const;
        /// Update window titles of all users.
        void updateTitles() const;
+       /// Schedule redraw of work areas
+       void scheduleRedrawWorkAreas() const;
        /// Reset autosave timers for all users.
        void resetAutosaveTimers() const;
        ///
@@ -732,13 +735,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
@@ -748,6 +755,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();
        ///
@@ -775,13 +784,24 @@ public:
        int wordCount() const;
        int charCount(bool with_blanks) const;
 
-       /// FIXME: dummy function for now
+       ///
        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;
@@ -798,10 +818,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;