diff options
Diffstat (limited to 'src')
46 files changed, 3769 insertions, 3769 deletions
diff --git a/src/clint.py b/src/clint.py index 596e2d8a26..ed5aaf43d2 100755 --- a/src/clint.py +++ b/src/clint.py @@ -900,16 +900,13 @@ def CheckIncludes(filename, lines, error): # These should be synced with the ignored headers in the `iwyu` target in # the Makefile. check_includes_ignore = [ - "src/nvim/api/extmark.h", "src/nvim/api/private/helpers.h", "src/nvim/api/private/validate.h", "src/nvim/assert_defs.h", - "src/nvim/autocmd.h", "src/nvim/buffer.h", "src/nvim/buffer_defs.h", "src/nvim/channel.h", "src/nvim/charset.h", - "src/nvim/decoration.h", "src/nvim/drawline.h", "src/nvim/eval.h", "src/nvim/eval/encode.h", @@ -927,7 +924,6 @@ def CheckIncludes(filename, lines, error): "src/nvim/event/stream.h", "src/nvim/event/time.h", "src/nvim/event/wstream.h", - "src/nvim/extmark.h", "src/nvim/garray.h", "src/nvim/globals.h", "src/nvim/grid.h", @@ -946,7 +942,6 @@ def CheckIncludes(filename, lines, error): "src/nvim/os/pty_conpty_win.h", "src/nvim/os/pty_process_unix.h", "src/nvim/os/pty_process_win.h", - "src/nvim/plines.h", "src/nvim/tui/input.h", "src/nvim/ui.h", "src/nvim/viml/parser/expressions.h", diff --git a/src/nvim/CMakeLists.txt b/src/nvim/CMakeLists.txt index 6a01632040..0cdce539eb 100644 --- a/src/nvim/CMakeLists.txt +++ b/src/nvim/CMakeLists.txt @@ -879,12 +879,11 @@ add_glob_target( FLAGS -c ${UNCRUSTIFY_CONFIG} -q --check FILES ${LINT_NVIM_SOURCES}) -add_custom_target(formatc - COMMAND ${CMAKE_COMMAND} - -D FORMAT_PRG=${UNCRUSTIFY_PRG} - -D LANG=c - -P ${PROJECT_SOURCE_DIR}/cmake/Format.cmake - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) +add_glob_target( + TARGET formatc + COMMAND ${UNCRUSTIFY_PRG} + FLAGS -c ${UNCRUSTIFY_CONFIG} --replace --no-backup + FILES ${LINT_NVIM_SOURCES}) add_dependencies(lintc-uncrustify uncrustify_update_config) add_dependencies(formatc uncrustify_update_config) diff --git a/src/nvim/api/buffer.c b/src/nvim/api/buffer.c index 9d0ac5d6ef..99d261e73d 100644 --- a/src/nvim/api/buffer.c +++ b/src/nvim/api/buffer.c @@ -12,6 +12,7 @@ #include "nvim/api/buffer.h" #include "nvim/api/keysets_defs.h" #include "nvim/api/private/defs.h" +#include "nvim/api/private/dispatch.h" #include "nvim/api/private/helpers.h" #include "nvim/api/private/validate.h" #include "nvim/ascii_defs.h" @@ -152,7 +153,7 @@ Integer nvim_buf_line_count(Buffer buffer, Error *err) /// @return False if attach failed (invalid parameter, or buffer isn't loaded); /// otherwise True. TODO: LUA_API_NO_EVAL Boolean nvim_buf_attach(uint64_t channel_id, Buffer buffer, Boolean send_buffer, - DictionaryOf(LuaRef) opts, Error *err) + Dict(buf_attach) *opts, Error *err) FUNC_API_SINCE(4) { buf_T *buf = find_buffer_by_handle(buffer, err); @@ -161,64 +162,40 @@ Boolean nvim_buf_attach(uint64_t channel_id, Buffer buffer, Boolean send_buffer, return false; } - bool is_lua = (channel_id == LUA_INTERNAL_CALL); BufUpdateCallbacks cb = BUF_UPDATE_CALLBACKS_INIT; - struct { - const char *name; - LuaRef *dest; - } cbs[] = { - { "on_lines", &cb.on_lines }, - { "on_bytes", &cb.on_bytes }, - { "on_changedtick", &cb.on_changedtick }, - { "on_detach", &cb.on_detach }, - { "on_reload", &cb.on_reload }, - { NULL, NULL }, - }; - - for (size_t i = 0; i < opts.size; i++) { - String k = opts.items[i].key; - Object *v = &opts.items[i].value; - bool key_used = false; - if (is_lua) { - for (size_t j = 0; cbs[j].name; j++) { - if (strequal(cbs[j].name, k.data)) { - VALIDATE_T(cbs[j].name, kObjectTypeLuaRef, v->type, { - goto error; - }); - *(cbs[j].dest) = v->data.luaref; - v->data.luaref = LUA_NOREF; - key_used = true; - break; - } - } - if (key_used) { - continue; - } else if (strequal("utf_sizes", k.data)) { - VALIDATE_T("utf_sizes", kObjectTypeBoolean, v->type, { - goto error; - }); - cb.utf_sizes = v->data.boolean; - key_used = true; - } else if (strequal("preview", k.data)) { - VALIDATE_T("preview", kObjectTypeBoolean, v->type, { - goto error; - }); - cb.preview = v->data.boolean; - key_used = true; - } + if (channel_id == LUA_INTERNAL_CALL) { + if (HAS_KEY(opts, buf_attach, on_lines)) { + cb.on_lines = opts->on_lines; + opts->on_lines = LUA_NOREF; } - VALIDATE_S(key_used, "'opts' key", k.data, { - goto error; - }); + if (HAS_KEY(opts, buf_attach, on_bytes)) { + cb.on_bytes = opts->on_bytes; + opts->on_bytes = LUA_NOREF; + } + + if (HAS_KEY(opts, buf_attach, on_changedtick)) { + cb.on_changedtick = opts->on_changedtick; + opts->on_changedtick = LUA_NOREF; + } + + if (HAS_KEY(opts, buf_attach, on_detach)) { + cb.on_detach = opts->on_detach; + opts->on_detach = LUA_NOREF; + } + + if (HAS_KEY(opts, buf_attach, on_reload)) { + cb.on_reload = opts->on_reload; + opts->on_reload = LUA_NOREF; + } + + cb.utf_sizes = opts->utf_sizes; + + cb.preview = opts->preview; } return buf_updates_register(buf, channel_id, cb, send_buffer); - -error: - buffer_update_callbacks_free(cb); - return false; } /// Deactivates buffer-update events on the channel. @@ -781,16 +758,12 @@ early_end: ArrayOf(String) nvim_buf_get_text(uint64_t channel_id, Buffer buffer, Integer start_row, Integer start_col, Integer end_row, Integer end_col, - Dictionary opts, lua_State *lstate, + Dict(empty) *opts, lua_State *lstate, Error *err) FUNC_API_SINCE(9) { Array rv = ARRAY_DICT_INIT; - VALIDATE((opts.size == 0), "%s", "opts dict isn't empty", { - return rv; - }); - buf_T *buf = find_buffer_by_handle(buffer, err); if (!buf) { @@ -1081,7 +1054,7 @@ Boolean nvim_buf_is_loaded(Buffer buffer) /// @param opts Optional parameters. Keys: /// - force: Force deletion and ignore unsaved changes. /// - unload: Unloaded only, do not delete. See |:bunload| -void nvim_buf_delete(Buffer buffer, Dictionary opts, Error *err) +void nvim_buf_delete(Buffer buffer, Dict(buf_delete) *opts, Error *err) FUNC_API_SINCE(7) FUNC_API_TEXTLOCK { @@ -1091,25 +1064,9 @@ void nvim_buf_delete(Buffer buffer, Dictionary opts, Error *err) return; } - bool force = false; - bool unload = false; - for (size_t i = 0; i < opts.size; i++) { - String k = opts.items[i].key; - Object v = opts.items[i].value; - if (strequal("force", k.data)) { - force = api_object_to_bool(v, "force", false, err); - } else if (strequal("unload", k.data)) { - unload = api_object_to_bool(v, "unload", false, err); - } else { - VALIDATE_S(false, "'opts' key", k.data, { - return; - }); - } - } + bool force = opts->force; - if (ERROR_SET(err)) { - return; - } + bool unload = opts->unload; int result = do_buffer(unload ? DOBUF_UNLOAD : DOBUF_WIPE, DOBUF_FIRST, @@ -1193,7 +1150,7 @@ Boolean nvim_buf_del_mark(Buffer buffer, String name, Error *err) /// @return true if the mark was set, else false. /// @see |nvim_buf_del_mark()| /// @see |nvim_buf_get_mark()| -Boolean nvim_buf_set_mark(Buffer buffer, String name, Integer line, Integer col, Dictionary opts, +Boolean nvim_buf_set_mark(Buffer buffer, String name, Integer line, Integer col, Dict(empty) *opts, Error *err) FUNC_API_SINCE(8) { diff --git a/src/nvim/api/command.c b/src/nvim/api/command.c index 7116f4bce0..abb589ecdf 100644 --- a/src/nvim/api/command.c +++ b/src/nvim/api/command.c @@ -94,15 +94,11 @@ /// - "belowright": |:belowright|. /// - "topleft": |:topleft|. /// - "botright": |:botright|. -Dictionary nvim_parse_cmd(String str, Dictionary opts, Error *err) +Dictionary nvim_parse_cmd(String str, Dict(empty) *opts, Error *err) FUNC_API_SINCE(10) FUNC_API_FAST { Dictionary result = ARRAY_DICT_INIT; - VALIDATE((opts.size == 0), "%s", "opts dict isn't empty", { - return result; - }); - // Parse command line exarg_T ea; CmdParseInfo cmdinfo; diff --git a/src/nvim/api/deprecated.c b/src/nvim/api/deprecated.c index 11795033cc..d6a76617a7 100644 --- a/src/nvim/api/deprecated.c +++ b/src/nvim/api/deprecated.c @@ -126,7 +126,7 @@ void nvim_buf_clear_highlight(Buffer buffer, Integer ns_id, Integer line_start, /// @param[out] err Error details, if any /// @return The ns_id that was used Integer nvim_buf_set_virtual_text(Buffer buffer, Integer src_id, Integer line, Array chunks, - Dictionary opts, Error *err) + Dict(empty) *opts, Error *err) FUNC_API_SINCE(5) FUNC_API_DEPRECATED_SINCE(8) { @@ -140,11 +140,6 @@ Integer nvim_buf_set_virtual_text(Buffer buffer, Integer src_id, Integer line, A return 0; } - if (opts.size > 0) { - api_set_error(err, kErrorTypeValidation, "opts dict isn't empty"); - return 0; - } - uint32_t ns_id = src2ns(&src_id); int width; diff --git a/src/nvim/api/deprecated.h b/src/nvim/api/deprecated.h index e20d8304e0..c879794bb3 100644 --- a/src/nvim/api/deprecated.h +++ b/src/nvim/api/deprecated.h @@ -2,6 +2,7 @@ #include <stdint.h> // IWYU pragma: keep +#include "nvim/api/keysets_defs.h" // IWYU pragma: keep #include "nvim/api/private/defs.h" // IWYU pragma: keep #ifdef INCLUDE_GENERATED_DECLARATIONS diff --git a/src/nvim/api/dispatch_deprecated.lua b/src/nvim/api/dispatch_deprecated.lua index 5650a77ac0..7a92789f79 100644 --- a/src/nvim/api/dispatch_deprecated.lua +++ b/src/nvim/api/dispatch_deprecated.lua @@ -1,69 +1,69 @@ local deprecated_aliases = { - nvim_buf_add_highlight="buffer_add_highlight", - nvim_buf_clear_highlight="buffer_clear_highlight", - nvim_buf_get_lines="buffer_get_lines", - nvim_buf_get_mark="buffer_get_mark", - nvim_buf_get_name="buffer_get_name", - nvim_buf_get_number="buffer_get_number", - nvim_buf_get_option="buffer_get_option", - nvim_buf_get_var="buffer_get_var", - nvim_buf_is_valid="buffer_is_valid", - nvim_buf_line_count="buffer_line_count", - nvim_buf_set_lines="buffer_set_lines", - nvim_buf_set_name="buffer_set_name", - nvim_buf_set_option="buffer_set_option", - nvim_call_function="vim_call_function", - nvim_command="vim_command", - nvim_command_output="vim_command_output", - nvim_del_current_line="vim_del_current_line", - nvim_err_write="vim_err_write", - nvim_err_writeln="vim_report_error", - nvim_eval="vim_eval", - nvim_feedkeys="vim_feedkeys", - nvim_get_api_info="vim_get_api_info", - nvim_get_color_by_name="vim_name_to_color", - nvim_get_color_map="vim_get_color_map", - nvim_get_current_buf="vim_get_current_buffer", - nvim_get_current_line="vim_get_current_line", - nvim_get_current_tabpage="vim_get_current_tabpage", - nvim_get_current_win="vim_get_current_window", - nvim_get_option="vim_get_option", - nvim_get_var="vim_get_var", - nvim_get_vvar="vim_get_vvar", - nvim_input="vim_input", - nvim_list_bufs="vim_get_buffers", - nvim_list_runtime_paths="vim_list_runtime_paths", - nvim_list_tabpages="vim_get_tabpages", - nvim_list_wins="vim_get_windows", - nvim_out_write="vim_out_write", - nvim_replace_termcodes="vim_replace_termcodes", - nvim_set_current_buf="vim_set_current_buffer", - nvim_set_current_dir="vim_change_directory", - nvim_set_current_line="vim_set_current_line", - nvim_set_current_tabpage="vim_set_current_tabpage", - nvim_set_current_win="vim_set_current_window", - nvim_set_option="vim_set_option", - nvim_strwidth="vim_strwidth", - nvim_subscribe="vim_subscribe", - nvim_tabpage_get_var="tabpage_get_var", - nvim_tabpage_get_win="tabpage_get_window", - nvim_tabpage_is_valid="tabpage_is_valid", - nvim_tabpage_list_wins="tabpage_get_windows", - nvim_ui_detach="ui_detach", - nvim_ui_try_resize="ui_try_resize", - nvim_unsubscribe="vim_unsubscribe", - nvim_win_get_buf="window_get_buffer", - nvim_win_get_cursor="window_get_cursor", - nvim_win_get_height="window_get_height", - nvim_win_get_option="window_get_option", - nvim_win_get_position="window_get_position", - nvim_win_get_tabpage="window_get_tabpage", - nvim_win_get_var="window_get_var", - nvim_win_get_width="window_get_width", - nvim_win_is_valid="window_is_valid", - nvim_win_set_cursor="window_set_cursor", - nvim_win_set_height="window_set_height", - nvim_win_set_option="window_set_option", - nvim_win_set_width="window_set_width", + nvim_buf_add_highlight = 'buffer_add_highlight', + nvim_buf_clear_highlight = 'buffer_clear_highlight', + nvim_buf_get_lines = 'buffer_get_lines', + nvim_buf_get_mark = 'buffer_get_mark', + nvim_buf_get_name = 'buffer_get_name', + nvim_buf_get_number = 'buffer_get_number', + nvim_buf_get_option = 'buffer_get_option', + nvim_buf_get_var = 'buffer_get_var', + nvim_buf_is_valid = 'buffer_is_valid', + nvim_buf_line_count = 'buffer_line_count', + nvim_buf_set_lines = 'buffer_set_lines', + nvim_buf_set_name = 'buffer_set_name', + nvim_buf_set_option = 'buffer_set_option', + nvim_call_function = 'vim_call_function', + nvim_command = 'vim_command', + nvim_command_output = 'vim_command_output', + nvim_del_current_line = 'vim_del_current_line', + nvim_err_write = 'vim_err_write', + nvim_err_writeln = 'vim_report_error', + nvim_eval = 'vim_eval', + nvim_feedkeys = 'vim_feedkeys', + nvim_get_api_info = 'vim_get_api_info', + nvim_get_color_by_name = 'vim_name_to_color', + nvim_get_color_map = 'vim_get_color_map', + nvim_get_current_buf = 'vim_get_current_buffer', + nvim_get_current_line = 'vim_get_current_line', + nvim_get_current_tabpage = 'vim_get_current_tabpage', + nvim_get_current_win = 'vim_get_current_window', + nvim_get_option = 'vim_get_option', + nvim_get_var = 'vim_get_var', + nvim_get_vvar = 'vim_get_vvar', + nvim_input = 'vim_input', + nvim_list_bufs = 'vim_get_buffers', + nvim_list_runtime_paths = 'vim_list_runtime_paths', + nvim_list_tabpages = 'vim_get_tabpages', + nvim_list_wins = 'vim_get_windows', + nvim_out_write = 'vim_out_write', + nvim_replace_termcodes = 'vim_replace_termcodes', + nvim_set_current_buf = 'vim_set_current_buffer', + nvim_set_current_dir = 'vim_change_directory', + nvim_set_current_line = 'vim_set_current_line', + nvim_set_current_tabpage = 'vim_set_current_tabpage', + nvim_set_current_win = 'vim_set_current_window', + nvim_set_option = 'vim_set_option', + nvim_strwidth = 'vim_strwidth', + nvim_subscribe = 'vim_subscribe', + nvim_tabpage_get_var = 'tabpage_get_var', + nvim_tabpage_get_win = 'tabpage_get_window', + nvim_tabpage_is_valid = 'tabpage_is_valid', + nvim_tabpage_list_wins = 'tabpage_get_windows', + nvim_ui_detach = 'ui_detach', + nvim_ui_try_resize = 'ui_try_resize', + nvim_unsubscribe = 'vim_unsubscribe', + nvim_win_get_buf = 'window_get_buffer', + nvim_win_get_cursor = 'window_get_cursor', + nvim_win_get_height = 'window_get_height', + nvim_win_get_option = 'window_get_option', + nvim_win_get_position = 'window_get_position', + nvim_win_get_tabpage = 'window_get_tabpage', + nvim_win_get_var = 'window_get_var', + nvim_win_get_width = 'window_get_width', + nvim_win_is_valid = 'window_is_valid', + nvim_win_set_cursor = 'window_set_cursor', + nvim_win_set_height = 'window_set_height', + nvim_win_set_option = 'window_set_option', + nvim_win_set_width = 'window_set_width', } return deprecated_aliases diff --git a/src/nvim/api/extmark.c b/src/nvim/api/extmark.c index 80b1546329..ec47d7227e 100644 --- a/src/nvim/api/extmark.c +++ b/src/nvim/api/extmark.c @@ -187,7 +187,7 @@ static Array extmark_to_array(MTPair extmark, bool id, bool add_dict, bool hl_na /// @return 0-indexed (row, col) tuple or empty list () if extmark id was /// absent ArrayOf(Integer) nvim_buf_get_extmark_by_id(Buffer buffer, Integer ns_id, - Integer id, Dictionary opts, + Integer id, Dict(get_extmark) *opts, Error *err) FUNC_API_SINCE(7) { @@ -203,27 +203,9 @@ ArrayOf(Integer) nvim_buf_get_extmark_by_id(Buffer buffer, Integer ns_id, return rv; }); - bool details = false; - bool hl_name = true; - for (size_t i = 0; i < opts.size; i++) { - String k = opts.items[i].key; - Object *v = &opts.items[i].value; - if (strequal("details", k.data)) { - details = api_object_to_bool(*v, "details", false, err); - if (ERROR_SET(err)) { - return rv; - } - } else if (strequal("hl_name", k.data)) { - hl_name = api_object_to_bool(*v, "hl_name", false, err); - if (ERROR_SET(err)) { - return rv; - } - } else { - VALIDATE_S(false, "'opts' key", k.data, { - return rv; - }); - } - } + bool details = opts->details; + + bool hl_name = GET_BOOL_OR_TRUE(opts, get_extmark, hl_name); MTPair extmark = extmark_from_id(buf, (uint32_t)ns_id, (uint32_t)id); if (extmark.start.pos.row < 0) { diff --git a/src/nvim/api/keysets_defs.h b/src/nvim/api/keysets_defs.h index e59eda5686..d1cbe43de0 100644 --- a/src/nvim/api/keysets_defs.h +++ b/src/nvim/api/keysets_defs.h @@ -3,6 +3,10 @@ #include "nvim/api/private/defs.h" typedef struct { + OptionalKeys is_set__empty_; +} Dict(empty); + +typedef struct { OptionalKeys is_set__context_; Array types; } Dict(context); @@ -52,6 +56,12 @@ typedef struct { } Dict(set_extmark); typedef struct { + OptionalKeys is_set__get_extmark_; + Boolean details; + Boolean hl_name; +} Dict(get_extmark); + +typedef struct { OptionalKeys is_set__get_extmarks_; Integer limit; Boolean details; @@ -313,3 +323,25 @@ typedef struct { typedef struct { Boolean output; } Dict(exec_opts); + +typedef struct { + OptionalKeys is_set__buf_attach_; + LuaRef on_lines; + LuaRef on_bytes; + LuaRef on_changedtick; + LuaRef on_detach; + LuaRef on_reload; + Boolean utf_sizes; + Boolean preview; +} Dict(buf_attach); + +typedef struct { + OptionalKeys is_set__buf_delete_; + Boolean force; + Boolean unload; +} Dict(buf_delete); + +typedef struct { + OptionalKeys is_set__open_term_; + LuaRef on_input; +} Dict(open_term); diff --git a/src/nvim/api/vim.c b/src/nvim/api/vim.c index 270f2e4432..0842469c59 100644 --- a/src/nvim/api/vim.c +++ b/src/nvim/api/vim.c @@ -987,7 +987,7 @@ fail: /// ["input", term, bufnr, data] /// @param[out] err Error details, if any /// @return Channel id, or 0 on error -Integer nvim_open_term(Buffer buffer, DictionaryOf(LuaRef) opts, Error *err) +Integer nvim_open_term(Buffer buffer, Dict(open_term) *opts, Error *err) FUNC_API_SINCE(7) FUNC_API_TEXTLOCK_ALLOW_CMDWIN { @@ -1002,33 +1002,25 @@ Integer nvim_open_term(Buffer buffer, DictionaryOf(LuaRef) opts, Error *err) } LuaRef cb = LUA_NOREF; - for (size_t i = 0; i < opts.size; i++) { - String k = opts.items[i].key; - Object *v = &opts.items[i].value; - if (strequal("on_input", k.data)) { - VALIDATE_T("on_input", kObjectTypeLuaRef, v->type, { - return 0; - }); - cb = v->data.luaref; - v->data.luaref = LUA_NOREF; - break; - } else { - VALIDATE_S(false, "'opts' key", k.data, {}); - } + + if (HAS_KEY(opts, open_term, on_input)) { + cb = opts->on_input; + opts->on_input = LUA_NOREF; } - TerminalOptions topts; Channel *chan = channel_alloc(kChannelStreamInternal); chan->stream.internal.cb = cb; chan->stream.internal.closed = false; - topts.data = chan; - // NB: overridden in terminal_check_size if a window is already - // displaying the buffer - topts.width = (uint16_t)MAX(curwin->w_width_inner - win_col_off(curwin), 0); - topts.height = (uint16_t)curwin->w_height_inner; - topts.write_cb = term_write; - topts.resize_cb = term_resize; - topts.close_cb = term_close; + TerminalOptions topts = { + .data = chan, + // NB: overridden in terminal_check_size if a window is already + // displaying the buffer + .width = (uint16_t)MAX(curwin->w_width_inner - win_col_off(curwin), 0), + .height = (uint16_t)curwin->w_height_inner, + .write_cb = term_write, + .resize_cb = term_resize, + .close_cb = term_close, + }; channel_incref(chan); terminal_open(&chan->term, buf, topts); if (chan->term != NULL) { @@ -1038,7 +1030,7 @@ Integer nvim_open_term(Buffer buffer, DictionaryOf(LuaRef) opts, Error *err) return (Integer)chan->id; } -static void term_write(char *buf, size_t size, void *data) // NOLINT(readability-non-const-parameter) +static void term_write(const char *buf, size_t size, void *data) { Channel *chan = data; LuaRef cb = chan->stream.internal.cb; @@ -1048,7 +1040,7 @@ static void term_write(char *buf, size_t size, void *data) // NOLINT(readabilit MAXSIZE_TEMP_ARRAY(args, 3); ADD_C(args, INTEGER_OBJ((Integer)chan->id)); ADD_C(args, BUFFER_OBJ(terminal_buf(chan->term))); - ADD_C(args, STRING_OBJ(((String){ .data = buf, .size = size }))); + ADD_C(args, STRING_OBJ(((String){ .data = (char *)buf, .size = size }))); textlock++; nlua_call_ref(cb, "input", args, false, NULL); textlock--; @@ -1940,14 +1932,10 @@ Object nvim_get_proc(Integer pid, Error *err) /// @param finish Finish the completion and dismiss the popup menu. Implies {insert}. /// @param opts Optional parameters. Reserved for future use. /// @param[out] err Error details, if any -void nvim_select_popupmenu_item(Integer item, Boolean insert, Boolean finish, Dictionary opts, +void nvim_select_popupmenu_item(Integer item, Boolean insert, Boolean finish, Dict(empty) *opts, Error *err) FUNC_API_SINCE(6) { - VALIDATE((opts.size == 0), "%s", "opts dict isn't empty", { - return; - }); - if (finish) { insert = true; } @@ -2048,7 +2036,7 @@ Boolean nvim_del_mark(String name, Error *err) /// not set. /// @see |nvim_buf_set_mark()| /// @see |nvim_del_mark()| -Array nvim_get_mark(String name, Dictionary opts, Error *err) +Array nvim_get_mark(String name, Dict(empty) *opts, Error *err) FUNC_API_SINCE(8) { Array rv = ARRAY_DICT_INIT; diff --git a/src/nvim/auevents.lua b/src/nvim/auevents.lua index 696df7c534..11d1597236 100644 --- a/src/nvim/auevents.lua +++ b/src/nvim/auevents.lua @@ -1,172 +1,172 @@ return { events = { - 'BufAdd', -- after adding a buffer to the buffer list - 'BufDelete', -- deleting a buffer from the buffer list - 'BufEnter', -- after entering a buffer - 'BufFilePost', -- after renaming a buffer - 'BufFilePre', -- before renaming a buffer - 'BufHidden', -- just after buffer becomes hidden - 'BufLeave', -- before leaving a buffer - 'BufModifiedSet', -- after the 'modified' state of a buffer changes - 'BufNew', -- after creating any buffer - 'BufNewFile', -- when creating a buffer for a new file - 'BufReadCmd', -- read buffer using command - 'BufReadPost', -- after reading a buffer - 'BufReadPre', -- before reading a buffer - 'BufUnload', -- just before unloading a buffer - 'BufWinEnter', -- after showing a buffer in a window - 'BufWinLeave', -- just after buffer removed from window - 'BufWipeout', -- just before really deleting a buffer - 'BufWriteCmd', -- write buffer using command - 'BufWritePost', -- after writing a buffer - 'BufWritePre', -- before writing a buffer - 'ChanInfo', -- info was received about channel - 'ChanOpen', -- channel was opened - 'CmdUndefined', -- command undefined - 'CmdWinEnter', -- after entering the cmdline window - 'CmdWinLeave', -- before leaving the cmdline window - 'CmdlineChanged', -- command line was modified - 'CmdlineEnter', -- after entering cmdline mode - 'CmdlineLeave', -- before leaving cmdline mode - 'ColorScheme', -- after loading a colorscheme - 'ColorSchemePre', -- before loading a colorscheme - 'CompleteChanged', -- after popup menu changed - 'CompleteDone', -- after finishing insert complete - 'CompleteDonePre', -- idem, before clearing info - 'CursorHold', -- cursor in same position for a while - 'CursorHoldI', -- idem, in Insert mode - 'CursorMoved', -- cursor was moved - 'CursorMovedI', -- cursor was moved in Insert mode - 'DiagnosticChanged', -- diagnostics in a buffer were modified - 'DiffUpdated', -- diffs have been updated - 'DirChanged', -- directory changed - 'DirChangedPre', -- directory is going to change - 'EncodingChanged', -- after changing the 'encoding' option - 'ExitPre', -- before exiting - 'FileAppendCmd', -- append to a file using command - 'FileAppendPost', -- after appending to a file - 'FileAppendPre', -- before appending to a file - 'FileChangedRO', -- before first change to read-only file - 'FileChangedShell', -- after shell command that changed file - 'FileChangedShellPost', -- after (not) reloading changed file - 'FileReadCmd', -- read from a file using command - 'FileReadPost', -- after reading a file - 'FileReadPre', -- before reading a file - 'FileType', -- new file type detected (user defined) - 'FileWriteCmd', -- write to a file using command - 'FileWritePost', -- after writing a file - 'FileWritePre', -- before writing a file - 'FilterReadPost', -- after reading from a filter - 'FilterReadPre', -- before reading from a filter - 'FilterWritePost', -- after writing to a filter - 'FilterWritePre', -- before writing to a filter - 'FocusGained', -- got the focus - 'FocusLost', -- lost the focus to another app - 'FuncUndefined', -- if calling a function which doesn't exist - 'GUIEnter', -- after starting the GUI - 'GUIFailed', -- after starting the GUI failed - 'InsertChange', -- when changing Insert/Replace mode - 'InsertCharPre', -- before inserting a char - 'InsertEnter', -- when entering Insert mode - 'InsertLeave', -- just after leaving Insert mode - 'InsertLeavePre', -- just before leaving Insert mode - 'LspAttach', -- after an LSP client attaches to a buffer - 'LspDetach', -- after an LSP client detaches from a buffer - 'LspRequest', -- after an LSP request is started, canceled, or completed - 'LspNotify', -- after an LSP notice has been sent to the server - 'LspTokenUpdate', -- after a visible LSP token is updated - 'LspProgress', -- after a LSP progress update - 'MenuPopup', -- just before popup menu is displayed - 'ModeChanged', -- after changing the mode - 'OptionSet', -- after setting any option - 'QuickFixCmdPost', -- after :make, :grep etc. - 'QuickFixCmdPre', -- before :make, :grep etc. - 'QuitPre', -- before :quit - 'RecordingEnter', -- when starting to record a macro - 'RecordingLeave', -- just before a macro stops recording - 'RemoteReply', -- upon string reception from a remote vim - 'SafeState', -- going to wait for a character - 'SearchWrapped', -- after the search wrapped around - 'SessionLoadPost', -- after loading a session file - 'ShellCmdPost', -- after ":!cmd" - 'ShellFilterPost', -- after ":1,2!cmd", ":w !cmd", ":r !cmd". - 'Signal', -- after nvim process received a signal - 'SourceCmd', -- sourcing a Vim script using command - 'SourcePost', -- after sourcing a Vim script - 'SourcePre', -- before sourcing a Vim script - 'SpellFileMissing', -- spell file missing - 'StdinReadPost', -- after reading from stdin - 'StdinReadPre', -- before reading from stdin - 'SwapExists', -- found existing swap file - 'Syntax', -- syntax selected - 'TabClosed', -- a tab has closed - 'TabEnter', -- after entering a tab page - 'TabLeave', -- before leaving a tab page - 'TabNew', -- when creating a new tab - 'TabNewEntered', -- after entering a new tab - 'TermChanged', -- after changing 'term' - 'TermClose', -- after the process exits - 'TermEnter', -- after entering Terminal mode - 'TermLeave', -- after leaving Terminal mode - 'TermOpen', -- after opening a terminal buffer - 'TermResponse', -- after setting "v:termresponse" - 'TextChanged', -- text was modified - 'TextChangedI', -- text was modified in Insert mode(no popup) - 'TextChangedP', -- text was modified in Insert mode(popup) - 'TextChangedT', -- text was modified in Terminal mode - 'TextYankPost', -- after a yank or delete was done (y, d, c) - 'UIEnter', -- after UI attaches - 'UILeave', -- after UI detaches - 'User', -- user defined autocommand - 'VimEnter', -- after starting Vim - 'VimLeave', -- before exiting Vim - 'VimLeavePre', -- before exiting Vim and writing ShaDa file - 'VimResized', -- after Vim window was resized - 'VimResume', -- after Nvim is resumed - 'VimSuspend', -- before Nvim is suspended - 'WinClosed', -- after closing a window - 'WinEnter', -- after entering a window - 'WinLeave', -- before leaving a window - 'WinNew', -- when entering a new window - 'WinResized', -- after a window was resized - 'WinScrolled', -- after a window was scrolled or resized + 'BufAdd', -- after adding a buffer to the buffer list + 'BufDelete', -- deleting a buffer from the buffer list + 'BufEnter', -- after entering a buffer + 'BufFilePost', -- after renaming a buffer + 'BufFilePre', -- before renaming a buffer + 'BufHidden', -- just after buffer becomes hidden + 'BufLeave', -- before leaving a buffer + 'BufModifiedSet', -- after the 'modified' state of a buffer changes + 'BufNew', -- after creating any buffer + 'BufNewFile', -- when creating a buffer for a new file + 'BufReadCmd', -- read buffer using command + 'BufReadPost', -- after reading a buffer + 'BufReadPre', -- before reading a buffer + 'BufUnload', -- just before unloading a buffer + 'BufWinEnter', -- after showing a buffer in a window + 'BufWinLeave', -- just after buffer removed from window + 'BufWipeout', -- just before really deleting a buffer + 'BufWriteCmd', -- write buffer using command + 'BufWritePost', -- after writing a buffer + 'BufWritePre', -- before writing a buffer + 'ChanInfo', -- info was received about channel + 'ChanOpen', -- channel was opened + 'CmdUndefined', -- command undefined + 'CmdWinEnter', -- after entering the cmdline window + 'CmdWinLeave', -- before leaving the cmdline window + 'CmdlineChanged', -- command line was modified + 'CmdlineEnter', -- after entering cmdline mode + 'CmdlineLeave', -- before leaving cmdline mode + 'ColorScheme', -- after loading a colorscheme + 'ColorSchemePre', -- before loading a colorscheme + 'CompleteChanged', -- after popup menu changed + 'CompleteDone', -- after finishing insert complete + 'CompleteDonePre', -- idem, before clearing info + 'CursorHold', -- cursor in same position for a while + 'CursorHoldI', -- idem, in Insert mode + 'CursorMoved', -- cursor was moved + 'CursorMovedI', -- cursor was moved in Insert mode + 'DiagnosticChanged', -- diagnostics in a buffer were modified + 'DiffUpdated', -- diffs have been updated + 'DirChanged', -- directory changed + 'DirChangedPre', -- directory is going to change + 'EncodingChanged', -- after changing the 'encoding' option + 'ExitPre', -- before exiting + 'FileAppendCmd', -- append to a file using command + 'FileAppendPost', -- after appending to a file + 'FileAppendPre', -- before appending to a file + 'FileChangedRO', -- before first change to read-only file + 'FileChangedShell', -- after shell command that changed file + 'FileChangedShellPost', -- after (not) reloading changed file + 'FileReadCmd', -- read from a file using command + 'FileReadPost', -- after reading a file + 'FileReadPre', -- before reading a file + 'FileType', -- new file type detected (user defined) + 'FileWriteCmd', -- write to a file using command + 'FileWritePost', -- after writing a file + 'FileWritePre', -- before writing a file + 'FilterReadPost', -- after reading from a filter + 'FilterReadPre', -- before reading from a filter + 'FilterWritePost', -- after writing to a filter + 'FilterWritePre', -- before writing to a filter + 'FocusGained', -- got the focus + 'FocusLost', -- lost the focus to another app + 'FuncUndefined', -- if calling a function which doesn't exist + 'GUIEnter', -- after starting the GUI + 'GUIFailed', -- after starting the GUI failed + 'InsertChange', -- when changing Insert/Replace mode + 'InsertCharPre', -- before inserting a char + 'InsertEnter', -- when entering Insert mode + 'InsertLeave', -- just after leaving Insert mode + 'InsertLeavePre', -- just before leaving Insert mode + 'LspAttach', -- after an LSP client attaches to a buffer + 'LspDetach', -- after an LSP client detaches from a buffer + 'LspRequest', -- after an LSP request is started, canceled, or completed + 'LspNotify', -- after an LSP notice has been sent to the server + 'LspTokenUpdate', -- after a visible LSP token is updated + 'LspProgress', -- after a LSP progress update + 'MenuPopup', -- just before popup menu is displayed + 'ModeChanged', -- after changing the mode + 'OptionSet', -- after setting any option + 'QuickFixCmdPost', -- after :make, :grep etc. + 'QuickFixCmdPre', -- before :make, :grep etc. + 'QuitPre', -- before :quit + 'RecordingEnter', -- when starting to record a macro + 'RecordingLeave', -- just before a macro stops recording + 'RemoteReply', -- upon string reception from a remote vim + 'SafeState', -- going to wait for a character + 'SearchWrapped', -- after the search wrapped around + 'SessionLoadPost', -- after loading a session file + 'ShellCmdPost', -- after ":!cmd" + 'ShellFilterPost', -- after ":1,2!cmd", ":w !cmd", ":r !cmd". + 'Signal', -- after nvim process received a signal + 'SourceCmd', -- sourcing a Vim script using command + 'SourcePost', -- after sourcing a Vim script + 'SourcePre', -- before sourcing a Vim script + 'SpellFileMissing', -- spell file missing + 'StdinReadPost', -- after reading from stdin + 'StdinReadPre', -- before reading from stdin + 'SwapExists', -- found existing swap file + 'Syntax', -- syntax selected + 'TabClosed', -- a tab has closed + 'TabEnter', -- after entering a tab page + 'TabLeave', -- before leaving a tab page + 'TabNew', -- when creating a new tab + 'TabNewEntered', -- after entering a new tab + 'TermChanged', -- after changing 'term' + 'TermClose', -- after the process exits + 'TermEnter', -- after entering Terminal mode + 'TermLeave', -- after leaving Terminal mode + 'TermOpen', -- after opening a terminal buffer + 'TermResponse', -- after setting "v:termresponse" + 'TextChanged', -- text was modified + 'TextChangedI', -- text was modified in Insert mode(no popup) + 'TextChangedP', -- text was modified in Insert mode(popup) + 'TextChangedT', -- text was modified in Terminal mode + 'TextYankPost', -- after a yank or delete was done (y, d, c) + 'UIEnter', -- after UI attaches + 'UILeave', -- after UI detaches + 'User', -- user defined autocommand + 'VimEnter', -- after starting Vim + 'VimLeave', -- before exiting Vim + 'VimLeavePre', -- before exiting Vim and writing ShaDa file + 'VimResized', -- after Vim window was resized + 'VimResume', -- after Nvim is resumed + 'VimSuspend', -- before Nvim is suspended + 'WinClosed', -- after closing a window + 'WinEnter', -- after entering a window + 'WinLeave', -- before leaving a window + 'WinNew', -- when entering a new window + 'WinResized', -- after a window was resized + 'WinScrolled', -- after a window was scrolled or resized }, aliases = { { 'BufCreate', - 'BufAdd' + 'BufAdd', }, { 'BufRead', - 'BufReadPost' + 'BufReadPost', }, { 'BufWrite', - 'BufWritePre' + 'BufWritePre', }, { 'FileEncoding', - 'EncodingChanged' + 'EncodingChanged', }, }, -- List of nvim-specific events or aliases for the purpose of generating -- syntax file nvim_specific = { - BufModifiedSet=true, - DiagnosticChanged=true, - LspAttach=true, - LspDetach=true, - LspNotify=true, - LspRequest=true, - LspProgress=true, - LspTokenUpdate=true, - RecordingEnter=true, - RecordingLeave=true, - Signal=true, - TabNewEntered=true, - TermClose=true, - TermOpen=true, - UIEnter=true, - UILeave=true, + BufModifiedSet = true, + DiagnosticChanged = true, + LspAttach = true, + LspDetach = true, + LspNotify = true, + LspRequest = true, + LspProgress = true, + LspTokenUpdate = true, + RecordingEnter = true, + RecordingLeave = true, + Signal = true, + TabNewEntered = true, + TermClose = true, + TermOpen = true, + UIEnter = true, + UILeave = true, }, } diff --git a/src/nvim/autocmd.h b/src/nvim/autocmd.h index 8ff4d75ddf..ea8f32feb2 100644 --- a/src/nvim/autocmd.h +++ b/src/nvim/autocmd.h @@ -1,9 +1,10 @@ #pragma once #include <stdbool.h> -#include <stddef.h> -#include <stdint.h> +#include <stddef.h> // IWYU pragma: keep +#include <stdint.h> // IWYU pragma: keep +#include "klib/kvec.h" #include "nvim/api/private/defs.h" // IWYU pragma: keep #include "nvim/autocmd_defs.h" // IWYU pragma: export #include "nvim/buffer_defs.h" @@ -12,7 +13,6 @@ #include "nvim/ex_cmds_defs.h" // IWYU pragma: keep #include "nvim/macros_defs.h" #include "nvim/pos_defs.h" -#include "nvim/types_defs.h" // Set by the apply_autocmds_group function if the given event is equal to // EVENT_FILETYPE. Used by the readfile function in order to determine if diff --git a/src/nvim/buffer_defs.h b/src/nvim/buffer_defs.h index b26d42385b..7402e66403 100644 --- a/src/nvim/buffer_defs.h +++ b/src/nvim/buffer_defs.h @@ -26,7 +26,7 @@ typedef struct { #include "nvim/map_defs.h" #include "nvim/mapping_defs.h" #include "nvim/mark_defs.h" -#include "nvim/marktree.h" +#include "nvim/marktree_defs.h" #include "nvim/option_vars.h" #include "nvim/pos_defs.h" #include "nvim/statusline_defs.h" diff --git a/src/nvim/change.c b/src/nvim/change.c index efc2db1413..c528ffba20 100644 --- a/src/nvim/change.c +++ b/src/nvim/change.c @@ -1839,11 +1839,11 @@ int open_line(int dir, int flags, int second_line_indent, bool *did_do_comment) curwin->w_cursor.lnum = old_cursor.lnum + 1; } if (did_append) { - changed_lines(curbuf, curwin->w_cursor.lnum, 0, curwin->w_cursor.lnum, 1, true); // bail out and just get the final length of the line we just manipulated bcount_t extra = (bcount_t)strlen(ml_get(curwin->w_cursor.lnum)); extmark_splice(curbuf, (int)curwin->w_cursor.lnum - 1, 0, 0, 0, 0, 1, 0, 1 + extra, kExtmarkUndo); + changed_lines(curbuf, curwin->w_cursor.lnum, 0, curwin->w_cursor.lnum, 1, true); } curbuf_splice_pending--; diff --git a/src/nvim/channel.c b/src/nvim/channel.c index 24793bcb2a..767c8d29b8 100644 --- a/src/nvim/channel.c +++ b/src/nvim/channel.c @@ -794,19 +794,20 @@ static void channel_callback_call(Channel *chan, CallbackReader *reader) /// and `buf` is assumed to be a new, unmodified buffer. void channel_terminal_open(buf_T *buf, Channel *chan) { - TerminalOptions topts; - topts.data = chan; - topts.width = chan->stream.pty.width; - topts.height = chan->stream.pty.height; - topts.write_cb = term_write; - topts.resize_cb = term_resize; - topts.close_cb = term_close; + TerminalOptions topts = { + .data = chan, + .width = chan->stream.pty.width, + .height = chan->stream.pty.height, + .write_cb = term_write, + .resize_cb = term_resize, + .close_cb = term_close, + }; buf->b_p_channel = (OptInt)chan->id; // 'channel' option channel_incref(chan); terminal_open(&chan->term, buf, topts); } -static void term_write(char *buf, size_t size, void *data) +static void term_write(const char *buf, size_t size, void *data) { Channel *chan = data; if (chan->stream.proc.in.closed) { diff --git a/src/nvim/decoration.c b/src/nvim/decoration.c index 11204a1b31..ccba8bd607 100644 --- a/src/nvim/decoration.c +++ b/src/nvim/decoration.c @@ -14,6 +14,7 @@ #include "nvim/grid.h" #include "nvim/highlight.h" #include "nvim/highlight_group.h" +#include "nvim/marktree.h" #include "nvim/memory.h" #include "nvim/move.h" #include "nvim/option_vars.h" diff --git a/src/nvim/decoration.h b/src/nvim/decoration.h index e5bac169dc..92e0cbc76b 100644 --- a/src/nvim/decoration.h +++ b/src/nvim/decoration.h @@ -8,7 +8,7 @@ #include "nvim/buffer_defs.h" #include "nvim/decoration_defs.h" // IWYU pragma: export #include "nvim/macros_defs.h" -#include "nvim/marktree.h" +#include "nvim/marktree_defs.h" #include "nvim/pos_defs.h" // IWYU pragma: keep #include "nvim/types_defs.h" diff --git a/src/nvim/drawscreen.c b/src/nvim/drawscreen.c index fd1589f0c5..85f62db774 100644 --- a/src/nvim/drawscreen.c +++ b/src/nvim/drawscreen.c @@ -2644,6 +2644,8 @@ int number_width(win_T *wp) /// e.g. if must_redraw is UPD_CLEAR, type UPD_NOT_VALID will do nothing. void redraw_later(win_T *wp, int type) { + // curwin may have been set to NULL when exiting + assert(wp != NULL || exiting); if (!exiting && wp->w_redr_type < type) { wp->w_redr_type = type; if (type >= UPD_NOT_VALID) { diff --git a/src/nvim/edit.c b/src/nvim/edit.c index dd7cd9a573..ba2885a162 100644 --- a/src/nvim/edit.c +++ b/src/nvim/edit.c @@ -444,8 +444,11 @@ static int insert_check(VimState *state) // is detected when the cursor column is smaller after inserting something. // Don't do this when the topline changed already, it has already been // adjusted (by insertchar() calling open_line())). + // Also don't do this when 'smoothscroll' is set, as the window should then + // be scrolled by screen lines. if (curbuf->b_mod_set && curwin->w_p_wrap + && !curwin->w_p_sms && !s->did_backspace && curwin->w_topline == s->old_topline && curwin->w_topfill == s->old_topfill) { diff --git a/src/nvim/eval.lua b/src/nvim/eval.lua index 55f4721c3a..59423808be 100644 --- a/src/nvim/eval.lua +++ b/src/nvim/eval.lua @@ -2114,7 +2114,7 @@ M.funcs = { name = 'execute', params = { { 'command', 'string|string[]' }, - { 'silent', "''|'silent'|'silent!'" } + { 'silent', "''|'silent'|'silent!'" }, }, returns = 'string', signature = 'execute({command} [, {silent}])', @@ -4519,7 +4519,7 @@ M.funcs = { name = 'getwininfo', params = { { 'winid', 'integer' } }, signature = 'getwininfo([{winid}])', - returns = 'vim.fn.getwininfo.ret.item[]' + returns = 'vim.fn.getwininfo.ret.item[]', }, getwinpos = { args = { 0, 1 }, @@ -6297,7 +6297,7 @@ M.funcs = { ]], name = 'maplist', params = {}, - signature = 'maplist([{abbr}])' + signature = 'maplist([{abbr}])', }, mapnew = { args = 2, @@ -9905,7 +9905,7 @@ M.funcs = { name = 'sign_jump', params = { { 'id', 'integer' }, { 'group', 'string' }, { 'buf', 'integer|string' } }, signature = 'sign_jump({id}, {group}, {buf})', - returns = 'integer' + returns = 'integer', }, sign_place = { args = { 4, 5 }, @@ -9968,7 +9968,7 @@ M.funcs = { { 'dict', 'vim.fn.sign_place.dict' }, }, signature = 'sign_place({id}, {group}, {name}, {buf} [, {dict}])', - returns = 'integer' + returns = 'integer', }, sign_placelist = { args = 1, @@ -10035,7 +10035,7 @@ M.funcs = { name = 'sign_placelist', params = { { 'list', 'vim.fn.sign_placelist.list.item[]' } }, signature = 'sign_placelist({list})', - returns = 'integer[]' + returns = 'integer[]', }, sign_undefine = { args = { 0, 1 }, @@ -10570,7 +10570,7 @@ M.funcs = { signature = 'stdpath({what})', }, state = { - args = {0, 1}, + args = { 0, 1 }, base = 1, desc = [=[ Return a string which contains characters indicating the @@ -12698,7 +12698,7 @@ M.funcs = { name = 'winsaveview', params = {}, signature = 'winsaveview()', - returns = 'vim.fn.winsaveview.ret' + returns = 'vim.fn.winsaveview.ret', }, winwidth = { args = 1, diff --git a/src/nvim/ex_cmds.lua b/src/nvim/ex_cmds.lua index 4859a70553..551d228862 100644 --- a/src/nvim/ex_cmds.lua +++ b/src/nvim/ex_cmds.lua @@ -4,3358 +4,3358 @@ local module = {} -- Description of the values below is contained in ex_cmds_defs.h file. -- "EX_" prefix is omitted. -local RANGE = 0x001 -local BANG = 0x002 -local EXTRA = 0x004 -local XFILE = 0x008 -local NOSPC = 0x010 -local DFLALL = 0x020 -local WHOLEFOLD = 0x040 -local NEEDARG = 0x080 -local TRLBAR = 0x100 -local REGSTR = 0x200 -local COUNT = 0x400 -local NOTRLCOM = 0x800 -local ZEROR = 0x1000 -local CTRLV = 0x2000 -local CMDARG = 0x4000 -local BUFNAME = 0x8000 -local BUFUNL = 0x10000 -local ARGOPT = 0x20000 -local SBOXOK = 0x40000 -local CMDWIN = 0x80000 -local MODIFY = 0x100000 -local FLAGS = 0x200000 -local LOCK_OK = 0x1000000 -local PREVIEW = 0x8000000 -local FILES = bit.bor(XFILE, EXTRA) -local WORD1 = bit.bor(EXTRA, NOSPC) -local FILE1 = bit.bor(FILES, NOSPC) +local RANGE = 0x001 +local BANG = 0x002 +local EXTRA = 0x004 +local XFILE = 0x008 +local NOSPC = 0x010 +local DFLALL = 0x020 +local WHOLEFOLD = 0x040 +local NEEDARG = 0x080 +local TRLBAR = 0x100 +local REGSTR = 0x200 +local COUNT = 0x400 +local NOTRLCOM = 0x800 +local ZEROR = 0x1000 +local CTRLV = 0x2000 +local CMDARG = 0x4000 +local BUFNAME = 0x8000 +local BUFUNL = 0x10000 +local ARGOPT = 0x20000 +local SBOXOK = 0x40000 +local CMDWIN = 0x80000 +local MODIFY = 0x100000 +local FLAGS = 0x200000 +local LOCK_OK = 0x1000000 +local PREVIEW = 0x8000000 +local FILES = bit.bor(XFILE, EXTRA) +local WORD1 = bit.bor(EXTRA, NOSPC) +local FILE1 = bit.bor(FILES, NOSPC) module.flags = { RANGE = RANGE, DFLALL = DFLALL, - PREVIEW = PREVIEW + PREVIEW = PREVIEW, } -- The following table is described in ex_cmds_defs.h file. module.cmds = { { - command='append', - flags=bit.bor(BANG, RANGE, ZEROR, TRLBAR, CMDWIN, LOCK_OK, MODIFY), - addr_type='ADDR_LINES', - func='ex_append', + command = 'append', + flags = bit.bor(BANG, RANGE, ZEROR, TRLBAR, CMDWIN, LOCK_OK, MODIFY), + addr_type = 'ADDR_LINES', + func = 'ex_append', }, { - command='abbreviate', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_abbreviate', + command = 'abbreviate', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_abbreviate', }, { - command='abclear', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_abclear', + command = 'abclear', + flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_abclear', }, { - command='aboveleft', - flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM), - addr_type='ADDR_NONE', - func='ex_wrongmodifier', + command = 'aboveleft', + flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM), + addr_type = 'ADDR_NONE', + func = 'ex_wrongmodifier', }, { - command='all', - flags=bit.bor(BANG, RANGE, COUNT, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_all', + command = 'all', + flags = bit.bor(BANG, RANGE, COUNT, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_all', }, { - command='amenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_menu', + command = 'amenu', + flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_menu', }, { - command='anoremenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_menu', + command = 'anoremenu', + flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_menu', }, { - command='args', - flags=bit.bor(BANG, FILES, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_NONE', - func='ex_args', + command = 'args', + flags = bit.bor(BANG, FILES, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_args', }, { - command='argadd', - flags=bit.bor(BANG, RANGE, ZEROR, FILES, TRLBAR), - addr_type='ADDR_ARGUMENTS', - func='ex_argadd', + command = 'argadd', + flags = bit.bor(BANG, RANGE, ZEROR, FILES, TRLBAR), + addr_type = 'ADDR_ARGUMENTS', + func = 'ex_argadd', }, { - command='argdelete', - flags=bit.bor(BANG, RANGE, FILES, TRLBAR), - addr_type='ADDR_ARGUMENTS', - func='ex_argdelete', + command = 'argdelete', + flags = bit.bor(BANG, RANGE, FILES, TRLBAR), + addr_type = 'ADDR_ARGUMENTS', + func = 'ex_argdelete', }, { - command='argdo', - flags=bit.bor(BANG, NEEDARG, EXTRA, NOTRLCOM, RANGE, DFLALL), - addr_type='ADDR_ARGUMENTS', - func='ex_listdo', + command = 'argdo', + flags = bit.bor(BANG, NEEDARG, EXTRA, NOTRLCOM, RANGE, DFLALL), + addr_type = 'ADDR_ARGUMENTS', + func = 'ex_listdo', }, { - command='argdedupe', - flags=TRLBAR, - addr_type='ADDR_NONE', - func='ex_argdedupe', + command = 'argdedupe', + flags = TRLBAR, + addr_type = 'ADDR_NONE', + func = 'ex_argdedupe', }, { - command='argedit', - flags=bit.bor(BANG, NEEDARG, RANGE, ZEROR, FILES, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_ARGUMENTS', - func='ex_argedit', + command = 'argedit', + flags = bit.bor(BANG, NEEDARG, RANGE, ZEROR, FILES, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_ARGUMENTS', + func = 'ex_argedit', }, { - command='argglobal', - flags=bit.bor(BANG, FILES, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_NONE', - func='ex_args', + command = 'argglobal', + flags = bit.bor(BANG, FILES, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_args', }, { - command='arglocal', - flags=bit.bor(BANG, FILES, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_NONE', - func='ex_args', + command = 'arglocal', + flags = bit.bor(BANG, FILES, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_args', }, { - command='argument', - flags=bit.bor(BANG, RANGE, COUNT, EXTRA, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_ARGUMENTS', - func='ex_argument', + command = 'argument', + flags = bit.bor(BANG, RANGE, COUNT, EXTRA, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_ARGUMENTS', + func = 'ex_argument', }, { - command='ascii', - flags=bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='do_ascii', + command = 'ascii', + flags = bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'do_ascii', }, { - command='autocmd', - flags=bit.bor(BANG, EXTRA, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_autocmd', + command = 'autocmd', + flags = bit.bor(BANG, EXTRA, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_autocmd', }, { - command='augroup', - flags=bit.bor(BANG, WORD1, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_autocmd', + command = 'augroup', + flags = bit.bor(BANG, WORD1, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_autocmd', }, { - command='aunmenu', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_menu', + command = 'aunmenu', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_menu', }, { - command='buffer', - flags=bit.bor(BANG, RANGE, BUFNAME, BUFUNL, COUNT, EXTRA, CMDARG, TRLBAR), - addr_type='ADDR_BUFFERS', - func='ex_buffer', + command = 'buffer', + flags = bit.bor(BANG, RANGE, BUFNAME, BUFUNL, COUNT, EXTRA, CMDARG, TRLBAR), + addr_type = 'ADDR_BUFFERS', + func = 'ex_buffer', }, { - command='bNext', - flags=bit.bor(BANG, RANGE, COUNT, CMDARG, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_bprevious', + command = 'bNext', + flags = bit.bor(BANG, RANGE, COUNT, CMDARG, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_bprevious', }, { - command='ball', - flags=bit.bor(RANGE, COUNT, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_buffer_all', + command = 'ball', + flags = bit.bor(RANGE, COUNT, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_buffer_all', }, { - command='badd', - flags=bit.bor(NEEDARG, FILE1, CMDARG, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_edit', + command = 'badd', + flags = bit.bor(NEEDARG, FILE1, CMDARG, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_edit', }, { - command='balt', - flags=bit.bor(NEEDARG, FILE1, CMDARG, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_edit', + command = 'balt', + flags = bit.bor(NEEDARG, FILE1, CMDARG, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_edit', }, { - command='bdelete', - flags=bit.bor(BANG, RANGE, BUFNAME, COUNT, EXTRA, TRLBAR), - addr_type='ADDR_BUFFERS', - func='ex_bunload', + command = 'bdelete', + flags = bit.bor(BANG, RANGE, BUFNAME, COUNT, EXTRA, TRLBAR), + addr_type = 'ADDR_BUFFERS', + func = 'ex_bunload', }, { - command='belowright', - flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM), - addr_type='ADDR_NONE', - func='ex_wrongmodifier', + command = 'belowright', + flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM), + addr_type = 'ADDR_NONE', + func = 'ex_wrongmodifier', }, { - command='bfirst', - flags=bit.bor(BANG, RANGE, CMDARG, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_brewind', + command = 'bfirst', + flags = bit.bor(BANG, RANGE, CMDARG, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_brewind', }, { - command='blast', - flags=bit.bor(BANG, RANGE, CMDARG, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_blast', + command = 'blast', + flags = bit.bor(BANG, RANGE, CMDARG, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_blast', }, { - command='bmodified', - flags=bit.bor(BANG, RANGE, COUNT, CMDARG, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_bmodified', + command = 'bmodified', + flags = bit.bor(BANG, RANGE, COUNT, CMDARG, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_bmodified', }, { - command='bnext', - flags=bit.bor(BANG, RANGE, COUNT, CMDARG, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_bnext', + command = 'bnext', + flags = bit.bor(BANG, RANGE, COUNT, CMDARG, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_bnext', }, { - command='botright', - flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM), - addr_type='ADDR_NONE', - func='ex_wrongmodifier', + command = 'botright', + flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM), + addr_type = 'ADDR_NONE', + func = 'ex_wrongmodifier', }, { - command='bprevious', - flags=bit.bor(BANG, RANGE, COUNT, CMDARG, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_bprevious', + command = 'bprevious', + flags = bit.bor(BANG, RANGE, COUNT, CMDARG, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_bprevious', }, { - command='brewind', - flags=bit.bor(BANG, RANGE, CMDARG, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_brewind', + command = 'brewind', + flags = bit.bor(BANG, RANGE, CMDARG, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_brewind', }, { - command='break', - flags=bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_break', + command = 'break', + flags = bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_break', }, { - command='breakadd', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_breakadd', + command = 'breakadd', + flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_breakadd', }, { - command='breakdel', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_breakdel', + command = 'breakdel', + flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_breakdel', }, { - command='breaklist', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_breaklist', + command = 'breaklist', + flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_breaklist', }, { - command='browse', - flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_wrongmodifier', + command = 'browse', + flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_wrongmodifier', }, { - command='buffers', - flags=bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='buflist_list', + command = 'buffers', + flags = bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'buflist_list', }, { - command='bufdo', - flags=bit.bor(BANG, NEEDARG, EXTRA, NOTRLCOM, RANGE, DFLALL), - addr_type='ADDR_BUFFERS', - func='ex_listdo', + command = 'bufdo', + flags = bit.bor(BANG, NEEDARG, EXTRA, NOTRLCOM, RANGE, DFLALL), + addr_type = 'ADDR_BUFFERS', + func = 'ex_listdo', }, { - command='bunload', - flags=bit.bor(BANG, RANGE, BUFNAME, COUNT, EXTRA, TRLBAR), - addr_type='ADDR_LOADED_BUFFERS', - func='ex_bunload', + command = 'bunload', + flags = bit.bor(BANG, RANGE, BUFNAME, COUNT, EXTRA, TRLBAR), + addr_type = 'ADDR_LOADED_BUFFERS', + func = 'ex_bunload', }, { - command='bwipeout', - flags=bit.bor(BANG, RANGE, BUFNAME, BUFUNL, COUNT, EXTRA, TRLBAR), - addr_type='ADDR_BUFFERS', - func='ex_bunload', + command = 'bwipeout', + flags = bit.bor(BANG, RANGE, BUFNAME, BUFUNL, COUNT, EXTRA, TRLBAR), + addr_type = 'ADDR_BUFFERS', + func = 'ex_bunload', }, { - command='change', - flags=bit.bor(BANG, WHOLEFOLD, RANGE, COUNT, TRLBAR, CMDWIN, LOCK_OK, MODIFY), - addr_type='ADDR_LINES', - func='ex_change', + command = 'change', + flags = bit.bor(BANG, WHOLEFOLD, RANGE, COUNT, TRLBAR, CMDWIN, LOCK_OK, MODIFY), + addr_type = 'ADDR_LINES', + func = 'ex_change', }, { - command='cNext', - flags=bit.bor(RANGE, COUNT, TRLBAR, BANG), - addr_type='ADDR_UNSIGNED', - func='ex_cnext', + command = 'cNext', + flags = bit.bor(RANGE, COUNT, TRLBAR, BANG), + addr_type = 'ADDR_UNSIGNED', + func = 'ex_cnext', }, { - command='cNfile', - flags=bit.bor(RANGE, COUNT, TRLBAR, BANG), - addr_type='ADDR_UNSIGNED', - func='ex_cnext', + command = 'cNfile', + flags = bit.bor(RANGE, COUNT, TRLBAR, BANG), + addr_type = 'ADDR_UNSIGNED', + func = 'ex_cnext', }, { - command='cabbrev', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_abbreviate', + command = 'cabbrev', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_abbreviate', }, { - command='cabclear', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_abclear', + command = 'cabclear', + flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_abclear', }, { - command='cabove', - flags=bit.bor(RANGE, COUNT, TRLBAR), - addr_type='ADDR_UNSIGNED', - func='ex_cbelow', + command = 'cabove', + flags = bit.bor(RANGE, COUNT, TRLBAR), + addr_type = 'ADDR_UNSIGNED', + func = 'ex_cbelow', }, { - command='caddbuffer', - flags=bit.bor(RANGE, WORD1, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_cbuffer', + command = 'caddbuffer', + flags = bit.bor(RANGE, WORD1, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_cbuffer', }, { - command='caddexpr', - flags=bit.bor(NEEDARG, WORD1, NOTRLCOM), - addr_type='ADDR_NONE', - func='ex_cexpr', + command = 'caddexpr', + flags = bit.bor(NEEDARG, WORD1, NOTRLCOM), + addr_type = 'ADDR_NONE', + func = 'ex_cexpr', }, { - command='caddfile', - flags=bit.bor(TRLBAR, FILE1), - addr_type='ADDR_NONE', - func='ex_cfile', + command = 'caddfile', + flags = bit.bor(TRLBAR, FILE1), + addr_type = 'ADDR_NONE', + func = 'ex_cfile', }, { - command='cafter', - flags=bit.bor(RANGE, COUNT, TRLBAR), - addr_type='ADDR_UNSIGNED', - func='ex_cbelow', + command = 'cafter', + flags = bit.bor(RANGE, COUNT, TRLBAR), + addr_type = 'ADDR_UNSIGNED', + func = 'ex_cbelow', }, { - command='call', - flags=bit.bor(RANGE, NEEDARG, EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_call', + command = 'call', + flags = bit.bor(RANGE, NEEDARG, EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_call', }, { - command='catch', - flags=bit.bor(EXTRA, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_catch', + command = 'catch', + flags = bit.bor(EXTRA, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_catch', }, { - command='cbuffer', - flags=bit.bor(BANG, RANGE, WORD1, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_cbuffer', + command = 'cbuffer', + flags = bit.bor(BANG, RANGE, WORD1, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_cbuffer', }, { - command='cbefore', - flags=bit.bor(RANGE, COUNT, TRLBAR), - addr_type='ADDR_UNSIGNED', - func='ex_cbelow', + command = 'cbefore', + flags = bit.bor(RANGE, COUNT, TRLBAR), + addr_type = 'ADDR_UNSIGNED', + func = 'ex_cbelow', }, { - command='cbelow', - flags=bit.bor(RANGE, COUNT, TRLBAR), - addr_type='ADDR_UNSIGNED', - func='ex_cbelow', + command = 'cbelow', + flags = bit.bor(RANGE, COUNT, TRLBAR), + addr_type = 'ADDR_UNSIGNED', + func = 'ex_cbelow', }, { - command='cbottom', - flags=bit.bor(TRLBAR), - addr_type='ADDR_NONE', - func='ex_cbottom', + command = 'cbottom', + flags = bit.bor(TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_cbottom', }, { - command='cc', - flags=bit.bor(RANGE, COUNT, TRLBAR, BANG), - addr_type='ADDR_QUICKFIX', - func='ex_cc', + command = 'cc', + flags = bit.bor(RANGE, COUNT, TRLBAR, BANG), + addr_type = 'ADDR_QUICKFIX', + func = 'ex_cc', }, { - command='cclose', - flags=bit.bor(TRLBAR), - addr_type='ADDR_NONE', - func='ex_cclose', + command = 'cclose', + flags = bit.bor(TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_cclose', }, { - command='cd', - flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_cd', + command = 'cd', + flags = bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_cd', }, { - command='cdo', - flags=bit.bor(BANG, NEEDARG, EXTRA, NOTRLCOM, RANGE, DFLALL), - addr_type='ADDR_QUICKFIX_VALID', - func='ex_listdo', + command = 'cdo', + flags = bit.bor(BANG, NEEDARG, EXTRA, NOTRLCOM, RANGE, DFLALL), + addr_type = 'ADDR_QUICKFIX_VALID', + func = 'ex_listdo', }, { - command='center', - flags=bit.bor(TRLBAR, RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, MODIFY), - addr_type='ADDR_LINES', - func='ex_align', + command = 'center', + flags = bit.bor(TRLBAR, RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, MODIFY), + addr_type = 'ADDR_LINES', + func = 'ex_align', }, { - command='cexpr', - flags=bit.bor(NEEDARG, WORD1, NOTRLCOM, BANG), - addr_type='ADDR_NONE', - func='ex_cexpr', + command = 'cexpr', + flags = bit.bor(NEEDARG, WORD1, NOTRLCOM, BANG), + addr_type = 'ADDR_NONE', + func = 'ex_cexpr', }, { - command='cfile', - flags=bit.bor(TRLBAR, FILE1, BANG), - addr_type='ADDR_NONE', - func='ex_cfile', + command = 'cfile', + flags = bit.bor(TRLBAR, FILE1, BANG), + addr_type = 'ADDR_NONE', + func = 'ex_cfile', }, -- Even though 'cfdo' is alphabetically lower than 'cfile', it is after -- 'cfile' in this cmd list to support the existing ":cf" abbreviation. { - command='cfdo', - flags=bit.bor(BANG, NEEDARG, EXTRA, NOTRLCOM, RANGE, DFLALL), - addr_type='ADDR_QUICKFIX_VALID', - func='ex_listdo', + command = 'cfdo', + flags = bit.bor(BANG, NEEDARG, EXTRA, NOTRLCOM, RANGE, DFLALL), + addr_type = 'ADDR_QUICKFIX_VALID', + func = 'ex_listdo', }, { - command='cfirst', - flags=bit.bor(RANGE, COUNT, TRLBAR, BANG), - addr_type='ADDR_UNSIGNED', - func='ex_cc', + command = 'cfirst', + flags = bit.bor(RANGE, COUNT, TRLBAR, BANG), + addr_type = 'ADDR_UNSIGNED', + func = 'ex_cc', }, { - command='cgetfile', - flags=bit.bor(TRLBAR, FILE1), - addr_type='ADDR_NONE', - func='ex_cfile', + command = 'cgetfile', + flags = bit.bor(TRLBAR, FILE1), + addr_type = 'ADDR_NONE', + func = 'ex_cfile', }, { - command='cgetbuffer', - flags=bit.bor(RANGE, WORD1, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_cbuffer', + command = 'cgetbuffer', + flags = bit.bor(RANGE, WORD1, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_cbuffer', }, { - command='cgetexpr', - flags=bit.bor(NEEDARG, WORD1, NOTRLCOM), - addr_type='ADDR_NONE', - func='ex_cexpr', + command = 'cgetexpr', + flags = bit.bor(NEEDARG, WORD1, NOTRLCOM), + addr_type = 'ADDR_NONE', + func = 'ex_cexpr', }, { - command='chdir', - flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_cd', + command = 'chdir', + flags = bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_cd', }, { - command='changes', - flags=bit.bor(TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_changes', + command = 'changes', + flags = bit.bor(TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_changes', }, { - command='checkhealth', - flags=bit.bor(EXTRA, TRLBAR), - addr_type='ADDR_NONE', - func='ex_checkhealth', + command = 'checkhealth', + flags = bit.bor(EXTRA, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_checkhealth', }, { - command='checkpath', - flags=bit.bor(TRLBAR, BANG, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_checkpath', + command = 'checkpath', + flags = bit.bor(TRLBAR, BANG, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_checkpath', }, { - command='checktime', - flags=bit.bor(RANGE, BUFNAME, COUNT, EXTRA, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_checktime', + command = 'checktime', + flags = bit.bor(RANGE, BUFNAME, COUNT, EXTRA, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_checktime', }, { - command='chistory', - flags=bit.bor(RANGE, COUNT, TRLBAR), - addr_type='ADDR_UNSIGNED', - func='qf_history', + command = 'chistory', + flags = bit.bor(RANGE, COUNT, TRLBAR), + addr_type = 'ADDR_UNSIGNED', + func = 'qf_history', }, { - command='clist', - flags=bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='qf_list', + command = 'clist', + flags = bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'qf_list', }, { - command='clast', - flags=bit.bor(RANGE, COUNT, TRLBAR, BANG), - addr_type='ADDR_UNSIGNED', - func='ex_cc', + command = 'clast', + flags = bit.bor(RANGE, COUNT, TRLBAR, BANG), + addr_type = 'ADDR_UNSIGNED', + func = 'ex_cc', }, { - command='close', - flags=bit.bor(BANG, RANGE, COUNT, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_WINDOWS', - func='ex_close', + command = 'close', + flags = bit.bor(BANG, RANGE, COUNT, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_WINDOWS', + func = 'ex_close', }, { - command='clearjumps', - flags=bit.bor(TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_clearjumps', + command = 'clearjumps', + flags = bit.bor(TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_clearjumps', }, { - command='cmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_map', + command = 'cmap', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_map', }, { - command='cmapclear', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_mapclear', + command = 'cmapclear', + flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_mapclear', }, { - command='cmenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_menu', + command = 'cmenu', + flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_menu', }, { - command='cnext', - flags=bit.bor(RANGE, COUNT, TRLBAR, BANG), - addr_type='ADDR_UNSIGNED', - func='ex_cnext', + command = 'cnext', + flags = bit.bor(RANGE, COUNT, TRLBAR, BANG), + addr_type = 'ADDR_UNSIGNED', + func = 'ex_cnext', }, { - command='cnewer', - flags=bit.bor(RANGE, COUNT, TRLBAR), - addr_type='ADDR_UNSIGNED', - func='qf_age', + command = 'cnewer', + flags = bit.bor(RANGE, COUNT, TRLBAR), + addr_type = 'ADDR_UNSIGNED', + func = 'qf_age', }, { - command='cnfile', - flags=bit.bor(RANGE, COUNT, TRLBAR, BANG), - addr_type='ADDR_UNSIGNED', - func='ex_cnext', + command = 'cnfile', + flags = bit.bor(RANGE, COUNT, TRLBAR, BANG), + addr_type = 'ADDR_UNSIGNED', + func = 'ex_cnext', }, { - command='cnoremap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_map', + command = 'cnoremap', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_map', }, { - command='cnoreabbrev', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_abbreviate', + command = 'cnoreabbrev', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_abbreviate', }, { - command='cnoremenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_menu', + command = 'cnoremenu', + flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_menu', }, { - command='copy', - flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, TRLBAR, CMDWIN, LOCK_OK, MODIFY), - addr_type='ADDR_LINES', - func='ex_copymove', + command = 'copy', + flags = bit.bor(RANGE, WHOLEFOLD, EXTRA, TRLBAR, CMDWIN, LOCK_OK, MODIFY), + addr_type = 'ADDR_LINES', + func = 'ex_copymove', }, { - command='colder', - flags=bit.bor(RANGE, COUNT, TRLBAR), - addr_type='ADDR_UNSIGNED', - func='qf_age', + command = 'colder', + flags = bit.bor(RANGE, COUNT, TRLBAR), + addr_type = 'ADDR_UNSIGNED', + func = 'qf_age', }, { - command='colorscheme', - flags=bit.bor(WORD1, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_colorscheme', + command = 'colorscheme', + flags = bit.bor(WORD1, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_colorscheme', }, { - command='command', - flags=bit.bor(EXTRA, BANG, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_command', + command = 'command', + flags = bit.bor(EXTRA, BANG, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_command', }, { - command='comclear', - flags=bit.bor(TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_comclear', + command = 'comclear', + flags = bit.bor(TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_comclear', }, { - command='compiler', - flags=bit.bor(BANG, TRLBAR, WORD1, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_compiler', + command = 'compiler', + flags = bit.bor(BANG, TRLBAR, WORD1, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_compiler', }, { - command='continue', - flags=bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_continue', + command = 'continue', + flags = bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_continue', }, { - command='confirm', - flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_wrongmodifier', + command = 'confirm', + flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_wrongmodifier', }, { - command='const', - flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_let', + command = 'const', + flags = bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_let', }, { - command='copen', - flags=bit.bor(RANGE, COUNT, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_copen', + command = 'copen', + flags = bit.bor(RANGE, COUNT, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_copen', }, { - command='cprevious', - flags=bit.bor(RANGE, COUNT, TRLBAR, BANG), - addr_type='ADDR_UNSIGNED', - func='ex_cnext', + command = 'cprevious', + flags = bit.bor(RANGE, COUNT, TRLBAR, BANG), + addr_type = 'ADDR_UNSIGNED', + func = 'ex_cnext', }, { - command='cpfile', - flags=bit.bor(RANGE, COUNT, TRLBAR, BANG), - addr_type='ADDR_OTHER', - func='ex_cnext', + command = 'cpfile', + flags = bit.bor(RANGE, COUNT, TRLBAR, BANG), + addr_type = 'ADDR_OTHER', + func = 'ex_cnext', }, { - command='cquit', - flags=bit.bor(RANGE, COUNT, ZEROR, TRLBAR, BANG), - addr_type='ADDR_UNSIGNED', - func='ex_cquit', + command = 'cquit', + flags = bit.bor(RANGE, COUNT, ZEROR, TRLBAR, BANG), + addr_type = 'ADDR_UNSIGNED', + func = 'ex_cquit', }, { - command='crewind', - flags=bit.bor(RANGE, COUNT, TRLBAR, BANG), - addr_type='ADDR_UNSIGNED', - func='ex_cc', + command = 'crewind', + flags = bit.bor(RANGE, COUNT, TRLBAR, BANG), + addr_type = 'ADDR_UNSIGNED', + func = 'ex_cc', }, { - command='cunmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_unmap', + command = 'cunmap', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_unmap', }, { - command='cunabbrev', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_abbreviate', + command = 'cunabbrev', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_abbreviate', }, { - command='cunmenu', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_menu', + command = 'cunmenu', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_menu', }, { - command='cwindow', - flags=bit.bor(RANGE, COUNT, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_cwindow', + command = 'cwindow', + flags = bit.bor(RANGE, COUNT, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_cwindow', }, { - command='delete', - flags=bit.bor(RANGE, WHOLEFOLD, REGSTR, COUNT, TRLBAR, CMDWIN, LOCK_OK, MODIFY), - addr_type='ADDR_LINES', - func='ex_operators', + command = 'delete', + flags = bit.bor(RANGE, WHOLEFOLD, REGSTR, COUNT, TRLBAR, CMDWIN, LOCK_OK, MODIFY), + addr_type = 'ADDR_LINES', + func = 'ex_operators', }, { - command='delmarks', - flags=bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_delmarks', + command = 'delmarks', + flags = bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_delmarks', }, { - command='debug', - flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_debug', + command = 'debug', + flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_debug', }, { - command='debuggreedy', - flags=bit.bor(RANGE, ZEROR, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_debuggreedy', + command = 'debuggreedy', + flags = bit.bor(RANGE, ZEROR, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_debuggreedy', }, { - command='defer', - flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_call', + command = 'defer', + flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_call', }, { - command='delcommand', - flags=bit.bor(BANG, NEEDARG, WORD1, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_delcommand', + command = 'delcommand', + flags = bit.bor(BANG, NEEDARG, WORD1, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_delcommand', }, { - command='delfunction', - flags=bit.bor(BANG, NEEDARG, WORD1, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_delfunction', + command = 'delfunction', + flags = bit.bor(BANG, NEEDARG, WORD1, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_delfunction', }, { - command='display', - flags=bit.bor(EXTRA, NOTRLCOM, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_display', + command = 'display', + flags = bit.bor(EXTRA, NOTRLCOM, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_display', }, { - command='diffupdate', - flags=bit.bor(BANG, TRLBAR), - addr_type='ADDR_NONE', - func='ex_diffupdate', + command = 'diffupdate', + flags = bit.bor(BANG, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_diffupdate', }, { - command='diffget', - flags=bit.bor(RANGE, EXTRA, TRLBAR, MODIFY), - addr_type='ADDR_LINES', - func='ex_diffgetput', + command = 'diffget', + flags = bit.bor(RANGE, EXTRA, TRLBAR, MODIFY), + addr_type = 'ADDR_LINES', + func = 'ex_diffgetput', }, { - command='diffoff', - flags=bit.bor(BANG, TRLBAR), - addr_type='ADDR_NONE', - func='ex_diffoff', + command = 'diffoff', + flags = bit.bor(BANG, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_diffoff', }, { - command='diffpatch', - flags=bit.bor(EXTRA, FILE1, TRLBAR, MODIFY), - addr_type='ADDR_NONE', - func='ex_diffpatch', + command = 'diffpatch', + flags = bit.bor(EXTRA, FILE1, TRLBAR, MODIFY), + addr_type = 'ADDR_NONE', + func = 'ex_diffpatch', }, { - command='diffput', - flags=bit.bor(RANGE, EXTRA, TRLBAR), - addr_type='ADDR_LINES', - func='ex_diffgetput', + command = 'diffput', + flags = bit.bor(RANGE, EXTRA, TRLBAR), + addr_type = 'ADDR_LINES', + func = 'ex_diffgetput', }, { - command='diffsplit', - flags=bit.bor(EXTRA, FILE1, TRLBAR), - addr_type='ADDR_NONE', - func='ex_diffsplit', + command = 'diffsplit', + flags = bit.bor(EXTRA, FILE1, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_diffsplit', }, { - command='diffthis', - flags=bit.bor(TRLBAR), - addr_type='ADDR_NONE', - func='ex_diffthis', + command = 'diffthis', + flags = bit.bor(TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_diffthis', }, { - command='digraphs', - flags=bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_digraphs', + command = 'digraphs', + flags = bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_digraphs', }, { - command='djump', - flags=bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA), - addr_type='ADDR_LINES', - func='ex_findpat', + command = 'djump', + flags = bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA), + addr_type = 'ADDR_LINES', + func = 'ex_findpat', }, { - command='dlist', - flags=bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_findpat', + command = 'dlist', + flags = bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_findpat', }, { - command='doautocmd', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_doautocmd', + command = 'doautocmd', + flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_doautocmd', }, { - command='doautoall', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_doautoall', + command = 'doautoall', + flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_doautoall', }, { - command='drop', - flags=bit.bor(FILES, CMDARG, NEEDARG, ARGOPT, TRLBAR), - addr_type='ADDR_NONE', - func='ex_drop', + command = 'drop', + flags = bit.bor(FILES, CMDARG, NEEDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_drop', }, { - command='dsearch', - flags=bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_findpat', + command = 'dsearch', + flags = bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_findpat', }, { - command='dsplit', - flags=bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA), - addr_type='ADDR_LINES', - func='ex_findpat', + command = 'dsplit', + flags = bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA), + addr_type = 'ADDR_LINES', + func = 'ex_findpat', }, { - command='edit', - flags=bit.bor(BANG, FILE1, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_NONE', - func='ex_edit', + command = 'edit', + flags = bit.bor(BANG, FILE1, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_edit', }, { - command='earlier', - flags=bit.bor(TRLBAR, EXTRA, NOSPC, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_later', + command = 'earlier', + flags = bit.bor(TRLBAR, EXTRA, NOSPC, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_later', }, { - command='echo', - flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_echo', + command = 'echo', + flags = bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_echo', }, { - command='echoerr', - flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_execute', + command = 'echoerr', + flags = bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_execute', }, { - command='echohl', - flags=bit.bor(EXTRA, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_echohl', + command = 'echohl', + flags = bit.bor(EXTRA, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_echohl', }, { - command='echomsg', - flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_execute', + command = 'echomsg', + flags = bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_execute', }, { - command='echon', - flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_echo', + command = 'echon', + flags = bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_echo', }, { - command='else', - flags=bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_else', + command = 'else', + flags = bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_else', }, { - command='elseif', - flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_else', + command = 'elseif', + flags = bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_else', }, { - command='emenu', - flags=bit.bor(NEEDARG, EXTRA, TRLBAR, NOTRLCOM, RANGE, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_emenu', + command = 'emenu', + flags = bit.bor(NEEDARG, EXTRA, TRLBAR, NOTRLCOM, RANGE, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_emenu', }, { - command='endif', - flags=bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_endif', + command = 'endif', + flags = bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_endif', }, { - command='endfunction', - flags=bit.bor(TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_endfunction', + command = 'endfunction', + flags = bit.bor(TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_endfunction', }, { - command='endfor', - flags=bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_endwhile', + command = 'endfor', + flags = bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_endwhile', }, { - command='endtry', - flags=bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_endtry', + command = 'endtry', + flags = bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_endtry', }, { - command='endwhile', - flags=bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_endwhile', + command = 'endwhile', + flags = bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_endwhile', }, { - command='enew', - flags=bit.bor(BANG, TRLBAR), - addr_type='ADDR_NONE', - func='ex_edit', + command = 'enew', + flags = bit.bor(BANG, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_edit', }, { - command='eval', - flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_eval', + command = 'eval', + flags = bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_eval', }, { - command='ex', - flags=bit.bor(BANG, FILE1, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_NONE', - func='ex_edit', + command = 'ex', + flags = bit.bor(BANG, FILE1, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_edit', }, { - command='execute', - flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_execute', + command = 'execute', + flags = bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_execute', }, { - command='exit', - flags=bit.bor(RANGE, WHOLEFOLD, BANG, FILE1, ARGOPT, DFLALL, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_exit', + command = 'exit', + flags = bit.bor(RANGE, WHOLEFOLD, BANG, FILE1, ARGOPT, DFLALL, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_exit', }, { - command='exusage', - flags=bit.bor(TRLBAR), - addr_type='ADDR_NONE', - func='ex_exusage', + command = 'exusage', + flags = bit.bor(TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_exusage', }, { - command='file', - flags=bit.bor(RANGE, ZEROR, BANG, FILE1, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_file', + command = 'file', + flags = bit.bor(RANGE, ZEROR, BANG, FILE1, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_file', }, { - command='files', - flags=bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='buflist_list', + command = 'files', + flags = bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'buflist_list', }, { - command='filetype', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_filetype', + command = 'filetype', + flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_filetype', }, { - command='filter', - flags=bit.bor(BANG, NEEDARG, EXTRA, NOTRLCOM), - addr_type='ADDR_NONE', - func='ex_wrongmodifier', + command = 'filter', + flags = bit.bor(BANG, NEEDARG, EXTRA, NOTRLCOM), + addr_type = 'ADDR_NONE', + func = 'ex_wrongmodifier', }, { - command='find', - flags=bit.bor(RANGE, BANG, FILE1, CMDARG, ARGOPT, TRLBAR, NEEDARG), - addr_type='ADDR_OTHER', - func='ex_find', + command = 'find', + flags = bit.bor(RANGE, BANG, FILE1, CMDARG, ARGOPT, TRLBAR, NEEDARG), + addr_type = 'ADDR_OTHER', + func = 'ex_find', }, { - command='finally', - flags=bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_finally', + command = 'finally', + flags = bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_finally', }, { - command='finish', - flags=bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_finish', + command = 'finish', + flags = bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_finish', }, { - command='first', - flags=bit.bor(EXTRA, BANG, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_NONE', - func='ex_rewind', + command = 'first', + flags = bit.bor(EXTRA, BANG, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_rewind', }, { - command='fold', - flags=bit.bor(RANGE, WHOLEFOLD, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_fold', + command = 'fold', + flags = bit.bor(RANGE, WHOLEFOLD, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_fold', }, { - command='foldclose', - flags=bit.bor(RANGE, BANG, WHOLEFOLD, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_foldopen', + command = 'foldclose', + flags = bit.bor(RANGE, BANG, WHOLEFOLD, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_foldopen', }, { - command='folddoopen', - flags=bit.bor(RANGE, DFLALL, NEEDARG, EXTRA, NOTRLCOM), - addr_type='ADDR_LINES', - func='ex_folddo', + command = 'folddoopen', + flags = bit.bor(RANGE, DFLALL, NEEDARG, EXTRA, NOTRLCOM), + addr_type = 'ADDR_LINES', + func = 'ex_folddo', }, { - command='folddoclosed', - flags=bit.bor(RANGE, DFLALL, NEEDARG, EXTRA, NOTRLCOM), - addr_type='ADDR_LINES', - func='ex_folddo', + command = 'folddoclosed', + flags = bit.bor(RANGE, DFLALL, NEEDARG, EXTRA, NOTRLCOM), + addr_type = 'ADDR_LINES', + func = 'ex_folddo', }, { - command='foldopen', - flags=bit.bor(RANGE, BANG, WHOLEFOLD, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_foldopen', + command = 'foldopen', + flags = bit.bor(RANGE, BANG, WHOLEFOLD, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_foldopen', }, { - command='for', - flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_while', + command = 'for', + flags = bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_while', }, { - command='function', - flags=bit.bor(EXTRA, BANG, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_function', + command = 'function', + flags = bit.bor(EXTRA, BANG, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_function', }, { - command='fclose', - flags=bit.bor(BANG, RANGE), - addr_type='ADDR_OTHER', - func='ex_fclose', + command = 'fclose', + flags = bit.bor(BANG, RANGE), + addr_type = 'ADDR_OTHER', + func = 'ex_fclose', }, { - command='global', - flags=bit.bor(RANGE, WHOLEFOLD, BANG, EXTRA, DFLALL, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_global', + command = 'global', + flags = bit.bor(RANGE, WHOLEFOLD, BANG, EXTRA, DFLALL, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_global', }, { - command='goto', - flags=bit.bor(RANGE, COUNT, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_goto', + command = 'goto', + flags = bit.bor(RANGE, COUNT, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_goto', }, { - command='grep', - flags=bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE), - addr_type='ADDR_OTHER', - func='ex_make', + command = 'grep', + flags = bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE), + addr_type = 'ADDR_OTHER', + func = 'ex_make', }, { - command='grepadd', - flags=bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE), - addr_type='ADDR_OTHER', - func='ex_make', + command = 'grepadd', + flags = bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE), + addr_type = 'ADDR_OTHER', + func = 'ex_make', }, { - command='gui', - flags=bit.bor(BANG, FILES, CMDARG, ARGOPT, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_nogui', + command = 'gui', + flags = bit.bor(BANG, FILES, CMDARG, ARGOPT, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_nogui', }, { - command='gvim', - flags=bit.bor(BANG, FILES, CMDARG, ARGOPT, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_nogui', + command = 'gvim', + flags = bit.bor(BANG, FILES, CMDARG, ARGOPT, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_nogui', }, { - command='help', - flags=bit.bor(BANG, EXTRA, NOTRLCOM), - addr_type='ADDR_NONE', - func='ex_help', + command = 'help', + flags = bit.bor(BANG, EXTRA, NOTRLCOM), + addr_type = 'ADDR_NONE', + func = 'ex_help', }, { - command='helpclose', - flags=bit.bor(RANGE, COUNT, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_helpclose', + command = 'helpclose', + flags = bit.bor(RANGE, COUNT, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_helpclose', }, { - command='helpgrep', - flags=bit.bor(EXTRA, NOTRLCOM, NEEDARG), - addr_type='ADDR_NONE', - func='ex_helpgrep', + command = 'helpgrep', + flags = bit.bor(EXTRA, NOTRLCOM, NEEDARG), + addr_type = 'ADDR_NONE', + func = 'ex_helpgrep', }, { - command='helptags', - flags=bit.bor(NEEDARG, FILES, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_helptags', + command = 'helptags', + flags = bit.bor(NEEDARG, FILES, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_helptags', }, { - command='highlight', - flags=bit.bor(BANG, EXTRA, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_highlight', + command = 'highlight', + flags = bit.bor(BANG, EXTRA, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_highlight', }, { - command='hide', - flags=bit.bor(BANG, RANGE, COUNT, EXTRA, TRLBAR), - addr_type='ADDR_WINDOWS', - func='ex_hide', + command = 'hide', + flags = bit.bor(BANG, RANGE, COUNT, EXTRA, TRLBAR), + addr_type = 'ADDR_WINDOWS', + func = 'ex_hide', }, { - command='history', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_history', + command = 'history', + flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_history', }, { - command='horizontal', - flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM), - addr_type='ADDR_NONE', - func='ex_wrongmodifier', + command = 'horizontal', + flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM), + addr_type = 'ADDR_NONE', + func = 'ex_wrongmodifier', }, { - command='insert', - flags=bit.bor(BANG, RANGE, TRLBAR, CMDWIN, LOCK_OK, MODIFY), - addr_type='ADDR_LINES', - func='ex_append', + command = 'insert', + flags = bit.bor(BANG, RANGE, TRLBAR, CMDWIN, LOCK_OK, MODIFY), + addr_type = 'ADDR_LINES', + func = 'ex_append', }, { - command='iabbrev', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_abbreviate', + command = 'iabbrev', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_abbreviate', }, { - command='iabclear', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_abclear', + command = 'iabclear', + flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_abclear', }, { - command='if', - flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_if', + command = 'if', + flags = bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_if', }, { - command='ijump', - flags=bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA), - addr_type='ADDR_LINES', - func='ex_findpat', + command = 'ijump', + flags = bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA), + addr_type = 'ADDR_LINES', + func = 'ex_findpat', }, { - command='ilist', - flags=bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_findpat', + command = 'ilist', + flags = bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_findpat', }, { - command='imap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_map', + command = 'imap', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_map', }, { - command='imapclear', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_mapclear', + command = 'imapclear', + flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_mapclear', }, { - command='imenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_menu', + command = 'imenu', + flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_menu', }, { - command='inoremap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_map', + command = 'inoremap', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_map', }, { - command='inoreabbrev', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_abbreviate', + command = 'inoreabbrev', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_abbreviate', }, { - command='inoremenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_menu', + command = 'inoremenu', + flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_menu', }, { - command='intro', - flags=bit.bor(TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_intro', + command = 'intro', + flags = bit.bor(TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_intro', }, { - command='isearch', - flags=bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_findpat', + command = 'isearch', + flags = bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_findpat', }, { - command='isplit', - flags=bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA), - addr_type='ADDR_LINES', - func='ex_findpat', + command = 'isplit', + flags = bit.bor(BANG, RANGE, DFLALL, WHOLEFOLD, EXTRA), + addr_type = 'ADDR_LINES', + func = 'ex_findpat', }, { - command='iunmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_unmap', + command = 'iunmap', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_unmap', }, { - command='iunabbrev', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_abbreviate', + command = 'iunabbrev', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_abbreviate', }, { - command='iunmenu', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_menu', + command = 'iunmenu', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_menu', }, { - command='join', - flags=bit.bor(BANG, RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, LOCK_OK, MODIFY), - addr_type='ADDR_LINES', - func='ex_join', + command = 'join', + flags = bit.bor(BANG, RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, LOCK_OK, MODIFY), + addr_type = 'ADDR_LINES', + func = 'ex_join', }, { - command='jumps', - flags=bit.bor(TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_jumps', + command = 'jumps', + flags = bit.bor(TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_jumps', }, { - command='k', - flags=bit.bor(RANGE, WORD1, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_mark', + command = 'k', + flags = bit.bor(RANGE, WORD1, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_mark', }, { - command='keepmarks', - flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM), - addr_type='ADDR_NONE', - func='ex_wrongmodifier', + command = 'keepmarks', + flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM), + addr_type = 'ADDR_NONE', + func = 'ex_wrongmodifier', }, { - command='keepjumps', - flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM), - addr_type='ADDR_NONE', - func='ex_wrongmodifier', + command = 'keepjumps', + flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM), + addr_type = 'ADDR_NONE', + func = 'ex_wrongmodifier', }, { - command='keeppatterns', - flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM), - addr_type='ADDR_NONE', - func='ex_wrongmodifier', + command = 'keeppatterns', + flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM), + addr_type = 'ADDR_NONE', + func = 'ex_wrongmodifier', }, { - command='keepalt', - flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM), - addr_type='ADDR_NONE', - func='ex_wrongmodifier', + command = 'keepalt', + flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM), + addr_type = 'ADDR_NONE', + func = 'ex_wrongmodifier', }, { - command='list', - flags=bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_print', + command = 'list', + flags = bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_print', }, { - command='lNext', - flags=bit.bor(RANGE, COUNT, TRLBAR, BANG), - addr_type='ADDR_UNSIGNED', - func='ex_cnext', + command = 'lNext', + flags = bit.bor(RANGE, COUNT, TRLBAR, BANG), + addr_type = 'ADDR_UNSIGNED', + func = 'ex_cnext', }, { - command='lNfile', - flags=bit.bor(RANGE, COUNT, TRLBAR, BANG), - addr_type='ADDR_UNSIGNED', - func='ex_cnext', + command = 'lNfile', + flags = bit.bor(RANGE, COUNT, TRLBAR, BANG), + addr_type = 'ADDR_UNSIGNED', + func = 'ex_cnext', }, { - command='last', - flags=bit.bor(EXTRA, BANG, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_NONE', - func='ex_last', + command = 'last', + flags = bit.bor(EXTRA, BANG, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_last', }, { - command='labove', - flags=bit.bor(RANGE, COUNT, TRLBAR), - addr_type='ADDR_UNSIGNED', - func='ex_cbelow', + command = 'labove', + flags = bit.bor(RANGE, COUNT, TRLBAR), + addr_type = 'ADDR_UNSIGNED', + func = 'ex_cbelow', }, { - command='language', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_language', + command = 'language', + flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_language', }, { - command='laddexpr', - flags=bit.bor(NEEDARG, WORD1, NOTRLCOM), - addr_type='ADDR_NONE', - func='ex_cexpr', + command = 'laddexpr', + flags = bit.bor(NEEDARG, WORD1, NOTRLCOM), + addr_type = 'ADDR_NONE', + func = 'ex_cexpr', }, { - command='laddbuffer', - flags=bit.bor(RANGE, WORD1, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_cbuffer', + command = 'laddbuffer', + flags = bit.bor(RANGE, WORD1, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_cbuffer', }, { - command='laddfile', - flags=bit.bor(TRLBAR, FILE1), - addr_type='ADDR_NONE', - func='ex_cfile', + command = 'laddfile', + flags = bit.bor(TRLBAR, FILE1), + addr_type = 'ADDR_NONE', + func = 'ex_cfile', }, { - command='lafter', - flags=bit.bor(RANGE, COUNT, TRLBAR), - addr_type='ADDR_UNSIGNED', - func='ex_cbelow', + command = 'lafter', + flags = bit.bor(RANGE, COUNT, TRLBAR), + addr_type = 'ADDR_UNSIGNED', + func = 'ex_cbelow', }, { - command='later', - flags=bit.bor(TRLBAR, EXTRA, NOSPC, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_later', + command = 'later', + flags = bit.bor(TRLBAR, EXTRA, NOSPC, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_later', }, { - command='lbuffer', - flags=bit.bor(BANG, RANGE, WORD1, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_cbuffer', + command = 'lbuffer', + flags = bit.bor(BANG, RANGE, WORD1, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_cbuffer', }, { - command='lbefore', - flags=bit.bor(RANGE, COUNT, TRLBAR), - addr_type='ADDR_UNSIGNED', - func='ex_cbelow', + command = 'lbefore', + flags = bit.bor(RANGE, COUNT, TRLBAR), + addr_type = 'ADDR_UNSIGNED', + func = 'ex_cbelow', }, { - command='lbelow', - flags=bit.bor(RANGE, COUNT, TRLBAR), - addr_type='ADDR_UNSIGNED', - func='ex_cbelow', + command = 'lbelow', + flags = bit.bor(RANGE, COUNT, TRLBAR), + addr_type = 'ADDR_UNSIGNED', + func = 'ex_cbelow', }, { - command='lbottom', - flags=bit.bor(TRLBAR), - addr_type='ADDR_NONE', - func='ex_cbottom', + command = 'lbottom', + flags = bit.bor(TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_cbottom', }, { - command='lcd', - flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_cd', + command = 'lcd', + flags = bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_cd', }, { - command='lchdir', - flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_cd', + command = 'lchdir', + flags = bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_cd', }, { - command='lclose', - flags=bit.bor(RANGE, COUNT, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_cclose', + command = 'lclose', + flags = bit.bor(RANGE, COUNT, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_cclose', }, { - command='ldo', - flags=bit.bor(BANG, NEEDARG, EXTRA, NOTRLCOM, RANGE, DFLALL), - addr_type='ADDR_QUICKFIX_VALID', - func='ex_listdo', + command = 'ldo', + flags = bit.bor(BANG, NEEDARG, EXTRA, NOTRLCOM, RANGE, DFLALL), + addr_type = 'ADDR_QUICKFIX_VALID', + func = 'ex_listdo', }, { - command='left', - flags=bit.bor(TRLBAR, RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, MODIFY), - addr_type='ADDR_LINES', - func='ex_align', + command = 'left', + flags = bit.bor(TRLBAR, RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, MODIFY), + addr_type = 'ADDR_LINES', + func = 'ex_align', }, { - command='leftabove', - flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM), - addr_type='ADDR_NONE', - func='ex_wrongmodifier', + command = 'leftabove', + flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM), + addr_type = 'ADDR_NONE', + func = 'ex_wrongmodifier', }, { - command='let', - flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_let', + command = 'let', + flags = bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_let', }, { - command='lexpr', - flags=bit.bor(NEEDARG, WORD1, NOTRLCOM, BANG), - addr_type='ADDR_NONE', - func='ex_cexpr', + command = 'lexpr', + flags = bit.bor(NEEDARG, WORD1, NOTRLCOM, BANG), + addr_type = 'ADDR_NONE', + func = 'ex_cexpr', }, { - command='lfile', - flags=bit.bor(TRLBAR, FILE1, BANG), - addr_type='ADDR_NONE', - func='ex_cfile', + command = 'lfile', + flags = bit.bor(TRLBAR, FILE1, BANG), + addr_type = 'ADDR_NONE', + func = 'ex_cfile', }, -- Even though 'lfdo' is alphabetically lower than 'lfile', it is after -- 'lfile' in this cmd list to support the existing ":lf" abbreviation. { - command='lfdo', - flags=bit.bor(BANG, NEEDARG, EXTRA, NOTRLCOM, RANGE, DFLALL), - addr_type='ADDR_QUICKFIX_VALID', - func='ex_listdo', + command = 'lfdo', + flags = bit.bor(BANG, NEEDARG, EXTRA, NOTRLCOM, RANGE, DFLALL), + addr_type = 'ADDR_QUICKFIX_VALID', + func = 'ex_listdo', }, { - command='lfirst', - flags=bit.bor(RANGE, COUNT, TRLBAR, BANG), - addr_type='ADDR_UNSIGNED', - func='ex_cc', + command = 'lfirst', + flags = bit.bor(RANGE, COUNT, TRLBAR, BANG), + addr_type = 'ADDR_UNSIGNED', + func = 'ex_cc', }, { - command='lgetfile', - flags=bit.bor(TRLBAR, FILE1), - addr_type='ADDR_NONE', - func='ex_cfile', + command = 'lgetfile', + flags = bit.bor(TRLBAR, FILE1), + addr_type = 'ADDR_NONE', + func = 'ex_cfile', }, { - command='lgetbuffer', - flags=bit.bor(RANGE, WORD1, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_cbuffer', + command = 'lgetbuffer', + flags = bit.bor(RANGE, WORD1, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_cbuffer', }, { - command='lgetexpr', - flags=bit.bor(NEEDARG, WORD1, NOTRLCOM), - addr_type='ADDR_NONE', - func='ex_cexpr', + command = 'lgetexpr', + flags = bit.bor(NEEDARG, WORD1, NOTRLCOM), + addr_type = 'ADDR_NONE', + func = 'ex_cexpr', }, { - command='lgrep', - flags=bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE), - addr_type='ADDR_OTHER', - func='ex_make', + command = 'lgrep', + flags = bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE), + addr_type = 'ADDR_OTHER', + func = 'ex_make', }, { - command='lgrepadd', - flags=bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE), - addr_type='ADDR_OTHER', - func='ex_make', + command = 'lgrepadd', + flags = bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE), + addr_type = 'ADDR_OTHER', + func = 'ex_make', }, { - command='lhelpgrep', - flags=bit.bor(EXTRA, NOTRLCOM, NEEDARG), - addr_type='ADDR_NONE', - func='ex_helpgrep', + command = 'lhelpgrep', + flags = bit.bor(EXTRA, NOTRLCOM, NEEDARG), + addr_type = 'ADDR_NONE', + func = 'ex_helpgrep', }, { - command='lhistory', - flags=bit.bor(RANGE, COUNT, TRLBAR), - addr_type='ADDR_UNSIGNED', - func='qf_history', + command = 'lhistory', + flags = bit.bor(RANGE, COUNT, TRLBAR), + addr_type = 'ADDR_UNSIGNED', + func = 'qf_history', }, { - command='ll', - flags=bit.bor(RANGE, COUNT, TRLBAR, BANG), - addr_type='ADDR_QUICKFIX', - func='ex_cc', + command = 'll', + flags = bit.bor(RANGE, COUNT, TRLBAR, BANG), + addr_type = 'ADDR_QUICKFIX', + func = 'ex_cc', }, { - command='llast', - flags=bit.bor(RANGE, COUNT, TRLBAR, BANG), - addr_type='ADDR_UNSIGNED', - func='ex_cc', + command = 'llast', + flags = bit.bor(RANGE, COUNT, TRLBAR, BANG), + addr_type = 'ADDR_UNSIGNED', + func = 'ex_cc', }, { - command='llist', - flags=bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='qf_list', + command = 'llist', + flags = bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'qf_list', }, { - command='lmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_map', + command = 'lmap', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_map', }, { - command='lmapclear', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_mapclear', + command = 'lmapclear', + flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_mapclear', }, { - command='lmake', - flags=bit.bor(BANG, EXTRA, NOTRLCOM, TRLBAR, XFILE), - addr_type='ADDR_NONE', - func='ex_make', + command = 'lmake', + flags = bit.bor(BANG, EXTRA, NOTRLCOM, TRLBAR, XFILE), + addr_type = 'ADDR_NONE', + func = 'ex_make', }, { - command='lnoremap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_map', + command = 'lnoremap', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_map', }, { - command='lnext', - flags=bit.bor(RANGE, COUNT, TRLBAR, BANG), - addr_type='ADDR_UNSIGNED', - func='ex_cnext', + command = 'lnext', + flags = bit.bor(RANGE, COUNT, TRLBAR, BANG), + addr_type = 'ADDR_UNSIGNED', + func = 'ex_cnext', }, { - command='lnewer', - flags=bit.bor(RANGE, COUNT, TRLBAR), - addr_type='ADDR_UNSIGNED', - func='qf_age', + command = 'lnewer', + flags = bit.bor(RANGE, COUNT, TRLBAR), + addr_type = 'ADDR_UNSIGNED', + func = 'qf_age', }, { - command='lnfile', - flags=bit.bor(RANGE, COUNT, TRLBAR, BANG), - addr_type='ADDR_UNSIGNED', - func='ex_cnext', + command = 'lnfile', + flags = bit.bor(RANGE, COUNT, TRLBAR, BANG), + addr_type = 'ADDR_UNSIGNED', + func = 'ex_cnext', }, { - command='loadview', - flags=bit.bor(FILE1, TRLBAR), - addr_type='ADDR_NONE', - func='ex_loadview', + command = 'loadview', + flags = bit.bor(FILE1, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_loadview', }, { - command='loadkeymap', - flags=bit.bor(CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_loadkeymap', + command = 'loadkeymap', + flags = bit.bor(CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_loadkeymap', }, { - command='lockmarks', - flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM), - addr_type='ADDR_NONE', - func='ex_wrongmodifier', + command = 'lockmarks', + flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM), + addr_type = 'ADDR_NONE', + func = 'ex_wrongmodifier', }, { - command='lockvar', - flags=bit.bor(BANG, EXTRA, NEEDARG, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_lockvar', + command = 'lockvar', + flags = bit.bor(BANG, EXTRA, NEEDARG, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_lockvar', }, { - command='lolder', - flags=bit.bor(RANGE, COUNT, TRLBAR), - addr_type='ADDR_UNSIGNED', - func='qf_age', + command = 'lolder', + flags = bit.bor(RANGE, COUNT, TRLBAR), + addr_type = 'ADDR_UNSIGNED', + func = 'qf_age', }, { - command='lopen', - flags=bit.bor(RANGE, COUNT, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_copen', + command = 'lopen', + flags = bit.bor(RANGE, COUNT, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_copen', }, { - command='lprevious', - flags=bit.bor(RANGE, COUNT, TRLBAR, BANG), - addr_type='ADDR_UNSIGNED', - func='ex_cnext', + command = 'lprevious', + flags = bit.bor(RANGE, COUNT, TRLBAR, BANG), + addr_type = 'ADDR_UNSIGNED', + func = 'ex_cnext', }, { - command='lpfile', - flags=bit.bor(RANGE, COUNT, TRLBAR, BANG), - addr_type='ADDR_OTHER', - func='ex_cnext', + command = 'lpfile', + flags = bit.bor(RANGE, COUNT, TRLBAR, BANG), + addr_type = 'ADDR_OTHER', + func = 'ex_cnext', }, { - command='lrewind', - flags=bit.bor(RANGE, COUNT, TRLBAR, BANG), - addr_type='ADDR_UNSIGNED', - func='ex_cc', + command = 'lrewind', + flags = bit.bor(RANGE, COUNT, TRLBAR, BANG), + addr_type = 'ADDR_UNSIGNED', + func = 'ex_cc', }, { - command='ltag', - flags=bit.bor(TRLBAR, BANG, WORD1), - addr_type='ADDR_NONE', - func='ex_tag', + command = 'ltag', + flags = bit.bor(TRLBAR, BANG, WORD1), + addr_type = 'ADDR_NONE', + func = 'ex_tag', }, { - command='lunmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_unmap', + command = 'lunmap', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_unmap', }, { - command='lua', - flags=bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_lua', + command = 'lua', + flags = bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_lua', }, { - command='luado', - flags=bit.bor(RANGE, DFLALL, EXTRA, NEEDARG, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_luado', + command = 'luado', + flags = bit.bor(RANGE, DFLALL, EXTRA, NEEDARG, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_luado', }, { - command='luafile', - flags=bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_luafile', + command = 'luafile', + flags = bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_luafile', }, { - command='lvimgrep', - flags=bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_vimgrep', + command = 'lvimgrep', + flags = bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_vimgrep', }, { - command='lvimgrepadd', - flags=bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_vimgrep', + command = 'lvimgrepadd', + flags = bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_vimgrep', }, { - command='lwindow', - flags=bit.bor(RANGE, COUNT, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_cwindow', + command = 'lwindow', + flags = bit.bor(RANGE, COUNT, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_cwindow', }, { - command='ls', - flags=bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='buflist_list', + command = 'ls', + flags = bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'buflist_list', }, { - command='move', - flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, TRLBAR, CMDWIN, LOCK_OK, MODIFY), - addr_type='ADDR_LINES', - func='ex_copymove', + command = 'move', + flags = bit.bor(RANGE, WHOLEFOLD, EXTRA, TRLBAR, CMDWIN, LOCK_OK, MODIFY), + addr_type = 'ADDR_LINES', + func = 'ex_copymove', }, { - command='mark', - flags=bit.bor(RANGE, WORD1, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_mark', + command = 'mark', + flags = bit.bor(RANGE, WORD1, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_mark', }, { - command='make', - flags=bit.bor(BANG, EXTRA, NOTRLCOM, TRLBAR, XFILE), - addr_type='ADDR_NONE', - func='ex_make', + command = 'make', + flags = bit.bor(BANG, EXTRA, NOTRLCOM, TRLBAR, XFILE), + addr_type = 'ADDR_NONE', + func = 'ex_make', }, { - command='map', - flags=bit.bor(BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_map', + command = 'map', + flags = bit.bor(BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_map', }, { - command='mapclear', - flags=bit.bor(EXTRA, BANG, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_mapclear', + command = 'mapclear', + flags = bit.bor(EXTRA, BANG, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_mapclear', }, { - command='marks', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_marks', + command = 'marks', + flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_marks', }, { - command='match', - flags=bit.bor(RANGE, EXTRA, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_match', + command = 'match', + flags = bit.bor(RANGE, EXTRA, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_match', }, { - command='menu', - flags=bit.bor(RANGE, ZEROR, BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_menu', + command = 'menu', + flags = bit.bor(RANGE, ZEROR, BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_menu', }, { - command='menutranslate', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_menutranslate', + command = 'menutranslate', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_menutranslate', }, { - command='messages', - flags=bit.bor(EXTRA, TRLBAR, RANGE, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_messages', + command = 'messages', + flags = bit.bor(EXTRA, TRLBAR, RANGE, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_messages', }, { - command='mkexrc', - flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_mkrc', + command = 'mkexrc', + flags = bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_mkrc', }, { - command='mksession', - flags=bit.bor(BANG, FILE1, TRLBAR), - addr_type='ADDR_NONE', - func='ex_mkrc', + command = 'mksession', + flags = bit.bor(BANG, FILE1, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_mkrc', }, { - command='mkspell', - flags=bit.bor(BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE), - addr_type='ADDR_NONE', - func='ex_mkspell', + command = 'mkspell', + flags = bit.bor(BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE), + addr_type = 'ADDR_NONE', + func = 'ex_mkspell', }, { - command='mkvimrc', - flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_mkrc', + command = 'mkvimrc', + flags = bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_mkrc', }, { - command='mkview', - flags=bit.bor(BANG, FILE1, TRLBAR), - addr_type='ADDR_NONE', - func='ex_mkrc', + command = 'mkview', + flags = bit.bor(BANG, FILE1, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_mkrc', }, { - command='mode', - flags=bit.bor(WORD1, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_mode', + command = 'mode', + flags = bit.bor(WORD1, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_mode', }, { - command='mzscheme', - flags=bit.bor(RANGE, EXTRA, DFLALL, NEEDARG, CMDWIN, LOCK_OK, SBOXOK), - addr_type='ADDR_LINES', - func='ex_script_ni', + command = 'mzscheme', + flags = bit.bor(RANGE, EXTRA, DFLALL, NEEDARG, CMDWIN, LOCK_OK, SBOXOK), + addr_type = 'ADDR_LINES', + func = 'ex_script_ni', }, { - command='mzfile', - flags=bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_ni', + command = 'mzfile', + flags = bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_ni', }, { - command='next', - flags=bit.bor(RANGE, BANG, FILES, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_next', + command = 'next', + flags = bit.bor(RANGE, BANG, FILES, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_next', }, { - command='new', - flags=bit.bor(BANG, FILE1, RANGE, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_splitview', + command = 'new', + flags = bit.bor(BANG, FILE1, RANGE, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_splitview', }, { - command='nmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_map', + command = 'nmap', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_map', }, { - command='nmapclear', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_mapclear', + command = 'nmapclear', + flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_mapclear', }, { - command='nmenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_menu', + command = 'nmenu', + flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_menu', }, { - command='nnoremap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_map', + command = 'nnoremap', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_map', }, { - command='nnoremenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_menu', + command = 'nnoremenu', + flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_menu', }, { - command='noremap', - flags=bit.bor(BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_map', + command = 'noremap', + flags = bit.bor(BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_map', }, { - command='noautocmd', - flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM), - addr_type='ADDR_NONE', - func='ex_wrongmodifier', + command = 'noautocmd', + flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM), + addr_type = 'ADDR_NONE', + func = 'ex_wrongmodifier', }, { - command='nohlsearch', - flags=bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_nohlsearch', + command = 'nohlsearch', + flags = bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_nohlsearch', }, { - command='noreabbrev', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_abbreviate', + command = 'noreabbrev', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_abbreviate', }, { - command='noremenu', - flags=bit.bor(RANGE, ZEROR, BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_menu', + command = 'noremenu', + flags = bit.bor(RANGE, ZEROR, BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_menu', }, { - command='noswapfile', - flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM), - addr_type='ADDR_NONE', - func='ex_wrongmodifier', + command = 'noswapfile', + flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM), + addr_type = 'ADDR_NONE', + func = 'ex_wrongmodifier', }, { - command='normal', - flags=bit.bor(RANGE, BANG, EXTRA, NEEDARG, NOTRLCOM, CTRLV, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_normal', + command = 'normal', + flags = bit.bor(RANGE, BANG, EXTRA, NEEDARG, NOTRLCOM, CTRLV, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_normal', }, { - command='number', - flags=bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_print', + command = 'number', + flags = bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_print', }, { - command='nunmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_unmap', + command = 'nunmap', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_unmap', }, { - command='nunmenu', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_menu', + command = 'nunmenu', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_menu', }, { - command='oldfiles', - flags=bit.bor(BANG, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_oldfiles', + command = 'oldfiles', + flags = bit.bor(BANG, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_oldfiles', }, { - command='omap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_map', + command = 'omap', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_map', }, { - command='omapclear', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_mapclear', + command = 'omapclear', + flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_mapclear', }, { - command='omenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_menu', + command = 'omenu', + flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_menu', }, { - command='only', - flags=bit.bor(BANG, RANGE, COUNT, TRLBAR), - addr_type='ADDR_WINDOWS', - func='ex_only', + command = 'only', + flags = bit.bor(BANG, RANGE, COUNT, TRLBAR), + addr_type = 'ADDR_WINDOWS', + func = 'ex_only', }, { - command='onoremap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_map', + command = 'onoremap', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_map', }, { - command='onoremenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_menu', + command = 'onoremenu', + flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_menu', }, { - command='options', - flags=bit.bor(TRLBAR), - addr_type='ADDR_NONE', - func='ex_options', + command = 'options', + flags = bit.bor(TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_options', }, { - command='ounmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_unmap', + command = 'ounmap', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_unmap', }, { - command='ounmenu', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_menu', + command = 'ounmenu', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_menu', }, { - command='ownsyntax', - flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_ownsyntax', + command = 'ownsyntax', + flags = bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_ownsyntax', }, { - command='print', - flags=bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, LOCK_OK, SBOXOK), - addr_type='ADDR_LINES', - func='ex_print', + command = 'print', + flags = bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, LOCK_OK, SBOXOK), + addr_type = 'ADDR_LINES', + func = 'ex_print', }, { - command='packadd', - flags=bit.bor(BANG, FILE1, NEEDARG, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_packadd', + command = 'packadd', + flags = bit.bor(BANG, FILE1, NEEDARG, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_packadd', }, { - command='packloadall', - flags=bit.bor(BANG, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_packloadall', + command = 'packloadall', + flags = bit.bor(BANG, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_packloadall', }, { - command='pclose', - flags=bit.bor(BANG, TRLBAR), - addr_type='ADDR_NONE', - func='ex_pclose', + command = 'pclose', + flags = bit.bor(BANG, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_pclose', }, { - command='perl', - flags=bit.bor(RANGE, EXTRA, DFLALL, NEEDARG, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_perl', + command = 'perl', + flags = bit.bor(RANGE, EXTRA, DFLALL, NEEDARG, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_perl', }, { - command='perldo', - flags=bit.bor(RANGE, EXTRA, DFLALL, NEEDARG, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_perldo', + command = 'perldo', + flags = bit.bor(RANGE, EXTRA, DFLALL, NEEDARG, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_perldo', }, { - command='perlfile', - flags=bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_perlfile', + command = 'perlfile', + flags = bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_perlfile', }, { - command='pedit', - flags=bit.bor(BANG, FILE1, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_NONE', - func='ex_pedit', + command = 'pedit', + flags = bit.bor(BANG, FILE1, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_pedit', }, { - command='pop', - flags=bit.bor(RANGE, BANG, COUNT, TRLBAR, ZEROR), - addr_type='ADDR_OTHER', - func='ex_tag', + command = 'pop', + flags = bit.bor(RANGE, BANG, COUNT, TRLBAR, ZEROR), + addr_type = 'ADDR_OTHER', + func = 'ex_tag', }, { - command='popup', - flags=bit.bor(NEEDARG, EXTRA, BANG, TRLBAR, NOTRLCOM, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_popup', + command = 'popup', + flags = bit.bor(NEEDARG, EXTRA, BANG, TRLBAR, NOTRLCOM, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_popup', }, { - command='ppop', - flags=bit.bor(RANGE, BANG, COUNT, TRLBAR, ZEROR), - addr_type='ADDR_OTHER', - func='ex_ptag', + command = 'ppop', + flags = bit.bor(RANGE, BANG, COUNT, TRLBAR, ZEROR), + addr_type = 'ADDR_OTHER', + func = 'ex_ptag', }, { - command='preserve', - flags=bit.bor(TRLBAR), - addr_type='ADDR_NONE', - func='ex_preserve', + command = 'preserve', + flags = bit.bor(TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_preserve', }, { - command='previous', - flags=bit.bor(EXTRA, RANGE, COUNT, BANG, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_previous', + command = 'previous', + flags = bit.bor(EXTRA, RANGE, COUNT, BANG, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_previous', }, { - command='profile', - flags=bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_profile', + command = 'profile', + flags = bit.bor(BANG, EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_profile', }, { - command='profdel', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_breakdel', + command = 'profdel', + flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_breakdel', }, { - command='psearch', - flags=bit.bor(BANG, RANGE, WHOLEFOLD, DFLALL, EXTRA), - addr_type='ADDR_LINES', - func='ex_psearch', + command = 'psearch', + flags = bit.bor(BANG, RANGE, WHOLEFOLD, DFLALL, EXTRA), + addr_type = 'ADDR_LINES', + func = 'ex_psearch', }, { - command='ptag', - flags=bit.bor(RANGE, BANG, WORD1, TRLBAR, ZEROR), - addr_type='ADDR_OTHER', - func='ex_ptag', + command = 'ptag', + flags = bit.bor(RANGE, BANG, WORD1, TRLBAR, ZEROR), + addr_type = 'ADDR_OTHER', + func = 'ex_ptag', }, { - command='ptNext', - flags=bit.bor(RANGE, BANG, TRLBAR, ZEROR), - addr_type='ADDR_OTHER', - func='ex_ptag', + command = 'ptNext', + flags = bit.bor(RANGE, BANG, TRLBAR, ZEROR), + addr_type = 'ADDR_OTHER', + func = 'ex_ptag', }, { - command='ptfirst', - flags=bit.bor(RANGE, BANG, TRLBAR, ZEROR), - addr_type='ADDR_OTHER', - func='ex_ptag', + command = 'ptfirst', + flags = bit.bor(RANGE, BANG, TRLBAR, ZEROR), + addr_type = 'ADDR_OTHER', + func = 'ex_ptag', }, { - command='ptjump', - flags=bit.bor(BANG, TRLBAR, WORD1), - addr_type='ADDR_NONE', - func='ex_ptag', + command = 'ptjump', + flags = bit.bor(BANG, TRLBAR, WORD1), + addr_type = 'ADDR_NONE', + func = 'ex_ptag', }, { - command='ptlast', - flags=bit.bor(BANG, TRLBAR), - addr_type='ADDR_NONE', - func='ex_ptag', + command = 'ptlast', + flags = bit.bor(BANG, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_ptag', }, { - command='ptnext', - flags=bit.bor(RANGE, BANG, TRLBAR, ZEROR), - addr_type='ADDR_OTHER', - func='ex_ptag', + command = 'ptnext', + flags = bit.bor(RANGE, BANG, TRLBAR, ZEROR), + addr_type = 'ADDR_OTHER', + func = 'ex_ptag', }, { - command='ptprevious', - flags=bit.bor(RANGE, BANG, TRLBAR, ZEROR), - addr_type='ADDR_OTHER', - func='ex_ptag', + command = 'ptprevious', + flags = bit.bor(RANGE, BANG, TRLBAR, ZEROR), + addr_type = 'ADDR_OTHER', + func = 'ex_ptag', }, { - command='ptrewind', - flags=bit.bor(RANGE, BANG, TRLBAR, ZEROR), - addr_type='ADDR_OTHER', - func='ex_ptag', + command = 'ptrewind', + flags = bit.bor(RANGE, BANG, TRLBAR, ZEROR), + addr_type = 'ADDR_OTHER', + func = 'ex_ptag', }, { - command='ptselect', - flags=bit.bor(BANG, TRLBAR, WORD1), - addr_type='ADDR_NONE', - func='ex_ptag', + command = 'ptselect', + flags = bit.bor(BANG, TRLBAR, WORD1), + addr_type = 'ADDR_NONE', + func = 'ex_ptag', }, { - command='put', - flags=bit.bor(RANGE, WHOLEFOLD, BANG, REGSTR, TRLBAR, ZEROR, CMDWIN, LOCK_OK, MODIFY), - addr_type='ADDR_LINES', - func='ex_put', + command = 'put', + flags = bit.bor(RANGE, WHOLEFOLD, BANG, REGSTR, TRLBAR, ZEROR, CMDWIN, LOCK_OK, MODIFY), + addr_type = 'ADDR_LINES', + func = 'ex_put', }, { - command='pwd', - flags=bit.bor(TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_pwd', + command = 'pwd', + flags = bit.bor(TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_pwd', }, { - command='python', - flags=bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_python3', + command = 'python', + flags = bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_python3', }, { - command='pydo', - flags=bit.bor(RANGE, DFLALL, EXTRA, NEEDARG, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_pydo3', + command = 'pydo', + flags = bit.bor(RANGE, DFLALL, EXTRA, NEEDARG, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_pydo3', }, { - command='pyfile', - flags=bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_py3file', + command = 'pyfile', + flags = bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_py3file', }, { - command='py3', - flags=bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_python3', + command = 'py3', + flags = bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_python3', }, { - command='py3do', - flags=bit.bor(RANGE, DFLALL, EXTRA, NEEDARG, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_pydo3', + command = 'py3do', + flags = bit.bor(RANGE, DFLALL, EXTRA, NEEDARG, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_pydo3', }, { - command='python3', - flags=bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_python3', + command = 'python3', + flags = bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_python3', }, { - command='py3file', - flags=bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_py3file', + command = 'py3file', + flags = bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_py3file', }, { - command='pyx', - flags=bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_python3', + command = 'pyx', + flags = bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_python3', }, { - command='pyxdo', - flags=bit.bor(RANGE, DFLALL, EXTRA, NEEDARG, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_pydo3', + command = 'pyxdo', + flags = bit.bor(RANGE, DFLALL, EXTRA, NEEDARG, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_pydo3', }, { - command='pythonx', - flags=bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_python3', + command = 'pythonx', + flags = bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_python3', }, { - command='pyxfile', - flags=bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_py3file', + command = 'pyxfile', + flags = bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_py3file', }, { - command='quit', - flags=bit.bor(BANG, RANGE, COUNT, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_WINDOWS', - func='ex_quit', + command = 'quit', + flags = bit.bor(BANG, RANGE, COUNT, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_WINDOWS', + func = 'ex_quit', }, { - command='quitall', - flags=bit.bor(BANG, TRLBAR), - addr_type='ADDR_NONE', - func='ex_quit_all', + command = 'quitall', + flags = bit.bor(BANG, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_quit_all', }, { - command='qall', - flags=bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_quit_all', + command = 'qall', + flags = bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_quit_all', }, { - command='read', - flags=bit.bor(BANG, RANGE, WHOLEFOLD, FILE1, ARGOPT, TRLBAR, ZEROR, CMDWIN, LOCK_OK, MODIFY), - addr_type='ADDR_LINES', - func='ex_read', + command = 'read', + flags = bit.bor(BANG, RANGE, WHOLEFOLD, FILE1, ARGOPT, TRLBAR, ZEROR, CMDWIN, LOCK_OK, MODIFY), + addr_type = 'ADDR_LINES', + func = 'ex_read', }, { - command='recover', - flags=bit.bor(BANG, FILE1, TRLBAR), - addr_type='ADDR_NONE', - func='ex_recover', + command = 'recover', + flags = bit.bor(BANG, FILE1, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_recover', }, { - command='redo', - flags=bit.bor(TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_redo', + command = 'redo', + flags = bit.bor(TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_redo', }, { - command='redir', - flags=bit.bor(BANG, FILES, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_redir', + command = 'redir', + flags = bit.bor(BANG, FILES, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_redir', }, { - command='redraw', - flags=bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_redraw', + command = 'redraw', + flags = bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_redraw', }, { - command='redrawstatus', - flags=bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_redrawstatus', + command = 'redrawstatus', + flags = bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_redrawstatus', }, { - command='redrawtabline', - flags=bit.bor(TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_redrawtabline', + command = 'redrawtabline', + flags = bit.bor(TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_redrawtabline', }, { - command='registers', - flags=bit.bor(EXTRA, NOTRLCOM, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_display', + command = 'registers', + flags = bit.bor(EXTRA, NOTRLCOM, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_display', }, { - command='resize', - flags=bit.bor(RANGE, TRLBAR, WORD1, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_resize', + command = 'resize', + flags = bit.bor(RANGE, TRLBAR, WORD1, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_resize', }, { - command='retab', - flags=bit.bor(TRLBAR, RANGE, WHOLEFOLD, DFLALL, BANG, WORD1, CMDWIN, LOCK_OK, MODIFY), - addr_type='ADDR_LINES', - func='ex_retab', + command = 'retab', + flags = bit.bor(TRLBAR, RANGE, WHOLEFOLD, DFLALL, BANG, WORD1, CMDWIN, LOCK_OK, MODIFY), + addr_type = 'ADDR_LINES', + func = 'ex_retab', }, { - command='return', - flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_return', + command = 'return', + flags = bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_return', }, { - command='rewind', - flags=bit.bor(EXTRA, BANG, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_NONE', - func='ex_rewind', + command = 'rewind', + flags = bit.bor(EXTRA, BANG, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_rewind', }, { - command='right', - flags=bit.bor(TRLBAR, RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, MODIFY), - addr_type='ADDR_LINES', - func='ex_align', + command = 'right', + flags = bit.bor(TRLBAR, RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, MODIFY), + addr_type = 'ADDR_LINES', + func = 'ex_align', }, { - command='rightbelow', - flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM), - addr_type='ADDR_NONE', - func='ex_wrongmodifier', + command = 'rightbelow', + flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM), + addr_type = 'ADDR_NONE', + func = 'ex_wrongmodifier', }, { - command='rshada', - flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_shada', + command = 'rshada', + flags = bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_shada', }, { - command='runtime', - flags=bit.bor(BANG, NEEDARG, FILES, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_runtime', + command = 'runtime', + flags = bit.bor(BANG, NEEDARG, FILES, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_runtime', }, { - command='rundo', - flags=bit.bor(NEEDARG, FILE1), - addr_type='ADDR_NONE', - func='ex_rundo', + command = 'rundo', + flags = bit.bor(NEEDARG, FILE1), + addr_type = 'ADDR_NONE', + func = 'ex_rundo', }, { - command='ruby', - flags=bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_ruby', + command = 'ruby', + flags = bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_ruby', }, { - command='rubydo', - flags=bit.bor(RANGE, DFLALL, EXTRA, NEEDARG, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_rubydo', + command = 'rubydo', + flags = bit.bor(RANGE, DFLALL, EXTRA, NEEDARG, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_rubydo', }, { - command='rubyfile', - flags=bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_rubyfile', + command = 'rubyfile', + flags = bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_rubyfile', }, { - command='rviminfo', - flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_shada', + command = 'rviminfo', + flags = bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_shada', }, { - command='substitute', - flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, PREVIEW), - addr_type='ADDR_LINES', - func='ex_substitute', - preview_func='ex_substitute_preview', + command = 'substitute', + flags = bit.bor(RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, PREVIEW), + addr_type = 'ADDR_LINES', + func = 'ex_substitute', + preview_func = 'ex_substitute_preview', }, { - command='sNext', - flags=bit.bor(EXTRA, RANGE, COUNT, BANG, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_previous', + command = 'sNext', + flags = bit.bor(EXTRA, RANGE, COUNT, BANG, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_previous', }, { - command='sargument', - flags=bit.bor(BANG, RANGE, COUNT, EXTRA, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_ARGUMENTS', - func='ex_argument', + command = 'sargument', + flags = bit.bor(BANG, RANGE, COUNT, EXTRA, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_ARGUMENTS', + func = 'ex_argument', }, { - command='sall', - flags=bit.bor(BANG, RANGE, COUNT, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_all', + command = 'sall', + flags = bit.bor(BANG, RANGE, COUNT, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_all', }, { - command='sandbox', - flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM), - addr_type='ADDR_NONE', - func='ex_wrongmodifier', + command = 'sandbox', + flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM), + addr_type = 'ADDR_NONE', + func = 'ex_wrongmodifier', }, { - command='saveas', - flags=bit.bor(BANG, FILE1, ARGOPT, CMDWIN, LOCK_OK, TRLBAR), - addr_type='ADDR_NONE', - func='ex_write', + command = 'saveas', + flags = bit.bor(BANG, FILE1, ARGOPT, CMDWIN, LOCK_OK, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_write', }, { - command='sbuffer', - flags=bit.bor(BANG, RANGE, BUFNAME, BUFUNL, COUNT, EXTRA, CMDARG, TRLBAR), - addr_type='ADDR_BUFFERS', - func='ex_buffer', + command = 'sbuffer', + flags = bit.bor(BANG, RANGE, BUFNAME, BUFUNL, COUNT, EXTRA, CMDARG, TRLBAR), + addr_type = 'ADDR_BUFFERS', + func = 'ex_buffer', }, { - command='sbNext', - flags=bit.bor(RANGE, COUNT, CMDARG, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_bprevious', + command = 'sbNext', + flags = bit.bor(RANGE, COUNT, CMDARG, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_bprevious', }, { - command='sball', - flags=bit.bor(RANGE, COUNT, CMDARG, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_buffer_all', + command = 'sball', + flags = bit.bor(RANGE, COUNT, CMDARG, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_buffer_all', }, { - command='sbfirst', - flags=bit.bor(CMDARG, TRLBAR), - addr_type='ADDR_NONE', - func='ex_brewind', + command = 'sbfirst', + flags = bit.bor(CMDARG, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_brewind', }, { - command='sblast', - flags=bit.bor(CMDARG, TRLBAR), - addr_type='ADDR_NONE', - func='ex_blast', + command = 'sblast', + flags = bit.bor(CMDARG, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_blast', }, { - command='sbmodified', - flags=bit.bor(RANGE, COUNT, CMDARG, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_bmodified', + command = 'sbmodified', + flags = bit.bor(RANGE, COUNT, CMDARG, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_bmodified', }, { - command='sbnext', - flags=bit.bor(RANGE, COUNT, CMDARG, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_bnext', + command = 'sbnext', + flags = bit.bor(RANGE, COUNT, CMDARG, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_bnext', }, { - command='sbprevious', - flags=bit.bor(RANGE, COUNT, CMDARG, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_bprevious', + command = 'sbprevious', + flags = bit.bor(RANGE, COUNT, CMDARG, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_bprevious', }, { - command='sbrewind', - flags=bit.bor(CMDARG, TRLBAR), - addr_type='ADDR_NONE', - func='ex_brewind', + command = 'sbrewind', + flags = bit.bor(CMDARG, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_brewind', }, { - command='scriptnames', - flags=bit.bor(BANG, FILES, RANGE, COUNT, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_scriptnames', + command = 'scriptnames', + flags = bit.bor(BANG, FILES, RANGE, COUNT, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_scriptnames', }, { - command='scriptencoding', - flags=bit.bor(WORD1, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_scriptencoding', + command = 'scriptencoding', + flags = bit.bor(WORD1, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_scriptencoding', }, { - command='set', - flags=bit.bor(BANG, TRLBAR, EXTRA, CMDWIN, LOCK_OK, SBOXOK), - addr_type='ADDR_NONE', - func='ex_set', + command = 'set', + flags = bit.bor(BANG, TRLBAR, EXTRA, CMDWIN, LOCK_OK, SBOXOK), + addr_type = 'ADDR_NONE', + func = 'ex_set', }, { - command='setfiletype', - flags=bit.bor(TRLBAR, EXTRA, NEEDARG, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_setfiletype', + command = 'setfiletype', + flags = bit.bor(TRLBAR, EXTRA, NEEDARG, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_setfiletype', }, { - command='setglobal', - flags=bit.bor(BANG, TRLBAR, EXTRA, CMDWIN, LOCK_OK, SBOXOK), - addr_type='ADDR_NONE', - func='ex_set', + command = 'setglobal', + flags = bit.bor(BANG, TRLBAR, EXTRA, CMDWIN, LOCK_OK, SBOXOK), + addr_type = 'ADDR_NONE', + func = 'ex_set', }, { - command='setlocal', - flags=bit.bor(BANG, TRLBAR, EXTRA, CMDWIN, LOCK_OK, SBOXOK), - addr_type='ADDR_NONE', - func='ex_set', + command = 'setlocal', + flags = bit.bor(BANG, TRLBAR, EXTRA, CMDWIN, LOCK_OK, SBOXOK), + addr_type = 'ADDR_NONE', + func = 'ex_set', }, { - command='sfind', - flags=bit.bor(BANG, FILE1, RANGE, CMDARG, ARGOPT, TRLBAR, NEEDARG), - addr_type='ADDR_OTHER', - func='ex_splitview', + command = 'sfind', + flags = bit.bor(BANG, FILE1, RANGE, CMDARG, ARGOPT, TRLBAR, NEEDARG), + addr_type = 'ADDR_OTHER', + func = 'ex_splitview', }, { - command='sfirst', - flags=bit.bor(EXTRA, BANG, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_NONE', - func='ex_rewind', + command = 'sfirst', + flags = bit.bor(EXTRA, BANG, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_rewind', }, { - command='simalt', - flags=bit.bor(NEEDARG, WORD1, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_ni', + command = 'simalt', + flags = bit.bor(NEEDARG, WORD1, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_ni', }, { - command='sign', - flags=bit.bor(NEEDARG, RANGE, EXTRA, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_sign', + command = 'sign', + flags = bit.bor(NEEDARG, RANGE, EXTRA, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_sign', }, { - command='silent', - flags=bit.bor(NEEDARG, EXTRA, BANG, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_wrongmodifier', + command = 'silent', + flags = bit.bor(NEEDARG, EXTRA, BANG, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_wrongmodifier', }, { - command='sleep', - flags=bit.bor(BANG, RANGE, COUNT, EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_sleep', + command = 'sleep', + flags = bit.bor(BANG, RANGE, COUNT, EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_sleep', }, { - command='slast', - flags=bit.bor(EXTRA, BANG, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_NONE', - func='ex_last', + command = 'slast', + flags = bit.bor(EXTRA, BANG, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_last', }, { - command='smagic', - flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, PREVIEW), - addr_type='ADDR_LINES', - func='ex_submagic', - preview_func='ex_submagic_preview', + command = 'smagic', + flags = bit.bor(RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, PREVIEW), + addr_type = 'ADDR_LINES', + func = 'ex_submagic', + preview_func = 'ex_submagic_preview', }, { - command='smap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_map', + command = 'smap', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_map', }, { - command='smapclear', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_mapclear', + command = 'smapclear', + flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_mapclear', }, { - command='smenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_menu', + command = 'smenu', + flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_menu', }, { - command='snext', - flags=bit.bor(RANGE, BANG, FILES, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_next', + command = 'snext', + flags = bit.bor(RANGE, BANG, FILES, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_next', }, { - command='snomagic', - flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, PREVIEW), - addr_type='ADDR_LINES', - func='ex_submagic', - preview_func='ex_submagic_preview', + command = 'snomagic', + flags = bit.bor(RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, PREVIEW), + addr_type = 'ADDR_LINES', + func = 'ex_submagic', + preview_func = 'ex_submagic_preview', }, { - command='snoremap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_map', + command = 'snoremap', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_map', }, { - command='snoremenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_menu', + command = 'snoremenu', + flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_menu', }, { - command='source', - flags=bit.bor(RANGE, DFLALL, WHOLEFOLD, BANG, FILE1, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_source', + command = 'source', + flags = bit.bor(RANGE, DFLALL, WHOLEFOLD, BANG, FILE1, TRLBAR, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_source', }, { - command='sort', - flags=bit.bor(RANGE, DFLALL, WHOLEFOLD, BANG, EXTRA, NOTRLCOM, MODIFY), - addr_type='ADDR_LINES', - func='ex_sort', + command = 'sort', + flags = bit.bor(RANGE, DFLALL, WHOLEFOLD, BANG, EXTRA, NOTRLCOM, MODIFY), + addr_type = 'ADDR_LINES', + func = 'ex_sort', }, { - command='split', - flags=bit.bor(BANG, FILE1, RANGE, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_splitview', + command = 'split', + flags = bit.bor(BANG, FILE1, RANGE, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_splitview', }, { - command='spellgood', - flags=bit.bor(BANG, RANGE, NEEDARG, EXTRA, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_spell', + command = 'spellgood', + flags = bit.bor(BANG, RANGE, NEEDARG, EXTRA, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_spell', }, { - command='spelldump', - flags=bit.bor(BANG, TRLBAR), - addr_type='ADDR_NONE', - func='ex_spelldump', + command = 'spelldump', + flags = bit.bor(BANG, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_spelldump', }, { - command='spellinfo', - flags=bit.bor(TRLBAR), - addr_type='ADDR_NONE', - func='ex_spellinfo', + command = 'spellinfo', + flags = bit.bor(TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_spellinfo', }, { - command='spellrepall', - flags=bit.bor(TRLBAR), - addr_type='ADDR_NONE', - func='ex_spellrepall', + command = 'spellrepall', + flags = bit.bor(TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_spellrepall', }, { - command='spellrare', - flags=bit.bor(BANG, RANGE, NEEDARG, EXTRA, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_spell', + command = 'spellrare', + flags = bit.bor(BANG, RANGE, NEEDARG, EXTRA, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_spell', }, { - command='spellundo', - flags=bit.bor(BANG, RANGE, NEEDARG, EXTRA, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_spell', + command = 'spellundo', + flags = bit.bor(BANG, RANGE, NEEDARG, EXTRA, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_spell', }, { - command='spellwrong', - flags=bit.bor(BANG, RANGE, NEEDARG, EXTRA, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_spell', + command = 'spellwrong', + flags = bit.bor(BANG, RANGE, NEEDARG, EXTRA, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_spell', }, { - command='sprevious', - flags=bit.bor(EXTRA, RANGE, COUNT, BANG, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_previous', + command = 'sprevious', + flags = bit.bor(EXTRA, RANGE, COUNT, BANG, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_previous', }, { - command='srewind', - flags=bit.bor(EXTRA, BANG, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_NONE', - func='ex_rewind', + command = 'srewind', + flags = bit.bor(EXTRA, BANG, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_rewind', }, { - command='stop', - flags=bit.bor(TRLBAR, BANG, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_stop', + command = 'stop', + flags = bit.bor(TRLBAR, BANG, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_stop', }, { - command='stag', - flags=bit.bor(RANGE, BANG, WORD1, TRLBAR, ZEROR), - addr_type='ADDR_OTHER', - func='ex_stag', + command = 'stag', + flags = bit.bor(RANGE, BANG, WORD1, TRLBAR, ZEROR), + addr_type = 'ADDR_OTHER', + func = 'ex_stag', }, { - command='startinsert', - flags=bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_startinsert', + command = 'startinsert', + flags = bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_startinsert', }, { - command='startgreplace', - flags=bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_startinsert', + command = 'startgreplace', + flags = bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_startinsert', }, { - command='startreplace', - flags=bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_startinsert', + command = 'startreplace', + flags = bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_startinsert', }, { - command='stopinsert', - flags=bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_stopinsert', + command = 'stopinsert', + flags = bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_stopinsert', }, { - command='stjump', - flags=bit.bor(BANG, TRLBAR, WORD1), - addr_type='ADDR_NONE', - func='ex_stag', + command = 'stjump', + flags = bit.bor(BANG, TRLBAR, WORD1), + addr_type = 'ADDR_NONE', + func = 'ex_stag', }, { - command='stselect', - flags=bit.bor(BANG, TRLBAR, WORD1), - addr_type='ADDR_NONE', - func='ex_stag', + command = 'stselect', + flags = bit.bor(BANG, TRLBAR, WORD1), + addr_type = 'ADDR_NONE', + func = 'ex_stag', }, { - command='sunhide', - flags=bit.bor(RANGE, COUNT, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_buffer_all', + command = 'sunhide', + flags = bit.bor(RANGE, COUNT, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_buffer_all', }, { - command='sunmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_unmap', + command = 'sunmap', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_unmap', }, { - command='sunmenu', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_menu', + command = 'sunmenu', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_menu', }, { - command='suspend', - flags=bit.bor(TRLBAR, BANG, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_stop', + command = 'suspend', + flags = bit.bor(TRLBAR, BANG, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_stop', }, { - command='sview', - flags=bit.bor(BANG, FILE1, RANGE, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_splitview', + command = 'sview', + flags = bit.bor(BANG, FILE1, RANGE, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_splitview', }, { - command='swapname', - flags=bit.bor(TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_swapname', + command = 'swapname', + flags = bit.bor(TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_swapname', }, { - command='syntax', - flags=bit.bor(EXTRA, NOTRLCOM, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_syntax', + command = 'syntax', + flags = bit.bor(EXTRA, NOTRLCOM, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_syntax', }, { - command='syntime', - flags=bit.bor(NEEDARG, WORD1, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_syntime', + command = 'syntime', + flags = bit.bor(NEEDARG, WORD1, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_syntime', }, { - command='syncbind', - flags=bit.bor(TRLBAR), - addr_type='ADDR_NONE', - func='ex_syncbind', + command = 'syncbind', + flags = bit.bor(TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_syncbind', }, { - command='t', - flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, TRLBAR, CMDWIN, LOCK_OK, MODIFY), - addr_type='ADDR_LINES', - func='ex_copymove', + command = 't', + flags = bit.bor(RANGE, WHOLEFOLD, EXTRA, TRLBAR, CMDWIN, LOCK_OK, MODIFY), + addr_type = 'ADDR_LINES', + func = 'ex_copymove', }, { - command='tcd', - flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_cd', + command = 'tcd', + flags = bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_cd', }, { - command='tchdir', - flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_cd', + command = 'tchdir', + flags = bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_cd', }, { - command='tNext', - flags=bit.bor(RANGE, BANG, TRLBAR, ZEROR), - addr_type='ADDR_OTHER', - func='ex_tag', + command = 'tNext', + flags = bit.bor(RANGE, BANG, TRLBAR, ZEROR), + addr_type = 'ADDR_OTHER', + func = 'ex_tag', }, { - command='tag', - flags=bit.bor(RANGE, BANG, WORD1, TRLBAR, ZEROR), - addr_type='ADDR_OTHER', - func='ex_tag', + command = 'tag', + flags = bit.bor(RANGE, BANG, WORD1, TRLBAR, ZEROR), + addr_type = 'ADDR_OTHER', + func = 'ex_tag', }, { - command='tags', - flags=bit.bor(TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='do_tags', + command = 'tags', + flags = bit.bor(TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'do_tags', }, { - command='tab', - flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM), - addr_type='ADDR_NONE', - func='ex_wrongmodifier', + command = 'tab', + flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM), + addr_type = 'ADDR_NONE', + func = 'ex_wrongmodifier', }, { - command='tabclose', - flags=bit.bor(BANG, RANGE, ZEROR, EXTRA, NOSPC, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_TABS', - func='ex_tabclose', + command = 'tabclose', + flags = bit.bor(BANG, RANGE, ZEROR, EXTRA, NOSPC, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_TABS', + func = 'ex_tabclose', }, { - command='tabdo', - flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM, RANGE, DFLALL), - addr_type='ADDR_TABS', - func='ex_listdo', + command = 'tabdo', + flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM, RANGE, DFLALL), + addr_type = 'ADDR_TABS', + func = 'ex_listdo', }, { - command='tabedit', - flags=bit.bor(BANG, FILE1, RANGE, ZEROR, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_TABS', - func='ex_splitview', + command = 'tabedit', + flags = bit.bor(BANG, FILE1, RANGE, ZEROR, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_TABS', + func = 'ex_splitview', }, { - command='tabfind', - flags=bit.bor(BANG, FILE1, RANGE, ZEROR, CMDARG, ARGOPT, NEEDARG, TRLBAR), - addr_type='ADDR_TABS', - func='ex_splitview', + command = 'tabfind', + flags = bit.bor(BANG, FILE1, RANGE, ZEROR, CMDARG, ARGOPT, NEEDARG, TRLBAR), + addr_type = 'ADDR_TABS', + func = 'ex_splitview', }, { - command='tabfirst', - flags=bit.bor(TRLBAR), - addr_type='ADDR_NONE', - func='ex_tabnext', + command = 'tabfirst', + flags = bit.bor(TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_tabnext', }, { - command='tabmove', - flags=bit.bor(RANGE, ZEROR, EXTRA, NOSPC, TRLBAR), - addr_type='ADDR_TABS', - func='ex_tabmove', + command = 'tabmove', + flags = bit.bor(RANGE, ZEROR, EXTRA, NOSPC, TRLBAR), + addr_type = 'ADDR_TABS', + func = 'ex_tabmove', }, { - command='tablast', - flags=bit.bor(TRLBAR), - addr_type='ADDR_NONE', - func='ex_tabnext', + command = 'tablast', + flags = bit.bor(TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_tabnext', }, { - command='tabnext', - flags=bit.bor(RANGE, ZEROR, EXTRA, NOSPC, TRLBAR), - addr_type='ADDR_TABS', - func='ex_tabnext', + command = 'tabnext', + flags = bit.bor(RANGE, ZEROR, EXTRA, NOSPC, TRLBAR), + addr_type = 'ADDR_TABS', + func = 'ex_tabnext', }, { - command='tabnew', - flags=bit.bor(BANG, FILE1, RANGE, ZEROR, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_TABS', - func='ex_splitview', + command = 'tabnew', + flags = bit.bor(BANG, FILE1, RANGE, ZEROR, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_TABS', + func = 'ex_splitview', }, { - command='tabonly', - flags=bit.bor(BANG, RANGE, ZEROR, EXTRA, NOSPC, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_TABS', - func='ex_tabonly', + command = 'tabonly', + flags = bit.bor(BANG, RANGE, ZEROR, EXTRA, NOSPC, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_TABS', + func = 'ex_tabonly', }, { - command='tabprevious', - flags=bit.bor(RANGE, ZEROR, EXTRA, NOSPC, TRLBAR), - addr_type='ADDR_TABS_RELATIVE', - func='ex_tabnext', + command = 'tabprevious', + flags = bit.bor(RANGE, ZEROR, EXTRA, NOSPC, TRLBAR), + addr_type = 'ADDR_TABS_RELATIVE', + func = 'ex_tabnext', }, { - command='tabNext', - flags=bit.bor(RANGE, ZEROR, EXTRA, NOSPC, TRLBAR), - addr_type='ADDR_TABS_RELATIVE', - func='ex_tabnext', + command = 'tabNext', + flags = bit.bor(RANGE, ZEROR, EXTRA, NOSPC, TRLBAR), + addr_type = 'ADDR_TABS_RELATIVE', + func = 'ex_tabnext', }, { - command='tabrewind', - flags=bit.bor(TRLBAR), - addr_type='ADDR_NONE', - func='ex_tabnext', + command = 'tabrewind', + flags = bit.bor(TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_tabnext', }, { - command='tabs', - flags=bit.bor(TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_tabs', + command = 'tabs', + flags = bit.bor(TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_tabs', }, { - command='tcl', - flags=bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_script_ni', + command = 'tcl', + flags = bit.bor(RANGE, EXTRA, NEEDARG, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_script_ni', }, { - command='tcldo', - flags=bit.bor(RANGE, DFLALL, EXTRA, NEEDARG, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_ni', + command = 'tcldo', + flags = bit.bor(RANGE, DFLALL, EXTRA, NEEDARG, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_ni', }, { - command='tclfile', - flags=bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_ni', + command = 'tclfile', + flags = bit.bor(RANGE, FILE1, NEEDARG, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_ni', }, { - command='terminal', - flags=bit.bor(BANG, FILES, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_terminal', + command = 'terminal', + flags = bit.bor(BANG, FILES, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_terminal', }, { - command='tfirst', - flags=bit.bor(RANGE, BANG, TRLBAR, ZEROR), - addr_type='ADDR_OTHER', - func='ex_tag', + command = 'tfirst', + flags = bit.bor(RANGE, BANG, TRLBAR, ZEROR), + addr_type = 'ADDR_OTHER', + func = 'ex_tag', }, { - command='throw', - flags=bit.bor(EXTRA, NEEDARG, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_throw', + command = 'throw', + flags = bit.bor(EXTRA, NEEDARG, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_throw', }, { - command='tjump', - flags=bit.bor(BANG, TRLBAR, WORD1), - addr_type='ADDR_NONE', - func='ex_tag', + command = 'tjump', + flags = bit.bor(BANG, TRLBAR, WORD1), + addr_type = 'ADDR_NONE', + func = 'ex_tag', }, { - command='tlast', - flags=bit.bor(BANG, TRLBAR), - addr_type='ADDR_NONE', - func='ex_tag', + command = 'tlast', + flags = bit.bor(BANG, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_tag', }, { - command='tlmenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_menu', + command = 'tlmenu', + flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_menu', }, { - command='tlnoremenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_menu', + command = 'tlnoremenu', + flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_menu', }, { - command='tlunmenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_menu', + command = 'tlunmenu', + flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_menu', }, { - command='tmenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_menu', + command = 'tmenu', + flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_menu', }, { - command='tmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_map', + command = 'tmap', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_map', }, { - command='tmapclear', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_mapclear', + command = 'tmapclear', + flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_mapclear', }, { - command='tnext', - flags=bit.bor(RANGE, BANG, TRLBAR, ZEROR), - addr_type='ADDR_OTHER', - func='ex_tag', + command = 'tnext', + flags = bit.bor(RANGE, BANG, TRLBAR, ZEROR), + addr_type = 'ADDR_OTHER', + func = 'ex_tag', }, { - command='tnoremap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_map', + command = 'tnoremap', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_map', }, { - command='topleft', - flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM), - addr_type='ADDR_NONE', - func='ex_wrongmodifier', + command = 'topleft', + flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM), + addr_type = 'ADDR_NONE', + func = 'ex_wrongmodifier', }, { - command='tprevious', - flags=bit.bor(RANGE, BANG, TRLBAR, ZEROR), - addr_type='ADDR_OTHER', - func='ex_tag', + command = 'tprevious', + flags = bit.bor(RANGE, BANG, TRLBAR, ZEROR), + addr_type = 'ADDR_OTHER', + func = 'ex_tag', }, { - command='trewind', - flags=bit.bor(RANGE, BANG, TRLBAR, ZEROR), - addr_type='ADDR_OTHER', - func='ex_tag', + command = 'trewind', + flags = bit.bor(RANGE, BANG, TRLBAR, ZEROR), + addr_type = 'ADDR_OTHER', + func = 'ex_tag', }, { - command='trust', - flags=bit.bor(EXTRA, FILE1, TRLBAR, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_trust', + command = 'trust', + flags = bit.bor(EXTRA, FILE1, TRLBAR, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_trust', }, { - command='try', - flags=bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_try', + command = 'try', + flags = bit.bor(TRLBAR, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_try', }, { - command='tselect', - flags=bit.bor(BANG, TRLBAR, WORD1), - addr_type='ADDR_NONE', - func='ex_tag', + command = 'tselect', + flags = bit.bor(BANG, TRLBAR, WORD1), + addr_type = 'ADDR_NONE', + func = 'ex_tag', }, { - command='tunmenu', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_menu', + command = 'tunmenu', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_menu', }, { - command='tunmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_unmap', + command = 'tunmap', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_unmap', }, { - command='undo', - flags=bit.bor(BANG, RANGE, COUNT, ZEROR, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_undo', + command = 'undo', + flags = bit.bor(BANG, RANGE, COUNT, ZEROR, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_undo', }, { - command='undojoin', - flags=bit.bor(TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_undojoin', + command = 'undojoin', + flags = bit.bor(TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_undojoin', }, { - command='undolist', - flags=bit.bor(TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_undolist', + command = 'undolist', + flags = bit.bor(TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_undolist', }, { - command='unabbreviate', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_abbreviate', + command = 'unabbreviate', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_abbreviate', }, { - command='unhide', - flags=bit.bor(RANGE, COUNT, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_buffer_all', + command = 'unhide', + flags = bit.bor(RANGE, COUNT, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_buffer_all', }, { - command='unlet', - flags=bit.bor(BANG, EXTRA, NEEDARG, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_unlet', + command = 'unlet', + flags = bit.bor(BANG, EXTRA, NEEDARG, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_unlet', }, { - command='unlockvar', - flags=bit.bor(BANG, EXTRA, NEEDARG, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_lockvar', + command = 'unlockvar', + flags = bit.bor(BANG, EXTRA, NEEDARG, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_lockvar', }, { - command='unmap', - flags=bit.bor(BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_unmap', + command = 'unmap', + flags = bit.bor(BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_unmap', }, { - command='unmenu', - flags=bit.bor(BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_menu', + command = 'unmenu', + flags = bit.bor(BANG, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_menu', }, { - command='unsilent', - flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_wrongmodifier', + command = 'unsilent', + flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_wrongmodifier', }, { - command='update', - flags=bit.bor(RANGE, WHOLEFOLD, BANG, FILE1, ARGOPT, DFLALL, TRLBAR), - addr_type='ADDR_LINES', - func='ex_update', + command = 'update', + flags = bit.bor(RANGE, WHOLEFOLD, BANG, FILE1, ARGOPT, DFLALL, TRLBAR), + addr_type = 'ADDR_LINES', + func = 'ex_update', }, { - command='vglobal', - flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, DFLALL, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_global', + command = 'vglobal', + flags = bit.bor(RANGE, WHOLEFOLD, EXTRA, DFLALL, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_global', }, { - command='version', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_version', + command = 'version', + flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_version', }, { - command='verbose', - flags=bit.bor(NEEDARG, RANGE, EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_wrongmodifier', + command = 'verbose', + flags = bit.bor(NEEDARG, RANGE, EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_wrongmodifier', }, { - command='vertical', - flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM), - addr_type='ADDR_NONE', - func='ex_wrongmodifier', + command = 'vertical', + flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM), + addr_type = 'ADDR_NONE', + func = 'ex_wrongmodifier', }, { - command='visual', - flags=bit.bor(BANG, FILE1, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_NONE', - func='ex_edit', + command = 'visual', + flags = bit.bor(BANG, FILE1, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_edit', }, { - command='view', - flags=bit.bor(BANG, FILE1, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_NONE', - func='ex_edit', + command = 'view', + flags = bit.bor(BANG, FILE1, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_edit', }, { - command='vimgrep', - flags=bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_vimgrep', + command = 'vimgrep', + flags = bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_vimgrep', }, { - command='vimgrepadd', - flags=bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_vimgrep', + command = 'vimgrepadd', + flags = bit.bor(RANGE, BANG, NEEDARG, EXTRA, NOTRLCOM, TRLBAR, XFILE, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_vimgrep', }, { - command='viusage', - flags=bit.bor(TRLBAR), - addr_type='ADDR_NONE', - func='ex_viusage', + command = 'viusage', + flags = bit.bor(TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_viusage', }, { - command='vmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_map', + command = 'vmap', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_map', }, { - command='vmapclear', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_mapclear', + command = 'vmapclear', + flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_mapclear', }, { - command='vmenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_menu', + command = 'vmenu', + flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_menu', }, { - command='vnoremap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_map', + command = 'vnoremap', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_map', }, { - command='vnew', - flags=bit.bor(BANG, FILE1, RANGE, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_splitview', + command = 'vnew', + flags = bit.bor(BANG, FILE1, RANGE, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_splitview', }, { - command='vnoremenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_menu', + command = 'vnoremenu', + flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_menu', }, { - command='vsplit', - flags=bit.bor(BANG, FILE1, RANGE, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_splitview', + command = 'vsplit', + flags = bit.bor(BANG, FILE1, RANGE, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_splitview', }, { - command='vunmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_unmap', + command = 'vunmap', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_unmap', }, { - command='vunmenu', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_menu', + command = 'vunmenu', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_menu', }, { - command='write', - flags=bit.bor(RANGE, WHOLEFOLD, BANG, FILE1, ARGOPT, DFLALL, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_write', + command = 'write', + flags = bit.bor(RANGE, WHOLEFOLD, BANG, FILE1, ARGOPT, DFLALL, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_write', }, { - command='wNext', - flags=bit.bor(RANGE, WHOLEFOLD, BANG, FILE1, ARGOPT, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_wnext', + command = 'wNext', + flags = bit.bor(RANGE, WHOLEFOLD, BANG, FILE1, ARGOPT, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_wnext', }, { - command='wall', - flags=bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='do_wqall', + command = 'wall', + flags = bit.bor(BANG, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'do_wqall', }, { - command='while', - flags=bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_while', + command = 'while', + flags = bit.bor(EXTRA, NOTRLCOM, SBOXOK, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_while', }, { - command='winsize', - flags=bit.bor(EXTRA, NEEDARG, TRLBAR), - addr_type='ADDR_NONE', - func='ex_winsize', + command = 'winsize', + flags = bit.bor(EXTRA, NEEDARG, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'ex_winsize', }, { - command='wincmd', - flags=bit.bor(NEEDARG, WORD1, RANGE, COUNT, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_wincmd', + command = 'wincmd', + flags = bit.bor(NEEDARG, WORD1, RANGE, COUNT, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_wincmd', }, { - command='windo', - flags=bit.bor(NEEDARG, EXTRA, NOTRLCOM, RANGE, DFLALL), - addr_type='ADDR_WINDOWS', - func='ex_listdo', + command = 'windo', + flags = bit.bor(NEEDARG, EXTRA, NOTRLCOM, RANGE, DFLALL), + addr_type = 'ADDR_WINDOWS', + func = 'ex_listdo', }, { - command='winpos', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_ni', + command = 'winpos', + flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_ni', }, { - command='wnext', - flags=bit.bor(RANGE, BANG, FILE1, ARGOPT, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_wnext', + command = 'wnext', + flags = bit.bor(RANGE, BANG, FILE1, ARGOPT, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_wnext', }, { - command='wprevious', - flags=bit.bor(RANGE, BANG, FILE1, ARGOPT, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_wnext', + command = 'wprevious', + flags = bit.bor(RANGE, BANG, FILE1, ARGOPT, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_wnext', }, { - command='wq', - flags=bit.bor(RANGE, WHOLEFOLD, BANG, FILE1, ARGOPT, DFLALL, TRLBAR), - addr_type='ADDR_LINES', - func='ex_exit', + command = 'wq', + flags = bit.bor(RANGE, WHOLEFOLD, BANG, FILE1, ARGOPT, DFLALL, TRLBAR), + addr_type = 'ADDR_LINES', + func = 'ex_exit', }, { - command='wqall', - flags=bit.bor(BANG, FILE1, ARGOPT, TRLBAR), - addr_type='ADDR_NONE', - func='do_wqall', + command = 'wqall', + flags = bit.bor(BANG, FILE1, ARGOPT, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'do_wqall', }, { - command='wshada', - flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_shada', + command = 'wshada', + flags = bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_shada', }, { - command='wundo', - flags=bit.bor(BANG, NEEDARG, FILE1), - addr_type='ADDR_NONE', - func='ex_wundo', + command = 'wundo', + flags = bit.bor(BANG, NEEDARG, FILE1), + addr_type = 'ADDR_NONE', + func = 'ex_wundo', }, { - command='wviminfo', - flags=bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_shada', + command = 'wviminfo', + flags = bit.bor(BANG, FILE1, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_shada', }, { - command='xit', - flags=bit.bor(RANGE, WHOLEFOLD, BANG, FILE1, ARGOPT, DFLALL, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_exit', + command = 'xit', + flags = bit.bor(RANGE, WHOLEFOLD, BANG, FILE1, ARGOPT, DFLALL, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_exit', }, { - command='xall', - flags=bit.bor(BANG, TRLBAR), - addr_type='ADDR_NONE', - func='do_wqall', + command = 'xall', + flags = bit.bor(BANG, TRLBAR), + addr_type = 'ADDR_NONE', + func = 'do_wqall', }, { - command='xmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_map', + command = 'xmap', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_map', }, { - command='xmapclear', - flags=bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_mapclear', + command = 'xmapclear', + flags = bit.bor(EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_mapclear', }, { - command='xmenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_menu', + command = 'xmenu', + flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_menu', }, { - command='xnoremap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_map', + command = 'xnoremap', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_map', }, { - command='xnoremenu', - flags=bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_OTHER', - func='ex_menu', + command = 'xnoremenu', + flags = bit.bor(RANGE, ZEROR, EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_OTHER', + func = 'ex_menu', }, { - command='xunmap', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_unmap', + command = 'xunmap', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_unmap', }, { - command='xunmenu', - flags=bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), - addr_type='ADDR_NONE', - func='ex_menu', + command = 'xunmenu', + flags = bit.bor(EXTRA, TRLBAR, NOTRLCOM, CTRLV, CMDWIN, LOCK_OK), + addr_type = 'ADDR_NONE', + func = 'ex_menu', }, { - command='yank', - flags=bit.bor(RANGE, WHOLEFOLD, REGSTR, COUNT, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_operators', + command = 'yank', + flags = bit.bor(RANGE, WHOLEFOLD, REGSTR, COUNT, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_operators', }, { - command='z', - flags=bit.bor(RANGE, WHOLEFOLD, BANG, EXTRA, FLAGS, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_z', + command = 'z', + flags = bit.bor(RANGE, WHOLEFOLD, BANG, EXTRA, FLAGS, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_z', }, -- commands that don't start with a letter { - command='!', - enum='CMD_bang', - flags=bit.bor(RANGE, WHOLEFOLD, BANG, FILES, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_bang', + command = '!', + enum = 'CMD_bang', + flags = bit.bor(RANGE, WHOLEFOLD, BANG, FILES, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_bang', }, { - command='#', - enum='CMD_pound', - flags=bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_print', + command = '#', + enum = 'CMD_pound', + flags = bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_print', }, { - command='&', - enum='CMD_and', - flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, MODIFY), - addr_type='ADDR_LINES', - func='ex_substitute', + command = '&', + enum = 'CMD_and', + flags = bit.bor(RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, MODIFY), + addr_type = 'ADDR_LINES', + func = 'ex_substitute', }, { - command='<', - enum='CMD_lshift', - flags=bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, LOCK_OK, MODIFY), - addr_type='ADDR_LINES', - func='ex_operators', + command = '<', + enum = 'CMD_lshift', + flags = bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, LOCK_OK, MODIFY), + addr_type = 'ADDR_LINES', + func = 'ex_operators', }, { - command='=', - enum='CMD_equal', - flags=bit.bor(RANGE, EXTRA, DFLALL, ARGOPT, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_equal', + command = '=', + enum = 'CMD_equal', + flags = bit.bor(RANGE, EXTRA, DFLALL, ARGOPT, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_equal', }, { - command='>', - enum='CMD_rshift', - flags=bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, LOCK_OK, MODIFY), - addr_type='ADDR_LINES', - func='ex_operators', + command = '>', + enum = 'CMD_rshift', + flags = bit.bor(RANGE, WHOLEFOLD, COUNT, FLAGS, TRLBAR, CMDWIN, LOCK_OK, MODIFY), + addr_type = 'ADDR_LINES', + func = 'ex_operators', }, { - command='@', - enum='CMD_at', - flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, TRLBAR, CMDWIN, LOCK_OK), - addr_type='ADDR_LINES', - func='ex_at', + command = '@', + enum = 'CMD_at', + flags = bit.bor(RANGE, WHOLEFOLD, EXTRA, TRLBAR, CMDWIN, LOCK_OK), + addr_type = 'ADDR_LINES', + func = 'ex_at', }, { - command='~', - enum='CMD_tilde', - flags=bit.bor(RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, MODIFY), - addr_type='ADDR_LINES', - func='ex_substitute', + command = '~', + enum = 'CMD_tilde', + flags = bit.bor(RANGE, WHOLEFOLD, EXTRA, CMDWIN, LOCK_OK, MODIFY), + addr_type = 'ADDR_LINES', + func = 'ex_substitute', }, -- commands that start with an uppercase letter { - command='Next', - flags=bit.bor(EXTRA, RANGE, COUNT, BANG, CMDARG, ARGOPT, TRLBAR), - addr_type='ADDR_OTHER', - func='ex_previous', + command = 'Next', + flags = bit.bor(EXTRA, RANGE, COUNT, BANG, CMDARG, ARGOPT, TRLBAR), + addr_type = 'ADDR_OTHER', + func = 'ex_previous', }, } diff --git a/src/nvim/extmark.h b/src/nvim/extmark.h index 1a7a1ddeff..5ba079bd12 100644 --- a/src/nvim/extmark.h +++ b/src/nvim/extmark.h @@ -1,17 +1,15 @@ #pragma once #include <stdbool.h> -#include <stddef.h> #include <stdint.h> #include "klib/kvec.h" -#include "nvim/buffer_defs.h" -#include "nvim/decoration.h" +#include "nvim/buffer_defs.h" // IWYU pragma: keep +#include "nvim/decoration_defs.h" // IWYU pragma: keep #include "nvim/extmark_defs.h" // IWYU pragma: export #include "nvim/macros_defs.h" -#include "nvim/marktree.h" +#include "nvim/marktree_defs.h" // IWYU pragma: keep #include "nvim/pos_defs.h" -#include "nvim/types_defs.h" EXTERN int curbuf_splice_pending INIT( = 0); diff --git a/src/nvim/generators/c_grammar.lua b/src/nvim/generators/c_grammar.lua index f33da452ff..1720b32919 100644 --- a/src/nvim/generators/c_grammar.lua +++ b/src/nvim/generators/c_grammar.lua @@ -17,50 +17,70 @@ local fill = ws ^ 0 local c_comment = P('//') * (not_nl ^ 0) local c_preproc = P('#') * (not_nl ^ 0) local dllexport = P('DLLEXPORT') * (ws ^ 1) -local typed_container = - (P('ArrayOf(') + P('DictionaryOf(') + P('Dict(')) * ((any - P(')')) ^ 1) * P(')') -local c_id = ( - typed_container + - (letter * (alpha ^ 0)) -) +local typed_container = (P('ArrayOf(') + P('DictionaryOf(') + P('Dict(')) + * ((any - P(')')) ^ 1) + * P(')') +local c_id = (typed_container + (letter * (alpha ^ 0))) local c_void = P('void') local c_param_type = ( - ((P('Error') * fill * P('*') * fill) * Cc('error')) + - ((P('Arena') * fill * P('*') * fill) * Cc('arena')) + - ((P('lua_State') * fill * P('*') * fill) * Cc('lstate')) + - C((P('const ') ^ -1) * (c_id) * (ws ^ 1) * P('*')) + - (C(c_id) * (ws ^ 1)) - ) + ((P('Error') * fill * P('*') * fill) * Cc('error')) + + ((P('Arena') * fill * P('*') * fill) * Cc('arena')) + + ((P('lua_State') * fill * P('*') * fill) * Cc('lstate')) + + C((P('const ') ^ -1) * c_id * (ws ^ 1) * P('*')) + + (C(c_id) * (ws ^ 1)) +) local c_type = (C(c_void) * (ws ^ 1)) + c_param_type local c_param = Ct(c_param_type * C(c_id)) local c_param_list = c_param * (fill * (P(',') * fill * c_param) ^ 0) local c_params = Ct(c_void + c_param_list) local c_proto = Ct( - (dllexport ^ -1) * - Cg(c_type, 'return_type') * Cg(c_id, 'name') * - fill * P('(') * fill * Cg(c_params, 'parameters') * fill * P(')') * - Cg(Cc(false), 'fast') * - (fill * Cg((P('FUNC_API_SINCE(') * C(num ^ 1)) * P(')'), 'since') ^ -1) * - (fill * Cg((P('FUNC_API_DEPRECATED_SINCE(') * C(num ^ 1)) * P(')'), - 'deprecated_since') ^ -1) * - (fill * Cg((P('FUNC_API_FAST') * Cc(true)), 'fast') ^ -1) * - (fill * Cg((P('FUNC_API_NOEXPORT') * Cc(true)), 'noexport') ^ -1) * - (fill * Cg((P('FUNC_API_REMOTE_ONLY') * Cc(true)), 'remote_only') ^ -1) * - (fill * Cg((P('FUNC_API_LUA_ONLY') * Cc(true)), 'lua_only') ^ -1) * - (fill * (Cg(P('FUNC_API_TEXTLOCK_ALLOW_CMDWIN') * Cc(true), 'textlock_allow_cmdwin') + - Cg(P('FUNC_API_TEXTLOCK') * Cc(true), 'textlock')) ^ -1) * - (fill * Cg((P('FUNC_API_REMOTE_IMPL') * Cc(true)), 'remote_impl') ^ -1) * - (fill * Cg((P('FUNC_API_COMPOSITOR_IMPL') * Cc(true)), 'compositor_impl') ^ -1) * - (fill * Cg((P('FUNC_API_CLIENT_IMPL') * Cc(true)), 'client_impl') ^ -1) * - (fill * Cg((P('FUNC_API_CLIENT_IGNORE') * Cc(true)), 'client_ignore') ^ -1) * - fill * P(';') - ) + (dllexport ^ -1) + * Cg(c_type, 'return_type') + * Cg(c_id, 'name') + * fill + * P('(') + * fill + * Cg(c_params, 'parameters') + * fill + * P(')') + * Cg(Cc(false), 'fast') + * (fill * Cg((P('FUNC_API_SINCE(') * C(num ^ 1)) * P(')'), 'since') ^ -1) + * (fill * Cg((P('FUNC_API_DEPRECATED_SINCE(') * C(num ^ 1)) * P(')'), 'deprecated_since') ^ -1) + * (fill * Cg((P('FUNC_API_FAST') * Cc(true)), 'fast') ^ -1) + * (fill * Cg((P('FUNC_API_NOEXPORT') * Cc(true)), 'noexport') ^ -1) + * (fill * Cg((P('FUNC_API_REMOTE_ONLY') * Cc(true)), 'remote_only') ^ -1) + * (fill * Cg((P('FUNC_API_LUA_ONLY') * Cc(true)), 'lua_only') ^ -1) + * (fill * (Cg(P('FUNC_API_TEXTLOCK_ALLOW_CMDWIN') * Cc(true), 'textlock_allow_cmdwin') + Cg( + P('FUNC_API_TEXTLOCK') * Cc(true), + 'textlock' + )) ^ -1) + * (fill * Cg((P('FUNC_API_REMOTE_IMPL') * Cc(true)), 'remote_impl') ^ -1) + * (fill * Cg((P('FUNC_API_COMPOSITOR_IMPL') * Cc(true)), 'compositor_impl') ^ -1) + * (fill * Cg((P('FUNC_API_CLIENT_IMPL') * Cc(true)), 'client_impl') ^ -1) + * (fill * Cg((P('FUNC_API_CLIENT_IGNORE') * Cc(true)), 'client_ignore') ^ -1) + * fill + * P(';') +) local c_field = Ct(Cg(c_id, 'type') * ws * Cg(c_id, 'name') * fill * P(';') * fill) local c_keyset = Ct( - P('typedef') * ws * P('struct') * fill * P('{') * fill * - Cg(Ct(c_field ^ 1), 'fields') * - P('}') * fill * P('Dict') * fill * P('(') * Cg(c_id, 'keyset_name') * fill * P(')') * P(';')) + P('typedef') + * ws + * P('struct') + * fill + * P('{') + * fill + * Cg(Ct(c_field ^ 1), 'fields') + * P('}') + * fill + * P('Dict') + * fill + * P('(') + * Cg(c_id, 'keyset_name') + * fill + * P(')') + * P(';') +) local grammar = Ct((c_proto + c_comment + c_preproc + ws + c_keyset) ^ 1) -return {grammar=grammar, typed_container=typed_container} +return { grammar = grammar, typed_container = typed_container } diff --git a/src/nvim/generators/dump_bin_array.lua b/src/nvim/generators/dump_bin_array.lua index bee5aba73f..c6cda25e73 100644 --- a/src/nvim/generators/dump_bin_array.lua +++ b/src/nvim/generators/dump_bin_array.lua @@ -1,10 +1,10 @@ local function dump_bin_array(output, name, data) output:write([[ - static const uint8_t ]]..name..[[[] = { + static const uint8_t ]] .. name .. [[[] = { ]]) for i = 1, #data do - output:write(string.byte(data, i)..', ') + output:write(string.byte(data, i) .. ', ') if i % 10 == 0 then output:write('\n ') end diff --git a/src/nvim/generators/gen_api_dispatch.lua b/src/nvim/generators/gen_api_dispatch.lua index 81b5096557..7cec118243 100644 --- a/src/nvim/generators/gen_api_dispatch.lua +++ b/src/nvim/generators/gen_api_dispatch.lua @@ -1,6 +1,6 @@ local mpack = vim.mpack -local hashy = require'generators.hashy' +local hashy = require 'generators.hashy' assert(#arg >= 5) -- output h file with generated dispatch functions (dispatch_wrappers.generated.h) @@ -23,16 +23,20 @@ local function_names = {} local c_grammar = require('generators.c_grammar') -local function startswith(String,Start) - return string.sub(String,1,string.len(Start))==Start +local function startswith(String, Start) + return string.sub(String, 1, string.len(Start)) == Start end local function add_function(fn) - local public = startswith(fn.name, "nvim_") or fn.deprecated_since + local public = startswith(fn.name, 'nvim_') or fn.deprecated_since if public and not fn.noexport then functions[#functions + 1] = fn function_names[fn.name] = true - if #fn.parameters >= 2 and fn.parameters[2][1] == 'Array' and fn.parameters[2][2] == 'uidata' then + if + #fn.parameters >= 2 + and fn.parameters[2][1] == 'Array' + and fn.parameters[2][2] == 'uidata' + then -- function receives the "args" as a parameter fn.receives_array_args = true -- remove the args parameter @@ -70,7 +74,7 @@ local function add_keyset(val) local types = {} local is_set_name = 'is_set__' .. val.keyset_name .. '_' local has_optional = false - for i,field in ipairs(val.fields) do + for i, field in ipairs(val.fields) do if field.type ~= 'Object' then types[field.name] = field.type end @@ -80,14 +84,17 @@ local function add_keyset(val) if i > 1 then error("'is_set__{type}_' must be first if present") elseif field.name ~= is_set_name then - error(val.keyset_name..": name of first key should be "..is_set_name) + error(val.keyset_name .. ': name of first key should be ' .. is_set_name) elseif field.type ~= 'OptionalKeys' then - error("'"..is_set_name.."' must have type 'OptionalKeys'") + error("'" .. is_set_name .. "' must have type 'OptionalKeys'") end has_optional = true end end - table.insert(keysets, {name=val.keyset_name, keys=keys, types=types, has_optional=has_optional}) + table.insert( + keysets, + { name = val.keyset_name, keys = keys, types = types, has_optional = has_optional } + ) end -- read each input file, parse and append to the api metadata @@ -97,7 +104,7 @@ for i = 6, #arg do for part in string.gmatch(full_path, '[^/]+') do parts[#parts + 1] = part end - headers[#headers + 1] = parts[#parts - 1]..'/'..parts[#parts] + headers[#headers + 1] = parts[#parts - 1] .. '/' .. parts[#parts] local input = io.open(full_path, 'rb') @@ -123,14 +130,14 @@ end -- Export functions under older deprecated names. -- These will be removed eventually. -local deprecated_aliases = require("api.dispatch_deprecated") -for _,f in ipairs(shallowcopy(functions)) do +local deprecated_aliases = require('api.dispatch_deprecated') +for _, f in ipairs(shallowcopy(functions)) do local ismethod = false - if startswith(f.name, "nvim_") then - if startswith(f.name, "nvim__") or f.name == "nvim_error_event" then + if startswith(f.name, 'nvim_') then + if startswith(f.name, 'nvim__') or f.name == 'nvim_error_event' then f.since = -1 elseif f.since == nil then - print("Function "..f.name.." lacks since field.\n") + print('Function ' .. f.name .. ' lacks since field.\n') os.exit(1) end f.since = tonumber(f.since) @@ -138,16 +145,16 @@ for _,f in ipairs(shallowcopy(functions)) do f.deprecated_since = tonumber(f.deprecated_since) end - if startswith(f.name, "nvim_buf_") then + if startswith(f.name, 'nvim_buf_') then ismethod = true - elseif startswith(f.name, "nvim_win_") then + elseif startswith(f.name, 'nvim_win_') then ismethod = true - elseif startswith(f.name, "nvim_tabpage_") then + elseif startswith(f.name, 'nvim_tabpage_') then ismethod = true end f.remote = f.remote_only or not f.lua_only f.lua = f.lua_only or not f.remote_only - f.eval = (not f.lua_only) and (not f.remote_only) + f.eval = (not f.lua_only) and not f.remote_only else f.deprecated_since = tonumber(f.deprecated_since) assert(f.deprecated_since == 1) @@ -159,56 +166,59 @@ for _,f in ipairs(shallowcopy(functions)) do if newname ~= nil then if function_names[newname] then -- duplicate - print("Function "..f.name.." has deprecated alias\n" - ..newname.." which has a separate implementation.\n".. - "Please remove it from src/nvim/api/dispatch_deprecated.lua") + print( + 'Function ' + .. f.name + .. ' has deprecated alias\n' + .. newname + .. ' which has a separate implementation.\n' + .. 'Please remove it from src/nvim/api/dispatch_deprecated.lua' + ) os.exit(1) end local newf = shallowcopy(f) newf.name = newname - if newname == "ui_try_resize" then + if newname == 'ui_try_resize' then -- The return type was incorrectly set to Object in 0.1.5. -- Keep it that way for clients that rely on this. - newf.return_type = "Object" + newf.return_type = 'Object' end newf.impl_name = f.name newf.lua = false newf.eval = false newf.since = 0 newf.deprecated_since = 1 - functions[#functions+1] = newf + functions[#functions + 1] = newf end end -- don't expose internal attributes like "impl_name" in public metadata -local exported_attributes = {'name', 'return_type', 'method', - 'since', 'deprecated_since'} +local exported_attributes = { 'name', 'return_type', 'method', 'since', 'deprecated_since' } local exported_functions = {} -for _,f in ipairs(functions) do - if not (startswith(f.name, "nvim__") or f.name == "nvim_error_event" or f.name == "redraw") then +for _, f in ipairs(functions) do + if not (startswith(f.name, 'nvim__') or f.name == 'nvim_error_event' or f.name == 'redraw') then local f_exported = {} - for _,attr in ipairs(exported_attributes) do + for _, attr in ipairs(exported_attributes) do f_exported[attr] = f[attr] end f_exported.parameters = {} - for i,param in ipairs(f.parameters) do - if param[1] == "DictionaryOf(LuaRef)" then - param = {"Dictionary", param[2]} - elseif startswith(param[1], "Dict(") then - param = {"Dictionary", param[2]} + for i, param in ipairs(f.parameters) do + if param[1] == 'DictionaryOf(LuaRef)' then + param = { 'Dictionary', param[2] } + elseif startswith(param[1], 'Dict(') then + param = { 'Dictionary', param[2] } end f_exported.parameters[i] = param end - exported_functions[#exported_functions+1] = f_exported + exported_functions[#exported_functions + 1] = f_exported end end - -- serialize the API metadata using msgpack and embed into the resulting -- binary for easy querying by clients local funcs_metadata_output = io.open(funcs_metadata_outputf, 'wb') local packed = mpack.encode(exported_functions) -local dump_bin_array = require("generators.dump_bin_array") +local dump_bin_array = require('generators.dump_bin_array') dump_bin_array(funcs_metadata_output, 'funcs_metadata', packed) funcs_metadata_output:close() @@ -246,67 +256,81 @@ output:write([[ ]]) -for _,k in ipairs(keysets) do +for _, k in ipairs(keysets) do local c_name = {} - for i = 1,#k.keys do + for i = 1, #k.keys do -- some keys, like "register" are c keywords and get -- escaped with a trailing _ in the struct. - if vim.endswith(k.keys[i], "_") then + if vim.endswith(k.keys[i], '_') then local orig = k.keys[i] - k.keys[i] = string.sub(k.keys[i],1, #(k.keys[i]) - 1) + k.keys[i] = string.sub(k.keys[i], 1, #k.keys[i] - 1) c_name[k.keys[i]] = orig k.types[k.keys[i]] = k.types[orig] end end - local neworder, hashfun = hashy.hashy_hash(k.name, k.keys, function (idx) - return k.name.."_table["..idx.."].str" + local neworder, hashfun = hashy.hashy_hash(k.name, k.keys, function(idx) + return k.name .. '_table[' .. idx .. '].str' end) - keysets_defs:write("extern KeySetLink "..k.name.."_table[];\n") + keysets_defs:write('extern KeySetLink ' .. k.name .. '_table[];\n') local function typename(type) if type ~= nil then - return "kObjectType"..type + return 'kObjectType' .. type else - return "kObjectTypeNil" + return 'kObjectTypeNil' end end - output:write("KeySetLink "..k.name.."_table[] = {\n") + output:write('KeySetLink ' .. k.name .. '_table[] = {\n') for i, key in ipairs(neworder) do local ind = -1 if k.has_optional then ind = i - keysets_defs:write("#define KEYSET_OPTIDX_"..k.name.."__"..key.." "..ind.."\n") - end - output:write(' {"'..key..'", offsetof(KeyDict_'..k.name..", "..(c_name[key] or key).."), "..typename(k.types[key])..", "..ind.."},\n") + keysets_defs:write('#define KEYSET_OPTIDX_' .. k.name .. '__' .. key .. ' ' .. ind .. '\n') + end + output:write( + ' {"' + .. key + .. '", offsetof(KeyDict_' + .. k.name + .. ', ' + .. (c_name[key] or key) + .. '), ' + .. typename(k.types[key]) + .. ', ' + .. ind + .. '},\n' + ) end - output:write(' {NULL, 0, kObjectTypeNil, -1},\n') - output:write("};\n\n") + output:write(' {NULL, 0, kObjectTypeNil, -1},\n') + output:write('};\n\n') output:write(hashfun) output:write([[ -KeySetLink *KeyDict_]]..k.name..[[_get_field(const char *str, size_t len) +KeySetLink *KeyDict_]] .. k.name .. [[_get_field(const char *str, size_t len) { - int hash = ]]..k.name..[[_hash(str, len); + int hash = ]] .. k.name .. [[_hash(str, len); if (hash == -1) { return NULL; } - return &]]..k.name..[[_table[hash]; + return &]] .. k.name .. [[_table[hash]; } ]]) - keysets_defs:write("#define api_free_keydict_"..k.name.."(x) api_free_keydict(x, "..k.name.."_table)\n") + keysets_defs:write( + '#define api_free_keydict_' .. k.name .. '(x) api_free_keydict(x, ' .. k.name .. '_table)\n' + ) end local function real_type(type) local rv = type - local rmatch = string.match(type, "Dict%(([_%w]+)%)") + local rmatch = string.match(type, 'Dict%(([_%w]+)%)') if rmatch then - return "KeyDict_"..rmatch + return 'KeyDict_' .. rmatch elseif c_grammar.typed_container:match(rv) then if rv:match('Array') then rv = 'Array' @@ -333,24 +357,30 @@ for i = 1, #functions do if fn.impl_name == nil and fn.remote then local args = {} - output:write('Object handle_'..fn.name..'(uint64_t channel_id, Array args, Arena* arena, Error *error)') + output:write( + 'Object handle_' .. fn.name .. '(uint64_t channel_id, Array args, Arena* arena, Error *error)' + ) output:write('\n{') output:write('\n#ifdef NVIM_LOG_DEBUG') - output:write('\n DLOG("RPC: ch %" PRIu64 ": invoke '..fn.name..'", channel_id);') + output:write('\n DLOG("RPC: ch %" PRIu64 ": invoke ' .. fn.name .. '", channel_id);') output:write('\n#endif') output:write('\n Object ret = NIL;') -- Declare/initialize variables that will hold converted arguments for j = 1, #fn.parameters do local param = fn.parameters[j] local rt = real_type(param[1]) - local converted = 'arg_'..j - output:write('\n '..rt..' '..converted..';') + local converted = 'arg_' .. j + output:write('\n ' .. rt .. ' ' .. converted .. ';') end output:write('\n') if not fn.receives_array_args then - output:write('\n if (args.size != '..#fn.parameters..') {') - output:write('\n api_set_error(error, kErrorTypeException, \ - "Wrong number of arguments: expecting '..#fn.parameters..' but got %zu", args.size);') + output:write('\n if (args.size != ' .. #fn.parameters .. ') {') + output:write( + '\n api_set_error(error, kErrorTypeException, \ + "Wrong number of arguments: expecting ' + .. #fn.parameters + .. ' but got %zu", args.size);' + ) output:write('\n goto cleanup;') output:write('\n }\n') end @@ -359,55 +389,121 @@ for i = 1, #functions do for j = 1, #fn.parameters do local converted, param param = fn.parameters[j] - converted = 'arg_'..j + converted = 'arg_' .. j local rt = real_type(param[1]) if rt == 'Object' then - output:write('\n '..converted..' = args.items['..(j - 1)..'];\n') + output:write('\n ' .. converted .. ' = args.items[' .. (j - 1) .. '];\n') elseif rt:match('^KeyDict_') then converted = '&' .. converted - output:write('\n if (args.items['..(j - 1)..'].type == kObjectTypeDictionary) {') --luacheck: ignore 631 - output:write('\n memset('..converted..', 0, sizeof(*'..converted..'));') -- TODO: neeeee - output:write('\n if (!api_dict_to_keydict('..converted..', '..rt..'_get_field, args.items['..(j - 1)..'].data.dictionary, error)) {') + output:write('\n if (args.items[' .. (j - 1) .. '].type == kObjectTypeDictionary) {') --luacheck: ignore 631 + output:write('\n memset(' .. converted .. ', 0, sizeof(*' .. converted .. '));') -- TODO: neeeee + output:write( + '\n if (!api_dict_to_keydict(' + .. converted + .. ', ' + .. rt + .. '_get_field, args.items[' + .. (j - 1) + .. '].data.dictionary, error)) {' + ) output:write('\n goto cleanup;') output:write('\n }') - output:write('\n } else if (args.items['..(j - 1)..'].type == kObjectTypeArray && args.items['..(j - 1)..'].data.array.size == 0) {') --luacheck: ignore 631 - output:write('\n memset('..converted..', 0, sizeof(*'..converted..'));') + output:write( + '\n } else if (args.items[' + .. (j - 1) + .. '].type == kObjectTypeArray && args.items[' + .. (j - 1) + .. '].data.array.size == 0) {' + ) --luacheck: ignore 631 + output:write('\n memset(' .. converted .. ', 0, sizeof(*' .. converted .. '));') output:write('\n } else {') - output:write('\n api_set_error(error, kErrorTypeException, \ - "Wrong type for argument '..j..' when calling '..fn.name..', expecting '..param[1]..'");') + output:write( + '\n api_set_error(error, kErrorTypeException, \ + "Wrong type for argument ' + .. j + .. ' when calling ' + .. fn.name + .. ', expecting ' + .. param[1] + .. '");' + ) output:write('\n goto cleanup;') output:write('\n }\n') else if rt:match('^Buffer$') or rt:match('^Window$') or rt:match('^Tabpage$') then -- Buffer, Window, and Tabpage have a specific type, but are stored in integer - output:write('\n if (args.items['.. - (j - 1)..'].type == kObjectType'..rt..' && args.items['..(j - 1)..'].data.integer >= 0) {') - output:write('\n '..converted..' = (handle_T)args.items['..(j - 1)..'].data.integer;') + output:write( + '\n if (args.items[' + .. (j - 1) + .. '].type == kObjectType' + .. rt + .. ' && args.items[' + .. (j - 1) + .. '].data.integer >= 0) {' + ) + output:write( + '\n ' .. converted .. ' = (handle_T)args.items[' .. (j - 1) .. '].data.integer;' + ) else - output:write('\n if (args.items['..(j - 1)..'].type == kObjectType'..rt..') {') - output:write('\n '..converted..' = args.items['..(j - 1)..'].data.'..attr_name(rt)..';') + output:write('\n if (args.items[' .. (j - 1) .. '].type == kObjectType' .. rt .. ') {') + output:write( + '\n ' + .. converted + .. ' = args.items[' + .. (j - 1) + .. '].data.' + .. attr_name(rt) + .. ';' + ) end - if rt:match('^Buffer$') or rt:match('^Window$') or rt:match('^Tabpage$') or rt:match('^Boolean$') then + if + rt:match('^Buffer$') + or rt:match('^Window$') + or rt:match('^Tabpage$') + or rt:match('^Boolean$') + then -- accept nonnegative integers for Booleans, Buffers, Windows and Tabpages - output:write('\n } else if (args.items['.. - (j - 1)..'].type == kObjectTypeInteger && args.items['..(j - 1)..'].data.integer >= 0) {') - output:write('\n '..converted..' = (handle_T)args.items['..(j - 1)..'].data.integer;') + output:write( + '\n } else if (args.items[' + .. (j - 1) + .. '].type == kObjectTypeInteger && args.items[' + .. (j - 1) + .. '].data.integer >= 0) {' + ) + output:write( + '\n ' .. converted .. ' = (handle_T)args.items[' .. (j - 1) .. '].data.integer;' + ) end if rt:match('^Float$') then -- accept integers for Floats - output:write('\n } else if (args.items['.. - (j - 1)..'].type == kObjectTypeInteger) {') - output:write('\n '..converted..' = (Float)args.items['..(j - 1)..'].data.integer;') + output:write('\n } else if (args.items[' .. (j - 1) .. '].type == kObjectTypeInteger) {') + output:write( + '\n ' .. converted .. ' = (Float)args.items[' .. (j - 1) .. '].data.integer;' + ) end -- accept empty lua tables as empty dictionaries if rt:match('^Dictionary') then - output:write('\n } else if (args.items['..(j - 1)..'].type == kObjectTypeArray && args.items['..(j - 1)..'].data.array.size == 0) {') --luacheck: ignore 631 - output:write('\n '..converted..' = (Dictionary)ARRAY_DICT_INIT;') + output:write( + '\n } else if (args.items[' + .. (j - 1) + .. '].type == kObjectTypeArray && args.items[' + .. (j - 1) + .. '].data.array.size == 0) {' + ) --luacheck: ignore 631 + output:write('\n ' .. converted .. ' = (Dictionary)ARRAY_DICT_INIT;') end output:write('\n } else {') - output:write('\n api_set_error(error, kErrorTypeException, \ - "Wrong type for argument '..j..' when calling '..fn.name..', expecting '..param[1]..'");') + output:write( + '\n api_set_error(error, kErrorTypeException, \ + "Wrong type for argument ' + .. j + .. ' when calling ' + .. fn.name + .. ', expecting ' + .. param[1] + .. '");' + ) output:write('\n goto cleanup;') output:write('\n }\n') end @@ -431,11 +527,11 @@ for i = 1, #functions do output:write('\n ') if fn.return_type ~= 'void' then -- has a return value, prefix the call with a declaration - output:write(fn.return_type..' rv = ') + output:write(fn.return_type .. ' rv = ') end -- write the function name and the opening parenthesis - output:write(fn.name..'(') + output:write(fn.name .. '(') if fn.receives_channel_id then -- if the function receives the channel id, pass it as first argument @@ -455,7 +551,7 @@ for i = 1, #functions do else if fn.receives_array_args then if #args > 0 or fn.call_fail then - output:write('args, '..call_args) + output:write('args, ' .. call_args) else output:write('args') end @@ -465,7 +561,7 @@ for i = 1, #functions do end if fn.arena_return then - output:write(', arena') + output:write(', arena') end if fn.has_lua_imp then @@ -492,36 +588,45 @@ for i = 1, #functions do end if fn.return_type ~= 'void' then - output:write('\n ret = '..string.upper(real_type(fn.return_type))..'_OBJ(rv);') + output:write('\n ret = ' .. string.upper(real_type(fn.return_type)) .. '_OBJ(rv);') end - output:write('\n\ncleanup:'); + output:write('\n\ncleanup:') - output:write('\n return ret;\n}\n\n'); + output:write('\n return ret;\n}\n\n') end end local remote_fns = {} -for _,fn in ipairs(functions) do +for _, fn in ipairs(functions) do if fn.remote then remote_fns[fn.name] = fn end end -remote_fns.redraw = {impl_name="ui_client_redraw", fast=true} +remote_fns.redraw = { impl_name = 'ui_client_redraw', fast = true } local names = vim.tbl_keys(remote_fns) table.sort(names) -local hashorder, hashfun = hashy.hashy_hash("msgpack_rpc_get_handler_for", names, function (idx) - return "method_handlers["..idx.."].name" +local hashorder, hashfun = hashy.hashy_hash('msgpack_rpc_get_handler_for', names, function(idx) + return 'method_handlers[' .. idx .. '].name' end) -output:write("const MsgpackRpcRequestHandler method_handlers[] = {\n") +output:write('const MsgpackRpcRequestHandler method_handlers[] = {\n') for n, name in ipairs(hashorder) do local fn = remote_fns[name] - fn.handler_id = n-1 - output:write(' { .name = "'..name..'", .fn = handle_'.. (fn.impl_name or fn.name).. - ', .fast = '..tostring(fn.fast)..', .arena_return = '..tostring(not not fn.arena_return)..'},\n') + fn.handler_id = n - 1 + output:write( + ' { .name = "' + .. name + .. '", .fn = handle_' + .. (fn.impl_name or fn.name) + .. ', .fast = ' + .. tostring(fn.fast) + .. ', .arena_return = ' + .. tostring(not not fn.arena_return) + .. '},\n' + ) end -output:write("};\n\n") +output:write('};\n\n') output:write(hashfun) output:close() @@ -534,7 +639,7 @@ mpack_output:close() local function include_headers(output_handle, headers_to_include) for i = 1, #headers_to_include do if headers_to_include[i]:sub(-12) ~= '.generated.h' then - output_handle:write('\n#include "nvim/'..headers_to_include[i]..'"') + output_handle:write('\n#include "nvim/' .. headers_to_include[i] .. '"') end end end @@ -572,7 +677,10 @@ local lua_c_functions = {} local function process_function(fn) local lua_c_function_name = ('nlua_api_%s'):format(fn.name) - write_shifted_output(output, string.format([[ + write_shifted_output( + output, + string.format( + [[ static int %s(lua_State *lstate) { @@ -582,71 +690,108 @@ local function process_function(fn) api_set_error(&err, kErrorTypeValidation, "Expected %i argument%s"); goto exit_0; } - ]], lua_c_function_name, #fn.parameters, #fn.parameters, - (#fn.parameters == 1) and '' or 's')) + ]], + lua_c_function_name, + #fn.parameters, + #fn.parameters, + (#fn.parameters == 1) and '' or 's' + ) + ) lua_c_functions[#lua_c_functions + 1] = { - binding=lua_c_function_name, - api=fn.name + binding = lua_c_function_name, + api = fn.name, } if not fn.fast then - write_shifted_output(output, string.format([[ + write_shifted_output( + output, + string.format( + [[ if (!nlua_is_deferred_safe()) { return luaL_error(lstate, e_luv_api_disabled, "%s"); } - ]], fn.name)) + ]], + fn.name + ) + ) end if fn.textlock then - write_shifted_output(output, [[ + write_shifted_output( + output, + [[ if (text_locked()) { api_set_error(&err, kErrorTypeException, "%s", get_text_locked_msg()); goto exit_0; } - ]]) + ]] + ) elseif fn.textlock_allow_cmdwin then - write_shifted_output(output, [[ + write_shifted_output( + output, + [[ if (textlock != 0 || expr_map_locked()) { api_set_error(&err, kErrorTypeException, "%s", e_textlock); goto exit_0; } - ]]) + ]] + ) end local cparams = '' local free_code = {} - for j = #fn.parameters,1,-1 do + for j = #fn.parameters, 1, -1 do local param = fn.parameters[j] local cparam = string.format('arg%u', j) local param_type = real_type(param[1]) local lc_param_type = real_type(param[1]):lower() - local extra = param_type == "Dictionary" and "false, " or "" - if param[1] == "Object" or param[1] == "DictionaryOf(LuaRef)" then - extra = "true, " + local extra = param_type == 'Dictionary' and 'false, ' or '' + if param[1] == 'Object' or param[1] == 'DictionaryOf(LuaRef)' then + extra = 'true, ' end local errshift = 0 local seterr = '' if string.match(param_type, '^KeyDict_') then - write_shifted_output(output, string.format([[ - %s %s = { 0 }; nlua_pop_keydict(lstate, &%s, %s_get_field, &err_param, &err);]], param_type, cparam, cparam, param_type)) - cparam = '&'..cparam + write_shifted_output( + output, + string.format( + [[ + %s %s = { 0 }; nlua_pop_keydict(lstate, &%s, %s_get_field, &err_param, &err);]], + param_type, + cparam, + cparam, + param_type + ) + ) + cparam = '&' .. cparam errshift = 1 -- free incomplete dict on error else - write_shifted_output(output, string.format([[ - const %s %s = nlua_pop_%s(lstate, %s&err);]], param[1], cparam, param_type, extra)) + write_shifted_output( + output, + string.format( + [[ + const %s %s = nlua_pop_%s(lstate, %s&err);]], + param[1], + cparam, + param_type, + extra + ) + ) seterr = [[ - err_param = "]]..param[2]..[[";]] + err_param = "]] .. param[2] .. [[";]] end - write_shifted_output(output, string.format([[ + write_shifted_output( + output, + string.format([[ - if (ERROR_SET(&err)) {]]..seterr..[[ + if (ERROR_SET(&err)) {]] .. seterr .. [[ goto exit_%u; } - ]], #fn.parameters - j + errshift)) - free_code[#free_code + 1] = ('api_free_%s(%s);'):format( - lc_param_type, cparam) + ]], #fn.parameters - j + errshift) + ) + free_code[#free_code + 1] = ('api_free_%s(%s);'):format(lc_param_type, cparam) cparams = cparam .. ', ' .. cparams end if fn.receives_channel_id then @@ -654,9 +799,12 @@ local function process_function(fn) end if fn.arena_return then cparams = cparams .. '&arena, ' - write_shifted_output(output, [[ + write_shifted_output( + output, + [[ Arena arena = ARENA_EMPTY; - ]]) + ]] + ) end if fn.has_lua_imp then @@ -675,8 +823,7 @@ local function process_function(fn) if i == 1 and not string.match(real_type(fn.parameters[1][1]), '^KeyDict_') then free_at_exit_code = free_at_exit_code .. ('\n %s'):format(code) else - free_at_exit_code = free_at_exit_code .. ('\n exit_%u:\n %s'):format( - rev_i, code) + free_at_exit_code = free_at_exit_code .. ('\n exit_%u:\n %s'):format(rev_i, code) end end local err_throw_code = [[ @@ -704,45 +851,86 @@ local function process_function(fn) end local free_retval if fn.arena_return then - free_retval = "arena_mem_free(arena_finish(&arena));" + free_retval = 'arena_mem_free(arena_finish(&arena));' else - free_retval = "api_free_"..return_type:lower().."(ret);" + free_retval = 'api_free_' .. return_type:lower() .. '(ret);' end - write_shifted_output(output, string.format([[ + write_shifted_output( + output, + string.format( + [[ const %s ret = %s(%s); - ]], fn.return_type, fn.name, cparams)) + ]], + fn.return_type, + fn.name, + cparams + ) + ) if fn.has_lua_imp then -- only push onto the Lua stack if we haven't already - write_shifted_output(output, string.format([[ + write_shifted_output( + output, + string.format( + [[ if (lua_gettop(lstate) == 0) { nlua_push_%s(lstate, ret, true); } - ]], return_type)) + ]], + return_type + ) + ) else local special = (fn.since ~= nil and fn.since < 11) - write_shifted_output(output, string.format([[ + write_shifted_output( + output, + string.format( + [[ nlua_push_%s(lstate, ret, %s); - ]], return_type, tostring(special))) + ]], + return_type, + tostring(special) + ) + ) end - write_shifted_output(output, string.format([[ + write_shifted_output( + output, + string.format( + [[ %s %s %s return 1; - ]], free_retval, free_at_exit_code, err_throw_code)) + ]], + free_retval, + free_at_exit_code, + err_throw_code + ) + ) else - write_shifted_output(output, string.format([[ + write_shifted_output( + output, + string.format( + [[ %s(%s); %s %s return 0; - ]], fn.name, cparams, free_at_exit_code, err_throw_code)) + ]], + fn.name, + cparams, + free_at_exit_code, + err_throw_code + ) + ) end - write_shifted_output(output, [[ + write_shifted_output( + output, + [[ } - ]]) + ]] + ) end for _, fn in ipairs(functions) do @@ -751,18 +939,25 @@ for _, fn in ipairs(functions) do end end -output:write(string.format([[ +output:write(string.format( + [[ void nlua_add_api_functions(lua_State *lstate) REAL_FATTR_NONNULL_ALL; void nlua_add_api_functions(lua_State *lstate) { lua_createtable(lstate, 0, %u); -]], #lua_c_functions)) +]], + #lua_c_functions +)) for _, func in ipairs(lua_c_functions) do - output:write(string.format([[ + output:write(string.format( + [[ lua_pushcfunction(lstate, &%s); - lua_setfield(lstate, -2, "%s");]], func.binding, func.api)) + lua_setfield(lstate, -2, "%s");]], + func.binding, + func.api + )) end output:write([[ diff --git a/src/nvim/generators/gen_api_ui_events.lua b/src/nvim/generators/gen_api_ui_events.lua index e2af5f8d44..89f8c654f4 100644 --- a/src/nvim/generators/gen_api_ui_events.lua +++ b/src/nvim/generators/gen_api_ui_events.lua @@ -10,11 +10,11 @@ local client_output = io.open(arg[5], 'wb') local c_grammar = require('generators.c_grammar') local events = c_grammar.grammar:match(input:read('*all')) -local hashy = require'generators.hashy' +local hashy = require 'generators.hashy' local function write_signature(output, ev, prefix, notype) - output:write('('..prefix) - if prefix == "" and #ev.parameters == 0 then + output:write('(' .. prefix) + if prefix == '' and #ev.parameters == 0 then output:write('void') end for j = 1, #ev.parameters do @@ -23,7 +23,7 @@ local function write_signature(output, ev, prefix, notype) end local param = ev.parameters[j] if not notype then - output:write(param[1]..' ') + output:write(param[1] .. ' ') end output:write(param[2]) end @@ -35,26 +35,28 @@ local function write_arglist(output, ev) local param = ev.parameters[j] local kind = string.upper(param[1]) output:write(' ADD_C(args, ') - output:write(kind..'_OBJ('..param[2]..')') + output:write(kind .. '_OBJ(' .. param[2] .. ')') output:write(');\n') end end local function call_ui_event_method(output, ev) - output:write('void ui_client_event_'..ev.name..'(Array args)\n{\n') + output:write('void ui_client_event_' .. ev.name .. '(Array args)\n{\n') local hlattrs_args_count = 0 if #ev.parameters > 0 then - output:write(' if (args.size < '..(#ev.parameters)) + output:write(' if (args.size < ' .. #ev.parameters) for j = 1, #ev.parameters do local kind = ev.parameters[j][1] - if kind ~= "Object" then - if kind == 'HlAttrs' then kind = 'Dictionary' end - output:write('\n || args.items['..(j-1)..'].type != kObjectType'..kind..'') + if kind ~= 'Object' then + if kind == 'HlAttrs' then + kind = 'Dictionary' + end + output:write('\n || args.items[' .. (j - 1) .. '].type != kObjectType' .. kind .. '') end end output:write(') {\n') - output:write(' ELOG("Error handling ui event \''..ev.name..'\'");\n') + output:write(' ELOG("Error handling ui event \'' .. ev.name .. '\'");\n') output:write(' return;\n') output:write(' }\n') end @@ -62,23 +64,29 @@ local function call_ui_event_method(output, ev) for j = 1, #ev.parameters do local param = ev.parameters[j] local kind = param[1] - output:write(' '..kind..' arg_'..j..' = ') + output:write(' ' .. kind .. ' arg_' .. j .. ' = ') if kind == 'HlAttrs' then -- The first HlAttrs argument is rgb_attrs and second is cterm_attrs - output:write('ui_client_dict2hlattrs(args.items['..(j-1)..'].data.dictionary, '..(hlattrs_args_count == 0 and 'true' or 'false')..');\n') + output:write( + 'ui_client_dict2hlattrs(args.items[' + .. (j - 1) + .. '].data.dictionary, ' + .. (hlattrs_args_count == 0 and 'true' or 'false') + .. ');\n' + ) hlattrs_args_count = hlattrs_args_count + 1 elseif kind == 'Object' then - output:write('args.items['..(j-1)..'];\n') + output:write('args.items[' .. (j - 1) .. '];\n') elseif kind == 'Window' then - output:write('(Window)args.items['..(j-1)..'].data.integer;\n') + output:write('(Window)args.items[' .. (j - 1) .. '].data.integer;\n') else - output:write('args.items['..(j-1)..'].data.'..string.lower(kind)..';\n') + output:write('args.items[' .. (j - 1) .. '].data.' .. string.lower(kind) .. ';\n') end end - output:write(' tui_'..ev.name..'(tui') + output:write(' tui_' .. ev.name .. '(tui') for j = 1, #ev.parameters do - output:write(', arg_'..j) + output:write(', arg_' .. j) end output:write(');\n') @@ -90,78 +98,81 @@ for i = 1, #events do assert(ev.return_type == 'void') if ev.since == nil and not ev.noexport then - print("Ui event "..ev.name.." lacks since field.\n") + print('Ui event ' .. ev.name .. ' lacks since field.\n') os.exit(1) end ev.since = tonumber(ev.since) if not ev.remote_only then - if not ev.remote_impl and not ev.noexport then - remote_output:write('void remote_ui_'..ev.name) + remote_output:write('void remote_ui_' .. ev.name) write_signature(remote_output, ev, 'UI *ui') remote_output:write('\n{\n') remote_output:write(' UIData *data = ui->data;\n') remote_output:write(' Array args = data->call_buf;\n') write_arglist(remote_output, ev) - remote_output:write(' push_call(ui, "'..ev.name..'", args);\n') + remote_output:write(' push_call(ui, "' .. ev.name .. '", args);\n') remote_output:write('}\n\n') end end if not (ev.remote_only and ev.remote_impl) then - call_output:write('void ui_call_'..ev.name) + call_output:write('void ui_call_' .. ev.name) write_signature(call_output, ev, '') call_output:write('\n{\n') if ev.remote_only then call_output:write(' Array args = call_buf;\n') write_arglist(call_output, ev) - call_output:write(' ui_call_event("'..ev.name..'", args);\n') + call_output:write(' ui_call_event("' .. ev.name .. '", args);\n') elseif ev.compositor_impl then - call_output:write(' ui_comp_'..ev.name) + call_output:write(' ui_comp_' .. ev.name) write_signature(call_output, ev, '', true) - call_output:write(";\n") + call_output:write(';\n') call_output:write(' UI_CALL') - write_signature(call_output, ev, '!ui->composed, '..ev.name..', ui', true) - call_output:write(";\n") + write_signature(call_output, ev, '!ui->composed, ' .. ev.name .. ', ui', true) + call_output:write(';\n') else call_output:write(' UI_CALL') - write_signature(call_output, ev, 'true, '..ev.name..', ui', true) - call_output:write(";\n") + write_signature(call_output, ev, 'true, ' .. ev.name .. ', ui', true) + call_output:write(';\n') end - call_output:write("}\n\n") + call_output:write('}\n\n') end if ev.compositor_impl then - call_output:write('void ui_composed_call_'..ev.name) + call_output:write('void ui_composed_call_' .. ev.name) write_signature(call_output, ev, '') call_output:write('\n{\n') call_output:write(' UI_CALL') - write_signature(call_output, ev, 'ui->composed, '..ev.name..', ui', true) - call_output:write(";\n") - call_output:write("}\n\n") + write_signature(call_output, ev, 'ui->composed, ' .. ev.name .. ', ui', true) + call_output:write(';\n') + call_output:write('}\n\n') end - if (not ev.remote_only) and (not ev.noexport) and (not ev.client_impl) and (not ev.client_ignore) then + if (not ev.remote_only) and not ev.noexport and not ev.client_impl and not ev.client_ignore then call_ui_event_method(client_output, ev) end end local client_events = {} -for _,ev in ipairs(events) do - if (not ev.noexport) and ((not ev.remote_only) or ev.client_impl) and (not ev.client_ignore) then +for _, ev in ipairs(events) do + if (not ev.noexport) and ((not ev.remote_only) or ev.client_impl) and not ev.client_ignore then client_events[ev.name] = ev end end -local hashorder, hashfun = hashy.hashy_hash("ui_client_handler", vim.tbl_keys(client_events), function (idx) - return "event_handlers["..idx.."].name" -end) +local hashorder, hashfun = hashy.hashy_hash( + 'ui_client_handler', + vim.tbl_keys(client_events), + function(idx) + return 'event_handlers[' .. idx .. '].name' + end +) -client_output:write("static const UIClientHandler event_handlers[] = {\n") +client_output:write('static const UIClientHandler event_handlers[] = {\n') for _, name in ipairs(hashorder) do - client_output:write(' { .name = "'..name..'", .fn = ui_client_event_'..name..'},\n') + client_output:write(' { .name = "' .. name .. '", .fn = ui_client_event_' .. name .. '},\n') end client_output:write('\n};\n\n') @@ -172,25 +183,24 @@ remote_output:close() client_output:close() -- don't expose internal attributes like "impl_name" in public metadata -local exported_attributes = {'name', 'parameters', - 'since', 'deprecated_since'} +local exported_attributes = { 'name', 'parameters', 'since', 'deprecated_since' } local exported_events = {} -for _,ev in ipairs(events) do +for _, ev in ipairs(events) do local ev_exported = {} - for _,attr in ipairs(exported_attributes) do + for _, attr in ipairs(exported_attributes) do ev_exported[attr] = ev[attr] end - for _,p in ipairs(ev_exported.parameters) do + for _, p in ipairs(ev_exported.parameters) do if p[1] == 'HlAttrs' then p[1] = 'Dictionary' end end if not ev.noexport then - exported_events[#exported_events+1] = ev_exported + exported_events[#exported_events + 1] = ev_exported end end local packed = mpack.encode(exported_events) -local dump_bin_array = require("generators.dump_bin_array") +local dump_bin_array = require('generators.dump_bin_array') dump_bin_array(metadata_output, 'ui_events_metadata', packed) metadata_output:close() diff --git a/src/nvim/generators/gen_char_blob.lua b/src/nvim/generators/gen_char_blob.lua index 11f6cbcc13..c40e0d6e82 100644 --- a/src/nvim/generators/gen_char_blob.lua +++ b/src/nvim/generators/gen_char_blob.lua @@ -1,6 +1,6 @@ if arg[1] == '--help' then print('Usage:') - print(' '..arg[0]..' [-c] target source varname [source varname]...') + print(' ' .. arg[0] .. ' [-c] target source varname [source varname]...') print('') print('Generates C file with big uint8_t blob.') print('Blob will be stored in a static const array named varname.') @@ -12,7 +12,7 @@ end local options = {} while true do - local opt = string.match(arg[1], "^-(%w)") + local opt = string.match(arg[1], '^-(%w)') if not opt then break end @@ -36,33 +36,33 @@ for argi = 2, #arg, 2 do local source_file = arg[argi] local modname = arg[argi + 1] if modnames[modname] then - error(string.format("modname %q is already specified for file %q", modname, modnames[modname])) + error(string.format('modname %q is already specified for file %q', modname, modnames[modname])) end modnames[modname] = source_file - local varname = string.gsub(modname,'%.','_dot_').."_module" + local varname = string.gsub(modname, '%.', '_dot_') .. '_module' target:write(('static const uint8_t %s[] = {\n'):format(varname)) local output if options.c then - local luac = os.getenv("LUAC_PRG") - if luac and luac ~= "" then - output = io.popen(luac:format(source_file), "r"):read("*a") + local luac = os.getenv('LUAC_PRG') + if luac and luac ~= '' then + output = io.popen(luac:format(source_file), 'r'):read('*a') elseif warn_on_missing_compiler then - print("LUAC_PRG is missing, embedding raw source") + print('LUAC_PRG is missing, embedding raw source') warn_on_missing_compiler = false end end if not output then - local source = io.open(source_file, "r") - or error(string.format("source_file %q doesn't exist", source_file)) - output = source:read("*a") + local source = io.open(source_file, 'r') + or error(string.format("source_file %q doesn't exist", source_file)) + output = source:read('*a') source:close() end local num_bytes = 0 - local MAX_NUM_BYTES = 15 -- 78 / 5: maximum number of bytes on one line + local MAX_NUM_BYTES = 15 -- 78 / 5: maximum number of bytes on one line target:write(' ') local increase_num_bytes @@ -81,8 +81,11 @@ for argi = 2, #arg, 2 do end target:write(' 0};\n') - if modname ~= "_" then - table.insert(index_items, ' { "'..modname..'", '..varname..', sizeof '..varname..' },\n\n') + if modname ~= '_' then + table.insert( + index_items, + ' { "' .. modname .. '", ' .. varname .. ', sizeof ' .. varname .. ' },\n\n' + ) end end diff --git a/src/nvim/generators/gen_declarations.lua b/src/nvim/generators/gen_declarations.lua index fecca5191e..9fd2750f52 100644 --- a/src/nvim/generators/gen_declarations.lua +++ b/src/nvim/generators/gen_declarations.lua @@ -5,9 +5,9 @@ local preproc_fname = arg[4] local lpeg = vim.lpeg -local fold = function (func, ...) +local fold = function(func, ...) local result = nil - for _, v in ipairs({...}) do + for _, v in ipairs({ ... }) do if result == nil then result = v else @@ -17,144 +17,112 @@ local fold = function (func, ...) return result end -local folder = function (func) - return function (...) +local folder = function(func) + return function(...) return fold(func, ...) end end local lit = lpeg.P local set = function(...) - return lpeg.S(fold(function (a, b) return a .. b end, ...)) + return lpeg.S(fold(function(a, b) + return a .. b + end, ...)) end local any_character = lpeg.P(1) -local rng = function(s, e) return lpeg.R(s .. e) end -local concat = folder(function (a, b) return a * b end) -local branch = folder(function (a, b) return a + b end) -local one_or_more = function(v) return v ^ 1 end -local two_or_more = function(v) return v ^ 2 end -local any_amount = function(v) return v ^ 0 end -local one_or_no = function(v) return v ^ -1 end +local rng = function(s, e) + return lpeg.R(s .. e) +end +local concat = folder(function(a, b) + return a * b +end) +local branch = folder(function(a, b) + return a + b +end) +local one_or_more = function(v) + return v ^ 1 +end +local two_or_more = function(v) + return v ^ 2 +end +local any_amount = function(v) + return v ^ 0 +end +local one_or_no = function(v) + return v ^ -1 +end local look_behind = lpeg.B -local look_ahead = function(v) return #v end -local neg_look_ahead = function(v) return -v end -local neg_look_behind = function(v) return -look_behind(v) end +local look_ahead = function(v) + return #v +end +local neg_look_ahead = function(v) + return -v +end +local neg_look_behind = function(v) + return -look_behind(v) +end -local w = branch( - rng('a', 'z'), - rng('A', 'Z'), - lit('_') -) -local aw = branch( - w, - rng('0', '9') -) +local w = branch(rng('a', 'z'), rng('A', 'Z'), lit('_')) +local aw = branch(w, rng('0', '9')) local s = set(' ', '\n', '\t') local raw_word = concat(w, any_amount(aw)) -local right_word = concat( - raw_word, - neg_look_ahead(aw) -) +local right_word = concat(raw_word, neg_look_ahead(aw)) local word = branch( concat( branch(lit('ArrayOf('), lit('DictionaryOf('), lit('Dict(')), -- typed container macro one_or_more(any_character - lit(')')), lit(')') ), - concat( - neg_look_behind(aw), - right_word - ) -) -local inline_comment = concat( - lit('/*'), - any_amount(concat( - neg_look_ahead(lit('*/')), - any_character - )), - lit('*/') + concat(neg_look_behind(aw), right_word) ) +local inline_comment = + concat(lit('/*'), any_amount(concat(neg_look_ahead(lit('*/')), any_character)), lit('*/')) local spaces = any_amount(branch( s, -- Comments are really handled by preprocessor, so the following is not needed inline_comment, - concat( - lit('//'), - any_amount(concat( - neg_look_ahead(lit('\n')), - any_character - )), - lit('\n') - ), + concat(lit('//'), any_amount(concat(neg_look_ahead(lit('\n')), any_character)), lit('\n')), -- Linemarker inserted by preprocessor - concat( - lit('# '), - any_amount(concat( - neg_look_ahead(lit('\n')), - any_character - )), - lit('\n') - ) + concat(lit('# '), any_amount(concat(neg_look_ahead(lit('\n')), any_character)), lit('\n')) )) -local typ_part = concat( - word, - any_amount(concat( - spaces, - lit('*') - )), - spaces -) +local typ_part = concat(word, any_amount(concat(spaces, lit('*'))), spaces) local typ_id = two_or_more(typ_part) -local arg = typ_id -- argument name is swallowed by typ +local arg = typ_id -- argument name is swallowed by typ local pattern = concat( any_amount(branch(set(' ', '\t'), inline_comment)), - typ_id, -- return type with function name + typ_id, -- return type with function name spaces, lit('('), spaces, - one_or_no(branch( -- function arguments + one_or_no(branch( -- function arguments concat( - arg, -- first argument, does not require comma - any_amount(concat( -- following arguments, start with a comma + arg, -- first argument, does not require comma + any_amount(concat( -- following arguments, start with a comma spaces, lit(','), spaces, arg, - any_amount(concat( - lit('['), - spaces, - any_amount(aw), - spaces, - lit(']') - )) + any_amount(concat(lit('['), spaces, any_amount(aw), spaces, lit(']'))) )), - one_or_no(concat( - spaces, - lit(','), - spaces, - lit('...') - )) + one_or_no(concat(spaces, lit(','), spaces, lit('...'))) ), - lit('void') -- also accepts just void + lit('void') -- also accepts just void )), spaces, lit(')'), - any_amount(concat( -- optional attributes + any_amount(concat( -- optional attributes spaces, lit('FUNC_'), any_amount(aw), - one_or_no(concat( -- attribute argument + one_or_no(concat( -- attribute argument spaces, lit('('), - any_amount(concat( - neg_look_ahead(lit(')')), - any_character - )), + any_amount(concat(neg_look_ahead(lit(')')), any_character)), lit(')') )) )), - look_ahead(concat( -- definition must be followed by "{" + look_ahead(concat( -- definition must be followed by "{" spaces, lit('{') )) @@ -198,10 +166,9 @@ Additionally uses the following environment variables: end local preproc_f = io.open(preproc_fname) -local text = preproc_f:read("*all") +local text = preproc_f:read('*all') preproc_f:close() - local non_static = [[ #define DEFINE_FUNC_ATTRIBUTES #include "nvim/func_attr.h" @@ -289,8 +256,7 @@ while init ~= nil do declaration = declaration .. ';' if os.getenv('NVIM_GEN_DECLARATIONS_LINE_NUMBERS') == '1' then - declaration = declaration .. (' // %s/%s:%u'):format( - curdir, curfile, declline) + declaration = declaration .. (' // %s/%s:%u'):format(curdir, curfile, declline) end declaration = declaration .. '\n' if declaration:sub(1, 6) == 'static' then diff --git a/src/nvim/generators/gen_eval.lua b/src/nvim/generators/gen_eval.lua index 7b272c337e..1ce7f1af9d 100644 --- a/src/nvim/generators/gen_eval.lua +++ b/src/nvim/generators/gen_eval.lua @@ -8,7 +8,7 @@ local funcsfname = autodir .. '/funcs.generated.h' --Will generate funcs.generated.h with definition of functions static const array. -local hashy = require'generators.hashy' +local hashy = require 'generators.hashy' local hashpipe = assert(io.open(funcsfname, 'wb')) @@ -48,18 +48,18 @@ hashpipe:write([[ local funcs = require('eval').funcs for _, func in pairs(funcs) do if func.float_func then - func.func = "float_op_wrapper" - func.data = "{ .float_func = &"..func.float_func.." }" + func.func = 'float_op_wrapper' + func.data = '{ .float_func = &' .. func.float_func .. ' }' end end -local metadata = mpack.decode(io.open(metadata_file, 'rb'):read("*all")) -for _,fun in ipairs(metadata) do +local metadata = mpack.decode(io.open(metadata_file, 'rb'):read('*all')) +for _, fun in ipairs(metadata) do if fun.eval then funcs[fun.name] = { - args=#fun.parameters, - func='api_wrapper', - data='{ .api_handler = &method_handlers['..fun.handler_id..'] }' + args = #fun.parameters, + func = 'api_wrapper', + data = '{ .api_handler = &method_handlers[' .. fun.handler_id .. '] }', } end end @@ -74,28 +74,37 @@ local funcsdata = assert(io.open(funcs_file, 'w')) funcsdata:write(mpack.encode(func_names)) funcsdata:close() -local neworder, hashfun = hashy.hashy_hash("find_internal_func", func_names, function (idx) - return "functions["..idx.."].name" +local neworder, hashfun = hashy.hashy_hash('find_internal_func', func_names, function(idx) + return 'functions[' .. idx .. '].name' end) -hashpipe:write("static const EvalFuncDef functions[] = {\n") +hashpipe:write('static const EvalFuncDef functions[] = {\n') for _, name in ipairs(neworder) do local def = funcs[name] local args = def.args or 0 if type(args) == 'number' then - args = {args, args} + args = { args, args } elseif #args == 1 then args[2] = 'MAX_FUNC_ARGS' end - local base = def.base or "BASE_NONE" + local base = def.base or 'BASE_NONE' local func = def.func or ('f_' .. name) - local data = def.data or "{ .null = NULL }" + local data = def.data or '{ .null = NULL }' local fast = def.fast and 'true' or 'false' - hashpipe:write((' { "%s", %s, %s, %s, %s, &%s, %s },\n') - :format(name, args[1], args[2], base, fast, func, data)) + hashpipe:write( + (' { "%s", %s, %s, %s, %s, &%s, %s },\n'):format( + name, + args[1], + args[2], + base, + fast, + func, + data + ) + ) end hashpipe:write(' { NULL, 0, 0, BASE_NONE, false, NULL, { .null = NULL } },\n') -hashpipe:write("};\n\n") +hashpipe:write('};\n\n') hashpipe:write(hashfun) hashpipe:close() diff --git a/src/nvim/generators/gen_events.lua b/src/nvim/generators/gen_events.lua index 4763a2f463..ee48e918e8 100644 --- a/src/nvim/generators/gen_events.lua +++ b/src/nvim/generators/gen_events.lua @@ -22,7 +22,7 @@ static const struct event_name { for i, event in ipairs(events) do enum_tgt:write(('\n EVENT_%s = %u,'):format(event:upper(), i - 1)) names_tgt:write(('\n {%u, "%s", EVENT_%s},'):format(#event, event, event:upper())) - if i == #events then -- Last item. + if i == #events then -- Last item. enum_tgt:write(('\n NUM_EVENTS = %u,'):format(i)) end end @@ -41,15 +41,15 @@ names_tgt:write('\n};\n') do names_tgt:write('\nstatic AutoCmdVec autocmds[NUM_EVENTS] = {\n ') local line_len = 1 - for _ = 1,((#events) - 1) do - line_len = line_len + #(' KV_INITIAL_VALUE,') + for _ = 1, (#events - 1) do + line_len = line_len + #' KV_INITIAL_VALUE,' if line_len > 80 then names_tgt:write('\n ') - line_len = 1 + #(' KV_INITIAL_VALUE,') + line_len = 1 + #' KV_INITIAL_VALUE,' end names_tgt:write(' KV_INITIAL_VALUE,') end - if line_len + #(' KV_INITIAL_VALUE') > 80 then + if line_len + #' KV_INITIAL_VALUE' > 80 then names_tgt:write('\n KV_INITIAL_VALUE') else names_tgt:write(' KV_INITIAL_VALUE') diff --git a/src/nvim/generators/gen_ex_cmds.lua b/src/nvim/generators/gen_ex_cmds.lua index ae8c952648..e8d1aac182 100644 --- a/src/nvim/generators/gen_ex_cmds.lua +++ b/src/nvim/generators/gen_ex_cmds.lua @@ -21,24 +21,32 @@ local a_to_z = byte_z - byte_a + 1 -- Table giving the index of the first command in cmdnames[] to lookup -- based on the first letter of a command. -local cmdidxs1_out = string.format([[ +local cmdidxs1_out = string.format( + [[ static const uint16_t cmdidxs1[%u] = { -]], a_to_z) +]], + a_to_z +) -- Table giving the index of the first command in cmdnames[] to lookup -- based on the first 2 letters of a command. -- Values in cmdidxs2[c1][c2] are relative to cmdidxs1[c1] so that they -- fit in a byte. -local cmdidxs2_out = string.format([[ +local cmdidxs2_out = string.format( + [[ static const uint8_t cmdidxs2[%u][%u] = { /* a b c d e f g h i j k l m n o p q r s t u v w x y z */ -]], a_to_z, a_to_z) +]], + a_to_z, + a_to_z +) enumfile:write([[ // IWYU pragma: private, include "nvim/ex_cmds_defs.h" typedef enum CMD_index { ]]) -defsfile:write(string.format([[ +defsfile:write(string.format( + [[ #include "nvim/arglist.h" #include "nvim/autocmd.h" #include "nvim/buffer.h" @@ -79,23 +87,34 @@ defsfile:write(string.format([[ static const int command_count = %u; static CommandDefinition cmdnames[%u] = { -]], #defs, #defs)) +]], + #defs, + #defs +)) local cmds, cmdidxs1, cmdidxs2 = {}, {}, {} for _, cmd in ipairs(defs) do if bit.band(cmd.flags, flags.RANGE) == flags.RANGE then - assert(cmd.addr_type ~= 'ADDR_NONE', - string.format('ex_cmds.lua:%s: Using RANGE with ADDR_NONE\n', cmd.command)) + assert( + cmd.addr_type ~= 'ADDR_NONE', + string.format('ex_cmds.lua:%s: Using RANGE with ADDR_NONE\n', cmd.command) + ) else - assert(cmd.addr_type == 'ADDR_NONE', - string.format('ex_cmds.lua:%s: Missing ADDR_NONE\n', cmd.command)) + assert( + cmd.addr_type == 'ADDR_NONE', + string.format('ex_cmds.lua:%s: Missing ADDR_NONE\n', cmd.command) + ) end if bit.band(cmd.flags, flags.DFLALL) == flags.DFLALL then - assert(cmd.addr_type ~= 'ADDR_OTHER' and cmd.addr_type ~= 'ADDR_NONE', - string.format('ex_cmds.lua:%s: Missing misplaced DFLALL\n', cmd.command)) + assert( + cmd.addr_type ~= 'ADDR_OTHER' and cmd.addr_type ~= 'ADDR_NONE', + string.format('ex_cmds.lua:%s: Missing misplaced DFLALL\n', cmd.command) + ) end if bit.band(cmd.flags, flags.PREVIEW) == flags.PREVIEW then - assert(cmd.preview_func ~= nil, - string.format('ex_cmds.lua:%s: Missing preview_func\n', cmd.command)) + assert( + cmd.preview_func ~= nil, + string.format('ex_cmds.lua:%s: Missing preview_func\n', cmd.command) + ) end local enumname = cmd.enum or ('CMD_' .. cmd.command) local byte_cmd = cmd.command:sub(1, 1):byte() @@ -104,12 +123,13 @@ for _, cmd in ipairs(defs) do end local preview_func if cmd.preview_func then - preview_func = string.format("&%s", cmd.preview_func) + preview_func = string.format('&%s', cmd.preview_func) else - preview_func = "NULL" + preview_func = 'NULL' end enumfile:write(' ' .. enumname .. ',\n') - defsfile:write(string.format([[ + defsfile:write(string.format( + [[ [%s] = { .cmd_name = "%s", .cmd_func = (ex_func_T)&%s, @@ -117,7 +137,14 @@ for _, cmd in ipairs(defs) do .cmd_argt = %uL, .cmd_addr_type = %s }, -]], enumname, cmd.command, cmd.func, preview_func, cmd.flags, cmd.addr_type)) +]], + enumname, + cmd.command, + cmd.func, + preview_func, + cmd.flags, + cmd.addr_type + )) end for i = #cmds, 1, -1 do local cmd = cmds[i] @@ -141,10 +168,12 @@ for i = byte_a, byte_z do cmdidxs2_out = cmdidxs2_out .. ' /* ' .. c1 .. ' */ {' for j = byte_a, byte_z do local c2 = string.char(j) - cmdidxs2_out = cmdidxs2_out .. - ((cmdidxs2[c1] and cmdidxs2[c1][c2]) - and string.format('%3d', cmdidxs2[c1][c2] - cmdidxs1[c1]) - or ' 0') .. ',' + cmdidxs2_out = cmdidxs2_out + .. ((cmdidxs2[c1] and cmdidxs2[c1][c2]) and string.format( + '%3d', + cmdidxs2[c1][c2] - cmdidxs1[c1] + ) or ' 0') + .. ',' end cmdidxs2_out = cmdidxs2_out .. ' },\n' end @@ -154,8 +183,12 @@ enumfile:write([[ CMD_USER_BUF = -2 } cmdidx_T; ]]) -defsfile:write(string.format([[ +defsfile:write(string.format( + [[ }; %s}; %s}; -]], cmdidxs1_out, cmdidxs2_out)) +]], + cmdidxs1_out, + cmdidxs2_out +)) diff --git a/src/nvim/generators/gen_options.lua b/src/nvim/generators/gen_options.lua index 26ade2745d..3a355634f3 100644 --- a/src/nvim/generators/gen_options.lua +++ b/src/nvim/generators/gen_options.lua @@ -15,37 +15,37 @@ local options = require('options') local cstr = options.cstr -local type_flags={ - bool='P_BOOL', - number='P_NUM', - string='P_STRING', +local type_flags = { + bool = 'P_BOOL', + number = 'P_NUM', + string = 'P_STRING', } -local redraw_flags={ - ui_option='P_UI_OPTION', - tabline='P_RTABL', - statuslines='P_RSTAT', - current_window='P_RWIN', - current_window_only='P_RWINONLY', - current_buffer='P_RBUF', - all_windows='P_RALL', - curswant='P_CURSWANT', +local redraw_flags = { + ui_option = 'P_UI_OPTION', + tabline = 'P_RTABL', + statuslines = 'P_RSTAT', + current_window = 'P_RWIN', + current_window_only = 'P_RWINONLY', + current_buffer = 'P_RBUF', + all_windows = 'P_RALL', + curswant = 'P_CURSWANT', } -local list_flags={ - comma='P_COMMA', - onecomma='P_ONECOMMA', - commacolon='P_COMMA|P_COLON', - onecommacolon='P_ONECOMMA|P_COLON', - flags='P_FLAGLIST', - flagscomma='P_COMMA|P_FLAGLIST', +local list_flags = { + comma = 'P_COMMA', + onecomma = 'P_ONECOMMA', + commacolon = 'P_COMMA|P_COLON', + onecommacolon = 'P_ONECOMMA|P_COLON', + flags = 'P_FLAGLIST', + flagscomma = 'P_COMMA|P_FLAGLIST', } --- @param o vim.option_meta --- @return string local function get_flags(o) --- @type string[] - local ret = {type_flags[o.type]} + local ret = { type_flags[o.type] } local add_flag = function(f) ret[1] = ret[1] .. '|' .. f end @@ -64,19 +64,19 @@ local function get_flags(o) end end for _, flag_desc in ipairs({ - {'alloced'}, - {'nodefault'}, - {'no_mkrc'}, - {'secure'}, - {'gettext'}, - {'noglob'}, - {'normal_fname_chars', 'P_NFNAME'}, - {'normal_dname_chars', 'P_NDNAME'}, - {'pri_mkrc'}, - {'deny_in_modelines', 'P_NO_ML'}, - {'deny_duplicates', 'P_NODUP'}, - {'modelineexpr', 'P_MLE'}, - {'func'} + { 'alloced' }, + { 'nodefault' }, + { 'no_mkrc' }, + { 'secure' }, + { 'gettext' }, + { 'noglob' }, + { 'normal_fname_chars', 'P_NFNAME' }, + { 'normal_dname_chars', 'P_NDNAME' }, + { 'pri_mkrc' }, + { 'deny_in_modelines', 'P_NO_ML' }, + { 'deny_duplicates', 'P_NODUP' }, + { 'modelineexpr', 'P_MLE' }, + { 'func' }, }) do local key_name = flag_desc[1] local def_name = flag_desc[2] or ('P_' .. key_name:upper()) @@ -108,20 +108,28 @@ local function get_cond(c, base_string) end local value_dumpers = { - ['function']=function(v) return v() end, - string=cstr, - boolean=function(v) return v and 'true' or 'false' end, - number=function(v) return ('%iL'):format(v) end, - ['nil']=function(_) return '0' end, + ['function'] = function(v) + return v() + end, + string = cstr, + boolean = function(v) + return v and 'true' or 'false' + end, + number = function(v) + return ('%iL'):format(v) + end, + ['nil'] = function(_) + return '0' + end, } local get_value = function(v) return '(void *) ' .. value_dumpers[type(v)](v) end -local get_defaults = function(d,n) +local get_defaults = function(d, n) if d == nil then - error("option '"..n.."' should have a default value") + error("option '" .. n .. "' should have a default value") end return get_value(d) end @@ -153,20 +161,21 @@ local function dump_option(i, o) if #o.scope == 1 and o.scope[1] == 'global' then w(' .indir=PV_NONE') else - assert (#o.scope == 1 or #o.scope == 2) - assert (#o.scope == 1 or o.scope[1] == 'global') + assert(#o.scope == 1 or #o.scope == 2) + assert(#o.scope == 1 or o.scope[1] == 'global') local min_scope = o.scope[#o.scope] - local varname = o.pv_name or o.varname or ( - 'p_' .. (o.abbreviation or o.full_name)) + local varname = o.pv_name or o.varname or ('p_' .. (o.abbreviation or o.full_name)) local pv_name = ( - 'OPT_' .. min_scope:sub(1, 3):upper() .. '(' .. ( - min_scope:sub(1, 1):upper() .. 'V_' .. varname:sub(3):upper() - ) .. ')' + 'OPT_' + .. min_scope:sub(1, 3):upper() + .. '(' + .. (min_scope:sub(1, 1):upper() .. 'V_' .. varname:sub(3):upper()) + .. ')' ) if #o.scope == 2 then pv_name = 'OPT_BOTH(' .. pv_name .. ')' end - table.insert(defines, { 'PV_' .. varname:sub(3):upper() , pv_name}) + table.insert(defines, { 'PV_' .. varname:sub(3):upper(), pv_name }) w(' .indir=' .. pv_name) end if o.cb then diff --git a/src/nvim/generators/gen_unicode_tables.lua b/src/nvim/generators/gen_unicode_tables.lua index 9ad99c8029..6cedb5db50 100644 --- a/src/nvim/generators/gen_unicode_tables.lua +++ b/src/nvim/generators/gen_unicode_tables.lua @@ -60,12 +60,10 @@ local fp_lines_to_lists = function(fp, n, has_comments) if not line then break end - if (not has_comments - or (line:sub(1, 1) ~= '#' and not line:match('^%s*$'))) then + if not has_comments or (line:sub(1, 1) ~= '#' and not line:match('^%s*$')) then local l = split_on_semicolons(line) if #l ~= n then - io.stderr:write(('Found %s items in line %u, expected %u\n'):format( - #l, i, n)) + io.stderr:write(('Found %s items in line %u, expected %u\n'):format(#l, i, n)) io.stderr:write('Line: ' .. line .. '\n') return nil end @@ -93,15 +91,13 @@ end local make_range = function(start, end_, step, add) if step and add then - return (' {0x%x, 0x%x, %d, %d},\n'):format( - start, end_, step == 0 and -1 or step, add) + return (' {0x%x, 0x%x, %d, %d},\n'):format(start, end_, step == 0 and -1 or step, add) else return (' {0x%04x, 0x%04x},\n'):format(start, end_) end end -local build_convert_table = function(ut_fp, props, cond_func, nl_index, - table_name) +local build_convert_table = function(ut_fp, props, cond_func, nl_index, table_name) ut_fp:write('static const convertStruct ' .. table_name .. '[] = {\n') local start = -1 local end_ = -1 @@ -137,8 +133,7 @@ local build_case_table = function(ut_fp, dataprops, table_name, index) local cond_func = function(p) return p[index] ~= '' end - return build_convert_table(ut_fp, dataprops, cond_func, index, - 'to' .. table_name) + return build_convert_table(ut_fp, dataprops, cond_func, index, 'to' .. table_name) end local build_fold_table = function(ut_fp, foldprops) @@ -154,7 +149,7 @@ local build_combining_table = function(ut_fp, dataprops) local end_ = -1 for _, p in ipairs(dataprops) do -- The 'Mc' property was removed, it does take up space. - if (({Mn=true, Me=true})[p[3]]) then + if ({ Mn = true, Me = true })[p[3]] then local n = tonumber(p[1], 16) if start >= 0 and end_ + 1 == n then -- Continue with the same range. @@ -175,8 +170,7 @@ local build_combining_table = function(ut_fp, dataprops) ut_fp:write('};\n') end -local build_width_table = function(ut_fp, dataprops, widthprops, widths, - table_name) +local build_width_table = function(ut_fp, dataprops, widthprops, widths, table_name) ut_fp:write('static const struct interval ' .. table_name .. '[] = {\n') local start = -1 local end_ = -1 @@ -208,13 +202,13 @@ local build_width_table = function(ut_fp, dataprops, widthprops, widths, -- Only use the char when it’s not a composing char. -- But use all chars from a range. local dp = dataprops[dataidx] - if (n_last > n) or (not (({Mn=true, Mc=true, Me=true})[dp[3]])) then + if (n_last > n) or not ({ Mn = true, Mc = true, Me = true })[dp[3]] then if start >= 0 and end_ + 1 == n then -- luacheck: ignore 542 -- Continue with the same range. else if start >= 0 then ut_fp:write(make_range(start, end_)) - table.insert(ret, {start, end_}) + table.insert(ret, { start, end_ }) end start = n end @@ -224,7 +218,7 @@ local build_width_table = function(ut_fp, dataprops, widthprops, widths, end if start >= 0 then ut_fp:write(make_range(start, end_)) - table.insert(ret, {start, end_}) + table.insert(ret, { start, end_ }) end ut_fp:write('};\n') return ret @@ -316,10 +310,9 @@ local eaw_fp = io.open(eastasianwidth_fname, 'r') local widthprops = parse_width_props(eaw_fp) eaw_fp:close() -local doublewidth = build_width_table(ut_fp, dataprops, widthprops, - {W=true, F=true}, 'doublewidth') -local ambiwidth = build_width_table(ut_fp, dataprops, widthprops, - {A=true}, 'ambiguous') +local doublewidth = + build_width_table(ut_fp, dataprops, widthprops, { W = true, F = true }, 'doublewidth') +local ambiwidth = build_width_table(ut_fp, dataprops, widthprops, { A = true }, 'ambiguous') local emoji_fp = io.open(emoji_fname, 'r') local emojiprops = parse_emoji_props(emoji_fp) diff --git a/src/nvim/generators/gen_vimvim.lua b/src/nvim/generators/gen_vimvim.lua index 29355d3cda..4d1c82a322 100644 --- a/src/nvim/generators/gen_vimvim.lua +++ b/src/nvim/generators/gen_vimvim.lua @@ -41,12 +41,14 @@ end -- Exclude these from the vimCommand keyword list, they are handled specially -- in syntax/vim.vim (vimAugroupKey, vimAutoCmd, vimGlobal, vimSubst). #9327 local function is_special_cased_cmd(cmd) - return (cmd == 'augroup' - or cmd == 'autocmd' - or cmd == 'doautocmd' - or cmd == 'doautoall' - or cmd == 'global' - or cmd == 'substitute') + return ( + cmd == 'augroup' + or cmd == 'autocmd' + or cmd == 'doautocmd' + or cmd == 'doautoall' + or cmd == 'global' + or cmd == 'substitute' + ) end local vimcmd_start = 'syn keyword vimCommand contained ' @@ -133,7 +135,7 @@ end w('\n\nsyn case match') local vimfun_start = 'syn keyword vimFuncName contained ' w('\n\n' .. vimfun_start) -local funcs = mpack.decode(io.open(funcs_file, 'rb'):read("*all")) +local funcs = mpack.decode(io.open(funcs_file, 'rb'):read('*all')) for _, name in ipairs(funcs) do if name then if lld.line_length > 850 then diff --git a/src/nvim/generators/hashy.lua b/src/nvim/generators/hashy.lua index b10bafb9f9..711e695742 100644 --- a/src/nvim/generators/hashy.lua +++ b/src/nvim/generators/hashy.lua @@ -3,7 +3,6 @@ local M = {} _G.d = M - local function setdefault(table, key) local val = table[key] if val == nil then @@ -16,28 +15,30 @@ end function M.build_pos_hash(strings) local len_buckets = {} local maxlen = 0 - for _,s in ipairs(strings) do - table.insert(setdefault(len_buckets, #s),s) - if #s > maxlen then maxlen = #s end + for _, s in ipairs(strings) do + table.insert(setdefault(len_buckets, #s), s) + if #s > maxlen then + maxlen = #s + end end local len_pos_buckets = {} local worst_buck_size = 0 - for len = 1,maxlen do + for len = 1, maxlen do local strs = len_buckets[len] if strs then -- the best position so far generates `best_bucket` -- with `minsize` worst case collisions - local bestpos, minsize, best_bucket = nil, #strs*2, nil - for pos = 1,len do + local bestpos, minsize, best_bucket = nil, #strs * 2, nil + for pos = 1, len do local try_bucket = {} - for _,str in ipairs(strs) do + for _, str in ipairs(strs) do local poschar = string.sub(str, pos, pos) table.insert(setdefault(try_bucket, poschar), str) end local maxsize = 1 - for _,pos_strs in pairs(try_bucket) do + for _, pos_strs in pairs(try_bucket) do maxsize = math.max(maxsize, #pos_strs) end if maxsize < minsize then @@ -46,7 +47,7 @@ function M.build_pos_hash(strings) best_bucket = try_bucket end end - len_pos_buckets[len] = {bestpos, best_bucket} + len_pos_buckets[len] = { bestpos, best_bucket } worst_buck_size = math.max(worst_buck_size, minsize) end end @@ -55,73 +56,79 @@ end function M.switcher(put, tab, maxlen, worst_buck_size) local neworder = {} - put " switch (len) {\n" + put ' switch (len) {\n' local bucky = worst_buck_size > 1 - for len = 1,maxlen do + for len = 1, maxlen do local vals = tab[len] if vals then - put(" case "..len..": ") + put(' case ' .. len .. ': ') local pos, posbuck = unpack(vals) local keys = vim.tbl_keys(posbuck) if #keys > 1 then table.sort(keys) - put("switch (str["..(pos-1).."]) {\n") - for _,c in ipairs(keys) do + put('switch (str[' .. (pos - 1) .. ']) {\n') + for _, c in ipairs(keys) do local buck = posbuck[c] local startidx = #neworder vim.list_extend(neworder, buck) local endidx = #neworder - put(" case '"..c.."': ") - put("low = "..startidx.."; ") - if bucky then put("high = "..endidx.."; ") end - put "break;\n" + put(" case '" .. c .. "': ") + put('low = ' .. startidx .. '; ') + if bucky then + put('high = ' .. endidx .. '; ') + end + put 'break;\n' end - put " default: break;\n" - put " }\n " + put ' default: break;\n' + put ' }\n ' else - local startidx = #neworder - table.insert(neworder, posbuck[keys[1]][1]) - local endidx = #neworder - put("low = "..startidx.."; ") - if bucky then put("high = "..endidx.."; ") end + local startidx = #neworder + table.insert(neworder, posbuck[keys[1]][1]) + local endidx = #neworder + put('low = ' .. startidx .. '; ') + if bucky then + put('high = ' .. endidx .. '; ') + end end - put "break;\n" + put 'break;\n' end end - put " default: break;\n" - put " }\n" + put ' default: break;\n' + put ' }\n' return neworder end function M.hashy_hash(name, strings, access) local stats = {} - local put = function(str) table.insert(stats, str) end + local put = function(str) + table.insert(stats, str) + end local len_pos_buckets, maxlen, worst_buck_size = M.build_pos_hash(strings) - put("int "..name.."_hash(const char *str, size_t len)\n{\n") + put('int ' .. name .. '_hash(const char *str, size_t len)\n{\n') if worst_buck_size > 1 then - put(" int low = 0, high = 0;\n") + put(' int low = 0, high = 0;\n') else - put(" int low = -1;\n") + put(' int low = -1;\n') end local neworder = M.switcher(put, len_pos_buckets, maxlen, worst_buck_size) if worst_buck_size > 1 then - put ([[ + put([[ for (int i = low; i < high; i++) { - if (!memcmp(str, ]]..access("i")..[[, len)) { + if (!memcmp(str, ]] .. access('i') .. [[, len)) { return i; } } return -1; ]]) else - put ([[ - if (low < 0 || memcmp(str, ]]..access("low")..[[, len)) { + put([[ + if (low < 0 || memcmp(str, ]] .. access('low') .. [[, len)) { return -1; } return low; ]]) end - put "}\n\n" + put '}\n\n' return neworder, table.concat(stats) end diff --git a/src/nvim/generators/preload.lua b/src/nvim/generators/preload.lua index 4b7fde2c39..721d2880b8 100644 --- a/src/nvim/generators/preload.lua +++ b/src/nvim/generators/preload.lua @@ -1,7 +1,7 @@ local srcdir = table.remove(arg, 1) local nlualib = table.remove(arg, 1) -package.path = srcdir .. '/src/nvim/?.lua;' ..srcdir .. '/runtime/lua/?.lua;' .. package.path -_G.vim = require'vim.shared' +package.path = srcdir .. '/src/nvim/?.lua;' .. srcdir .. '/runtime/lua/?.lua;' .. package.path +_G.vim = require 'vim.shared' _G.vim.inspect = require 'vim.inspect' package.cpath = package.cpath .. ';' .. nlualib require 'nlua0' diff --git a/src/nvim/highlight_group.c b/src/nvim/highlight_group.c index 3953a459bc..3bd4aa4f64 100644 --- a/src/nvim/highlight_group.c +++ b/src/nvim/highlight_group.c @@ -135,263 +135,321 @@ static const char e_missing_argument_str[] // they still work when the runtime files can't be found. static const char *highlight_init_both[] = { - "Conceal ctermbg=DarkGrey ctermfg=LightGrey guibg=DarkGrey guifg=LightGrey", - "Cursor guibg=fg guifg=bg", - "lCursor guibg=fg guifg=bg", - "DiffText cterm=bold ctermbg=Red gui=bold guibg=Red", - "ErrorMsg ctermbg=DarkRed ctermfg=White guibg=Red guifg=White", - "IncSearch cterm=reverse gui=reverse", - "ModeMsg cterm=bold gui=bold", - "NonText ctermfg=Blue gui=bold guifg=Blue", - "Normal cterm=NONE gui=NONE", - "PmenuSbar ctermbg=Grey guibg=Grey", - "StatusLine cterm=reverse,bold gui=reverse,bold", - "StatusLineNC cterm=reverse gui=reverse", - "TabLineFill cterm=reverse gui=reverse", - "TabLineSel cterm=bold gui=bold", - "TermCursor cterm=reverse gui=reverse", - "WinBar cterm=bold gui=bold", - "WildMenu ctermbg=Yellow ctermfg=Black guibg=Yellow guifg=Black", - "default link VertSplit Normal", - "default link WinSeparator VertSplit", - "default link WinBarNC WinBar", - "default link EndOfBuffer NonText", - "default link LineNrAbove LineNr", - "default link LineNrBelow LineNr", - "default link QuickFixLine Search", - "default link CursorLineSign SignColumn", + "Cursor guibg=fg guifg=bg", + "CursorLineNr gui=bold cterm=bold", + "QuickFixLine gui=bold cterm=bold", + "RedrawDebugNormal gui=reverse cterm=reverse", + "TabLineSel gui=bold cterm=bold", + "TermCursor gui=reverse cterm=reverse", + "Title gui=bold cterm=bold", + "Underlined gui=underline cterm=underline", + "lCursor guibg=fg guifg=bg", + + // UI + "default link CurSearch Search", + "default link CursorIM Cursor", "default link CursorLineFold FoldColumn", - "default link CurSearch Search", - "default link PmenuKind Pmenu", - "default link PmenuKindSel PmenuSel", - "default link PmenuExtra Pmenu", - "default link PmenuExtraSel PmenuSel", - "default link Substitute Search", - "default link Whitespace NonText", - "default link MsgSeparator StatusLine", - "default link NormalFloat Pmenu", - "default link FloatBorder WinSeparator", - "default link FloatTitle Title", - "default link FloatFooter Title", - "default FloatShadow blend=80 guibg=Black", - "default FloatShadowThrough blend=100 guibg=Black", - "RedrawDebugNormal cterm=reverse gui=reverse", - "RedrawDebugClear ctermbg=Yellow guibg=Yellow", - "RedrawDebugComposed ctermbg=Green guibg=Green", - "RedrawDebugRecompose ctermbg=Red guibg=Red", - "Error term=reverse cterm=NONE ctermfg=White ctermbg=Red gui=NONE guifg=White guibg=Red", - "Todo term=standout cterm=NONE ctermfg=Black ctermbg=Yellow gui=NONE guifg=Blue guibg=Yellow", - "default link String Constant", - "default link Character Constant", - "default link Number Constant", - "default link Boolean Constant", - "default link Float Number", - "default link Function Identifier", - "default link Conditional Statement", - "default link Repeat Statement", - "default link Label Statement", - "default link Operator Statement", - "default link Keyword Statement", - "default link Exception Statement", - "default link Include PreProc", - "default link Define PreProc", - "default link Macro PreProc", - "default link PreCondit PreProc", - "default link StorageClass Type", - "default link Structure Type", - "default link Typedef Type", - "default link Tag Special", - "default link SpecialChar Special", - "default link Delimiter Special", + "default link CursorLineSign SignColumn", + "default link EndOfBuffer NonText", + "default link FloatBorder NormalFloat", + "default link FloatFooter Title", + "default link FloatTitle Title", + "default link FoldColumn SignColumn", + "default link IncSearch Search", + "default link LineNrAbove LineNr", + "default link LineNrBelow LineNr", + "default link MsgSeparator StatusLine", + "default link MsgArea NONE", + "default link NormalNC NONE", + "default link PmenuExtra Pmenu", + "default link PmenuExtraSel PmenuSel", + "default link PmenuKind Pmenu", + "default link PmenuKindSel PmenuSel", + "default link PmenuSbar Pmenu", + "default link Substitute Search", + "default link TabLineFill TabLine", + "default link TermCursorNC NONE", + "default link VertSplit WinSeparator", + "default link VisualNOS Visual", + "default link Whitespace NonText", + "default link WildMenu PmenuSel", + "default link WinBar StatusLine", + "default link WinBarNC StatusLineNC", + "default link WinSeparator Normal", + + // Syntax + "default link Character Constant", + "default link Number Constant", + "default link Boolean Constant", + "default link Float Number", + "default link Conditional Statement", + "default link Repeat Statement", + "default link Label Statement", + "default link Keyword Statement", + "default link Exception Statement", + "default link Include PreProc", + "default link Define PreProc", + "default link Macro PreProc", + "default link PreCondit PreProc", + "default link StorageClass Type", + "default link Structure Type", + "default link Typedef Type", + "default link Tag Special", + "default link SpecialChar Special", "default link SpecialComment Special", - "default link Debug Special", - "default DiagnosticError ctermfg=1 guifg=Red", - "default DiagnosticWarn ctermfg=3 guifg=Orange", - "default DiagnosticInfo ctermfg=4 guifg=LightBlue", - "default DiagnosticHint ctermfg=7 guifg=LightGrey", - "default DiagnosticOk ctermfg=10 guifg=LightGreen", - "default DiagnosticUnderlineError cterm=underline gui=underline guisp=Red", - "default DiagnosticUnderlineWarn cterm=underline gui=underline guisp=Orange", - "default DiagnosticUnderlineInfo cterm=underline gui=underline guisp=LightBlue", - "default DiagnosticUnderlineHint cterm=underline gui=underline guisp=LightGrey", - "default DiagnosticUnderlineOk cterm=underline gui=underline guisp=LightGreen", - "default link DiagnosticVirtualTextError DiagnosticError", - "default link DiagnosticVirtualTextWarn DiagnosticWarn", - "default link DiagnosticVirtualTextInfo DiagnosticInfo", - "default link DiagnosticVirtualTextHint DiagnosticHint", - "default link DiagnosticVirtualTextOk DiagnosticOk", - "default link DiagnosticFloatingError DiagnosticError", - "default link DiagnosticFloatingWarn DiagnosticWarn", - "default link DiagnosticFloatingInfo DiagnosticInfo", - "default link DiagnosticFloatingHint DiagnosticHint", - "default link DiagnosticFloatingOk DiagnosticOk", - "default link DiagnosticSignError DiagnosticError", - "default link DiagnosticSignWarn DiagnosticWarn", - "default link DiagnosticSignInfo DiagnosticInfo", - "default link DiagnosticSignHint DiagnosticHint", - "default link DiagnosticSignOk DiagnosticOk", - "default DiagnosticDeprecated cterm=strikethrough gui=strikethrough guisp=Red", - "default link DiagnosticUnnecessary Comment", - "default link LspInlayHint NonText", + "default link Debug Special", + "default link Ignore Normal", + "default link LspInlayHint NonText", "default link SnippetTabstop Visual", + // Diagnostic + "default link DiagnosticVirtualTextError DiagnosticError", + "default link DiagnosticVirtualTextWarn DiagnosticWarn", + "default link DiagnosticVirtualTextInfo DiagnosticInfo", + "default link DiagnosticVirtualTextHint DiagnosticHint", + "default link DiagnosticVirtualTextOk DiagnosticOk", + "default link DiagnosticSignError DiagnosticError", + "default link DiagnosticSignWarn DiagnosticWarn", + "default link DiagnosticSignInfo DiagnosticInfo", + "default link DiagnosticSignHint DiagnosticHint", + "default link DiagnosticSignOk DiagnosticOk", + "default link DiagnosticUnnecessary Comment", + // Text - "default link @text.literal Comment", + "default link @text.literal Comment", "default link @text.reference Identifier", - "default link @text.title Title", - "default link @text.uri Underlined", + "default link @text.title Title", + "default link @text.uri Underlined", "default link @text.underline Underlined", - "default link @text.todo Todo", + "default link @text.todo Todo", // Miscs - "default link @comment Comment", + "default link @comment Comment", "default link @punctuation Delimiter", // Constants - "default link @constant Constant", - "default link @constant.builtin Special", - "default link @constant.macro Define", - "default link @define Define", - "default link @macro Macro", - "default link @string String", - "default link @string.escape SpecialChar", - "default link @string.special SpecialChar", - "default link @character Character", + "default link @constant Constant", + "default link @constant.builtin Special", + "default link @constant.macro Define", + "default link @define Define", + "default link @macro Macro", + "default link @string String", + "default link @string.escape SpecialChar", + "default link @string.special SpecialChar", + "default link @character Character", "default link @character.special SpecialChar", - "default link @number Number", - "default link @boolean Boolean", - "default link @float Float", + "default link @number Number", + "default link @boolean Boolean", + "default link @float Float", // Functions - "default link @function Function", + "default link @function Function", "default link @function.builtin Special", - "default link @function.macro Macro", - "default link @parameter Identifier", - "default link @method Function", - "default link @field Identifier", - "default link @property Identifier", - "default link @constructor Special", + "default link @function.macro Macro", + "default link @parameter Identifier", + "default link @method Function", + "default link @field Identifier", + "default link @property Identifier", + "default link @constructor Special", // Keywords "default link @conditional Conditional", - "default link @repeat Repeat", - "default link @label Label", - "default link @operator Operator", - "default link @keyword Keyword", - "default link @exception Exception", - - "default link @variable Identifier", - "default link @type Type", + "default link @repeat Repeat", + "default link @label Label", + "default link @operator Operator", + "default link @keyword Keyword", + "default link @exception Exception", + + "default link @variable NONE", // don't highlight to reduce visual overload + "default link @type Type", "default link @type.definition Typedef", - "default link @storageclass StorageClass", - "default link @namespace Identifier", - "default link @include Include", - "default link @preproc PreProc", - "default link @debug Debug", - "default link @tag Tag", + "default link @storageclass StorageClass", + "default link @namespace Identifier", + "default link @include Include", + "default link @preproc PreProc", + "default link @debug Debug", + "default link @tag Tag", // LSP semantic tokens - "default link @lsp.type.class Structure", - "default link @lsp.type.comment Comment", - "default link @lsp.type.decorator Function", - "default link @lsp.type.enum Structure", - "default link @lsp.type.enumMember Constant", - "default link @lsp.type.function Function", - "default link @lsp.type.interface Structure", - "default link @lsp.type.macro Macro", - "default link @lsp.type.method Function", - "default link @lsp.type.namespace Structure", - "default link @lsp.type.parameter Identifier", - "default link @lsp.type.property Identifier", - "default link @lsp.type.struct Structure", - "default link @lsp.type.type Type", + "default link @lsp.type.class Structure", + "default link @lsp.type.comment Comment", + "default link @lsp.type.decorator Function", + "default link @lsp.type.enum Structure", + "default link @lsp.type.enumMember Constant", + "default link @lsp.type.function Function", + "default link @lsp.type.interface Structure", + "default link @lsp.type.macro Macro", + "default link @lsp.type.method Function", + "default link @lsp.type.namespace Structure", + "default link @lsp.type.parameter Identifier", + "default link @lsp.type.property Identifier", + "default link @lsp.type.struct Structure", + "default link @lsp.type.type Type", "default link @lsp.type.typeParameter TypeDef", - "default link @lsp.type.variable Identifier", + "default link @lsp.type.variable NONE", // don't highlight to reduce visual overload NULL }; // Default colors only used with a light background. static const char *highlight_init_light[] = { - "ColorColumn ctermbg=LightRed guibg=LightRed", - "CursorColumn ctermbg=LightGrey guibg=Grey90", - "CursorLine cterm=underline guibg=Grey90", - "CursorLineNr cterm=underline ctermfg=Brown gui=bold guifg=Brown", - "DiffAdd ctermbg=LightBlue guibg=LightBlue", - "DiffChange ctermbg=LightMagenta guibg=LightMagenta", - "DiffDelete ctermfg=Blue ctermbg=LightCyan gui=bold guifg=Blue guibg=LightCyan", - "Directory ctermfg=DarkBlue guifg=Blue", - "FoldColumn ctermbg=Grey ctermfg=DarkBlue guibg=Grey guifg=DarkBlue", - "Folded ctermbg=Grey ctermfg=DarkBlue guibg=LightGrey guifg=DarkBlue", - "LineNr ctermfg=Brown guifg=Brown", - "MatchParen ctermbg=Cyan guibg=Cyan", - "MoreMsg ctermfg=DarkGreen gui=bold guifg=SeaGreen", - "Pmenu ctermbg=LightMagenta ctermfg=Black guibg=LightMagenta", - "PmenuSel ctermbg=LightGrey ctermfg=Black guibg=Grey", - "PmenuThumb ctermbg=Black guibg=Black", - "Question ctermfg=DarkGreen gui=bold guifg=SeaGreen", - "Search ctermbg=Yellow ctermfg=NONE guibg=Yellow guifg=NONE", - "SignColumn ctermbg=Grey ctermfg=DarkBlue guibg=Grey guifg=DarkBlue", - "SpecialKey ctermfg=DarkBlue guifg=Blue", - "SpellBad ctermbg=LightRed guisp=Red gui=undercurl", - "SpellCap ctermbg=LightBlue guisp=Blue gui=undercurl", - "SpellLocal ctermbg=Cyan guisp=DarkCyan gui=undercurl", - "SpellRare ctermbg=LightMagenta guisp=Magenta gui=undercurl", - "TabLine cterm=underline ctermfg=black ctermbg=LightGrey gui=underline guibg=LightGrey", - "Title ctermfg=DarkMagenta gui=bold guifg=Magenta", - "Visual guibg=LightGrey", - "WarningMsg ctermfg=DarkRed guifg=Red", - "Comment term=bold cterm=NONE ctermfg=DarkBlue ctermbg=NONE gui=NONE guifg=Blue guibg=NONE", - "Constant term=underline cterm=NONE ctermfg=DarkRed ctermbg=NONE gui=NONE guifg=Magenta guibg=NONE", - "Special term=bold cterm=NONE ctermfg=DarkMagenta ctermbg=NONE gui=NONE guifg=#6a5acd guibg=NONE", - "Identifier term=underline cterm=NONE ctermfg=DarkCyan ctermbg=NONE gui=NONE guifg=DarkCyan guibg=NONE", - "Statement term=bold cterm=NONE ctermfg=Brown ctermbg=NONE gui=bold guifg=Brown guibg=NONE", - "PreProc term=underline cterm=NONE ctermfg=DarkMagenta ctermbg=NONE gui=NONE guifg=#6a0dad guibg=NONE", - "Type term=underline cterm=NONE ctermfg=DarkGreen ctermbg=NONE gui=bold guifg=SeaGreen guibg=NONE", - "Underlined term=underline cterm=underline ctermfg=DarkMagenta gui=underline guifg=SlateBlue", - "Ignore term=NONE cterm=NONE ctermfg=white ctermbg=NONE gui=NONE guifg=bg guibg=NONE", + "Normal guifg=NvimDarkGrey2 ctermfg=234 guibg=NvimLightGrey2 ctermbg=253", + + // UI + "ColorColumn guibg=NvimLightGrey4 ctermbg=247", + "Conceal guifg=NvimLightGrey4 ctermfg=247", + "CursorColumn guibg=NvimLightGrey3 ctermbg=251", + "CursorLine guibg=NvimLightGrey3 ctermbg=251", + "DiffAdd guifg=NvimDarkGrey1 ctermfg=232 guibg=NvimLightGreen ctermbg=158", + "DiffChange guifg=NvimDarkGrey1 ctermfg=232 guibg=NvimLightGrey4 ctermbg=247", + "DiffDelete guifg=NvimDarkRed ctermfg=52 gui=bold cterm=bold", + "DiffText guifg=NvimDarkGrey1 ctermfg=232 guibg=NvimLightCyan ctermbg=123", + "Directory guifg=NvimDarkCyan ctermfg=30", + "ErrorMsg guifg=NvimDarkRed ctermfg=52", + "FloatShadow guibg=NvimLightGrey1 ctermbg=255 blend=80", + "FloatShadowThrough guibg=NvimLightGrey1 ctermbg=255 blend=100", + "Folded guifg=NvimDarkGrey4 ctermfg=239 guibg=NvimLightGrey3 ctermbg=251", + "LineNr guifg=NvimLightGrey4 ctermfg=247", + "MatchParen guibg=NvimLightGrey4 ctermbg=247 gui=bold cterm=bold", + "ModeMsg guifg=NvimDarkGreen ctermfg=22", + "MoreMsg guifg=NvimDarkCyan ctermfg=30", + "NonText guifg=NvimLightGrey4 ctermfg=247", + "NormalFloat guifg=NvimDarkGrey2 ctermfg=234 guibg=NvimLightGrey1 ctermbg=255", + "Pmenu guifg=NvimDarkGrey2 ctermfg=234 guibg=NvimLightGrey3 ctermbg=251", + "PmenuSel guifg=NvimLightGrey3 ctermfg=251 guibg=NvimDarkGrey2 ctermbg=234 blend=0", + "PmenuThumb guibg=NvimLightGrey4 ctermbg=247", + "Question guifg=NvimDarkCyan ctermfg=30", + "RedrawDebugClear guibg=NvimLightCyan ctermbg=123", + "RedrawDebugComposed guibg=NvimLightGreen ctermbg=158", + "RedrawDebugRecompose guibg=NvimLightRed ctermbg=217", + "Search guifg=NvimDarkGrey1 ctermfg=232 guibg=NvimLightYellow ctermbg=222", + "SignColumn guifg=NvimLightGrey4 ctermfg=247", + "SpecialKey guifg=NvimLightGrey4 ctermfg=247", + "SpellBad guisp=NvimDarkRed gui=undercurl cterm=undercurl", + "SpellCap guisp=NvimDarkYellow gui=undercurl cterm=undercurl", + "SpellLocal guisp=NvimDarkGreen gui=undercurl cterm=undercurl", + "SpellRare guisp=NvimDarkCyan gui=undercurl cterm=undercurl", + "StatusLine guifg=NvimDarkGrey3 ctermfg=236 guibg=NvimLightGrey1 ctermbg=255", + "StatusLineNC guifg=NvimDarkGrey4 ctermfg=239 guibg=NvimLightGrey1 ctermbg=255", + "TabLine guifg=NvimDarkGrey3 ctermfg=236 guibg=NvimLightGrey1 ctermbg=255", + "Visual guibg=NvimLightGrey4 ctermbg=247", + "WarningMsg guifg=NvimDarkYellow ctermfg=52", // In 256 colors fall back to red + + // Syntax + "Comment guifg=NvimDarkGrey4 ctermfg=239", + "Constant guifg=NvimDarkGrey2 ctermfg=234", + "String guifg=NvimDarkGreen ctermfg=22", + "Identifier guifg=NvimDarkBlue ctermfg=NONE", // No fallback in 256 colors to reduce noise + "Function guifg=NvimDarkCyan ctermfg=30", + "Statement guifg=NvimDarkGrey2 ctermfg=234 gui=bold cterm=bold", + "Operator guifg=NvimDarkGrey2 ctermfg=234", + "PreProc guifg=NvimDarkGrey2 ctermfg=234", + "Type guifg=NvimDarkGrey2 ctermfg=234", + "Special guifg=NvimDarkGrey2 ctermfg=234", + "Delimiter guifg=NvimDarkGrey2 ctermfg=234", + "Error guifg=NvimDarkGrey1 ctermfg=232 guibg=NvimLightRed ctermbg=217", + "Todo guifg=NvimDarkGrey1 ctermfg=232 gui=bold cterm=bold", + + // Diagnostic + "DiagnosticError guifg=NvimDarkRed ctermfg=52", + "DiagnosticWarn guifg=NvimDarkYellow ctermfg=52", // In 256 colors fall back to red + "DiagnosticInfo guifg=NvimDarkCyan ctermfg=30", + "DiagnosticHint guifg=NvimDarkBlue ctermfg=30", // In 256 colors fall back to cyan + "DiagnosticOk guifg=NvimDarkGreen ctermfg=22", + "DiagnosticUnderlineError guisp=NvimDarkRed gui=underline cterm=underline", + "DiagnosticUnderlineWarn guisp=NvimDarkYellow gui=underline cterm=underline", + "DiagnosticUnderlineInfo guisp=NvimDarkCyan gui=underline cterm=underline", + "DiagnosticUnderlineHint guisp=NvimDarkBlue gui=underline cterm=underline", // In 256 colors fall back to cyan + "DiagnosticUnderlineOk guisp=NvimDarkGreen gui=underline cterm=underline", + "DiagnosticFloatingError guifg=NvimDarkRed ctermfg=52 guibg=NvimLightGrey1 ctermbg=255", + // In 256 colors fall back to red + "DiagnosticFloatingWarn guifg=NvimDarkYellow ctermfg=52 guibg=NvimLightGrey1 ctermbg=255", + "DiagnosticFloatingInfo guifg=NvimDarkCyan ctermfg=30 guibg=NvimLightGrey1 ctermbg=255", + // In 256 colors fall back to cyan + "DiagnosticFloatingHint guifg=NvimDarkBlue ctermfg=30 guibg=NvimLightGrey1 ctermbg=255", + "DiagnosticFloatingOk guifg=NvimDarkGreen ctermfg=22 guibg=NvimLightGrey1 ctermbg=255", + "DiagnosticDeprecated guisp=NvimDarkRed gui=strikethrough cterm=strikethrough", NULL }; // Default colors only used with a dark background. static const char *highlight_init_dark[] = { - "ColorColumn ctermbg=DarkRed guibg=DarkRed", - "CursorColumn ctermbg=DarkGrey guibg=Grey40", - "CursorLine cterm=underline guibg=Grey40", - "CursorLineNr cterm=underline ctermfg=Yellow gui=bold guifg=Yellow", - "DiffAdd ctermbg=DarkBlue guibg=DarkBlue", - "DiffChange ctermbg=DarkMagenta guibg=DarkMagenta", - "DiffDelete ctermfg=Blue ctermbg=DarkCyan gui=bold guifg=Blue guibg=DarkCyan", - "Directory ctermfg=LightCyan guifg=Cyan", - "FoldColumn ctermbg=DarkGrey ctermfg=Cyan guibg=Grey guifg=Cyan", - "Folded ctermbg=DarkGrey ctermfg=Cyan guibg=DarkGrey guifg=Cyan", - "LineNr ctermfg=Yellow guifg=Yellow", - "MatchParen ctermbg=DarkCyan guibg=DarkCyan", - "MoreMsg ctermfg=LightGreen gui=bold guifg=SeaGreen", - "Pmenu ctermbg=Magenta ctermfg=Black guibg=Magenta", - "PmenuSel ctermbg=Black ctermfg=DarkGrey guibg=DarkGrey", - "PmenuThumb ctermbg=White guibg=White", - "Question ctermfg=LightGreen gui=bold guifg=Green", - "Search ctermbg=Yellow ctermfg=Black guibg=Yellow guifg=Black", - "SignColumn ctermbg=DarkGrey ctermfg=Cyan guibg=Grey guifg=Cyan", - "SpecialKey ctermfg=LightBlue guifg=Cyan", - "SpellBad ctermbg=Red guisp=Red gui=undercurl", - "SpellCap ctermbg=Blue guisp=Blue gui=undercurl", - "SpellLocal ctermbg=Cyan guisp=Cyan gui=undercurl", - "SpellRare ctermbg=Magenta guisp=Magenta gui=undercurl", - "TabLine cterm=underline ctermfg=white ctermbg=DarkGrey gui=underline guibg=DarkGrey", - "Title ctermfg=LightMagenta gui=bold guifg=Magenta", - "Visual guibg=DarkGrey", - "WarningMsg ctermfg=LightRed guifg=Red", - "Comment term=bold cterm=NONE ctermfg=Cyan ctermbg=NONE gui=NONE guifg=#80a0ff guibg=NONE", - "Constant term=underline cterm=NONE ctermfg=Magenta ctermbg=NONE gui=NONE guifg=#ffa0a0 guibg=NONE", - "Special term=bold cterm=NONE ctermfg=LightRed ctermbg=NONE gui=NONE guifg=Orange guibg=NONE", - "Identifier term=underline cterm=bold ctermfg=Cyan ctermbg=NONE gui=NONE guifg=#40ffff guibg=NONE", - "Statement term=bold cterm=NONE ctermfg=Yellow ctermbg=NONE gui=bold guifg=#ffff60 guibg=NONE", - "PreProc term=underline cterm=NONE ctermfg=LightBlue ctermbg=NONE gui=NONE guifg=#ff80ff guibg=NONE", - "Type term=underline cterm=NONE ctermfg=LightGreen ctermbg=NONE gui=bold guifg=#60ff60 guibg=NONE", - "Underlined term=underline cterm=underline ctermfg=LightBlue gui=underline guifg=#80a0ff", - "Ignore term=NONE cterm=NONE ctermfg=black ctermbg=NONE gui=NONE guifg=bg guibg=NONE", + "Normal guifg=NvimLightGrey2 ctermfg=253 guibg=NvimDarkGrey2 ctermbg=234", + + // UI + "ColorColumn guibg=NvimDarkGrey4 ctermbg=239", + "Conceal guifg=NvimDarkGrey4 ctermfg=239", + "CursorColumn guibg=NvimDarkGrey3 ctermbg=236", + "CursorLine guibg=NvimDarkGrey3 ctermbg=236", + "DiffAdd guifg=NvimLightGrey1 ctermfg=255 guibg=NvimDarkGreen ctermbg=22", + "DiffChange guifg=NvimLightGrey1 ctermfg=255 guibg=NvimDarkGrey4 ctermbg=239", + "DiffDelete guifg=NvimLightRed ctermfg=217 gui=bold cterm=bold", + "DiffText guifg=NvimLightGrey1 ctermfg=255 guibg=NvimDarkCyan ctermbg=30", + "Directory guifg=NvimLightCyan ctermfg=123", + "ErrorMsg guifg=NvimLightRed ctermfg=217", + "FloatShadow guibg=NvimDarkGrey1 ctermbg=232 blend=80", + "FloatShadowThrough guibg=NvimDarkGrey1 ctermbg=232 blend=100", + "Folded guifg=NvimLightGrey4 ctermfg=247 guibg=NvimDarkGrey3 ctermbg=236", + "LineNr guifg=NvimDarkGrey4 ctermfg=239", + "MatchParen guibg=NvimDarkGrey4 ctermbg=239 gui=bold cterm=bold", + "ModeMsg guifg=NvimLightGreen ctermfg=158", + "MoreMsg guifg=NvimLightCyan ctermfg=123", + "NonText guifg=NvimDarkGrey4 ctermfg=239", + "NormalFloat guifg=NvimLightGrey2 ctermfg=253 guibg=NvimDarkGrey1 ctermbg=232", + "Pmenu guifg=NvimLightGrey2 ctermfg=253 guibg=NvimDarkGrey3 ctermbg=236", + "PmenuSel guifg=NvimDarkGrey3 ctermfg=236 guibg=NvimLightGrey2 ctermbg=253 blend=0", + "PmenuThumb guibg=NvimDarkGrey4 ctermbg=239", + "Question guifg=NvimLightCyan ctermfg=123", + "RedrawDebugClear guibg=NvimDarkCyan ctermbg=30", + "RedrawDebugComposed guibg=NvimDarkGreen ctermbg=22", + "RedrawDebugRecompose guibg=NvimDarkRed ctermbg=52", + "Search guifg=NvimLightGrey1 ctermfg=255 guibg=NvimDarkYellow ctermbg=58", + "SignColumn guifg=NvimDarkGrey4 ctermfg=239", + "SpecialKey guifg=NvimDarkGrey4 ctermfg=239", + "SpellBad guisp=NvimLightRed gui=undercurl cterm=undercurl", + "SpellCap guisp=NvimLightYellow gui=undercurl cterm=undercurl", + "SpellLocal guisp=NvimLightGreen gui=undercurl cterm=undercurl", + "SpellRare guisp=NvimLightCyan gui=undercurl cterm=undercurl", + "StatusLine guifg=NvimLightGrey3 ctermfg=251 guibg=NvimDarkGrey1 ctermbg=232", + "StatusLineNC guifg=NvimLightGrey4 ctermfg=247 guibg=NvimDarkGrey1 ctermbg=232", + "TabLine guifg=NvimLightGrey3 ctermfg=251 guibg=NvimDarkGrey1 ctermbg=232", + "Visual guibg=NvimDarkGrey4 ctermbg=239", + "WarningMsg guifg=NvimLightYellow ctermfg=217", // In 256 colors fall back to red + + // Syntax + "Comment guifg=NvimLightGrey4 ctermfg=247", + "Constant guifg=NvimLightGrey2 ctermfg=253", + "String guifg=NvimLightGreen ctermfg=158", + "Identifier guifg=NvimLightBlue ctermfg=NONE", // No fallback in 256 colors to reduce noise + "Function guifg=NvimLightCyan ctermfg=123", + "Statement guifg=NvimLightGrey2 ctermfg=253 gui=bold cterm=bold", + "Operator guifg=NvimLightGrey2 ctermfg=253", + "PreProc guifg=NvimLightGrey2 ctermfg=253", + "Type guifg=NvimLightGrey2 ctermfg=253", + "Special guifg=NvimLightGrey2 ctermfg=253", + "Delimiter guifg=NvimLightGrey2 ctermfg=253", + "Error guifg=NvimLightGrey1 ctermfg=255 guibg=NvimDarkRed ctermbg=52", + "Todo guifg=NvimLightGrey1 ctermfg=255 gui=bold cterm=bold", + + // Diagnostic + "DiagnosticError guifg=NvimLightRed ctermfg=217", + "DiagnosticWarn guifg=NvimLightYellow ctermfg=217", // In 256 colors fall back to red + "DiagnosticInfo guifg=NvimLightCyan ctermfg=123", + "DiagnosticHint guifg=NvimLightBlue ctermfg=123", // In 256 colors fall back to cyan + "DiagnosticOk guifg=NvimLightGreen ctermfg=158", + "DiagnosticUnderlineError guisp=NvimLightRed gui=underline cterm=underline", + "DiagnosticUnderlineWarn guisp=NvimLightYellow gui=underline cterm=underline", // In 256 colors fall back to red + "DiagnosticUnderlineInfo guisp=NvimLightCyan gui=underline cterm=underline", + "DiagnosticUnderlineHint guisp=NvimLightBlue gui=underline cterm=underline", + "DiagnosticUnderlineOk guisp=NvimLightGreen gui=underline cterm=underline", + "DiagnosticFloatingError guifg=NvimLightRed ctermfg=217 guibg=NvimDarkGrey1 ctermbg=232", + // In 256 colors fall back to red + "DiagnosticFloatingWarn guifg=NvimLightYellow ctermfg=217 guibg=NvimDarkGrey1 ctermbg=232", + "DiagnosticFloatingInfo guifg=NvimLightCyan ctermfg=123 guibg=NvimDarkGrey1 ctermbg=232", + // In 256 colors fall back to cyan + "DiagnosticFloatingHint guifg=NvimLightBlue ctermfg=123 guibg=NvimDarkGrey1 ctermbg=232", + "DiagnosticFloatingOk guifg=NvimLightGreen ctermfg=158 guibg=NvimDarkGrey1 ctermbg=232", + "DiagnosticDeprecated guisp=NvimLightRed gui=strikethrough cterm=strikethrough", NULL }; @@ -2828,6 +2886,29 @@ color_name_table_T color_name_table[] = { { "NavajoWhite4", RGB_(0x8b, 0x79, 0x5e) }, { "Navy", RGB_(0x00, 0x00, 0x80) }, { "NavyBlue", RGB_(0x0, 0x0, 0x80) }, + // Default Neovim palettes. + // Dark/light palette is used for background in dark/light color scheme and + // for foreground in light/dark color scheme. + { "NvimDarkBlue", RGB_(0x00, 0x50, 0x78) }, // cterm=24 + { "NvimDarkCyan", RGB_(0x00, 0x76, 0x76) }, // cterm=30 + { "NvimDarkGreen", RGB_(0x01, 0x58, 0x25) }, // cterm=22 + { "NvimDarkGrey1", RGB_(0x0a, 0x0b, 0x10) }, // cterm=232 + { "NvimDarkGrey2", RGB_(0x1c, 0x1d, 0x23) }, // cterm=234 + { "NvimDarkGrey3", RGB_(0x2c, 0x2e, 0x33) }, // cterm=236 + { "NvimDarkGrey4", RGB_(0x4f, 0x52, 0x58) }, // cterm=239 + { "NvimDarkMagenta", RGB_(0x4c, 0x00, 0x49) }, // cterm=53 + { "NvimDarkRed", RGB_(0x5e, 0x00, 0x09) }, // cterm=52 + { "NvimDarkYellow", RGB_(0x6e, 0x56, 0x00) }, // cterm=58 + { "NvimLightBlue", RGB_(0x9f, 0xd8, 0xff) }, // cterm=153 + { "NvimLightCyan", RGB_(0x83, 0xef, 0xef) }, // cterm=123 + { "NvimLightGreen", RGB_(0xaa, 0xed, 0xb7) }, // cterm=158 + { "NvimLightGrey1", RGB_(0xeb, 0xee, 0xf5) }, // cterm=255 + { "NvimLightGrey2", RGB_(0xd7, 0xda, 0xe1) }, // cterm=253 + { "NvimLightGrey3", RGB_(0xc4, 0xc6, 0xcd) }, // cterm=251 + { "NvimLightGrey4", RGB_(0x9b, 0x9e, 0xa4) }, // cterm=247 + { "NvimLightMagenta", RGB_(0xff, 0xc3, 0xfa) }, // cterm=189 + { "NvimLightRed", RGB_(0xff, 0xbc, 0xb5) }, // cterm=217 + { "NvimLightYellow", RGB_(0xf4, 0xd8, 0x8c) }, // cterm=222 { "OldLace", RGB_(0xfd, 0xf5, 0xe6) }, { "Olive", RGB_(0x80, 0x80, 0x00) }, { "OliveDrab", RGB_(0x6b, 0x8e, 0x23) }, diff --git a/src/nvim/insexpand.c b/src/nvim/insexpand.c index a59ba1b6d9..8791aeb10c 100644 --- a/src/nvim/insexpand.c +++ b/src/nvim/insexpand.c @@ -747,6 +747,16 @@ int ins_compl_add_infercase(char *str_arg, int len, bool icase, char *fname, Dir return res; } +/// free cptext +static inline void free_cptext(char *const *const cptext) +{ + if (cptext != NULL) { + for (size_t i = 0; i < CPT_COUNT; i++) { + xfree(cptext[i]); + } + } +} + /// Add a match to the list of matches /// /// @param[in] str text of the match to add @@ -784,16 +794,10 @@ static int ins_compl_add(char *const str, int len, char *const fname, char *cons } else { os_breakcheck(); } -#define FREE_CPTEXT(cptext, cptext_allocated) \ - do { \ - if ((cptext) != NULL && (cptext_allocated)) { \ - for (size_t i = 0; i < CPT_COUNT; i++) { \ - xfree((cptext)[i]); \ - } \ - } \ - } while (0) if (got_int) { - FREE_CPTEXT(cptext, cptext_allocated); + if (cptext_allocated) { + free_cptext(cptext); + } return FAIL; } if (len < 0) { @@ -807,7 +811,9 @@ static int ins_compl_add(char *const str, int len, char *const fname, char *cons if (!match_at_original_text(match) && strncmp(match->cp_str, str, (size_t)len) == 0 && ((int)strlen(match->cp_str) <= len || match->cp_str[len] == NUL)) { - FREE_CPTEXT(cptext, cptext_allocated); + if (cptext_allocated) { + free_cptext(cptext); + } return NOTDONE; } match = match->cp_next; @@ -1552,9 +1558,7 @@ static void ins_compl_free(void) if (match->cp_flags & CP_FREE_FNAME) { xfree(match->cp_fname); } - for (int i = 0; i < CPT_COUNT; i++) { - xfree(match->cp_text[i]); - } + free_cptext(match->cp_text); tv_clear(&match->cp_user_data); xfree(match); } while (compl_curr_match != NULL && !is_first_match(compl_curr_match)); @@ -2459,9 +2463,7 @@ static int ins_compl_add_tv(typval_T *const tv, const Direction dir, bool fast) CLEAR_FIELD(cptext); } if (word == NULL || (!empty && *word == NUL)) { - for (size_t i = 0; i < CPT_COUNT; i++) { - xfree(cptext[i]); - } + free_cptext(cptext); tv_clear(&user_data); return FAIL; } diff --git a/src/nvim/lib/ringbuf.h b/src/nvim/lib/ringbuf.h deleted file mode 100644 index c8abccfeb4..0000000000 --- a/src/nvim/lib/ringbuf.h +++ /dev/null @@ -1,290 +0,0 @@ -/// Macros-based ring buffer implementation. -/// -/// Supported functions: -/// -/// - new: allocates new ring buffer. -/// - dealloc: free ring buffer itself. -/// - free: free ring buffer and all its elements. -/// - push: adds element to the end of the buffer. -/// - length: get buffer length. -/// - size: size of the ring buffer. -/// - idx: get element at given index. -/// - idx_p: get pointer to the element at given index. -/// - insert: insert element at given position. -/// - remove: remove element from given position. - -#pragma once - -#include <assert.h> -#include <stddef.h> -#include <stdint.h> -#include <string.h> - -#include "nvim/func_attr.h" -#include "nvim/memory.h" - -#define _RINGBUF_LENGTH(rb) \ - ((rb)->first == NULL ? 0 \ - : ((rb)->next == (rb)->first) ? (size_t)((rb)->buf_end - (rb)->buf) + 1 \ - : ((rb)->next > (rb)->first) ? (size_t)((rb)->next - (rb)->first) \ - : (size_t)((rb)->next - (rb)->buf + (rb)->buf_end - (rb)->first + 1)) - -#define _RINGBUF_NEXT(rb, var) \ - ((var) == (rb)->buf_end ? (rb)->buf : (var) + 1) -#define _RINGBUF_PREV(rb, var) \ - ((var) == (rb)->buf ? (rb)->buf_end : (var) - 1) - -/// Iterate over all ringbuf values -/// -/// @param rb Ring buffer to iterate over. -/// @param RBType Type of the ring buffer element. -/// @param varname Variable name. -#define RINGBUF_FORALL(rb, RBType, varname) \ - size_t varname##_length_fa_ = _RINGBUF_LENGTH(rb); \ - for (RBType *varname = ((rb)->first == NULL ? (rb)->next : (rb)->first); \ - varname##_length_fa_; \ - (varname = _RINGBUF_NEXT(rb, varname)), \ - varname##_length_fa_--) - -/// Iterate over all ringbuf values, from end to the beginning -/// -/// Unlike previous RINGBUF_FORALL uses already defined variable, in place of -/// defining variable in the cycle body. -/// -/// @param rb Ring buffer to iterate over. -/// @param RBType Type of the ring buffer element. -/// @param varname Variable name. -#define RINGBUF_ITER_BACK(rb, RBType, varname) \ - size_t varname##_length_ib_ = _RINGBUF_LENGTH(rb); \ - for (varname = ((rb)->next == (rb)->buf ? (rb)->buf_end : (rb)->next - 1); \ - varname##_length_ib_; \ - (varname = _RINGBUF_PREV(rb, varname)), \ - varname##_length_ib_--) - -/// Define a ring buffer structure -/// -/// @param TypeName Ring buffer type name. Actual type name will be -/// `{TypeName}RingBuffer`. -/// @param RBType Type of the single ring buffer element. -#define RINGBUF_TYPEDEF(TypeName, RBType) \ - typedef struct { \ - RBType *buf; \ - RBType *next; \ - RBType *first; \ - RBType *buf_end; \ - } TypeName##RingBuffer; - -/// Dummy item free macros, for use in RINGBUF_INIT -/// -/// This macros actually does nothing. -/// -/// @param[in] item Item to be freed. -#define RINGBUF_DUMMY_FREE(item) - -/// Static ring buffer -/// -/// @warning Ring buffers created with this macros must neither be freed nor -/// deallocated. -/// -/// @param scope Ring buffer scope. -/// @param TypeName Ring buffer type name. -/// @param RBType Type of the single ring buffer element. -/// @param varname Variable name. -/// @param rbsize Ring buffer size. -#define RINGBUF_STATIC(scope, TypeName, RBType, varname, rbsize) \ - static RBType _##varname##_buf[rbsize]; \ - scope TypeName##RingBuffer varname = { \ - .buf = _##varname##_buf, \ - .next = _##varname##_buf, \ - .first = NULL, \ - .buf_end = _##varname##_buf + rbsize - 1, \ - }; - -/// Initialize a new ring buffer -/// -/// @param TypeName Ring buffer type name. Actual type name will be -/// `{TypeName}RingBuffer`. -/// @param funcprefix Prefix for all ring buffer functions. Function name will -/// look like `{funcprefix}_rb_{function_name}`. -/// @param RBType Type of the single ring buffer element. -/// @param rbfree Function used to free ring buffer element. May be -/// a macros like `#define RBFREE(item)` (to skip freeing). -/// -/// Intended function signature: `void *rbfree(RBType *)`; -#define RINGBUF_INIT(TypeName, funcprefix, RBType, rbfree) \ - static inline TypeName##RingBuffer funcprefix##_rb_new(const size_t size) \ - REAL_FATTR_WARN_UNUSED_RESULT; \ - static inline TypeName##RingBuffer funcprefix##_rb_new(const size_t size) \ - { \ - assert(size != 0); \ - RBType *buf = xmalloc(size * sizeof(RBType)); \ - return (TypeName##RingBuffer) { \ - .buf = buf, \ - .next = buf, \ - .first = NULL, \ - .buf_end = buf + size - 1, \ - }; \ - } \ - static inline void funcprefix##_rb_free(TypeName##RingBuffer *const rb) \ - REAL_FATTR_UNUSED; \ - static inline void funcprefix##_rb_free(TypeName##RingBuffer *const rb) \ - { \ - if (rb == NULL) { \ - return; \ - } \ - RINGBUF_FORALL(rb, RBType, rbitem) { \ - rbfree(rbitem); \ - } \ - XFREE_CLEAR(rb->buf); \ - } \ - static inline void funcprefix##_rb_dealloc(TypeName##RingBuffer *const rb) \ - REAL_FATTR_UNUSED; \ - static inline void funcprefix##_rb_dealloc(TypeName##RingBuffer *const rb) \ - { \ - XFREE_CLEAR(rb->buf); \ - } \ - static inline void funcprefix##_rb_push(TypeName##RingBuffer *const rb, \ - RBType item) \ - REAL_FATTR_NONNULL_ARG(1); \ - static inline void funcprefix##_rb_push(TypeName##RingBuffer *const rb, \ - RBType item) \ - { \ - if (rb->next == rb->first) { \ - rbfree(rb->first); \ - rb->first = _RINGBUF_NEXT(rb, rb->first); \ - } else if (rb->first == NULL) { \ - rb->first = rb->next; \ - } \ - *rb->next = item; \ - rb->next = _RINGBUF_NEXT(rb, rb->next); \ - } \ - static inline ptrdiff_t funcprefix##_rb_find_idx(const TypeName##RingBuffer *const rb, \ - const RBType *const item_p) \ - REAL_FATTR_NONNULL_ALL REAL_FATTR_PURE REAL_FATTR_UNUSED; \ - static inline ptrdiff_t funcprefix##_rb_find_idx(const TypeName##RingBuffer *const rb, \ - const RBType *const item_p) \ - { \ - assert(rb->buf <= item_p); \ - assert(rb->buf_end >= item_p); \ - if (rb->first == NULL) { \ - return -1; \ - } else if (item_p >= rb->first) { \ - return item_p - rb->first; \ - } else { \ - return item_p - rb->buf + rb->buf_end - rb->first + 1; \ - } \ - } \ - static inline size_t funcprefix##_rb_size(const TypeName##RingBuffer *const rb) \ - REAL_FATTR_NONNULL_ALL REAL_FATTR_PURE; \ - static inline size_t funcprefix##_rb_size(const TypeName##RingBuffer *const rb) \ - { \ - return (size_t)(rb->buf_end - rb->buf) + 1; \ - } \ - static inline size_t funcprefix##_rb_length(const TypeName##RingBuffer *const rb) \ - REAL_FATTR_NONNULL_ALL REAL_FATTR_PURE; \ - static inline size_t funcprefix##_rb_length(const TypeName##RingBuffer *const rb) \ - { \ - return _RINGBUF_LENGTH(rb); \ - } \ - static inline RBType *funcprefix##_rb_idx_p(const TypeName##RingBuffer *const rb, \ - const size_t idx) \ - REAL_FATTR_NONNULL_ALL REAL_FATTR_PURE; \ - static inline RBType *funcprefix##_rb_idx_p(const TypeName##RingBuffer *const rb, \ - const size_t idx) \ - { \ - assert(idx <= funcprefix##_rb_size(rb)); \ - assert(idx <= funcprefix##_rb_length(rb)); \ - if (rb->first + idx > rb->buf_end) { \ - return rb->buf + ((rb->first + idx) - (rb->buf_end + 1)); \ - } else { \ - return rb->first + idx; \ - } \ - } \ - static inline RBType funcprefix##_rb_idx(const TypeName##RingBuffer *const rb, \ - const size_t idx) \ - REAL_FATTR_NONNULL_ALL REAL_FATTR_PURE REAL_FATTR_UNUSED; \ - static inline RBType funcprefix##_rb_idx(const TypeName##RingBuffer *const rb, \ - const size_t idx) \ - { \ - return *funcprefix##_rb_idx_p(rb, idx); \ - } \ - static inline void funcprefix##_rb_insert(TypeName##RingBuffer *const rb, \ - const size_t idx, \ - RBType item) \ - REAL_FATTR_NONNULL_ARG(1) REAL_FATTR_UNUSED; \ - static inline void funcprefix##_rb_insert(TypeName##RingBuffer *const rb, \ - const size_t idx, \ - RBType item) \ - { \ - assert(idx <= funcprefix##_rb_size(rb)); \ - assert(idx <= funcprefix##_rb_length(rb)); \ - const size_t length = funcprefix##_rb_length(rb); \ - if (idx == length) { \ - funcprefix##_rb_push(rb, item); \ - return; \ - } \ - RBType *const insertpos = funcprefix##_rb_idx_p(rb, idx); \ - if (insertpos == rb->next) { \ - funcprefix##_rb_push(rb, item); \ - return; \ - } \ - if (length == funcprefix##_rb_size(rb)) { \ - rbfree(rb->first); \ - } \ - if (insertpos < rb->next) { \ - memmove(insertpos + 1, insertpos, \ - (size_t)((uintptr_t)rb->next - (uintptr_t)insertpos)); \ - } else { \ - assert(insertpos > rb->first); \ - assert(rb->next <= rb->first); \ - memmove(rb->buf + 1, rb->buf, \ - (size_t)((uintptr_t)rb->next - (uintptr_t)rb->buf)); \ - *rb->buf = *rb->buf_end; \ - memmove(insertpos + 1, insertpos, \ - (size_t)((uintptr_t)(rb->buf_end + 1) - (uintptr_t)insertpos)); \ - } \ - *insertpos = item; \ - if (length == funcprefix##_rb_size(rb)) { \ - rb->first = _RINGBUF_NEXT(rb, rb->first); \ - } \ - rb->next = _RINGBUF_NEXT(rb, rb->next); \ - } \ - static inline void funcprefix##_rb_remove(TypeName##RingBuffer *const rb, \ - const size_t idx) \ - REAL_FATTR_NONNULL_ARG(1) REAL_FATTR_UNUSED; \ - static inline void funcprefix##_rb_remove(TypeName##RingBuffer *const rb, \ - const size_t idx) \ - { \ - assert(idx < funcprefix##_rb_size(rb)); \ - assert(idx < funcprefix##_rb_length(rb)); \ - RBType *const rmpos = funcprefix##_rb_idx_p(rb, idx); \ - rbfree(rmpos); \ - if (rmpos == rb->next - 1) { \ - rb->next--; \ - if (rb->first == rb->next) { \ - rb->first = NULL; \ - rb->next = rb->buf; \ - } \ - } else if (rmpos == rb->first) { \ - rb->first = _RINGBUF_NEXT(rb, rb->first); \ - if (rb->first == rb->next) { \ - rb->first = NULL; \ - rb->next = rb->buf; \ - } \ - } else if (rb->first < rb->next || rb->next == rb->buf) { \ - assert(rmpos > rb->first); \ - assert(rmpos <= _RINGBUF_PREV(rb, rb->next)); \ - memmove(rb->first + 1, rb->first, \ - (size_t)((uintptr_t)rmpos - (uintptr_t)rb->first)); \ - rb->first = _RINGBUF_NEXT(rb, rb->first); \ - } else if (rmpos < rb->next) { \ - memmove(rmpos, rmpos + 1, \ - (size_t)((uintptr_t)rb->next - (uintptr_t)rmpos)); \ - rb->next = _RINGBUF_PREV(rb, rb->next); \ - } else { \ - assert(rb->first < rb->buf_end); \ - memmove(rb->first + 1, rb->first, \ - (size_t)((uintptr_t)rmpos - (uintptr_t)rb->first)); \ - rb->first = _RINGBUF_NEXT(rb, rb->first); \ - } \ - } diff --git a/src/nvim/marktree.c b/src/nvim/marktree.c index f14da1b605..fa5e7dcbe2 100644 --- a/src/nvim/marktree.c +++ b/src/nvim/marktree.c @@ -50,15 +50,15 @@ #include <sys/types.h> #include "klib/kvec.h" -#include "nvim/garray.h" +#include "nvim/macros_defs.h" +#include "nvim/map_defs.h" #include "nvim/marktree.h" #include "nvim/memory.h" #include "nvim/pos_defs.h" // only for debug functions #include "nvim/api/private/defs.h" #include "nvim/api/private/helpers.h" -#include "nvim/garray_defs.h" -#include "nvim/macros_defs.h" +#include "nvim/garray.h" #define T MT_BRANCH_FACTOR #define ILEN (sizeof(MTNode) + (2 * T) * sizeof(void *)) @@ -2200,7 +2200,12 @@ String mt_inspect(MarkTree *b, bool keys, bool dot) return ga_take_string(ga); } -void mt_inspect_node(MarkTree *b, garray_T *ga, bool keys, MTNode *n, MTPos off) +static inline uint64_t mt_dbg_id(uint64_t id) +{ + return (id >> 1) & 0xffffffff; +} + +static void mt_inspect_node(MarkTree *b, garray_T *ga, bool keys, MTNode *n, MTPos off) { static char buf[1024]; GA_PUT("["); @@ -2240,7 +2245,7 @@ void mt_inspect_node(MarkTree *b, garray_T *ga, bool keys, MTNode *n, MTPos off) ga_concat(ga, "]"); } -void mt_inspect_dotfile_node(MarkTree *b, garray_T *ga, MTNode *n, MTPos off, char *parent) +static void mt_inspect_dotfile_node(MarkTree *b, garray_T *ga, MTNode *n, MTPos off, char *parent) { static char buf[1024]; char namebuf[64]; diff --git a/src/nvim/marktree.h b/src/nvim/marktree.h index c76359d3f9..46d60a2b69 100644 --- a/src/nvim/marktree.h +++ b/src/nvim/marktree.h @@ -1,69 +1,15 @@ #pragma once #include <stdbool.h> -#include <stddef.h> +#include <stddef.h> // IWYU pragma: keep #include <stdint.h> -#include "klib/kvec.h" #include "nvim/decoration_defs.h" -#include "nvim/garray_defs.h" // IWYU pragma: keep -#include "nvim/map_defs.h" +#include "nvim/marktree_defs.h" // IWYU pragma: export #include "nvim/pos_defs.h" // IWYU pragma: keep // only for debug functions: #include "nvim/api/private/defs.h" // IWYU pragma: keep -#define MT_MAX_DEPTH 20 -#define MT_BRANCH_FACTOR 10 -// note max branch is actually 2*MT_BRANCH_FACTOR -// and strictly this is ceil(log2(2*MT_BRANCH_FACTOR + 1)) -// as we need a pseudo-index for "right before this node" -#define MT_LOG2_BRANCH 5 - -typedef struct { - int32_t row; - int32_t col; -} MTPos; -#define MTPos(r, c) ((MTPos){ .row = (r), .col = (c) }) - -typedef struct mtnode_s MTNode; - -typedef struct { - MTPos pos; - int lvl; - MTNode *x; - int i; - struct { - int oldcol; - int i; - } s[MT_MAX_DEPTH]; - - size_t intersect_idx; - MTPos intersect_pos; - MTPos intersect_pos_x; -} MarkTreeIter; - -#define marktree_itr_valid(itr) ((itr)->x != NULL) -// access raw key: flags in MT_FLAG_EXTERNAL_MASK and decor_data are safe to modify. -#define mt_itr_rawkey(itr) ((itr)->x->key[(itr)->i]) - -// Internal storage -// -// NB: actual marks have flags > 0, so we can use (row,col,0) pseudo-key for -// "space before (row,col)" -typedef struct { - MTPos pos; - uint32_t ns; - uint32_t id; - uint16_t flags; - DecorInlineData decor_data; // "ext" tag in flags -} MTKey; - -typedef struct { - MTKey start; - MTPos end_pos; - bool end_right_gravity; -} MTPair; - #define MT_INVALID_KEY (MTKey) { { -1, -1 }, 0, 0, 0, { .hl = DECOR_HIGHLIGHT_INLINE_INIT } } #define MT_FLAG_REAL (((uint16_t)1) << 0) @@ -179,31 +125,6 @@ static inline DecorInline mt_decor(MTKey key) return (DecorInline){ .ext = key.flags & MT_FLAG_DECOR_EXT, .data = key.decor_data }; } -typedef kvec_withinit_t(uint64_t, 4) Intersection; - -struct mtnode_s { - int32_t n; - int16_t level; - int16_t p_idx; // index in parent - Intersection intersect; - // TODO(bfredl): we could consider having a only-sometimes-valid - // index into parent for faster "cached" lookup. - MTNode *parent; - MTKey key[2 * MT_BRANCH_FACTOR - 1]; - MTNode *ptr[]; -}; - -static inline uint64_t mt_dbg_id(uint64_t id) -{ - return (id>>1)&0xffffffff; -} - -typedef struct { - MTNode *root; - size_t n_keys, n_nodes; - PMap(uint64_t) id2node[1]; -} MarkTree; - #ifdef INCLUDE_GENERATED_DECLARATIONS # include "marktree.h.generated.h" #endif diff --git a/src/nvim/marktree_defs.h b/src/nvim/marktree_defs.h new file mode 100644 index 0000000000..8aa1b1e376 --- /dev/null +++ b/src/nvim/marktree_defs.h @@ -0,0 +1,83 @@ +#pragma once + +#include <stdbool.h> +#include <stddef.h> +#include <stdint.h> + +#include "klib/kvec.h" +#include "nvim/decoration_defs.h" +#include "nvim/map_defs.h" + +enum { + MT_MAX_DEPTH = 20, + MT_BRANCH_FACTOR = 10, + // note max branch is actually 2*MT_BRANCH_FACTOR + // and strictly this is ceil(log2(2*MT_BRANCH_FACTOR + 1)) + // as we need a pseudo-index for "right before this node" + MT_LOG2_BRANCH = 5, +}; + +typedef struct { + int32_t row; + int32_t col; +} MTPos; +#define MTPos(r, c) ((MTPos){ .row = (r), .col = (c) }) + +typedef struct mtnode_s MTNode; + +typedef struct { + MTPos pos; + int lvl; + MTNode *x; + int i; + struct { + int oldcol; + int i; + } s[MT_MAX_DEPTH]; + + size_t intersect_idx; + MTPos intersect_pos; + MTPos intersect_pos_x; +} MarkTreeIter; + +#define marktree_itr_valid(itr) ((itr)->x != NULL) +// access raw key: flags in MT_FLAG_EXTERNAL_MASK and decor_data are safe to modify. +#define mt_itr_rawkey(itr) ((itr)->x->key[(itr)->i]) + +// Internal storage +// +// NB: actual marks have flags > 0, so we can use (row,col,0) pseudo-key for +// "space before (row,col)" +typedef struct { + MTPos pos; + uint32_t ns; + uint32_t id; + uint16_t flags; + DecorInlineData decor_data; // "ext" tag in flags +} MTKey; + +typedef struct { + MTKey start; + MTPos end_pos; + bool end_right_gravity; +} MTPair; + +typedef kvec_withinit_t(uint64_t, 4) Intersection; + +struct mtnode_s { + int32_t n; + int16_t level; + int16_t p_idx; // index in parent + Intersection intersect; + // TODO(bfredl): we could consider having a only-sometimes-valid + // index into parent for faster "cached" lookup. + MTNode *parent; + MTKey key[2 * MT_BRANCH_FACTOR - 1]; + MTNode *ptr[]; +}; + +typedef struct { + MTNode *root; + size_t n_keys, n_nodes; + PMap(uint64_t) id2node[1]; +} MarkTree; diff --git a/src/nvim/plines.c b/src/nvim/plines.c index fbddb1ab4a..cbfaa4ace3 100644 --- a/src/nvim/plines.c +++ b/src/nvim/plines.c @@ -14,6 +14,7 @@ #include "nvim/indent.h" #include "nvim/macros_defs.h" #include "nvim/mark.h" +#include "nvim/marktree.h" #include "nvim/mbyte.h" #include "nvim/memline.h" #include "nvim/move.h" diff --git a/src/nvim/plines.h b/src/nvim/plines.h index 6aede88c8b..7227db4524 100644 --- a/src/nvim/plines.h +++ b/src/nvim/plines.h @@ -1,10 +1,10 @@ #pragma once #include <stdbool.h> -#include <stdint.h> +#include <stdint.h> // IWYU pragma: keep #include "nvim/buffer_defs.h" -#include "nvim/marktree.h" +#include "nvim/marktree_defs.h" #include "nvim/pos_defs.h" // IWYU pragma: keep /// Argument for lbr_chartabsize(). diff --git a/src/nvim/terminal.c b/src/nvim/terminal.c index 03a7744b18..fda6aa41e8 100644 --- a/src/nvim/terminal.c +++ b/src/nvim/terminal.c @@ -188,7 +188,7 @@ void terminal_teardown(void) static void term_output_callback(const char *s, size_t len, void *user_data) { - terminal_send((Terminal *)user_data, (char *)s, len); + terminal_send((Terminal *)user_data, s, len); } // public API {{{ @@ -680,7 +680,7 @@ void terminal_destroy(Terminal **termpp) } } -void terminal_send(Terminal *term, char *data, size_t size) +static void terminal_send(Terminal *term, const char *data, size_t size) { if (term->closed) { return; @@ -762,7 +762,7 @@ void terminal_paste(int count, char **y_array, size_t y_size) vterm_keyboard_end_paste(curbuf->terminal->vt); } -void terminal_send_key(Terminal *term, int c) +static void terminal_send_key(Terminal *term, int c) { VTermModifier mod = VTERM_MOD_NONE; @@ -780,7 +780,7 @@ void terminal_send_key(Terminal *term, int c) } } -void terminal_receive(Terminal *term, char *data, size_t len) +void terminal_receive(Terminal *term, const char *data, size_t len) { if (!data) { return; diff --git a/src/nvim/terminal.h b/src/nvim/terminal.h index 66cad7ee7a..db62bd2a5b 100644 --- a/src/nvim/terminal.h +++ b/src/nvim/terminal.h @@ -4,7 +4,7 @@ #include <stdint.h> typedef struct terminal Terminal; -typedef void (*terminal_write_cb)(char *buffer, size_t size, void *data); +typedef void (*terminal_write_cb)(const char *buffer, size_t size, void *data); typedef void (*terminal_resize_cb)(uint16_t width, uint16_t height, void *data); typedef void (*terminal_close_cb)(void *data); |