Commit Graph

2598 Commits

Author SHA1 Message Date
Maxime Coste
ed68d1ff28 utf8: use end of sequence iterators for more security 2014-07-05 12:10:06 +01:00
Maxime Coste
3f70d91f8c Use unsigned char rather than char in utf8 decoding to avoid sign extension 2014-07-05 12:10:06 +01:00
Alex Leferry 2
581dc59fb8 add alt-n commands to (replace|append) previous match
Note: alt-n command were used to replace main selection with next match
      (preserving the others)
2014-07-03 15:27:07 +02:00
Maxime Coste
d69664f401 Add :waq for write all an quit, with slight refactoring
Fixes #175
2014-07-01 20:38:55 +01:00
Maxime Coste
ffe8143cc7 Accept upper case macro names, convert them to lower case 2014-07-01 08:48:52 +01:00
Maxime Coste
b18db68c8a Fix spurious eol appearing in non scrolling fifo buffers 2014-06-30 18:56:18 +01:00
Maxime Coste
d6bb5b5a4b Canonicalize filenames when checking if a buffer was written to its file 2014-06-29 22:03:59 +01:00
Maxime Coste
df3bf7445d Replace boost::optional with our own implementation 2014-06-27 21:10:09 +01:00
Maxime Coste
7aa78d726a fix potential infinite loop in show_matching highlighter 2014-06-27 21:10:09 +01:00
Maxime Coste
63878b03c5 Style fixes 2014-06-26 19:01:39 +01:00
Maxime Coste
047488a8da Fix recursive string parsing, correct handling of escapes 2014-06-26 18:59:41 +01:00
Maxime Coste
5b27b956ad Rename utf8::utf8_iterator to utf8::iterator 2014-06-24 19:10:57 +01:00
Maxime Coste
b934c8ede5 Fix crash in Context::main_sel_register_value 2014-06-23 13:16:51 +01:00
Maxime Coste
df4983b6d4 Do not try to reload buffer if the buffer was deleted
Fixes #121
2014-06-22 11:09:44 +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
edd883ad18 Only user hooks can be disabled 2014-06-21 12:08:19 +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
e202b7af50 Add a line_option highlighter that highlight the line stored in an int option
Use it to highlight the current error in the *make* buffer
2014-06-18 20:50:39 +01:00
Maxime Coste
6f2569ff30 Color Default now means 'keep as is' for most highlighters 2014-06-18 20:33:23 +01:00
Maxime Coste
54590f5d79 Minor code cleanup in highlighters 2014-06-18 20:31:49 +01:00
Maxime Coste
1c69764774 Merge branch 'master' into hierarchical-highlighters 2014-06-18 20:20:58 +01:00
Maxime Coste
9aa8c8a60a Add a %val{...} expand type
%val{name} gives access to values given in shell through $kak_<name>
2014-06-18 19:32:13 +01:00
Maxime Coste
b8a205b858 Use -group rather than -id in hooks to mirror highlighters closer 2014-06-16 20:42:12 +01:00
Maxime Coste
3ef5bf53d5 Add BufCloseFifo hook and use that to remove fifo directories 2014-06-16 19:50:20 +01:00
Maxime Coste
fc6a16a571 Fix corner cases in region highlighting 2014-06-16 19:41:07 +01:00
Maxime Coste
51da452dc4 Merge branch 'master' into hierarchical-highlighters 2014-06-16 01:06:09 +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
2acfe85281 Highlight selection cursors in a second pass
This allows cursors to overlap on next selection and still be
visible.
2014-06-16 00:59:05 +01:00
Maxime Coste
c87e81e8de Use zstr instead of c_str in ncurses addutf8str 2014-06-16 00:53:25 +01:00
Maxime Coste
b5f5610cbe Share implementation in complete_id/complete_group_id 2014-06-16 00:49:39 +01:00
Maxime Coste
205e8b2889 Refactor highlighter command completions 2014-06-15 16:04:38 +01:00
Maxime Coste
89d30cbb21 Fix selection update 2014-06-14 14:07:42 +01:00
Maxime Coste
fa5b6b716d Fix crash in paragraph selection 2014-06-14 14:07:21 +01:00
Maxime Coste
e0cd8ad93c Fix crash in paragraph selection 2014-06-14 14:07:03 +01:00
Maxime Coste
9130f0334b Remove defhl, use addhl -group 2014-06-12 22:35:40 +01:00
Maxime Coste
af750ce186 Fix selection update 2014-06-12 21:23:49 +01:00
Maxime Coste
346de52633 add postfix increment to ParameterParser iterator 2014-06-12 20:03:17 +01:00
Maxime Coste
dac5e89e14 Add MultiRegionHighlighter
MultiRegionHighlighter provides a way to segment the buffer in
logical regions using the common left-most rule for finding the
next region. It then provides highlighting groups for each region
that can be filled.
2014-06-11 23:29:23 +01:00
Maxime Coste
0faf7ff5e6 Refactor region highlighter, extract code to helper classes 2014-06-11 23:29:15 +01:00
Alex Leferry 2
d5b1605df5 add ' ' for whitespaces object 2014-06-11 20:48:38 +01:00
Maxime Coste
0a76fe3040 Add support for recursion in region highlighter
An optional parameter defines the recursion regex, that match
potential closers.

