Skip to content

Latest commit

 

History

History
113 lines (96 loc) · 5.67 KB

README.md

File metadata and controls

113 lines (96 loc) · 5.67 KB

Configuration

This repository provides a modular and extensible Neovim configuration using Lazy.nvim and other plugins. Below is the structure of the configuration and the details of the plugins used.

📂 File Structure

❯ tree
.
├── init.lua
├── lazy-lock.json
└── lua
    └── pygaiwan
        ├── init.lua
        ├── keymaps.lua
        ├── lazy
        │   ├── languages
        │   │   ├── formatting.lua
        │   │   ├── linting.lua
        │   │   ├── lspconfig
        │   │   │   ├── configs
        │   │   │   │   ├── biome.lua
        │   │   │   │   ├── lua_ls.lua
        │   │   │   │   ├── pyright.lua
        │   │   │   │   └── ts_ls.lua
        │   │   │   └── utils.lua
        │   │   ├── lsp.lua
        │   │   ├── python
        │   │   │   ├── debugger.lua
        │   │   │   ├── debugger_ui.lua
        │   │   │   └── venvselect.lua
        │   │   ├── testing.lua
        │   │   └── treesitter.lua
        │   ├── ui
        │   │   ├── indentscope.lua
        │   │   ├── key_suggestion.lua
        │   │   ├── lualine.lua
        │   │   ├── mini_icons.lua
        │   │   ├── nord.lua
        │   │   ├── todo_comments.lua
        │   │   └── trouble.lua
        │   └── vim_utils
        │       ├── gitdiff.lua
        │       ├── harpoon.lua
        │       ├── lazygit.lua
        │       ├── telescope.lua
        │       └── zenmode.lua
        ├── lazy_init.lua
        ├── vim_keymaps.lua
        └── vim_options.lua

🛠️ Configuration Overview

🚀 Initialization

  • pygaiwan.init: Loads all the non-Lazy configurations.
  • pygaiwan.lazy_init: Initializes Lazy.nvim plugins and imports the following modules:
    • ui: Plugins that change or improve the Neovim UI.
    • vim_utils: Plugins that enhance Neovim functionality.
    • languages: Plugins for language-generic features.
    • languages.python: Plugins specific to Python.

📦 Plugin Details

📋 Plugin Manager

🎨 ui Plugins

🔧 vim_utils Plugins

🌐 languages Plugins

🐍 python Plugins


✨ Adding Support for a New Language

Follow these steps to add support for a new language:

  1. Add the language to the ensure_installed variable in languages.treesitter.
  2. Add the language in languages.lsp.
  3. (Optional) If the LSP requires specific configurations, add them in the handlers section.
  4. Add the required formatter to formatters_by_ft in languages.formatting.
  5. (Optional) Add non-standard formatter configurations in formatters. Check Conform.nvim Formatters for existing configurations.
  6. Add the linter to linters_by_ft in languages.linting.
  7. (Optional) Add non-standard linter configurations if needed. Check nvim-lint Linters for references.
  8. (Optional) If a debugger is available, create a folder for the language and add the debugger plugin. Import the new folder in lazy_init.
  9. (Optional) Add a testing adapter in languages.testing, if available.