home/src
geppettodivacin 39a2ab84fa Use ReverseView to perform fewer allocations
The first attempt at a bug fix for @ symbols in selection buffer names
worked, but it was very inefficient. In particular, it allocated three
different vectors, and we really only needed the correct elements.
Manipulating iterators to give us the right slices of the existing
vector is far more efficient.

By reversing the original content and taking the last two, we're able to
get the number of selections and main selection without too much hassle.
The buffer name is everything from the start of the content to the
selection count. This gets us through with only one vector allocation.

Credit to @mawww for the optimization idea and for fixing my types.
2020-02-02 22:12:18 -06:00
..
.gdbinit Embed gdb pretty-printing script directly into Kakoune binary 2019-01-23 20:27:16 +11:00
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 Fix array_view dependency on std::min 2019-01-24 22:55:20 +11:00
assert.cc Fix undefined behavior in notify_fatal_error 2018-10-05 10:10:14 +01:00
assert.hh Add support for the shift modifier. 2018-04-11 15:15:45 +10:00
backtrace.cc
backtrace.hh
buffer_manager.cc Fix crash when deleting buffers in a BufClose hook 2019-11-22 20:29:55 +11:00
buffer_manager.hh
buffer_utils.cc Fix compilation on 32bit platforms 2020-01-09 20:13:02 +11:00
buffer_utils.hh Fix compilation on 32bit platforms 2020-01-09 20:13:02 +11:00
buffer.cc Add 'history' and 'uncommitted_modifications' expansions 2020-01-01 19:47:29 -05:00
buffer.hh Add 'history' and 'uncommitted_modifications' expansions 2020-01-01 19:47:29 -05:00
buffer.inl.hh Use BufferCoord sentinel type for regex matching on BufferIterators 2018-11-01 21:51:10 +11:00
changes.cc
changes.hh Update inserted range when generating InsertCompletionHide hook param 2020-01-08 20:33:26 +11:00
client_manager.cc Ensure current context switches away from buffer on delete-buffer 2019-07-22 20:26:39 +10:00
client_manager.hh Prevent conversion to client on suspend from disconnecting other clients 2019-04-12 13:23:38 +10:00
client.cc Redraw relevant clients after adding/removing highlighters 2019-12-28 11:27:04 +11:00
client.hh Add support for markup in info boxes 2019-11-22 21:50:51 +11:00
clock.hh Remove DurationMs and slight code refactor 2018-12-28 06:27:35 +11:00
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 Fix command error line/column reporting 2019-12-24 08:34:24 +11:00
command_manager.hh Fix command error line/column reporting 2019-12-24 08:34:24 +11:00
commands.cc Redraw relevant clients after adding/removing highlighters 2019-12-28 11:27:04 +11:00
commands.hh Re-introduce kill_session::exit_status, @lenormf was right 2018-07-19 19:27:56 +10:00
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 Introduce Menu completion flags to auto select best candidate 2019-05-17 19:52:22 +10:00
constexpr_utils.hh Refactor Hook management to have a well defined list of hooks 2018-10-23 08:15:53 +11:00
context.cc Redraw relevant clients after adding/removing highlighters 2019-12-28 11:27:04 +11:00
context.hh Ensure current context switches away from buffer on delete-buffer 2019-07-22 20:26:39 +10:00
coord.hh Constexprify various hash functions 2017-10-20 12:21:22 +08:00
diff.hh src: Fix the build on Mac 2019-12-01 21:55:55 +01:00
display_buffer.cc Add a {\} marker to disable markup processing 2019-11-28 20:23:52 +11:00
display_buffer.hh Rework ncurses info display, crop content when overlflowing 2019-11-24 18:11:29 +11:00
enum.hh Move constexpr compatible Array struct to meta.hh 2017-05-17 20:20:31 +01:00
env_vars.cc Do not copy environment strings, just refer to them 2019-03-21 20:43:24 +11:00
env_vars.hh
event_manager.cc Fixed all reorder warnings 2019-02-27 22:45:31 -08: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 Document that fg face is optional 2019-12-03 21:17:33 +11:00
face_registry.hh Change faces alias to be a base that can be modified 2019-04-23 23:15:23 +01:00
face.hh Small code cleanup in Face struct definition 2019-04-18 14:37:24 +02:00
file.cc Update fs status post buffer write 2019-12-19 13:39:30 +11:00
file.hh src: Reload buffers when their contents' hash changes 2019-12-03 17:05:24 +01:00
flags.hh Add more constexpr to flags wrapping functions 2017-10-06 13:48:01 +08:00
hash_map.cc Fix use of removed std::random_shuffle 2019-01-20 22:59:28 +11:00
hash_map.hh Add HashMap::items to access item list 2018-07-05 07:54:28 +10:00
hash.cc Fix various undefined behaviours detected by UBSan 2017-06-26 11:27:18 +01:00
hash.hh Header and dependency cleanup 2019-01-24 21:22:20 +11:00
highlighter_group.cc Tweak how highlighter names are auto-generated 2018-07-05 07:54:28 +10:00
highlighter_group.hh Refactor add-highlighter to make naming explicit 2018-07-05 07:54:28 +10:00
highlighter.cc Refactor add-highlighter to make naming explicit 2018-07-05 07:54:28 +10:00
highlighter.hh Header and dependency cleanup 2019-01-24 21:22:20 +11:00
highlighters.cc Split RegexHighlighters matches per requested buffer ranges 2020-01-05 18:58:32 +11:00
highlighters.hh Refactor option_from_string to return directly the option value 2018-05-27 13:00:50 +10:00
hook_manager.cc Support named captures in hooks 2019-04-15 23:56:49 +10:00
hook_manager.hh Remove explicit sizes from make_array calls 2019-10-17 22:48:22 +11:00
input_handler.cc Add mode information to next-key mode name 2019-11-11 21:47:47 +11:00
input_handler.hh Add mode information to next-key mode name 2019-11-11 21:47:47 +11:00
insert_completer.cc Update inserted range when generating InsertCompletionHide hook param 2020-01-08 20:33:26 +11:00
insert_completer.hh Change completions option docstring element to be an arbitrary command 2019-04-17 08:38:52 +02:00
json_ui.cc Fix build on FreeBSD again 2019-12-10 18:13:08 +01:00
json_ui.hh Add support for markup in info boxes 2019-11-22 21:50:51 +11:00
json.cc src json: Limit the recursion depth to 100 2019-11-17 09:27:46 +01:00
json.hh src: Move JSON parsing code to its own file 2019-11-17 09:27:46 +01:00
keymap_manager.cc Add a way to unmap all keys of a given mode at once 2018-09-23 19:40:38 +02:00
keymap_manager.hh Add a way to unmap all keys of a given mode at once 2018-09-23 19:40:38 +02:00
keys.cc src: Create a <semicolon> named key 2019-10-22 11:02:06 +02:00
keys.hh Make scrolling speed configurable 2019-08-19 22:16:39 +10:00
line_modification.cc Introduce FunctionRef to replace std::function when not storing 2019-09-01 13:04:47 +10:00
line_modification.hh Introduce FunctionRef to replace std::function when not storing 2019-09-01 13:04:47 +10:00
main.cc Kakoune v2020.10.16 2020-01-16 20:52:20 +11:00
Makefile Make possible to change compression for make dist 2019-12-18 17:59:18 +01:00
memory.cc Track more memory statistics 2019-03-21 20:35:22 +11:00
memory.hh Track more memory statistics 2019-03-21 20:35:22 +11:00
meta.hh Use BufferCoord sentinel type for regex matching on BufferIterators 2018-11-01 21:51:10 +11:00
ncurses_ui.cc make the Insert key work in st 2020-01-19 16:22:34 +01:00
ncurses_ui.hh Add support for markup in info boxes 2019-11-22 21:50:51 +11:00
normal.cc Use ReverseView to perform fewer allocations 2020-02-02 22:12:18 -06:00
normal.hh Add static or const where useful 2019-11-09 12:53:45 -05:00
option_manager.cc Defer deletion of unsetted option to return to main loop 2019-01-20 22:46:40 +11:00
option_manager.hh Header and dependency cleanup 2019-01-24 21:22:20 +11:00
option_types.cc Change option lists to be specified as separate arguments on commands line 2018-07-05 07:54:28 +10:00
option_types.hh Fix quoting of tuple options 2019-06-27 22:42:12 +10:00
option.hh Remove explicit sizes from make_array calls 2019-10-17 22:48:22 +11:00
optional.hh Add static or const where useful 2019-11-09 12:53:45 -05:00
parameters_parser.cc Do not keep a reference to ParametersDesc inside ParameterParser 2019-05-10 23:46:16 +10:00
parameters_parser.hh Do not keep a reference to ParametersDesc inside ParameterParser 2019-05-10 23:46:16 +10:00
range.hh Move LineRangeSet to line_modification.hh 2018-10-21 12:10:21 +11:00
ranges.cc Change pipe diffing to work linewise 2019-01-23 20:20:54 +11:00
ranges.hh Use ReverseView to perform fewer allocations 2020-02-02 22:12:18 -06:00
ranked_match.cc Rank a word-boundary after a non-word-boundary 2019-09-07 22:53:29 +02: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 Restore regex optimization pass by introducing basic block analysis 2019-12-05 21:10:14 +11:00
regex_impl.hh Do not decode utf-8 when looking for regex next start 2019-12-04 22:33:11 +11:00
regex.cc Try to bypass clang crash 2019-01-20 22:59:28 +11:00
regex.hh Split compile time regex flags from runtime ones 2019-01-20 22:59:28 +11:00
register_manager.cc src: Complete register names in %reg{} expansions 2019-11-23 08:47:14 +01:00
register_manager.hh src: Complete register names in %reg{} expansions 2019-11-23 08:47:14 +01:00
remote.cc Add support for markup in info boxes 2019-11-22 21:50:51 +11:00
remote.hh Fix kak -l when $XDG_RUNTIME_DIR is set 2019-08-20 16:13:21 -04:00
safe_ptr.hh Header and dependency cleanup 2019-01-24 21:22:20 +11:00
scope.cc Refactor option_to_string quoting support, introduce Quoting::Raw 2019-06-19 23:04:16 +10:00
scope.hh Add override 2019-11-09 12:53:45 -05:00
selection.cc Fix replacing at begining of buffer 2019-12-31 12:49:24 +11:00
selection.hh Fix display column computations 2019-11-12 20:43:14 -05:00
selectors.cc src: Make sure the iterator is inbound before decrementing it 2019-06-14 09:17:56 +03:00
selectors.hh Remove explicit sizes from make_array calls 2019-10-17 22:48:22 +11:00
shared_string.cc Fix shared string registry ref count stats 2018-07-26 22:20:19 +10:00
shared_string.hh
shell_manager.cc Make quoting opt-in by using $kak_quoted_... 2019-06-23 12:04:21 +10:00
shell_manager.hh Use shell specific quoting for env vars 2018-08-29 07:53:59 +10:00
string_utils.cc Make wrap_lines a lazy range view 2019-11-23 21:50:58 +11:00
string_utils.hh Make wrap_lines a lazy range view 2019-11-23 21:50:58 +11:00
string.cc Fix String::resize not zero-terminating 2019-11-17 09:50:18 +11:00
string.hh Make String able to reference external data without copying 2019-03-19 22:00:57 +11:00
unicode.hh Header and dependency cleanup 2019-01-24 21:22:20 +11:00
unit_tests.cc Refactor diff to make allocating a diff vector optional 2019-11-30 11:29:36 +11:00
unit_tests.hh
units.hh Constexprify various hash functions 2017-10-20 12:21:22 +08:00
user_interface.hh Add support for markup in info boxes 2019-11-22 21:50:51 +11:00
utf8_iterator.hh Header and dependency cleanup 2019-01-24 21:22:20 +11:00
utf8.hh Rank a word-boundary after a non-word-boundary 2019-09-07 22:53:29 +02:00
utils.hh Add support for markup in info boxes 2019-11-22 21:50:51 +11:00
value.hh Small code simplifications 2017-09-07 19:38:34 +08:00
vector.hh Modernize the way we compute memory domains from type 2017-05-26 07:59:18 +01:00
window.cc Fix WinResize hook getting triggered during urgent event processing 2019-12-16 14:07:22 +11:00
window.hh Fix window_range expansion 2019-12-16 14:09:20 +11:00
word_db.cc Limit the amounts of calls to get_extra_word_chars 2019-08-31 13:14:46 +10:00
word_db.hh Limit the amounts of calls to get_extra_word_chars 2019-08-31 13:14:46 +10:00