Howto modify selection from replace buffer (FindAdv)
Kornel Benko
kornel at lyx.org
Sat Jan 9 16:07:55 UTC 2021
Am Sat, 09 Jan 2021 12:58:16 +0100
schrieb Jürgen Spitzmüller <spitz at lyx.org>:
> Am Freitag, dem 08.01.2021 um 11:39 +0100 schrieb Kornel Benko:
> > I have problems to _use_ matched substrings in replace-mode.
> >
> > For instance given regular expression containing some groups, like
> > '(xxxx)(zzzz)(yyyy)'
> > and I want to change the found value to 'yyyyzzzzxxxx', so in regex I
> > would write
> > '\3\2\1'
> >
> > Now the selection contains '\3\2\1', this is selected (in
> > lyxfind.cpp:findAdvReplace())
> > with
> > cap::pasteParagraphList(cur,
> > repl_buffer.paragraphs(),
> >
> > repl_buffer.params().documentClassPtr(),
> > bv-
> > > buffer().errorList("Paste"));
> > LYXERR(Debug::FIND, "After pasteParagraphList() cur="
> > << cur << endl);
> > sel_len = repl_buffer.paragraphs().begin()->size();
> > and then follows
> > bv->putSelectionAt(DocIterator(cur), sel_len, !opt.forward);
> > bv->processUpdateFlags(Update::Force);
> >
> > How can I modify the data prior to inserting into buffer ?
> > The values of '\1', '\2', '\3' are known here, but are not used.
>
> I think you should write a function similar to changeFirstCase() that
> iterates over repl_buffer and replaces the placeholder in all
> paragraphs. Then the cap::pasteParagraphList() function in question
> should insert the modified paragraph(s).
>
> I don't know how difficult such a function would be, though.
>
> Jürgen
>
Yes, I overseen the LASSERT(repl_buffer.readString(lyx), return 0) statement,
so I was confused.
I can handle it now, but there is one difficulty, I cannot resolve.
The search-buffer and the replace-buffer contain not only strings, but also
the font, colour, size, specs.
ATM, the spec is used from the replace-buffer (only the char-cases are handled
differently)
We need a flag to know what should be done.
Committed at 60980b0e.
The replacement strings are '$$0', '$$1', ... , '$$6'
Number 7, 8, 9 are reserved, because the algorithm eats 3 of them.
Kornel
Kornel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: Digitale Signatur von OpenPGP
URL: <http://lists.lyx.org/pipermail/lyx-devel/attachments/20210109/23c4acdb/attachment.asc>
More information about the lyx-devel
mailing list