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().
a80faa8930
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.
ac9fb18020
Reduce the amount of string allocations and length calculations.
With the following benchmark:
```lua
total = 0
for _ = 1, loops do
local start = now()
vim.api.nvim_cmd({cmd = 'let', args = {'a', '=', '1'}}, {})
total = total + (now() - start)
end
print('nvim_cmd', total / loops)
```
```
hyperfine 'nvim --clean test.lua +source +q'
```
Before: 234.5ms
After: 173.8ms
Problem: Value of cmod_verbose is a bit complicated to use.
Solution: Use zero for not set, value + 1 when set. (closesvim/vim#10564)
cd7496382e
Omit has_cmdmod(): only used for Vim9 script
Problem: Command modifiers are saved and set inconsistently.
Solution: Separate parsing and applying command modifiers. Save values in
cmdmod_T.
5661ed6c83
Cherry-pick: :0verbose fix from patch 8.2.4741