Maxime Coste
1ad3b87302
Collapse jumps based on current index change
...
The previous method, while likely more correct, could restore jump
lists containing references to already removed buffers.
2019-02-17 11:21:26 +11:00
Maxime Coste
924f30840b
Fix uses of std::remove_if
...
std::remove_if is not std::partition, it makes no guarantees on
the state of the objects past the new end (they usually are in a
moved-from state).
2019-02-17 11:21:26 +11:00
Maxime Coste
8135a44c6c
Run WinClose hook before putting the window into trash
2019-02-17 11:21:26 +11:00
Maxime Coste
89cd68d8af
Check the return value of the rename call
2019-02-12 21:05:47 +11:00
Maxime Coste
4dae2c875b
Introduce a writemethod option to either overwrite or replace files
...
This permit to choose if files should be written by overwriting their
content (the default), or by writing to a separate temporary file
and rename it to the current file.
As discussed in #2036
2019-02-12 21:01:19 +11:00
Maxime Coste
e8f26cbae7
Refactor write_buffer_to_file to use a flags param
...
That is clearer than two boolean parameters.
2019-02-12 20:18:34 +11:00
Maxime Coste
94796509a0
Fix bug in 'itersel' handling that could result in unsorted selections
2019-02-11 21:48:09 +11:00
Maxime Coste
5c0175d90a
Remove peephole regex optimization pass
...
The current implementation is wrong as it crosses basic blocks
boundaries. Doing basic block decomposition of regex is probably
a tad too complex for this single optimization.
Fixes #2711
2019-02-04 22:10:19 +11:00
Maxime Coste
d9d2140ea2
Fix regex not always selecting the leftmost longest match
...
(Actually the rightmost longest match when searching backwards)
Fixes #2710
2019-02-04 17:33:29 +11:00
Maxime Coste
4cb402ac1a
Remove references to SelectionList from selectors
2019-02-04 12:52:55 +11:00
Maxime Coste
7f9fe32f2d
Remove target_eol and small code cleanups
2019-02-04 12:52:48 +11:00
Maxime Coste
7b1af1c32c
Merge remote-tracking branch 'JJK96/documentation'
2019-02-03 09:53:09 +11:00
Jan-Jaap Korpershoek
b171824d8b
Add missing [<switches>] argument to declare-option
2019-01-25 00:03:20 +01:00
Maxime Coste
b91367f8a3
Replace std::mem_fn with custom lambda in ranges
2019-01-24 23:24:50 +11:00
Maxime Coste
3e89148d74
Fix missing errno include
2019-01-24 23:24:50 +11:00
Maxime Coste
aa4885fd65
Add missing locale include to main.cc
2019-01-24 23:04:31 +11:00
Maxime Coste
c7f4d4dd27
Fix array_view dependency on std::min
2019-01-24 22:55:20 +11:00
Maxime Coste
346c78f5e0
Header and dependency cleanup
2019-01-24 21:22:20 +11:00
Maxime Coste
4b72cfe530
Replace std::tie with structured bindings
2019-01-24 21:21:59 +11:00
Maxime Coste
90dd084993
Only embed gdb script on ELF targets, and add missing gdb symlink
2019-01-23 20:59:32 +11:00
Maxime Coste
ebc9f7703b
Embed gdb pretty-printing script directly into Kakoune binary
...
This will get stripped correctly, and should make debugging easier.
2019-01-23 20:27:16 +11:00
Maxime Coste
36e9e7eaf9
Change pipe diffing to work linewise
...
This should greatly improve performances as we only need to diff
lines instead of individual characters.
Closes #2678
Fixes #2037
2019-01-23 20:20:54 +11:00
Maxime Coste
370d10ccc7
Always select inserted text after piping
...
Relying on general selection update code is error prone due to
diffing.
Fixes #2394
2019-01-23 20:14:08 +11:00
Maxime Coste
c07f052de7
Default to release build
...
Fixes #2701
2019-01-22 19:41:58 +11:00
Maxime Coste
eb8f785e91
Try to bypass clang crash
2019-01-20 22:59:28 +11:00
Maxime Coste
77b1216ace
Add a peephole optimization pass to the regex compiler
2019-01-20 22:59:28 +11:00
Maxime Coste
0364a99827
Refactor regex find next start not to be an instruction anymore
...
The same logic can be hard coded, avoiding one thread and 3
instructions, improving the regex matching speed.
2019-01-20 22:59:28 +11:00
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
30897fd820
Fix warning on gcc 8
2019-01-20 22:59:28 +11:00
Maxime Coste
7b29192c24
Fix use of removed std::random_shuffle
2019-01-20 22:59:28 +11:00
Maxime Coste
2afc147b2c
Refactor parsed regex children iteration to use regular range-for loops
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
3babd0685c
Switch to compilation standard to C++17
2019-01-20 22:59:28 +11:00
Maxime Coste
cb7401439b
Kakoune v2019.01.20
2019-01-20 22:52:01 +11:00
Maxime Coste
ae69759a53
Defer deletion of unsetted option to return to main loop
...
Fixes #2572
2019-01-20 22:46:40 +11:00
Maxime Coste
7df7f5d38b
small code tweak
2019-01-19 10:34:12 +11:00
Maxime Coste
445da8d7bf
Use an InvalidPolicy in utf8::dump and utf8::codepoint_size
...
Do not throw on invalid codepoints by default, ignore them.
Fixes #2686
2019-01-13 18:29:20 +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
56ee329d79
Add Optional::value_or_compute for lazy computation of default value
2019-01-03 22:49:40 +11:00
Maxime Coste
09e6518545
Remove DurationMs and slight code refactor
2018-12-28 06:27:35 +11:00
Maxime Coste
ef8fdd664f
Merge remote-tracking branch 'lenormf/unit-tests-timing'
2018-12-28 06:16:50 +11:00
Maxime Coste
20e64f34bc
Use fork instead of vfork on CYGWIN
...
Fixes #2653
2018-12-27 13:06:31 +11:00
Frank LENORMAND
623c8a76f4
src: Run and display the time taken by unit tests to run in debug mode
...
Knowing how much time the editor took to run unit tests gives users
a notion of how fast it's performing on a given system.
2018-12-23 09:26:12 +03:00
Frank LENORMAND
b1f5639d8c
src: Add support for right click events
...
The current implementation treats left mouse button clicks as a
generic "mouse press" modifier, this commit extends the list of
modifiers by adding a "right mouse click" one.
The proper way to implement this would be to ship the coordinates
of mouse key press events in each `Key` object, and pass whichever
button was clicked as a codepoint value (instead of coordinates
currently), but this would require more work.
This commit allows:
* right clicks to set the cursor of the main selection
* control-right clicks to merge all the selections, and then set
its cursor
Fixes #843
2018-12-20 14:32:18 +03:00
Maxime Coste
1a280e91c7
Add support for 'sanitizers=...' make option
...
Use make sanitizers=undefined,address to enable undefined and address
sanitizers.
Closes #2596
2018-12-19 19:31:04 +11:00
Maxime Coste
ef3419edbf
Do not pass thread to failed/consumed, capture it implicitely
2018-12-19 19:16:14 +11:00
Maxime Coste
0b9f782691
Take iterators by const-ref in ThreadedRegexVM::exec
2018-12-19 19:14:42 +11:00
Maxime Coste
d2f2c3d0c7
Generate a coredump on quit due to SIGSEGV
2018-12-13 21:29:33 +11:00
Maxime Coste
0e1e0fc57b
Improve deindent behaviour with mixed indent
2018-12-13 17:35:16 +11:00