1
Files
flake-nixinator/config/neovim/store/lazy-plugins/vimplugin-nvim-lazydev/doc/lazydev.nvim.txt

160 lines
6.1 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

*lazydev.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 June 04
==============================================================================
Table of Contents *lazydev.nvim-table-of-contents*
1. lazydev.nvim |lazydev.nvim-lazydev.nvim|
- Features |lazydev.nvim-lazydev.nvim-features|
- Limitations |lazydev.nvim-lazydev.nvim-limitations|
- Requirements |lazydev.nvim-lazydev.nvim-requirements|
- Installation |lazydev.nvim-lazydev.nvim-installation|
- Configuration |lazydev.nvim-lazydev.nvim-configuration|
2. Links |lazydev.nvim-links|
==============================================================================
1. lazydev.nvim *lazydev.nvim-lazydev.nvim*
**lazydev.nvim** is a plugin that properly configures LuaLS
<https://luals.github.io/> for editing your **Neovim** config by lazily
updating your workspace libraries.
FEATURES *lazydev.nvim-lazydev.nvim-features*
- much faster auto-completion, since only the modules you `require`
in open Neovim files will be loaded.
- no longer needed to configure what plugin sources you want
to have enabled for a certain project
- load third-party addons from LLS-Addons <https://github.com/LuaLS/LLS-Addons>
- will update your workspace libraries for:
- **require** statements: `require("nvim-treesitter")`
- **module annotations**`---@module "nvim-treesitter"`
- nvim-cmp <https://github.com/hrsh7th/nvim-cmp> completion source for the above
LIMITATIONS *lazydev.nvim-lazydev.nvim-limitations*
- If you have files that only use types from a plugin,
then those types wont be available in your workspace.
- completion for module names when typing `require(...)`
will only return loaded modules in your workspace.
- To get around the above, you can:
- pre-load those plugins with the `library` option.
- use the **nvim-cmp** completion source to get all available modules.
- Neovim types are **NOT** included and also no longer needed
on **Neovim >= 0.10**
REQUIREMENTS *lazydev.nvim-lazydev.nvim-requirements*
- Neovim >= 0.10.0
- lazy.nvim <https://github.com/folke/lazy.nvim> plugin manager
- **OR** a plugin manager that uses **Neovim**s native package system
INSTALLATION *lazydev.nvim-lazydev.nvim-installation*
With lazy.nvim <https://github.com/folke/lazy.nvim>
>lua
return {
{
"folke/lazydev.nvim",
ft = "lua", -- only load on lua files
opts = {
library = {
-- See the configuration section for more details
-- Load luvit types when the `vim.uv` word is found
{ path = "luvit-meta/library", words = { "vim%.uv" } },
},
},
},
{ "Bilal2453/luvit-meta", lazy = true }, -- optional `vim.uv` typings
{ -- optional completion source for require statements and module annotations
"hrsh7th/nvim-cmp",
opts = function(_, opts)
opts.sources = opts.sources or {}
table.insert(opts.sources, {
name = "lazydev",
group_index = 0, -- set group index to 0 to skip loading LuaLS completions
})
end,
},
-- { "folke/neodev.nvim", enabled = false }, -- make sure to uninstall or disable neodev.nvim
}
<
CONFIGURATION *lazydev.nvim-lazydev.nvim-configuration*
[!TIP] You can force enable/disable **lazydev** in certain project folders
using |:h 'exrc'| with `vim.g.lazydev_enabled = true` or `vim.g.lazydev_enabled
= false`
Examples:
>lua
{
"folke/lazydev.nvim",
ft = "lua", -- only load on lua files
opts = {
library = {
-- Library paths can be absolute
"~/projects/my-awesome-lib",
-- Or relative, which means they will be resolved from the plugin dir.
"lazy.nvim",
"luvit-meta/library",
-- It can also be a table with trigger words / mods
-- Only load luvit types when the `vim.uv` word is found
{ path = "luvit-meta/library", words = { "vim%.uv" } },
-- always load the LazyVim library
"LazyVim",
-- Only load the lazyvim library when the `LazyVim` global is found
{ path = "LazyVim", words = { "LazyVim" } },
-- Load the wezterm types when the `wezterm` module is required
-- Needs `justinsgithub/wezterm-types` to be installed
{ path = "wezterm-types", mods = { "wezterm" } },
},
-- always enable unless `vim.g.lazydev_enabled = false`
-- This is the default
enabled = function(root_dir)
return vim.g.lazydev_enabled == nil and true or vim.g.lazydev_enabled
end,
-- disable then a .luarc.json file is found
enabled = function(root_dir)
return not vim.uv.fs_stat(root_dir .. "/.luarc.json")
end,
},
},
<
Default settings:
>lua
---@alias lazydev.Library {path:string, words:string[], mods:string[]}
---@alias lazydev.Library.spec string|{path:string, words?:string[], mods?:string[]}
---@class lazydev.Config
local defaults = {
runtime = vim.env.VIMRUNTIME --[[@as string]],
library = {}, ---@type lazydev.Library.spec[]
-- add the cmp source for completion of:
-- `require "modname"`
-- `---@module "modname"`
cmp = true,
---@type boolean|(fun(root:string):boolean?)
enabled = function(root_dir)
return vim.g.lazydev_enabled == nil and true or vim.g.lazydev_enabled
end,
}
<
==============================================================================
2. Links *lazydev.nvim-links*
1. *2024-06-01_21-02-40*: https://github.com/folke/lazydev.nvim/assets/292349/c5f23225-88eb-454d-9b4e-1bf9183f7ff8
Generated by panvimdoc <https://github.com/kdheepak/panvimdoc>
vim:tw=78:ts=8:noet:ft=help:norl: