Maxime Coste
d37c3d175d
More uses of standard type traits aliases
2017-07-19 08:49:44 +02:00
Maxime Coste
609bc24f67
Remove unused function
2017-07-19 08:49:44 +02:00
Maxime Coste
ba83cbee0e
Use c++14 function deduction and decltype(auto) to cleanup some code
2017-07-19 08:49:43 +02:00
Maxime Coste
5bf401948a
Cleanup some code with C++14 features
2017-07-19 08:47:14 +02:00
Maxime Coste
bbaa98c46d
Fix travis configuration for C++14 support
2017-07-19 08:47:14 +02:00
Maxime Coste
7a79cbbc81
Migrate code to c++14
2017-07-19 08:47:14 +02:00
Maxime Coste
fbffd86f85
Add an assert to try to get more info on #1506
2017-07-19 08:40:17 +02:00
Maxime Coste
7b96d56996
Use the provided equal functor for prefix/suffix detection in diff
...
We were wrongly using the `==` operator.
2017-07-18 17:53:30 +02:00
Maxime Coste
9197dd393c
More refactoring of the diff code in order to make it cleaner
2017-07-18 16:11:24 +02:00
Maxime Coste
50fec86749
Change diff Implementation to use end indices instead of length
...
Having absolute begin and relative lenght was a bit strange to
work with. Rename middle_snake to snake.
2017-07-18 12:14:52 +02:00
Maxime Coste
793c2ed9cf
Slight style change
2017-07-17 19:29:57 +02:00
Maxime Coste
d90cd6de77
Refactor find_diff_rec and detect kept prefix/suffixes early
...
Certain cases, like diffing an empty buffer with a big buffer, were
very slow, now this should get better as we will directly detect the
matching eol at the end of both buffers, end then immediatly detect
we need to add the rest of the big buffer.
We still are too slow on some general diff when there is a lot of
differences.
2017-07-17 13:30:11 +02:00
Maxime Coste
388ada8142
Remove MirroredArray for diff implementation
...
We can index native arrays negatively, so just setup V1 and V2 to
point in the middle of the work arrays and remove the need for
creating MirroredArray.
2017-07-17 19:28:52 +09:00
Maxime Coste
da9794e272
Fix xmessage handling in assert.cc
...
The return value of the system call is not directly the exit value
of the process, but a status that needs to be inspected with some
macros.
2017-07-17 18:13:20 +09:00
Maxime Coste
a9455bf132
Tolerate that the cursor might not be visible
...
Sometimes, like if the window is not high enough, we might not be
able to display any buffer lines, hence not have the cursor visible.
Fixes #1502
2017-07-16 13:12:17 +09:00
Maxime Coste
5eae7aacc7
Small code cleanup in diff implementation
2017-07-15 17:17:27 +09:00
Maxime Coste
6e40e57ed4
Fix replacing reducing selections to their cursor
...
Broken by 8650c99f13
2017-07-14 16:16:43 +09:00
Maxime Coste
580eae0388
|
now applies the diff of the modification instead of plain replace
...
Fixes #312
Fixes #1501
2017-07-14 16:16:40 +09:00
Maxime Coste
8650c99f13
Fix assertion when replacing with empty strings
...
Replacing with empty strings is essentially a deletion, which means
it can end up push some selections out of the buffer (imagine 3 a
2 empty line buffer, and deleting the second one). We are fixing
the selections in SelectionList::erase, but we were not doing that
in SelectionList::insert.
Fixes #1504
2017-07-14 13:08:29 +09:00
Maxime Coste
53f5b3d709
Fix an assert in compute modified ranges when merging single char ranges
...
Due to the way Selection::min/max worked, we were creating backward
selections, with cursor < anchor, which was triggering an assert when
trying to move cursor back one char when it was already on the first
char of the buffer.
2017-07-14 12:42:43 +09:00
Maxime Coste
26cc8b3ee0
Fix undo handling in <a-o>/<a-O>
2017-07-13 08:24:55 +09:00
Delapouite
287a20c485
Add main selection index in mode_info
2017-07-12 19:08:13 +02:00
Maxime Coste
7389e37b4b
Small startup message formatting tweak
2017-07-13 00:31:17 +09:00
Maxime Coste
74076ef9b7
Alternative, and hopefully safer implementation of <a-o>/<a-O>
...
Fixes #1495
2017-07-11 22:35:42 +09:00
Maxime Coste
81b5de6fd8
Add <a-c> and <a-d> for changing/deleting without yanking
...
As asked for in #1175
2017-07-11 22:25:15 +09:00
Maxime Coste
42e5d95cd8
Preserve order of definition of mappings when listing them
...
Fixes #1479
Closes #1494
2017-07-11 09:51:56 +09:00
Maxime Coste
ebc1e054fc
Merge remote-tracking branch 'Delapouite/last-command-reg'
2017-07-11 09:11:10 +09:00
Maxime Coste
b575067317
Add <a-o> and <a-O> to add lines below/above selections
...
Fixes #1480
2017-07-11 09:03:45 +09:00
Delapouite
0d2b303f62
Docs: add missing colon register (last entered command)
2017-07-10 22:05:21 +02:00
Maxime Coste
c38dc9a37b
Merge remote-tracking branch 'Delapouite/alt-r'
2017-07-09 22:29:05 +09:00
Delapouite
f917402f89
Docs: add missing <a-R> key and fix info message
2017-07-09 12:00:28 +02:00
Maxime Coste
50e26a2bac
Remove assert in String::String(Codepoint, ColumnCount)
...
codepoint_width is locale dependent, and we could end up with it
returning a different value depending on the locale. It is better
to return a string of the wrong column length than fail on assert
in this case as we cannot fix it anyway.
Fixes #1489
2017-07-09 11:03:04 +09:00
Maxime Coste
dbba047a8a
Merge remote-tracking branch 'Delapouite/prompt-idle'
2017-07-08 13:33:44 +09:00
Maxime Coste
ad1dad9d04
Merge remote-tracking branch 'Delapouite/extend'
2017-07-08 13:32:11 +09:00
Maxime Coste
8cad40a0c9
Merge remote-tracking branch 'Delapouite/stars-less'
2017-07-08 13:31:17 +09:00
Maxime Coste
b51d19bfaa
Formatting fixes
2017-07-07 13:59:53 +09:00
Maxime Coste
6604aa66f7
Treat non printable characters as zero-width instead of -1 width
...
This fix a bug when opening a file where a line has a lot of unprintable
chars (like a binary file) which was confusing Kakoune into considering
that the line length in column was negative.
2017-07-07 10:57:32 +09:00
Delapouite
9254363673
Make register and completion autoinfo lists uniform with all the other ones
2017-07-06 18:47:02 +02:00
Delapouite
b3f2a7e46e
Refine info titles to distinguish f/t (select) and F/T (extend)
2017-07-05 20:23:02 +02:00
Delapouite
8ed29dbd7a
Docs: add missing PromptIdle hook mentions
2017-07-05 13:45:45 +02:00
Maxime Coste
620e718087
Formatting tweak
2017-06-29 09:31:02 +01:00
Maxime Coste
eb2984807c
Remove some dead code
2017-06-29 07:43:20 +01:00
Maxime Coste
e95fab0e7a
Code style tweak
2017-06-29 07:36:07 +01:00
Maxime Coste
14958a7c94
Validating an empty command in prompt reruns the last command
...
This is more consistent with other prompts like regexes or shells,
and has proven useful from time to time.
2017-06-29 07:33:16 +01:00
Maxime Coste
9bbab690ba
Merge remote-tracking branch 'danr/Expose-last-entered-command-in-register'
2017-06-29 07:29:32 +01:00
Maxime Coste
cc946764ed
Consider non-files buffers as never modified
2017-06-28 06:48:24 +01:00
Maxime Coste
641acc5943
Do not allow repeating last insert when we are not in normal mode
...
<a-;>. is not accepted anymore. Note that <a-;> are not repeatable
currently anyway (That could be fixed, athough not trivial).
Fixes #1469
2017-06-27 09:57:10 +01:00
Maxime Coste
ce8078ad73
Ensure cursor stays visible with wrapped line bigger than window
...
Fixes #1459
2017-06-27 09:29:25 +01:00
Maxime Coste
e9c0c05548
Fix reference highlighter not forwarding compute_display_setup
2017-06-26 16:50:12 +01:00
Maxime Coste
475e8849a1
Fix replacing last eol with a single eol
2017-06-26 16:16:46 +01:00
Maxime Coste
f41d78083a
Use the extra_word_chars option in word based normal commands
...
the completion_extra_word_chars is now gone, superseeded by
extra_word_chars that gets used both for completion and for normal mode.
Fixes #1304
2017-06-26 15:28:41 +01:00
Maxime Coste
dc378aed72
Pass a context instead of just the buffer to selector functions
2017-06-26 14:56:50 +01:00
Maxime Coste
477f0700f0
Remove useless Vector, use a ConstArrayView instead
2017-06-26 14:40:01 +01:00
Maxime Coste
268c214f56
Change completion_extra_word_char to be a list of codepoints instead of a string
2017-06-26 14:39:17 +01:00
Maxime Coste
1a64ba18d3
Always use the base LineNumber face for the line number separator
...
Fixes #1431 as we can now just hide the wrapped line numbers by
setting the LineNumberWrapped foreground and background to the
LineNumber background.
2017-06-26 13:45:56 +01:00
Maxime Coste
f788333778
Formatting fix
2017-06-26 12:18:02 +01:00
Maxime Coste
4864c8cecb
Disable -Wunknown-attributes
2017-06-26 11:27:35 +01:00
Maxime Coste
4e7a357a47
Fix various undefined behaviours detected by UBSan
2017-06-26 11:27:18 +01:00
Maxime Coste
8a2ece78b7
Remember count when repeating last insert
...
Fixes #1465
2017-06-25 07:25:31 +01:00
Maxime Coste
c6eddefb0d
Slight code refactoring and perf improvement in vector option to string
2017-06-24 12:24:24 +01:00
Maxime Coste
dc1b039282
Add ctags command renaming info in the startup message
2017-06-23 10:23:26 +01:00
Maxime Coste
430e4495f0
Merge remote-tracking branch 'nuao/autoshowcompl_opt'
2017-06-23 10:20:34 +01:00
Maxime Coste
9d4f5a49e0
Merge remote-tracking branch 'lenormf/debug-commands'
2017-06-23 10:19:45 +01:00
Maxime Coste
806d885eaf
Do not set idle timers when running in a transient context
2017-06-23 10:01:24 +01:00
Maxime Coste
7ceb768a2e
Use an HashMap to store options in option manager
...
Turns out looking for options can get pretty slow, so O(1) lookup
seems better.
This should improve the performance of the #1460 issue
2017-06-23 09:54:21 +01:00
nuao
ddc846cf89
Use user-supplied autoshowcompl option's value.
2017-06-17 18:07:45 +01:00
Maxime Coste
657e30db1c
Use already stored coordinates in show_whitespaces
2017-06-17 14:48:59 +01:00
Maxime Coste
400f52c438
Merge remote-tracking branch 'EliteTK/fix-show_whitespaces-tab'
2017-06-17 14:47:18 +01:00
Tomasz Kramkowski
bd65719698
Correctly handle tabs when show_whitespaces is added
...
Tabs now align to tab stops instead of always spanning 8 spaces when
show_whitespaces is added as a highlighter.
This fixes issue #1453 .
A regression test is also provided.
2017-06-17 11:46:39 +01:00
Frank LENORMAND
dbabb19d81
src: Add profile-hash-maps
to the debug
command's docstring
2017-06-17 11:29:09 +03:00
Frank LENORMAND
8d24768d5d
src: Add a commands
debug flag
...
This commit allows setting the `commands` flag to the `debug` option, in
order to have the engine write on the *debug* buffer the commands that are
being executed, along with their arguments.
2017-06-17 11:27:07 +03:00
Maxime Coste
5fbaa2c955
Update startup info message
...
Remove some old breaking changes, add the lint/make/grep command
changes.
2017-06-17 08:47:14 +01:00
Maxime Coste
0aeb2cd64f
Disable -Wnoexcept-type warning
...
We dont really care that the mangled name will change, Kakoune is
not built as a library.
Fixes #1436
2017-06-17 08:15:32 +01:00
Maxime Coste
f0f2b1c383
Trim whitespaces surrounding docstrings
...
Closes #1439
2017-06-16 10:48:14 +01:00
Maxime Coste
ea105b9942
Add fallthrough comment to silence gcc-7 warning
...
Until we switch to C++17 and can use the proper attributes there.
Fixes #1437
2017-06-16 10:28:40 +01:00
Maxime Coste
42d7b66b92
Support hitting escape to cancel a selection combine operation
...
Fixes #1443
2017-06-16 10:23:03 +01:00
Maxime Coste
42f03fb71f
Hide info/menu when they are anchored to an invisible buffer coord
...
Fixes #1444
2017-06-16 10:19:08 +01:00
Maxime Coste
2992d5bb0b
Fix some remaining uses of invalid atom coordinates
2017-06-16 08:06:24 +01:00
Maxime Coste
4ed790632d
Fix some other uses of invalid buffer coordinates in display code
2017-06-15 18:12:21 +01:00
Maxime Coste
fa4b88c2f8
Move tolerance for one past end of line coordinates to highlighter code
...
The rest of Kakoune's code now requires coord passed to Buffer::iterator_at
to be valid.
2017-06-15 17:43:18 +01:00
Maxime Coste
01a1e92b79
Fix crash recently introduced when deleting at buffer start in insert mode
2017-06-15 17:35:48 +01:00
Maxime Coste
e6c4bed42b
Go back to window lines ending at one past the end of the buffer line
...
Change Buffer::iterator_at so that this case is tolerated, and fixes
the coord to next line start instead of clamping to last line char.
2017-06-15 17:25:37 +01:00
Maxime Coste
724b4198b0
Change window display to not use invalid buffer coordinates
...
Fixes #1435
2017-06-15 16:48:16 +01:00
Maxime Coste
40f845d77e
Respect scroll offset even when wrapping lines
...
Fixes #1433 although in a slightly different way than requested:
We ensure that scrolloff *displayed* lines are visible below the
cursor, not scrolloff *buffer* lines.
2017-06-15 12:29:34 +01:00
Delapouite
229848dece
Change custom text object desc trigger from ':' to 'c' - Fix #1362
2017-06-14 19:41:30 +02:00
Maxime Coste
98627726cf
Always store InclusiveBufferRange with first < second
...
Closes #1434
2017-06-13 09:00:55 +01:00
Maxime Coste
ab56be090a
minor style tweak
2017-06-12 06:12:10 +01:00
Maxime Coste
208b28cbe7
Simplify a bit buffer iteration functions
...
Dont try to ensure the returned value is valid, incrementing past
the end/decrementing before begin is the caller's error.
2017-06-12 06:10:18 +01:00
Maxime Coste
250886a9e1
Use read_fd to get pipe command from stdin instead of ad-hoc code
...
read_fd will also now throw on read error instead of just returning
the data read so far as if nothing failed.
2017-06-12 05:21:34 +01:00
Maxime Coste
7bcfbd055c
Fix corner case in compute_modified_ranges
2017-06-11 12:25:12 +01:00
Maxime Coste
63a791d651
Fix the Buffer::end() madness
...
Until now, buffer had multiple recognized end coordinates, either
{ line_count, 0 } or { line_count - 1, line[line_count - 1].length }.
Now the only correct end coord is { line_count, 0 }, removing the need
for various special cases.
2017-06-11 12:01:40 +01:00
Maxime Coste
d86a612774
Fix wrapping support
2017-06-09 16:00:22 +01:00
Maxime Coste
0dec1e3a91
Remove unused only_buffer mode for DisplayLine::trim
2017-06-09 15:30:13 +01:00
Maxime Coste
7b9d8d39b1
Simplify column highlighter and make it more robust
...
Fixes #1382
2017-06-09 15:24:07 +01:00
Maxime Coste
3612eb50e5
Fix bug in word completer
...
A bug could be triggered in the word completer when a multiselection
would trigger word completion with one selection being at buffer first
character.
2017-06-09 14:21:18 +01:00
Maxime Coste
64aa6f3fb4
Proper linear time insert completion insertion
...
The previous solution, ad9b090ddf
, was
failing when completion was not replacing any text, as going through
SelectionList was not permitting to replace empty ranges.
Handle replacement as first a deletion then an insert to get fast
update, as having a list of forward deletions and then a list
for forwad insertion is much faster to update than a list of
interleaved delete/insert.
2017-06-09 14:13:43 +01:00
Maxime Coste
f310db639c
Rework partial line display logic
...
Instead of highlighting full lines and then trim them to make them
fit in the window, highlight only the visible portion, and rely on
the compute_display_setup system introduced for wrapping to setup
our buffer range correctly
2017-06-09 13:22:32 +01:00
Maxime Coste
242f951c84
More explicit and simpler code
2017-06-09 09:54:18 +01:00
Maxime Coste
fe46c05685
Remove spurious double underscore
2017-06-08 10:37:48 +01:00
Maxime Coste
2b5fafa909
Do not show startup info when piping into kak
...
Fixes #1340
2017-06-08 10:03:07 +01:00
Maxime Coste
ad9b090ddf
Fix quadratic behaviour in when selecting an insert completion
...
Use the fast, linear time SelectionList::insert algorithm instead of
an ad-hoc one that needs to call SelectionList::update after each
modification of the buffer.
Fixes #1417
2017-06-08 09:55:34 +01:00
Maxime Coste
4ab40af3a9
Disable idle timers on all transient contexts
2017-06-08 09:53:23 +01:00
Maxime Coste
609b0bbbac
Merge remote-tracking branch 'Delapouite/rotate-forward'
2017-06-08 07:14:20 +01:00
Maxime Coste
eadf8930fb
Add -width <max_width>
support in the wrap highlighter
...
Will always wrap at the minimum between max_width and actual window
width.
Fixes #1424
2017-06-08 07:05:44 +01:00
Maxime Coste
acc2dbf79c
Move variable closer to its point of use
2017-06-07 20:33:34 +01:00
Maxime Coste
56b52bdb3d
Filter debug buffers before creating the SafePtr vector in -buffer *
2017-06-07 20:25:39 +01:00
Maxime Coste
e947c20ce0
Do not disable incsearch option in context wrap
...
It will only trigger on idle, which should not happen during non-
interactive contexts.
2017-06-07 20:24:37 +01:00
Maxime Coste
03f8679e5c
Only trigger PromptEvent::Change on idle
...
There is no need to trigger that event on every keystroke, we can
trigger it only when we hit the idle timeout, avoiding computations
when input keys are pasted.
2017-06-07 20:16:19 +01:00
Maxime Coste
b81500c0e4
Use microseconds instead of milliseconds for built-in profiling
2017-06-07 20:06:47 +01:00
Maxime Coste
1c0bdd8c85
Run BufCreate hook *before* Buf{Open,New}File
2017-06-07 19:46:43 +01:00
Maxime Coste
4495aefea6
Use range based find_if wrapper for finding shell env vars
2017-06-07 19:46:16 +01:00
Maxime Coste
d9b1ee13d9
Change merge_overlapping to guarantee we dont break the sorting
...
In certain cases, we could end up with a unsorted selection list,
leading to broken invariant.
2017-06-07 19:30:44 +01:00
Maxime Coste
1d4093bcdc
Fix memory errors due to sharing the MatchResults in the Hooks struct
...
A hook execution triggered by another hook execution would change the
shared MatchResults object, which is a wrong behaviour and makes it
point to dead string data.
2017-06-07 19:18:15 +01:00
Maxime Coste
575e6fe325
Remove unneeded unknown_expand exception type
2017-06-07 19:01:26 +01:00
Maxime Coste
b7982c6ee3
Use range based accumulate wrapper instead of std::accumulate
2017-06-07 13:36:47 +01:00
Maxime Coste
a0d848da8d
Do not allow whitespaces as % string delimiters
2017-06-07 13:09:45 +01:00
Maxime Coste
f0285a8e60
Move hook executing logic into HookManager
...
The existing HookManager was able to run arbitrary hook functions,
but in practice was only used for user provided textual hooks.
That separation was causing some suboptimal performances, by moving
that logic directly in the hook manager we can improve hook filtering
performance which is a big part of startup time when opening lots
of files.
2017-06-07 12:33:39 +01:00
Maxime Coste
4606453fed
Avoid expensive copies of Hooks in HookManager::run_hooks
...
Use a deferred deletion mechanism to ensure hooks are kept alive
for the duration of run_hooks.
2017-06-07 12:15:16 +01:00
Maxime Coste
87477cf2bb
Move NestedBool to utils.hh
2017-06-07 11:55:42 +01:00
Maxime Coste
21da24235a
Small style tweak
2017-06-07 11:40:13 +01:00
Maxime Coste
5a5d2ad7cb
noexcept-ify utf8::iterator methods
2017-06-07 10:58:49 +01:00
Maxime Coste
cb6ef4afb6
noexept-ify BufferIterator methods
2017-06-07 10:58:01 +01:00
Maxime Coste
502c5da0e9
Fix useles copy of hook_func in HookManager::add_hook parameter
2017-06-07 09:54:58 +01:00
Maxime Coste
295fa5b27d
Use String default ctor instead of empty string
2017-06-07 09:54:11 +01:00
Maxime Coste
a5e7b6a22f
Use a vector instead of a hash map to store hooks
2017-06-07 09:46:05 +01:00
Delapouite
86cc66577b
Clarify rotation direction between <'> and <a-'> in info help
2017-06-07 08:53:33 +02:00
Maxime Coste
fd00e1f9ae
Merge remote-tracking branch 'Delapouite/underscore'
2017-06-07 07:48:57 +01:00
Maxime Coste
d214969d5b
Merge remote-tracking branch 'Delapouite/buf_line_count'
2017-06-07 07:48:32 +01:00
Maxime Coste
9cb9e77dc2
Merge remote-tracking branch 'Delapouite/view-count'
2017-06-07 07:45:53 +01:00
Delapouite
09daaa8b3a
Expose kak_buf_line_count
2017-06-06 14:29:06 +02:00
Delapouite
2f84051efb
Add underscore char as a valid punctuation for text-object pairs
2017-06-06 12:04:53 +02:00
Delapouite
b4af4994fb
Remember previous NormalParams::count in view-lock mode
2017-06-06 09:52:02 +02:00
Maxime Coste
36364d5f6b
Fix spurious copies being made when using the format function
...
We were not correctly forwarding the arguments, leading to copies of
'const String&' parameters.
2017-06-06 08:50:51 +01:00
Maxime Coste
73ecbdbc97
Log errors written to the status line inside the debug buffer as well
...
Fixes #1410
2017-06-04 08:48:23 +01:00
Maxime Coste
261e0fabcc
Improve readability of command docstrings by changing formatting
...
Fixes #1378
2017-06-04 08:37:51 +01:00
Maxime Coste
6101138606
Change RankedMatch ordering to favor /
characters
...
This will improve matching of filenames, as 'foo/' will be sorted
before 'foo-bar' due to `/` coming before `-` in the new ordering
(it comes after in ascii/unicode order).
Fixes #1395
2017-06-04 08:27:53 +01:00
Maxime Coste
96813ee824
Document the *
behaviour change in the startup message
2017-06-03 18:17:44 +01:00
Maxime Coste
c1e4b4ff79
Strip surrounding whitespaces in *
...
Fixes #1406
2017-06-03 18:16:40 +01:00
Maxime Coste
8dc9f8cc22
Support option_add for HashMap options
...
Fixes #1407
2017-06-03 18:01:38 +01:00
Maxime Coste
6906e6924b
Merge remote-tracking branch 'occivink/ignore-debug'
2017-06-03 15:26:51 +01:00
Maxime Coste
a313dab90f
Merge remote-tracking branch 'Delapouite/include'
2017-06-03 14:46:03 +01:00
Maxime Coste
c440bbde81
Merge remote-tracking branch 'Delapouite/shift-modes'
2017-06-03 14:45:48 +01:00
Maxime Coste
58dfd76dca
Small formatting fix
2017-06-03 14:02:43 +01:00
Maxime Coste
0e88a9695a
Add support for more selection combining operations
...
Change append to 'a', add select longest/shortest, union and
intersection.
2017-06-03 13:45:59 +01:00
Delapouite
e8707298c1
Refine info titles to distinguish G and V modes
2017-05-31 19:57:56 +02:00
Delapouite
ccecc2b7cf
fix: remove duplicate include to containers.hh in face_registry.cc
2017-05-30 20:01:31 +02:00
Maxime Coste
f6e00ff00f
Merge remote-tracking branch 'Delapouite/typo'
2017-05-29 10:20:21 +01:00
Maxime Coste
b030088d60
Re-hide hardware cursor, seems its causing troubles with various terminal emulator
2017-05-29 10:02:18 +01:00
Maxime Coste
62def0f4df
Tweak alias command docstring not to end up with an eol
2017-05-28 19:58:24 +01:00
Maxime Coste
76d3425bf9
Change ncurses_ui info box generation logic to use a Vector<String>
...
We were generating a string, then splitting it into lines, there is
no need for that, we can directly generate a vector of lines and
simplify the code.
2017-05-28 19:58:18 +01:00
Olivier Perret
9697f61b0d
Exclude debug from eval/exec over all buffers
2017-05-27 23:44:53 +02:00
Delapouite
c9c868d4de
Fix typos in info-box: availabe, encodngs, highglighters…
2017-05-27 22:37:25 +02:00
Maxime Coste
e97f23f2be
Use more precise wording for object selection info box
2017-05-27 09:29:51 +01:00
Maxime Coste
bc92633ddd
Put the doc/manpages/ pages in the 'k' section
2017-05-27 07:35:13 +01:00
Maxime Coste
72acb0177d
Parse meta as 8 bit in Normal mode to fix the terminals using that
...
The solution is a bit hackish, as we only consider the 8th bit to
mean alt in normal mode, because its unlikely accentuated characters
are going to be mapped there. It fixes using Alt on xterm, and
probably on iterm2 as well (not requiring the meta-sends-esc config
change anymore)
2017-05-27 06:18:39 +01:00
Maxime Coste
b9080d8b2c
Document line-flags -> line-specs and update-option in breaking changes
2017-05-27 06:18:02 +01:00
Maxime Coste
f57e72ab4a
Small code tweak
2017-05-27 06:17:44 +01:00
Maxime Coste
f2c0ee62ce
Remove unneeded explicit conversion
2017-05-26 09:51:32 +01:00
Maxime Coste
57ef592f57
Remove unused and potentially error prone constructor from ArrayView
...
Add as well a SFINAE check to the vector constructor to avoid constructing
an array_view from derived types with a different size.
2017-05-26 09:25:25 +01:00
Maxime Coste
2307cf500c
Small formatting tweak
2017-05-26 08:38:12 +01:00
Maxime Coste
11f924c528
Use a ScopedSetBool instead of manual set/unset for InputModes::Normal::m_in_on_key
2017-05-26 08:28:34 +01:00
Maxime Coste
5a93159012
Small code style tweak
2017-05-26 08:19:35 +01:00
Maxime Coste
b1bb9d0cb2
Small documentation tweak in display_buffer.hh
2017-05-26 08:00:15 +01:00
Maxime Coste
6e389512f5
Modernize the way we compute memory domains from type
...
Use a constexpr function instead of a template type
2017-05-26 07:59:18 +01:00
Dan Rosén
b1735ae76e
Expose last entered command in register :
2017-05-25 21:48:41 +02:00
Maxime Coste
83d85df26e
Add an update-option command to update range-descs/line-descs options
...
update-option will make the range-descs and line-descs option up to
date with the latest buffer modfications, changing the ranges/lines
to where they moved according the modifications since the timestamp
on the option.
2017-05-25 19:54:08 +01:00
Maxime Coste
f014eb7052
Fix command parsing bug when commenting after a command
...
When a comment was present directly on the same line after a command,
we did not correctly see the command as terminated and would join
continue parsing the next line.
2017-05-25 08:30:49 +01:00
Maxime Coste
c4db46b58b
Rename line-flags option type to line-specs
...
Generalize this option type, which is a timestamped list of
<line number>|<arbitrary string>. That way this type is not strongly
coupled with the flag-lines highlighter, and can be reused for other
use cases.
2017-05-24 15:41:43 +01:00
Maxime Coste
074666d298
Small code tweak
2017-05-24 15:40:16 +01:00
Maxime Coste
119a5b8442
Fix hardware cursor positioning in prompt when status bar is on bottom
2017-05-24 15:20:23 +01:00
Maxime Coste
720e567ac2
Remove unneeded forward declaration
2017-05-23 19:11:13 +01:00
Maxime Coste
7ee3039a79
Do not avoid eol in insert mode vertical movement
2017-05-22 17:04:01 +01:00
Maxime Coste
28bcb45b92
Fix bug where idle timers of disabled modes were still run
2017-05-22 16:57:22 +01:00
Maxime Coste
bc11e52960
Remove virtual destructor from OptionManagerWatcher
...
We should never destruct anything through an OptionManagerWatcher
pointer, so having all those destructor virtual makes no sense.
2017-05-22 10:31:56 +01:00
Maxime Coste
bdcfe30834
Fix scrolling when cursor is on a wrapped part of the last displayed line
2017-05-22 08:54:25 +01:00
Maxime Coste
ad9ad7e603
Fix vertical movement with tabstops
...
Fixes #1388
2017-05-21 08:24:44 +01:00
Maxime Coste
df4eadd2f5
Merge remote-tracking branch 'danr/Add-modified-value-if-buffer-has-modifications-not-saved'
2017-05-21 06:43:19 +01:00
Maxime Coste
248ffa543b
Merge branch 'master' of git://github.com/bmwiedemann/kakoune
2017-05-21 06:34:36 +01:00
Bernhard M. Wiedemann
4788112f2d
Always link input files in the same order
...
to produce bit-identical 'kak' binaries
See https://reproducible-builds.org/ for why this is good.
This change is needed because filesystem ordering is random
and ordering matters for the g++ linker
2017-05-20 22:50:25 +02:00
Bernhard M. Wiedemann
78991c4820
do not embed timestamps in .gz files
...
using gzip -n to produce bit-identical results
and -9 to compress a bit better
2017-05-20 22:49:36 +02:00
Maxime Coste
b440d9f537
Change <a-z>/<a-Z> to combine selections instead of appending
2017-05-20 10:31:49 +01:00
Dan Rosén
625e7f8249
Add modified value if buffer has modifications not saved
...
Closes #1386
2017-05-18 17:39:30 +02:00
Maxime Coste
91ed57c985
Make hardware cursor visible in ncurses ui
2017-05-18 06:28:08 +01:00
Maxime Coste
973487abcd
Small reorganization in the normal keymap
2017-05-18 06:05:45 +01:00
Maxime Coste
a578c51baf
Move constexpr compatible Array struct to meta.hh
2017-05-17 20:20:31 +01:00
Maxime Coste
3917d26709
small code cleanups
2017-05-17 20:17:16 +01:00
Maxime Coste
7acf11c851
Add missing std::move in on_scope_end implementation
2017-05-17 20:12:36 +01:00
Maxime Coste
0229baf6ba
Add range-faces -> range-specs rename to the breaking changes message
2017-05-17 19:42:23 +01:00
Maxime Coste
dfaafcd49a
Rename range-faces to range-specs
...
range-faces are now used to replace-range highlighters, where the string
part is not interpretted as a face but as a display line, so the name was
not relevant anymore.
2017-05-17 19:40:52 +01:00
Maxime Coste
44d2db2706
Add a basic replace-ranges highlighter
...
replace-ranges is takes a range-faces option, but treats the face
string as a display line to be parsed, and replaces the range display
with this display line.
2017-05-15 09:12:10 +01:00
Maxime Coste
468bd63569
Tweak buffer change code so that WinDisplay hooks can use info boxes
2017-05-13 11:18:21 +01:00
Maxime Coste
3a0d9481ac
Add the -E switch for server initialization commands
...
Fixes #1361
2017-05-13 11:05:09 +01:00
Olivier Perret
ec636ce04b
update line-flags and flag_lines doc to reflect current status
2017-05-11 20:45:28 +02:00
Maxime Coste
75e6b54ae2
Disable horizontal scroll offset support when wrapping
2017-05-11 09:23:20 +01:00
Maxime Coste
8fa7e67abc
Use LineCount instead of int for ncurses assistant margin
2017-05-10 11:35:12 +01:00
Maxime Coste
a0752d8d46
Merge remote-tracking branch 'lenormf/fix-assistant-align'
2017-05-10 11:31:26 +01:00
Olivier Brewaeys
3f42e45ff6
Small spelling error fix
...
John Doe Copyright Waiver
I dedicate any and all copyright interest in this software to the
public domain. I make this dedication for the benefit of the public at
large and to the detriment of my heirs and successors. I intend this
dedication to be an overt act of relinquishment in perpetuity of all
present and future rights to this software under copyright law.
2017-05-10 12:17:11 +02:00
Maxime Coste
9300a981eb
Add support for the -passes option to the ref highlighter
2017-05-10 10:31:34 +01:00
Maxime Coste
5483a087d2
Make ref highlighter work for all highlight passes
2017-05-10 08:16:31 +01:00
Maxime Coste
59a0841baa
Update group highlighter docstring to document the passes option
2017-05-09 10:02:01 +01:00
Maxime Coste
12c498a0bd
Distinguish between BufferRanges and InclusiveBufferRanges
...
Fixes #1257
2017-05-08 12:34:57 +01:00
Maxime Coste
f9a609e479
Refactor range highlighting into a struct
2017-05-08 12:05:45 +01:00
Maxime Coste
6a97455b3b
Do not push a final spurious command separators when parsing commands
...
Fixes #1336
2017-05-08 11:46:03 +01:00
Maxime Coste
ad1175fefc
Update wrap highlighter docstring
2017-05-08 11:30:51 +01:00
Maxime Coste
b0b40485ce
Move SimpleHighlighter as an implementation detail
2017-05-08 11:29:23 +01:00
Maxime Coste
a5d4dbc16e
Fix unneeded and wrong splitting of display atom during wrapping
2017-05-07 16:26:14 +01:00
Maxime Coste
e63156bcfb
Fix infinite loop with longer than width words in word wrap mode
2017-05-07 16:26:14 +01:00
Maxime Coste
4e9193a975
Slight highlighting related code cleanup
2017-05-07 16:26:14 +01:00
Maxime Coste
b4b08d10b4
Fix assert when wrapping a line that takes more than the full window height
2017-05-07 16:26:14 +01:00
Maxime Coste
17b19dc057
Ensure window position line is inside buffer
2017-05-07 16:26:14 +01:00
Maxime Coste
4032d05c79
Reject 0 wrap column
2017-05-07 16:26:14 +01:00
Maxime Coste
8dd808726d
Add support for word wrapping with the -word switch to the wrap highlighter
2017-05-07 16:26:14 +01:00
Maxime Coste
bb17fb6dd3
Add a -passes
switch support for the group highlighter
2017-05-07 16:26:14 +01:00
Maxime Coste
fa5ae65f3a
Move passes logic to the base Highlighter class
...
Validate that childs of HighlighterGroup are matching its passes.
2017-05-07 16:26:14 +01:00
Maxime Coste
55631c8d8e
Detect errors while parsing flag line and handle them
...
Fixes #1345
2017-05-07 16:26:14 +01:00
Maxime Coste
053544d740
Disable horizontal scrolling when running a WrapHighlighter
2017-05-07 16:26:14 +01:00
Maxime Coste
23e38a254f
Introduce a LineNumberWrapped face
2017-05-07 16:26:14 +01:00
Maxime Coste
39826afde5
Make scrolling around work more correctly with wrapping
2017-05-07 16:26:14 +01:00
Maxime Coste
bd3ba77e96
Make Wrap highlighter only wrap on window width.
2017-05-07 16:26:14 +01:00
Maxime Coste
5ee21ec932
Respect tabstop in Buffer::offset_coord
2017-05-07 16:26:14 +01:00
Maxime Coste
57c2b32d20
Introduce highlighting phases and display setup computation
...
Highlighters now run in 3 phases:
Wrap, Move, and Colorize. That way we guarantee the wrap
highlighter runs first, then eventual line numbers/flags,
and finally the colorizers.
We also run a `compute_display_setup` method thats responsible
for computing the lines that will be displayed, eventually
scrolling the view to ensure the cursor is visible.
2017-05-07 16:26:14 +01:00
Maxime Coste
a4f9e29d60
Add a wrap highlighter
2017-05-07 16:26:14 +01:00
Maxime Coste
93408e4b76
Do not use any display information to determine where the cursor moves
2017-05-07 16:26:14 +01:00
Maxime Coste
3a3144f3f5
Fix use of invalidated iterator in the command map on exception
...
The command map can get mutated by command execution, so the iterators
can get invalidated (now that we use our curstom HashMap implementation,
all iterators are potentially invalidated by insert/removal)
2017-05-07 16:25:34 +01:00
Maxime Coste
80f1056851
Support appending selections to empty register
...
Fixes #1332
2017-04-25 17:25:44 +01:00
Maxime Coste
26a105b2b7
Style tweak in highglighters.cc
2017-04-24 07:04:15 +01:00
Maxime Coste
e264d189eb
Add noexcept specifiers to unicode and utf8 functions
2017-04-23 12:47:26 +01:00
Maxime Coste
caed8a55c7
Set stdin to /dev/null instead of closing it when we dont have data to pipe to child
...
Fixes #1330
Fixes #1331
2017-04-22 09:39:55 +01:00
Maxime Coste
e722868c60
Fix generation of empty erase changes
...
Fixes #1308
2017-04-20 17:31:27 +01:00
Maxime Coste
ab3a255d58
Merge remote-tracking branch 'lenormf/command-force-write'
2017-04-20 16:25:24 +01:00
Maxime Coste
dbcddafbfd
Change utf8::to_next/to_previous so that they are more symetrical
...
The previous implementation could yield different positions when
iterating forward and backward, leading to confusion in boost regex.
This makes an existing problem a bit more visible: iterating with
to_next and with read_codepoint wont behave the same way, as
read_codepoint will put the iterator onto the byte following the
utf8 codepoint, whereas to_next will put it on the next utf8
character start byte, which might be different if the buffer content
is not valid utf8.
Fixes #1195
2017-04-20 16:18:49 +01:00
Frank LENORMAND
51ab59cd36
src: Implement a write!
command
...
This commit allows "forced" writes to a write-protected file, by
attempting to temporarily grant the current user write permissions on
it. After the buffer has been written, the previous permissions are
restored if the file existed, or set to 0644 otherwise.
2017-04-20 17:13:42 +03:00
Maxime Coste
30e6387071
Assume filename passed to write_buffer_to_file is already parsed
2017-04-20 09:55:56 +01:00
Maxime Coste
5103b15b84
Safer code for parsing commands
...
Fix some possible past the end of target string reads
Fixes #1310 (maybe, probably, who knows)
2017-04-19 22:04:03 +01:00
Maxime Coste
34bf8c23e1
Fix uninitialised value for cursor mode
2017-04-19 21:23:16 +01:00
Maxime Coste
bee2180da7
Do not try to split non range atoms in column highlighter
...
That means we wont have a very nice interaction between show_whitespaces
and column highlighters, but thats the simplest fix for now, if we want
a better behaviour we need to introduce a way to know that a replaced
range is splittable (meaning it means to have the same amount of columns
as the range it replaces)
Fixes #1275
2017-04-19 21:15:36 +01:00
Maxime Coste
52ffa98787
When not sending data to a subprocess, close its stdin
...
We were letting stdin untouched, which meant child processes had
access to our terminal input. That meant `!fmt` was trying to read
from our terminal input and catching keystrokes.
Fixes #1281
2017-04-17 20:39:24 +01:00
Maxime Coste
91bfd714e4
Place hardware terminal cursor at the current main cursor/prompt cursor position
...
Fixes #1318
Also fixes https://gitlab.com/gnachman/iterm2/issues/5408
2017-04-12 10:39:17 +01:00
Maxime Coste
80dd9ec4cb
Name key '+' as plus and '-' as minus
2017-04-11 10:47:15 +01:00
Maxime Coste
413d8b7ddd
Change multi modifier key syntax to be <c-a-space> instead of <ca-space>
...
Better fix for #1311
2017-04-11 10:44:14 +01:00
Maxime Coste
112bd156e4
Merge remote-tracking branch 'lenormf/fix-filter-backup-suffix'
2017-04-10 21:39:24 +01:00
Maxime Coste
c1c40a4b56
Remove some now unneeded uses of const String& params
...
HashMap supports finding String from StringView.
2017-04-10 21:33:20 +01:00
Maxime Coste
a4b82131e5
Add support for parsing multiple modifiers in keys
...
<ca-key> means control+alt key, <ac-key> works as well.
Fixes #1311
2017-04-10 21:19:56 +01:00
Frank LENORMAND
16068321c1
src: Support the -help
flag
...
This commit allows a help message to be printed when a `-help` flag is
passed to the editor, which will subsequently quit after a summary and a
description of all the flags available have been displayed.
The GNU convention (passing a single `--help` argument to the program)
is also supported, although undocumented.
The man page also now documents the `+:` argument, although unrelated to
the original changeset.
2017-04-10 22:23:30 +03:00
Maxime Coste
94145f2a89
ncurses: When hiding the menu, recompute the info position
2017-04-04 08:36:21 +01:00
Maxime Coste
6ad2f721dd
Do not disable autoinfo and autoshowcompl in non interactive context
...
Fixes #1303
Fixes #1152
2017-04-03 18:16:32 +01:00
Maxime Coste
f31e898f13
Change prompt completion to only update when idle
2017-04-03 18:11:09 +01:00
Maxime Coste
055ed5ff7e
Expose hook params regex captures in hook_param_capture_N
2017-03-30 11:31:07 +01:00
Maxime Coste
2cfe3cae36
Add an InsertDelete hook
2017-03-30 10:38:56 +01:00
Maxime Coste
5f4f8991e5
Merge remote-tracking branch 'lenormf/fix-makefile-distclean'
2017-03-27 15:51:05 +01:00
Frank LENORMAND
ce7673b7b7
src: Fix the distclean
Makefile target
...
Have the Makefile remove the actual binaries and generated documentation
when called with the `distclean` target
2017-03-26 10:49:17 +03:00
Maxime Coste
95e020ed77
Remove some unneeded type declarations in AliasRegistry
2017-03-24 20:13:18 +00:00
Frank LENORMAND
6b8587000b
src: Introduce a -i
suffix flag for filter backups
...
This commit allows the user to chose to backup the files on which a
filter has been run, by specifying a suffix for the backup file. The
former implementation always backed up the files with a hardcoded
".kak-bak" suffix.
When no suffix is specified on the command line, the files are not
saved.
Fixes #1288
2017-03-23 08:50:43 +03:00
Maxime Coste
ca17572301
Try to fix clang 3.5 compilation
2017-03-22 21:08:52 +00:00
Maxime Coste
777ba287e1
Merge faces in show_whitespaces highlighter instead of replacing it
2017-03-21 18:17:43 +00:00
Maxime Coste
8b1078e510
Use a HashMap to store the normal mode keymap
2017-03-16 23:40:38 +00:00
Maxime Coste
e44f95820e
Fixes some clang-tidy warning and add a few missing meta.hh include
2017-03-16 23:34:02 +00:00
Maxime Coste
5f7464d90d
Try to clean up option include a bit
2017-03-16 09:57:39 +00:00
Maxime Coste
7eaa058450
Move enum/flags option functions to option_types.hh
2017-03-15 18:28:32 +00:00
Maxime Coste
7d9f1df73a
Small code tweaks regarding flags handling
2017-03-15 18:25:59 +00:00
Maxime Coste
458dd2e9fa
Remove unneeded 'valid' helper template
2017-03-15 18:02:36 +00:00
Maxime Coste
db9b863222
Migrate WithBitOps template specialization to with_bit_ops function
...
This way we dont depend on knowing the base template to enable bit ops
on an enum type.
2017-03-15 18:00:58 +00:00
Maxime Coste
a49e175727
Migrate to a more value based meta programming model
...
Introduce Meta::Type<T> to store a type as value, and pass it
around, migrate enum_desc and option_type_name to this.
2017-03-15 17:42:02 +00:00
Maxime Coste
a88e58763b
Move SelectionList::set implementation out of the header
2017-03-15 16:51:55 +00:00
Maxime Coste
5705b6c6f9
The canonical name for the documentation command is :doc, not :help
2017-03-15 11:49:00 +00:00
Frank LENORMAND
0acb350619
src: Make the cursor character an opening delimiter
...
This commit allows the editor to consider the character under the cursor
as an opening delimiter when using an object selector, instead of
ignoring it and looking for one before the cursor.
2017-03-15 14:39:40 +03:00
Frank LENORMAND
2aa5d3b016
src: Align the assistant in the middle of the popup
2017-03-14 19:06:09 +03:00
Dan Rosén
5a403a9611
Increase modelinefmt configuration power
2017-03-11 21:43:51 +01:00
Maxime Coste
34da4bf08b
Add dilbert in the ui_options doctring
2017-03-10 12:09:09 +00:00
Maxime Coste
564da076a6
Merge remote-tracking branch 'lenormf/assistant-dilbert'
2017-03-10 12:06:35 +00:00
Maxime Coste
0faa5567ca
Fix crash on non utf8 files trigering highlighting of backward ranges
...
Fixes #1274
2017-03-09 23:40:34 +00:00
Maxime Coste
a0b42323ed
Add a -debug flag to :edit to set the buffer as debug data
...
As for the *debug* buffer, buffers with the debug flag wont get
used for cycling through buffer, or word completion.
2017-03-08 19:33:25 +00:00
Frank LENORMAND
59b65bb9fb
ncurses: Add a Dilbert assistant
...
Drawn by myself.
2017-03-08 20:03:29 +03:00
Maxime Coste
da206d9323
Try to please clang-3.5
2017-03-07 17:21:55 +00:00
Maxime Coste
dc7c5f6e67
Collapse undo groups during an eval command
2017-03-07 16:18:09 +00:00
Maxime Coste
89fa6d4fbf
Small code simplification
2017-03-07 16:11:40 +00:00
Maxime Coste
30c9b3c426
Merge branch 'patch-1' of git://github.com/guillaumecherel/kakoune
2017-03-07 15:52:44 +00:00
Maxime Coste
a1a566e921
Cleanup hash_map code
2017-03-07 15:48:04 +00:00
Maxime Coste
ba02498576
Expand a bit the hash map profiling code
2017-03-07 14:01:01 +00:00
guillaumecherel
81e7158bc1
Update Makefile
2017-03-07 14:20:09 +01:00
Maxime Coste
f3fdc24383
Remove temporary stats code from HashMap
2017-03-07 01:15:41 +00:00
Maxime Coste
f0ae0b8410
Replace IdMap with HashMap
2017-03-07 01:12:37 +00:00
Maxime Coste
6373338c50
Replace uses of UnorderedMap with HashMap
2017-03-07 01:03:26 +00:00
Maxime Coste
e9f93f1b2f
Add support for HashMap options types
2017-03-06 22:25:08 +00:00
Maxime Coste
420373475e
Introduce a custom HashMap implementation along with a quick benchmark
2017-03-06 22:25:08 +00:00
Maxime Coste
6757ddc6cb
Simplify AliasRegistry::remove_alias
2017-03-06 19:44:36 +00:00
Maxime Coste
ed2d50ecef
Remove unused AliasRegistry::flatten_aliases method
...
We do not complete alias names anymore, so this method is not
needed.
2017-03-04 19:45:41 +00:00
Maxime Coste
cc88b0f586
Change word object selector to fail if the cursor is not on a word char
2017-03-04 18:33:50 +00:00
Maxime Coste
887232987c
Refactor surround unit test code
2017-03-04 17:43:24 +00:00
Maxime Coste
ed3c48057d
Refactor regex based selection code
2017-03-03 23:43:54 +00:00
Maxime Coste
1728c67fef
Fix indent selection respect for original selection cursor position
...
Fixes #1233
2017-03-03 22:03:20 +00:00
Maxime Coste
2fa98e04c3
Merge remote-tracking branch 'ekie/hook'
2017-03-03 21:14:14 +00:00
Maxime Coste
f8a625bc2f
Merge remote-tracking branch 'occivink/master'
2017-03-03 21:13:16 +00:00
Maxime Coste
134a5d1f3e
Merge remote-tracking branch 'lenormf/fix-spell'
2017-03-03 21:10:51 +00:00
Maxime Coste
ddc5e958e6
Return an optional selection in most selectors, fail rather than keep current
...
Instead of returning the current selection when a selector fails, return
an empty Optional<Selection>. That means object selections will now
remove the selections that dont match the object.
2017-03-03 20:17:11 +00:00
Maxime Coste
6759511b9e
Ensure main selection index is correct directly in SelectionList::remove
2017-03-03 20:17:11 +00:00
Maxime Coste
8a1e5d12ac
Make <a-space> throw on invalid index or last selection
2017-03-03 20:17:11 +00:00
Maxime Coste
e3cfde6d07
Add docstring support for mappings, and use them in autoinfo
...
Fixes #105
Fixes #1100
Closes #1165
2017-03-03 20:16:36 +00:00
Olivier Perret
033b259e5b
<space>, <a-space>: throw on invalid preconditions
2017-03-03 13:50:00 +01:00
Frank LENORMAND
aecc0fbb0f
src: Fix the string conversion of range faces
...
Fixes #1250
2017-03-01 22:16:35 +03:00
Eike Plack
a35f50d832
Add RawKey
to hook completion list
2017-03-01 03:28:23 +01:00
Maxime Coste
7d487e3b4c
Small naming tweak
2017-02-27 20:44:38 +00:00
Maxime Coste
e5e705e151
Fix clang warnings about uninitialized timestamp field
...
Closes #1241
2017-02-27 20:29:53 +00:00
Maxime Coste
88752ef895
Compile optimized and debug into different files, make kak
a symlink
2017-02-27 20:11:56 +00:00
Maxime Coste
1f3abde926
Cleanup some tabby mess in the Makefile
2017-02-27 20:11:27 +00:00
Maxime Coste
8703f30063
Tweak some character categorization function implementations
2017-02-23 00:56:40 +00:00
Maxime Coste
55f6ca238f
Refactor get_words to be simpler and faster
2017-02-23 00:51:54 +00:00
Maxime Coste
73bb260e6c
Fix support for non ascii chars in completion_extra_word_char
2017-02-23 00:35:27 +00:00
Maxime Coste
2f7313ad59
Slight code cleanup in utf8_iterator.hh
2017-02-23 00:30:59 +00:00
Maxime Coste
a39f2b0c71
Refactor WordDB::add_words to be slightly faster
2017-02-23 00:26:24 +00:00
Maxime Coste
d9abc2a156
Refactor StringData and StringRegistry to remove need for purging
...
Purging unused strings could get pretty expensive with a lot of
interned strings as it requiered iterating on all of them. Use
a flag on the refcount of the StringData to see if the string
is interned, and notify the StringRegistry in this case.
This should improve the speed of editing big files with many words,
such as the one described in #1195
2017-02-23 00:03:32 +00:00
Maxime Coste
7a143a7f7c
Use false instead of 0 in the kak_assert do while
2017-02-23 00:03:11 +00:00
Frank LENORMAND
98cfbc7c3c
Properly wrap kak_assert
into a do-while scope
...
Expanding the `kak_assert` macro to either an `if` statement or nothing
leads to issues when the macro is used in a conditional statement that
doesn't use braces.
Example: ncurses_ui.cc:476, in non debug mode, the macro will expand to
an empty line, resulting in the `ungetch` call not being executed if the
`ioctl` call succeeds (line 448).
2017-02-22 13:04:25 +03:00
Maxime Coste
467f5547d5
Try to please clang-3.5
2017-02-22 09:44:19 +00:00
Maxime Coste
e2f6b9a393
Fix overly strict backward_sorted_until
...
A change that ended exactly where the previous one started was not
considered backward sorted. Leading to some very bad performances in
certain cases, like '100000o<esc>u'
2017-02-20 19:46:12 +00:00
Maxime Coste
fe2d0fab71
Fix performance of word completion with many different selections
...
Fixes #1228
2017-02-20 19:28:02 +00:00
Maxime Coste
5eef2b9105
Correctly handle mutation of the watcher list while iterating on them
...
Fixes #1227
2017-02-20 13:50:30 +00:00
Maxime Coste
2b01da530d
Fix hook list in commands.cc
2017-02-19 14:14:22 +00:00
Maxime Coste
9fdbcf761d
Display an info box on startup with recent breaking changes
2017-02-19 13:59:44 +00:00
Maxime Coste
9271f0a87d
Fix handling of disabled_hooks regex
2017-02-19 13:59:34 +00:00
Maxime Coste
edc2a88643
Rename BufNew and BufOpen hooks to BufNewFile and BufOpenFile
...
Fixes #1225
2017-02-19 13:08:06 +00:00
Maxime Coste
889a2144d4
Copy the list of hooks to run before iterating on them and running them
...
Running hooks could result in the hook list getting mutated, leading
to potential crashes.
Fixes #1222
2017-02-19 12:08:13 +00:00
Maxime Coste
38102595ef
Small naming tweak in HookManager
2017-02-19 11:52:31 +00:00
Maxime Coste
c3af384c70
Detect when -client, -buffer or -try-client are used at the same time
...
Fixes #1218
2017-02-15 18:59:37 +00:00
Maxime Coste
0a1cb4b9b1
Detect when switches are specified more than once
...
Fixes #1219
2017-02-15 18:55:11 +00:00
Maxime Coste
9e0f085b86
Reorganize code in main.cc
2017-02-14 13:54:45 +00:00
Maxime Coste
d470bd2cc9
Make numeric registers setable
...
Fixes #1214
2017-02-14 00:02:01 +00:00
Maxime Coste
e3a04dfa65
Fix RegisterRestorer not handling potential throws on register assign
...
This should fix part of #1214
2017-02-13 23:31:16 +00:00
Maxime Coste
4f18e56320
Fix non-returning parse_key lambda
2017-02-13 14:02:09 +00:00
Maxime Coste
2edb7d62ef
Add support for -on-change and -on-abort to prompt
...
Fixes #1209
2017-02-12 12:51:58 +00:00
Maxime Coste
9ba1665e58
Refactor show_whitespaces a bit
2017-02-09 23:52:38 +00:00
Maxime Coste
6163134f30
Merge remote-tracking branch 'lenormf/show-whitespaces-flags'
2017-02-09 23:33:08 +00:00
Maxime Coste
4ae441db68
Merge remote-tracking branch 'Delapouite/decl-completer'
2017-02-09 23:26:12 +00:00
Maxime Coste
86bba5d9d2
Merge remote-tracking branch 'Delapouite/line-flags'
2017-02-09 23:26:05 +00:00
Delapouite
0cf94292e4
Add command completer for types to declare-option
2017-02-09 10:18:13 +01:00
Delapouite
cfb2b4fade
Fix missing new line char in declare_option_cmd info
2017-02-09 09:01:49 +01:00
Maxime Coste
1c63d28f15
Fix Buffer::offset_coord that was dropping the target coordinate
2017-02-07 23:13:14 +00:00
Maxime Coste
5342d67fa4
Remove unneeded padding in relative line numbers highlighting
...
We were still adding one more char to the line number width in case
it would contain a minus sign. The minus signs are not used anymore
in relative line numbering so we dont need to keep that addtional
char which is always a blank.
2017-02-07 23:01:23 +00:00
Maxime Coste
ce2b85ddac
Add -match-capture support for regions higlighter
...
Closes #837
2017-02-06 23:00:13 +00:00
Maxime Coste
45b145f540
Small layout tweak for Buffer::HistoryNode
2017-02-06 13:33:20 +00:00
Frank LENORMAND
5d86b58a38
Allow modifying the characters used when highlighting whitespace
...
This commit adds the following flags to the `show_whitespaces`
highlighter, with a one character long parameter:
* `-lf`: character replacing line feeds
* `-spc`: character replacing spaces
* `-nbsp`: character replacing non breakable spaces
* `-tab`: character replacing a tabulation
* `-tabpad`: character used as padding after a tabulation to satisfy
the `tabstop` option
2017-02-04 10:21:13 +03:00
Maxime Coste
cb2e1a17b3
Fix some bugs in non blocking pipe writing
2017-02-03 18:40:03 +00:00
Maxime Coste
f500af9023
Merge remote-tracking branch 'ekie/move_buffer_end'
2017-02-03 13:49:33 +00:00
Maxime Coste
c793ef3aa8
Store shell-candidates completions in the Completion memory domain
2017-02-03 13:42:47 +00:00
Maxime Coste
02b7e58481
Make piping data into shell commands non blocking
...
Fixes #1180
2017-02-03 01:14:42 +00:00
Maxime Coste
d90919568a
Also execute prompt callback when just starting
...
incsearch will immediatly display the result of using an empty
string (reusing the search register content).
Fixes #1174
2017-02-01 23:04:37 +00:00
Maxime Coste
bc0dfa9e8f
Use <a-'> for backward rotate selection and move rotate content to <a-">
2017-02-01 22:53:42 +00:00
Maxime Coste
65bbc19d6f
Change n
behaviour to only select next match for main selection
...
Select next match for all selections is still available as /<ret>
Fixes #1173
2017-02-01 20:00:05 +00:00
Maxime Coste
6a0354a597
Tweak ranked match ordering
2017-01-31 22:30:23 +00:00
Maxime Coste
472f5149c0
Formatting fix
2017-01-31 21:46:20 +00:00
Maxime Coste
f44415cee4
Add some noexcept to pointer policies
2017-01-31 21:45:55 +00:00
Eike Plack
01eceebf75
Support the vim behaviour for +line syntax
...
* Ommitting the linenumber will move to buffer end
2017-01-31 19:44:27 +01:00
Maxime Coste
34870eb353
Rework NCurses key parsing to properly handle <a-special key>
2017-01-30 13:38:56 +00:00
Maxime Coste
f30e164232
Make SharedString::create take a list of StringViews
2017-01-30 13:38:38 +00:00
Maxime Coste
9d09d14d99
Warning fix in ranked_match.cc
2017-01-30 11:22:14 +00:00
Maxime Coste
192ea9a9d9
Fix explicit insert completion menu/info not hiding
...
Fixes #1168
2017-01-30 10:32:29 +00:00
Maxime Coste
632e05d830
Fix infinite loop when comparing RankedMatches containing invalid utf8
...
If we had a word containing some invalid utf8, like a wrong sequence
of continuation bytes, we would infinitely loop back to the previous
valid character start.
Fixes #1157
2017-01-29 23:50:33 +00:00
Maxime Coste
1ff60ff592
Fix some uninitialized values
2017-01-29 23:37:42 +00:00
Maxime Coste
cb395d39f8
Use iswlower instead of islower
...
islower can crash with big codepoints, and is incorrect anyway.
2017-01-29 23:37:10 +00:00
Maxime Coste
565d835d57
Fix option name in haskell.kak
2017-01-29 16:10:48 +00:00
Maxime Coste
0051a4f896
Remove unneeded assignment to null in RefPtr::release
2017-01-29 14:26:41 +00:00
Maxime Coste
2052b225d9
Detect too deep command call stack
...
Fixes #1163
2017-01-29 13:56:05 +00:00
Maxime Coste
753f3a50d1
Make StringView and unit types trivial types
2017-01-29 13:49:45 +00:00
Maxime Coste
0cb192921a
Remove unused WindowAndSelections timestamp field
...
The SelectionList already has a timestamp.
2017-01-29 12:50:16 +00:00
Maxime Coste
2b6fc6beb7
Remove unused Diff::posA field
2017-01-29 12:49:52 +00:00
Maxime Coste
68b92b9ac1
Make BufferIterator only a bidirectional iterator
...
Distance computation is too expensive on BufferIterators to
treat them as random access.
2017-01-28 13:06:03 +00:00
Maxime Coste
072064407a
Remove hash from StringData
...
Maintaining the hash value of strings is not worth it as we only
use it for buffer reload, but pay for it on any buffer modifications.
2017-01-28 13:04:55 +00:00
Maxime Coste
125c8b7e80
Fix fifo reading not handling potential errors from the read call
...
Fixes #1153
2017-01-25 13:55:20 +00:00
Maxime Coste
aa7241067e
Only restore cursor position after an append if we still have cursor > anchor
...
Fixes #1158
2017-01-25 13:36:06 +00:00
Maxime Coste
ebcfba12f6
Add a RawKey
hook for raw user input hooking
...
Fixes #1132
2017-01-24 23:57:36 +00:00
Maxime Coste
8a62ec12af
Fix shell context capture that was accessing dead parameters
...
Fixes #1156
2017-01-24 20:20:50 +00:00
Maxime Coste
bbbb513990
Fix crash when clearing a regex prompt with multiple selections
...
Fixes #1124
2017-01-24 19:18:29 +00:00
Maxime Coste
7ba24c043a
Add gi
to go to first non-blank character on line
...
Fixes #407
2017-01-22 23:53:08 +00:00
Maxime Coste
66e422e397
Fix client destruction when there is an InsertMode mode still alive
2017-01-22 12:19:23 +00:00
Maxime Coste
e8ee8c23d8
Support the +line syntax for clients as well.
...
Fix a crash on daemon quit as well.
2017-01-21 12:17:49 +00:00
Maxime Coste
c6a7924b80
Fix SafeCountable callstack tracking
2017-01-21 12:10:24 +00:00
Maxime Coste
6f4515f005
Only touch new clients selections when target coord are explicit
...
Do not implicitely change new clients selections to target coordinates
when the user did not specify them, so that we can re-use the selections
from the found free window, which is the generally desired behaviour.
2017-01-19 18:44:26 +00:00
Maxime Coste
7316afd17b
Use ints instead of unsigned for capture count
2017-01-16 18:49:27 +00:00
Maxime Coste
c24a636cb9
Fix regex search/select not restoring initial selections on abort
...
And incrementally set the search register for select/split as well
2017-01-16 13:57:14 +00:00
Frank LENORMAND
0b22938bce
Remove the option that excludes the -pedantic
flag from CXXFLAGS
...
Allowing compilation without the `-pedantic` flag was a temporary trick
to work around a bug involving `libstdc++` and `musl`. A fix has been
pushed for the issue in the appropriate repositories, we no longer need
the optional non-pedantic compilation option.
2017-01-14 11:55:20 +03:00
Maxime Coste
e7e72747ed
Update ranges highlighter options according to buffer changes
2017-01-13 13:52:55 +00:00
Maxime Coste
ffc362cf9e
Propagate ShellContext custom env-vars through custom commands
...
Fixes #1131
2017-01-13 00:26:43 +00:00
Maxime Coste
4916ea1766
Fix capture group handling
...
Fixes #1129
2017-01-13 00:17:31 +00:00
Maxime Coste
8c55acb076
Detect empty selection lists when restoring selections from registers
...
Fixes #1123
2017-01-11 13:43:41 +00:00
Maxime Coste
343df600cb
Merge remote-tracking branch 'alexherbo2/command-names'
2017-01-10 13:44:11 +00:00
Maxime Coste
fb773367e7
Merge remote-tracking branch 'Delapouite/pipe-register'
2017-01-10 13:35:44 +00:00
Maxime Coste
37fbe6c6eb
Treat <c-h> as backspace in ncurses ui
...
Fixes #1030
2017-01-10 13:35:10 +00:00
Delapouite
f51d03b0d8
Fix: add missing pipe register in info
2017-01-10 12:34:37 +01:00
Maxime Coste
9f0bca53c4
Small code cleanups
2017-01-08 23:26:15 +00:00
Maxime Coste
dcd8f6ef01
Apply clang-tidy modernize to the codebase
2017-01-08 22:39:01 +00:00
Maxime Coste
f9f11aa762
Make the currently sourced file path available through $kak_source
...
The :source command sets an 'source' value to the real path of the
file getting sourced while its commands are executed.
Fixes #1112
2017-01-06 19:46:47 +00:00
Maxime Coste
3123dbf4c2
Merge branch 'master' of git://github.com/hoop33/kakoune
2017-01-05 14:36:55 +00:00
Rob Warner
48d5e5b5a9
Use PREFIX to locate ncurses and boost on macOS
2017-01-05 09:30:58 -05:00
Maxime Coste
d991420140
Higher level implementation of attributes to json formatting
2017-01-04 23:19:18 +00:00
Rob Warner
a680d419e7
Allow non-standard homebrew location for boost and ncurses linking
2017-01-04 15:38:37 -05:00
Alex Leferry 2
671b50bb52
update command names
2017-01-04 13:04:27 +01:00
Maxime Coste
b3674a2f03
Add Modal
InfoStyle used for bufer reload info box
...
Modal info style wont be replaced by other info boxes.
NCursesUI will center that info box.
Fixes #1060
2017-01-04 11:39:51 +00:00
Maxime Coste
1b9f363225
Fix bug relying on undefined arg evaluation order.
2017-01-03 23:17:08 +00:00
Maxime Coste
4295736c97
Fix handling of main selection when copying selection to next/previous lines
...
Fixes #1095
2017-01-03 18:41:45 +00:00
Maxime Coste
fc4dc93209
Merge remote-tracking branch 'casimir/makefile-osx'
2017-01-02 11:13:24 +00:00
Maxime Coste
20c47b8d61
better support for plain pointer iterators in containers.hh
...
use std::iterator_traits<T>::value_type instead of T::value_type
that will fail when T is not of class type.
2017-01-02 05:13:58 +00:00
Maxime Coste
ac1192f58a
Ensure <esc> cancels in replace with char
...
After recent changes that associated <esc> with the 0x1b codepoint
r<esc> would replace each char with 0x1b instead of canceling the
replace command.
2017-01-02 04:03:02 +00:00
Maxime Coste
3c1f606a22
Move some template code out of selectors.hh into selectors.cc
2017-01-01 19:30:02 +00:00
Maxime Coste
cd89531bd9
Better handling of linewise inserting when we have multiple selections per line
...
Fixes #1053
2017-01-01 18:08:43 +00:00
Maxime Coste
cdb2c766a5
Refactor SelectionList::insert a bit
2017-01-01 17:31:47 +00:00
Maxime Coste
69789d4793
When inserting at the end, store the next line as end pos in the change
2017-01-01 16:32:04 +00:00
Maxime Coste
e42881fa38
Fix remaining uses of hardcoded /tmp to get the socket paths
...
Fixes #1097
2017-01-01 13:10:08 +00:00
Maxime Coste
968e573d80
Slight code refactor for paste handling
2017-01-01 12:58:04 +00:00
Martin Chaine
7b60ae0b5a
use explicit flags for homebrew's boost on osx
2016-12-30 19:32:18 +01:00
Maxime Coste
76c58aa022
Dont use constexpr to fix OSX compilation
2016-12-30 13:29:57 +00:00
Maxime Coste
190a04d6c8
Add a ncurses_change_colors option that can disable color palette change
...
Closes #1057
2016-12-30 07:01:13 +00:00
Maxime Coste
ea6994dd3b
Use a struct WorstMatch instead of varargs for the fallback option_add
...
varargs cannot handle non pod types.
2016-12-30 06:43:32 +00:00
Maxime Coste
4f98677642
Use 'not empty' in place of 'length > 0'
2016-12-27 22:01:11 +00:00
Maxime Coste
84c2ca1cdc
Merge remote-tracking branch 'leira/empty_param_crash'
2016-12-27 22:00:32 +00:00
Maxime Coste
923665fab4
Merge remote-tracking branch 'kballard/readonly_warning_msg'
2016-12-27 21:54:26 +00:00
Maxime Coste
243bcf6a6d
Support set -add on flag types
...
Fixes #1082
2016-12-27 21:52:53 +00:00
Kevin Ballard
b0c2444466
Change the message when entering insert mode while readonly
2016-12-27 12:23:15 -08:00
Maxime Coste
6beb9b6f02
Fix unmap 4th argument not being optional
...
Fixes #1078
2016-12-27 06:49:35 +00:00
Maxime Coste
fcd99d9c22
Use absolute distance for relative line numbering
...
Closes #1068
2016-12-26 22:10:25 +00:00
Leira Hua
f79018cffd
Added string length check when checking switch params
...
Fixes #1051
2016-12-24 17:42:31 -08:00
Maxime Coste
25451ac112
Set the register incrementally as well during incremental search
...
Fixes #1054
2016-12-23 20:46:50 +00:00
Maxime Coste
33eb93b619
Skip debug buffer when cycling through the buffer list
...
Fixes #1059
2016-12-23 16:37:54 +00:00
Maxime Coste
d17bed9b80
Display the command prompt in error face when the command is not found
...
Fixes #1021
2016-12-23 16:23:31 +00:00
Maxime Coste
62df6dbb46
Display a message when entering insert mode while readonly
...
Fixes #1050
2016-12-21 06:39:58 +00:00
Maxime Coste
3a6167ae62
Merge branch 'master' of git://github.com/akkartik/kakoune
2016-12-20 20:15:54 +00:00
Maxime Coste
0daf7af493
Fix getting path confstr, the returned size includes the zero terminator
...
Closes #1047
2016-12-20 20:14:35 +00:00
Kartik K. Agaram
0a21426d58
Remain silent on exit without error.
2016-12-20 10:11:13 -08:00
Maxime Coste
c2305e03b3
Small formatting tweak
2016-12-20 12:57:48 +00:00
Maxime Coste
fdb2d83ea1
Ensure we have an EOL after error messages
2016-12-20 12:49:05 +00:00
Maxime Coste
b7a0aa7546
Ensure we return 0 on exit from graceful disconnection
...
Fixes #1042
2016-12-20 10:34:48 +00:00
Maxime Coste
4b696836d1
Fix hardcoded uses of "/tmp"
...
Closes #1032
2016-12-20 04:04:47 +00:00
Maxime Coste
cf10f3f0a0
Fix join, we dont have a StringView from char array constructor
2016-12-17 06:06:07 +00:00
Maxime Coste
2bdd361948
Escape the backslash chars as well when joining strings
...
Fixes #1014
2016-12-17 05:48:42 +00:00
Maxime Coste
dc84cdd538
Add more diagnostic information when failing to bind/listen to socket
2016-12-17 05:46:04 +00:00
Maxime Coste
28ddb3cb1f
Ignore eventual / suffix in TMPDIR
2016-12-17 05:25:43 +00:00
Maxime Coste
831887cd3a
Improve general security of the unix sockets
...
* Use the stricky bit on the shared kakoune folder
* Do not allow read/write access to user folder
* Respect $TMPDIR when set
Fixes #1007
2016-12-15 23:47:34 +00:00
Maxime Coste
9a879262a2
Use a POSIX guaranteed way of getting the shell path
2016-12-15 23:04:53 +00:00
Maxime Coste
4fd12164dd
Merge remote-tracking branch 'Delapouite/prompt'
2016-12-15 13:50:12 +00:00
Delapouite
99f38c99ec
Fix :prompt command description
2016-12-15 14:42:46 +01:00
Maxime Coste
71cc9f1011
Fix reentrancy in InputeModes::Normal::on_key
2016-12-15 09:46:10 +00:00
Maxime Coste
9ad1c19f69
Validate user text object desc more thorougly
...
Fixes #992
Fixes #993
Fixes #994
2016-12-15 09:29:38 +00: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
377046e315
Handle correctly cases where codepoint_width returns -1
...
Fixes #972
2016-12-14 13:53:30 +00:00
Maxime Coste
dfb030da6e
Make container wrapper callback functions mutable
...
It seems at least std::mem_fn callable wrapper type call operator
is not guaranteed to be const, so we need to be able to call on
a non const object. This should do for now.
Fixes #978
2016-12-14 13:25:55 +00:00
Maxime Coste
85a534fb8a
Support inserting esc characters through <c-v>
...
As requested in #960
2016-12-14 00:34:53 +00:00
Maxime Coste
735b1e1dc5
Add support for readline like <c-k> and <c-u> in prompts
2016-12-14 00:28:46 +00:00
Maxime Coste
e44129577a
Fix one definition rule violation in ncurses_ui.hh
...
The memory domain of Vector<DisplayBuffer> was different depending
on if display_buffer.hh has been included or not.
2016-12-10 13:43:41 +00:00
Maxime Coste
5d9f3b7f3f
Ensure the line is correctly clamped in scroll_window
...
Seems like the previous implementation was not always doing that
correctly, so just use an obviously correct method.
Fixes #951
2016-12-10 13:33:42 +00:00
Maxime Coste
03eb128536
Ensure content of expanded strings in modelinefmt is not interpreted as markup
2016-12-07 20:07:32 +00:00