aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/ex_docmd.c
Commit message (Collapse)AuthorAge
...
| * refactor: move non-symbols in ex_eval.h to ex_eval_defs.h (#19739)zeertzjq2022-08-12
| | | | | | | | This avoids including ex_eval.h in any other header, thus preventing future circular includes.
| * vim-patch:8.1.1684: profiling functionality is spread outzeertzjq2022-08-12
| | | | | | | | | | | | | | | | | | Problem: Profiling functionality is spread out. Solution: Put profiling functionality in profiling.c. (Yegappan Lakshmanan, closes vim/vim#4666) https://github.com/vim/vim/commit/fa55cfc69d2b14761e2a8bd85bc1e0d82df770aa Move proftime_T to types.h for now to avoid recursive #include.
| * refactor: use CLEAR_FIELD and CLEAR_POINTER macros (#19709)zeertzjq2022-08-11
| | | | | | | | | | | | | | vim-patch:8.2.0559: clearing a struct is verbose Problem: Clearing a struct is verbose. Solution: Define and use CLEAR_FIELD() and CLEAR_POINTER(). https://github.com/vim/vim/commit/a80faa8930ed5a554beeb2727762538873135e83
| * vim-patch:8.1.1823: command line history code is spread out (#19688)zeertzjq2022-08-09
| | | | | | | | | | | | Problem: Command line history code is spread out. Solution: Put the code in a new file. (Yegappan Lakshmanan, closes vim/vim#4779) Also graduate the +cmdline_hist feature. https://github.com/vim/vim/commit/d7663c22c6c1ff0f86b81371586fbc851d3a3e9e
* | feat(usermark); implement "user marks", i.e. marks whose behavior can be ↵Josh Rahm2022-08-21
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | defined by the user. (Neo)vim has many different marks defined, but sometimes this may not be completely adequate. This change give the user the ability to define behavior for marks which are not built in to (Neo)vim directly. This is accomplished through a new option called the "usermarkfunc." The usermarkfunc points to a vimscript function that takes an "action" paramter (either "get" or "set") and a mark name. a basic implementation that re-implements global mark behavior for user marks would look something like: let s:marks = {} function UserMarkFunc(action, mark) if a:action == "set" let [n, lnum, col, off, curswant] = getcurpos() let s:marks[a:mark] = \ { "line": lnum, "col": col, "file": expand("%:p") } else return s:marks[a:mark] endif endfunction set usermarkfunc=UserMarkFunc of course the user could make the behavior be whatever. It should also be noted that any valid unicode character can now be a mark. It is not just limited to ASCII characters.
* vim-patch:8.2.1281: the "trailing characters" error can be hard to understandzeertzjq2022-08-07
| | | | | | Problem: The "trailing characters" error can be hard to understand. Solution: Add the trailing characters to the message. https://github.com/vim/vim/commit/2d06bfde29bd3a62fc85823d2aa719ef943bd319
* vim-patch:8.2.1280: Ex command error cannot contain an argumentzeertzjq2022-08-07
| | | | | | | | | Problem: Ex command error cannot contain an argument. Solution: Add ex_errmsg() and translate earlier. Use e_trailing_arg where possible. https://github.com/vim/vim/commit/8930caaa1a283092aca81fdbc3fcf15c7eadb197 Remove duplicate test file 062_tab_pages_spec.lua
* fix(api): nvim_cmd handle 0 range (#19655)Lewis Russell2022-08-06
| | | Fixes #19608
* vim-patch:8.1.1210: support for user commands is spread out (#19653)zeertzjq2022-08-06
| | | | | | | Problem: Support for user commands is spread out. No good reason to make user commands optional. Solution: Move user command support to usercmd.c. Always enable the user_commands feature. https://github.com/vim/vim/commit/ac9fb18020d7e8bf16d02d45fbb02cf47328aaf7
* feat(lua): print source locations of lua callbacks (#19597)ii142022-08-03
| | | Co-authored-by: ii14 <ii14@users.noreply.github.com>
* refactor(cmd): unify execute_cmd with do_one_cmdLewis Russell2022-08-02
|
* refactor(cmd): hoist out some code into functionsLewis Russell2022-08-02
|
* refactor(cmd): format do_one_cmd()Lewis Russell2022-08-02
| | | | | - Comment style - Minimise scope of locals
* refactor: replace_makeprg (#19570)Lewis Russell2022-08-01
|
* refactor: replace char_u with charDundar Goc2022-07-31
| | | | Work on https://github.com/neovim/neovim/issues/459
* refactor: fix clang and PVS warnings (#19532)zeertzjq2022-07-28
|
* vim-patch:8.2.4623: Coverity warns for using uninitialized fieldzeertzjq2022-07-27
| | | | | | | | Problem: Coverity warns for using uninitialized field. Solution: Initialize he field to zero. https://github.com/vim/vim/commit/03a297c63f1512ba9783104a343dc7e2024e0bb0 Also only initialize used fields in f_fullcommand().
* vim-patch:9.0.0081: command line completion of user command may have ↵zeertzjq2022-07-27
| | | | | | | | | duplicates (#19529) Problem: Command line completion of user command may have duplicates. (Dani Dickstein) Solution: Skip global user command if an identical buffer-local one is defined. (closes vim/vim#10797) https://github.com/vim/vim/commit/c2842adfb2ca0637f13e2793fefa18e7818684f9
* vim-patch:8.1.1933: the eval.c file is too big (#19462)zeertzjq2022-07-22
| | | | | | | | Problem: The eval.c file is too big. Solution: Move code related to variables to evalvars.c. (Yegappan Lakshmanan, closes vim/vim#4868) https://github.com/vim/vim/commit/0522ba0359c96a8c2a4fc8fca0d3b58e49dda759 Name the new file eval/vars.c instead.
* refactor: fix clang warnings (#19453)zeertzjq2022-07-21
|
* vim-patch:8.2.1294: Vim9: error when using vim9script in TextYankPostzeertzjq2022-07-17
| | | | | | | Problem: Vim9: error when using vim9script in TextYankPost. Solution: Use EX_LOCKOK instead of the EX_CMDWIN flag for command that can be used when text is locked. (closes vim/vim#6529) https://github.com/vim/vim/commit/37394ff75270877a032422abcd079a6732a29730
* fix(api): fix nvim_parse_cmd interfere with printing line in Ex mode (#19400)zeertzjq2022-07-17
|
* vim-patch:8.2.0593: finding a user command is not optimal (#19386)zeertzjq2022-07-16
| | | | | Problem: Finding a user command is not optimal. Solution: Start further down in the list of commands. https://github.com/vim/vim/commit/a494f56f885876c98a276f7acfa386bfbb344680
* vim-patch:8.2.0426: some errors were not tested forzeertzjq2022-07-15
| | | | | | | | Problem: Some errors were not tested for. Solution: Add tests. (Dominique Pelle, closes vim/vim#5824) https://github.com/vim/vim/commit/9b9be007e7d674f49fc2b650f840d08532b180ad Cherry-pick get_highest_fnum() from patch 8.1.1908 to make tests pass.
* fix(exmode): flush messages before printing a line after pressing Enter (#19341)zeertzjq2022-07-13
|
* fix(exmode): do not throttle messages when pressing enter to print linezeertzjq2022-07-12
|
* vim-patch:8.2.0243: insufficient code coverage for ex_docmd.c functionszeertzjq2022-07-12
| | | | | | | | | Problem: Insufficient code coverage for ex_docmd.c functions. Solution: Add more tests. (Yegappan Lakshmanan, closes vim/vim#5618) https://github.com/vim/vim/commit/9f6277bdde97b7767ded43a0b5a2023eb601b3b7 Cherry-pick Test_window_only() from patch 8.2.0203. Cherry-pick a memory leak fix from patch 8.2.0399.
* vim-patch:8.2.0274: hang with combination of feedkeys(), Ex mode and :globalzeertzjq2022-07-08
| | | | | | | Problem: Hang with combination of feedkeys(), Ex mode and :global. (Yegappan Lakshmanan) Solution: Add the pending_exmode_active flag. https://github.com/vim/vim/commit/9e2bcb5d23138d45a0b6f9c1542b5facc807efe7
* vim-patch:8.2.5063: error for a command may go over the end of IObuff (#19260)zeertzjq2022-07-07
| | | | | Problem: Error for a command may go over the end of IObuff. Solution: Truncate the message. https://github.com/vim/vim/commit/44a3f3353e0407e9fffee138125a6927d1c9e7e5
* fix(mark): fix unexpected cursor movements (#19253)zeertzjq2022-07-06
|
* vim-patch:9.0.0031: <mods> of user command does not have correct verbose ↵zeertzjq2022-07-03
| | | | | | | | | value (#19215) vim-patch:9.0.0031: <mods> of user command does not have correct verbose value Problem: <mods> of user command does not have correct verbose value. Solution: Use the value from the command modifier. (closes vim/vim#10651) https://github.com/vim/vim/commit/9359e8a6d99fe2abfcbb9603339f1740d8870cc6
* vim-patch:8.2.1900: Vim9: command modifiers do not workzeertzjq2022-07-03
| | | | | | Problem: Vim9: command modifiers do not work. Solution: Make most command modifiers work. https://github.com/vim/vim/commit/02194d2bd54eacd0b7b9a017a3fe1702ecb80971
* refactor: replace char_uDundar Goc2022-07-02
| | | | Work on https://github.com/neovim/neovim/issues/459
* refactor(fold): style #19175Lewis Russell2022-07-02
| | | | | | * refactor(fold): update comment formatting * refactor(fold): use post-increment/decrement * refactor(fold): reduce scope of local variables * refactor(fold): use booleans
* vim-patch:8.1.0487: no menus specifically for the terminal windowzeertzjq2022-07-01
| | | | | | | | Problem: No menus specifically for the terminal window. Solution: Add :tlmenu. (Yee Cheng Chin, closes vim/vim#3439) Add a menu test. https://github.com/vim/vim/commit/4c5d815256099b50eca2ec5bf8f9aaa67a890211 ADDR_OHTER comes from patch 8.1.1241, which has already been ported.
* vim-patch:8.0.1570: can't use :popup for a menu in the terminalzeertzjq2022-07-01
| | | | | | | Problem: Can't use :popup for a menu in the terminal. (Wei Zhang) Solution: Make :popup work in the terminal. Also fix that entries were included that don't work in the current state. https://github.com/vim/vim/commit/29a2c08d792e4458a0af8371f5341394829fce29
* feat(marks): restore viewport on jump #15831Javier Lopez2022-06-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ** Refactor Previously most functions used to "get" a mark returned a position, changed the line number and sometimes changed even the current buffer. Now functions return a {x}fmark_T making calling context aware whether the mark is in another buffer without arcane casting. A new function is provided for switching to the mark buffer and returning a flag style Enum to convey what happen in the movement. If the cursor changed, line, columns, if it changed buffer, etc. The function to get named mark was split into multiple functions. - mark_get() -> fmark_T - mark_get_global() -> xfmark_T - mark_get_local() -> fmark_T - mark_get_motion() -> fmark_T - mark_get_visual() -> fmark_T Functions that manage the changelist and jumplist were also modified to return mark types. - get_jumplist -> fmark_T - get_changelist -> fmark_T The refactor is also seen mainly on normal.c, where all the mark movement has been siphoned through one function nv_gomark, while the other functions handle getting the mark and setting their movement flags. To handle whether context marks should be left, etc. ** Mark View While doing the refactor the concept of a mark view was also implemented: The view of a mark currently implemented as the number of lines between the mark position on creation and the window topline. This allows for moving not only back to the position of a mark but having the window look similar to when the mark was defined. This is done by carrying and extra element in the fmark_T struct, which can be extended later to also restore horizontal shift. *** User space features 1. There's a new option, jumpoptions+=view enables the mark view restoring automatically when using the jumplist, changelist, alternate-file and mark motions. <C-O> <C-I> g; g, <C-^> '[mark] `[mark] ** Limitations - The view information is not saved in shada. - Calls to get_mark should copy the value in the pointer since we are using pos_to_mark() to wrap and provide a homogeneous interfaces. This was also a limitation in the previous state of things.
* feat(api): make `nvim_parse_cmd` and `nvim_cmd` support :filterFamiu Haque2022-06-28
| | | | | | Also fixes a memory leak in `parse_cmdline`. Closes #18954.
* refactor: replace char_u #18429dundargoc2022-06-28
| | | Work on https://github.com/neovim/neovim/issues/459
* fix(inccommand): parse the command to check if it is previewableFamiu Haque2022-06-28
| | | | | Free regprog if command isn't previewable Co-authored-by: zeertzjq <zeertzjq@outlook.com>
* fix(api): nvim_parse_cmd check for ambiguous user command (#19116)zeertzjq2022-06-27
|
* vim-patch:8.2.4895: buffer overflow with invalid command with composing charszeertzjq2022-06-24
| | | | | | Problem: Buffer overflow with invalid command with composing chars. Solution: Check that the whole character fits in the buffer. https://github.com/vim/vim/commit/d88934406c5375d88f8f1b65331c9f0cab68cc6c
* refactor: move some mapping-related code to a separate file (#19061)zeertzjq2022-06-23
| | | | | | | | | | | | | | | | | | | This marks the following Vim patches as ported: vim-patch:8.1.1785: map functionality mixed with character input Problem: Map functionality mixed with character input. Solution: Move the map functionality to a separate file. (Yegappan Lakshmanan, closes vim/vim#4740) Graduate the +localmap feature. https://github.com/vim/vim/commit/b66bab381c8ba71fd6e92327d1d34c6f8a65f2a7 vim-patch:8.2.3643: header for source file is outdated Problem: Header for source file is outdated. Solution: Make the header more accurate. (closes vim/vim#9186) https://github.com/vim/vim/commit/a3f83feb63eae5464a620ae793c002eb45f7a838 Also cherry-pick a change for <unique> mappings from patch 8.2.0807. Rename map_clear_mode() to do_mapclear().
* vim-patch:8.2.5150: read past the end of the first line with ":0;'{"zeertzjq2022-06-23
| | | | | | Problem: Read past the end of the first line with ":0;'{". Solution: When on line zero check the column is valid for line one. https://github.com/vim/vim/commit/f7c7c3fad6d2135d558f3b36d0d1a943118aeb5e
* perf(ui): reduce allocation overhead when encoding "redraw" eventsbfredl2022-06-20
| | | | | | | | | | | | | | | | | Note for external UIs: Nvim can now emit multiple "redraw" event batches before a final "flush" event is received. To retain existing behavior, clients should make sure to update visible state at an explicit "flush" event, not just the end of a "redraw" batch of event. * Get rid of copy_object() blizzard in the auto-generated ui_event layer * Special case "grid_line" by encoding screen state directly to msgpack events with no intermediate API events. * Get rid of the arcane notion of referring to the screen as the "shell" * Array and Dictionary are kvec_t:s, so define them as such. * Allow kvec_t:s, such as Arrays and Dictionaries, to be allocated with a predetermined size within an arena. * Eliminate redundant capacity checking when filling such kvec_t:s with values.
* vim-patch:8.2.5088: value of cmod_verbose is a bit complicated to usezeertzjq2022-06-14
| | | | | | | | Problem: Value of cmod_verbose is a bit complicated to use. Solution: Use zero for not set, value + 1 when set. (closes vim/vim#10564) https://github.com/vim/vim/commit/cd7496382efc9e6748326c6cda7f01003fa07063 Omit has_cmdmod(): only used for Vim9 script
* vim-patch:8.2.1898: command modifier parsing always uses global cmdmodzeertzjq2022-06-14
| | | | | | Problem: Command modifier parsing always uses global cmdmod. Solution: Pass in cmdmod_T to use. Rename struct fields consistently. https://github.com/vim/vim/commit/e10044015841711b989f9a898d427bcc1fdb4c32
* refactor(api): remove redundant fields of CmdParseInfozeertzjq2022-06-14
|
* vim-patch:8.2.1897: command modifiers are saved and set inconsistentlyzeertzjq2022-06-14
| | | | | | | | | Problem: Command modifiers are saved and set inconsistently. Solution: Separate parsing and applying command modifiers. Save values in cmdmod_T. https://github.com/vim/vim/commit/5661ed6c833e05467cab33cb9b1c535e7e5cc570 Cherry-pick: :0verbose fix from patch 8.2.4741
* vim-patch:8.2.0577: not all modifiers supported for :options (#18952)zeertzjq2022-06-13
| | | | | | | Problem: Not all modifiers supported for :options. Solution: Use all cmdmod.split flags. (closes vim/vim#4401) https://github.com/vim/vim/commit/7a1637f4c00ac3d0cbf894803ada1586a1717470 Cherry-pick Test_options_command() change from patch 8.2.0540