For example, %sh{ ... } blocks support nested { }, so defining \{
as the recurse regex make the region highlighter correctly match
%sh{ ... { ... } ... } constructs
2014-06-11 00:23:44 +01:00
Maxime Coste
37d66b1e0b Convert Region highlighter to a HierarchicalHighlighter
add a region using addhl region <id> <begin_regex> <end_regex>
then fill the region with addhl -group <id>/content ...
2014-06-10 22:02:42 +01:00
Maxime Coste
4c942c4a3a ref highlighter tolerates unexisting reference 2014-06-10 22:02:08 +01:00
Maxime Coste
ca93ae807d Add a fill highlighter that just fills the display buffer 2014-06-10 21:46:16 +01:00
Maxime Coste
4bb62d63e6 Add HierachicalHighlighter class
HierachicalHighlighter contains a map of names to HighlighterGroup
and can wrap any highlighter that wants to access user settable
sub groups.
2014-06-10 21:35:03 +01:00
Maxime Coste
479c31b571 Replace FunctionGroup template with HighlighterGroup class 2014-06-10 19:58:02 +01:00
Maxime Coste
e6a9780490 Fix tabs-to-spaces an spaces-to-tabs with the selection refactor 2014-06-10 13:30:37 +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
4834504508 Do not touch the reference line in copy_indent 2014-06-09 19:27:57 +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
052d877ee6 Safer implementation of signal handlers in ncurses.cc
On recent ncurses implementation on cygwin, the old method provoked
freezes. Avoid calling ncurses functions in signal handlers.

We still call an unsafe function (EventManager::force_signal)...
2014-06-09 13:47:36 +01:00
Maxime Coste
732d1c3bd1 Improve commands documentation 2014-06-06 13:58:35 +01:00
Maxime Coste
be8f875b4f Remove -env-var-params support in :def command
It is not used
2014-06-06 13:57:23 +01:00
Maxime Coste
d33554a1cc Add support for long names for registers
We can now access register / with the name slash, * with star,
and | with pipe

Fixes #23
2014-06-06 00:49:36 +01:00
Maxime Coste
1ffafa8650 Merge branch 'master' into remove-buffer-change-listener 2014-06-06 00:22:46 +01:00
Maxime Coste
2d5c730441 Replace CommandManager::register_command*s* with register_alias 2014-06-06 00:21:12 +01:00
Maxime Coste
ffd860c1da Use a id_map implementation for SwitchMap
That way parameter definition order is respected when writing
command doc strings.
2014-06-06 00:21:09 +01:00
Maxime Coste
c28a61187b Fix handling of empty insert 2014-06-05 19:44:56 +01:00
Maxime Coste
26f69b199e Rework and fix corner cases in selection updating code 2014-06-05 19:44:56 +01:00
Maxime Coste
1533a28394 Properly handle unicode in key parsing
Fixes #139
2014-06-05 19:42:27 +01:00
Maxime Coste
f7e89bc9f8 Fix selection updating, avoid overlapping selections 2014-06-02 17:36:46 +01:00
Maxime Coste
8d9ed5e8c7 Fix in region highlighter 2014-06-02 15:42:03 +01:00
Maxime Coste
c8354588c9 Remove undo group optimizer 2014-06-02 15:17:56 +01:00
Maxime Coste
d33c27acdf Move compute_modified_ranges to selection.cc and use an optimized approach 2014-06-02 15:13:56 +01:00
Maxime Coste
23a1914d7e Optimize SelectionList::update in the case where changes are backward
This case arise on undo, reverse sorted changes that are not overlapping.
2014-06-02 02:16:19 +01:00
Maxime Coste
a5e028e1b1 Add Context::set_selections(std::vector<Selection>)
This methods avoids updating the context selection needlessly as
they are going to get replaced anyway.
2014-06-01 16:01:38 +01:00
Maxime Coste
1b30c0f4fb Extract merge_overlapping as a free function template 2014-06-01 15:57:12 +01:00
Maxime Coste
5bcb55b6dd minor cleanups in insert_completer.cc 2014-05-31 18:18:29 +01:00
Maxime Coste
cf03cc97ef formatting fix 2014-05-31 18:12:54 +01:00
Maxime Coste
9006b31472 remove reverse iterator from SelectionList 2014-05-31 11:56:48 +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
72d6ed3575 Add 'n' for number object (inner number does not recognise '.') 2014-05-27 09:50:12 +01:00
Maxime Coste
e1c9e42213 Merge branch 'master' into remove-buffer-change-listener
Conflicts:
	src/normal.cc
	src/selectors.cc
	src/selectors.hh
2014-05-27 00:35:12 +01:00
Maxime Coste
9aa38a1ea0 Rename select_whole_.* to just select_.* 2014-05-26 21:44:57 +01:00
Maxime Coste
c1a7759e7f Tweak inner indent object code
Inner indent is now the set of lines whose indent is >= current
line indent, triming lines containing only whitespaces at start
and end.

Fixes #140
2014-05-26 21:41:51 +01:00
Maxime Coste
9870ac22f6 Remove Modification
Lets consider that as a failed experiment.

You see, I learned something today, for a complicated problem, it
is important to keep as much knowledge of the exact problem as
possible. the Modification approach failed because it tried to
solve the general problem, which is quite complex. The new approach,
which keeps the knowledge that selections are sorted is much simpler
and faster (see f49bec8021).
2014-05-26 21:09:12 +01:00
Maxime Coste
ce469398c5 Revert "Use Modification for region highlighter"
This reverts commit aa64851de6.

Conflicts:
	src/highlighters.cc
2014-05-26 21:02:09 +01:00
Maxime Coste
19a5ed05a6 Revert "update Modification for WordDB"
This reverts commit 8f45623f98.

Conflicts:
	src/word_db.cc
2014-05-26 21:02:08 +01:00
Maxime Coste
fed2094e89 Revert "Remove line modification, replaced by modification"
This reverts commit a7540962cc.
2014-05-26 20:59:08 +01:00
Maxime Coste
f49bec8021 Go back to Buffer::Change based implementation for SelectionList::update
However take into account the ordering of selections in insert and erase
methods, so that we update selection position cheaply.
2014-05-26 20:57:10 +01:00
Maxime Coste
51eae8026b Use SelectionList::insert in InputModes::Insert 2014-05-25 22:59:29 +01:00
Maxime Coste
b2621ca140 Move insert/erase methods from normal.cc to member functions in SelectionList
It does look like the Editor class is attempting a sneaky comeback...
2014-05-25 20:28:32 +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
1498fa9e4a Add kak_selections_desc en vars, containing : separated descs
descs are now <line>.<column>+<len>
Fixes #144
2014-05-25 18:27:51 +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
fe70add4b7 Disable 'interactive' options in :exec/:eval
Incremental search, automatic info and completion are
not needed in non interactive context.
2014-05-25 17:36:12 +01:00
Maxime Coste
fc0700d1fd Fix segfault in region highlighter 2014-05-24 17:17:14 +01:00
Maxime Coste
b6b646e9a2 Remove use of 'offset' in buffer iterators, lines are just String
No need to maintain line offsets anymore.
2014-05-24 17:08:01 +01:00
Maxime Coste
95200d1de1 Avoid buffer end line in word_db update 2014-05-24 14:10:27 +01:00
Maxime Coste
0aa5c4e779 Still more fixes for Modification 2014-05-24 13:15:59 +01:00
Maxime Coste
a6de024c1f Fix Modification 2014-05-24 02:35:08 +01:00
Maxime Coste
1544a006c9 Fix selection update in when doing a 'replace' insert 2014-05-24 02:14:51 +01:00
Maxime Coste
eba98ecad4 Clamp modified coord in Selection as it could be buffer end 2014-05-24 02:14:51 +01:00
Maxime Coste
695c85f451 Fix, cleanup and refactor compute_modifications 2014-05-24 02:14:28 +01:00
Maxime Coste
f08966197e Change # register to contain selection number
Using <c-r># in insert will allow easy numbering
2014-05-23 20:27:35 +01:00
Maxime Coste
a7540962cc Remove line modification, replaced by modification 2014-05-21 23:35:11 +01:00
Maxime Coste
aa64851de6 Use Modification for region highlighter 2014-05-21 23:35:11 +01:00
Maxime Coste
8f45623f98 update Modification for WordDB 2014-05-21 23:35:11 +01:00
Maxime Coste
2c52b8bca6 Add initial (and probably buggy) compute_modifications code
compute_modifications compiles a list of buffer change into
a list of Modifications that can be used for updating BufferCoord
2014-05-21 23:35:10 +01:00
Maxime Coste
152e46a6da Make utif_iterator more tolerant to invalid utf8 2014-05-21 00:25:24 +01:00
Maxime Coste
55959f2cb1 Make expand_unprintable more tolerant to invalid utf8 2014-05-21 00:24:58 +01:00
Maxime Coste
b29cae4d16 Remove duplicated logic and fix insert in Replace mode 2014-05-19 18:59:14 +01:00
Maxime Coste
2bb2c467b6 Fix filename/colalias/buffer completion when completing with trailing text 2014-05-18 14:14:37 +01:00
Maxime Coste
03e5264df4 Remove per lines timestamp in Buffer 2014-05-17 12:17:05 +01:00
Maxime Coste
079d34b82a Minor cleanup in SelectionList methods 2014-05-17 12:13:49 +01:00
Maxime Coste
211b78f536 Merge branch 'master' into remove-buffer-change-listener
Conflicts:
	src/highlighters.cc
2014-05-17 11:39:56 +01:00
Maxime Coste
9240cccf74 set Coords/Counts methods as always_inline
They are well tested, and we never want to step into them when debugging
2014-05-17 10:17:28 +01:00
Maxime Coste
c21368cac5 DisplayAtom::content returns a StringView 2014-05-16 19:29:39 +01:00
Maxime Coste
aa48179131 read all available text in fifo each time the fd is signaled 2014-05-15 19:11:59 +01:00
Maxime Coste
2f1388df7b replace LineChangeWatcher with a free function compute_line_modifications 2014-05-14 21:19:19 +01:00
Maxime Coste
0ec0f7c320 Remove unneeded vector for computing line modifications 2014-05-14 21:10:55 +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
c3f4ef9ba2 Remove BufferChangeListener 2014-05-14 19:49:04 +01:00
Maxime Coste
bf98b38afd Use a plain SelectionList for Context, remove DynamicSelectionList 2014-05-14 19:49:04 +01:00
Maxime Coste
db423e4a88 utf8::is_character_start takes directly the char value 2014-05-14 19:49:03 +01:00
Maxime Coste
34e1c2ddd5 Fix RegexColorizer cache handling 2014-05-14 19:22:42 +01:00
Maxime Coste
fbf7856e3e use plain SelectionList for regex_prompt 2014-05-14 00:27:41 +01:00
Maxime Coste
11d9b60766 Make it harder to have an invalid SelectionList 2014-05-13 23:22:54 +01:00
Maxime Coste
a06094b00e Use simple SelectionList for the Context::JumpList 2014-05-13 20:09:37 +01:00
Maxime Coste
ea3e92aa5e SelectionList know its buffer and timestamp 2014-05-13 20:09:06 +01:00
Maxime Coste
855357ee73 Fix :delbuf! not forcing buffer deletion
Fixes #116
2014-05-13 19:48:16 +01:00
Maxime Coste
016ede38d1 Fix show_matching highlighter when opening char is the first buffer char
Fixes #119
2014-05-13 19:45:32 +01:00
Maxime Coste
6b42c48c3f Refactor DynamicRegexHighlighter, search hl uses Search colalias
fixes #122
2014-05-13 19:35:28 +01:00
Maxime Coste
7bc73b7ef9 negative coordinates are invalid 2014-05-13 19:01:27 +01:00
Maxime Coste
8ab1f58594 Use a Buffer::changes_since based implementation for undo/redo 2014-05-13 19:01:27 +01:00
Maxime Coste
67a251ffd5 Pass a at_end param to BufferChangeListener::on_{insert,erase} 2014-05-13 19:01:27 +01:00
Maxime Coste
ddd8f8d392 LineChangeWatcher uses Buffer::changes_since rather than listening 2014-05-13 19:01:27 +01:00
Maxime Coste
a510276025 Maintain an append-only list of changes in Buffer 2014-05-12 19:03:13 +01:00
Maxime Coste
db8a4ca318 SelectionList no longer inherit from std::vector 2014-05-12 18:59:00 +01:00
Maxime Coste
5e47c503d9 use words=all rather than words=buffer for default insert word completion 2014-05-11 12:53:08 +01:00
Maxime Coste
daac1698d6 use StringView in word_db.cc 2014-05-11 12:51:37 +01:00
Maxime Coste
f4d338e605 String::substr now returns a StringView 2014-05-11 12:44:51 +01:00
Maxime Coste
05b79921a9 Minor code cleanups in buffer.{cc,hh} 2014-05-10 16:25:07 +01:00
Maxime Coste
c7d24ac7db Add a show_whitespaces highlighter 2014-05-09 13:50:12 +01:00
Maxime Coste
e4e609a35c Catch std::runtime_errors that can be thrown by regex_search
This handle the case where a regex matching gets too complex.
2014-05-08 19:33:14 +01:00
Maxime Coste
4010117c98 fix tabs_to_space on consecutive tabs 2014-05-08 19:30:10 +01:00
Maxime Coste
8356e44ad5 Improve error reporting when parsing commands
*debug* will contain line and column informations along
with the responsible command name.
2014-05-07 20:39:59 +01:00
Maxime Coste
8546788b43 Refactor LineAndColumn coordinates
BufferCoord -> ByteCoord
DisplayCoord -> CharCoord

Moved their definition along with LineAndColumn into coord.hh
2014-05-07 19:53:45 +01:00
Maxime Coste
24f6471431 Add '$' for keeping selections that passes a shell command
'$' pipes each selections through a given shell command, and
only keeps the one that have an exit code of 0

Fixes #36
2014-05-05 18:09:03 +01:00
Maxime Coste
e6bda60ca4 Use c++ code for 'gf' command rather than running a user :edit command 2014-05-05 13:09:59 +01:00
Maxime Coste
dfb1246697 Complete option values with the current value of the option
Fixes #32
2014-05-05 12:55:04 +01:00
Maxime Coste
36620f8cc8 Wrap command completion containing spaces, semicolons or quotes in double quotes 2014-05-05 12:54:23 +01:00
Maxime Coste
7f0e82dd81 minor style tweak 2014-05-04 11:48:39 +01:00
Maxime Coste
e92e6c775a Paragraph selection selects next paragraph when on previous end 2014-05-04 11:21:19 +01:00
Maxime Coste
8cc9454438 Add a -alias switch to the def command for defining an alias
Fixes #100
2014-05-03 16:00:10 +01:00
Maxime Coste
5db3b51843 Add command aliases in command info
Fixes #101
2014-05-03 16:00:03 +01:00
Maxime Coste
e83123de1f Add support for non-scrolling fifo buffers 2014-05-02 18:58:04 +01:00
Maxime Coste
26dd21706e Replace some typedefs with usings 2014-05-01 19:03:13 +01:00
Maxime Coste
67559daead file.cc: try more portable use of struct stat::st_mtime 2014-04-30 23:03:42 +01:00
Maxime Coste
3efeb67861 Fix Option destructor that was not virtual 2014-04-30 19:40:23 +01:00
Maxime Coste
4d45fa6588 Use StringView in UserInterface and NCursesUI 2014-04-30 19:39:52 +01:00
Maxime Coste
bd4df27f2b Use StringView in write_debug 2014-04-30 19:27:38 +01:00
Maxime Coste
c06f986a02 Add unistd.h to main, needed for dup 2014-04-30 19:08:06 +01:00
Maxime Coste
144a35be30 Fix clang compilation 2014-04-30 19:07:32 +01:00
Maxime Coste
b1ba7fc4d2 Fix word completion that replaced the whole current word
Only replace up to the cursor.
2014-04-29 23:48:46 +01:00
Maxime Coste
479c067a40 Add support for running Kakoune with redirected stdin
Will read to a *stdin* fifo buffer
2014-04-29 21:37:11 +01:00
Maxime Coste
f683946681 Extract insert completion code to insert_completer.{cc,hh} 2014-04-28 21:54:00 +01:00
Maxime Coste
512bfa0c65 Fix support for tabulation in insert completion candidates 2014-04-28 19:49:23 +01:00
Maxime Coste
53cb626f49 Add an expand_tabs string utility function 2014-04-28 19:49:00 +01:00
Maxime Coste
7190791927 Move some buffer related utility functions to buffer_utils.{cc,hh} 2014-04-28 19:48:23 +01:00
Maxime Coste
49bc7f8767 minor formatting cleanup 2014-04-27 12:37:58 +01:00
Maxime Coste
b370f91025 Add -init switch to :prompt to set the initial text
Fixes #97
2014-04-27 12:37:41 +01:00
Maxime Coste
0c1b27cfa7 Fix :map docs and add completion support 2014-04-26 09:40:26 +01:00
Maxime Coste
192e0c33f9 Cache commands in complete_commands
Iterating through all directories in path to find commands
can end up quite slow, so cache the result per directory and
update it only if the directory modification time changed.
2014-04-24 19:08:05 +01:00
Maxime Coste
418a04f49d Support reading strings more that 2048 bytes
fixes #95
2014-04-23 22:21:04 +01:00
Maxime Coste
389308dfd8 Preserve current word in word completion if found elsewhere
If occurence count in the buffer if greater that one, do not
remove it from the matches.
2014-04-22 19:32:12 +01:00
Maxime Coste
65c818b859 Use StringView in CommandManager 2014-04-21 21:49:25 +01:00
Maxime Coste
8beda67fae Use StringView in FunctionGroup and FunctionRegistry 2014-04-21 10:50:09 +01:00
Maxime Coste
a1ec45d91a Use StringView in id_map 2014-04-21 10:47:21 +01:00
Maxime Coste
5ebd588e5f remove unused memoryview<char> String::data 2014-04-21 00:26:20 +01:00
Maxime Coste
61619d82bf use StringView::zstr() in place of StringView::str().c_str() 2014-04-21 00:26:20 +01:00
Maxime Coste
7cdb94d5c7 Use StringView in shell manager 2014-04-21 00:26:20 +01:00
Maxime Coste
63a0b9d22a Add a zstr() method to StringView that returns a zero terminated string holder 2014-04-21 00:26:20 +01:00
Maxime Coste
c4295b7e30 Fix StringView::substr when passed a negative length 2014-04-20 12:03:57 +01:00
Maxime Coste
055eacd032 use StringView for parse_keys 2014-04-20 11:27:59 +01:00
Maxime Coste
b2123547df Use StringView in BufferManager 2014-04-19 09:53:37 +01:00
Maxime Coste
97b08a6f09 Use StringView for file functions 2014-04-18 14:03:08 +01:00
Maxime Coste
adde2fef75 Use StringView for completion functions 2014-04-18 14:02:14 +01:00
Maxime Coste
af2d82dfc1 Add StringView class for non owning string 2014-04-18 13:47:39 +01:00
Maxime Coste
a7e6e5b936 Remove unimplemented String::replace method 2014-04-18 13:19:07 +01:00
Maxime Coste
1d7a481e81 word completion ignore the word on which the cursor is present 2014-04-17 19:33:49 +01:00
Maxime Coste
2b997719c3 Rename BufferCompleter to InputCompleter 2014-04-16 19:08:44 +01:00
Maxime Coste
7af9863e51 Add an explicit refresh method to user interface
With this refresh method user interface can defer updating
the display until really needed.
2014-04-15 19:19:44 +01:00
Maxime Coste
98c6a6f17e RemoteClient process all available messages 2014-04-15 19:09:42 +01:00
Maxime Coste
374f97a592 fix exception being thrown in error in decl command 2014-04-14 19:01:00 +01:00
Maxime Coste
386813bbfd Add a 'prompt' command 2014-04-13 14:15:34 +01:00
Maxime Coste
7097fcf640 Allow unset completer function in Prompt input mode 2014-04-13 14:15:05 +01:00
Maxime Coste
9ff356cb2b Extract option descriptions in an shared OptionDesc class 2014-04-12 20:03:26 +01:00
Maxime Coste
e9276a0a85 Add a docstring to options 2014-04-11 18:43:25 +01:00
Maxime Coste
05d69f7f8e Use stat when listing files so that link to directories are handled as directories 2014-04-11 18:43:25 +01:00
Jimmy Thrasher
061264c039 Define extern char **environ for OSX, which doesn't define it in a header 2014-04-10 15:23:39 -04:00
Maxime Coste
30bdc8936b Fix select_whole_lines on empty buffer 2014-04-10 20:14:11 +01:00
Maxime Coste
19868f01c8 return a const String& in Option::name() 2014-04-09 19:33:37 +01:00
Maxime Coste
e0424ba017 Minor formatting fixes (very long lines) 2014-04-08 20:09:54 +01:00
Maxime Coste
20d20ae1dc formatting changes in command_manager.cc 2014-04-08 19:55:31 +01:00
Maxime Coste
203a7732f5 Add support for querying client environement variables
At connection, a remote client sends all its environement to the
server, which then provides access to client env through
kak_client_env_VAR_NAME variables in the shell.
2014-04-07 23:47:51 +01:00
Maxime Coste
33de42610d Add g. command to go to the last buffer modification position 2014-04-07 23:47:50 +01:00
Maxime Coste
a387e7a4c6 the 'def' commands now supports -(buffer|client)-completion switches 2014-04-07 23:47:50 +01:00
Maxime Coste
ca54909246 Add ClientManager::complete_client_name 2014-04-07 23:47:50 +01:00
Maxime Coste
a9b3a8b0d6 rename BufferManager::complete_buffername to complete_buffer_name 2014-04-07 23:47:50 +01:00
Maxime Coste
0df088be20 Code cleanup in list_files 2014-04-06 10:59:51 +01:00
Maxime Coste
b01ba59911 Merge remote-tracking branch 'jjthrash/fix-closedir-crash' 2014-04-06 02:58:34 +01:00
Jimmy Thrasher
fd5406282d Fix crash caused by attempting to close a nonexistent DIR* 2014-04-05 18:00:59 -04:00
Maxime Coste
9b7d8a93c8 code formatting tweak 2014-04-05 12:04:37 +01:00
Maxime Coste
39983e54d0 minor code style tweak 2014-04-04 00:00:06 +01:00
Maxime Coste
3c40ac50af Add %rec{...} string that recursively expand %block inside
the result is then used as one token
2014-04-03 23:57:14 +01:00
Maxime Coste
c4e694fb7b Merge remote-tracking branch 'jjthrash/osx-install-fixes' 2014-04-03 20:26:47 +01:00
Jimmy Thrasher
cd8fa49ad1 Remove redundant -D that was causing problems on OSX
The prior `mkdir -p` took care of what -D was supposed to do.
2014-04-03 14:55:59 -04:00
Maxime Coste
fb72effde8 Fix cygwin detection in Makefile 2014-04-03 19:12:29 +01:00
Jimmy Thrasher
43b395533f Use plain libncurses with Apple 2014-04-03 13:56:03 -04:00
Jimmy Thrasher
0bb46c8968 Detect Darwin in the Makefile and plan accordingly 2014-04-03 13:56:03 -04:00
Jimmy Thrasher
d2e9486f2d Fix some more constexpr issues for clang 2014-04-03 13:56:03 -04:00
Maxime Coste
e94a82ac98 More OSX fixes 2014-04-02 22:52:00 +01:00
Maxime Coste
bf84f5dcef Fix compilation with OSX C++ lib 2014-04-02 22:41:06 +01:00
Maxime Coste
e1a9d5f71e Fix clang compilation 2014-04-02 22:33:52 +01:00
Maxime Coste
84c30c4b8a Minor formatting changes 2014-04-01 18:54:46 +01:00
Maxime Coste
ac90839c3d Select previous sentence or paragraph if selecting backward from the first char
[s and [p on the first char of a sentence or paragraph will select the
previous sentence or paragraph.
2014-03-31 21:46:47 +01:00
Maxime Coste
968922055b debug command now serves as a frontend to get debug informations 2014-03-31 20:07:35 +01:00
Maxime Coste
60452d9745 echo command accepts -debug switch to write to the debug buffer 2014-03-31 20:07:02 +01:00
Maxime Coste
c3a1318ffd When selecting forward paragraph and we are on an end of line, select the next one.
Fixes #62. Thanks to alexherbo2.
2014-03-30 11:13:45 +01:00
Maxime Coste
5079d78747 minor cleanup in select_whole_sentence 2014-03-30 11:13:37 +01:00
Maxime Coste
cd908bf6a3 minor cleanup 2014-03-30 10:45:53 +01:00
Maxime Coste
2a7335edef Add basic support for colalias completion 2014-03-29 13:18:46 +00:00
Maxime Coste
0fe9683c0f Fix indent/deindent when only empty lines are selected 2014-03-29 09:02:09 +00:00
Maxime Coste
da9d099f3b Remove Range struct, merge it back in Selection 2014-03-29 08:55:45 +00:00
Maxime Coste
c38e14958f Change default menu colors
Distinguish menus from selection more easily
2014-03-29 08:54:45 +00:00
Maxime Coste
159e0d049d rotate selection content count parameter groups selections
the count parameter does not specify the rotation count, but
the size of the rotation groups. with 2 for exemple, selection
contents will be swapped for each pair (1 and 2, 3 and 4, ...)
2014-03-27 00:11:30 +00:00
Maxime Coste
b6e268500d notify buffer saved after closing the file descriptor 2014-03-26 19:11:04 +00:00
Maxime Coste
248e5ae6c0 fix file reload prompt displaying invalid message 2014-03-26 19:06:16 +00:00
Maxime Coste
58b4e29e81 ShellManager: Change the env var detection regex to find more uses
The regex is now just '\bkak_\w+\b', no need for it to be looking
like a shell variable use.

This allows other tools that the shell to access Kakoune vars as
long as the name appears directly in the shell string.
2014-03-25 19:43:56 +00:00
Maxime Coste
764e450fdd Remove the shell option, always use /bin/sh 2014-03-25 09:28:44 +00:00
Maxime Coste
b677f9da63 do not write the trailing nul char in send_commands
That triggered creation of a new client, followed by it's immediate
destruction due to the connection closing.
2014-03-25 09:23:11 +00:00
Maxime Coste
0bc57e43d2 Server: correctly handle Accepters lifetime
When exiting kakoune, ClientAccepters (now Server::Accepter) could
stay alive, which left an FDWatcher in the EventManager triggering
an assert. Now Server is handling their lifetime.
2014-03-25 09:21:20 +00:00
Maxime Coste
2a23ce1987 FDWatchers are non copiable and non movable 2014-03-25 09:15:56 +00:00
Maxime Coste
ba6f3b833b fix segfault in parameter parser 2014-03-25 08:21:16 +00:00
Maxime Coste
bbdb2494d1 Merge remote-tracking branch 'evertvp/master' 2014-03-24 21:44:14 +00:00
Evert Van Petegem
369728cd7f Push aborted commands to history 2014-03-24 22:11:19 +01:00
Maxime Coste
30d36c0f1d change ncurses menu scroll bar style 2014-03-24 19:36:34 +00:00
Maxime Coste
a4070d9037 Use an info box to prompt for reloading of modified files 2014-03-24 19:31:40 +00:00
Maxime Coste
93ecc3efd6 style tweak 2014-03-22 21:00:24 +00:00
Maxime Coste
459cb212e5 Correctly handle failing to connect to the given session in client mode 2014-03-21 13:42:37 +00:00
Maxime Coste
2cdf578834 Store key names in a constexpr array 2014-03-20 19:52:11 +00:00
Maxime Coste
0cdeb55968 Container utility functions now use the free begin/end functions 2014-03-20 19:51:25 +00:00
Maxime Coste
dc953197c3 Fix support for switches style option in user commands 2014-03-20 19:50:42 +00:00
Maxime Coste
c48bdbe4f1 exec and eval support the -no-hooks option
Hooks gets disabled during the execution of the commands
2014-03-20 08:29:41 +00:00
Maxime Coste
be417d3616 Remove dangling forward declaration of Editor class 2014-03-20 08:11:35 +00:00
Maxime Coste
86fd00d1ea Fix comment 2014-03-20 08:10:31 +00:00
Maxime Coste
0db39ccfd0 Automatic insert filename completion kicks in only if prefix contains slash 2014-03-19 08:05:28 +00:00
Maxime Coste
dc087b3b7c EventManager: fix busy loop when no timer events exists. 2014-03-18 18:53:35 +00:00
Maxime Coste
36b016226c Insert mode completion execute completers in order, and supports multiple option
The 'completions' option is gone, just add option=completion_option_name
in the completers list.
2014-03-15 03:17:17 +00:00
Maxime Coste
19f5eb65e8 Clamp cursor position on buffer reloading 2014-03-07 01:05:51 +00:00
Maxime Coste
8e0b5d67aa Fix segfault in get_until_delimiter 2014-03-05 20:57:12 +00:00
Maxime Coste
11c62e583c Add -p <session> option to kak, which forward commands on stdin to session
This allows using directly the kak binary in place of socat for piping commands
to a foreing session.
2014-03-02 02:01:09 +00:00
Maxime Coste
e9442ea307 Rename connect_to's pid parameter to session 2014-03-02 02:00:13 +00:00
Maxime Coste
aab390ab92 Add -docstring option to the 'def' command
used defined commands can have their own documentation strings
2014-03-02 01:08:11 +00:00
Maxime Coste
4b9d49d7ab Add support for -buffer <comma separated names> to eval and exec commands
fixes #47
2014-03-02 01:08:11 +00:00
Maxime Coste
15223cba1e tweak docstring 2014-03-02 01:08:11 +00:00
Maxime Coste
8aaeaa3187 Declare commands in a CommandDesc structure 2014-03-02 01:08:11 +00:00
Maxime Coste
8ac19edf67 Add a docstring to commands 2014-03-02 01:08:11 +00:00
Maxime Coste
e6f5b3c038 Display command info only when the autoinfo option is true 2014-03-02 01:08:11 +00:00
Maxime Coste
486d1269e0 Consistently name -foo things 'switches' 2014-03-02 01:08:11 +00:00
Maxime Coste
9451782648 Add command switches information, and automatically display it 2014-03-02 01:08:11 +00:00
Maxime Coste
7f9f887b4a All commands now take directly a parameter parser
The command parameters description are now stored in a ParameterDesc
structure.
2014-03-02 01:08:11 +00:00
Maxime Coste
bd331742d2 Add @ command for tabs to spaces and alt-@ for spaces to tabs 2014-03-02 01:06:13 +00:00
Maxime Coste
0cd82d0ebe Rename align indent to more correct copy indent 2014-03-02 01:06:05 +00:00
Maxime Coste
c49e79c9e8 Add buffile env var for getting the buffer filename 2014-02-27 06:44:22 +00:00
Maxime Coste
aceee75ed9 Tolerate invalid %...{} when completing 2014-02-27 06:44:14 +00:00
Maxime Coste
6d651c59d0 regionref highlighter just ignore invalid references
fixes #68
2014-02-25 00:19:31 +00:00
Maxime Coste
daeefe2f33 Add support for strings
fixes #53
2014-02-15 00:36:00 +00:00
Maxime Coste
14f91e7132 Use a scoped edition when pasting 2014-02-12 00:03:01 +00:00
Maxime Coste
410932330c EventManager now wakes up for next timer rather than running a 10Hz 2014-02-12 00:03:01 +00:00
Maxime Coste
938f66badd Check for buffer external change when entering insert mode 2014-02-12 00:03:00 +00:00
Maxime Coste
d2a1c5ce46 Prompt handles scrolling in the line being edited 2014-02-12 00:03:00 +00:00
Maxime Coste
209a4a3ddf ClientManager: use lifo behaviour for free windows 2014-02-12 00:03:00 +00:00
Maxime Coste
22f2f68d58 Fix LineChangeWatcher behaviour when inserting at buffer end 2014-01-28 19:07:36 +00:00
Maxime Coste
2159fc9563 Rename selections first,last to more explicit anchor,cursor 2014-01-28 19:06:52 +00:00
Maxime Coste
dbd194cea8 Fix autoinfo for angle bracket object 2014-01-27 21:11:45 +00:00
Maxime Coste
e364137196 Fix compilation with clang 3.4 2014-01-27 20:28:38 +00:00
Maxime Coste
2dd4761f89 remove unused Singleton::delete_instance 2014-01-27 19:53:33 +00:00
Maxime Coste
a6d14cecbe Remove session socket on error signal 2014-01-27 19:53:17 +00:00
Maxime Coste
bbf48e1d39 Honor incsearch option for select/split/keep
fixes #37
2014-01-27 19:51:58 +00:00
Maxime Coste
37b4eacdc8 Rework command completion to allow partial token completion
Implement hook completion.

fixes #44
2014-01-27 19:51:58 +00:00
Maxime Coste
a32cac2f66 update gdbinit 2014-01-27 19:51:58 +00:00
Maxime Coste
ad818853a2 WordDB now uses a LineChangeWatcher based implementation 2014-01-27 19:51:58 +00:00
Maxime Coste
a96b2d3cd2 Rework regions highlighter, refactor and extract line tracking 2014-01-27 19:51:58 +00:00
Maxime Coste
f6e5deae5a Add 'a' alias to angle brackets text object
fixes #39
2014-01-23 19:45:09 +00:00
Maxime Coste
cccb07c7cd Catch parameter errors on startup and display option informations 2014-01-23 19:36:07 +00:00
Maxime Coste
c0bc7b6644 write_debug: fallback to stderr if the BufferManager does not exists yet
fixes #40
2014-01-23 19:21:00 +00:00
Maxime Coste
4f4a626754 Fix adapt_view_pos when the cursor is not on a display atom by itself 2014-01-21 18:52:51 +00:00
Maxime Coste
2cbb0bb27f Add a show_matching highlighter 2014-01-20 21:02:43 +00:00
Maxime Coste
f6eaaf1e78 WordDB: use an ordered map for storing words
This way we can use lower_bound to find the first prefix match
in logarithm time and we know all other prefix matches will
follow.
2014-01-19 19:43:19 +00:00
Maxime Coste
2ac545d306 RegionHighlighter: correct coordinates that are one past end of line
As region highlighters store per lines matches, end of line ones
are not valid buffer coordinates and must be corrected as begining
of next line.
2014-01-18 11:47:18 +00:00
Maxime Coste
5cffc48efc Pass a HighlightFlags parameter to highlighters
When only highlighting for finding character position on screen
pass HighlightFlags::MoveOnly so that non moving highlighters do
not need to run.
2014-01-18 01:59:37 +00:00
Maxime Coste
e1eec8903a only highlight actually displayed regions 2014-01-17 23:39:01 +00:00
Maxime Coste
79c6d609c9 FunctionGroup: fix incorrect parameter for operator() 2014-01-17 13:13:08 +00:00
Maxime Coste
997aadd33f Word completion use a WordDB stored as a buffer value. 2014-01-16 22:07:42 +00:00
Maxime Coste
a6b386e9b8 RegionHighlighter: Find the lines to be reparsed using the changes 2014-01-15 20:28:58 +00:00
Maxime Coste
c2f18e6e78 Use inplace_merge for sorting matches in region highlighter 2014-01-14 19:42:57 +00:00
Maxime Coste
ab508ea3da Much faster implementation of SelectionList::merge_overlapping 2014-01-13 22:23:40 +00:00
Maxime Coste
86eaa64982 Optimization and code cleanup in the region highlighter. 2014-01-13 21:40:02 +00:00
Maxime Coste
219f4c9c19 minor code cleanup 2014-01-12 21:25:21 +00:00
Maxime Coste
737837216b minor code cleanup 2014-01-12 21:24:59 +00:00
Maxime Coste
3248829f5b rename buffer_iterator.inl.hh as buffer.inl.hh and inline some more methods 2014-01-12 17:19:05 +00:00
Maxime Coste
faabd24e11 Region highlighters track line changes in the buffer
This way, region highlighters only need to regex-parse lines that
actually changed. matches on lines that just moved around but whose
content did not change can be updated simply by updating their line
coordinate.
2014-01-12 16:28:11 +00:00
Maxime Coste
4aed32d152 Store timestamp of last content modification in buffer lines
That means that lines that move around keep their timestamp.
2014-01-12 16:26:31 +00:00
Maxime Coste
ba5b21d43e Clear buffer values explicitely in destructor
Buffer values could be registered as a listener, so we need to
get rid of them before asserting that all listeners have been
unregistered.
2014-01-11 19:05:09 +00:00
Maxime Coste
1d51e6922a minor code cleanup 2014-01-10 13:36:40 +00:00
Maxime Coste
d466193ee7 Use a per line caching strategy for region highlighter 2014-01-09 22:52:39 +00:00
Maxime Coste
b247a05e43 Buffer: maintain a per line timestamp 2014-01-09 22:51:50 +00:00
Maxime Coste
d96b5aa04d Move highlighter cache logic to BufferSideCache template 2014-01-09 22:51:23 +00:00
Maxime Coste
85cc740de0 Use Buffer values for storing highlighting caches 2014-01-09 21:57:37 +00:00
Maxime Coste
85387b3efe Buffers can hold arbitrary values for for other systems 2014-01-09 21:01:29 +00:00
Maxime Coste
e6884f989c Style changes, replace typedefs with usings 2014-01-09 19:59:26 +00:00
Maxime Coste
560b4ab0b5 Fix DynamicSelectionList selecting buffer end on Buffer::reload 2014-01-08 19:36:18 +00:00
Maxime Coste
c8119885fa Use Win32 MessageBox for asserts on cygwin 2014-01-08 19:23:59 +00:00
Maxime Coste
518bc4e7f3 Use a single edition for -itersel
-itersel would not make sense with changing context buffer, so
it should be safe.

Fixes #14
2014-01-06 20:10:46 +00:00
Maxime Coste
9455303a1e Do not allow changing buffer when the context is editing 2014-01-06 20:07:08 +00:00
Maxime Coste
aadbd390c7 Use wide character function for categorizing codepoints
Previously we used the is... rather than isw...
These functions were not supporting non ascii characters correctly
2014-01-05 15:14:58 +00:00
Maxime Coste
1e6fbf548b Fix some tabs in the code 2014-01-05 14:30:26 +00:00
Maxime Coste
feaf197cae Add support for the erase key in prompt and insert mode
Fixes #18
2014-01-04 18:18:59 +00:00
Maxime Coste
8168cba1a3 Fix small misbehaviour in split_selections 2014-01-04 14:23:08 +00:00
Maxime Coste
540d82c452 shell_completion use command completion after | and &&
Fixes #21
2014-01-03 22:29:11 +00:00
Maxime Coste
3017531699 shell_completion uses command completion after semicolons 2014-01-03 20:47:49 +00:00
Maxime Coste
6c4c32eb59 Rewrite join_select_spaces
Stop using regex for selecting spaces at the begining of the line
2014-01-03 20:41:47 +00:00
Maxime Coste
26e8c45282 CommandManager: support completion of chained commands
Command completion now work after a command separator (;)

fixes #19
2014-01-03 20:07:40 +00:00
Maxime Coste
ae5115c31f Add support for absolute paths in find_file
fixes #11
2014-01-03 19:32:42 +00:00
Maxime Coste
3be77842db fix select_to_eol behaviour when on empty line
fixes #3
2014-01-03 19:00:19 +00:00
Maxime Coste
e12bf4978c Try prefix completion and then subsequence completion for option names
fixes #4
2014-01-03 19:00:05 +00:00
Maxime Coste
608098cdde InputHandler: selection first item when entering menu mode 2014-01-02 19:19:41 +00:00
Maxime Coste
ad7145dda4 Minor code cleanup in normal.cc 2014-01-01 18:45:28 +00:00
Maxime Coste
bcb53d8417 Add q and Q alias for single quote and double quote text object 2014-01-01 13:59:25 +00:00
Maxime Coste
d9b7eaef2b NCursesUI: no item is selected on menu_show 2013-12-30 22:41:08 +00:00
Maxime Coste
a34b943749 Support completing %opt{...} and %sh{...} in command manager 2013-12-30 14:22:18 +00:00
Maxime Coste
0b509735ca Extract shell_complete lambda as a proper function 2013-12-30 14:20:05 +00:00
Maxime Coste
56c3d9d137 Few cleanups in the command line parsing code 2013-12-29 18:37:48 +00:00
Maxime Coste
257f589e22 Add D for erasing with concatenated yanking 2013-12-26 10:40:22 +00:00
Maxime Coste
983abefc30 Add alt-| for piping and appending rather than replacing 2013-12-24 16:48:52 +00:00
Maxime Coste
fd17ea00dd CommandManager: use aliases for commands rather than duplicating data
Completion now only proposes full command names
2013-12-24 02:06:22 +00:00
Maxime Coste
22102951e2 make userconfig: install all kak scripts 2013-12-23 21:52:59 +00:00
Maxime Coste
fa72d27f9a Make kak more installable
* Kak relies on the kakrc file to be in ../share/kak/kakrc relative
to kak binary rather than in the same directory
* Added an install target to the Makefile
2013-12-23 21:36:05 +00:00
Maxime Coste
bcba5287ad Add complete_command for completing commands in PATH
use it for pipe completion
2013-12-23 20:43:55 +00:00
Maxime Coste
a0d4a44dd5 Fix prefix completion in prompt 2013-12-23 20:43:29 +00:00
Maxime Coste
c0973075fa Get rid of Editor for good
ClientManager now stores only the free windows, clients take
ownership of its own.
2013-12-20 20:14:57 +00:00
Maxime Coste
cb324a4b88 highlighters: add some optimization flags to regexes 2013-12-17 20:03:54 +00:00
Maxime Coste
0e6bbbb8c4 remove useless code in Buffer constructor 2013-12-16 23:53:04 +00:00
Maxime Coste
d9c3de3fc0 small cleanup in context_wrap 2013-12-16 23:51:57 +00:00
Maxime Coste
d1ac813f61 Pass a Context rather than a Window to highlighters 2013-12-16 23:24:08 +00:00
Maxime Coste
ae75594d25 Window: refactor center_selection/display_selection_at
Take the line we are intersted in as a parameter rather than getting
the main selection last char line.
2013-12-16 19:08:19 +00:00
Maxime Coste
94c9e4e99b Fix select_coord that could select invalid positions 2013-12-16 13:39:02 +00:00
Maxime Coste
6641583a68 cleanup editor.hh, remove editor.cc... 2013-12-15 22:10:19 +00:00
Maxime Coste
f83d5672f8 Fix replace_with_char behaviour, keep the same selections 2013-12-15 20:52:57 +00:00
Maxime Coste
ea95632709 Move Editor::selections_content to Context 2013-12-15 20:37:07 +00:00
Maxime Coste
ad0682ec75 remove unused Editor::check_invariant 2013-12-15 20:32:58 +00:00
Maxime Coste
8047cc97d3 Move Editor::{undo,redo} to free functions in normal.cc 2013-12-15 20:23:02 +00:00
Maxime Coste
cb9384f8a7 move InsertMode to normal.hh 2013-12-15 20:23:02 +00:00
Maxime Coste
7267b8281f Move insert and erase to normal.cc, and move edition management to context 2013-12-15 20:23:02 +00:00
Maxime Coste
e369b60258 Remove insert_hide_sel option 2013-12-15 14:57:55 +00:00
Maxime Coste
eb81eef03e Move SelectMode enum as an implementation detail in normal.cc 2013-12-15 14:38:04 +00:00
Maxime Coste
39b43f4c3c Less uses of Editor, in favor of Context 2013-12-15 14:33:09 +00:00
Maxime Coste
935bc3cec9 Add Context::selections method, and use it in priority to the Editor's one 2013-12-15 14:25:23 +00:00
Maxime Coste
9b6639eb27 Remove Editor::move_selections 2013-12-15 14:14:52 +00:00
Maxime Coste
4e3d551426 split_lines sets the last selection as the main one 2013-12-14 19:25:56 +00:00
Maxime Coste
49ee2495a4 Remove Editor::rotate_selections 2013-12-14 18:41:55 +00:00
Maxime Coste
d0d9717fcf Fix select_next_match 2013-12-14 18:40:29 +00:00
Maxime Coste
ce0e71aacb Remove Editor::select methods, add a non-const selections getter 2013-12-14 18:38:14 +00:00
Maxime Coste
0c4d523b22 Move template selectors to the header 2013-12-14 14:49:10 +00:00
Maxime Coste
93b561983a Rename MultiSelector to Selector 2013-12-14 14:38:17 +00:00
Maxime Coste
6afef079b6 Remove Editor::main_selection(|index), directly use the SelectionList method 2013-12-14 14:38:17 +00:00
Maxime Coste
eced7d4c24 SelectionList should never be empty 2013-12-14 14:38:17 +00:00
Maxime Coste
77590fe2e8 Move (keep|flip|remove|clear)_selections from editor method to free selectors 2013-12-14 14:38:17 +00:00
Maxime Coste
dad27fe1a0 Remove simple selectors, always go through a multi selector 2013-12-14 14:38:17 +00:00
Maxime Coste
f53ba0baed MultiSelectors takes a reference to the current selection and mutate it 2013-12-14 14:38:17 +00:00
Maxime Coste
db048a0792 MultiSelectors now transforms the whole selection 2013-12-14 14:38:17 +00:00
Maxime Coste
894ee0297e Move main selection index to SelectionList 2013-12-14 14:38:17 +00:00
Maxime Coste
dffd68a8ca honor jumpclient for grep 2013-12-13 14:00:14 +00:00
Maxime Coste
6966bf3303 make.kak: errjump tries to recognize current make directory 2013-12-13 13:58:12 +00:00
Maxime Coste
9a2e72f23c Fix cpp strings highlight 2013-12-13 13:55:08 +00:00
Maxime Coste
ed484dc333 Region highlighter takes regexes for region start/end 2013-12-12 22:49:41 +00:00
Maxime Coste
563f62b467 Fix Buffer::char_next when the line ends with an invalid utf8 sequence 2013-12-12 13:45:14 +00:00
Maxime Coste
bd80cf0404 Add DisplayAtom::check_invariant method 2013-12-12 13:45:08 +00:00
Maxime Coste
277b02eee6 Add experimental region_ref highlighter
highlights a region using another highlighter.
2013-12-11 23:19:24 +00:00
Maxime Coste
39512914ad Add BufWritePre and BufWritePost hooks 2013-12-11 13:58:38 +00:00
Maxime Coste
1b1031627c Add Buffer::run_hook_in_own_context helper method 2013-12-11 13:57:10 +00:00
Maxime Coste
91cc8dd8bf Add cursor_char_column env variable 2013-12-11 13:46:33 +00:00
Maxime Coste
f0c336a283 ctags.kak: Show message with Information colalias in gentags 2013-12-07 13:57:24 +00:00
Maxime Coste
9ecfcfad43 use -try-client in kak files rather than ad-hoc shell logic 2013-12-07 13:56:56 +00:00
Maxime Coste
0b473ffe58 eval and exec can use a -try-client option
When -try-client <client_name> is used, the context used for the
command is either the given client's context if the client is found,
or the  current one if not.
2013-12-07 13:44:23 +00:00
Maxime Coste
05d0397936 Add Client* ClientManager::get_client_ifp() that can return nullptr 2013-12-07 13:43:48 +00:00
Maxime Coste
3dde0b2260 fix strings in comment being highlighted as strings 2013-12-04 18:53:17 +00:00
Maxime Coste
35f12bc5a0 Use a cache for region highlighter 2013-12-04 18:52:16 +00:00
Maxime Coste
054ae08a9f use region highlighter for cpp 2013-12-04 00:48:57 +00:00
Maxime Coste
8b2f340238 Add basic region highlighter 2013-12-04 00:48:46 +00:00
Maxime Coste
e348c35b25 Write errors while sourcing a file in the debug buffer 2013-12-04 00:27:19 +00:00
Maxime Coste
c9eb65b04c Change rc files to use shared highlighters 2013-12-03 22:15:59 +00:00
Maxime Coste
45d5dbcc85 Add support for defining and referencing highlighters
* defhl <name> defines a shared highlighter
* addhl -def-group <name> adds highlighters to the defined highlighter
* addhl ref <name> add the defined highlighter to the window's ones
2013-12-03 22:07:23 +00:00
Maxime Coste
d5a5b1c329 fixup cpp.kak 2013-12-03 21:21:02 +00:00
Maxime Coste
a443ff7ea6 indent fixes 2013-12-03 19:49:09 +00:00
Maxime Coste
df57870470 rework cpp indenter, try to make them more readable 2013-12-03 19:49:09 +00:00
Maxime Coste
d880465f38 Do not pass a window to highlighters factories 2013-11-28 18:48:40 +00:00
Maxime Coste
a9d832965f RegexColorizer maintains a per buffer cache 2013-11-28 18:48:39 +00:00
Maxime Coste
255a747fdd Simplify FlagLines, do not try to update the option 2013-11-28 18:48:39 +00:00
Maxime Coste
2d55ff5feb Window: forget timestamp when options changes 2013-11-28 18:48:38 +00:00
Maxime Coste
fcf3e9e138 Improve ctags support
* cleanup tag command
* add a tag-complete command
* add a gentags command for launching ctags in the background
2013-11-28 18:48:09 +00:00
Maxime Coste
50325e62b0 fix prompt completion handling misbehaving with history 2013-11-28 18:48:09 +00:00
Maxime Coste
b83414ddf7 add alt-& for align indent 2013-11-22 09:55:32 +00:00
Maxime Coste
90ea3023fe reenable undo support on fifo buffers when the fifo closes 2013-11-20 22:18:40 +00:00
Maxime Coste
b90594353c NCursesUI: info_show do not require previous call to info_hide 2013-11-19 19:51:39 +00:00
Maxime Coste
44b0957e10 NCursesUI: fix redraw when showing a new menu 2013-11-19 19:51:39 +00:00
Maxime Coste
9a6712e56b rename idvaluemap to id_map, remove Id template param, use String 2013-11-18 22:24:31 +00:00
Maxime Coste
d27548dd15 Resurect idvaluemap, order of traversal matters
This reverts commit 2b9b161d42.
2013-11-18 22:17:50 +00:00
Maxime Coste
f57f065d76 Fix prompt completion 2013-11-18 21:47:16 +00:00
Maxime Coste
56c0d2de95 Fix insert completion 2013-11-18 21:45:42 +00:00
Maxime Coste
69113f30d1 fix git blame support in git-tools.kak 2013-11-18 01:37:03 +00:00
Maxime Coste
7f4d906774 move is_horizontal_blank to unicode.hh 2013-11-17 23:06:40 +00:00
Maxime Coste
2b9b161d42 remove idvaluemap, use unordered_map in place 2013-11-17 23:06:40 +00:00
Maxime Coste
c764fa7e25 write assert failed info to debug buffer 2013-11-17 13:25:58 +00:00
Maxime Coste
cb7ef23c44 fix invalid value handling for yes no ask options 2013-11-16 00:26:56 +00:00
Maxime Coste
62137f364d tweak initial debug infos 2013-11-15 23:47:44 +00:00
Maxime Coste
8c25d62056 extract InputHandler to input_handler.{cc,hh} 2013-11-14 21:12:59 +00:00
Maxime Coste
f8cadc0c57 move Client::m_name to context, no more need for DraftUI 2013-11-14 20:51:25 +00:00
Maxime Coste
ad275d1d1c Extract InputHandler from Client 2013-11-14 18:09:15 +00:00
Maxime Coste
fe55d51e9f Use Q for macro recording and q for replay, document macros in README 2013-11-14 13:59:32 +00:00
Maxime Coste
f287df2139 align always insert at selection begin 2013-11-14 13:44:55 +00:00
Maxime Coste
9a1d50d9a2 deindent now deindent non completely indented lines
If indent is 4 spaces, and a line has only 3 leading spaces, they
will get removed. a-< can be used to avoid this behaviour.
2013-11-14 13:44:54 +00:00
Maxime Coste
04ae48c346 indent cleanup, correct erroneous 3 spaces indent 2013-11-14 00:12:15 +00:00
Maxime Coste
9679b17b16 tweak style cpp.kak 2013-11-14 00:11:27 +00:00
Maxime Coste
323997041d Do not use eval for grepcmd, as it will evaluate \ escapes as well 2013-11-14 00:07:14 +00:00
Maxime Coste
d2e360a1c8 move cpp indentation to helper hidden commands 2013-11-13 13:11:22 +00:00
Maxime Coste
b2cb5b421c Centralize file mimetype detection in mime.kak
This way, 'file --mime-type $buffer' is called only once per file
rather than once per filetype detection hook.
2013-11-12 20:38:00 +00:00
Maxime Coste
db5050fab0 Add BufSetOption hook support 2013-11-12 20:36:42 +00:00
Maxime Coste
0244112af4 Add support for hidden commands, that will not show on completion 2013-11-12 19:38:19 +00:00
Maxime Coste
5a4650aecc Add support for hidden options, not showed by completion
the decl command can take a -hidden parameter to hide an option
2013-11-12 19:21:07 +00:00
Maxime Coste
c4de866903 Fix select_to_previous_word when cursor is on last buffer char 2013-11-12 18:59:19 +00:00
Maxime Coste
67452c3441 Tweak prompt auto show completion
* Auto show completion even before the first key is pressed
* Auto show next completions when validating a single choice completion
2013-11-12 18:56:48 +00:00
Maxime Coste
6877ae151f Do not require call to menu_hide before menu_show in ncurses ui 2013-11-12 18:52:30 +00:00
Maxime Coste
83a6375263 Fix StronglyTypedInteger::operator%= 2013-11-11 19:11:17 +00:00
Maxime Coste
6b77860fc0 Make Context a class, not a struct 2013-11-11 19:10:49 +00:00
Maxime Coste
bc1d1ba59f Fix warnings 2013-11-10 22:51:52 +00:00
Maxime Coste
03a6561f50 use abreviated form for keys in client.cc 2013-11-10 22:48:56 +00:00
Maxime Coste
4b518ee6b9 Add support for function keys F1-F12 2013-11-09 11:12:55 +00:00
Maxime Coste
a7ed017ef3 cleanup Makefile 2013-11-09 11:12:25 +00:00
Maxime Coste
b4cc8edd35 Use eval ${kak_opt_(make|grep}cmd} in (make|grep).kak
Quotes in the variable are preserved that way.
2013-11-08 19:05:30 +00:00
Maxime Coste
414a1332eb update cpp indentation hooks, indent after visibilty specifier 2013-11-08 19:04:28 +00:00
Maxime Coste
82b1619b05 cleanup cpp hooks 2013-11-07 21:58:19 +00:00
Maxime Coste
a11bccaa12 fix Buffer constructor exception safety 2013-11-07 21:43:18 +00:00
Maxime Coste
d4216efd75 clang.kak: wrap clang-autocomplete hook in a try %{} 2013-11-07 18:50:16 +00:00
Maxime Coste
bfbb44d994 Makefile: use boost_regex-mt on Cygwin 2013-11-07 18:49:12 +00:00
Maxime Coste
0b23a4f67b cpp indent improvement
* auto inserts a ; after } if it closes a class or struct
* auto copy the // comment of the previous line
2013-11-07 18:45:08 +00:00
Maxime Coste
2eb1a323d9 fix kakrc string highlighting 2013-11-07 18:44:27 +00:00
Maxime Coste
79883f6a51 make align tab-aware 2013-11-06 19:13:06 +00:00
Maxime Coste
f2a902f682 Add modulo operators to StronglyTypedNumber 2013-11-06 19:10:35 +00:00
Maxime Coste
7495d04a47 Add support for -itersel option in exec/eval
-itersel makes a -draft eval/exec run once for each selections
separately rather than with all selections at a time.
2013-11-05 23:50:44 +00:00
Maxime Coste
088f670fe9 update cpp indent hooks, add align to opening paren support 2013-11-04 22:23:55 +00:00
Maxime Coste
68a27af56e Use InsertChar hook for char insertion, and InsertKey for key press 2013-11-04 22:02:44 +00:00
Maxime Coste
9521413b62 Tweak insert completion behaviour 2013-11-04 22:02:44 +00:00
Maxime Coste
dd6462ed57 regex option highlighter use runtime window rather than creation time one 2013-11-04 22:02:44 +00:00
Maxime Coste
02312fe5ff Allow to ommit the catch part in the try command 2013-11-04 22:02:44 +00:00
Maxime Coste
5e54705e26 simplify clang-enable-autocomplete, no need for shell 2013-11-04 22:02:44 +00:00
Maxime Coste
471aeaab9a remove filters, use hooks instead 2013-11-04 22:02:44 +00:00
Maxime Coste
4c39743b69 cpp.kak: replace filters with hooks 2013-11-04 22:02:44 +00:00
Maxime Coste
3e12507636 Remove IncrementalInserter and move it's code to InputModes::Insert 2013-11-04 22:02:43 +00:00
Maxime Coste
3e1bb777ce Add automatic completion display in prompt mode
Controlled by the autoshowcompl option
Completers now take a CompletionFlag parameter, used to specify
we want fast completion (tag completion can be slow, we do not
want to run it if not explicitely wanted by the user).
2013-11-04 21:59:28 +00:00
Maxime Coste
70e94cb00a Fix select_next_match that would select the end of the buffer in some circumstances 2013-11-04 21:59:28 +00:00
Maxime Coste
7b0eeb26b1 Run new clients in a new process session
When running a terminal emulator containing a kakoune client,
it used to still have the server tty as controlling termnal,
and so received SIGINT's from the user in it. Termnal emulators
then responded by exiting. This is no longer the case.
2013-11-04 21:59:28 +00:00
Maxime Coste
feff965ac6 Remove setg/setb/setw and use set <scope>
(with scope a prefix of global,buffer or window)
2013-10-30 09:38:40 +00:00
Maxime Coste
cc01aab8b8 add <a-gt> for indenting even empty lines 2013-10-30 08:45:47 +00:00
Maxime Coste
dc1fbcdaa2 minor style fix 2013-10-26 19:23:00 +01:00
Maxime Coste
90d499b94d Add a WinClose hook 2013-10-26 18:51:25 +01:00
Maxime Coste
29ab42149c Keep does nothing if an empty regex is entered (rather than crashing) 2013-10-26 18:46:21 +01:00
Maxime Coste
cf6c07d37d Specify key modifiers using constexpr functions for brevity 2013-10-26 18:42:36 +01:00
Maxime Coste
0746e7309e InputMode::Prompt: use an enum for mode rather than bool m_insert_reg 2013-10-26 14:06:27 +01:00
Maxime Coste
ebd768e03d remove unneeded code in client 2013-10-26 11:49:16 +01:00
Maxime Coste
2c09da50be Add key mapping support 2013-10-25 00:30:46 +01:00
Maxime Coste
77ac777526 use prefix matching for hook scope 2013-10-25 00:00:44 +01:00
Maxime Coste
748cc79d0f Add std::hash specialization for std::pair 2013-10-24 22:21:41 +01:00
Maxime Coste
baa9f28714 Add an autoreload YesNoAsk option, for configuring buffer reloading behaviour. 2013-10-21 18:58:11 +01:00
Maxime Coste
76deb60771 Add YesNoAsk type for options 2013-10-21 18:57:48 +01:00
Maxime Coste
60dbec4949 Add Buffer::reload for reloading buffers without loosing options and hooks 2013-10-21 18:57:19 +01:00
Maxime Coste
9e9b503f5d Code style cleanups in ncurses.{cc,hh} 2013-10-17 18:48:12 +01:00
Maxime Coste
44281c8fed More robust Buffer filesystem timestamp handling 2013-10-17 18:47:09 +01:00
Maxime Coste
c3bafea2cd Improve NCurses UI menu scroll bar, use a variable height 2013-10-17 00:32:13 +01:00
Maxime Coste
03c74b7a88 Detect file external modification and ask the user whether to reload or not
* Buffer now store a m_fs_timestamp field.
* Client in Normal mode checks current buffer file every 500 ms, or
  each time it goes back to Normal mode.
2013-10-15 18:51:31 +01:00
Maxime Coste
fe0a4f0d11 Reset normal mode when changing the current editor 2013-10-15 18:50:43 +01:00
Maxime Coste
608196f526 Fix indent code, support indentwidth=0 for using tabs 2013-10-14 13:47:43 +01:00
Maxime Coste
bc3cfb9016 Fix ctags.kak function info support 2013-10-11 18:45:23 +01:00
Maxime Coste
17951bf077 Fix Editor::remove_selection when the main selection is the first one and is the removed one 2013-10-11 18:44:43 +01:00
Maxime Coste
ee0e6dcef9 Display session name in the status line 2013-10-11 18:43:39 +01:00
Maxime Coste
d1159be19c Use { and } for extending selection to object start/end 2013-10-11 09:58:35 +01:00
Maxime Coste
632e7e217e Save last pipe command to the '|' register, and use it for empty cmd 2013-10-11 00:31:03 +01:00
Maxime Coste
3c959cee99 Pass title to UserInterface::info_show
Move unicode box generation and assistant code as
a NcursesUI implementation detail.
2013-10-11 00:17:22 +01:00
Maxime Coste
93f6a2ee43 Display target register name in status line when recording a macro 2013-10-11 00:17:22 +01:00
Maxime Coste
59ae6411f5 Only allow recording macro to register a-z 2013-10-11 00:17:21 +01:00
Maxime Coste
c478a97a2f Let InputModes describe themselves for status line display 2013-10-11 00:17:21 +01:00
Maxime Coste
74fe8b5e8d Remove Context::numeric_param, pass it directly to normal mode functions 2013-10-10 21:22:20 +01:00
Maxime Coste
00c8d1a4fa Fix tabs that appeared in the codebase 2013-10-08 19:28:57 +01:00
Maxime Coste
ab925686ab Improve object selection support
* A count is supported for nestable objects so that we
  can specify the surrounding level.
* more symetric behavior for select to end/ to begin
2013-10-08 19:28:18 +01:00
Maxime Coste
fccb954611 Use WordType enum instead of a bool punctuation_is_word for word selector 2013-10-07 18:44:22 +01:00
Maxime Coste
6e5ff644f2 add <a-R> for rotating selections content 2013-10-02 19:10:43 +01:00
Maxime Coste
6331fb5a61 Add <c-s> for saving current selection in the jump list 2013-10-02 18:49:06 +01:00
Maxime Coste
307fc228d2 Add <c-u> in insert mode for forcing commiting the current undo group 2013-10-02 18:45:39 +01:00
Maxime Coste
bc051c53af Cleanup dynamic registers init, and add # register for selection count 2013-10-01 19:52:19 +02:00
Maxime Coste
fb80ef092e clean up env var registration 2013-10-01 19:47:37 +02:00
Maxime Coste
c312b06e39 Do not push jump on search next 2013-09-27 19:26:52 +01:00
Maxime Coste
560e3397e8 minor cleanup 2013-09-27 19:24:18 +01:00
Maxime Coste
61cc53b325 Support highlighters that add new lines in scroll_to_keep_cursor_visible 2013-09-27 19:16:49 +01:00
Maxime Coste
3021c7f60a Remove $kak_socket replaced with $kak_session
use /tmp/kak-$kak_session to get the socket path
2013-09-25 19:04:52 +01:00
Maxime Coste
b080f456a7 Do not take directories into account when completing buffer name
(except if a / is found in the completion prefix)
2013-09-25 18:59:03 +01:00
Maxime Coste
60f4e1104f complete_filename fallback on subsequence completion if prefix does not work 2013-09-24 10:16:47 +02:00
Maxime Coste
9018bc47df use subsequence instead of regex matching for buffer completion 2013-09-24 10:13:39 +02:00
Maxime Coste
bab10f5b93 add subsequence_match(str, subseq) utility function 2013-09-23 21:17:16 +02:00
Maxime Coste
5ae43acf94 Add prefix_match function and use it instead of adhoc code 2013-09-23 21:16:25 +02:00
Maxime Coste
5a02d38081 small optimization in event manager 2013-09-23 20:32:45 +02:00
Maxime Coste
124be2ac2e extract client main to a run_client function 2013-09-23 20:28:15 +02:00
Maxime Coste
ce4ed44496 Add missing newlines to printed messages 2013-09-21 17:10:37 +02:00
Maxime Coste
b1d62a307d Add a -d command line option for running Kakoune as a headless server 2013-09-19 20:09:53 +01:00
Maxime Coste
415be1d2c7 Add a -s command line option for specifying session name 2013-09-19 19:54:14 +01:00
Maxime Coste
0b63074f90 extract main kakoune code to a kakoune function 2013-09-19 19:53:04 +01:00
Maxime Coste
03588f1b78 Support multiple selections per ligne when aligning 2013-09-18 18:54:04 +01:00
Maxime Coste
e70d75d6a6 Only redraw clients after handling all available events 2013-09-17 18:51:14 +01:00
Maxime Coste
7fef7ec063 Add a InputMode::on_replaced virtual method.
Destructors are not a good place to run mode exit hooks, as they
wont be called until the next mode trash clearing, so we now call
this virtual method on the previous mode just before it gets replaced.
2013-09-16 19:38:28 +01:00
Maxime Coste
168b4b775b Do not clear Client::m_mode_trash in handle_key, but in handle_available_input
handle_key can be called from exec_keys while running a hook, and a previous
key in exec_keys could have changed the mode. This would make the mode that
runned the hook deleted when the controls returns to it.

handle_available_input should always be called at top level, so can safely
clear the mode trash.
2013-09-16 19:25:18 +01:00
Maxime Coste
06e06d6ea6 remove print_status from UserInterface, pass status line to draw
Client store the current status line. This way calls to print status
do not force the user interface to display directly.
2013-09-16 19:15:13 +01:00
Maxime Coste
49903523a7 Resurect Client::handle_available_input() 2013-09-16 18:48:41 +01:00
Maxime Coste
27a1e70b01 Rework client name change 2013-09-13 00:01:47 +02:00
Maxime Coste
000af8e206 Fix clang.kak, now that eval -draft does not use the client user interface 2013-09-12 23:52:43 +02:00
Maxime Coste
fd021de7d7 use directly context.client() for getting the kak_client env var value 2013-09-12 23:49:08 +02:00
Maxime Coste
823812fd1a rename InputHandler to Client 2013-09-12 23:47:23 +02:00
Maxime Coste
ac7e437730 Move Client responsibilities to InputHandler
InputHandler owns it's UserInterface, and is directly stored by the ClientManager.
2013-09-12 23:39:34 +02:00
Maxime Coste
916a0cb52e Allow :exec mode changes to remains when keys are finished
Pass keys one by one to the input handler so that BatchUI is not needed
We can now use :exec to pre-fill the command line without validating
the command.
2013-09-11 18:58:23 +01:00
Maxime Coste
96fc340a5c add alt-& which aligns inserting spaces before selection start 2013-09-02 13:30:46 +01:00
Maxime Coste
70cd671ef6 support absolute filenames in insert mode filename completion 2013-08-29 13:50:55 +01:00
Maxime Coste
2125d95076 Use the Information color alias for auto info boxes 2013-08-29 13:50:24 +01:00
Maxime Coste
1d790541f5 handle client disconnection without crashing 2013-08-28 19:20:12 +01:00
Maxime Coste
ef01cf71ff tolerate empty strings (interpreted as 0) as line and column parameters in edit 2013-08-28 19:05:01 +01:00
Maxime Coste
3150fe97cf selections env var is : separated, and : in selections are escaped 2013-08-28 18:52:29 +01:00
Maxime Coste
535a454349 Line completion: sort and uniquify lines 2013-08-06 11:35:38 +02:00
Maxime Coste
9148b1ae92 Add line completion 2013-08-05 10:23:13 +02:00
Maxime Coste
c05f9f31dd add support for explicit insert mode completion using C-x prefix 2013-08-04 19:34:08 +02:00
Maxime Coste
0f4cecfa3e BufferCompleter refactoring, add support for explicit filename completion with c-f 2013-08-04 18:59:31 +02:00
Maxime Coste
3fe0b8e719 Move insert mode completion functions into BufferCompleter 2013-08-04 17:42:09 +02:00
Maxime Coste
6b66a3dfe5 Add support for filename insert mode completion 2013-08-02 17:58:37 +01:00
Maxime Coste
af17010524 contains: do not check if container is empty 2013-08-01 18:35:13 +01:00
Maxime Coste
a2577b4180 buffer: move Buffer::Flags operator as friends defined inside Buffer 2013-08-01 00:28:01 +02:00
Maxime Coste
c6f08f6c34 fix c++11 union use in remote.cc 2013-07-31 00:32:51 +02:00
Maxime Coste
3c8df764be fix insert mode erase utf-8 handling, add unit test 2013-07-30 19:18:01 +01:00
Maxime Coste
c84b861d2f remove useless SelectionList copy in keep 2013-07-29 13:51:07 +01:00
Maxime Coste
4f452474c8 non-regex based implementation of split_lines 2013-07-29 13:50:31 +01:00
Maxime Coste
af8e8d27d4 Minor code cleanups 2013-07-28 16:40:02 +02:00
Maxime Coste
5dfd4a9869 more auto info for normal commands waiting for a key press 2013-07-27 15:58:06 +02:00
Maxime Coste
0267540985 Do not select the first line indent in inner indent select 2013-07-27 15:37:28 +02:00
Maxime Coste
740a6562d9 enable autoinfo by default 2013-07-26 18:52:25 +01:00
Maxime Coste
c3359f7edc fix some auto info boxes text 2013-07-26 18:52:05 +01:00
Maxime Coste
8281d8c626 git-tools: use : as list separator, escape it correctly 2013-07-26 02:01:01 +02:00
Maxime Coste
233cb530fc read<T>(int socket): type aliasing compliance 2013-07-26 01:50:36 +02:00
Maxime Coste
a4138201b0 Key: always pass by value 2013-07-26 01:50:36 +02:00
Maxime Coste
eedd37c09a memoryview: always pass by value 2013-07-26 01:50:36 +02:00
Maxime Coste
3862b5cbb8 LineAndColumns: always pass by value 2013-07-26 01:50:09 +02:00
Maxime Coste
5d681f9efe StronglyTypedNumber: take parameters by value 2013-07-26 01:49:57 +02:00
Maxime Coste
d5453152b3 Color,ColorPair: always pass by copy 2013-07-26 00:54:58 +02:00
Maxime Coste
8f73d3c173 fix last eol matching in regex highlighters 2013-07-25 00:18:50 +02:00
Maxime Coste
3da97c4269 decl command support bool type options 2013-07-24 22:56:21 +02:00
Maxime Coste
38c7197770 go back to : as set/list separator in options 2013-07-24 22:41:41 +02:00
Maxime Coste
d29fb6f2c4 list,set and tuple options support escaping the separator 2013-07-24 22:41:13 +02:00
Maxime Coste
b5db256384 string escaping support functions
the split function now takes an additional escape parameter and
does not split on separators that have the escaper before it.

An utility escape function that adds escape before separators
is also added.
2013-07-24 22:37:17 +02:00
Maxime Coste
d6425f1d50 merge AtomContent into DisplayAtom 2013-07-24 13:55:57 +01:00
Maxime Coste
f6308409a1 pipe: auto insert and end of line if needed 2013-07-24 13:38:26 +01:00
Maxime Coste
62fdacb757 Add scroll left/right support 2013-07-24 01:38:30 +02:00
Maxime Coste
8633a37dad Try to keep the selection start visible if possible 2013-07-24 01:34:00 +02:00
Maxime Coste
c7e52a650d DisplayLine no longer map to a single buffer line, but to a buffer range 2013-07-24 01:33:12 +02:00
Maxime Coste
486ebed098 try to preserve display column rather than buffer column when moving line 2013-07-23 20:46:15 +02:00
Maxime Coste
5a6922a045 expand_unprintable: use iscntrl rather than isprint which does not work as expected 2013-07-23 20:42:35 +02:00
Maxime Coste
c58bab0f66 Add indent object type (bound to i) 2013-07-23 19:12:53 +01:00
Maxime Coste
8ab7496058 use C isalnum instead of C++ std::isalnum 2013-07-15 13:49:50 +01:00
Maxime Coste
ee2d18df04 fix selection to search pattern word begin detection 2013-07-15 13:49:04 +01:00
Maxime Coste
90b92aed3c add support for tolower (), toupper (~), and swap case become alt- 2013-07-12 13:55:48 +01:00
Maxime Coste
81b5c477f6 Compile with gnu++11 so that cygwin is happy, and remove unneeded -lmenu 2013-07-12 13:17:12 +01:00
Maxime Coste
fcb3594e4a NCursesUI::draw_menu: be tolerant when the menu_win was not created 2013-07-12 13:15:56 +01:00
Maxime Coste
1388c0d540 Editor: clamp coordinates in select(BufferCoord) 2013-07-12 13:15:31 +01:00
Maxime Coste
0ba1ab04f0 cpp.kak: wrap trailing whitespace cleanup hook in a try catch 2013-07-12 13:13:54 +01:00
Maxime Coste
37807ba19b Add support for arrow keys in normal mode
use a Direction enum instead of a bool forward parameter
2013-07-02 19:48:05 +01:00
Maxime Coste
6484fead0c replace with char only replaces when entered character is printable 2013-07-02 19:48:04 +01:00
Maxime Coste
c1b2f7ef6a use C locale function instead of C++ ones 2013-07-02 19:48:04 +01:00
Maxime Coste
2dcdc0cf4b more horizontal scrolling fixes 2013-06-29 16:50:51 +02:00
Maxime Coste
e510bf8b96 Fix horizontal scrolling support with replaced buffer ranges
tab character were not properly handled when scrolling horizontally
2013-06-28 00:03:11 +02:00
Maxime Coste
5b4ef23b9d more tolerant Buffer::string 2013-06-27 23:49:34 +02:00
Maxime Coste
b1f31d2e12 change string parsing behaviour in command manager
* single and doubly quoted strings correctly remove the \ when their
delimiter is quoted ('\'' is interpreted as ', not \')

* %{} strings do not support quoting when using matching pairs, so
  %{\} is interpreted as \, however when using same ending character
  as delimiter quoting still works: %~\~~ is interpreted as ~.
2013-06-27 19:07:26 +01:00
Maxime Coste
56bb0f9f2c clang.kak: use socat in unidirectional mode 2013-06-21 18:51:18 +01:00
Maxime Coste
60dfeb2821 fix highlighting bug with inserting at eol on lines with tabs 2013-06-21 18:50:45 +01:00
Maxime Coste
c6bf0b4cc3 add missing errno include to file.cc 2013-06-19 19:29:05 +01:00
Maxime Coste
a3e032abd6 enable /proc/ method for runtime_directory with cygwin 2013-06-19 19:29:05 +01:00
Maxime Coste
6d125e6c36 do not use std::{to_string,stoi} as they cause problems with cygwin 2013-06-19 19:29:05 +01:00
Maxime Coste
a642026e7c more portable use of ncurses 2013-06-19 19:29:04 +01:00
Maxime Coste
3e9439ac9f restore compilation with gcc 4.7 2013-06-18 21:44:00 +02:00
Maxime Coste
ea9414fa21 Fix input completion on multiple selection 2013-06-12 00:43:11 +02:00
Maxime Coste
bd8daac3a1 Fix UndoGroupOptimizer 2013-06-12 00:14:05 +02:00
Maxime Coste
7306f6b33b Buffer: always use {line_count(), 0} as end in Modifications 2013-06-06 20:02:20 +02:00
Maxime Coste
59b996be75 add an UndoGroupOptimizer test 2013-06-06 19:54:13 +02:00
Maxime Coste
2a74b0e9e2 Buffer: insert and erase go back to taking iterators, and return iterators 2013-06-06 19:44:08 +02:00
Maxime Coste
cf454ef904 UndoGroupOptimizer: fix count_byte_to 2013-06-06 19:44:08 +02:00
Maxime Coste
357799c966 replace remaining plain assert with kak_assert 2013-06-06 19:44:08 +02:00
Maxime Coste
3d8eecbbb6 minor cleanups Editor 2013-06-06 19:44:08 +02:00
Maxime Coste
bd504058d9 remove unused Buffer::char_at 2013-06-06 19:44:07 +02:00
Maxime Coste
12d3b64a1b avoid_eol: use direct line access 2013-06-06 19:44:07 +02:00
Maxime Coste
58ff97d51d use_selection_as_search_pattern: use iterators instead of coords 2013-06-06 19:44:07 +02:00
Maxime Coste
43ff1909fb add utf8::make_iterator helper function 2013-06-06 19:44:07 +02:00
Maxime Coste
245e68e26e utf8_iterators: rename underlying_iterator to base 2013-06-06 19:44:07 +02:00
Maxime Coste
70bf71e51f remove Buffer:char_{distance,advance} use line access instead 2013-06-06 19:44:07 +02:00
Maxime Coste
580749a91d Buffer: remove line_length and replace line_content with operator[] 2013-06-06 19:44:07 +02:00
Maxime Coste
6b667bc803 remove BufferIterator conversion to/from BufferCoord 2013-06-06 19:44:07 +02:00
Maxime Coste
777158e86d remove BufferIterator::is_valid() 2013-06-04 18:56:28 +02:00
Maxime Coste
a23aa10797 remove BufferIterator::buffer() 2013-06-04 18:55:06 +02:00
Maxime Coste
9fb4d42408 remove BufferIterator::is_{begin,end} 2013-06-04 18:53:56 +02:00
Maxime Coste
51acd456cc remove BufferIterator::{line,column}() 2013-06-04 18:53:28 +02:00
Maxime Coste
ee22596d61 tweak Buffer::{,char_}prev 2013-06-04 18:53:28 +02:00
Maxime Coste
cf1f26ac91 fix Editor::move_selections(LineCount...) on buffer bounds 2013-06-04 18:53:13 +02:00
Maxime Coste
cc70e3ed70 selectors.cc: avoid dereferencing buffer end 2013-06-04 14:21:07 +02:00
Maxime Coste
5c2e3b25fa Window: use AtomContent::length in scroll_to_keep_cursor_visible_ifn 2013-06-04 14:21:07 +02:00
Maxime Coste
76f55f5256 remove useless iterator_at calls 2013-06-04 14:21:07 +02:00
Maxime Coste
c4f9253634 Remove Buffer::iterator_at_line_{begin,end}, use iterator_at(line{,+1}) 2013-06-04 14:21:07 +02:00
Maxime Coste
503f0cce25 IncrementalInserter: use coords instead of iterators 2013-06-04 14:21:07 +02:00
Maxime Coste
fb41e1fdf9 tweak Buffer::do_insert 2013-06-04 14:21:07 +02:00
Maxime Coste
4ef1bfa4db Use coord instead of iterators for selections 2013-06-04 14:21:07 +02:00
Maxime Coste
02b33c7d8f Buffer: add methods for char access instead of byte access 2013-06-03 18:56:48 +02:00
Maxime Coste
b198f6a5fb Fix select_whole_paragraph so that buffer end is not selected 2013-06-03 14:27:51 +02:00
Maxime Coste
24ffd6abae DynamicSelectionList check that buffer end is not selected 2013-06-03 14:26:05 +02:00
Maxime Coste
b51799a2b2 Explicitly pass buffer to selectors 2013-06-01 14:22:57 +02:00
Maxime Coste
3453ebbd52 BufferChangeListener: pass buffer to on_{inser,erase} 2013-06-01 00:48:46 +02:00
Maxime Coste
8ddeb141c8 Fix insert completion at beginning of buffer 2013-05-30 18:52:03 +02:00
Maxime Coste
2d96f853f8 Add utf8::codepoint_size function 2013-05-30 18:49:50 +02:00
Maxime Coste
28e127a48a remove avoid_eol parameter from Buffer::{iterator_at,clamp} 2013-05-30 14:23:25 +02:00
Maxime Coste
07c8379313 BufferIterator are Random Access iterators 2013-05-30 14:05:05 +02:00
Maxime Coste
d2df6a9f15 remove BufferIterator::clamp 2013-05-30 14:00:41 +02:00
Maxime Coste
5e64f6d1ec remove Selection::buffer 2013-05-30 13:59:38 +02:00
Maxime Coste
5b0087b545 InputHandler: pass buffer and BufferCoord to completers 2013-05-30 13:59:38 +02:00
Maxime Coste
ae947b456d remove BufferIterator::offset 2013-05-30 13:59:38 +02:00
Maxime Coste
dbb1c57ec9 minor code cleanups in filters.cc 2013-05-30 13:59:38 +02:00
Maxime Coste
557acc5068 reorganize check_invariant in SelectionList 2013-05-30 13:59:38 +02:00
Maxime Coste
7f8d5c1fd0 Remove Range::content 2013-05-30 13:59:38 +02:00
Maxime Coste
93dd1ff3c7 Remove begin/end from Ranges, replace with min/max
Ranges should not be utf8 aware (needed for end), and a lot of
uses for end() were in fact looking for max.
2013-05-30 13:59:38 +02:00
Maxime Coste
a07fde181a Add Buffer::{next,prev,at}(BufferCoord) methods and use them in iterators 2013-05-30 13:59:38 +02:00
Maxime Coste
9a80a58ff4 buffer end should not be in a selection 2013-05-30 13:59:38 +02:00
Maxime Coste
462da52218 InputHandler: less iterators, more coords 2013-05-30 13:59:38 +02:00
Maxime Coste
52b77c1915 window, editor: take coords rather than iterators parameters 2013-05-30 13:59:38 +02:00
Maxime Coste
4f1ba860f8 minor tweak buffer iterator 2013-05-30 13:59:38 +02:00
Maxime Coste
7f17644a6b Buffer insert and erase takes coord rather than iterators 2013-05-30 13:59:38 +02:00
Maxime Coste
2902cc3275 BufferIterator convert implicitly to const BufferCoord& 2013-05-30 13:59:38 +02:00
Maxime Coste
d5b190369a DisplayBuffer: use coords rather than iterators 2013-05-30 13:59:38 +02:00
Maxime Coste
97df6f2222 AtomContent uses coord rather than iterators 2013-05-29 18:58:20 +02:00
Maxime Coste
81ce4e4720 pass window param to highlighters 2013-05-29 18:58:20 +02:00
Maxime Coste
6c290eff9a Buffer::do_{erase,insert} takes coord parameters rather than iterators
BufferChangeListeners do as well use coord rather than iterators
2013-05-29 18:58:20 +02:00
Maxime Coste
f23f48172f Buffer: add some method to work directly with coord instead of iterators 2013-05-29 18:58:20 +02:00
Maxime Coste
6cb8d69d29 Context: return DynamicSelectionLists in jump_{forward,backward} 2013-05-29 18:56:14 +02:00
Maxime Coste
9630990b74 Remove Selection::avoid_eol, move as static func in editor.cc
Conflicts:
	src/editor.cc
2013-05-29 18:53:57 +02:00
Maxime Coste
9991292bd3 tweak number line highlighter style 2013-05-24 18:39:28 +02:00
Maxime Coste
ad178e383b insert mode completion for all selection that matches the main one prefix 2013-05-21 19:21:55 +02:00
Maxime Coste
eab1213555 throw an error when gf does not find any file to open 2013-05-21 14:01:04 +02:00
Maxime Coste
258637222f Word completion can optionally look for candidates in all buffers
completers option accept word=buffer or word=all values
2013-05-20 14:10:53 +02:00
Maxime Coste
f3ad51444d move line_with_cursor as LineEditor::build_display_line 2013-05-17 14:29:15 +02:00
Maxime Coste
48f98eae97 Allow macros to call other macros, only recursive macro calls are forbidden 2013-05-17 14:22:48 +02:00
Maxime Coste
c3d53d588d revive str_to_int so that the good exception type is thrown on error 2013-05-17 14:09:42 +02:00
Maxime Coste
37a2363301 cpp.kak: fix alt now that alt_dirs is a proper list 2013-05-17 14:08:02 +02:00
Maxime Coste
585c8ba3cf Show an info box with available option when waiting for a key
Controled with the autoinfo option (disabled by default)
2013-05-16 22:33:48 +02:00
Maxime Coste
c91cea9dc3 fix ncurses info box placement 2013-05-16 22:33:28 +02:00
Maxime Coste
23f43376df fix NCurses info box, avoid trailing space on each lines 2013-05-16 21:46:15 +02:00
Maxime Coste
b2dffbabb6 more robust NCursesUI::menu_show 2013-05-16 21:44:58 +02:00
Maxime Coste
310e0f5bd3 cpp.kak: fix alt_dirs option default value 2013-05-16 19:23:54 +02:00
Maxime Coste
400e46719d Add scrolloff option support 2013-05-16 19:22:44 +02:00
Maxime Coste
389438164d add '&' for aligning selections 2013-05-15 18:47:50 +02:00
Maxime Coste
64b20729a5 Full object selection support for paragraphs and sentences 2013-05-15 14:24:09 +02:00
Maxime Coste
ef7d90cbfa colalias can reference another alias 2013-05-15 14:01:23 +02:00
Maxime Coste
1fb971e389 Editor::select(Selection, SelectMode::Extend) now only keeps the extended main selection 2013-05-14 13:58:41 +02:00
Maxime Coste
9cbf790d13 tweak Range::merge_with behaviour 2013-05-14 13:58:35 +02:00
Maxime Coste
2b12b72d6e fix overlaps(Range, Range) 2013-05-14 13:58:19 +02:00
Maxime Coste
42be2b23ca fix regex prompt whith empty regex 2013-05-13 18:43:38 +02:00
Maxime Coste
26f0fd4cc6 Use more std::* for string handling 2013-05-13 18:43:38 +02:00
Maxime Coste
56ab33c9d6 support specifying colors with RGB components 2013-05-13 14:25:05 +02:00
Maxime Coste
3a49e05832 Option can be declared with a checker function.
The checker function may throw if to be set option value is invalid.
Implemented with the completers option.
2013-05-06 13:52:41 +02:00
Maxime Coste
c1615b5c15 add unordered_set option support, use it for completers 2013-05-06 13:52:20 +02:00
Maxime Coste
2342e7686f add specialized contains function for unordered_set 2013-05-06 13:51:23 +02:00
Maxime Coste
42d7fcacd8 add a completers option for specifying which completer to use for BufferCompleter 2013-05-03 18:44:27 +02:00
Maxime Coste
39f9ca33c8 BufferCompleter: avoid modifying the buffer when not needed 2013-05-03 18:44:27 +02:00
Maxime Coste
33740d06ee Editor: tweak behaviour on undo/redo when selecting modified ranges 2013-05-03 18:44:26 +02:00
Maxime Coste
564cfb084e Editor: undo and redo select all ranges modified instead of the last one 2013-05-03 18:44:26 +02:00
Maxime Coste
4c4b6a404d add SelectionList::check_invariant 2013-05-03 18:44:26 +02:00
Maxime Coste
9b3e0c8055 Move selection update code to SelectionList 2013-05-02 19:04:59 +02:00
Maxime Coste
4ab5c7a203 DisplayBuffer: optimize Text and ReplacedBufferRange as well 2013-05-02 18:57:15 +02:00
Maxime Coste
d238707e6d Fix UndoGroupOptimizer 2013-04-30 19:01:20 +02:00
Maxime Coste
b69c9ea753 add paragraph (p) object 2013-04-30 14:29:18 +02:00
Maxime Coste
4bb3863f95 add sentence (s) object 2013-04-30 14:21:48 +02:00
Maxime Coste
bef48b7df0 Fix UndoGroupOptimizer 2013-04-29 14:25:38 +02:00
Maxime Coste
11bc24f992 FlagLines: use a shared updaters for options
previously, having two windows showing the same buffer with
the same line flags would have updated the options twice, resulting
in wrong lines in option. Now line flags options are updated only
once by a shared object along all FlagLines highlighter using the
same option.
2013-04-29 14:20:42 +02:00
Maxime Coste
ba562367f0 catch errors when opening files given on command line 2013-04-29 13:50:13 +02:00
Maxime Coste
4a0aa96160 fix bug in compact_path 2013-04-29 13:49:47 +02:00
Maxime Coste
d49f35817e fix handling of ~ in filenames so that :edit ~ does not open a file named '~' 2013-04-26 20:18:16 +02:00
Maxime Coste
70d65dac79 git-tools.kak: support add and diff command 2013-04-26 18:48:31 +02:00
Maxime Coste
8bfe2d62e5 echo: rename -col option to -color 2013-04-26 18:48:31 +02:00
Maxime Coste
7ce3212fb2 When committing an undo group, run an optimization pass on it
With incremntal insertion, undo groups tends to be a lot of single
character insertion/deletions at the same point, but the end
result is most of the time a single string insertion. Buffer
now tries to optimize the undo group.
2013-04-26 18:48:31 +02:00
Maxime Coste
b16c967f9c Buffer::Modification::Position is a BufferCoord instead of a BufferIterator 2013-04-26 18:46:42 +02:00