*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 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 - will update your workspace libraries for: - **require** statements: `require("nvim-treesitter")` - **module annotations**`---@module "nvim-treesitter"` - 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 won’t 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 plugin manager - **OR** a plugin manager that uses **Neovim**’s native package system INSTALLATION *lazydev.nvim-lazydev.nvim-installation* With 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 vim:tw=78:ts=8:noet:ft=help:norl: