X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyxfind.h;h=bfaae8f43d96d6bfdda818cabdda8637eafd7fdc;hb=dab71087cf2954b77d3d2c0e67b868f9be82fba9;hp=e755efbd1548a585dc47be8043679c009cbb1a94;hpb=c5e56fea3243a291236d2d0099be289aff392732;p=lyx.git diff --git a/src/lyxfind.h b/src/lyxfind.h index e755efbd15..bfaae8f43d 100644 --- a/src/lyxfind.h +++ b/src/lyxfind.h @@ -26,6 +26,7 @@ namespace lyx { class Buffer; +class Cursor; class BufferView; class DocIterator; class FuncRequest; @@ -43,61 +44,93 @@ docstring const find2string(docstring const & search, * as a string that can be dispatched to the LyX core in a FuncRequest * wrapper. */ -docstring const replace2string(docstring const & search, - docstring const & replace, +docstring const replace2string(docstring const & replace, + docstring const & search, bool casesensitive, bool matchword, bool all, - bool forward); + bool forward, + bool findnext = true); /** Parse the string encoding of the find request that is found in * \c ev.argument and act on it. * The string is encoded by \c find2string. * \return true if the string was found. */ -bool find(BufferView * bv, FuncRequest const & ev); +bool lyxfind(BufferView * bv, FuncRequest const & ev); /** 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 */ -void replace(BufferView * bv, FuncRequest const &, bool has_deleted = false); +bool lyxreplace(BufferView * bv, + FuncRequest const &, bool has_deleted = false); /// find the next change in the buffer bool findNextChange(BufferView * bv); -class FindAdvOptions { +/// find the previous change in the buffer +bool findPreviousChange(BufferView * bv); + +/// select change under the cursor +bool selectChange(Cursor & cur, bool forward = true); + + +class FindAndReplaceOptions { public: - FindAdvOptions( - docstring const & search, - bool casesensitive, - bool matchword, - bool forward, - bool expandmacros, - bool ignoreformat, - bool regexp); - FindAdvOptions() {} - docstring search; - bool casesensitive; - bool matchword; - bool forward; - bool expandmacros; - bool ignoreformat; - bool regexp; + typedef enum { + S_BUFFER, + S_DOCUMENT, + S_OPEN_BUFFERS, + S_ALL_MANUALS + } SearchScope; + typedef enum { + R_EVERYTHING, + R_ONLY_MATHS + } SearchRestriction; + FindAndReplaceOptions( + docstring const & find_buf_name, + bool casesensitive, + bool matchword, + bool forward, + bool expandmacros, + bool ignoreformat, + docstring const & repl_buf_name, + bool keep_case, + SearchScope scope = S_BUFFER, + SearchRestriction restr = R_EVERYTHING, + bool replace_all = false + ); + FindAndReplaceOptions() : casesensitive(false), matchword(false), forward(false), + expandmacros(false), ignoreformat(false), + keep_case(false), scope(S_BUFFER), restr(R_EVERYTHING), replace_all(false) {} + docstring find_buf_name; + bool casesensitive; + bool matchword; + bool forward; + bool expandmacros; + bool ignoreformat; + /// This is docstring() if no replace was requested + docstring repl_buf_name; + bool keep_case; + SearchScope scope; + SearchRestriction restr; + bool replace_all; }; +/// Set the formats that should be ignored +void setIgnoreFormat(std::string const & type, bool value); + /// Write a FindAdvOptions instance to a stringstream -std::ostringstream & operator<<(std::ostringstream & os, lyx::FindAdvOptions const & opt); +std::ostringstream & operator<<(std::ostringstream & os, lyx::FindAndReplaceOptions const & opt); /// Read a FindAdvOptions instance from a stringstream -std::istringstream & operator>>(std::istringstream & is, lyx::FindAdvOptions & opt); - -/// Dispatch a LFUN_WORD_FINDADV command request -void findAdv(BufferView * bv, FuncRequest const & ev); +std::istringstream & operator>>(std::istringstream & is, lyx::FindAndReplaceOptions & opt); /// Perform a FindAdv operation. -bool findAdv(BufferView * bv, FindAdvOptions const & opt); - +bool findAdv(BufferView * bv, FindAndReplaceOptions const & 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. @@ -105,8 +138,11 @@ bool findAdv(BufferView * bv, FindAdvOptions const & opt); ** This is useful for computing opt.search from the SearchAdvDialog controller (ControlSearchAdv). ** Ideally, this should not be needed, and the opt.search field should become a Text const &. **/ -docstring stringifyFromForSearch(FindAdvOptions const & opt, - Buffer const & buf, DocIterator const & cur, int len = -1); +docstring stringifyFromForSearch( + FindAndReplaceOptions const & opt, + DocIterator const & cur, + int len = -1); + } // namespace lyx