2KAbhishek/template.nvim

github github
externalboilerplate
stars 14
issues 0
subscribers 1
forks 1
CREATED

UPDATED


template.nvim is a neovim plugin that allows neovim users to <action>.

✨ Features

  • Modern Plugin Architecture: Ready-to-go Neovim plugin template with best practices
  • Unified Command System: Modern command interface with tab completion support
  • Type Safety: Comprehensive type annotations using LSP-compatible @class and @param
  • DRY Code Patterns: Reusable helper functions and modular design
  • CI/CD Ready: Lint and test GitHub Actions included
  • Auto Documentation: GitHub Action to auto-generate vimdocs
  • Professional README: Complete template with modern formatting
  • Integration Ready: Works seamlessly with mkrepo

⚡ Setup

⚙️ Requirements

  • Latest version of neovim

💻 Installation

-- Lazy
{
    '2kabhishek/template.nvim',
    cmd = { 'Template' },
    keys = { '<leader>th', '<leader>tH', },
    -- Add your custom configs here, keep it blank for default configs (required)
    opts = {},
    -- Use this for local development
    -- dir = '~/path-to/template.nvim',
},

🚀 Usage

  1. Fork the template.nvim repo
  2. Update the plugin name, file names etc, change template to your-plugin-name
  3. Add the code required for your plugin:
    • Code entrypoint: template.lua - Main setup function
    • User configs: config.lua - Configuration with type annotations
    • Commands: commands.lua - Modern command system with completion
    • Plugin logic: module.lua - Core functionality with type safety
    • Additional modules: Add more modules under modules directory as needed
  4. Command System Features:
    • Unified command interface with subcommands
    • Tab completion support for better UX
    • Reusable helper functions for DRY code
    • Comprehensive type annotations for better development experience
  5. Add test code to the tests directory
  6. Update the README with your plugin's functionality
  7. Tweak the docs action file to reflect your plugin name, commit email and username
    • Generating vimdocs needs read and write access to actions (repo settings > actions > general > workflow permissions)

Configuration

template.nvim can be configured using the following options:

template.setup({
    name = 'template.nvim', -- Name to be greeted, 'World!' by default
    add_default_keybindings = true, -- Whether to add default keybindings
})

Commands

template.nvim provides a unified command interface with tab completion:

  • Template greet [name] - Shows a hello message with the specified name (with tab completion)
  • Template notify [message] - Shows a notification with custom message

Keybindings

Here are the default keybindings:

Keybinding Command Description
<leader>th Template greet Template greet default name
<leader>tH Template greet Neovim Template greet Neovim

You can disable default keybindings by setting add_default_keybindings = false in your config.

Help

Run :help template.txt for more details.

🏗️ What's Next

Planning to add <feature/module>.

✅ To-Do

  • Setup repo
  • Think real hard
  • Start typing

⛅ Behind The Code

🌈 Inspiration

template.nvim was inspired by nvim-plugin-template, I added some changes on top to make setting up a new plugin faster.

💡 Challenges/Learnings

  • The main challenges were <issue/difficulty>
  • I learned about <learning/accomplishment>

🧰 Tooling

  • dots2k — Dev Environment
  • nvim2k — Personalized Editor
  • sway2k — Desktop Environment
  • qute2k — Personalized Browser

🔍 More Info

⭐ hit the star button if you found this useful ⭐

Source | Blog | Twitter | LinkedIn | More Links | Other Projects