Guide: Structuring Lua plugins

This page summarizes the projects mentioned and recommended in the original post on /r/neovim

Our great sponsors
  • WorkOS - The modern API for authentication & user identity.
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • Onboard AI - ChatGPT with full context of any GitHub repo.
  • nvim

    🍨 Soothing pastel theme for (Neo)vim

    I wanted to make a post here but I get shadow banned for not having enough reddit karma :< (I used these to make catppuccin.nvim startup in 1ms)

  • nvim-dap

    Debug Adapter Protocol client implementation for Neovim

    It's not obvious from the website, but this is the blog of GitHub user @mfussenegger, who is a Neovim core member, one of the primary maintainers of Neovim's LSP client implementation, and the other of several excellent plugins.

  • WorkOS

    The modern API for authentication & user identity. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

  • nvim-jdtls

    Extensions for the built-in LSP support in Neovim for eclipse.jdt.ls

    It's not obvious from the website, but this is the blog of GitHub user @mfussenegger, who is a Neovim core member, one of the primary maintainers of Neovim's LSP client implementation, and the other of several excellent plugins.

  • nvim-lint

    An asynchronous linter plugin for Neovim complementary to the built-in Language Server Protocol support.

    It's not obvious from the website, but this is the blog of GitHub user @mfussenegger, who is a Neovim core member, one of the primary maintainers of Neovim's LSP client implementation, and the other of several excellent plugins.

  • persistence.nvim

    💾 Simple session management for Neovim

    I like the idea of a "config" module. Plugins like persistence and mason.nvim have it, they allow you to set variables without calling the main module.

  • mason.nvim

    Portable package manager for Neovim that runs everywhere Neovim runs. Easily install and manage LSP servers, DAP servers, linters, and formatters.

    I like the idea of a "config" module. Plugins like persistence and mason.nvim have it, they allow you to set variables without calling the main module.

  • impatient.nvim

    Improve startup time for Neovim

    :lua vim.pretty_print(vim.mpack.decode(vim.mpack.encode({some = { thing = false }}))) used by impatient.nvim

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

  • vim-illuminate

    illuminate.vim - (Neo)Vim plugin for automatically highlighting other uses of the word under the cursor using either LSP, Tree-sitter, or regex matching.

    +1, I avoided .setup in vim-illuminate and had a github comment explaining why it started and the alternative I went with, https://github.com/RRethy/vim-illuminate/issues/112. Got a lot of push-back on reddit for that. Happy to see some others dislike that useless convention.

  • leap.nvim

    Neovim's answer to the mouse 🦘

    +1. I've already taken the first step.

  • neovim-plugin

    I'm pretty sure we got started down the .setup road because of this article by norcalli a few years ago. It was published when plugins started using Lua and suddenly I went from seeing one or two plugins using .setup to literally every single plugin use it.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts