* Licence details can be found in the file COPYING.
*
* \author Asger Alstrup
- * \author Lars Gullik Bjønnes
+ * \author Lars Gullik Bjønnes
* \author John Levon
- * \author André Pönitz
- * \author Jürgen Vigna
+ * \author André Pönitz
+ * \author Jürgen Vigna
*
* Full author contact details are available in file CREDITS.
*/
class Counters;
class Cursor;
class CursorSlice;
+class DocIterator;
+class docstring_list;
class DocumentClass;
class Inset;
class InsetBibitem;
class PainterInfo;
class ParagraphParameters;
class TexRow;
-
+class Toc;
+class WordLangTuple;
+class XHTMLStream;
class FontSpan {
public:
{
AS_STR_NONE = 0, ///< No option, only printable characters.
AS_STR_LABEL = 1, ///< Prefix with paragraph label.
- AS_STR_INSETS = 2 ///< Go into insets.
+ AS_STR_INSETS = 2, ///< Go into insets.
+ AS_STR_NEWLINES = 4 ///< Get also newline characters.
};
///
int id() const;
+ ///
+ void addChangesToToc(DocIterator const & cdit, Buffer const & buf) const;
///
Language const * getParLanguage(BufferParams const &) const;
///
docstring asString(pos_type beg, pos_type end,
int options = AS_STR_NONE) const;
+ /// Extract only the explicitly visible text (without any formatting),
+ /// descending into insets
+ docstring stringify(pos_type beg, pos_type end, int options, OutputParams & runparams) const;
+
///
void write(std::ostream &, BufferParams const &,
depth_type & depth) const;
///
bool latex(BufferParams const &, Font const & outerfont, odocstream &,
- TexRow & texrow, OutputParams const &) const;
+ TexRow & texrow, OutputParams const &,
+ int start_pos = 0, int end_pos = -1) const;
/// Can we drop the standard paragraph wrapper?
bool emptyTag() const;
/// Get the id of the paragraph, usefull for docbook
std::string getID(Buffer const & buf, OutputParams const & runparams) const;
- /// Get the first word of a paragraph, return the position where it left
- pos_type firstWord(odocstream & os, OutputParams const & runparams) const;
+ /// Output the first word of a paragraph, return the position where it left.
+ pos_type firstWordDocBook(odocstream & os, OutputParams const & runparams) const;
+
+ /// Output the first word of a paragraph, return the position where it left.
+ pos_type firstWordLyXHTML(XHTMLStream & xs, OutputParams const & runparams) const;
/// Writes to stream the docbook representation
void simpleDocBookOnePar(Buffer const & buf,
OutputParams const & runparams,
Font const & outerfont,
pos_type initial = 0) const;
+ /// \return any material that has had to be deferred until after the
+ /// paragraph has closed.
+ docstring simpleLyXHTMLOnePar(Buffer const & buf,
+ XHTMLStream & xs,
+ OutputParams const & runparams,
+ Font const & outerfont,
+ bool fortoc = false,
+ pos_type initial = 0) const;
///
bool hasSameLayout(Paragraph const & par) const;
void makeSameLayout(Paragraph const & par);
///
- void setInsetOwner(Inset * inset);
- ///
- Inset * inInset() const;
+ void setInsetOwner(Inset const * inset);
///
- InsetCode ownerCode() const;
- ///
- bool forcePlainLayout() const;
+ Inset const & inInset() const;
///
bool allowParagraphCustomization() const;
///
void setLayout(Layout const & layout);
///
void setPlainOrDefaultLayout(DocumentClass const & tc);
+ ///
+ void setDefaultLayout(DocumentClass const & tc);
+ ///
+ void setPlainLayout(DocumentClass const & tc);
/// This is the item depth, only used by enumerate and itemize
signed char itemdepth;
/// is there a change within the given range ?
bool isChanged(pos_type start, pos_type end) const;
/// is there an unchanged char at the given pos ?
- bool isUnchanged(pos_type pos) const;
+ bool isChanged(pos_type pos) const;
/// is there an insertion at the given pos ?
bool isInserted(pos_type pos) const;
/// is there a deletion at the given pos ?
bool isDeleted(pos_type pos) const;
+ /// is the whole paragraph deleted ?
+ bool isDeleted(pos_type start, pos_type end) const;
/// will the paragraph be physically merged with the next
/// one if the imaginary end-of-par character is logically deleted?
void setChange(pos_type pos, Change const & change);
/// accept changes within the given range
- void acceptChanges(BufferParams const & bparams, pos_type start, pos_type end);
+ void acceptChanges(pos_type start, pos_type end);
/// reject changes within the given range
- void rejectChanges(BufferParams const & bparams, pos_type start, pos_type end);
+ void rejectChanges(pos_type start, pos_type end);
/// Paragraphs can contain "manual labels", for example, Description
/// environment. The text for this user-editable label is stored in
docstring const getLabelWidthString() const;
/// Set label width string.
void setLabelWidthString(docstring const & s);
- /// translate \p label to the paragraph language if possible.
- docstring const translateIfPossible(docstring const & label,
- BufferParams const & bparams) const;
/// Expand the counters for the labelstring of \c layout
docstring expandLabel(Layout const &, BufferParams const &,
bool process_appendix = true) const;
between the characters font and the layoutfont.
This is what is stored in the fonttable
*/
- Font const
+ Font const &
getFontSettings(BufferParams const &, pos_type pos) const;
///
- Font const getFirstFontSettings(BufferParams const &) const;
+ Font const & getFirstFontSettings(BufferParams const &) const;
/** Get fully instantiated font. If pos == -1, use the layout
font attached to this paragraph.
///
void insertChar(pos_type pos, char_type c,
Font const &, Change const & change);
- ///
- void insertInset(pos_type pos, Inset * inset,
+ /// Insert \p inset at position \p pos with \p change traking status.
+ /// \return true if successful.
+ bool insertInset(pos_type pos, Inset * inset,
Change const & change);
- ///
- void insertInset(pos_type pos, Inset * inset,
- Font const &, Change const & change);
+ /// Insert \p inset at position \p pos with \p change traking status and
+ /// \p font.
+ /// \return true if successful.
+ bool insertInset(pos_type pos, Inset * inset,
+ Font const & font, Change const & change);
///
Inset * getInset(pos_type pos);
///
bool isSeparator(pos_type pos) const;
///
bool isLineSeparator(pos_type pos) const;
- /// True if the character/inset at this point can be part of a word.
- /// Note that digits in particular are considered as letters
- bool isLetter(pos_type pos) const;
+ /// True if the character/inset at this point is a word separator.
+ /// Note that digits in particular are not considered as word separator.
+ bool isWordSeparator(pos_type pos) const;
/// True if the element at this point is a character that is not a letter.
bool isChar(pos_type pos) const;
/// True if the element at this point is a space
pos_type pos, ///< start from here.
bool del = true) const;
+ void locateWord(pos_type & from, pos_type & to,
+ word_location const loc) const;
///
- void updateWords(CursorSlice const & sl);
+ void updateWords();
+
+ /// Spellcheck word at position \p from and fill in found misspelled word
+ /// and \p suggestions if \p do_suggestion is true.
+ /// \return true if pointed word is misspelled.
+ bool spellCheck(pos_type & from, pos_type & to, WordLangTuple & wl,
+ docstring_list & suggestions, bool do_suggestion = true) const;
+
+ /// Spellcheck word at position \p pos.
+ /// \return true if pointed word is misspelled.
+ bool isMisspelled(pos_type pos) const;
+ /// an automatically generated identifying label for this paragraph.
+ /// presently used only in the XHTML output routines.
+ std::string magicLabel() const;
private:
///
void deregisterWords();
///
- void collectWords(CursorSlice const & sl);
+ void collectWords();
///
void registerWords();