Commit Graph

719 Commits

Author SHA1 Message Date
Delapouite
720ff62f03 Fix wrong autoinfo for remove-highlighter 2017-07-20 12:08:06 +02:00
Maxime Coste
9c4448ac41 Remove echo -color support, superseeded by echo -markup
`echo -color Error "blah"` is the same as `echo -markup '{Error}blah'`
Fixes #1512
2017-07-19 17:18:52 +02:00
Maxime Coste
5ccf18d772 More use of std::enable_if_t alias 2017-07-19 08:55:24 +02:00
Maxime Coste
d37c3d175d More uses of standard type traits aliases 2017-07-19 08:49:44 +02:00
Delapouite
8ed29dbd7a Docs: add missing PromptIdle hook mentions 2017-07-05 13:45:45 +02:00
Maxime Coste
eb2984807c Remove some dead code 2017-06-29 07:43:20 +01:00
Frank LENORMAND
dbabb19d81 src: Add profile-hash-maps to the debug command's docstring 2017-06-17 11:29:09 +03:00
Maxime Coste
f0f2b1c383 Trim whitespaces surrounding docstrings
Closes #1439
2017-06-16 10:48:14 +01:00
Maxime Coste
acc2dbf79c Move variable closer to its point of use 2017-06-07 20:33:34 +01:00
Maxime Coste
56b52bdb3d Filter debug buffers before creating the SafePtr vector in -buffer * 2017-06-07 20:25:39 +01:00
Maxime Coste
e947c20ce0 Do not disable incsearch option in context wrap
It will only trigger on idle, which should not happen during non-
interactive contexts.
2017-06-07 20:24:37 +01:00
Maxime Coste
f0285a8e60 Move hook executing logic into HookManager
The existing HookManager was able to run arbitrary hook functions,
but in practice was only used for user provided textual hooks.

That separation was causing some suboptimal performances, by moving
that logic directly in the hook manager we can improve hook filtering
performance which is a big part of startup time when opening lots
of files.
2017-06-07 12:33:39 +01:00
Maxime Coste
4606453fed Avoid expensive copies of Hooks in HookManager::run_hooks
Use a deferred deletion mechanism to ensure hooks are kept alive
for the duration of run_hooks.
2017-06-07 12:15:16 +01:00
Maxime Coste
502c5da0e9 Fix useles copy of hook_func in HookManager::add_hook parameter 2017-06-07 09:54:58 +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
6906e6924b Merge remote-tracking branch 'occivink/ignore-debug' 2017-06-03 15:26:51 +01:00
Maxime Coste
f6e00ff00f Merge remote-tracking branch 'Delapouite/typo' 2017-05-29 10:20:21 +01:00
Maxime Coste
62def0f4df Tweak alias command docstring not to end up with an eol 2017-05-28 19:58:24 +01:00
Olivier Perret
9697f61b0d Exclude debug from eval/exec over all buffers 2017-05-27 23:44:53 +02:00
Delapouite
c9c868d4de Fix typos in info-box: availabe, encodngs, highglighters… 2017-05-27 22:37:25 +02:00
Maxime Coste
83d85df26e Add an update-option command to update range-descs/line-descs options
update-option will make the range-descs and line-descs option up to
date with the latest buffer modfications, changing the ranges/lines
to where they moved according the modifications since the timestamp
on the option.
2017-05-25 19:54:08 +01:00
Maxime Coste
c4db46b58b Rename line-flags option type to line-specs
Generalize this option type, which is a timestamped list of
<line number>|<arbitrary string>. That way this type is not strongly
coupled with the flag-lines highlighter, and can be reused for other
use cases.
2017-05-24 15:41:43 +01:00
Maxime Coste
dfaafcd49a Rename range-faces to range-specs
range-faces are now used to replace-range highlighters, where the string
part is not interpretted as a face but as a display line, so the name was
not relevant anymore.
2017-05-17 19:40:52 +01:00
Olivier Brewaeys
3f42e45ff6 Small spelling error fix
John Doe Copyright Waiver

  I dedicate any and all copyright interest in this software to the
  public domain.  I make this dedication for the benefit of the public at
  large and to the detriment of my heirs and successors.  I intend this
  dedication to be an overt act of relinquishment in perpetuity of all
  present and future rights to this software under copyright law.
