X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyxfind.h;h=b700e0ce1a5065013f8bc1cdf1d2c4d43a72fab2;hb=c9b1b46796923b0453ccaed022448b61b5be6d8a;hp=2401d073ce64aeeb82c348521a733671911a4810;hpb=97b82d285d5e9e007c075f15894b86fd13586714;p=lyx.git diff --git a/src/lyxfind.h b/src/lyxfind.h index 2401d073ce..b700e0ce1a 100644 --- a/src/lyxfind.h +++ b/src/lyxfind.h @@ -23,13 +23,21 @@ namespace lyx { - - -class Buffer; +class Cursor; class BufferView; class DocIterator; class FuncRequest; -class Text; + +/** Decode the \c argument to extract search plus options from a string + * that came to the LyX core in a FuncRequest wrapper. + */ +docstring const string2find(docstring const & argument, + bool &casesensitive, + bool &matchword, + bool &forward, + bool &wrap, + bool &instant, + bool &onlysel); /** Encode the parameters needed to find \c search as a string * that can be dispatched to the LyX core in a FuncRequest wrapper. @@ -37,7 +45,10 @@ class Text; docstring const find2string(docstring const & search, bool casesensitive, bool matchword, - bool forward); + bool forward, + bool wrap, + bool instant, + bool onlysel); /** Encode the parameters needed to replace \c search with \c replace * as a string that can be dispatched to the LyX core in a FuncRequest @@ -48,7 +59,10 @@ docstring const replace2string(docstring const & replace, bool casesensitive, bool matchword, bool all, - bool forward); + bool forward, + bool findnext = true, + bool wrap = true, + bool onlysel = false); /** Parse the string encoding of the find request that is found in * \c ev.argument and act on it. @@ -57,13 +71,18 @@ docstring const replace2string(docstring const & replace, */ bool lyxfind(BufferView * bv, FuncRequest const & ev); +bool findOne(BufferView * bv, docstring const & searchstr, + bool case_sens, bool whole, bool forward, + bool find_del = true, bool check_wrap = false, + bool const auto_wrap = false, bool instant = false, + bool onlysel = false); + /** Parse the string encoding of the replace request that is found in * \c ev.argument and act on it. * The string is encoded by \c replace2string. * \return whether we did anything */ -bool lyxreplace(BufferView * bv, - FuncRequest const &, bool has_deleted = false); +bool lyxreplace(BufferView * bv, FuncRequest const &); /// find the next change in the buffer bool findNextChange(BufferView * bv); @@ -71,12 +90,9 @@ bool findNextChange(BufferView * bv); /// find the previous change in the buffer bool findPreviousChange(BufferView * bv); -/// find the change in the buffer -/// \param next true to find the next change, otherwise the previous -bool findChange(BufferView * bv, bool next); +/// select change under the cursor +bool selectChange(Cursor & cur, bool forward = true); -// Hopefully, nobody will ever replace with something like this -#define LYX_FR_NULL_STRING "__LYX__F&R__NULL__STRING__" class FindAndReplaceOptions { public: @@ -86,31 +102,44 @@ public: S_OPEN_BUFFERS, S_ALL_MANUALS } SearchScope; + typedef enum { + R_EVERYTHING, + R_ONLY_MATHS + } SearchRestriction; FindAndReplaceOptions( - docstring const & search, + docstring const & find_buf_name, bool casesensitive, bool matchword, bool forward, bool expandmacros, bool ignoreformat, - bool regexp, - docstring const & replace, + docstring const & repl_buf_name, bool keep_case, - SearchScope scope = S_BUFFER + SearchScope scope = S_BUFFER, + SearchRestriction restr = R_EVERYTHING, + bool replace_all = false ); - FindAndReplaceOptions() { } - docstring search; - bool casesensitive; - bool matchword; - bool forward; - bool expandmacros; - bool ignoreformat; - bool regexp; - docstring replace; - bool keep_case; - SearchScope scope; + + FindAndReplaceOptions() {} + + docstring find_buf_name; + bool casesensitive = false; + bool matchword = false; + bool forward = false; + bool matchAtStart = false; + bool expandmacros = false; + bool ignoreformat = false; + /// This is docstring() if no replace was requested + docstring repl_buf_name; + bool keep_case = false; + SearchScope scope = S_BUFFER; + SearchRestriction restr = R_EVERYTHING; + bool replace_all = false; }; +/// Set the formats that should be ignored +void setIgnoreFormat(std::string const & type, bool value, bool fromUser = true); + /// Write a FindAdvOptions instance to a stringstream std::ostringstream & operator<<(std::ostringstream & os, lyx::FindAndReplaceOptions const & opt); @@ -118,8 +147,8 @@ std::ostringstream & operator<<(std::ostringstream & os, lyx::FindAndReplaceOpti std::istringstream & operator>>(std::istringstream & is, lyx::FindAndReplaceOptions & opt); /// Perform a FindAdv operation. -bool findAdv(BufferView * bv, FindAndReplaceOptions const & opt); - +bool findAdv(BufferView * bv, FindAndReplaceOptions & opt); + /** Computes the simple-text or LaTeX export (depending on opt) of buf starting ** from cur and ending len positions after cur, if len is positive, or at the ** paragraph or innermost inset end if len is -1. @@ -132,6 +161,7 @@ docstring stringifyFromForSearch( DocIterator const & cur, int len = -1); + } // namespace lyx #endif // LYXFIND_H