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
6373338c50
Replace uses of UnorderedMap with HashMap
2017-03-07 01:03:26 +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
Maxime Coste
d470bd2cc9
Make numeric registers setable
...
Fixes #1214
2017-02-14 00:02:01 +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
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
4916ea1766
Fix capture group handling
...
Fixes #1129
2017-01-13 00:17:31 +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
Kevin Ballard
b0c2444466
Change the message when entering insert mode while readonly
2016-12-27 12:23:15 -08: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
71cc9f1011
Fix reentrancy in InputeModes::Normal::on_key
2016-12-15 09:46:10 +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
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
d9679db9b6
Fix scrolling generating invalid buffer coordinates
2016-12-07 00:08:41 +00:00
Maxime Coste
b3ac733f33
Fix buffer reload info box not being shown anymore
2016-12-05 23:40:23 +00:00
Maxime Coste
9a986b8d47
Hide eventual info box when returning to normal mode
2016-12-04 23:27:04 +00:00
Maxime Coste
2fd1414b05
Clean up includes of user_interface.hh
2016-11-29 19:53:11 +00:00
Maxime Coste
54d540021c
Add support for mouse in insert mode
...
Fixes #940
2016-11-28 13:15:12 +00:00
Maxime Coste
b3ba769220
Propagate the hooks disabled state through prompt, menu, and command execution
...
Maintain it as well during buffer creation even if the hooks are not executed
in client context.
Fixes #818
2016-11-14 19:39:35 +00:00
Maxime Coste
6347787cf2
Propagate NormalParams to user mappings
...
Closes #896
2016-11-02 23:12:57 +00:00
Maxime Coste
dc18963875
Make o/O open multiple lines when a count is given
...
Fixes #873
2016-10-24 20:45:12 +01:00
Maxime Coste
d2aa292c17
Change handling of OpenLineAbove to fix first line edge cases
...
Fixes #877
2016-10-23 19:48:16 +01:00
Maxime Coste
e8dcdb6072
Support Ctrl + mouse dragging to add a new selection
...
Fixes #838
2016-10-13 22:59:02 +01:00
Maxime Coste
9e12ac327b
Refactor hook disabling in normal mode
...
Normal mode takes care of keeping hooks disabled until nested modes
finishes.
Requiered form #818 , not sufficient yet.
2016-10-03 20:02:37 +01:00
Maxime Coste
35559b65dd
Support codepoints of variable width
...
Add a ColumnCount type and use it in place of CharCount whenever
more appropriate, take column size of codepoints into account for
vertical movements and docstring wrapping.
Fixes #811
2016-10-01 13:45:00 +01:00
Maxime Coste
e3c4bddd3b
Make hook disabling work for all hooks, not only user hooks
...
Fixes #823
2016-09-26 23:43:05 +01:00
Maxime Coste
c152fbe3b6
Make idle timeout and filesystem check timeout configurable
2016-09-18 13:47:22 +01:00
Maxime Coste
911a32a992
Only drop blank prefixed history entries in command/shell prompts
...
For regex prompts we actually want to save them, as a leading space
is significant
Fixes #767
2016-08-22 20:37:14 +01:00
Maxime Coste
ac81d0f39c
Cleanup history_push function
2016-08-22 20:37:14 +01:00
Maxime Coste
d28e503150
Use the same logic for mouse wheel and (half) page up/down
...
Fixes #749
2016-07-28 09:51:49 +01:00
Maxime Coste
439f168928
Use named keys for Return and Tab instead of <c-m> and <c-i>
...
Fixes #722
2016-07-05 20:08:13 +01:00
Maxime Coste
f2ba54b2d4
Keep prompt displayed on <c-r> and <c-v> in prompt mode
2016-06-18 11:07:18 +01:00
Maxime Coste
34c8e6a9cf
Clear up info/menus and eventual prompts when reseting to normal mode
...
Fixes #697
2016-06-16 19:35:43 +01:00
Maxime Coste
7280525672
Dont overwrite registers with empty macros
...
Fixes #674
2016-05-20 09:44:05 +01:00
Maxime Coste
199ccb4021
Add a -password switch to :prompt to allow for more secure password entering
...
Fixes #660
2016-04-19 09:51:09 +01:00
Maxime Coste
f877c388fe
Fix mistake in input_handler.cc
2016-04-13 23:50:49 +01:00
Maxime Coste
7833b53272
Fix support for macro being recorded and replay during :exec (non draft)
2016-04-13 21:21:49 +01:00
Maxime Coste
d1732673ce
Document the null register
2016-03-31 09:21:09 +01:00
Maxime Coste
b0d72ebce0
Support getting back to original prefix with tab/shift-tab in prompts
...
Fixes #124
2016-03-24 13:39:27 +00:00
Maxime Coste
5bf9243006
User mappings and :exec are always executed in normal mode
...
Fix #551
2016-03-22 22:54:29 +00:00
Maxime Coste
5fe2872904
Reset line editor display pos when the text is reset
2016-03-15 13:55:01 +00:00
Maxime Coste
e82c3410a5
Redisplay prompt on Prompt mode enabled
...
Fixes #603
2016-03-15 13:51:47 +00:00
Maxime Coste
428b18c0c1
Formatting fix
2016-03-11 00:09:13 +00:00
Maxime Coste
99ca7ead37
Only select a completion when the menu was visible (or its the only one)
2016-03-09 23:24:20 +00:00
Maxime Coste
52525a156f
Remove complete_prefix option and behaviour
...
Now that we use subsequence based completion almost everywhere,
completing the common prefix does not make sense anymore.
2016-03-07 20:17:41 +00:00
Maxime Coste
3987463e75
Remove direct access to ui, go through client
...
Client can now update menu/info positions when the window move
around.
2016-02-27 17:23:13 +00:00
Maxime Coste
94cbd5a837
More string usage cleanup
2016-02-05 09:13:07 +00:00
Maxime Coste
515231e824
Fix input mode keep alive handling, use a refcount for input modes
...
Fixes #528
2015-12-12 23:51:51 +00:00
Maxime Coste
1745344869
Run InsertIdle after reseting completer to permit InsertIdle to display an info box
2015-11-30 13:54:59 +00:00
Maxime Coste
0b57103c72
Remind user hooks disable when replaying last insert
...
Fixes #495
2015-11-26 23:02:59 +00:00
Maxime Coste
3b5b781c5d
Reject non ascii register names
...
Fixes #493
2015-11-25 20:12:11 +00:00
Maxime Coste
e45b0c3ffc
Add StatusLine{Mode,Info,Value} built in faces
...
Fixes #491
2015-11-24 13:53:15 +00:00
Maxime Coste
7cf7f121e8
Fix onkey autoinfo
2015-11-21 17:21:21 +00:00
Maxime Coste
9656f088e7
Change autoinfo option to be a flags option, document flags options
...
Support the value1|value2|value3 syntax for flag options.
2015-11-18 23:47:28 +00:00
Maxime Coste
111732005a
Support <c-v> to insert raw value in insert/prompt mode
2015-11-13 13:52:54 +00:00
Maxime Coste
217dd6a1de
Disable history when executing maps
...
Fixes #476
2015-11-10 21:24:47 +00:00
Maxime Coste
a0bcdd83df
Document default registers
2015-11-10 20:39:17 +00:00
Maxime Coste
6e08716899
Refactor Normal input mode on_key method
2015-11-09 21:30:07 +00:00
Maxime Coste
4b7b04bf59
Fix mouse scrolling up stopping at line 2
...
Fixes #448
2015-10-28 00:01:25 +00:00
Maxime Coste
572cf9d6b2
Fix file change detection not working in certain cases
...
Files opened from the command line where not handled correctly.
2015-10-13 19:31:24 +01:00
Maxime Coste
2d7e99da98
Tweak file change checking timeout handling
2015-10-10 14:18:43 +01:00
Maxime Coste
50f5140cbd
When displaying a prompt content with line break char, replace them with their unicode control picture
2015-10-09 13:55:55 +01:00
Maxime Coste
c54e6738b9
Use DisplayLine for menu choices
2015-10-05 01:25:23 +01:00
Maxime Coste
22f3881cad
Fix prompt history handling when pressing the down key
2015-09-20 17:02:37 +01:00
Maxime Coste
db8c12fd2a
Be tolerant to modifiers in <c-x> bindings
...
<c-x><c-f> should be accepted, as it is cumbersome to unpress
control before hitting f in that case.
2015-09-19 11:55:55 +01:00
Maxime Coste
b512f3220f
Detect normal mode count overflow
2015-08-31 20:34:45 +01:00
Maxime Coste
0755366cb1
Rework resize handling
...
Fixes #383
2015-08-23 15:18:18 +01:00
Maxime Coste
689494fb2f
Fix reentrency in Normal::handle_key
2015-08-20 19:16:14 +01:00
Maxime Coste
baf0203b9d
Default register is not handled by the Normal input mode.
...
Normal input mode will just pass 0 as the reg if it was not specified
by the user, its yank/paste functions that should determine 0 means
use '"' register.
2015-08-19 13:41:16 +01:00
Maxime Coste
3f493fa186
Rename Disableable to more general NestedBool
...
A NestedBool can be set multiple times, and will be considered false
only when unset the same number.
2015-08-18 23:17:56 +01:00
Maxime Coste
f2580a366d
Cleanup key to codepoint conversion
...
Fixes #378
Fixes #365
2015-08-18 00:19:14 +01:00
Maxime Coste
043ca99983
Cleanup mouse handling a little
2015-08-16 14:06:07 +01:00
Maxime Coste
92d3178305
Clamp m_anchor in mouse handler, nothing garantees that it is still valid
...
Fixes #350
2015-08-14 13:12:44 +01:00
Maxime Coste
7086135fa6
Display auto info on register insertion/explicit insert completion
2015-08-11 20:36:07 +01:00
Maxime Coste
8d9c402f52
Handle registers insert/explicit completion with a nested on_next_key mode
2015-08-11 13:55:56 +01:00
Maxime Coste
9d50dd3886
Use a struct rather than a std::pair for InputHandler::Insertion
2015-08-08 22:46:11 +01:00
Maxime Coste
1af82e2e24
Tweak regex constructor calls
2015-07-25 11:15:03 +01:00
Maxime Coste
883a14e853
Do not allow exiting insert mode while running InsertEnd hook.
...
Fixes #311
2015-07-08 13:53:19 +01:00
xificurC
fbb216d2ed
commands starting with horizontal whitespace don't go into the history
2015-06-30 16:06:49 +02:00
Maxime Coste
3fb783f7f9
Add <a-;> in insert mode to execute a single normal mode command
2015-06-12 13:56:11 +01:00
Maxime Coste
f39b450e94
on_enabled might change mode, so assert Normal mode before
2015-06-04 13:56:08 +01:00
Maxime Coste
f0886ad323
Get rid of the mode trash, delete mode directly when leaving on_key
2015-06-03 20:03:06 +01:00
Maxime Coste
964b0e9a6e
InputHandler now uses a stack for active modes
...
instead of having a single mode enabled, modes can be pushed/poped,
with the top of the stack being the active mode.
2015-06-02 20:56:57 +01:00
Maxime Coste
8f6fc6a0f3
Port even more code to use format function
2015-06-01 21:15:59 +01:00
Maxime Coste
bbefde9379
Move Colors enum class as NamedColor enum inside Color struct
2015-04-25 10:47:39 +01:00
Maxime Coste
1dfa2d7fe4
Avoid unneeded update of selections when we are going to overwrite them
2015-04-19 15:12:16 +01:00
Maxime Coste
bf02838816
Remove is_blank, which is identical to is_horizontal_blank
2015-04-15 00:34:00 +01:00
Maxime Coste
195b813b73
Add support for Home/End keys in normal and insert mode
...
Fixes #260
2015-03-27 13:33:14 +00:00
Maxime Coste
323b0359c7
Add support for mouse wheel
2015-03-22 12:17:01 +00:00
Maxime Coste
5eaf472fc0
Experimental support for mouse
2015-03-22 11:41:20 +00:00
Maxime Coste
def33de9bc
Check modifiers before inserting codepoints in the line editor
2015-03-22 11:41:19 +00:00
Maxime Coste
3921b234e7
Store fake keystrokes when selecting an insert completion candidate
...
Instead of storing the real 'select next completion' keystroke,
generate fake backspace/delete/char keystrokes so that replay
of the insert will insert the exact same text.
Fixes #135
2015-03-15 18:44:11 +00:00
Maxime Coste
adcb72e987
Minor code cleanup
2015-03-14 11:11:01 +00:00
Maxime Coste
1a7d50b347
Minor cleanup
2015-03-12 20:40:00 +00:00
Maxime Coste
3c1a325b6f
Refactor String, use a common StringOps interface, hide std::string
2015-03-10 19:50:22 +00:00
Maxime Coste
1cec8df45e
ArrayView content is not const anymore
...
As in upcoming std c++ array_view, ArrayView<T> points to mutable
data, use ArrayView<const T> or alias ConstArrayView<T> for const
data.
2015-03-09 13:54:09 +00:00
Maxime Coste
0bbaef6e48
Use a sorted array for keymap rather than an unordered map
...
with ~100 entry, a binary search finds in < 7 step, unordered map
is overkill.
2015-03-08 11:40:50 +00:00
Maxime Coste
c0e4268e17
Reactivate direct file change check on entering normal mode
2015-03-04 20:46:26 +00:00
Maxime Coste
8c843f5bea
Add <a-h>, <a-l>, <a-x> and <a-d> bindings to line editor
...
<a-h> : move cursor left
<a-l> : move cursor right
<a-x> : delete char before cursor
<a-d> : delete char under cursor
2015-02-13 19:13:44 +00:00
Maxime Coste
224f73d72a
Cleanup and refactor externally modified buffer reloading
...
* Correctly hide the reload dialog in every client.
* Correctly handle buffer being deleted.
2015-02-12 19:18:03 +00:00
Maxime Coste
ffff4711c5
Add history memory domain
2015-01-28 22:33:29 +00:00
Maxime Coste
da562e03a0
replace all std::vector with Vector
2015-01-12 13:58:41 +00:00
Maxime Coste
295a97f2a6
Rename memoryview to ArrayView
2015-01-06 13:43:37 +00:00
Maxime Coste
e911c86306
Remove useless code
2014-12-22 20:08:30 +00:00
Maxime Coste
116ea7364a
Restore some special behaviours, I missed them in interactive mode.
2014-12-19 13:58:33 +00:00
Maxime Coste
1c8ee78d1a
Do not register timers for transient input handlers
2014-12-18 23:12:58 +00:00
Maxime Coste
ebecd60eb8
Rework hashing, use a more extensible framework similar to n3876 proposal
...
std::hash specialization is a pain to work with, stop using that, and
just specialize a 'size_t hash_value(const T&)' free function.
2014-12-16 18:57:19 +00:00
Maxime Coste
2c4ed3a78c
Do not avoid eol on escape
2014-12-11 19:36:20 +00:00
Maxime Coste
d57be83522
Disable history writing when running hooks
2014-12-05 14:01:07 +00:00
Maxime Coste
1c5975835e
Consolidate constext disablable feature in a 'Disableable' helper
2014-12-05 13:47:09 +00:00
Maxime Coste
77e2e8a31e
Support selecting yank/paste register with "
2014-11-28 13:58:36 +00:00
Maxime Coste
35b89d5b87
Display selection count in insert mode line
2014-11-24 13:26:42 +00:00
Maxime Coste
88def85d77
Do not merge overlapping selections in InputMode::Replace
...
Fixes #237
2014-11-22 21:20:29 +00:00
Maxime Coste
f56b6ed75b
Do not record keys that were not user generated
2014-11-21 19:00:34 +00:00
Maxime Coste
3f733569ed
Fix case where a context ends up locked in no-hooks mode
2014-11-12 20:31:12 +00:00
Maxime Coste
f6e9018bf0
Reduce idle timeout to 50 milliseconds
2014-11-11 23:32:52 +00:00
Maxime Coste
88aa707b9c
For {Menu,Info}Style::Prompt, choose the anchor directly in ncurses code
2014-11-08 19:08:23 +00:00
Maxime Coste
e1fc2677e3
Add a MenuDoc style for info box, that will place it next to the menu
2014-11-08 18:01:55 +00:00
Maxime Coste
c04dfc7bb7
move more parameters from const String& to StringView
2014-11-01 19:31:13 +00:00
Maxime Coste
fc4142178f
Port more code to StringView instead of const String&
2014-10-20 19:18:38 +01:00
Maxime Coste
fa85f0fc32
Refactor regex uses, do not reference boost except in regex.hh
2014-10-13 13:14:23 +01:00
Maxime Coste
4c4d3cdd38
Add support for mapping keys in goto/view commands
2014-09-23 13:45:18 +01:00
Maxime Coste
827a77539a
Add some color to mode specific mode line info
2014-09-10 19:06:53 +01:00
Maxime Coste
50e1e5fadd
Add support for 'c-o' in prompt and insert to hide the completion menu
...
Fixes #229
2014-08-19 23:32:19 +01:00
Maxime Coste
fbbe741c07
Add support for <c-w> <c-b> and <c-e> for word moves in the line editor
...
This might go away later if we find a better way of handling line
edition, but seems like a good compromise for now.
Fixes #168
2014-08-14 00:31:39 +01:00
Maxime Coste
43f44bbab3
Fix buffer modification check
...
It used to grab the next key, because the normal mode reactivation
when executing the on_next_key would trigger a timestamp check again.
2014-08-07 21:51:36 +01:00
Maxime Coste
8ed16bb2e9
In non interactive interactive mode, disable user key mappings
...
exec and eval now accepts a -with-maps to use them. But by default
they are disabled, so that all the indent scripts work even if you
remap basic keys.
Fixes #217
2014-07-27 20:18:09 +01:00
Maxime Coste
8d6e8bc06f
Display a [no-hooks] tag in the mode line when hooks are disabled
2014-07-25 23:47:47 +01:00
Maxime Coste
731277a425
Disable hooks on a per context basis, and propagate that to Insert mode
...
using \ before entering insert mode will disable hooks during the whole
insert session rather than only the entering phase. That gives a nice
way of pasting text into kakoune.
2014-07-24 19:18:39 +01:00
Maxime Coste
bc48d9260d
Fix Menu use of j/k keys when editing filter
2014-07-22 18:39:04 +01:00
Maxime Coste
f4e3df817f
Clear status line on normal mode command
2014-07-17 19:37:30 +01:00
Maxime Coste
a32b49acd1
Rename ColorPair to Face and ColorRegistry to FaceRegistry
...
Face also stores the attributes
2014-07-11 00:27:43 +01:00
Maxime Coste
b6979e2d2c
Add docstring for normal mode commands and display them if autoinfo >= 2
2014-07-10 19:22:14 +01:00
Maxime Coste
b89b7c754f
Add \ in normal mode to disable user hooks on next normal command
...
Fixes #112
2014-06-21 22:06:02 +01:00
Maxime Coste
7235180614
Use main selection index as default when accessing only one register value
...
Fixes #117
2014-06-21 11:31:08 +01:00
Maxime Coste
e78fd2d235
Do not merge overlapping selection when entering append mode
...
Fixes #163
2014-06-16 01:05:38 +01:00
Maxime Coste
5245f0073c
Refactor InputMode::Insert::prepare
2014-06-09 23:23:49 +01:00
Maxime Coste
f54f8818c6
Merge branch 'master' into remove-buffer-change-listener
2014-06-09 19:29:40 +01:00
Maxime Coste
cf2609de1c
Tweak prompt completion behaviour
...
Always select the common prefix if we just updated the list of
completions. The previous behaviour was to ignore it if we had
it already typed. Do that only if it was already displayed.
2014-06-09 13:47:37 +01:00
Maxime Coste
49ab0c101a
Use forward iteration on selections, and take advantage of it when updating
...
SelectionList::update now is optimized for the common case where changes
are sorted, the algorithm is O(m*n) with m the number of sorted ranges
in the changes. In the common case, m should be very small.
2014-05-29 05:48:40 +01:00
Maxime Coste
51eae8026b
Use SelectionList::insert in InputModes::Insert
2014-05-25 22:59:29 +01:00
Maxime Coste
0a060b62a2
Merge branch 'master' into remove-buffer-change-listener
2014-05-25 20:01:55 +01:00
Maxime Coste
bf50a1c191
In normal mode, backspace can be used to edit count
...
Fix #125
2014-05-25 19:14:44 +01:00
Maxime Coste
811f1c2d76
Rename Key::Erase to Key::Delete and add 'del' keyname
...
Fixes #145
Fixes #146
2014-05-25 17:41:28 +01:00
Maxime Coste
4e280977a2
Iterate in reversed order on selections when modifing buffer
...
This way, update only needs to be called once everything is done
as we always modify after the next selection to be used.
2014-05-14 20:56:49 +01:00
Maxime Coste
bf98b38afd
Use a plain SelectionList for Context, remove DynamicSelectionList
2014-05-14 19:49:04 +01:00
Maxime Coste
ea3e92aa5e
SelectionList know its buffer and timestamp
2014-05-13 20:09:06 +01:00