{"id":13409832,"url":"https://github.com/alexaandru/nvim-lspupdate","last_synced_at":"2025-10-28T11:31:57.754Z","repository":{"id":46126372,"uuid":"333080010","full_name":"alexaandru/nvim-lspupdate","owner":"alexaandru","description":"Updates installed LSP servers, automatically","archived":false,"fork":false,"pushed_at":"2024-02-28T17:48:27.000Z","size":188,"stargazers_count":91,"open_issues_count":1,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-09-29T01:43:02.781Z","etag":null,"topics":["lsp","neovim","nvim"],"latest_commit_sha":null,"homepage":"","language":"Fennel","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alexaandru.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-26T12:36:02.000Z","updated_at":"2024-09-18T10:19:45.000Z","dependencies_parsed_at":"2024-04-12T00:41:13.377Z","dependency_job_id":"19b7d4bd-c3c4-4cbe-9e7d-b8bdd78eecfd","html_url":"https://github.com/alexaandru/nvim-lspupdate","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexaandru%2Fnvim-lspupdate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexaandru%2Fnvim-lspupdate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexaandru%2Fnvim-lspupdate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexaandru%2Fnvim-lspupdate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexaandru","download_url":"https://codeload.github.com/alexaandru/nvim-lspupdate/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219859638,"owners_count":16556035,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["lsp","neovim","nvim"],"created_at":"2024-07-30T20:01:03.625Z","updated_at":"2025-10-28T11:31:57.447Z","avatar_url":"https://github.com/alexaandru.png","language":"Fennel","funding_links":[],"categories":["LSP","Fennel"],"sub_categories":["(requires Neovim 0.5)"],"readme":"# Neovim LSP Update\n\n![Test](https://github.com/alexaandru/nvim-lspupdate/workflows/Test/badge.svg)\n![Open issues](https://img.shields.io/github/issues/alexaandru/nvim-lspupdate.svg)\n![License](https://img.shields.io/badge/License-MIT-blue.svg)\n\nUpdates installed (or auto installs if missing) LSP servers, that are already\nconfigured in your `init.vim`.\n\nIt does NOT handle (auto)removals, i.e. if you had a LSP\nserver installed and then removed it's config, it will NOT\nremove it. Only installs and/or updates are supported.\n\nYou can see it below in action:\n\nhttps://user-images.githubusercontent.com/85237/129180498-11457175-5cfb-4085-a2a0-51745f56ee70.mp4\n\n**NOTE:** your user must be able to perform installs of packages corresponding to the LSPs\nyou will be using. I.e. if you install `npm` based LSPs, then you must be able to\nrun `npm i -g ...` successfully, **WITHOUT** sudo. That is the best practice anyway,\nyou should in general install \"global\" packages (whether we talk about NodeJS, Ruby,\nPython or whatever) under your user and not at system level.\n\nPlease refer to http://npm.github.io/installation-setup-docs/installing/a-note-on-permissions.html\nfor setup instructions for NodeJS (which covers many of the LSPs available). For\nLSPs in other languages, please refer to their own documentation for installing,\nand best practices for setting up the environment.\n\n## Install\n\nAdd `alexaandru/nvim-lspupdate` plugin to your `init.vim`, using your favorite\npackage manager, e.g.:\n\n```\npackadd nvim-lspupdate\n```\n\n### Dependencies\n\n- [Neovim 0.5+](https://github.com/neovim/neovim/releases/tag/v0.5.0)\n- [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig)\n- OPTIONAL: [Hotpot](https://github.com/rktjmp/hotpot.nvim) if you want\n  to run the `fennel` branch directly. That is where all development takes\n  place, but the `main` branch is feed off of it, and kept up to date. So\n  it's down to preference, which one to use.\n\n## Config\n\nI wrote this plugin as I did NOT want to manage installs manually anymore,\ntherefore I made it so that it requires NO configuration. It should work\nout of the box for the supported configurations ([see status](#status)).\n\nIf you really want to tinker with it, [you can](CONFIG.md).\n\n## Usage\n\nSee [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig#quickstart) on\nhow to setup the LSP servers' configuration. Once you have them configured\n(or any time later, for updates), then run:\n\n```\n:LspUpdate [dry]\n```\n\nand it will install any missing LSP servers as well as update the existing ones,\nwhere possible (see below).\n\nHint: use `:checkhealth lspconfig` before/after to verify that the LSPs were\ninstalled.\n\nIf the dry parameter is passed, then commands are only printed but not actually run.\n\nThe installs are async (using jobstart()) with one exception (gh_bin install type,\nsee below) so you can just fire \u0026 forget, and sometime later, check with `:messages`.\n\nWhen all the jobs are completed it will print an \"All done!\" message.\n\n## Status\n\nMix of **`stable`**, `beta` and \u003cs\u003enot (yet) supported\u003c/s\u003e.\n\nAbout 2/3 of the servers have [a config and a command](fnl/lspupdate/config.fnl)\ndefined. Of those, the following were battle tested by me or others: **`npm`**,\n**`pip`**, **`go`**, **`cargogit`**, **`r`**, **`gem`** and **`gh_bin`**. These\nare what I consider **`stable`**.\n\nThe others that do have a config and a command defined, but were not yet\ntested (`cargo`, `nix`, etc.) I would consider `beta`. In theory, they may\nwork, just need beta testers :) If you do use them and they work, please\nlet me know so I can update this README accordingly.\n\nThose that do not even have a config or command defined are, obviously,\nnot supported.\n\n### Github binary releases\n\nWe now have support for Github binary releases (gh_bin \"pseudo command\") with\n`terraform-ls` being the first to be tested successfully, on Linux.\n\nTo support this type of update, there are additional dependencies/requirements:\n\n- `curl` (used to download the .zip files);\n- `unzip` (used to unzip them).\n- the repo name, .zip file prefix and binary file inside the .zip are identical\n  (i.e. hashicorp/terraform-ls has terraform-ls.\\*.zip assets which include a\n  terraform-ls binary, well except for Windows, which also has .exe suffix).\n\n## Roadmap\n\nIn no particular order:\n\n- support updating tools other than LSPs themselves. This is mostly related\n  to \"LSP proxies\" like EFM, which by themselves offer nothing. You need to\n  install some tools (linters, formatters) in order for them to do anything\n  useful. I'd like to be able to install/update those tools as well,\n  preferably detected them automatically, just like we do for LSPs;\n- ensure it runs well on all of {Linux,MacOS,Windows};\n- integration tests.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexaandru%2Fnvim-lspupdate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexaandru%2Fnvim-lspupdate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexaandru%2Fnvim-lspupdate/lists"}