Merge #30840 from justinmk/renamehl

This commit is contained in:
Justin M. Keyes 2024-10-20 16:44:39 -07:00 committed by GitHub
commit 86832dcd19
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
18 changed files with 97 additions and 68 deletions

View File

@ -79,6 +79,8 @@ When a (non-experimental) feature is slated to be removed it should:
`v0.10.0-dev-1957+gd676746c33` then use `0.12`.
- For Vimscript features, use `v:lua.vim.deprecate()`. Use the same version
as described for Lua features.
- `vim.deprecate(…, 'x.y.z')` where major version `x` is greater than the
current Nvim major version, is always treated as _soft_ deprecation.
2. Be _hard_ deprecated in a following a release in which it was soft deprecated.
- Use of the deprecated feature will still work but should issue a warning.
- Features implemented in C will need bespoke implementations to communicate

View File

@ -21,6 +21,7 @@ API
LUA
- vim.region() Use |getregionpos()| instead.
- *vim.highlight* Renamed to |vim.hl|.
DIAGNOSTICS
- *vim.diagnostic.goto_next()* Use |vim.diagnostic.jump()| with `{count=1, float=true}` instead.

View File

@ -464,7 +464,7 @@ Use |:Inspect| to view the highlights for a specific token. Use |:hi| or
hi @lsp.mod.deprecated gui=strikethrough " deprecated is crossed out
hi @lsp.typemod.function.async guifg=Blue " async functions are blue
<
The value |vim.highlight.priorities|`.semantic_tokens` is the priority of the
The value |vim.hl.priorities|`.semantic_tokens` is the priority of the
`@lsp.type.*` highlights. The `@lsp.mod.*` and `@lsp.typemod.*` highlights
have priorities one and two higher, respectively.
@ -1780,8 +1780,8 @@ highlight_token({token}, {bufnr}, {client_id}, {hl_group}, {opts})
• {hl_group} (`string`) Highlight group name
• {opts} (`table?`) Optional parameters:
• {priority}? (`integer`, default:
`vim.highlight.priorities.semantic_tokens + 3`)
Priority for the applied extmark.
`vim.hl.priorities.semantic_tokens + 3`) Priority for
the applied extmark.
start({bufnr}, {client_id}, {opts}) *vim.lsp.semantic_tokens.start()*
Start the semantic token highlighting engine for the given buffer with the

View File

@ -552,7 +552,7 @@ This means that if your callback itself takes an (even optional) argument, you
must wrap it in `function() end` to avoid an error:
>lua
vim.api.nvim_create_autocmd('TextYankPost', {
callback = function() vim.highlight.on_yank() end
callback = function() vim.hl.on_yank() end
})
<
(Since unused arguments can be omitted in Lua function definitions, this is
@ -576,7 +576,7 @@ Instead of using a pattern, you can create a buffer-local autocommand (see
Similarly to mappings, you can (and should) add a description using `desc`:
>lua
vim.api.nvim_create_autocmd('TextYankPost', {
callback = function() vim.highlight.on_yank() end,
callback = function() vim.hl.on_yank() end,
desc = "Briefly highlight yanked text"
})
<

View File

@ -636,13 +636,13 @@ A subset of the `vim.*` API is available in threads. This includes:
==============================================================================
VIM.HIGHLIGHT *vim.highlight*
VIM.HL *vim.hl*
vim.highlight.on_yank({opts}) *vim.highlight.on_yank()*
vim.hl.on_yank({opts}) *vim.hl.on_yank()*
Highlight the yanked text during a |TextYankPost| event.
Add the following to your `init.vim`: >vim
autocmd TextYankPost * silent! lua vim.highlight.on_yank {higroup='Visual', timeout=300}
autocmd TextYankPost * silent! lua vim.hl.on_yank {higroup='Visual', timeout=300}
<
Parameters: ~
@ -655,9 +655,9 @@ vim.highlight.on_yank({opts}) *vim.highlight.on_yank()*
true)
• event event structure (default vim.v.event)
• priority integer priority (default
|vim.highlight.priorities|`.user`)
|vim.hl.priorities|`.user`)
vim.highlight.priorities *vim.highlight.priorities*
vim.hl.priorities *vim.hl.priorities*
Table with default priorities used for highlighting:
• `syntax`: `50`, used for standard syntax highlighting
• `treesitter`: `100`, used for treesitter-based highlighting
@ -666,8 +666,8 @@ vim.highlight.priorities *vim.highlight.priorities*
• `user`: `200`, used for user-triggered highlights such as LSP document
symbols or `on_yank` autocommands
*vim.highlight.range()*
vim.highlight.range({bufnr}, {ns}, {higroup}, {start}, {finish}, {opts})
*vim.hl.range()*
vim.hl.range({bufnr}, {ns}, {higroup}, {start}, {finish}, {opts})
Apply highlight group to range of text.
Parameters: ~
@ -684,8 +684,7 @@ vim.highlight.range({bufnr}, {ns}, {higroup}, {start}, {finish}, {opts})
• {inclusive}? (`boolean`, default: `false`) Indicates
whether the range is end-inclusive
• {priority}? (`integer`, default:
`vim.highlight.priorities.user`) Indicates priority of
highlight
`vim.hl.priorities.user`) Highlight priority
==============================================================================