2017-05-10 12:17:11 +02:00
Frank LENORMAND
51ab59cd36 src: Implement a write! command
This commit allows "forced" writes to a write-protected file, by
attempting to temporarily grant the current user write permissions on
it. After the buffer has been written, the previous permissions are
restored if the file existed, or set to 0644 otherwise.
2017-04-20 17:13:42 +03:00
Maxime Coste
30e6387071 Assume filename passed to write_buffer_to_file is already parsed 2017-04-20 09:55:56 +01:00
Maxime Coste
6ad2f721dd Do not disable autoinfo and autoshowcompl in non interactive context
Fixes #1303
Fixes #1152
2017-04-03 18:16:32 +01:00
Maxime Coste
055ed5ff7e Expose hook params regex captures in hook_param_capture_N 2017-03-30 11:31:07 +01:00
Maxime Coste
2cfe3cae36 Add an InsertDelete hook 2017-03-30 10:38:56 +01:00
Maxime Coste
5f7464d90d Try to clean up option include a bit 2017-03-16 09:57:39 +00:00
Maxime Coste
a49e175727 Migrate to a more value based meta programming model
Introduce Meta::Type<T> to store a type as value, and pass it
around, migrate enum_desc and option_type_name to this.
2017-03-15 17:42:02 +00:00
Maxime Coste
a0b42323ed Add a -debug flag to :edit to set the buffer as debug data
As for the *debug* buffer, buffers with the debug flag wont get
used for cycling through buffer, or word completion.
2017-03-08 19:33:25 +00:00
Maxime Coste
dc7c5f6e67 Collapse undo groups during an eval command 2017-03-07 16:18:09 +00:00
Maxime Coste
f0ae0b8410 Replace IdMap with HashMap 2017-03-07 01:12:37 +00:00
Maxime Coste
6373338c50 Replace uses of UnorderedMap with HashMap 2017-03-07 01:03:26 +00:00
Maxime Coste
420373475e Introduce a custom HashMap implementation along with a quick benchmark 2017-03-06 22:25:08 +00:00
Maxime Coste
2fa98e04c3 Merge remote-tracking branch 'ekie/hook' 2017-03-03 21:14:14 +00:00
Maxime Coste
e3cfde6d07 Add docstring support for mappings, and use them in autoinfo
Fixes #105
Fixes #1100
Closes #1165
2017-03-03 20:16:36 +00:00
Eike Plack
a35f50d832 Add RawKey to hook completion list 2017-03-01 03:28:23 +01:00
Maxime Coste
7d487e3b4c Small naming tweak 2017-02-27 20:44:38 +00:00
Maxime Coste
2b01da530d Fix hook list in commands.cc 2017-02-19 14:14:22 +00:00
Maxime Coste
c3af384c70 Detect when -client, -buffer or -try-client are used at the same time
Fixes #1218
2017-02-15 18:59:37 +00:00
Maxime Coste
d470bd2cc9 Make numeric registers setable
Fixes #1214
2017-02-14 00:02:01 +00:00
Maxime Coste
e3a04dfa65 Fix RegisterRestorer not handling potential throws on register assign
This should fix part of #1214
2017-02-13 23:31:16 +00:00
Maxime Coste
2edb7d62ef Add support for -on-change and -on-abort to prompt
Fixes #1209
2017-02-12 12:51:58 +00:00
Maxime Coste
4ae441db68 Merge remote-tracking branch 'Delapouite/decl-completer' 2017-02-09 23:26:12 +00:00
Delapouite
0cf94292e4 Add command completer for types to declare-option 2017-02-09 10:18:13 +01:00
Delapouite
cfb2b4fade Fix missing new line char in declare_option_cmd info 2017-02-09 09:01:49 +01:00
Maxime Coste
c793ef3aa8 Store shell-candidates completions in the Completion memory domain 2017-02-03 13:42:47 +00:00
Maxime Coste
8a62ec12af Fix shell context capture that was accessing dead parameters
Fixes #1156
2017-01-24 20:20:50 +00:00
Maxime Coste
ffc362cf9e Propagate ShellContext custom env-vars through custom commands
Fixes #1131
2017-01-13 00:26:43 +00:00
Maxime Coste
343df600cb Merge remote-tracking branch 'alexherbo2/command-names' 2017-01-10 13:44:11 +00:00
Maxime Coste
dcd8f6ef01 Apply clang-tidy modernize to the codebase 2017-01-08 22:39:01 +00:00
Maxime Coste
f9f11aa762 Make the currently sourced file path available through $kak_source
The :source command sets an 'source' value to the real path of the
file getting sourced while its commands are executed.

