Maxime Coste
86616c207d
Merge remote-tracking branch 'lenormf/synchronized-write'
2018-07-04 19:46:40 +10:00
Frank LENORMAND
5309b7b5e5
src: Add a -sync
flag to the write commands
2018-07-04 09:49:53 +03:00
Frank LENORMAND
dd17b20bbf
src: Allow the edit
command to create readonly buffers
2018-07-03 14:34:48 +03:00
dahlbaek
2a509ba73f
Mark unused variables with the [[gnu::unused]] attribute
2018-07-02 19:33:52 +02:00
Frank LENORMAND
266ce73de7
src: Make C
skip empty lines
...
This commits changes the way `C` behaves when the next line is empty:
instead of stopping the selection, it will now jump to the next line
that can hold a selection as big as the current one.
The primitive's count parameter holds the maximum amount of selections
that should be added to the current one.
Closes #2061
2018-06-30 14:39:15 +03:00
Frank LENORMAND
1cb51cacb7
src: Fix cycle hogging when using C
at EOF
2018-06-30 11:53:28 +03:00
Maxime Coste
43b72770ec
Fix wrong logic for moving filedescriptors leading to closed stdin
...
With this fix, tests can now use /dev/null as stdin.
Fixes #2165
2018-06-28 22:56:50 +10:00
Olivier Perret
67655de947
Use a dedicated vm op for dot when match-newline is false
2018-06-24 12:41:50 +02:00
Olivier Perret
b5ee1db1c4
Use bit-flags for storing regex regex options
2018-06-24 12:41:50 +02:00
Olivier Perret
8edef8b3f1
Add support for regex flag to toggle dot-matches-newline
2018-06-24 12:41:50 +02:00
Maxime Coste
667777521b
Refactor the way main selection is determined after rotating contents
...
Fixes #2133
2018-06-21 08:07:17 +10:00
dahlbaek
52a3e9a84d
Pass in OpenBSD binary path using preprocessor option
...
Alternative to hard coding binary path for OpenBSD
2018-06-20 14:20:55 +02:00
Patrick Marchand
dc3e4823a5
Remove extraneous include for openbsd
...
Forgot to remove this before pushing.
2018-06-20 14:20:55 +02:00
Patrick Marchand
2789857f32
Adds openbsd support
...
Seems to work on openbsd 6.3-current but needs more testing. Had to
hardcode the binary path as openbsd considers getting the executable
path at runtime a security flaw.
2018-06-20 14:20:55 +02:00
Maxime Coste
3d4ee7d201
Tweak search style menu completion display
2018-06-20 20:20:11 +10:00
Maxime Coste
b82d31016b
Do not draw menu if it would hide prompt content
2018-06-20 08:12:53 +10:00
Maxime Coste
226db75aeb
Change Search completion to display on top of the modeline
2018-06-19 21:02:24 +10:00
Maxime Coste
6dca67c674
Fix two <s-tab> requiered to access last completion in prompt
...
A single <s-tab> should be enough.
2018-06-19 07:40:52 +10:00
Delapouite
0bfdaf7d3e
Improve unmap command key-completer
2018-06-15 15:16:08 +02:00
Maxime Coste
665d3fa196
Fix edit -fifo without -scroll when the buffer is already opened
...
Scrolling was taking place in that case even though it was not
desired.
2018-06-13 07:11:03 +10:00
Maxime Coste
ee19497d37
Fix crash when adapting window position post buffer modifications
2018-06-13 05:00:35 +10:00
Maxime Coste
0bdde991ea
Remove unneeded Window::m_range post refactoring
2018-06-12 06:48:48 +10:00
Maxime Coste
0d3a1b5955
Try to keep window position fixed when buffer gets modified
...
Adapt window position to the changes that happened in the buffer
since last redraw.
Fixes #1989
2018-06-11 15:10:30 +10:00
Maxime Coste
df90ba5984
Extract update_ranges_ifn as a general utility function
2018-06-11 15:10:30 +10:00
Maxime Coste
539832bf29
Add position offset to Window to limit moves with search menu style
...
Window can be resized with an "offset_pos" flag, which means that
the resize took place on the top left corner of the window, leading
to a change in current window position. This is treated as temporary
and the position change is stored in a m_position_offset field.
That allows the ncurses UI to offset the position when it displays
a Search menu, so that the window does not constantly scroll when
the search menu open/closes. The window will only scroll if it needs
to in order to keep the main selectin visible.
2018-06-11 15:10:30 +10:00
Maxime Coste
60cf71bc24
Pass DisplaySetup through the HighlightContext
2018-06-11 15:10:30 +10:00
Maxime Coste
97af2ffc84
Merge remote-tracking branch 'alyssais/patch-2'
2018-06-03 12:19:09 +10:00
Maxime Coste
310e5e3bcd
NCursesUI: Use only 3 line menu for MenuStyle::Search
2018-06-03 12:17:38 +10:00
Maxime Coste
2bdbf7e379
Add MenuStyle::Search that prevents the menu from hiding buffer text
...
Fixes #2042
2018-06-03 12:17:38 +10:00
Maxime Coste
56e5322b45
EventManager: Never block if a forced file descriptor is present
2018-06-03 12:17:38 +10:00
Maxime Coste
c63502c7c6
Code cleanup and slight refactor in NCursesUI menu code
2018-06-03 12:17:38 +10:00
Alyssa Ross
7685a657ca
Fix grammar in highlight error message
2018-06-01 13:02:38 +02:00
Delapouite
b60ed6ca53
docs: fix missing ]
in wrap hl -marker switch docstring
...
Also add the related changelog entry
2018-05-30 18:11:19 +02:00
Alyssa Ross
2deb2c0294
Fix typos in add-highlighter range help
2018-05-28 13:19:12 +02:00
Maxime Coste
f06badcfd3
Fix clang compilation
2018-05-28 08:26:19 +10:00
Maxime Coste
b5693c6253
Refactor option_from_string to return directly the option value
2018-05-27 13:00:50 +10:00
Maxime Coste
2617f5e022
Add unit test for option parsing
2018-05-27 13:00:48 +10:00
Maxime Coste
f1c1de834a
Add a -marker <marker_text> switch support to the wrap highlighter
...
This makes wrapped lines very explicit.
Fixes #2065
2018-05-26 22:22:00 +10:00
Maxime Coste
68fb3ba88f
Rework fail
command not to display command call stack
...
`fail` triggers "expected" errors, and hence should just display
the provided message.
2018-05-26 21:31:17 +10:00
Maxime Coste
54b62cbef7
Do not expose C++ typeid().name to user facing errors on wrong option type
...
Fixes #2079
2018-05-26 10:01:26 +10:00
Maxime Coste
9b89652b0b
Fix potential assert on itersel selection restoration
...
We cannot guarantee after an itersel that selections are going to
still be in ascending order, but we were calling a SelectionList
constructor that was assuming this was the case.
2018-05-24 08:08:51 +10:00
Maxime Coste
4ef5c80724
Fix Kakoune client busy looping on SIGHUP
...
Pure clients never quitted when they got SIGHUP after recent changes
to add is_ok to UserInterface. run_client now tracks the UI state as
well and quits if the UI gets killed.
2018-05-23 08:16:35 +10:00
Maxime Coste
56e2174cf6
Do not reuse m_buffer_trash to store dying buffers in ~BufferManager
...
Doing that clears m_buffer_trash, deleting buffers contained there,
but we are not ready to have Buffer destructors running yet as we
did not clear the ClientManager, meaning we might have free windows
pointing to buffers in the buffer trash.
2018-05-21 20:30:24 +10:00
Maxime Coste
d4e36958f8
Gather options in a vector when running Buffer::on_option_changed
...
on_option_changed might trigger hooks that will mutate the option
managers, invalidating the iterators we use.
2018-05-21 20:07:25 +10:00
Maxime Coste
919b7ce645
Fix also the implementation of to_string(size_t) change
2018-05-21 20:01:19 +10:00
Maxime Coste
edc53de8cc
Small code cleanup
2018-05-21 07:55:07 +10:00
Maxime Coste
b7dabf11f2
Fix incompatible to_string function declaration when size_t is unsigned int
2018-05-21 07:53:21 +10:00
Maxime Coste
ec0f8fe574
Extend try
command to support multiple catches.
...
If a catch command fails, and another catch is availabe following
it, that following catch gets executed.
2018-05-19 14:15:16 +10:00
Maxime Coste
243cfbc4ae
Fix behaviour of extending to next match when wrapping
...
If the search wraps to get to next match, drop that selection when
extending.
2018-05-19 14:15:16 +10:00
Maxime Coste
14d12fac04
Rename -allow-override switch to -override
...
Closes #2057
2018-05-19 14:15:16 +10:00
Maxime Coste
c9a8658671
Fix assert with window small enough so that no part of buffer is displayed
...
Fixes #2056
2018-05-19 14:15:16 +10:00
Maxime Coste
79b60f69a9
Small code cleanups
2018-05-17 22:55:53 +10:00
Maxime Coste
b22c8ad8c7
Fix potential missed redraws
2018-05-17 22:50:11 +10:00
Maxime Coste
b0577d07f6
Merge remote-tracking branch 'Screwtapello/newlines-after-json-errors'
2018-05-17 07:47:34 +10:00
Maxime Coste
9bd3231d9b
Avoid needless constant allocation in StaticRegister::set
2018-05-17 07:41:32 +10:00
Maxime Coste
4cc9c9997e
compute_line_modifications: avoid potentially long iteration
2018-05-17 07:41:32 +10:00
Maxime Coste
fcce76ba57
Handle all pending events before redrawing
...
If new events happen while handling events, take care of those
new events as well before redrawing.
2018-05-17 07:41:32 +10:00
Tim Allen
0af53fb0dc
Print a newline after errors in the JSON UI.
...
This makes them just a little easier to read.
2018-05-16 23:26:05 +10:00
Maxime Coste
75eb293f98
Rename Context::Flags::Transient to Context::Flags::Draft
...
Draft is well establish and all draft context are transient.
2018-05-14 08:23:00 +10:00
Maxime Coste
b204e773d4
Do not push jumps implicitely in transient contexts
...
This should improve performance in draft contexts.
2018-05-14 08:23:00 +10:00
Maxime Coste
288cf6de73
Fix performance problem when generating many values for # register
...
Fixes #2008
2018-05-09 23:02:53 +10:00
Maxime Coste
327d8ad759
Mark Client, Window, Buffer and OptionManager as final
...
Avoids warning about non virtual destructor calls on them,
as they have a vtable due to OptionManagerWatcher.
2018-05-09 23:01:40 +10:00
Maxime Coste
e8c648b7b7
Store the timestamp at which a display buffer was generated
...
Coordinates inside a display buffer are only valid for a certain
buffer content, they cannot be used once the buffer has been
modified.
Fixes #2034
2018-05-08 21:56:44 +10:00
Maxime Coste
148d6c205b
Fix wrong behaviour in select surrounding
...
Fixes #2030
2018-05-07 22:17:57 +10:00
Maxime Coste
7a841dcca7
Remove out of date noexcept(false) on MessageWriter destructor
...
This made sense when the writer was trying to send the message
in its destructor, but this is not the case anymore.
2018-05-05 07:59:13 +10:00
Maxime Coste
da1d78a3c2
Do not let exception propagate out of register restoring lambda
...
It is called during a std::vector destruction, which is noexcept,
leading to terminate being called.
2018-05-05 07:57:37 +10:00
Maxime Coste
7325ad216c
Add support for explicit menu selection from the UI
...
the JsonUI now supports a "menu_select(int)" RPC call that should
trigger explicit selection of the provided item index.
As discussed for issue #2019 .
2018-05-03 22:28:20 +10:00
Maxime Coste
c2637f08d9
JsonUI: Add support for a "mouse" RPC calls from the UI
...
As discussed on issue #2019
2018-05-03 22:27:59 +10:00
Maxime Coste
a19ce37634
Tweak the way register restorers are created to try to fix OSX compilation
2018-05-03 08:14:15 +10:00
Maxime Coste
74f90c1fc5
Refactor buffer undo tree
...
Store the undo tree as an array of undo nodes, instead of as a
pointer based tree.
2018-05-02 22:34:55 +10:00
Maxime Coste
4288f0fb3a
Move ScopedEdition to context_wrap
...
No need to create it both in context_wrap and in the called function.
2018-05-01 22:49:01 +10:00
Maxime Coste
286a244aa2
Replace RegisterRestorer with a on_scope_end + lambda
2018-05-01 22:48:14 +10:00
Maxime Coste
6777c14697
Make OnScopeEnd valid even when non-copy elided
...
OnScopeEnd was relying on copy elision to avoid temporary destructor
calls that would run the scope end function too soon.
2018-05-01 22:47:06 +10:00
Maxime Coste
1fb53ca712
Fix wrong use of constexpr
2018-04-30 07:41:31 +10:00
Maxime Coste
e4f90e5ed2
Fix tests after changes to json_ui output
2018-04-29 23:06:24 +10:00
Maxime Coste
bcecb2f877
Fix crash on quitting
2018-04-29 22:59:20 +10:00
Maxime Coste
178d2d3cd3
Rework the way UI can trigger a client quitting
...
Add a UserInterface::is_ok method and return false on
SIGHUP/stdin closing/socket dropping
This should be cleaner and more robust than the previous SIGHUP
handling code.
Fixes #1594
2018-04-29 22:31:57 +10:00
Maxime Coste
57112b0845
Rename move to move_cursor
...
move is pretty ambiguous and hard to find due to std::move.
2018-04-29 22:31:57 +10:00
Maxime Coste
8e555cb992
JsonUI: add support for set_ui_options RPC call
...
As discussed on #2019
2018-04-29 20:45:53 +10:00
Maxime Coste
2fa553e728
Remove implicit conversion from String to DisplayAtom/DisplayLine
2018-04-29 20:45:53 +10:00
Maxime Coste
787ca7f19b
Regex: small code style tweak
2018-04-29 19:58:18 +10:00
Maxime Coste
1e8026f143
Regex: Use only 128 characters in start desc and encode others as 0
...
Using 257 was using lots of memory for no good reason, as > 127
codepoint are not common enough to be treated specially.
2018-04-29 19:58:18 +10:00
Maxime Coste
528ecb7417
Regex: Use a custom 'DualThreadStack' structure to hold thread info
...
Instead of using two vectors, we can hold both current and next
threads in a single buffer, with stacks growing on each end.
Benchmarking shows this to be slightly faster, and should use less memory.
2018-04-29 19:58:18 +10:00
Delapouite
8b00d763e0
Docs: add exhaustive list of scoped objects
2018-04-28 17:41:24 +02:00
Maxime Coste
3afa32935f
Merge remote-tracking branch 'Delapouite/unnamed-client' into HEAD
2018-04-28 09:30:35 +10:00
Maxime Coste
a1b8864c77
Merge remote-tracking branch 'lenormf/regex-format-string' into HEAD
2018-04-28 09:29:57 +10:00
Maxime Coste
2b9ec411d3
fix potential overflow in dump_regex
2018-04-28 09:29:15 +10:00
Frank LENORMAND
9bac04d35f
regex_impl: Fix a potential format string flaw
2018-04-27 09:24:22 +03:00
Maxime Coste
8438b33175
Add a debug regex command to dump regex instructions
2018-04-27 08:35:09 +10:00
Maxime Coste
f10eb9faa3
Use indices instead of pointers for saves/instruction in ThreadedRegexVM
...
Performance seems unaffacted, but memory usage should be lowered
as the Thread struct is 4 bytes instead of 16.
2018-04-27 08:35:09 +10:00
Maxime Coste
4eb6740794
Add a -always switch to hook command to ignore hooks disabled
...
Hooks specified as always will run regardless of the hook disabled
status.
2018-04-26 08:28:11 +10:00
Maxime Coste
2d96fbed7c
Reserve data for # register
2018-04-25 21:19:04 +10:00
Maxime Coste
2fc5a0317c
Refactor RegexIterator::next to directly use a ThreadedRegexVM
2018-04-25 21:20:32 +10:00
Maxime Coste
fa17c46653
Regex: Refactor ThreadedRegexVM state handling
...
Remove ExecState to store threads inside the ThreadedRegexVM so that
memory buffers can be reused between executions. Extract an ExecConfig
struct with all the data thats execution specific to avoid storing
it needlessly inside the ThreadedRegexVM.
2018-04-25 21:19:04 +10:00
Delapouite
746b9acb96
Change client default name: "unnamed0" → "client0"
2018-04-23 11:42:11 +02:00
Stephen Hassard
eca53db2bf
remove dragonflybsd specific logic since pkg-config works perfectly fine now
2018-04-22 09:12:45 -07:00
Maxime Coste
0b773ac26c
Complete word from the current buffer in regex_prompt
...
This allows to use Kakoune fuzzy matching to get the words we
are looking for.
2018-04-19 07:58:42 +10:00
Maxime Coste
f545ff7727
Move get_word_db to word_db.cc
2018-04-19 07:58:42 +10:00
Maxime Coste
e207bd30d4
Extract a for_n_best algorithm from completion function
...
Provide the heap based n-best algorithm through a nice interface.
2018-04-19 07:58:42 +10:00
Maxime Coste
c2759ac526
Fix handling of local client quitting during its creation
...
If the local client was quitted during its creation (using -e quit
for example), we could have been accessing a null pointer afterwards.
Make the rest of the code aware that local_client might be null.
2018-04-19 07:56:37 +10:00
Maxime Coste
0f38be544c
Makefile: use git-describe to get the version string
...
That means we can just tag releases and the version will be taken
from the tag to generate the tarball.
2018-04-14 13:05:59 +10:00
Maxime Coste
7f6a6ab1d3
Update startup message and include released version in it
...
Having released version information in that message will be useful
to allow user to know which breaking changes apply to them.
2018-04-14 13:04:45 +10:00
Maxime Coste
5fa19f4d7f
NCursesUI: Add support for shifted function keys
...
Shifted function keys are not well standardized around terminals,
Shift F(N) usually returns F(X) + N, with X=12 on xterm, X=10 on
rxvt-unicode... Default to X=12 and make it configuable through
the ncurses_shift_function_key ui_option.
This fixes what #1898 tried to.
2018-04-11 20:39:57 +10:00
Tim Allen
50e422659b
Add support for the shift modifier.
...
Because keyboard layouts vary, the shift-modifier `<s-…>` is only supported
for special keys (like `<up>` and `<home>`) and for ASCII lowercase where
we assume the shift-modifier just produces the matching uppercase character.
Even that's not universally true, since in Turkish `i` and `I` are not an
uppercase/lowercase pair, but Kakoune's default keyboard mappings already
assume en-US mappings for mnemonic purposes.
Mappings of the form `<s-x>` are normalized to `<X>` when `x` is an ASCII
character. `<backtab>` is removed, since we can now say `<s-tab>`.
2018-04-11 15:15:45 +10:00
Maxime Coste
d846400279
Redraw window when the face definition changed
...
Hash the current face state and store that hash to check for changes.
2018-04-10 20:35:23 +10:00
Maxime Coste
9c82f6586c
FaceRegistry: Support referencing a named face from a parent scope
2018-04-10 19:57:16 +10:00
Maxime Coste
a2978bff25
Makefile: formatting fix
2018-04-10 19:02:32 +10:00
Maxime Coste
d571c207e6
Make version available through $kak_version and debug info
2018-04-09 17:06:02 +10:00
Maxime Coste
fc86acd9f0
Makefile: add a dist target to generate a tarball
2018-04-09 16:57:15 +10:00
Maxime Coste
57baad4afd
Make FaceRegistry scoped
...
set-face now takes a scope argument, and faces can be overridden on
a buffer or window basis.
colorscheme apply on global scope, which should be good enough for
now.
Fixes #1411
2018-04-07 16:27:50 +10:00
Maxime Coste
6adb28ec12
Ignore current buffer when completing the :buffer command
...
Closes #1901
Fixes #1782
2018-04-07 16:27:44 +10:00
Maxime Coste
6f58c278bf
Merge remote-tracking branch 'Delapouite/no-such'
2018-04-07 12:33:15 +10:00
Maxime Coste
23853f499e
Add some safety static_asserts to remote read/write functions
2018-04-07 12:32:31 +10:00
Delapouite
cb02186c77
Make error messages more consistent
2018-04-06 16:56:53 +02:00
Maxime Coste
3c03129c46
Make compute_display_setup methods const
2018-04-06 09:16:59 +10:00
Maxime Coste
21603983c5
Add new buffers at the back of the buffer list
...
This will be reverted if we discover why we were doing things the
over way around.
Fixes #1881
2018-04-05 10:31:41 +10:00
Maxime Coste
f018a29b58
Merge remote-tracking branch 'Delapouite/declare-option'
2018-04-05 09:23:33 +10:00
Maxime Coste
71a1893a5e
Fix some trailing spaces and a tab that sneaked into the code base
2018-04-05 08:52:33 +10:00
Maxime Coste
2f799b1acf
NCurses: Tolerate failure to open /dev/tty and to ioctl for resize
...
Not sure what to do when that happens, but asserting and quitting
is not necessarily the best option, try to tolerate it.
Fixes #1972
2018-04-04 14:01:24 +10:00
Maxime Coste
6ee60ff9d7
Prompt: add <a-!> to expand the typed expansions in current line
...
Fixes #1952
2018-04-04 11:00:25 +10:00
Maxime Coste
ff073bcce1
Merge remote-tracking branch 'lenormf/fix-ncurses'
2018-04-01 14:42:44 +11:00
Maxime Coste
ea66465144
Restore previous status line after notifying wait for shell
...
Fixes prompt getting erased by the wait for shell message, and
having to manually trigger a redraw to see it again.
2018-04-01 10:08:54 +11:00
Frank LENORMAND
e06d048d2f
src: Make code more readable, assert function calls that shouldn't fail
...
Should help clarify what the issue is in #1972 .
2018-03-31 15:00:19 +03:00
Maxime Coste
0baf562c93
Support full redraws during shell execution and handle resize there
...
Fixes #1973
2018-03-30 09:58:18 +11:00
Maxime Coste
f6f2dafaf7
Make set -add replace existing value when applied to a map option
2018-03-30 09:26:39 +11:00
Delapouite
7f3a308b60
Add status message when commiting an undo group in insert mode
2018-03-29 22:54:03 +02:00
Maxime Coste
fab3dc642a
Merge remote-tracking branch 'Delapouite/on-key'
2018-03-28 21:41:17 +11:00
Maxime Coste
ebc700ee17
Fix uninitialized m_empty_text StringView in LineEditor
2018-03-28 20:48:50 +11:00
Delapouite
1b7b3fea09
Fix typo in on-key command description
2018-03-28 07:33:43 +02:00
Delapouite
fc3f0f40b7
Give more hints in "option not found" error.
2018-03-27 19:14:41 +02:00
Maxime Coste
1f6c2b87ff
Support count in <a-s> to split on groups of n lines
...
Fixes #1966
2018-03-27 22:33:58 +11:00
Maxime Coste
e8093a12a0
Simplify command debug code
2018-03-27 08:25:47 +11:00
Maxime Coste
0a833371ab
Prompt: Do not call callback in on_enabled
...
Schedule it for later, when we get "idle". It currently can lead to
crashed because after the callback, the current mode might be different,
leading to a crash when doing the ModeChange hook call.
2018-03-27 07:40:44 +11:00
Maxime Coste
3d3a37a80c
Fix 'O' not putting the cursor on the correct line
2018-03-27 07:28:25 +11:00
Maxime Coste
253790be51
Formatting fix
2018-03-26 19:50:51 +11:00
Maxime Coste
5ba27c18a4
Fix operator priority order error
2018-03-26 19:19:47 +11:00
Maxime Coste
59c883d02f
Avoid visiting the same directory multiple times in insert filename completion
2018-03-25 20:28:26 +11:00
Maxime Coste
6d3fe30bf6
Allow explicit filename completion with empty prefix
2018-03-25 19:03:54 +11:00
Maxime Coste
a6b1d142fa
Cleanup client name validation code
2018-03-25 16:53:27 +11:00
Maxime Coste
49c52b025f
Remove contains_that and use any_of to be closer to the c++ stdlib
2018-03-25 16:47:19 +11:00
Maxime Coste
435b5b7ff9
Unify code that validates identifiers in Kakoune
...
Session/Client/User modes names are now requiered to be "identifiers"
they must be in [a-zA-Z0-9_-]. Option names are the same except they
do not allow '-' as they need to be made available through the env vars
and '-' is not supported there.
Fixes #1946
2018-03-25 16:35:33 +11:00
Maxime Coste
beb2cef7f9
Document rotate selection breaking change in startup message
2018-03-25 11:39:26 +11:00
Maxime Coste
ec7f3738ee
Move rotate selection and rotate selection contents to ) and <a-)>
...
Backward rotation are supported with (.
Fixes #1210
2018-03-25 11:39:26 +11:00
Maxime Coste
683ce8e83b
Use 1 and -1 for Forward/Backward Direction to simplify code
2018-03-25 11:25:55 +11:00
Maxime Coste
59e9108812
indent selector: When line is empty, find indent from surrounding lines
...
Look for the first non empty line preceeding the current line, or
if not found, the first non empty line following it.
Fixes #1904
2018-03-25 10:25:56 +11:00
Maxime Coste
81f605709c
Remove parse_filename overload and use a default parameter
2018-03-25 07:55:39 +11:00
Maxime Coste
a732037b53
Support %
in path
option to mean current buffer directory
...
In the end, % is not that painful to work with as its only set seldomly,
and we usually dont need to use expansion at the same time. Moreover, it
just requires a single \ to be escaped.
Fixes #1562
2018-03-23 08:22:34 +11:00
Maxime Coste
db7b43acd5
Restore client name after converting to client
...
When Kakoune forked the sever to background, the newly converted
to client process (the original client/server process) was not
preserving its previous client name.
2018-03-23 07:36:18 +11:00
Maxime Coste
1cdeace128
Merge remote-tracking branch 'Delapouite/doc-commands'
2018-03-21 06:42:31 +11:00
Maxime Coste
5c1a5c6d15
Revert "Throw when trying to remove a child highlighter that does not exists"
...
This reverts commit 56237aa8f8
.
Throwing seems more correct, but it breaks lots of existing scripts.
reverting for now until we have a nice solution.
2018-03-20 20:11:15 +11:00
Delapouite
00cb49438a
Docs: add missing [<switches>] in commands signatures
2018-03-20 09:13:09 +01:00
Maxime Coste
bec849ae14
Tolerate empty filenames in real_path
2018-03-20 05:56:20 +11:00
Maxime Coste
f7f84b7402
NCursesUI: Rework menu_show to shrink menu height when needed
...
Closes #1886
2018-03-20 05:54:19 +11:00
Maxime Coste
826977eb1b
Fix remove of highlighters with trailing / in their name
...
Fixes #1914
2018-03-20 05:35:37 +11:00
Maxime Coste
56237aa8f8
Throw when trying to remove a child highlighter that does not exists
2018-03-20 05:35:15 +11:00
Maxime Coste
b27d4afa8d
Regex: Only allow SyntaxCharacter and - to be escaped in a character class
...
Letting any character to be escaped is error prone as it looks like
\l could mean [:lower:] (as it used to with boost) when it only means
literal l.
Fix the haskell.kak file as well.
Fixes #1945
2018-03-20 04:57:47 +11:00
Maxime Coste
6e695e37be
Fix real_path again
2018-03-19 20:49:05 +11:00
Maxime Coste
6d8747b886
Fix introduced bug in real_path
2018-03-19 06:28:06 +11:00
Maxime Coste
9518f279fb
Tweak option documentation helper to support -add
...
Fixes #1939
2018-03-19 03:04:50 +11:00
Maxime Coste
8a7e844207
NCursesUI: refactor info_show code
...
Show MenuDoc info on the left of the menu if necessary. Cleanup the
code.
2018-03-19 01:23:32 +11:00
Maxime Coste
cf37623f1a
Refactor read_fd '\r' removal logic
2018-03-18 23:43:18 +11:00
Maxime Coste
ac91a79b12
Fix implementation of real_path to handle non-existing directories in /
...
Fixes #1937
2018-03-18 23:23:00 +11:00
Maxime Coste
7ba4ef897b
Fix crash on expanding command line strings
2018-03-18 04:58:15 +11:00
Maxime Coste
0a2807e652
RangesHighlighter: a range that goes up to buffer end is not valid
2018-03-16 23:25:37 +11:00
Maxime Coste
08df409a53
RankedMatch: Do not compare word boundary match count on single word matches
...
As the computation of word boundary matches is separate from the
actual subsequence matching, we sometimes have candidate that match
as a single word while still having multiple word boundary matches.
For example, with query "expresins", candidate "expressionism's"
will match as single word ("expressins" is a subsequence of
"expressionism"), and will have two word boundaries match (it does
match the last "s", which is considered as a separate word).
This should not be taken into account when compared against
candidate "expresions", which should be considered a better
match.
Fixes #1925
2018-03-15 23:20:03 +11:00
Maxime Coste
6f2b093eec
NCursesUI: Show full menu rather than triming to respect anchor
2018-03-13 15:18:06 +11:00
Maxime Coste
a480e566dc
ranges: Add transform overload taking directly a pointer to member
...
This overload will forward to the general transform implementation
using std::mem_fn to generate a callable.
2018-03-13 14:24:03 +11:00
Maxime Coste
c82bf31378
NCursesUI: Use accumulate algorithm to gather the longest element in menu
2018-03-13 14:14:16 +11:00
Maxime Coste
bfaf52f8c0
Do not jump to buffer start on g.
with no previous modifications
2018-03-13 14:00:57 +11:00
Delapouite
d5d23834f6
Handle hyphens in user-mode names
...
Fix #1921
2018-03-11 14:58:53 +01:00
Maxime Coste
e66073bc94
Detect infinit recursion in reference highlighting
...
Reference highlighters allow for potential mutual recursion between
highlighters. This is usually fine, but if the recursion happens on
the same buffer range, it means we will recurse infinitely.
Fixes #1920
2018-03-11 11:44:10 +11:00
Maxime Coste
4584ecac77
Move WORD text object to <a-w>
...
It improves consistency and it looked like there was support for that
change on github.
Fixes #1861
2018-03-10 00:25:19 +11:00
Maxime Coste
f801d0064a
Merge remote-tracking branch 'Delapouite/hls'
2018-03-10 00:07:03 +11:00
Maxime Coste
9125b01fa8
Detect no-op replaces and do not act on them
...
This avoids recording no-op undo groups.
2018-03-09 23:07:05 +11:00
Delapouite
abc2d28570
Docs: extend explanations about line_flags, ranges and replace-ranges
2018-03-06 12:15:55 +01:00
Maxime Coste
9c85d9b389
Support changing autoreload option directly from the reload message
...
Pressing Y or N will set the buffer (or window, if it is set at that
scope) autoreload option to the corresponding value, avoiding infinite
loops where a file getting constantly modified prevents the user from
using Kakoune.
2018-03-05 11:17:57 +11:00
Maxime Coste
07113e7ee5
Add a GlobalSetOption hook
2018-03-05 10:39:14 +11:00
Maxime Coste
642b711d94
Merge remote-tracking branch 'Delapouite/scratch'
2018-03-05 07:10:57 +11: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
6c4faf2050
Merge remote-tracking branch 'fsub/unused-lambda-capture'
2018-03-05 00:39:56 +11:00
Maxime Coste
a2fc89a6ec
Remove SelectionList::update_timestamp()
...
This single line member function was only used once, inline it
directly.
2018-03-04 10:35:24 +11:00
Maxime Coste
2fd42fe5fc
Insert: Do not move end of line on open line (o/O)
...
Change the logic of open line commands so that if a selection lies
on the end of line character of the line from which we open a new
line, that selection does not move.
If we have two clients, A and B, with B's cursor on the eol character
of line L, and A hits `o` while on line L, B's cursor should stay
on the same (logical) line. Previous behaviour would make B's cursor
jump on the newly inserted line.
2018-03-04 10:32:21 +11:00
fsub
44d381ce79
Remove unused lambda capture
2018-03-03 17:57:51 +01:00
Delapouite
c4eb4438d2
Remove <scope> from user-modes commands
2018-03-02 09:28:27 +01:00
Maxime Coste
7a54c0edfe
Update status message with new breaking changes
2018-03-01 15:36:25 +11:00
Maxime Coste
28716ec058
Change x behaviour to select full line first even if on EOL
...
x will always first select current line fully, and only then select
next line.
2018-03-01 15:34:31 +11:00
Maxime Coste
f907e6cc46
Reintroduce complex selection merging behaviour
...
Selection merging is necessary if we want X to work nicely when we are
on EOL (jumping to next line is as nice as it could be, and we are much
more often on EOL nowadays).
2018-03-01 15:21:55 +11:00
Maxime Coste
7dfd439263
Merge remote-tracking branch 'Delapouite/user-mode-lock'
2018-03-01 14:04:52 +11:00
Maxime Coste
2193947b71
InsertCompleter: refactor line completer implementation
2018-02-28 15:40:42 +11:00
Maxime Coste
4e6b24eea2
Merge remote-tracking branch 'Delapouite/line_complete'
2018-02-28 15:32:31 +11:00
Maxime Coste
44a5082aaf
Commands: Refactor generate_switches_doc
2018-02-28 15:32:11 +11:00
Maxime Coste
a6fd70c456
Ranges: Fix copiability of some range view iterators
...
Some iterators were refering to to their view with a const ref, this
was making them non-copiable. Change those const ref into const pointers
in order to fix that.
2018-02-28 15:16:49 +11:00
Maxime Coste
edee85a847
Merge remote-tracking branch 'aver-d/option_display'
2018-02-28 15:09:26 +11:00
Maxime Coste
d498a059c4
Prompt: update completions after inserting register or raw ke
2018-02-28 15:05:38 +11:00
Maxime Coste
bebc81ebe1
RefPtr: use inconditional noexcept specification on destructor
...
The conditional specification could end up being recursive,
assume destructors must be (as is the C++ default) noexcept.
2018-02-28 15:04:00 +11:00
Delapouite
a6a1c34288
Add -lock switch to enter-user-mode command
2018-02-27 19:55:00 +01:00
Delapouite
0568836943
Add support for line completion in all buffers
...
- via completers option with line=all vs line=buffer
- via <c-x> L mapping
2018-02-27 09:48:49 +01:00
Delapouite
98fcf8a497
Add [scratch] indicator in context info
2018-02-27 08:22:46 +01:00
Maxime Coste
b4dc16010d
Fix out of bound read in ParameterParser::get_switch
...
The empty string case was not correctly handled.
Fixes #1883
2018-02-26 15:20:19 +11:00
Maxime Coste
18f0902824
Merge remote-tracking branch 'Delapouite/sels'
2018-02-26 11:34:05 +11:00
aver-d
f43635c4df
Ease reading of command-line options
...
This change displays command-line options in grid format. Each
parameter is indented with two spaces and then padded to maintain
vertical alignment of each description.
I think the visual spacing makes the options much easier to
read. This is particularly important for people new to Kakoune who
use `-help` as a way to become familiar with the program.
2018-02-25 01:46:50 +00:00
Maxime Coste
6453ce7394
RefPtr: Add some more noexcept specifications
2018-02-25 00:20:10 +11:00
Maxime Coste
67424aae1e
Remove avoidance of end of lines
...
Various places in Kakoune code used to modify selections so that
cursors would not lie on an end of line. Remove those to increase
Kakoune's consistency and simplicity.
Now that end of lines are highlighted separately, they should not
be handled specially in most commands.
2018-02-25 00:05:05 +11:00
Maxime Coste
171e787063
Update startup message to notify about h/l change
2018-02-24 23:16:39 +11:00
Maxime Coste
2a60af25dc
Allow l/h to cross line boundaries
...
l and h are now respectively "next character" and "previous character"
2018-02-24 23:16:39 +11:00
Maxime Coste
6a6e71dc0f
Highlight cursors differently when they lie on an end of line
...
When on an end of line, certain behaviours can be surprising, for
example delete will join the following line (which makes sense, and
is consistent, but hard to predict if we do not know the cursor is
on and end of line).
As Kakoune is moving more and more towards treating end of lines
as any other character, making it clear when the cursor lies on
them seems like a good way to reduce surprise.
2018-02-24 21:32:01 +11:00
Maxime Coste
a0de41d165
goto last change: do not try to avoid end of lines
...
Avoiding end of line is a behaviour we avoid (pun intended) more and more
in Kakoune source code, now that end of lines are regularly selected, it
makes no sense to just to next line when last modification lies on an EOL
(and it probably did not make much sense back when that code was written).
2018-02-24 21:09:09 +11:00
Maxime Coste
a25d6171d3
Fix crash in select_sentence when not selection to end
...
select_sentence could create a buffer iterator preceeding the
buffer begin, leading to a crash trying to read line -1.
2018-02-24 20:22:23 +11:00
Maxime Coste
efce8e0ce6
Revert "Do not save last command/pipe/regex in register when history is disabled"
...
This reverts commit 55621fb4cc
.
This should not be necessary as :exec/eval already save those registers
and reset them by default, and it breaks the ability to use those
registers during an eval/exec (as the commands behave differently)
2018-02-24 19:58:40 +11:00
Maxime Coste
4d11bb20c3
Always collapse jumps in exec/eval, remove -collapse-jumps switch
...
There does not seem to be any reasonable use cases of not collapsing
jumps when the input is not comming from the user. Always collapse
them.
It could make sense to move jump collapsing out of context_wrap as
in general any action not comming directly from the user should
collapse them, at the moment a comment or mapping will not collapse
jumps, which is unfortunate.
2018-02-24 19:02:15 +11:00
Maxime Coste
933ac4d3d5
Regex: Improve comments and constify some variables
...
Reword various comments to make some tricky parts of the regex
engine easier to understand.
2018-02-24 17:40:08 +11:00
Maxime Coste
af21d4ca1e
regex: track CompiledRegex::StartDesc in the Regex memory domain
2018-02-24 16:29:24 +11:00
Delapouite
e568231fe3
Display number of combined/saved/restored selections in status
2018-02-23 22:58:44 +01:00
Maxime Coste
e9c18ebff6
Merge remote-tracking branch 'lenormf/fix-makefile'
2018-02-23 08:10:11 +11:00
aver-d
da009b0ef5
Fix typos in C++ string literals
...
informations, dont, incrementaly, alignement
2018-02-22 20:28:01 +00:00
Frank LENORMAND
01c1b4fd69
src makefile: Fix the --static
flag passed to pkg-config
2018-02-22 15:56:14 +03:00
Maxime Coste
99d1fee44c
Merge remote-tracking branch 'Delapouite/trim'
2018-02-22 22:06:27 +11:00
Maxime Coste
13ac0e367d
NCursesUI: Rework menu placement to fix missing menu on small window
2018-02-22 22:04:04 +11:00
Maxime Coste
35d68d2f82
Fix crash when iterating through options on window creation
...
Window::on_option_changed calls hooks, which can do anything
including adding/removing options in the various option managers
Fixes #1863
2018-02-21 22:47:41 +11:00
Maxime Coste
69a0ad09b4
Rewrite OptionManager::flatten_options to use ranges
...
Avoid accumulating the flattened options into a vector, generate
a lazy range that will give the proper list.
2018-02-20 23:32:51 +11:00
Maxime Coste
6d111d4bd7
Re-introduce aliases in command name completion
...
Aliases are considered again in command name completion, but only
if they are more than 3 charactes long. This should prevent cluttering
with aliases while still letting long ones being completed.
2018-02-20 23:32:31 +11:00
Maxime Coste
6239357e99
ranges: Support temporary parameters passed to concatenated
2018-02-20 21:55:06 +11:00
Maxime Coste
fec34c3748
Json: Fix buffer overflow when reading json finishing with { or [
...
Fixes #1860
2018-02-20 07:42:10 +11:00
Maxime Coste
2c0eba9d95
user-modes: Fix incorrect use of keymap mode
...
The keymap mode was passed to on_next_key_with_autoinfo, which
means the mapping was applied directly by the InputHandler.
That led to the first key being interpretted as a mapping, then
all following keys being executed normally, as if typed in the
parent mode of the user mapping.
2018-02-19 21:03:29 +11:00
Maxime Coste
76f5fb937c
Fix bug in command parsing post refactoring
...
Fixes #1857
2018-02-19 08:29:04 +11:00
Maxime Coste
fc60e29870
Small code tweaks regarding user modes
2018-02-18 20:24:34 +11:00
Maxime Coste
f88195d2d9
Merge remote-tracking branch 'Delapouite/user-mode'
2018-02-18 20:20:35 +11:00
Maxime Coste
eb2e44e0eb
Makefile: use PKG_CONFIG to get static compilation flags as well
2018-02-18 15:43:28 +11:00
Maxime Coste
536fa29ed5
CommandManager: unescape % while parsing the string
2018-02-18 14:56:52 +11:00
Maxime Coste
dc30b0e6d6
Do not support general commands in filter mode
2018-02-18 14:54:21 +11:00
Maxime Coste
84d70f8aeb
normal mode: Fail if ':' is pressed with no CommandManager
2018-02-18 14:53:37 +11:00
Maxime Coste
5924694bda
ShellManager: init from a static list of env vars
...
No need to go through a static list and then copy them one by
one in a vector.
2018-02-18 14:52:29 +11:00
Maxime Coste
d9cddf41f2
BufferManager: Support missing ClientManager
2018-02-18 14:50:24 +11:00
Maxime Coste
10c6c59a26
Buffer: avoid expensive option flattening in on_registred with NoHooks
2018-02-18 14:48:24 +11:00
Maxime Coste
74fd602569
'*' uses escaping of meta characters instead of \Q and \E
...
Fixes #1825
2018-02-17 20:36:07 +11:00
Maxime Coste
bde1f5349d
CommandManager: refactor parsing of commands to iterate through tokens
...
Avoid storing a big vector of tokens, read them one by one, and
store only the current command.
2018-02-15 23:24:19 +11:00
Delapouite
fccfc76e89
Add trim_selections primitive
2018-02-13 14:35:10 +01:00
Delapouite
6b447a0ecb
Add declare-user-mode / enter-user-mode commands
2018-02-12 14:19:58 +01:00
Maxime Coste
f3c19ba7fa
Prevent whitespaces in command names
...
Fixes #1843
2018-02-11 20:35:21 +11:00
Maxime Coste
a822bcd6e0
Do not specify utf8 InvalidPolicy when we are using the default value
...
It was specified only in two call sites, and everywhere now only uses
the pass policy, which is the default.
2018-02-11 17:39:19 +11:00
Maxime Coste
66fe2d84da
Refuse modification of ReadOnly buffers and make Debug buffer readonly
...
The debug buffer is a bit special as lots of events might mutate it,
permitting it to be modified leads to some buggy behaviour:
For example, `pipe` uses a ForwardChangeTracker to track buffer
changes, but when applied on a debug buffer with the profile flag
on, each shell execution will trigger an additional modification
of the buffer while applying the changes, leading to an assertion
failing as changes might not be happening in a forward way anymore.
Trying to modify a debug buffer will now raise an error immediatly.
2018-02-11 13:06:19 +11:00
Maxime Coste
3584e00d19
Regex: Use a template argument instead of a regular one for "forward"
...
forward (which controls if we are compling for forward or backward
matching) is always statically known, and compilation will first
compile forward, then backward (if needed), so by having separate
compiled function we get rid of runtime branches.
2018-02-09 22:45:53 +11:00
Maxime Coste
aa9f7753e8
Regex: minor code cleanup
2018-02-09 22:19:56 +11:00
Maxime Coste
cb16e52179
FaceRegistry: pass face names as StringViews instead of const String&
2018-02-09 22:08:29 +11:00
Maxime Coste
e46a5697e5
Add a limit to the size of selection with which we will try to diff on pipe
...
Limit to 100K of data for now, as we diff at the byte level.
2018-02-09 21:47:18 +11:00
Maxime Coste
bbf62d1779
diff: try to improve code readability
2018-02-09 21:31:10 +11:00
Maxime Coste
b7a3d80bde
CommandManager: Use byte rather than columns for token positions
...
Not only are display columns rarely used to give error positions,
but they make the parsing much slower as for each token we need to
compute the column in the line.
2018-02-09 20:30:33 +11:00
Maxime Coste
e2c1d44a7f
Fix parsing of percent tokens with unicode separators
2018-02-06 20:29:08 +11:00
Maxime Coste
4a96926c4b
Handle errors while reloading buffer gracefully
...
Fixes #1831
2018-02-05 20:27:32 +11:00