lazy.nvim/CHANGELOG.md

45 KiB

Changelog

7.3.0 (2022-12-27)

Features

  • plugin: added Plugin.priority for start plugins (edf8310)
  • profile: added accurate startuptime to ui/stats/docs (a2fdf36)
  • reloader: trigger LazyReload when changes were detected and after reload. Fixes #178 (4e4493b)
  • ui: added new section specifically for updates (3b46160)
  • util: use treesitter to highlight notify messages when available (d1739cb)

Bug Fixes

  • cache: never use packer paths from cache (bb53b84)
  • ft: always trigger FileType when lazy-loading on ft (5618076)
  • plugin: find plugins with /lua/ instead of /lua (8a3152d)
  • plugin: pass plugin as arg to config/init/build (b6ebed5)
  • reloader: remove extra trailing separator (#180) (c4d924a)
  • ui: removed newlines from profile tab (0d0d11a)

7.2.0 (2022-12-26)

Features

  • cache: make ttl configurable (4aa362e)
  • plugin: added Plugin.cond. Fixes #89, #168 (aed842a)
  • ui: made all highlight groups and icons configurable (0ea771b)
  • ui: make lazy icon configurable (#163) (8ea9d8b)
  • ui: re-render after resize. Fixes #174 (9a2ecc8)

Bug Fixes

  • diff: use git show when only displaying one commit (#155) (037f242)
  • keys: don't escape pendig keys twice and only convert when number (46280a1)
  • keys: only delete key handler mappings once (9837d5b)
  • loader: add proper error message when trying to load a plugin that doesn't exist. Fixes #160 (9095223)
  • ui: get plugin details from the correct plugin in case it was deleted (2f5c1be)

7.1.0 (2022-12-24)

Features

  • build: build can now be a list to execute multiple build commands. Fixes #143 (9110371)
  • manage: added user events when operations finish. Fixes #135 (a36d506)
  • ui: added custom commands for lazygit and opening a terminal for a plugin (be3909c)
  • ui: added multiple options for diff command (7d02da2)
  • ui: you can now hover over a plugin to open a diff of updates or the plugin homepage (593d6e4)
  • util method to open a float (7c2eb15)
  • util: open terminal commands in a float (8ad05fe)

Bug Fixes

  • checker: update updated after every manage operation. Fixes #141 (86f2c67)
  • help: make sure we always generate lazy helptags (f360e33)
  • manage: only clear plugins for the op instead of all (fc182f7)
  • plugin list can be string[]. Fixes #145 (74d8b8e)

7.0.0 (2022-12-23)

⚠ BREAKING CHANGES

  • default lazy cache path is now under cache instead of state
  • init() no longer implies lazy-loading. Add lazy=false for affected plugins
  • run init() before loading start plugins. Fixes #107

Features

  • init() no longer implies lazy-loading. Add lazy=false for affected plugins (8112640)
  • loader: automatically lazy-load colorschemes (07b4677)
  • spec: config can be true or a table that will be passed to require("plugin").setup(config) (2a7b004)
  • spec: allow using plugin names in dependencies (4bf771a)
  • ui: added options to sort/filter profiling data (7dfb9c1)

Bug Fixes

  • added error message to debug failing extmarks #117 (65e9036)
  • checker: dont report updates on install during startup (8251c23)
  • install: make sure to setup loaders before attempting install so colorscheme can load. Fixes #122 (7b9b476)
  • keys: don't create with remap! (b440b3a)
  • keys: dont delete handlers manually. Let loader do that (72b3899)
  • keys: key handlers were not working after reload (3f60f2d)
  • manage: do not reload pugins on clear (b5d6afc)
  • pass plugins instead of plugin names to command. Fixes #103 (42f5aa7)
  • remove debug print (08d458c)
  • remove lazy keymaps with the correct mode. Fixes #97 (56890ce)
  • run init() before loading start plugins. Fixes #107 (2756a6f)
  • ui: fix buffer being properly deleted (#112) (9e98389)
  • ui: fixed extmarks while wrapping. Fixes #124 (e973323)
  • ui: sort profiling chronological by default (50e3b91)

Code Refactoring

  • default lazy cache path is now under cache instead of state (cc6276e)

6.0.0 (2022-12-22)

⚠ BREAKING CHANGES

  • lazy api commands now take an opts table instead of a list of plugins

Features

  • added support for nvim --headless "+Lazy! sync" +qa (2e14a2f)
  • checker: defer checker to after VeryLazy to make sure nvim-notify and others are loaded (fd1fbef)
  • keys: more advanced options for setting lazy key mappings (1c07ea1)
  • lazy api commands now take an opts table instead of a list of plugins (bc61747)
  • ui: show modpaths in debug (6304231)

Bug Fixes

  • cache: overwrite cache entry with new modpath when loading a file. Fixes #90 (2200284)
  • clean: update lockfile on clean (#88) (dd9648f)
  • cmd: allow ranges. Fixes #93 (c0c2e1b)
  • git: make sure we properly fetch git submodules. Fixes #72 (7f6f31d)
  • git: remove --also-filter-submodules. Fixes #86 #83 (488b487)
  • install: update lockfile also on install (4cf176b)
  • removed spell again from site. not needed. can download in config/spell (58f0876)
  • rtp: keep site in rtp (94d0125)
  • show mapleader warning with vim.schedule. Fixes #91 (28f1511)

5.2.0 (2022-12-21)

Features

  • loader: allow to add extra paths to rtp reset. Fixes #64 (876f7bd)
  • loader: warn when mapleader is changed after init (4ca3039)
  • make hover easy to override (f0e1b85)
  • plugin: allow plugin files only without a main plugin module. Fixes #53 (44f80a7)
  • util: utility method to get sync process output (e95da35)

Bug Fixes

  • cache: if we can't load from the cache modpath, find path again instead of erroring right away (a345649)
  • checker: allow git checks only for non-pinned plugins (#61) (a939243)
  • git: dereference tag refs. Fixes #54 (86eaa11)
  • git: only mark a plugin as dirty if an update changed the commit HEAD. Fixes #62 (bbace14)
  • health: don't show warning on module=false (c228908)
  • help: sort tags files for readmes so tags work properly. Fixes #67 (2fd78fb)
  • keys: feedkeys should include pending keys. Fixes #71 (2ab6518)
  • loader: lua modules can be links instead of files. Fixes #66 (b7c489b)
  • loader: source rtp /plugin files after loading start plugins. Fixes (ff24f49)
  • strip / from dirs. Fixes #60 (540847b)
  • ui: install command can have plugins as a parameter (232232d)
  • ui: set current win only when its valid (3814883)

5.1.0 (2022-12-20)

Features

  • added options to configure change detection. Fixes #32 (6c767a6)
  • ui: make the windoww size configurable. Fixes #34 (941df31)

Bug Fixes

  • add filetype to window buffer. (#41) (897d6df)
  • git: don't run git log for submodules. Fixes #33 (9d12cdc)
  • loader: source filetype.lua before plugins. Fixes #35 (ffcd0ab)
  • spec: only process a spec once (b193f96)
  • use nvim_feekeys instead of nvim_input for keys handler. Fixes #28 (5298441)

Performance Improvements

  • ui: clear existing extmarks before rendering (06ac8bd)

5.0.1 (2022-12-20)

Bug Fixes

  • add neovim libs to rtp for treesitter parsers etc (df6c986)
  • always set Config.me regardless of reset rtp (992c679)
  • build: use the shell to execute build commands (1371a14)
  • cache: if mod is loaded already in the loader, then return that (ffabe91)
  • checker should not error on non-existing dirs (ddf36d7)
  • deepcopy lazyspec before processing (6e32759)
  • default logs are now since 3 days ago to be in line with the docs (e9d3a73)
  • dont autoload cached modules when module=false (316503f)
  • move re-sourcing check to the top (6404d42)
  • only run updated checker for installed plugins. Fixes #16 (ae644a6)
  • show error when merging, but continue (f78d8bf)
  • use jobstart instead of system to open urls (1754056)

5.0.0 (2022-12-20)

⚠ BREAKING CHANGES

  • removed the LazyUpdate etc commands. sub-commands only from now on

Features

  • added :Lazy load foobar.nvim to load a plugin (2dd6230)
  • added module=false to skip auto-loading of plugins on require (1efa710)
  • added completion for all lazy commands (5ed9855)
  • added support for Windows (bb1c2f4)
  • removed the LazyUpdate etc commands. sub-commands only from now on (d4aee27)
  • utility method to normalize a path (198963f)

Bug Fixes

  • cache: do a fast check to see if a cached modpath is still valid. find it again otherwise (32f2b71)
  • cache: normalize paths (62c1542)
  • check for installed plugins with plain find (a189883)
  • ui: focus Lazy window when auto-installing plugins in VimEnter (1fe43f3)
  • util: fixed double slashes (af87108)

Performance Improvements

  • cache: cache loadfile and no find modpaths without package.loaders (faac2dd)
  • lazy-load the commands available on the lazy module (b89e6bf)

4.2.0 (2022-12-18)

Features

  • check if ffi is available and error if not (c0d3617)
  • expose all commands on main lazy module (f25f942)
  • loader: added error handler to sourcing of runtime files (eeb06a5)
  • never source packer_compiled.lua (a46c0c0)
  • ui: added dir to props (9736671)
  • ui: added help for <CR> on a plugin (c87673c)
  • ui: made it look a little less like a Mason rip-off :) (9026a0e)
  • ui: make home bold (0b4a04d)

Bug Fixes

  • loader: runtime files are now sourced alphabetically per directory (5c0c381)
  • set correct dir for lazy plugin (23984dd)
  • ui: always clear complete tasks with the same name when starting a new task (85e3752)
  • ui: show first tag for each help doc in details (6f728e6)
  • ui: split window before opening a file from the Lazy ui, otherwise it'll get closed immediately (f18efa1)

4.1.0 (2022-12-16)

Features

  • docs: added toc generator (f4720ee)
  • lua code generator for the README.md (80a7839)
  • README.md files are now automagically added to help. By default only when no doc/ exists (70ca110)
  • utility methods to read/write files (27178b5)

Bug Fixes

  • Plugin.init implies lazy-loading (ccdf65b)
  • add lazy.nvim with dev=false to prevent using the dev version for myself (b8fa6f9)
  • bootstrap code now uses git url instead of https for beta testers + fixed rtp path (17d1653)
  • use initial rtp for rtp plugin after files and use loaded plugins for their after files (7134417)

Performance Improvements

  • prevent string.match to find plugin name from a modpath (f23a6ee)
  • when reloading plugin specs always use cache (060cf23)

4.0.0 (2022-12-14)

⚠ BREAKING CHANGES

  • lazy now handles the full startup sequence (vim.go.loadplugins=false)

Features

  • added checks for Neovim version (72f64ce)
  • getter for plugins (8de617c)
  • lazy now handles the full startup sequence (vim.go.loadplugins=false) (ec2f432)
  • ui: show updates available diagnostic when an update is available (ad0b4ca)

Bug Fixes

  • destroy the cache when VIMRUNTIME has changed (5128d89)
  • updated the bootstrap code (1ee4e8b)

3.0.0 (2022-12-13)

⚠ BREAKING CHANGES

  • local plugins now always need to set Plugin.dir

Features

  • added health checks (dc2dcd2)
  • api: return runner from manage operations (71e4b92)
  • better way of dealing with lazy loaded completions (thanks to @lewis6991) (f24c055)
  • checker: only report an update once and do a fast update check after each manage operation (2a7466a)
  • local plugins now always need to set Plugin.dir (0625493)
  • ui: added statusline component to show pending updates (315be83)
  • ui: added update checker (65cd28e)

Bug Fixes

  • dev plugins with dev=false should be configured as remote (43b303b)
  • replace ~ by HOME for Plugin.dir (12ded3f)
  • ui: open with noautocmd=true and close with vim.schedule to prevent weird errors by other plugins (08d081f)

Performance Improvements

  • added profiling for sourcing of runtime files (be509c0)

2.2.0 (2022-12-05)

Features

  • cleanup keys/cmd handlers when loading a plugin (3f517ab)
  • dont run setup again when a user re-sources their config & show a warning (7b945ee)
  • ui: added debug interface to inspect active handlers and the module cache (6d68cc6)
  • ui: show any helps files and added hover handler (13b5688)
  • util.foreach with sorted keys (d36ad41)

Bug Fixes

  • always add config/after to rtp (c98e722)
  • ui: always show branch name in details (6e44be0)

Performance Improvements

  • disable cache by default on VimEnter or on BufReadPre (b2727d9)

2.1.0 (2022-12-03)

Features

  • Plugin.local to use a local project instead of fetching remote (0ba218a)
  • Plugin.specs() can now reload and keeps existing state (330dbe7)
  • added debug option (e4cf8b1)
  • automatically detect config module changes in or oustside Neovim and reload (7b272b6)
  • for event=, fire any new autocmds created by loading the plugins for the event (ebf15fc)
  • moved Config.package.reset -> Config.performance.reset_packpath (fe6b0b0)
  • plugins no longer need to be installed under site/pack/*/opt (dbe2d09)
  • symlinking local plugins is no longer needed (37c7366)
  • temporary colorscheme to use during install during startup (7ec65e4)

Bug Fixes

  • add plugin after dir to rtp for start plugins so it gets picked up during startup (93d3072)
  • fs: dont set cloned=true if symlink already existed (3e143c6)
  • git: fixed branch detection, get target commit from origin and always checkout a tag or commit so we dont need to use git merge (ae379a6)
  • respect --noplugin (59fb050)
  • return nil when fs_stat fails and return nil in module loader (afcba52)
  • source plugin files for plugins that want to run a build script during startup (3ed24ba)
  • temporary colorscheme should only load when installing (ec858db)

Performance Improvements

  • added option to reset rtp to just your config and the neovim runtime (ccc506d)
  • caching strategy is now configurable (6fe425c)

2.0.0 (2022-12-02)

⚠ BREAKING CHANGES

  • plugins are now automatically loaded on require. module= no longer needed!
  • all plugins are now opt. Plugin.opt => Plugin.lazy
  • renamed Plugin.run => Plugin.build

Features

  • all plugins are now opt. Plugin.opt => Plugin.lazy (5134e79)
  • lazy setup with either a plugins module, or a plugins spec (af8b8e1)
  • plugins are now automatically loaded on require. module= no longer needed! (575421b)
  • renamed Plugin.run => Plugin.build (042aaa4)
  • show module source if loading source is under config (041a716)
  • ui: better detection of plugins/config files that loaded a plugin (723274e)
  • ui: improvements to profiling and rendering of loaded reasons (714bc0a)

Bug Fixes

  • always overwrite any plugin spec for lazy.nvim to manage itself (d46bc77)
  • prepend package path to packpath if package.reset=false (5eb2622)
  • ui: use Plugin.find to detect loading reason (98ccf55)

Performance Improvements

  • module now caches all lua modules used till VimEnter (0b6dec4)
  • reset packpath to only include the lazy package. Improved my startup time by 2ms (4653119)

1.2.0 (2022-11-30)

Features

  • added config option for process timeout (bd2d642)
  • allow config of default for version field (fb96183)
  • config for ui border (0cff878)
  • config option for runner concurrency (b2339ad)
  • config option for ui throttle (a197f75)
  • config option install_missing=true (9be3d3d)

Bug Fixes

  • show proper installed/clean state for local plugins (1e2f527)
  • update state after running operation so the ui reflects any changes from cleaning (0369278)

Performance Improvements

  • merge module/cache and use ffi to pack cache data (e1c08d6)
  • removed partial spec caching. not worth the tiny performance boost (4438faf)
  • run cache autosave after loading (3ec5a2c)

1.1.0 (2022-11-29)

Features

  • dependencies are opt=true by default if they only appear as a dep (908b9ad)
  • lazy handler implies opt=true (b796abc)

Bug Fixes

  • make sure Plugin.opt is always a boolean (ca78dd7)

Performance Improvements

  • dont loop over handlers to determine if a plugin should be opt=true (812bb3c)

1.0.0 (2022-11-29)

⚠ BREAKING CHANGES

  • added icons

Features

  • a gazilion rendering improvements (a11fc5a)
  • added "Lazy check" to check for updates without updating (63cf2a5)
  • added bootstrap code (ceeeda3)
  • added full semver and range parsing (f54c24a)
  • added icons (c046b1f)
  • added keybindings to update/install/clean/restore/... single plugins (08b7e42)
  • added lockfile support (4384d0e)
  • added profiler view (20ff5fa)
  • added section with logs containing breaking changes (d7dbe1a)
  • added support for Plugin.lock (wont update) (0774f1b)
  • added vimdoc/release-please/tests (e9a1e9f)
  • default log is last 10 entries (54a82ad)
  • detect headless and set interactive=false (bad1b1f)
  • error handler for loading modules, config and init, with custom error formatting (7933ae1)
  • git log (3218c2d)
  • git log config (3e4f846)
  • initial commit (e73626a)
  • keep track what loaded a plugin (4df73f1)
  • lazy caching now works with functions that have upvalues (fe33e4e)
  • lazy commands (ae0b871)
  • lazy view (a87982f)
  • load plugin on cmd complete and make completion just work (2080694)
  • lots of improvements to pipeline runner and converted all tasks to new system (fb84c08)
  • new git module to work with branches, tags & versions (2abdc68)
  • new render features like profile etc (48199f8)
  • new task pipeline runner (ab1b512)
  • plugin manager tasks (a612e6f)
  • return whether a module was loaded from cache or from file (dirty) (38e2711)
  • task docs and options for logs (fe6d0b1)
  • text: center text (88869e6)
  • text: multiline support and pattern highlights (815bb2c)
  • url open handlers (6f835ab)
  • util.info (e59dc37)
  • view: modes and help (0db98bf)

Bug Fixes

  • always recaclulate hash when loading a module (cfc3933)
  • check for lazy before setting loading time (30bdc9b)
  • clean (7f4743a)
  • correctly handle changes from local to remote plugin (4de10f9)
  • decompilation fixes (57d024e)
  • dont return init.lua in lsmod (413dd5b)
  • first line of file (c749404)
  • get current branch if remote head not available (for local repos only) (d486bc5)
  • highlights (35b1f98)
  • log errors in runner (7303017)
  • make sure we have ran on_exit before returning is_done=true (782d287)
  • manage opts show => interactive (93a3a6c)
  • only save state when dirty (32ca1c4)
  • recalculate loaders on config file change (870d892)
  • reset diagnostics when lazy view buffer closes (04dea38)
  • show view with schedule to prevent Neovim crash when no plugins are installed (5d84967)
  • support adding top-level lua directories (7288962)
  • support local files as plugin spec (0233460)
  • tasks: always set updated on checkout. Change default logging to 3 days (5bcdddc)
  • view: handler details (bbad0cb)
  • when just cloned, never commit lock (32fa5f8)

Performance Improvements

  • cache handler groups (42c2fb4)
  • copy reason without deepcopy (72d51ce)
  • fast return for Util.ls when file found (073b5e3)
  • further optims to loading and caching specs. dont cache specs with plugin that have init or in start with config (8790070)
  • split caching in state, cache and module (54d5ff1)
  • tons of performance improvements. Lazy should now load in about 1.5ms for 97 plugins (2507fd5)
  • way better compilation and caching (a543134)