Fixes #1112
2017-01-06 19:46:47 +00:00
Alex Leferry 2
671b50bb52 update command names 2017-01-04 13:04:27 +01:00
Maxime Coste
6beb9b6f02 Fix unmap 4th argument not being optional
Fixes #1078
2016-12-27 06:49:35 +00:00
Maxime Coste
33eb93b619 Skip debug buffer when cycling through the buffer list
Fixes #1059
2016-12-23 16:37:54 +00:00
Delapouite
99f38c99ec Fix :prompt command description 2016-12-15 14:42:46 +01:00
Maxime Coste
2fd1414b05 Clean up includes of user_interface.hh 2016-11-29 19:53:11 +00:00
Maxime Coste
12856066b1 Cleanup include dependencies a bit 2016-11-28 23:58:08 +00:00
Maxime Coste
2f3a7112ea Add more memory domains to certain data 2016-11-28 13:59:55 +00:00
Maxime Coste
a4738ace5f :prompt and :onkey (renamed :on-key) now use values instead of registers
:prompt provides the entered text in the `text` value, :on-key provides
the entered key in the `key` value.

Closes #938
2016-11-27 20:57:04 +00:00
Maxime Coste
e340e0ed39 Forward client name to contexts created for write-all
Fixes #937
2016-11-24 13:35:42 +00:00
Maxime Coste
8f2c6eb586 Fix write_all_buffers when BufWrite... hooks create/delete buffers
The buffer list can be mutated during iteration, so it is no safe
to directly iterate on the BufferManager, we need to first create
our own copy of the buffer list.

Fixes #935
2016-11-23 23:51:16 +00:00
Maxime Coste
b884b499dd Rework ensure_all_buffers_are_saved to remove an unneeded Vector 2016-11-23 23:39:42 +00:00
Maxime Coste
0b806cd4f1 Add missing hooks to completion list and validate hook name in hook cmd 2016-11-21 09:51:47 +00:00
Maxime Coste
be03fdce2a Support completing hook names
Fixes #879
2016-11-20 11:17:13 +00:00
Maxime Coste
cd8d51af34 Fix PerArgumentCommandCompleter when completing the non first arg
The actualy query passed was always the first argument.
2016-11-20 11:16:34 +00:00
Maxime Coste
4a2fea8c9e Continue command renaming to improve consistency 2016-11-15 13:49:06 +00:00
Maxime Coste
b3ba769220 Propagate the hooks disabled state through prompt, menu, and command execution
Maintain it as well during buffer creation even if the hooks are not executed
in client context.

Fixes #818
2016-11-14 19:39:35 +00:00
Maxime Coste
dcd733e5fa Do a first phase of command renaming 2016-11-14 00:27:14 +00:00
Maxime Coste
9153663dfa Add -save-regs defaults in the context wrap docstring 2016-11-08 09:49:48 +00:00
Nikolaus Wittenstein
e7970232d3 Fix typo in write_cmd's desc
Should be possessive "its".
2016-10-31 12:42:10 -04:00
Maxime Coste
cc2affea11 Always allow to delete a buffer, just recreate a scratch buffer if needed
Fixes #850
2016-10-13 21:37:44 +01:00
Maxime Coste
1f3e424047 Do not expand filenames when doing insert filename completion
Fixes #855
2016-10-13 19:46:09 +01:00
Frank LENORMAND
f7e2bfd76f Document the optional parameter of the cd command 2016-10-11 10:39:20 +03: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
5dd47e9c33 Preserve shell context through eval command
Fixes #835
2016-10-06 23:22:39 +01:00
Maxime Coste
d50087eabe Change BufWritePre/BufWritePost logic
Run them in client context if possible, and give them the target
filename instead of the buffer name.

Fixes #823
2016-10-01 23:51:53 +01:00
Maxime Coste
35559b65dd Support codepoints of variable width
Add a ColumnCount type and use it in place of CharCount whenever
more appropriate, take column size of codepoints into account for
vertical movements and docstring wrapping.