View File

@ -249,7 +249,7 @@ backwards-compatibility cost. Some examples:
Some features are built in that otherwise required external plugins:
- Highlighting the yanked region, see |vim.highlight|.
- Highlighting the yanked region, see |vim.hl|.
ARCHITECTURE

View File

@ -32,7 +32,7 @@ for k, v in pairs({
func = true,
F = true,
lsp = true,
highlight = true,
hl = true,
diagnostic = true,
keymap = true,
ui = true,
@ -1149,16 +1149,22 @@ function vim.deprecate(name, alternative, version, plugin, backtrace)
if plugin == 'Nvim' then
require('vim.deprecated.health').add(name, version, traceback(), alternative)
-- Only issue warning if feature is hard-deprecated as specified by MAINTAIN.md.
-- Example: if removal_version is 0.12 (soft-deprecated since 0.10-dev), show warnings starting at
-- 0.11, including 0.11-dev
-- Show a warning only if feature is hard-deprecated (see MAINTAIN.md).
-- Example: if removal `version` is 0.12 (soft-deprecated since 0.10-dev), show warnings
-- starting at 0.11, including 0.11-dev.
local major, minor = version:match('(%d+)%.(%d+)')
major, minor = tonumber(major), tonumber(minor)
local nvim_major = 0 --- Current Nvim major version.
-- We can't "subtract" from a major version, so:
-- * Always treat `major > nvim_major` as soft-deprecation.
-- * Compare `minor - 1` if `major == nvim_major`.
if major > nvim_major then
return -- Always soft-deprecation (see MAINTAIN.md).
end
local hard_deprecated_since = string.format('nvim-%d.%d', major, minor - 1)
-- Assume there will be no next minor version before bumping up the major version
local is_hard_deprecated = minor == 0 or vim.fn.has(hard_deprecated_since) == 1
if not is_hard_deprecated then
if major == nvim_major and vim.fn.has(hard_deprecated_since) == 0 then
return
end
@ -1191,4 +1197,7 @@ require('vim._options')
---@deprecated
vim.loop = vim.uv
-- Deprecated. Remove at Nvim 2.0
vim.highlight = vim._defer_deprecated_module('vim.highlight', 'vim.hl')
return vim

View File

@ -15,7 +15,7 @@ vim.fs = require('vim.fs')
vim.func = require('vim.func')
vim.glob = require('vim.glob')
vim.health = require('vim.health')
vim.highlight = require('vim.highlight')
vim.hl = require('vim.hl')
vim.iter = require('vim.iter')
vim.keymap = require('vim.keymap')
vim.loader = require('vim.loader')

View File

@ -1498,13 +1498,13 @@ M.handlers.underline = {
end
end
vim.highlight.range(
vim.hl.range(
bufnr,
underline_ns,
higroup,
{ diagnostic.lnum, diagnostic.col },
{ diagnostic.end_lnum, diagnostic.end_col },
{ priority = vim.highlight.priorities.diagnostics }
{ priority = vim.hl.priorities.diagnostics }
)
end
save_extmarks(underline_ns, bufnr)

View File

@ -17,7 +17,7 @@ M.priorities = {
user = 200,
}
--- @class vim.highlight.range.Opts
--- @class vim.hl.range.Opts
--- @inlinedoc
---
--- Type of range. See [getregtype()]
@ -28,8 +28,8 @@ M.priorities = {
--- (default: `false`)
--- @field inclusive? boolean
---
--- Indicates priority of highlight
--- (default: `vim.highlight.priorities.user`)
--- Highlight priority
--- (default: `vim.hl.priorities.user`)
--- @field priority? integer
--- Apply highlight group to range of text.
@ -39,7 +39,7 @@ M.priorities = {
---@param higroup string Highlight group to use for highlighting
---@param start integer[]|string Start of region as a (line, column) tuple or string accepted by |getpos()|
---@param finish integer[]|string End of region as a (line, column) tuple or string accepted by |getpos()|
---@param opts? vim.highlight.range.Opts
---@param opts? vim.hl.range.Opts
function M.range(bufnr, ns, higroup, start, finish, opts)
opts = opts or {}
local regtype = opts.regtype or 'v'
@ -124,7 +124,7 @@ local yank_cancel --- @type fun()?
--- Add the following to your `init.vim`:
---
--- ```vim
--- autocmd TextYankPost * silent! lua vim.highlight.on_yank {higroup='Visual', timeout=300}
--- autocmd TextYankPost * silent! lua vim.hl.on_yank {higroup='Visual', timeout=300}
--- ```
---
--- @param opts table|nil Optional parameters
@ -133,7 +133,7 @@ local yank_cancel --- @type fun()?
--- - on_macro highlight when executing macro (default false)
--- - on_visual highlight when yanking visual selection (default true)
--- - event event structure (default vim.v.event)
--- - priority integer priority (default |vim.highlight.priorities|`.user`)
--- - priority integer priority (default |vim.hl.priorities|`.user`)
function M.on_yank(opts)
vim.validate({
opts = {
@ -145,7 +145,7 @@ function M.on_yank(opts)
return type(t) == 'table'
end
end,
'a table or nil to configure options (see `:h highlight.on_yank`)',
'a table or nil to configure options (see `:h vim.hl.on_yank`)',
},
})
opts = opts or {}

View File

@ -437,7 +437,7 @@ function M.signature_help(_, result, ctx, config)
local fbuf, fwin = util.open_floating_preview(lines, 'markdown', config)
-- Highlight the active parameter.
if hl then
vim.highlight.range(
vim.hl.range(
fbuf,
sig_help_ns,
'LspSignatureActiveParameter',

View File

@ -443,7 +443,7 @@ function STHighlighter:on_win(topline, botline)
vim.api.nvim_buf_set_extmark(self.bufnr, state.namespace, token.line, token.start_col, {
hl_group = hl_group,
end_col = token.end_col,
priority = vim.highlight.priorities.semantic_tokens + delta,
priority = vim.hl.priorities.semantic_tokens + delta,
strict = false,
})
end
@ -723,7 +723,7 @@ end
--- @inlinedoc
---
--- Priority for the applied extmark.
--- (Default: `vim.highlight.priorities.semantic_tokens + 3`)
--- (Default: `vim.hl.priorities.semantic_tokens + 3`)
--- @field priority? integer
--- Highlight a semantic token.
@ -752,7 +752,7 @@ function M.highlight_token(token, bufnr, client_id, hl_group, opts)
end
opts = opts or {}
local priority = opts.priority or vim.highlight.priorities.semantic_tokens + 3
local priority = opts.priority or vim.hl.priorities.semantic_tokens + 3
vim.api.nvim_buf_set_extmark(bufnr, state.namespace, token.line, token.start_col, {
hl_group = hl_group,

View File

@ -2,7 +2,6 @@ local protocol = require('vim.lsp.protocol')
local validate = vim.validate
local api = vim.api
local list_extend = vim.list_extend
local highlight = vim.highlight
local uv = vim.uv
local M = {}
@ -1716,13 +1715,13 @@ do --[[ References ]]
[protocol.DocumentHighlightKind.Write] = 'LspReferenceWrite',
}
local kind = reference['kind'] or protocol.DocumentHighlightKind.Text
highlight.range(
vim.hl.range(
bufnr,
reference_ns,
document_highlight_kind[kind],
{ start_line, start_idx },
{ end_line, end_idx },
{ priority = vim.highlight.priorities.user }
{ priority = vim.hl.priorities.user }
)
end
end

View File

@ -1164,6 +1164,32 @@ function vim._defer_require(root, mod)
})
end
--- @private
--- Creates a module alias/shim that lazy-loads a target module.
---
--- Unlike `vim.defaulttable()` this also:
--- - implements __call
--- - calls vim.deprecate()
---
--- @param old_name string Name of the deprecated module, which will be shimmed.
--- @param new_name string Name of the new module, which will be loaded by require().
function vim._defer_deprecated_module(old_name, new_name)
return setmetatable({}, {
---@param _ table<string, any>
---@param k string
__index = function(_, k)
vim.deprecate(old_name, new_name, '2.0.0', nil, false)
local target = require(new_name)
return target[k]
end,
__call = function(self)
vim.deprecate(old_name, new_name, '2.0.0', nil, false)
local target = require(new_name)
return target(self)
end,
})
end
--- @nodoc
--- @class vim.context.mods
--- @field bo? table<string, any>

View File

@ -328,7 +328,7 @@ local function on_line_impl(self, buf, line, is_spell_nav)
-- The "priority" attribute can be set at the pattern level or on a particular capture
local priority = (
tonumber(metadata.priority or metadata[capture] and metadata[capture].priority)
or vim.highlight.priorities.treesitter
or vim.hl.priorities.treesitter
) + spell_pri_offset
-- The "conceal" attribute can be set at the pattern level or on a particular capture

View File

@ -135,7 +135,7 @@ local config = {
lua = {
filename = 'lua.txt',
section_order = {
'highlight.lua',
'hl.lua',
'diff.lua',
'mpack.lua',
'json.lua',
@ -174,7 +174,7 @@ local config = {
'runtime/lua/vim/filetype.lua',
'runtime/lua/vim/keymap.lua',
'runtime/lua/vim/fs.lua',
'runtime/lua/vim/highlight.lua',
'runtime/lua/vim/hl.lua',
'runtime/lua/vim/secure.lua',
'runtime/lua/vim/version.lua',
'runtime/lua/vim/_inspector.lua',
@ -221,7 +221,7 @@ local config = {
end
if
contains(name, {
'highlight',
'hl',
'mpack',
'json',
'base64',

View File

@ -9,7 +9,7 @@ local command = n.command
local clear = n.clear
local api = n.api
describe('vim.highlight.range', function()
describe('vim.hl.range', function()
local screen
before_each(function()
@ -33,7 +33,7 @@ describe('vim.highlight.range', function()
it('works with charwise selection', function()
exec_lua(function()
local ns = vim.api.nvim_create_namespace('')
vim.highlight.range(0, ns, 'Search', { 1, 5 }, { 3, 10 })
vim.hl.range(0, ns, 'Search', { 1, 5 }, { 3, 10 })
end)
screen:expect([[
^asdfghjkl{1:$} |
@ -48,7 +48,7 @@ describe('vim.highlight.range', function()
it('works with linewise selection', function()
exec_lua(function()
local ns = vim.api.nvim_create_namespace('')
vim.highlight.range(0, ns, 'Search', { 0, 0 }, { 4, 0 }, { regtype = 'V' })
vim.hl.range(0, ns, 'Search', { 0, 0 }, { 4, 0 }, { regtype = 'V' })
end)
screen:expect([[
{10:^asdfghjkl}{100:$} |
@ -63,7 +63,7 @@ describe('vim.highlight.range', function()
it('works with blockwise selection', function()
exec_lua(function()
local ns = vim.api.nvim_create_namespace('')
vim.highlight.range(0, ns, 'Search', { 0, 0 }, { 4, 4 }, { regtype = '\022' })
vim.hl.range(0, ns, 'Search', { 0, 0 }, { 4, 4 }, { regtype = '\022' })
end)
screen:expect([[
{10:^asdf}ghjkl{1:$} |
@ -78,7 +78,7 @@ describe('vim.highlight.range', function()
it('works with blockwise selection with width', function()
exec_lua(function()
local ns = vim.api.nvim_create_namespace('')
vim.highlight.range(0, ns, 'Search', { 0, 4 }, { 4, 7 }, { regtype = '\0226' })
vim.hl.range(0, ns, 'Search', { 0, 4 }, { 4, 7 }, { regtype = '\0226' })
end)
screen:expect([[
^asdf{10:ghjkl}{1:$} |
@ -93,8 +93,8 @@ describe('vim.highlight.range', function()
it('can use -1 or v:maxcol to indicate end of line', function()
exec_lua(function()
local ns = vim.api.nvim_create_namespace('')
vim.highlight.range(0, ns, 'Search', { 0, 4 }, { 1, -1 }, {})
vim.highlight.range(0, ns, 'Search', { 2, 6 }, { 3, vim.v.maxcol }, {})
vim.hl.range(0, ns, 'Search', { 0, 4 }, { 1, -1 }, {})
vim.hl.range(0, ns, 'Search', { 2, 6 }, { 3, vim.v.maxcol }, {})
end)
screen:expect([[
^asdf{10:ghjkl}{100:$} |
@ -107,7 +107,7 @@ describe('vim.highlight.range', function()
end)
end)
describe('vim.highlight.on_yank', function()
describe('vim.hl.on_yank', function()
before_each(function()
clear()
end)
@ -115,7 +115,7 @@ describe('vim.highlight.on_yank', function()
it('does not show errors even if buffer is wiped before timeout', function()
command('new')
exec_lua(function()
vim.highlight.on_yank({
vim.hl.on_yank({
timeout = 10,
on_macro = true,
event = { operator = 'y', regtype = 'v' },
@ -129,10 +129,10 @@ describe('vim.highlight.on_yank', function()
it('does not close timer twice', function()
exec_lua(function()
vim.highlight.on_yank({ timeout = 10, on_macro = true, event = { operator = 'y' } })
vim.hl.on_yank({ timeout = 10, on_macro = true, event = { operator = 'y' } })
vim.uv.sleep(10)
vim.schedule(function()
vim.highlight.on_yank({ timeout = 0, on_macro = true, event = { operator = 'y' } })
vim.hl.on_yank({ timeout = 0, on_macro = true, event = { operator = 'y' } })
end)
end)
eq('', eval('v:errmsg'))
@ -143,7 +143,7 @@ describe('vim.highlight.on_yank', function()
exec_lua(function()
vim.api.nvim_buf_set_mark(0, '[', 1, 1, {})
vim.api.nvim_buf_set_mark(0, ']', 1, 1, {})
vim.highlight.on_yank({ timeout = math.huge, on_macro = true, event = { operator = 'y' } })
vim.hl.on_yank({ timeout = math.huge, on_macro = true, event = { operator = 'y' } })
end)
local ns = api.nvim_create_namespace('hlyank')
local win = api.nvim_get_current_win()
@ -157,7 +157,7 @@ describe('vim.highlight.on_yank', function()
exec_lua(function()
vim.api.nvim_buf_set_mark(0, '[', 1, 1, {})
vim.api.nvim_buf_set_mark(0, ']', 1, 1, {})
vim.highlight.on_yank({ timeout = math.huge, on_macro = true, event = { operator = 'y' } })
vim.hl.on_yank({ timeout = math.huge, on_macro = true, event = { operator = 'y' } })
end)
local ns = api.nvim_create_namespace('hlyank')
eq(api.nvim_get_current_win(), api.nvim__ns_get(ns).wins[1])
@ -165,7 +165,7 @@ describe('vim.highlight.on_yank', function()
exec_lua(function()
vim.api.nvim_buf_set_mark(0, '[', 1, 1, {})
vim.api.nvim_buf_set_mark(0, ']', 1, 1, {})
vim.highlight.on_yank({ timeout = math.huge, on_macro = true, event = { operator = 'y' } })
vim.hl.on_yank({ timeout = math.huge, on_macro = true, event = { operator = 'y' } })
end)
local win = api.nvim_get_current_win()
eq({ win }, api.nvim__ns_get(ns).wins)

View File

@ -155,10 +155,10 @@ describe('lua stdlib', function()
end)
it('plugin=nil, no error if soft-deprecated', function()
eq(
vim.NIL,
exec_lua('return vim.deprecate(...)', 'foo.baz()', 'foo.better_baz()', '0.99.0')
)
eq(vim.NIL, exec_lua [[return vim.deprecate('old1', 'new1', '0.99.0')]])
-- Major version > current Nvim major is always "soft-deprecated".
-- XXX: This is also a reminder to update the hardcoded `nvim_major`, when Nvim reaches 1.0.
eq(vim.NIL, exec_lua [[return vim.deprecate('old2', 'new2', '1.0.0')]])
end)
it('plugin=nil, show error if hard-deprecated', function()
@ -175,13 +175,6 @@ describe('lua stdlib', function()
)
end)
it('plugin=nil, to be deleted in the next major version (1.0)', function()
eq(
[[foo.baz() is deprecated. Run ":checkhealth vim.deprecated" for more information]],
exec_lua [[ return vim.deprecate('foo.baz()', nil, '1.0') ]]
)
end)
it('plugin specified', function()
-- When `plugin` is specified, don't show ":help deprecated". #22235
eq(