Frank LENORMAND
8d24768d5d
src: Add a commands
debug flag
...
This commit allows setting the `commands` flag to the `debug` option, in
order to have the engine write on the *debug* buffer the commands that are
being executed, along with their arguments.
2017-06-17 11:27:07 +03:00
Maxime Coste
575e6fe325
Remove unneeded unknown_expand exception type
2017-06-07 19:01:26 +01:00
Maxime Coste
a0d848da8d
Do not allow whitespaces as % string delimiters
2017-06-07 13:09:45 +01:00
Maxime Coste
261e0fabcc
Improve readability of command docstrings by changing formatting
...
Fixes #1378
2017-06-04 08:37:51 +01:00
Maxime Coste
f014eb7052
Fix command parsing bug when commenting after a command
...
When a comment was present directly on the same line after a command,
we did not correctly see the command as terminated and would join
continue parsing the next line.
2017-05-25 08:30:49 +01:00
Maxime Coste
6a97455b3b
Do not push a final spurious command separators when parsing commands
...
Fixes #1336
2017-05-08 11:46:03 +01:00
Maxime Coste
3a3144f3f5
Fix use of invalidated iterator in the command map on exception
...
The command map can get mutated by command execution, so the iterators
can get invalidated (now that we use our curstom HashMap implementation,
all iterators are potentially invalidated by insert/removal)
2017-05-07 16:25:34 +01:00
Maxime Coste
5103b15b84
Safer code for parsing commands
...
Fix some possible past the end of target string reads
Fixes #1310 (maybe, probably, who knows)
2017-04-19 22:04:03 +01:00
Maxime Coste
c1c40a4b56
Remove some now unneeded uses of const String& params
...
HashMap supports finding String from StringView.
2017-04-10 21:33:20 +01:00
Maxime Coste
e44f95820e
Fixes some clang-tidy warning and add a few missing meta.hh include
2017-03-16 23:34:02 +00:00
Maxime Coste
7d9f1df73a
Small code tweaks regarding flags handling
2017-03-15 18:25:59 +00:00
Maxime Coste
6373338c50
Replace uses of UnorderedMap with HashMap
2017-03-07 01:03:26 +00:00
Maxime Coste
2052b225d9
Detect too deep command call stack
...
Fixes #1163
2017-01-29 13:56:05 +00:00
Maxime Coste
753f3a50d1
Make StringView and unit types trivial types
2017-01-29 13:49:45 +00:00
Maxime Coste
9f0bca53c4
Small code cleanups
2017-01-08 23:26:15 +00:00
Maxime Coste
dcd8f6ef01
Apply clang-tidy modernize to the codebase
2017-01-08 22:39:01 +00:00
Maxime Coste
84c2ca1cdc
Merge remote-tracking branch 'leira/empty_param_crash'
2016-12-27 22:00:32 +00:00
Leira Hua
f79018cffd
Added string length check when checking switch params
...
Fixes #1051
2016-12-24 17:42:31 -08:00
Maxime Coste
d17bed9b80
Display the command prompt in error face when the command is not found
...
Fixes #1021
2016-12-23 16:23:31 +00:00
Maxime Coste
03eb128536
Ensure content of expanded strings in modelinefmt is not interpreted as markup
2016-12-07 20:07:32 +00:00
Maxime Coste
2f704eab16
Small command parsing refactoring
2016-12-07 13:26:11 +00:00
Maxime Coste
47a82b9855
Make ArrayView::subrange size arguement optional
2016-11-20 11:15:15 +00:00
Maxime Coste
5249df78d4
Do not include aliases in command completion candidates anymore
...
Fuzzy matching makes it redundant.
Closes #817
2016-11-14 00:29:43 +00:00
Maxime Coste
025b91baca
Convert some uses of lambda to more concise std::mem_fn
2016-10-10 23:44:18 +01:00
Maxime Coste
35559b65dd
Support codepoints of variable width
...
Add a ColumnCount type and use it in place of CharCount whenever
more appropriate, take column size of codepoints into account for
vertical movements and docstring wrapping.
Fixes #811
2016-10-01 13:45:00 +01:00
Maxime Coste
d14c39ebdd
Rewrite PerArgumentCommandCompleter to use compile time dispatching
...
No need to store these vectors of std::functions around anymore.
2016-09-18 16:07:00 +01:00
Maxime Coste
5b7b6eebaf
Regenerate shell-candidates for each completion sessions
...
That should allow fixing the #665 issue while still avoiding to
run a potentially long shell command on each keystroke.
2016-08-05 13:53:19 +01:00
Maxime Coste
471c75d738
Trim trailing end of lines in %sh outputs
...
Fixes #698
2016-06-19 17:01:56 +01:00
Maxime Coste
2435949fae
Add support for env var name completion
...
Fixes #659
2016-04-17 19:21:43 +01:00
Maxime Coste
1d646c03f5
Add completion support for alias/unalias commands
2016-03-24 00:05:40 +00:00
Maxime Coste
9e15181dc9
Rework container helpers, use pipe syntax and cleanup implementation
...
use 'container | filter(func) | reverse() | transform(func)' instead
of 'transform(reverse(filter(container), func), func)' to express
container transformations.
2016-03-08 21:35:56 +00:00
Maxime Coste
21ae662151
Use ranked match based completion for command names
2016-03-08 13:56:37 +00:00
Maxime Coste
5b9d30c088
Optimize the dynregex case where the expression refers directly to a regex option
2015-12-12 06:50:58 +00:00
Maxime Coste
2a8a329b83
Remove support for %arg{#}, can be added back if we got a use case
...
It is very unlikely we need %arg{#} without needing a %sh anyway.
2015-12-02 01:08:41 +00:00
Maxime Coste
a02ad38fb4
Forward each params in %arg{@} separately
2015-12-02 01:01:48 +00:00
Maxime Coste
b2648053f9
Add argument expansion support
2015-12-01 20:07:14 +00:00
Maxime Coste
cb108b248a
Fix alias completion and overwritting
2015-11-17 13:55:27 +00:00
Maxime Coste
5118e13aee
Remove useless std::move
2015-10-23 13:46:55 +01:00
Maxime Coste
da7fc3311f
Pass ShellContext to commands
...
Fix #427
2015-10-22 13:59:23 +01:00
Maxime Coste
e51ef6c3c2
Wrap the shell params en env vars in a ShellContext struct
2015-10-22 13:48:57 +01:00
Maxime Coste
01152d7cd9
Improve escaping of % in command parsing
2015-09-20 11:48:11 +01:00
Maxime Coste
574e337132
Improve command completion by taking into account quoting of arguments
2015-09-20 11:19:10 +01:00
Maxime Coste
e7a8f64722
Use a sorted IdMap for aliases
2015-09-16 22:32:02 +01:00
Maxime Coste
693d9a4861
Store key hash in IdMap
2015-09-16 20:02:12 +01:00
Maxime Coste
30ad9a0475
Complete aliases in command prompt
2015-09-06 18:09:32 +01:00
Maxime Coste
64c21b93a5
Additional code tweak in command_manager.cc
2015-08-29 21:39:23 +01:00
Maxime Coste
ac78cfa11c
Add missing std::move, avoid a needless string copy
2015-08-28 13:54:12 +01:00
Maxime Coste
1249df9c76
Avoid using an UnorderedMap for 4 elements...
2015-08-27 21:36:49 +01:00
Maxime Coste
36b82c42e5
Refactor command parsing, maintain coordinates while reading the string
2015-08-27 21:32:04 +01:00
Maxime Coste
b529288176
Small code cleanup in command_manager.cc
2015-08-27 13:57:56 +01:00
Maxime Coste
bfb116b8b4
Move option name completion to the OptionRegistry
...
Option names are the same for every option manager.
2015-08-10 13:38:06 +01:00
Maxime Coste
19c52c3d61
Fix command parsing bug
...
Fixes #347
2015-07-30 09:41:23 +01:00
Maxime Coste
6bed464105
Avoid appending chars one by one in some parsing functions in CommandManager
2015-07-25 08:56:27 +01:00
Maxime Coste
5b554ff474
Add support for command completion on commands, use it for :new
...
That means commands can be completed using other commands and their
completers. Yes that does makes sense.
Closes #296
2015-06-26 13:57:23 +01:00
Maxime Coste
409d804ee8
Do not close stderr/stdout before program finish
...
Programs like grep called in '$' command will fail due to SIGPIPE
for example. So we need to keep the pipe open.
2015-06-08 22:42:51 +01:00
Maxime Coste
942fc224af
Specify if ShellManager should read output or not using a flag
...
Some program (xclip), will fork a daemon keeping stdout/stderr open,
so waiting for them to be closed make kakoune hang. Commands discarding
stdout can then just not wait on it.
2015-06-08 13:45:20 +01:00
Maxime Coste
cfdf03ab31
Make expand function (that expand %...{} tokens) public
2015-05-04 17:08:57 +01:00
Maxime Coste
d3607bc773
Rename eval(_token)? to expand(_token)? and use a const Context
2015-04-30 19:18:20 +01:00
Maxime Coste
519254dfdc
More useage of the format function
2015-03-30 23:56:33 +01:00
Maxime Coste
6e1a388544
Replace various adhoc operator+ based formatting with format func
2015-03-30 23:06:02 +01:00
Maxime Coste
6b3201f0f1
Change ShellManager to return both stdout and the return value in a pair
2015-03-13 13:39:18 +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
a94c554a7b
Add optional helper for commands, to get parameter dependent help
...
Use for the set command to document options.
2015-02-08 19:04:20 +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
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
87d312b6d4
More string cleanups
2014-12-08 13:59:29 +00:00
Maxime Coste
1a17d9c73f
const String& to StringView
2014-12-07 21:01:42 +00:00
Maxime Coste
ece03c3599
More const String& to StringView
2014-11-15 18:45:56 +00:00
Maxime Coste
e8b0a98a78
Remove %rec{...} strings, now "..." strings expand their content
2014-11-11 13:53:57 +00:00
Maxime Coste
f5be7c7ba5
minor code cleanup
2014-11-04 13:40:35 +00:00
Maxime Coste
60c1bb1315
Use unescape rather than a regex in command manager parsing
2014-11-04 13:35:54 +00:00
Maxime Coste
185b980718
Add scoped aliases
...
aliases are now stored in window, buffer, or globally.
2014-10-30 14:02:13 +00: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
c4f0c4dee6
Change escaping method for command completion
2014-08-03 10:03:14 +01:00
Maxime Coste
4c31449a65
Add access to specific env vars in %val{...} evaluation
2014-07-30 19:17:04 +01:00
Maxime Coste
e6699c66ed
Fix comment parsing error in CommandManager
2014-07-15 13:15:21 +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
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
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
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
2d5c730441
Replace CommandManager::register_command*s* with register_alias
2014-06-06 00:21:12 +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
36620f8cc8
Wrap command completion containing spaces, semicolons or quotes in double quotes
2014-05-05 12:54:23 +01:00
Maxime Coste
5db3b51843
Add command aliases in command info
...
Fixes #101
2014-05-03 16:00:03 +01:00
Maxime Coste
65c818b859
Use StringView in CommandManager
2014-04-21 21:49:25 +01:00
Maxime Coste
20d20ae1dc
formatting changes in command_manager.cc
2014-04-08 19:55:31 +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
8e0b5d67aa
Fix segfault in get_until_delimiter
2014-03-05 20:57:12 +00:00
Maxime Coste
8ac19edf67
Add a docstring to commands
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
aceee75ed9
Tolerate invalid %...{} when completing
2014-02-27 06:44:14 +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
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
a34b943749
Support completing %opt{...} and %sh{...} in command manager
2013-12-30 14:22:18 +00:00
Maxime Coste
56c3d9d137
Few cleanups in the command line parsing code
2013-12-29 18:37:48 +00:00