Fixes #811
2016-10-01 13:45:00 +01:00
Maxime Coste
e3c4bddd3b Make hook disabling work for all hooks, not only user hooks
Fixes #823
2016-09-26 23:43:05 +01:00
Maxime Coste
4f874a3679 Code cleanup in make_completer, use std::decay 2016-09-19 23:26:52 +01:00
Maxime Coste
396b71ecc2 Add an unmap command to remove key mappings 2016-09-19 09:10:41 +01:00
Maxime Coste
44e9da3bee More command completer code cleanup 2016-09-18 16:27:34 +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
4fc20b8d7d Rework client quitting and handling of remote errors
Client quitting no longer immediately unwinds, client is just pushed
for deletion until we get back to the main loop, similarly to what
happens for buffer and window deletion.
2016-09-04 17:56:07 +01:00
Maxime Coste
3831117bc7 style tweak 2016-08-30 23:23:07 +01:00
Maxime Coste
b6cab458ed Use a heap instead of sorting to gather the best shell-candidates matches
O(n + k * log n) (with k = 100 here) instead of O(n log n), much faster
with many candidates.
2016-08-30 13:42:29 +01:00
Maxime Coste
f6cb6319d6 Enable shell-candidates update in fast completion mode 2016-08-30 00:55:01 +01:00
Maxime Coste
911a32a992 Only drop blank prefixed history entries in command/shell prompts
For regex prompts we actually want to save them, as a leading space
is significant

Fixes #767
2016-08-22 20:37:14 +01:00
Maxime Coste
f73e89a716 Add information of types of options 2016-08-06 09:05:50 +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
38d372567b Do not force exec to run in normal mode anymore, run in the current mode 2016-08-05 09:43:33 +01:00
Maxime Coste
2425f4a781 Tweak session renaming code 2016-07-28 00:16:41 +01:00
Maxime Coste
62fa133efd Merge remote-tracking branch 'doppioandante/set_session' 2016-07-28 00:12:09 +01:00
Enrico Lumetti
1a7cd707aa Add 'session' command to change remote session name 2016-07-24 22:46:33 +02:00
Frank LENORMAND
e3bf01d1f9 Replace C-style operators with their alphabetical equivalent 2016-07-24 08:34:49 +03:00
Frank LENORMAND
8a4596bea9 Implement a readonly mode
This commit introduces the `readonly` variable as well as the `-ro`
command line option which prevent buffers from being overwritten on
disk when the `write` command is used without arguments. Some buffers
can selectively be put in readonly mode by setting the `readonly`
variable on the `buffer` scope, the `global` mode will affect all
buffers (even those who will be open subsequently), using the `window`
scope will have no effect.

Closes #685
2016-07-23 10:03:21 +03:00
Maxime Coste
88a9607552 Keep modified selections in non-draft exec/eval -itersel
Fixes #727
2016-07-08 09:52:10 +01:00
Maxime Coste
fcf73c2293 Refactor context_wrap to share more code between draft/non draft case
Fixes #706
2016-06-22 22:27:43 +01:00
Maxime Coste
5cb9cf4cc3 Go back to saving built-in registers by default in non draft :exec/:eval 2016-06-22 19:57:21 +01:00
Maxime Coste
91bf0d4622 Make window scope available to draft contexts
We do want window options/aliases/keymaps/hooks to be available in
draft context, dont we ?

Fixes #702
2016-06-20 19:45:15 +01:00
Maxime Coste
fef37e6a92 Do not preserve registers by default when exec/eval in a non draft context
Fixes #700
2016-06-20 19:40:49 +01:00
Maxime Coste
5cab2078f8 Fix string view created from a temporary string
This is clearly a case where rust style lifetime analysis would
have been nice, hopefully it comes with GSL lifetime extensions...

Fixes #680
2016-05-24 22:36:20 +01:00
Maxime Coste
6181781f3d Change dir to $HOME when no parameters are given to cd
Fixes #678
2016-05-20 09:41:29 +01:00
Maxime Coste
fb01c8c377 Do not force recreate scratch buffers by default, require edit! for that 2016-05-17 19:41:24 +01:00
Maxime Coste
1788126f38 BufferManager now owns the Buffers instead of registering them 2016-05-14 08:33:50 +01:00
Maxime Coste
da40828801 Check all buffer are saved in :kill, and add :kill! to avoid that 2016-04-29 21:58:04 +01:00
Maxime Coste
66a40a37cd prompt: zero password memory after running the command to be slightly more secure 2016-04-20 13:31:34 +01:00
Maxime Coste
199ccb4021 Add a -password switch to :prompt to allow for more secure password entering
Fixes #660
2016-04-19 09:51:09 +01:00
Maxime Coste
013519b3cb Remove iterator based regex constructor 2016-04-16 21:41:04 +01:00
Maxime Coste
3eca90f2b1 Only offer directories when completing :cd arguments
Refactor code in file.cc, avoid many double stat when searching
commands

