home/src
Maxime Coste c829595d01 Refactor command line parsing
Command line parsing now works as follow:

* Quoted strings ('...', "..." and %~...~ with '~' non nestable)
  use 'doubling-up' for escaping their delimiter, if the delimiter
  appears twice in a row, it is considered as part of the string and
  represent one delimiter character. So 'abc''def' == "abc'def". No
  other escaping takes place in those strings.

* Balanced strings (%{...}) do not support any kind of escaping, but
  finds the matching closing delimiter by taking nesting into account.
  So %{abc{def}} == "abc{def}".

* Non quoted words support escaping of `;` and whitespaces with `\`,
  `%`, `'` and '"` can be escaped with `\` at the start of the word,
  they do not need escaping (and will not be escaped) else where in
  a word where they are treated literally. Any other use of '\' is a
  literal '\'. So \%abc%\;\ def == "%abc%; def"

As discussed in #2046 this should make our command line syntax more
robust, provide a simple programmatic way to escape a string content
(s/<delim>/<delim><delim>/g), be well defined instead of ad-hoc
undocumented behaviour, and interact nicely with other common
escaping by avoiding escaping hell (:grep <regex> can in most case
be written with the regex unquoted).
2018-07-05 07:54:28 +10:00
..
.gdbinit
alias_registry.cc Rename containers.hh to ranges.hh (and Container to Range) 2017-08-29 15:23:03 +07:00
alias_registry.hh Make FaceRegistry scoped 2018-04-07 16:27:50 +10:00
array_view.hh More use of std::enable_if_t alias 2017-07-19 08:55:24 +02:00
assert.cc Fix xmessage handling in assert.cc 2017-07-17 18:13:20 +09:00
assert.hh Add support for the shift modifier. 2018-04-11 15:15:45 +10:00
backtrace.cc
backtrace.hh
buffer_manager.cc Do not reuse m_buffer_trash to store dying buffers in ~BufferManager 2018-05-21 20:30:24 +10:00
buffer_manager.hh
buffer_utils.cc Refuse modification of ReadOnly buffers and make Debug buffer readonly 2018-02-11 13:06:19 +11:00
buffer_utils.hh
buffer.cc Gather options in a vector when running Buffer::on_option_changed 2018-05-21 20:07:25 +10:00
buffer.hh Mark Client, Window, Buffer and OptionManager as final 2018-05-09 23:01:40 +10:00
buffer.inl.hh
changes.cc
changes.hh Extract update_ranges_ifn as a general utility function 2018-06-11 15:10:30 +10:00
client_manager.cc Change client default name: "unnamed0" → "client0" 2018-04-23 11:42:11 +02:00
client_manager.hh Cleanup client name validation code 2018-03-25 16:53:27 +11:00
client.cc Change Search completion to display on top of the modeline 2018-06-19 21:02:24 +10:00
client.hh Small code cleanups 2018-05-17 22:55:53 +10:00
clock.hh
color.cc Refactor option_from_string to return directly the option value 2018-05-27 13:00:50 +10:00
color.hh Refactor option_from_string to return directly the option value 2018-05-27 13:00:50 +10:00
command_manager.cc Refactor command line parsing 2018-07-05 07:54:28 +10:00
command_manager.hh CommandManager: refactor parsing of commands to iterate through tokens 2018-02-15 23:24:19 +11:00
commands.cc Add -with-hooks to execute-keys and make -no-hooks evaluate-commands specific 2018-07-05 07:54:28 +10:00
commands.hh
completion.cc Do not expose C++ typeid().name to user facing errors on wrong option type 2018-05-26 10:01:26 +10:00
completion.hh
constexpr_utils.hh Remove Vector returning split functions, use range adaptor 2017-12-06 17:18:44 +08:00
context.cc Make FaceRegistry scoped 2018-04-07 16:27:50 +10:00
context.hh Do not reparse %sh{...} strings 2018-07-05 07:54:28 +10:00
coord.hh Constexprify various hash functions 2017-10-20 12:21:22 +08:00
diff.hh diff: try to improve code readability 2018-02-09 21:31:10 +11:00
display_buffer.cc Make FaceRegistry scoped 2018-04-07 16:27:50 +10:00
display_buffer.hh Try to keep window position fixed when buffer gets modified 2018-06-11 15:10:30 +10:00
enum.hh
env_vars.cc
env_vars.hh
event_manager.cc EventManager: Never block if a forced file descriptor is present 2018-06-03 12:17:38 +10:00
event_manager.hh EventManager: Never block if a forced file descriptor is present 2018-06-03 12:17:38 +10:00
exception.cc
exception.hh Rework fail command not to display command call stack 2018-05-26 21:31:17 +10:00
face_registry.cc FaceRegistry: Support referencing a named face from a parent scope 2018-04-10 19:57:16 +10:00
face_registry.hh Redraw window when the face definition changed 2018-04-10 20:35:23 +10:00
face.hh Redraw window when the face definition changed 2018-04-10 20:35:23 +10:00
file.cc src: Add a -sync flag to the write commands 2018-07-04 09:49:53 +03:00
file.hh src: Add a -sync flag to the write commands 2018-07-04 09:49:53 +03:00
flags.hh Add more constexpr to flags wrapping functions 2017-10-06 13:48:01 +08:00
hash_map.cc Use the _str and _sv string literals more often 2018-01-18 09:00:54 +11:00
hash_map.hh Fix some trailing spaces and a tab that sneaked into the code base 2018-04-05 08:52:33 +10:00
hash.cc Fix various undefined behaviours detected by UBSan 2017-06-26 11:27:18 +01:00
hash.hh Constexprify various hash functions 2017-10-20 12:21:22 +08:00
highlighter_group.cc Pass DisplaySetup through the HighlightContext 2018-06-11 15:10:30 +10:00
highlighter_group.hh Make compute_display_setup methods const 2018-04-06 09:16:59 +10:00
highlighter.cc Fix grammar in highlight error message 2018-06-01 13:02:38 +02:00
highlighter.hh Pass DisplaySetup through the HighlightContext 2018-06-11 15:10:30 +10:00
highlighters.cc Extract update_ranges_ifn as a general utility function 2018-06-11 15:10:30 +10:00
highlighters.hh Refactor option_from_string to return directly the option value 2018-05-27 13:00:50 +10:00
hook_manager.cc Do not expose C++ typeid().name to user facing errors on wrong option type 2018-05-26 10:01:26 +10:00
hook_manager.hh Add a -always switch to hook command to ignore hooks disabled 2018-04-26 08:28:11 +10:00
input_handler.cc Fix two <s-tab> requiered to access last completion in prompt 2018-06-19 07:40:52 +10:00
input_handler.hh Add MenuStyle::Search that prevents the menu from hiding buffer text 2018-06-03 12:17:38 +10:00
insert_completer.cc Refactor option_from_string to return directly the option value 2018-05-27 13:00:50 +10:00
insert_completer.hh Refactor option_from_string to return directly the option value 2018-05-27 13:00:50 +10:00
json_ui.cc Add MenuStyle::Search that prevents the menu from hiding buffer text 2018-06-03 12:17:38 +10:00
json_ui.hh Rework the way UI can trigger a client quitting 2018-04-29 22:31:57 +10:00
keymap_manager.cc Unify code that validates identifiers in Kakoune 2018-03-25 16:35:33 +11:00
keymap_manager.hh Remove <scope> from user-modes commands 2018-03-02 09:28:27 +01:00
keys.cc Add support for the shift modifier. 2018-04-11 15:15:45 +10:00
keys.hh Change Search completion to display on top of the modeline 2018-06-19 21:02:24 +10:00
line_modification.cc compute_line_modifications: avoid potentially long iteration 2018-05-17 07:41:32 +10:00
line_modification.hh
main.cc Do not reparse %sh{...} strings 2018-07-05 07:54:28 +10:00
Makefile Pass in OpenBSD binary path using preprocessor option 2018-06-20 14:20:55 +02:00
memory.cc
memory.hh Regex: Introduce a Regex memory domain to track usage separately 2017-11-01 14:05:14 +08:00
meta.hh Move Array and ConstexprVector to a constexpr_utils.hh header 2017-11-12 13:01:18 +08:00
ncurses_ui.cc Tweak search style menu completion display 2018-06-20 20:20:11 +10:00
ncurses_ui.hh Do not draw menu if it would hide prompt content 2018-06-20 08:12:53 +10:00
normal.cc src: Fix cycle hogging when using C at EOF 2018-06-30 11:53:28 +03:00
normal.hh Add declare-user-mode / enter-user-mode commands 2018-02-12 14:19:58 +01:00
option_manager.cc Give more hints in "option not found" error. 2018-03-27 19:14:41 +02:00
option_manager.hh Refactor option_from_string to return directly the option value 2018-05-27 13:00:50 +10:00
option_types.cc Refactor option_from_string to return directly the option value 2018-05-27 13:00:50 +10:00
option_types.hh Fix clang compilation 2018-05-28 08:26:19 +10:00
option.hh Move Array and ConstexprVector to a constexpr_utils.hh header 2017-11-12 13:01:18 +08:00
optional.hh Code style tweak in optional.hh 2017-09-01 16:54:06 +07:00
parameters_parser.cc Commands: Refactor generate_switches_doc 2018-02-28 15:32:11 +11:00
parameters_parser.hh Move all non-core string code to string_utils.{hh,cc} 2017-10-10 10:52:32 +08:00
ranges.cc Ranges: add unit test and fix corner case in split view 2017-12-07 01:58:19 +08:00
ranges.hh Extract a for_n_best algorithm from completion function 2018-04-19 07:58:42 +10:00
ranked_match.cc RankedMatch: Do not compare word boundary match count on single word matches 2018-03-15 23:20:03 +11:00
ranked_match.hh Make non smart case full match better than smart case full match 2017-07-19 20:18:47 +02:00
ref_ptr.hh RefPtr: use inconditional noexcept specification on destructor 2018-02-28 15:04:00 +11:00
regex_impl.cc Use a dedicated vm op for dot when match-newline is false 2018-06-24 12:41:50 +02:00
regex_impl.hh Use a dedicated vm op for dot when match-newline is false 2018-06-24 12:41:50 +02:00
regex.cc Refactor option_from_string to return directly the option value 2018-05-27 13:00:50 +10:00
regex.hh Refactor option_from_string to return directly the option value 2018-05-27 13:00:50 +10:00
register_manager.cc Move all non-core string code to string_utils.{hh,cc} 2017-10-10 10:52:32 +08:00
register_manager.hh Avoid needless constant allocation in StaticRegister::set 2018-05-17 07:41:32 +10:00
remote.cc Fix Kakoune client busy looping on SIGHUP 2018-05-23 08:16:35 +10:00
remote.hh Fix Kakoune client busy looping on SIGHUP 2018-05-23 08:16:35 +10:00
safe_ptr.hh Fix SafeCountable and RefCountable copy/move logic 2017-08-04 11:38:04 +07:00
scope.cc Add a GlobalSetOption hook 2018-03-05 10:39:14 +11:00
scope.hh Docs: add exhaustive list of scoped objects 2018-04-28 17:41:24 +02:00
selection.cc Detect no-op replaces and do not act on them 2018-03-09 23:07:05 +11:00
selection.hh Remove SelectionList::update_timestamp() 2018-03-04 10:35:24 +11:00
selectors.cc Mark unused variables with the [[gnu::unused]] attribute 2018-07-02 19:33:52 +02:00
selectors.hh Text-Objects: Use regex to select surroundings 2017-12-03 17:15:24 +08:00
shared_string.cc Move all non-core string code to string_utils.{hh,cc} 2017-10-10 10:52:32 +08:00
shared_string.hh
shell_manager.cc Fix wrong logic for moving filedescriptors leading to closed stdin 2018-06-28 22:56:50 +10:00
shell_manager.hh ShellManager: init from a static list of env vars 2018-02-18 14:52:29 +11:00
string_utils.cc Fix also the implementation of to_string(size_t) change 2018-05-21 20:01:19 +10:00
string_utils.hh Refactor option_from_string to return directly the option value 2018-05-27 13:00:50 +10:00
string.cc Move all non-core string code to string_utils.{hh,cc} 2017-10-10 10:52:32 +08:00
string.hh Fix some trailing spaces and a tab that sneaked into the code base 2018-04-05 08:52:33 +10:00
unicode.hh Unify code that validates identifiers in Kakoune 2018-03-25 16:35:33 +11:00
unit_tests.cc More refactoring of the diff code in order to make it cleaner 2017-07-18 16:11:24 +02:00
unit_tests.hh
units.hh Constexprify various hash functions 2017-10-20 12:21:22 +08:00
user_interface.hh Add MenuStyle::Search that prevents the menu from hiding buffer text 2018-06-03 12:17:38 +10:00
utf8_iterator.hh Make utf8_iterator traits clear about it returning non-references 2017-10-07 21:54:59 +08:00
utf8.hh Fix utf8::to_previous that could go before the begin iterator 2017-10-10 10:53:24 +08:00
utils.hh Do not let exception propagate out of register restoring lambda 2018-05-05 07:57:37 +10:00
value.hh Small code simplifications 2017-09-07 19:38:34 +08:00
vector.hh
window.cc Change Search completion to display on top of the modeline 2018-06-19 21:02:24 +10:00
window.hh Change Search completion to display on top of the modeline 2018-06-19 21:02:24 +10:00
word_db.cc Do not expose C++ typeid().name to user facing errors on wrong option type 2018-05-26 10:01:26 +10:00
word_db.hh Move get_word_db to word_db.cc 2018-04-19 07:58:42 +10:00