Maxime Coste
fd043435e5
Split compile time regex flags from runtime ones
2019-01-20 22:59:28 +11:00
Maxime Coste
8c2603ab3c
Support re-using the same ThreadedRegexVM for multiple iterations
...
This should reduce the number of allocations as the memory allocated
for the thread stack and the saves can be re-used between runs instead
of being cleared every time.
2019-01-20 22:59:28 +11:00
Maxime Coste
566268d7bc
Refactor RegexIterator to use a Sentinel
2019-01-20 22:59:28 +11:00
Maxime Coste
328c497be2
Add support for named captures to the regex impl and regex highlighter
...
ECMAScript is adding support for it, and it is a pretty isolated
change to do.
Fixes #2293
2019-01-03 22:55:50 +11:00
Maxime Coste
b5693c6253
Refactor option_from_string to return directly the option value
2018-05-27 13:00:50 +10:00
Maxime Coste
2fc5a0317c
Refactor RegexIterator::next to directly use a ThreadedRegexVM
2018-04-25 21:20:32 +10:00
Maxime Coste
fb65fa60f8
Regex: take the full subject range as a parameter
...
To allow more general look arounds out of the actual search range,
pass a second range (the actual subject). This allows us to remove
various flags such as PrevAvailable or NotBeginOfSubject, which are
now easy to check from the subject range.
Fixes #1902
2018-03-05 05:48:10 +11:00
Maxime Coste
d9e44dfacf
Regex: Remove helper functions from regex_impl.hh
...
They were close duplicates from the ones in regex.hh and not used
anywhere else.
2018-03-05 03:10:47 +11:00
Maxime Coste
6333ae207f
Correctly set the NotBeginOfSubject/NotEndOfSubject flags for regex matching
...
Fixes #1778
2017-12-29 09:55:53 +11:00
Maxime Coste
9a4b5de772
Regex: Introduce backward_regex_search helper function
2017-12-03 17:12:33 +08:00
Maxime Coste
b34bb6b794
Regex: make RegexIterator iterable and able to iter backwards
2017-12-02 14:02:41 +08:00
Maxime Coste
413f880e9e
Regex: Support forward and backward matching code in the same CompiledRegex
...
No need to have two separate regexes to handle forward and backward
matching, just passing RegexCompileFlags::Backward will add support
for backward matching to the regex. For backward only regex, pass
RegexCompileFlags::NoForward as well to disable generation of
forward matching code.
2017-12-01 19:57:02 +08:00
Maxime Coste
839da764e7
Regex: avoid unneeded allocations and moves by reusing MatchResults storage
2017-11-29 14:07:04 +08:00
Maxime Coste
5cfccad39c
Regex: Use MemoryDomain::Regex for captures and MatchResults contents
2017-11-12 12:30:21 +08:00
Maxime Coste
51de90f366
Regex: Remove boost related code
2017-11-01 14:09:39 +08:00
Maxime Coste
80f6caee81
Regex: move try/catch blocks inside boost specific code
2017-11-01 14:05:14 +08:00
Maxime Coste
1c95074657
Make use of custom regex backward searching support for reverse search
2017-11-01 14:05:14 +08:00
Maxime Coste
785cd34b4b
Regex: Make boost checking disableable at compile time
2017-11-01 14:05:14 +08:00
Maxime Coste
065bbc8f59
Regex: switch to custom impl, use boost for checking
2017-11-01 14:05:14 +08:00
Maxime Coste
08ea68dc1f
Regex: Fix handling of match_prev_avail for boost regex
...
We were passing around iterators that were not allowed to
go before the begin iterator.
2017-11-01 14:05:14 +08:00
Maxime Coste
9ec376135b
Regex: Introduce RegexExecFlags::PrevAvailable
...
Rework assertion code as well.
2017-11-01 14:05:14 +08:00
Maxime Coste
3b69dda04e
Regex: Find potential start position using a map of valid start chars
...
With this optimization we get close to performance parity with boost
regex on the common use cases in Kakoune.
2017-11-01 14:05:14 +08:00
Maxime Coste
adcd02b7d2
Regex: Replace boost regex_iterator impl with our own
...
Ensure we check the results from our own regex impl in all uses of
regexs in Kakoune.
2017-11-01 14:05:14 +08:00
Maxime Coste
f007794d9c
Regex: introduce RegexExecFlags to control various behaviours
2017-11-01 14:05:14 +08:00
Maxime Coste
f02b2645da
Regex: validate that our custom impl gets the same results as boost regex
...
In addition to running boost regex, run our custom regex and compare
the results to ensure the two regex engine agree.
2017-11-01 14:05:14 +08:00
Maxime Coste
6ada6e6d77
Move all non-core string code to string_utils.{hh,cc}
2017-10-10 10:52:32 +08:00
Maxime Coste
9329fc99d2
Style tweak for regex code
2017-08-14 11:41:12 +07:00
Maxime Coste
430ff37bd6
Fix regex.hh compilation
...
Repeat after me: I will not blindly push commits that I havent
compiled.
Fixes #990
2016-12-14 23:50:29 +00:00
Maxime Coste
fd82d3e258
Make Regex a class rather than a struct to avoid mismatched tags warnings
2016-12-14 20:59:39 +00:00
Maxime Coste
719eb16a5e
Fix matching flags not being forwarded to regex_search
...
Still does not fully fix #921
2016-11-28 20:02:40 +00:00
Maxime Coste
c1d7f79a52
Do not let boost regex errors propagate, convert them to Kakoune errors.
2016-09-06 13:55:14 +01:00
Maxime Coste
1d1f27248f
Try to fix travis ci
2016-08-18 22:42:31 +01:00
Maxime Coste
f73e89a716
Add information of types of options
2016-08-06 09:05:50 +01:00
Maxime Coste
1834a67b87
Go back to libc locale and use c_regex_traits
...
Unfortunately, cygwin does not support c++ locales.
2016-05-19 21:45:23 +01:00
Maxime Coste
abac6a9436
Use boost::wregex implementation and manually utf8 decode into it
...
That way we get proper unicode support in regular expressions as long
as the current locale treats wchar_t as unicode codepoints.
Fixes #638
Fixes #595
Fixes #162
2016-05-10 09:38:21 +01:00
Maxime Coste
013519b3cb
Remove iterator based regex constructor
2016-04-16 21:41:04 +01:00
Maxime Coste
a8eddd03f0
String usage cleanups
2016-02-04 23:54:22 +00:00
Maxime Coste
1d748a4017
Pass flags to the regex engine to correct anchors
...
Current behaviour was matching ^ $ for the current search start/end
(and \b was always matching begin/end as well).
Fixes #536
2015-12-23 22:20:25 +00:00
Maxime Coste
0338c0f437
Fix compilation with std regex
2015-09-15 13:28:36 +01:00
Maxime Coste
17e3be48a5
Transform boost/std regex_error to Kakoune::regex_error at Regex construction
...
Fixes #318
2015-07-14 21:06:41 +01:00
Maxime Coste
1337763cb5
Fix formatting
2015-04-29 13:45:53 +01:00
Maxime Coste
da09da29c4
Regex comparison operator are const
2015-04-08 23:16:27 +01:00
Maxime Coste
3c1a325b6f
Refactor String, use a common StringOps interface, hide std::string
2015-03-10 19:50:22 +00:00
Maxime Coste
2852e0fbe5
Remove trailing blank lines
2014-12-23 23:00:20 +00:00
Maxime Coste
e362eb4f3b
Add a disabled wrapper for using std regex instead of boost
2014-10-14 13:40:13 +01:00
Maxime Coste
fa85f0fc32
Refactor regex uses, do not reference boost except in regex.hh
2014-10-13 13:14:23 +01:00
Maxime Coste
bbce6b22a3
remove regex.hh, define Regex directly in string.hh
2012-08-29 21:49:36 +02:00
Maxime Coste
0c596a9d64
Add a ShellManager which handles executing shell commands
...
ShellManager provides shell commands with environement variable
to retrieve some internal values in the shell parameters.
2012-05-03 07:25:13 +00:00
Maxime Coste
9337938403
replace std::string references with String
2012-04-14 01:17:09 +00:00