Fixes #646
2016-04-07 22:47:41 +01:00
Maxime Coste
b5a68307ba Use a specific option type completions for insert completion
Fix escaping in jedi.kak as well
2016-04-04 13:42:58 +01:00
Maxime Coste
75e9bbfa43 Uniquify candidates in -shell-candidates mode 2016-03-28 14:16:45 +01:00
Maxime Coste
1bd356473b Use UsedLetters for shell-candidates filtering 2016-03-25 20:38:27 +00:00
Maxime Coste
840b7658fd Add an alternative -shell-candidates shell completion support
-shell-candidates use a shell script that returns all the candidates
and then sort them using Kakoune ranked matches system instead of
delegating the whole completion to the shell script (as shell-completion does)
2016-03-24 14:01:59 +00:00
Maxime Coste
1d646c03f5 Add completion support for alias/unalias commands 2016-03-24 00:05:40 +00:00
Maxime Coste
5bf9243006 User mappings and :exec are always executed in normal mode
Fix #551
2016-03-22 22:54:29 +00:00
Maxime Coste
7ecd65e1af Code cleanups 2016-03-14 13:41:20 +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
2df7b1f6da In buffer name completion, give priority to filename (not dirname) matches
First list filename matches, then full path matches to allow fast selection
of buffers in deep hierarchies where queries match the path of every buffers
2016-03-02 13:51:50 +00:00
Maxime Coste
3987463e75 Remove direct access to ui, go through client
Client can now update menu/info positions when the window move
around.
2016-02-27 17:23:13 +00:00
Maxime Coste
dfe3098b18 Fix buffer deletion logic
'eval -buffer * db' was failing in certain cases
2016-02-11 23:07:42 +00:00
Maxime Coste
8701a53252 Fix use of dead temporary strings in completions 2016-02-10 13:33:49 +00:00
Maxime Coste
87769c9b03 Migrate most completion to ranked match 2016-02-09 22:50:10 +00:00
Maxime Coste
c8dedf458d Use the ranked word completion logic for buffer name completion 2016-02-09 20:04:23 +00:00
Maxime Coste
11652ce230 Remove the exec_keys function 2015-12-27 23:15:09 +00:00
Maxime Coste
43f1fcf616 Slight refactor 2015-12-27 23:09:32 +00:00
Maxime Coste
a5dcca6f78 Formatting fix 2015-12-27 23:07:06 +00:00
Maxime Coste
1288a1d385 Support collapsing jumps in eval and exec
Fixes #535
2015-12-23 02:46:13 +00:00
Maxime Coste
8dcffd8f5a Initial, WIP spelling implementation
Add a ranges highlighter that takes a timestamped list of ranges and
associated face. Add a spell.kak file that uses aspell pipe interface
to fill a range-faces option.
2015-12-17 04:07:49 +00:00
Maxime Coste
4cb74623bb Store the buffer timestamp in line flags options respect it for highlighting
Option content is auto updated to match current buffer, so that line flags
are updated according to buffer modifications.
2015-12-12 11:45:45 +00:00
Maxime Coste
c4a9f059dc Fix unset option when using the current scope and it points to global 2015-12-02 19:25:40 +00:00
Maxime Coste
550a95a3d7 Change def -shell-params to def -params and take the counts as parameters 2015-12-01 14:00:55 +00:00
Maxime Coste
7335065d20 Update buffer display names after changing working directory
Fixes #501
2015-12-01 13:42:42 +00:00
Maxime Coste
516e999a28 Disable history in all non interactive contexts 2015-11-27 13:50:40 +00:00
Maxime Coste
9e08cf8ea4 Preserve default registers in exec/eval by default 2015-11-26 13:34:46 +00:00
Maxime Coste
001da44e11 Add -save-regs <regs> option to exec and eval to preserve registers
Fixes #279
2015-11-25 23:40:38 +00:00
Maxime Coste
ad5c8db7a8 Add support for various completions in :prompt
Fixes #489
2015-11-23 13:57:36 +00:00
Maxime Coste
9656f088e7 Change autoinfo option to be a flags option, document flags options
Support the value1|value2|value3 syntax for flag options.
2015-11-18 23:47:28 +00:00
Maxime Coste
5c37f0dd5e Propagate shell context through prompt/onkey/menu commands 2015-11-18 20:15:51 +00:00
Maxime Coste
b73a890f8c Document i attribute in face command info 2015-11-11 19:05:47 +00:00
Maxime Coste
6840f7ce9c Store the last used buffer in clients
Fixes #474
2015-11-07 18:25:49 +00:00
Maxime Coste
28d451b844 Support 'current' scope in set/unset command 2015-11-06 13:56:48 +00:00
Maxime Coste
40c6edf243 Document exclusive attribute 2015-10-23 13:49:02 +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
7346220e38 Fix :set completion when -add switch is given 2015-10-22 13:29:34 +01:00
Maxime Coste
76fadd8108 More cleanups in the buffer open/reload code 2015-10-17 11:33:09 +01:00
Maxime Coste
3795ff735a Refactor buffer creation and reloading to be more explicit
Reloading used to be implicit in the buffer creation function,
which is not always nice, as code that explicitely wanted to
reload a buffer could not say so.
2015-10-17 11:33:09 +01:00
Maxime Coste
7776c38755 Detect ungraceful exits, and backup modified buffers in these cases 2015-10-08 13:43:39 +01:00
Maxime Coste
db2fa6f5cb Support markup in menu command 2015-10-05 13:51:13 +01:00
Maxime Coste
c54e6738b9 Use DisplayLine for menu choices 2015-10-05 01:25:23 +01:00
Maxime Coste
77408becbd Fix removing shared highlighters 2015-09-30 00:18:37 +01:00
Maxime Coste
2b4b73ae8e Remove the default_face parameter of parse_display_line
No need to define a default face there, we will pass a default face
to UserInterface::draw_status later.
2015-09-20 11:34:13 +01:00
Maxime Coste
6bc5f8c3a3 Add simple markup support to generate display lines from strings
The syntax is simply {face} to enable the given face, use \{ to
escape a {, and \\ to escape a \.
2015-09-19 12:19:17 +01:00
Maxime Coste
693d9a4861 Store key hash in IdMap 2015-09-16 20:02:12 +01:00
Maxime Coste
04536657d1 Add a kill command that kills the current session
Fixes #331
A given session can be killed with 'echo kill | kak -p <session>'
2015-08-26 19:34:19 +01:00
Maxime Coste
ae839fc471 Remove Client::window() method, use a force_redraw() one
We cannot assume Client::m_window is always non-null, as when
changing current buffer its temporarily null, at the point
where WinCreate hook might get called.

Fixes #382
2015-08-23 13:29:24 +01:00
Maxime Coste
3f493fa186 Rename Disableable to more general NestedBool
A NestedBool can be set multiple times, and will be considered false
only when unset the same number.
2015-08-18 23:17:56 +01:00
Maxime Coste
d2762e6a1a Try to fix compilation on travis 2015-08-12 19:16:52 +01:00
Maxime Coste
d7744308f6 Ensure the command exist before adding an alias
Fixes #371
2015-08-11 13:37:38 +01:00
Maxime Coste
94ec1cdde7 Add an unset command to remove an option value (falling back to parent)
unset is not applicable to global scope.
2015-08-10 13:54:52 +01:00
Maxime Coste
10d8cf64cf Move option docstring obtention to OptionRegistry 2015-08-10 13:53:30 +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
ea02467564 Disable notifications when disabling an option temporarly 2015-07-23 23:42:48 +01:00
Viktor Palmkvist
ab2007bd4e Add remapping of text object keys 2015-07-01 17:53:38 +02:00
Maxime Coste
58d115ec88 Force redraw all clients after a face changed 2015-06-30 19:12:25 +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
cf33a062df Force redraw window after adding/removing highlighters 2015-06-25 19:45:41 +01:00
Maxime Coste
3834440298 Rework window redraw handling, should redraw window less often 2015-06-21 19:56:23 +01:00
Eike Plack
1bdc98abd3 Fix Self Documentation 2015-06-19 17:10:16 +02: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
e6f0e8ef75 Move write_debug to buffer utils as write_to_debug_buffer 2015-06-06 11:54:48 +01:00
Maxime Coste
be03db9a24 Support sourcing files that use crlf end of lines 2015-06-05 13:52:56 +01:00
Maxime Coste
f30cd317b0 Describe facedesc in :face docstring 2015-06-03 22:10:37 +01:00
Maxime Coste
8f6fc6a0f3 Port even more code to use format function 2015-06-01 21:15:59 +01:00
Maxime Coste
e21d9feb05 Style tweak 2015-05-09 19:20:11 +01:00
Maxime Coste
559bcdde50 Formatting fix 2015-05-06 23:05:44 +01:00
Maxime Coste
d6b69cb6f7 Fix :open bug that could set a deleted buffer as the last used one 2015-04-23 20:15:17 +01:00
Maxime Coste
7824a76e1a Disable history in :exec and :eval 2015-04-21 13:45:10 +01:00
Maxime Coste
4bb1e0a878 Support -buffer * to iterate over all buffers in :eval or :exec 2015-04-21 13:40:14 +01:00
Maxime Coste
1d40827da3 Small style tweak 2015-04-21 13:33:35 +01:00
Maxime Coste
6e5e831ce6 Merge remote-tracking branch 'ekie/next_buffer' 2015-04-21 13:28:09 +01:00
Maxime Coste
1dfa2d7fe4 Avoid unneeded update of selections when we are going to overwrite them 2015-04-19 15:12:16 +01:00
Eike Plack
2cf45ddb21 Refactor nextbuffer_cmd 2015-04-15 02:43:16 +02:00
Eike Plack
0f9b210e3f Fix set_last_used_buffer 2015-04-15 02:36:47 +02:00
Maxime Coste
eb9c95298e Add support for string <-> selection list serialization 2015-04-13 15:21:26 +01:00
Maxime Coste
f93081471a Refactor nextbuffer command to be more idiomatic 2015-04-13 11:34:21 +01:00
Maxime Coste
43c03ea412 Merge remote-tracking branch 'jjthrash/next-prev-buffer' 2015-04-13 11:26:31 +01:00
Jimmy Thrasher
ba59033935 Add nextbuffer command
Wraps around at the end. If only 1 buffer loaded, does nothing.
2015-04-09 10:14:32 -04:00
Maxime Coste
dde16b00a9 Add onkey command for executing commands after reading a key
This completes the various user interaction primitives, on_next_key
was the last not to be available through a command.
2015-04-04 13:10:39 +01:00
Maxime Coste
519254dfdc More useage of the format function 2015-03-30 23:56:33 +01:00
Maxime Coste
b5854ece43 Change ParameterParser switch interface, use an Optional<StringView>
Merge has_option and option_value into a single method get_switch.
2015-03-14 19:16:46 +00:00
Maxime Coste
65fd0df041 More code style cleanup 2015-03-14 17:30:44 +00:00
Maxime Coste
8a211fc87a Tweak command docstrins 2015-03-14 12:17:43 +00: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
b4f6b50dbb Make split_path public 2015-03-12 20:39:34 +00:00
Maxime Coste
2f20399d03 Improve 'def' command completion behaviour and clean it up a little 2015-03-12 19:45:05 +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
ea526c2137 Small refactoring 2015-03-10 13:34:46 +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
Eike Plack
2354655df2 Fix documentation for debug_cmd 2015-03-02 16:38:05 +01:00
Maxime Coste
6c65c5e080 Add docstrings to highlighters, displayed by addhl help 2015-02-19 13:54:03 +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
5339f94eb8 Fix missing modes in :map completion and docstring 2015-02-05 13:56:16 +00:00
Maxime Coste
7cdeb3d7f7 simplify echo code, avoid trailing spaces 2015-01-17 22:55:48 +00:00
Maxime Coste
76d806e98d Replace InternedStrings with SharedString, shared_ptr based 2015-01-15 19:26:38 +00:00
Maxime Coste
2a878d51fd Even more memory tracking 2015-01-14 19:16:32 +00:00
Maxime Coste
beb3390334 Add interned string stats in debug command 2015-01-13 13:48:16 +00:00
Maxime Coste
c8d651a517 Protect use of mallinfo in #ifdef __GLIBC__ blocks 2015-01-12 19:55:58 +00:00
Maxime Coste
e8b8070536 refactor slighly memory domain handling 2015-01-12 19:48:51 +00:00
Maxime Coste
da562e03a0 replace all std::vector with Vector 2015-01-12 13:58:41 +00:00
Maxime Coste
83d0813b0f Yet more tracking 2015-01-12 13:45:44 +00:00
Maxime Coste
f1f10639a5 Compute tracked memory total as well 2015-01-12 13:32:30 +00:00
Maxime Coste
0bdf1778cb Some more memory tracking 2015-01-12 13:32:14 +00:00
Maxime Coste
dedb16bc73 Track some more memory 2015-01-11 19:28:03 +00:00
Maxime Coste
9b30e7469a Add initial memory domain allocation tracking support 2015-01-07 19:29:31 +00:00
Maxime Coste
de12fe1cc6 Add completion for debug command 2015-01-06 19:06:53 +00:00
Maxime Coste
295a97f2a6 Rename memoryview to ArrayView 2015-01-06 13:43:37 +00:00
Maxime Coste
8e92e0eebc Go back to previous buffer name completion implementation 2015-01-05 19:33:33 +00:00
Maxime Coste
23f30f6709 Small style tweak 2015-01-03 17:35:53 +00:00
Maxime Coste
fb611e2f62 Use an id_map directly for HighlighterRegistry rather than the FunctionRegistry class 2014-12-23 22:15:53 +00:00
Maxime Coste
ed54e102ee Extract complete_buffer_name as a free function in commands.cc 2014-12-23 17:42:17 +00:00
Maxime Coste
ae602106e0 Remove prefix_complete, superseeded by complete 2014-12-23 17:39:12 +00:00
Maxime Coste
064fb81b8d Move containers utils to containers.hh and add filtered/transformed utils 2014-12-23 13:40:26 +00:00
Maxime Coste
1c8ee78d1a Do not register timers for transient input handlers 2014-12-18 23:12:58 +00:00
Maxime Coste
a0b35bf590 Add support for user mappings, bound to comma
:map have a 'user' mode that is accessible through the comma key.
the mapping will get executed in normal mode.
2014-12-12 13:57:02 +00:00
Maxime Coste
d57be83522 Disable history writing when running hooks 2014-12-05 14:01:07 +00:00
Maxime Coste
1c5975835e Consolidate constext disablable feature in a 'Disableable' helper 2014-12-05 13:47:09 +00:00
Maxime Coste
6902301674 Fix bug in :debug command 2014-11-28 13:18:08 +00:00
Maxime Coste
4c7f6985f1 Add an 'options' debug command 2014-11-26 13:27:26 +00:00
Maxime Coste
dfed7ed211 const String& to StringView 2014-11-23 19:49:59 +00:00
Maxime Coste
7064679c2a small fix 2014-11-13 22:17:10 +00:00
Maxime Coste
414cfabb8c fix clang compilation 2014-11-11 13:47:51 +00:00
Maxime Coste
7d4c9c2ccf Support hinting if an inline info should be above or below the anchor
Used by ctags function info, we always want it *above* the opening
parenthesis so that it does not hide multi line parameter lists.
2014-11-10 13:37:17 +00:00
Maxime Coste
88aa707b9c For {Menu,Info}Style::Prompt, choose the anchor directly in ncurses code 2014-11-08 19:08:23 +00:00
Maxime Coste
e1fc2677e3 Add a MenuDoc style for info box, that will place it next to the menu 2014-11-08 18:01:55 +00:00
Maxime Coste
c8ea2e78f9 Reuse existing buffer when creating a fifo one
That way, client having this buffer already visible wont switch to
another one due to previous buffer getting deleted
2014-11-04 23:51:22 +00:00
Maxime Coste
4051534b83 Open fifo buffers in non block mode 2014-11-03 13:55:07 +00:00
Maxime Coste
c04dfc7bb7 move more parameters from const String& to StringView 2014-11-01 19:31:13 +00:00
Maxime Coste
9a2822e329 Change :info -anchor option, take directly a buffer coordinate
Fix ctags funcinfo feature using that
2014-10-31 21:49:36 +00:00
Maxime Coste
e38ba6ce3d Add scope class and encapsulate Options, Keymaps, Aliases and Hooks in it 2014-10-30 14:04:57 +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
67a5493fa2 minor code tweaks 2014-10-23 13:37:47 +01:00
Maxime Coste
b2e90fe21e Refactor highlighters, use an interface with virtual methods 2014-10-22 13:54:03 +01:00
Maxime Coste
fc4142178f Port more code to StringView instead of const String& 2014-10-20 19:18:38 +01:00
Maxime Coste
69113e2711 Add a split function that does not take an escape and returns StringViews
When an escape character is not present, split can just return sub
strings of the parameter, so we can avoid duplicating the original
string data.
2014-10-19 16:27:36 +01:00
Maxime Coste
fa85f0fc32 Refactor regex uses, do not reference boost except in regex.hh 2014-10-13 13:14:23 +01:00