Commit Graph

272 Commits

Author SHA1 Message Date
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