mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 01:34:25 +00:00 
			
		
		
		
	docs: misc (#28609)
Closes https://github.com/neovim/neovim/issues/28484. Closes https://github.com/neovim/neovim/issues/28719. Co-authored-by: Chris <crwebb85@gmail.com> Co-authored-by: Gregory Anders <greg@gpanders.com> Co-authored-by: Jake B <16889000+jakethedev@users.noreply.github.com> Co-authored-by: Jonathan Raines <jonathan.s.raines@gmail.com> Co-authored-by: Yi Ming <ofseed@foxmail.com> Co-authored-by: Zane Dufour <zane@znd4.me> Co-authored-by: zeertzjq <zeertzjq@outlook.com>
This commit is contained in:
		@@ -36,7 +36,7 @@ Windows 8+ is required. Windows 7 or older is not supported.
 | 
			
		||||
 | 
			
		||||
### [Chocolatey](https://chocolatey.org)
 | 
			
		||||
 | 
			
		||||
- **Release (v0.7):** `choco install neovim` (use -y for automatically skipping confirmation messages)
 | 
			
		||||
- **Latest Release:** `choco install neovim` (use -y for automatically skipping confirmation messages)
 | 
			
		||||
- **Development (pre-release):** `choco install neovim --pre`
 | 
			
		||||
 | 
			
		||||
### [Scoop](https://scoop.sh/)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								MAINTAIN.md
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								MAINTAIN.md
									
									
									
									
									
								
							@@ -22,7 +22,7 @@ In practice we haven't found a way to forecast more precisely than "next" and
 | 
			
		||||
* Next feature-release (1.x.0)
 | 
			
		||||
 | 
			
		||||
The forecasting problem might be solved with an explicit priority system (like
 | 
			
		||||
Bram's todo.txt). Meanwhile the Neovim priority system is defined by:
 | 
			
		||||
Vim's todo.txt). Meanwhile the Neovim priority system is defined by:
 | 
			
		||||
 | 
			
		||||
* PRs nearing completion.
 | 
			
		||||
* Issue labels. E.g. the `has:plan` label increases the ticket's priority merely
 | 
			
		||||
@@ -57,8 +57,8 @@ has a major bug:
 | 
			
		||||
 | 
			
		||||
### Release automation
 | 
			
		||||
 | 
			
		||||
Neovim automation includes a [backport bot](https://github.com/zeebe-io/backport-action).
 | 
			
		||||
Trigger the action by labeling a PR with `backport release-X.Y`. See `.github/workflows/backport.yml`.
 | 
			
		||||
Neovim automation includes a [backport bot](https://github.com/korthout/backport-action).
 | 
			
		||||
Trigger the action by labeling a PR with `ci:backport release-x.y`. See `.github/workflows/backport.yml`.
 | 
			
		||||
 | 
			
		||||
Deprecating and removing features
 | 
			
		||||
---------------------------------
 | 
			
		||||
@@ -74,7 +74,7 @@ When a (non-experimental) feature is slated to be removed it should:
 | 
			
		||||
1. Be _soft_ deprecated in the _next_ release
 | 
			
		||||
  - Use of the deprecated feature will still work.
 | 
			
		||||
  - This means deprecating via documentation and annotation (`@deprecated`).
 | 
			
		||||
  - Include a note in `news.txt` under `DEPRECATIONS`.
 | 
			
		||||
  - Include a note in `deprecated.txt`.
 | 
			
		||||
  - For Lua features, use `vim.deprecate()`. The specified version is the
 | 
			
		||||
    current minor version + 2. For example, if the current version is
 | 
			
		||||
    `v0.10.0-dev-1957+gd676746c33` then use `0.12`.
 | 
			
		||||
@@ -132,7 +132,7 @@ Some can be auto-bumped by `scripts/bump_deps.lua`.
 | 
			
		||||
* [gettext](https://ftp.gnu.org/pub/gnu/gettext/)
 | 
			
		||||
* [libiconv](https://ftp.gnu.org/pub/gnu/libiconv)
 | 
			
		||||
* [libuv](https://github.com/libuv/libuv)
 | 
			
		||||
* [libvterm](http://www.leonerd.org.uk/code/libvterm/)
 | 
			
		||||
* [libvterm](https://www.leonerd.org.uk/code/libvterm/)
 | 
			
		||||
  * Downloading from the original source is unreliable, so we use our [mirror](https://github.com/neovim/libvterm) instead.
 | 
			
		||||
* [lua-compat](https://github.com/keplerproject/lua-compat-5.3)
 | 
			
		||||
* [tree-sitter](https://github.com/tree-sitter/tree-sitter)
 | 
			
		||||
 
 | 
			
		||||
@@ -281,10 +281,6 @@ gr{char}		Replace the virtual characters under the cursor with
 | 
			
		||||
			that have a special meaning in Insert mode, such as
 | 
			
		||||
			most CTRL-keys, cannot be used.
 | 
			
		||||
 | 
			
		||||
							*gr-default*
 | 
			
		||||
			Mapped to |vim.lsp.buf.references()| by default.
 | 
			
		||||
			|default-mappings|
 | 
			
		||||
 | 
			
		||||
						*digraph-arg*
 | 
			
		||||
The argument for Normal mode commands like |r| and |t| is a single character.
 | 
			
		||||
When 'cpo' doesn't contain the 'D' flag, this character can also be entered
 | 
			
		||||
 
 | 
			
		||||
@@ -6,11 +6,11 @@
 | 
			
		||||
==============================================================================
 | 
			
		||||
EditorConfig integration                                        *editorconfig*
 | 
			
		||||
 | 
			
		||||
Nvim supports EditorConfig. When a file is opened, Nvim searches all parent
 | 
			
		||||
directories of that file for ".editorconfig" files, parses them, and applies
 | 
			
		||||
any properties that match the opened file. Think of it like 'modeline' for an
 | 
			
		||||
entire (recursive) directory. For more information see
 | 
			
		||||
https://editorconfig.org/.
 | 
			
		||||
Nvim supports EditorConfig. When a file is opened, after running |ftplugin|s
 | 
			
		||||
and |FileType| autocommands, Nvim searches all parent directories of that file
 | 
			
		||||
for ".editorconfig" files, parses them, and applies any properties that match
 | 
			
		||||
the opened file. Think of it like 'modeline' for an entire (recursive)
 | 
			
		||||
directory. For more information see https://editorconfig.org/.
 | 
			
		||||
 | 
			
		||||
                                               *g:editorconfig* *b:editorconfig*
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -29,13 +29,6 @@ Use the stable (release) https://github.com/neovim/neovim/releases/latest
 | 
			
		||||
version for a more predictable experience.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
CAN I USE RUBY-BASED VIM PLUGINS (E.G. LUSTYEXPLORER)? ~
 | 
			
		||||
 | 
			
		||||
Yes, starting with Nvim 0.1.5 PR #4980
 | 
			
		||||
https://github.com/neovim/neovim/pull/4980 the legacy Vim `if_ruby` interface
 | 
			
		||||
is supported.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
CAN I USE LUA-BASED VIM PLUGINS (E.G. NEOCOMPLETE)? ~
 | 
			
		||||
 | 
			
		||||
No. Starting with Nvim 0.2 PR #4411
 | 
			
		||||
 
 | 
			
		||||
@@ -694,8 +694,8 @@ buf_request_sync({bufnr}, {method}, {params}, {timeout_ms})
 | 
			
		||||
                      milliseconds to wait for a result.
 | 
			
		||||
 | 
			
		||||
    Return (multiple): ~
 | 
			
		||||
        (`table<integer, {err: lsp.ResponseError, result: any}>?`) result Map
 | 
			
		||||
        of client_id:request_result.
 | 
			
		||||
        (`table<integer, {error: lsp.ResponseError?, result: any}>?`) result
 | 
			
		||||
        Map of client_id:request_result.
 | 
			
		||||
        (`string?`) err On timeout, cancel, or error, `err` is a string
 | 
			
		||||
        describing the failure reason, and `result` is nil.
 | 
			
		||||
 | 
			
		||||
@@ -1589,7 +1589,7 @@ save({lenses}, {bufnr}, {client_id})                 *vim.lsp.codelens.save()*
 | 
			
		||||
Lua module: vim.lsp.inlay_hint                                *lsp-inlay_hint*
 | 
			
		||||
 | 
			
		||||
enable({enable}, {filter})                       *vim.lsp.inlay_hint.enable()*
 | 
			
		||||
    Enables or disables inlay hints for a buffer.
 | 
			
		||||
    Enables or disables inlay hints for the {filter}ed scope.
 | 
			
		||||
 | 
			
		||||
    To "toggle", pass the inverse of `is_enabled()`: >lua
 | 
			
		||||
        vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled())
 | 
			
		||||
@@ -1636,6 +1636,7 @@ get({filter})                                       *vim.lsp.inlay_hint.get()*
 | 
			
		||||
        • {inlay_hint} (`lsp.InlayHint`)
 | 
			
		||||
 | 
			
		||||
is_enabled({filter})                         *vim.lsp.inlay_hint.is_enabled()*
 | 
			
		||||
    Query whether inlay hint is enabled in the {filter}ed scope
 | 
			
		||||
 | 
			
		||||
    Note: ~
 | 
			
		||||
      • This API is pre-release (unstable).
 | 
			
		||||
 
 | 
			
		||||
@@ -2673,7 +2673,6 @@ vim.filetype.add({filetypes})                             *vim.filetype.add()*
 | 
			
		||||
        vim.filetype.add {
 | 
			
		||||
          pattern = {
 | 
			
		||||
            ['.*'] = {
 | 
			
		||||
              priority = -math.huge,
 | 
			
		||||
              function(path, bufnr)
 | 
			
		||||
                local content = vim.api.nvim_buf_get_lines(bufnr, 0, 1, false)[1] or ''
 | 
			
		||||
                if vim.regex([[^#!.*\\<mine\\>]]):match_str(content) ~= nil then
 | 
			
		||||
@@ -2682,6 +2681,7 @@ vim.filetype.add({filetypes})                             *vim.filetype.add()*
 | 
			
		||||
                  return 'drawing'
 | 
			
		||||
                end
 | 
			
		||||
              end,
 | 
			
		||||
              { priority = -math.huge },
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
        }
 | 
			
		||||
@@ -4005,7 +4005,8 @@ Iter:fold({init}, {f})                                           *Iter:fold()*
 | 
			
		||||
        -- Get the "maximum" item of an iterable.
 | 
			
		||||
        vim.iter({ -99, -4, 3, 42, 0, 0, 7 })
 | 
			
		||||
          :fold({}, function(acc, v)
 | 
			
		||||
            acc.max = math.max(v, acc.max or v) return acc
 | 
			
		||||
            acc.max = math.max(v, acc.max or v)
 | 
			
		||||
            return acc
 | 
			
		||||
          end) --> { max = 42 }
 | 
			
		||||
<
 | 
			
		||||
 | 
			
		||||
@@ -4346,7 +4347,7 @@ vim.snippet.jump({direction})                             *vim.snippet.jump()*
 | 
			
		||||
 | 
			
		||||
    You can use this function to navigate a snippet as follows: >lua
 | 
			
		||||
        vim.keymap.set({ 'i', 's' }, '<Tab>', function()
 | 
			
		||||
           if vim.snippet.jumpable(1) then
 | 
			
		||||
           if vim.snippet.active({ direction = 1 }) then
 | 
			
		||||
             return '<cmd>lua vim.snippet.jump(1)<cr>'
 | 
			
		||||
           else
 | 
			
		||||
             return '<Tab>'
 | 
			
		||||
 
 | 
			
		||||
@@ -417,6 +417,7 @@ The following changes to existing APIs or features add new behavior.
 | 
			
		||||
  • 'shortmess' includes the "C" flag.
 | 
			
		||||
  • 'grepprg' uses the -H and -I flags for grep by default,
 | 
			
		||||
    and defaults to using ripgrep if available.
 | 
			
		||||
  • "]d" and "[d" in Normal mode map to |vim.diagnostic.goto_next()| and
 | 
			
		||||
    |vim.diagnostic.goto_prev()|, respectively. |]d-default| |[d-default|
 | 
			
		||||
  • <C-W>d (and <C-W><C-D>) map to |vim.diagnostic.open_float()|
 | 
			
		||||
    |CTRL-W_d-default|
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +1,9 @@
 | 
			
		||||
--- @brief
 | 
			
		||||
--- Nvim supports EditorConfig. When a file is opened, Nvim searches all parent
 | 
			
		||||
--- directories of that file for ".editorconfig" files, parses them, and applies
 | 
			
		||||
--- any properties that match the opened file. Think of it like 'modeline' for an
 | 
			
		||||
--- entire (recursive) directory. For more information see
 | 
			
		||||
--- https://editorconfig.org/.
 | 
			
		||||
---
 | 
			
		||||
--- Nvim supports EditorConfig. When a file is opened, after running |ftplugin|s
 | 
			
		||||
--- and |FileType| autocommands, Nvim searches all parent directories of that file
 | 
			
		||||
--- for ".editorconfig" files, parses them, and applies any properties that match
 | 
			
		||||
--- the opened file. Think of it like 'modeline' for an entire (recursive)
 | 
			
		||||
--- directory. For more information see https://editorconfig.org/.
 | 
			
		||||
 | 
			
		||||
--- @brief [g:editorconfig]() [b:editorconfig]()
 | 
			
		||||
---
 | 
			
		||||
 
 | 
			
		||||
@@ -2312,7 +2312,6 @@ end
 | 
			
		||||
--- vim.filetype.add {
 | 
			
		||||
---   pattern = {
 | 
			
		||||
---     ['.*'] = {
 | 
			
		||||
---       priority = -math.huge,
 | 
			
		||||
---       function(path, bufnr)
 | 
			
		||||
---         local content = vim.api.nvim_buf_get_lines(bufnr, 0, 1, false)[1] or ''
 | 
			
		||||
---         if vim.regex([[^#!.*\\<mine\\>]]):match_str(content) ~= nil then
 | 
			
		||||
@@ -2321,6 +2320,7 @@ end
 | 
			
		||||
---           return 'drawing'
 | 
			
		||||
---         end
 | 
			
		||||
---       end,
 | 
			
		||||
---       { priority = -math.huge },
 | 
			
		||||
---     },
 | 
			
		||||
---   },
 | 
			
		||||
--- }
 | 
			
		||||
 
 | 
			
		||||
@@ -466,7 +466,8 @@ end
 | 
			
		||||
--- -- Get the "maximum" item of an iterable.
 | 
			
		||||
--- vim.iter({ -99, -4, 3, 42, 0, 0, 7 })
 | 
			
		||||
---   :fold({}, function(acc, v)
 | 
			
		||||
---     acc.max = math.max(v, acc.max or v) return acc
 | 
			
		||||
---     acc.max = math.max(v, acc.max or v)
 | 
			
		||||
---     return acc
 | 
			
		||||
---   end) --> { max = 42 }
 | 
			
		||||
--- ```
 | 
			
		||||
---
 | 
			
		||||
 
 | 
			
		||||
@@ -897,12 +897,12 @@ end
 | 
			
		||||
---@param bufnr (integer) Buffer handle, or 0 for current.
 | 
			
		||||
---@param method (string) LSP method name
 | 
			
		||||
---@param params (table|nil) Parameters to send to the server
 | 
			
		||||
---@param handler fun(results: table<integer, {error: lsp.ResponseError, result: any}>) (function)
 | 
			
		||||
---@param handler fun(results: table<integer, {error: lsp.ResponseError?, result: any}>) (function)
 | 
			
		||||
--- Handler called after all requests are completed. Server results are passed as
 | 
			
		||||
--- a `client_id:result` map.
 | 
			
		||||
---@return function cancel Function that cancels all requests.
 | 
			
		||||
function lsp.buf_request_all(bufnr, method, params, handler)
 | 
			
		||||
  local results = {} --- @type table<integer,{error:lsp.ResponseError, result:any}>
 | 
			
		||||
  local results = {} --- @type table<integer,{error: lsp.ResponseError?, result: any}>
 | 
			
		||||
  local result_count = 0
 | 
			
		||||
  local expected_result_count = 0
 | 
			
		||||
 | 
			
		||||
@@ -940,7 +940,7 @@ end
 | 
			
		||||
---@param params table? Parameters to send to the server
 | 
			
		||||
---@param timeout_ms integer? Maximum time in milliseconds to wait for a result.
 | 
			
		||||
---                           (default: `1000`)
 | 
			
		||||
---@return table<integer, {err: lsp.ResponseError, result: any}>? result Map of client_id:request_result.
 | 
			
		||||
---@return table<integer, {error: lsp.ResponseError?, result: any}>? result Map of client_id:request_result.
 | 
			
		||||
---@return string? err On timeout, cancel, or error, `err` is a string describing the failure reason, and `result` is nil.
 | 
			
		||||
function lsp.buf_request_sync(bufnr, method, params, timeout_ms)
 | 
			
		||||
  local request_results ---@type table
 | 
			
		||||
 
 | 
			
		||||
@@ -503,7 +503,7 @@ function M.typehierarchy(kind)
 | 
			
		||||
 | 
			
		||||
  --- Merge results from multiple clients into a single table. Client-ID is preserved.
 | 
			
		||||
  ---
 | 
			
		||||
  --- @param results table<integer, {error: lsp.ResponseError, result: lsp.TypeHierarchyItem[]?}>
 | 
			
		||||
  --- @param results table<integer, {error: lsp.ResponseError?, result: lsp.TypeHierarchyItem[]?}>
 | 
			
		||||
  --- @return [integer, lsp.TypeHierarchyItem][]
 | 
			
		||||
  local function merge_results(results)
 | 
			
		||||
    local merged_results = {}
 | 
			
		||||
@@ -521,7 +521,7 @@ function M.typehierarchy(kind)
 | 
			
		||||
 | 
			
		||||
  local bufnr = api.nvim_get_current_buf()
 | 
			
		||||
  local params = util.make_position_params()
 | 
			
		||||
  --- @param results table<integer, {error: lsp.ResponseError, result: lsp.TypeHierarchyItem[]?}>
 | 
			
		||||
  --- @param results table<integer, {error: lsp.ResponseError?, result: lsp.TypeHierarchyItem[]?}>
 | 
			
		||||
  vim.lsp.buf_request_all(bufnr, ms.textDocument_prepareTypeHierarchy, params, function(results)
 | 
			
		||||
    local merged_results = merge_results(results)
 | 
			
		||||
    if #merged_results == 0 then
 | 
			
		||||
 
 | 
			
		||||
@@ -98,7 +98,7 @@ function M.on_inlayhint(err, result, ctx, _)
 | 
			
		||||
  api.nvim__redraw({ buf = bufnr, valid = true })
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
--- |lsp-handler| for the method `textDocument/inlayHint/refresh`
 | 
			
		||||
--- |lsp-handler| for the method `workspace/inlayHint/refresh`
 | 
			
		||||
---@param ctx lsp.HandlerContext
 | 
			
		||||
---@private
 | 
			
		||||
function M.on_refresh(err, _, ctx, _)
 | 
			
		||||
@@ -368,6 +368,7 @@ api.nvim_set_decoration_provider(namespace, {
 | 
			
		||||
  end,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
--- Query whether inlay hint is enabled in the {filter}ed scope
 | 
			
		||||
--- @param filter vim.lsp.inlay_hint.enable.Filter
 | 
			
		||||
--- @return boolean
 | 
			
		||||
--- @since 12
 | 
			
		||||
@@ -391,7 +392,7 @@ end
 | 
			
		||||
--- Buffer number, or 0 for current buffer, or nil for all.
 | 
			
		||||
--- @field bufnr integer?
 | 
			
		||||
 | 
			
		||||
--- Enables or disables inlay hints for a buffer.
 | 
			
		||||
--- Enables or disables inlay hints for the {filter}ed scope.
 | 
			
		||||
---
 | 
			
		||||
--- To "toggle", pass the inverse of `is_enabled()`:
 | 
			
		||||
---
 | 
			
		||||
 
 | 
			
		||||
@@ -539,7 +539,7 @@ end
 | 
			
		||||
---
 | 
			
		||||
--- ```lua
 | 
			
		||||
--- vim.keymap.set({ 'i', 's' }, '<Tab>', function()
 | 
			
		||||
---    if vim.snippet.jumpable(1) then
 | 
			
		||||
---    if vim.snippet.active({ direction = 1 }) then
 | 
			
		||||
---      return '<cmd>lua vim.snippet.jump(1)<cr>'
 | 
			
		||||
---    else
 | 
			
		||||
---      return '<Tab>'
 | 
			
		||||
 
 | 
			
		||||
@@ -353,7 +353,7 @@ void check_cursor_col(win_T *win)
 | 
			
		||||
    // Allow cursor past end-of-line when:
 | 
			
		||||
    // - in Insert mode or restarting Insert mode
 | 
			
		||||
    // - in Visual mode and 'selection' isn't "old"
 | 
			
		||||
    // - 'virtualedit' is set */
 | 
			
		||||
    // - 'virtualedit' is set
 | 
			
		||||
    if ((State & MODE_INSERT) || restart_edit
 | 
			
		||||
        || (VIsual_active && *p_sel != 'o')
 | 
			
		||||
        || (cur_ve_flags & VE_ONEMORE)
 | 
			
		||||
 
 | 
			
		||||
@@ -4082,7 +4082,7 @@ void separate_nextcmd(exarg_T *eap)
 | 
			
		||||
        break;
 | 
			
		||||
      }
 | 
			
		||||
    } else if (
 | 
			
		||||
               // Check for '"': start of comment or '|': next command */
 | 
			
		||||
               // Check for '"': start of comment or '|': next command
 | 
			
		||||
               // :@" does not start a comment!
 | 
			
		||||
               // :redir @" doesn't either.
 | 
			
		||||
               (*p == '"'
 | 
			
		||||
 
 | 
			
		||||
@@ -443,7 +443,7 @@ int grid_line_puts(int col, const char *text, int textlen, int attr)
 | 
			
		||||
 | 
			
		||||
    if (col + mbyte_cells > max_col) {
 | 
			
		||||
      // Only 1 cell left, but character requires 2 cells:
 | 
			
		||||
      // display a '>' in the last column to avoid wrapping. */
 | 
			
		||||
      // display a '>' in the last column to avoid wrapping.
 | 
			
		||||
      schar = schar_from_ascii('>');
 | 
			
		||||
      mbyte_cells = 1;
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -1963,7 +1963,7 @@ int syn_name2id_len(const char *name, size_t len)
 | 
			
		||||
    return 0;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Avoid using stricmp() too much, it's slow on some systems */
 | 
			
		||||
  // Avoid using stricmp() too much, it's slow on some systems
 | 
			
		||||
  // Avoid alloc()/free(), these are slow too.
 | 
			
		||||
  vim_memcpy_up(name_u, name, len);
 | 
			
		||||
  name_u[len] = '\0';
 | 
			
		||||
 
 | 
			
		||||
@@ -1197,7 +1197,7 @@ static int cin_is_cpp_baseclass(cpp_baseclass_cache_T *cached)
 | 
			
		||||
      s = line;
 | 
			
		||||
    }
 | 
			
		||||
    if (s == line) {
 | 
			
		||||
      // don't recognize "case (foo):" as a baseclass */
 | 
			
		||||
      // don't recognize "case (foo):" as a baseclass
 | 
			
		||||
      if (cin_iscase(s, false)) {
 | 
			
		||||
        break;
 | 
			
		||||
      }
 | 
			
		||||
 
 | 
			
		||||
@@ -1812,8 +1812,7 @@ int makemap(FILE *fd, buf_T *buf)
 | 
			
		||||
          iemsg(_("E228: makemap: Illegal mode"));
 | 
			
		||||
          return FAIL;
 | 
			
		||||
        }
 | 
			
		||||
        do {
 | 
			
		||||
          // do this twice if c2 is set, 3 times with c3 */
 | 
			
		||||
        do {  // do this twice if c2 is set, 3 times with c3
 | 
			
		||||
          // When outputting <> form, need to make sure that 'cpo'
 | 
			
		||||
          // is set to the Vim default.
 | 
			
		||||
          if (!did_cpo) {
 | 
			
		||||
 
 | 
			
		||||
@@ -999,7 +999,7 @@ static void uniquefy_paths(garray_T *gap, char *pattern)
 | 
			
		||||
      memmove(path, path_cutoff, strlen(path_cutoff) + 1);
 | 
			
		||||
    } else {
 | 
			
		||||
      // Here all files can be reached without path, so get shortest
 | 
			
		||||
      // unique path.  We start at the end of the path. */
 | 
			
		||||
      // unique path.  We start at the end of the path.
 | 
			
		||||
      char *pathsep_p = path + len - 1;
 | 
			
		||||
      while (find_previous_pathsep(path, &pathsep_p)) {
 | 
			
		||||
        if (vim_regexec(®match, pathsep_p + 1, 0)
 | 
			
		||||
 
 | 
			
		||||
@@ -10555,7 +10555,7 @@ nfa_do_multibyte:
 | 
			
		||||
      // NFA_END_COMPOSING is the ). Note that right now we are
 | 
			
		||||
      // building the postfix form, not the NFA itself;
 | 
			
		||||
      // a composing char could be: a, b, c, NFA_COMPOSING
 | 
			
		||||
      // where 'b' and 'c' are chars with codes > 256. */
 | 
			
		||||
      // where 'b' and 'c' are chars with codes > 256.
 | 
			
		||||
      while (true) {
 | 
			
		||||
        EMIT(c);
 | 
			
		||||
        if (i > 0) {
 | 
			
		||||
 
 | 
			
		||||
@@ -2460,7 +2460,7 @@ int current_search(int count, bool forward)
 | 
			
		||||
    // beginning of the file (cursor might be on the search match)
 | 
			
		||||
    // except when Visual mode is active, so that extending the visual
 | 
			
		||||
    // selection works.
 | 
			
		||||
    if (i == 1 && !result) {  // not found, abort */
 | 
			
		||||
    if (i == 1 && !result) {  // not found, abort
 | 
			
		||||
      curwin->w_cursor = orig_pos;
 | 
			
		||||
      if (VIsual_active) {
 | 
			
		||||
        VIsual = save_VIsual;
 | 
			
		||||
@@ -3677,9 +3677,8 @@ void find_pattern_in_path(char *ptr, Direction dir, size_t len, bool whole, bool
 | 
			
		||||
                                true) & kEqualFiles) {
 | 
			
		||||
            if (type != CHECK_PATH
 | 
			
		||||
                && action == ACTION_SHOW_ALL && files[i].matched) {
 | 
			
		||||
              msg_putchar('\n');  // cursor below last one */
 | 
			
		||||
              if (!got_int) {  // don't display if 'q' typed at "--more--"
 | 
			
		||||
                               // message
 | 
			
		||||
              msg_putchar('\n');  // cursor below last one
 | 
			
		||||
              if (!got_int) {  // don't display if 'q' typed at "--more--" message
 | 
			
		||||
                msg_home_replace_hl(new_fname);
 | 
			
		||||
                msg_puts(_(" (includes previously listed match)"));
 | 
			
		||||
                prev_fname = NULL;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user