
























A major Neovim release (version 0.12) has been released a few days ago, after more than one year from the last major release (version 0.11). The following is a list of feature I am interested. For a complete set of features, check full changelog and news.
vim.pack#Now you can use the builtin vim.pack API to manage your plugins.
Check this detailed post if you want to migrate to vim.pack.
Now you can restart nvim without quitting with :restart command.
It makes sense to work with a session management plugin,
otherwise you are just going to the start page.
There is now a :lsp command with sub-command to control LSP behavior.
However, the command LspInfo, LspRestart, LspLog are not there any more.
Here is a snippet to define them:
vim.api.nvim_create_user_command("LspInfo", "checkhealth vim.lsp", {
desc = "Show LSP Info",
})
vim.api.nvim_create_user_command("LspLog", function(_)
local state_path = vim.fn.stdpath("state")
local log_path = vim.fs.joinpath(state_path, "lsp.log")
vim.cmd(string.format("edit %s", log_path))
end, {
desc = "Show LSP log",
})
vim.api.nvim_create_user_command("LspRestart", "lsp restart", {
desc = "Restart LSP",
})LspProgress#It works on Ghostty terminal:
vim.api.nvim_create_autocmd("LspProgress", {
callback = function(ev)
vim.print(ev.data)
local value = ev.data.params.value
vim.api.nvim_echo({ { value.message or "done" } }, false, {
id = "lsp." .. ev.data.client_id,
kind = "progress",
source = "vim.lsp",
title = value.title,
status = value.kind ~= "end" and "running" or "success",
percent = value.percentage,
})
end,
})See also this discussion.
With UI2, there is not more annoying “Press Enter” prompt after you run a command. To enable it:
require("vim._core.ui2").enable {
enable = true,
msg = { -- Options related to the message module.
---@type 'cmd'|'msg' Default message target, either in the
---cmdline or in a separate ephemeral message window.
---@type string|table<string, 'cmd'|'msg'|'pager'> Default message target
---or table mapping |ui-messages| kinds and triggers to a target.
targets = "cmd",
cmd = { -- Options related to messages in the cmdline window.
height = 0.5, -- Maximum height while expanded for messages beyond 'cmdheight'.
},
dialog = { -- Options related to dialog window.
height = 0.5, -- Maximum height.
},
msg = { -- Options related to msg window.
height = 0.5, -- Maximum height.
timeout = 4000, -- Time a message is visible in the message window.
},
pager = { -- Options related to message window.
height = 0.5, -- Maximum height.
},
},
}You can check the output of command output in real buffer!
If you have ever dealth with the output of :highlight or :map, you know how convenient the new UI is.
Default mapping g< to check the full message (make sure this mapping is not taken by other plugins)
These are not enabled by default, you need to enable them manually.
packadd nvim.undotree
Once enabled, you can use :Undotree to check your undo history interactively.
packadd nvim.difftool
Once enabled, you can use :DiffTool to compare two files or directories.
The method nvim_set_hl now has an update option to update a certain attribute of a highlight group.
vim.api.nvim_set_hl(0, "FloatBorder", { fg = "LightGreen", update = true })The above code will update the fg attribute of FloatBorder without affecting other attributes.
This is useful if you want to “fix” a highlight.
With vim.net.request(), it is possible to make get request and handle it.
You can now “edit” a URL: :edit https://api.github.com/repos/neovim/neovim,
which is powered by this API.
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。