neovim/runtime/lua
Evgeni Chasnovski 73de98256c feat(comment): add built-in commenting
Design

- Enable commenting support only through `gc` mappings for simplicity.
  No ability to configure, no Lua module, no user commands. Yet.

- Overall implementation is a simplified version of 'mini.comment'
  module of 'echasnovski/mini.nvim' adapted to be a better suit for
  core. It basically means reducing code paths which use only specific
  fixed set of plugin config.

  All used options are default except `pad_comment_parts = false`. This
  means that 'commentstring' option is used as is without forcing single
  space inner padding.

As 'tpope/vim-commentary' was considered for inclusion earlier, here is
a quick summary of how this commit differs from it:

- **User-facing features**. Both implement similar user-facing mappings.
  This commit does not include `gcu` which is essentially a `gcgc`.
  There are no commands, events, or configuration in this commit.

- **Size**. Both have reasonably comparable number of lines of code,
  while this commit has more comments in tricky areas.

- **Maintainability**. This commit has (purely subjectively) better
  readability, tests, and Lua types.

- **Configurability**. This commit has no user configuration, while
  'vim-commentary' has some (partially as a counter-measure to possibly
  modifying 'commentstring' option).

- **Extra features**:
    - This commit supports tree-sitter by computing `'commentstring'`
      option under cursor, which can matter in presence of tree-sitter
      injected languages.

    - This commit comments blank lines while 'tpope/vim-commentary' does
      not. At the same time, blank lines are not taken into account when
      deciding the toggle action.

    - This commit has much better speed on larger chunks of lines (like
      above 1000). This is thanks to using `nvim_buf_set_lines()` to set
      all new lines at once, and not with `vim.fn.setline()`.
2024-04-05 18:07:43 +02:00
..
nvim docs: small fixes (#27364) 2024-03-12 13:51:53 +08:00
provider refactor: create function for deferred loading 2024-02-03 16:53:41 +01:00
vim feat(comment): add built-in commenting 2024-04-05 18:07:43 +02:00
_vim9script.lua feat(lua): rename vim.loop -> vim.uv (#22846) 2023-06-03 12:06:00 +02:00
coxpcall.lua build(lua): vendor coxpcall 2023-09-10 11:43:37 +02:00
editorconfig.lua fix(editorconfig): syntax error regression 2024-03-11 10:06:57 +00:00
man.lua fix(man): pass modifiers also to :tag (#27878) 2024-03-16 09:56:58 +08:00
tohtml.lua feat(lua): deprecate vim.tbl_add_reverse_lookup 2024-03-07 10:24:34 +01:00