Skip to content

Powerful Utilities for Neovim Plugin Devs πŸ› οΈπŸ§°

License

Notifications You must be signed in to change notification settings

2KAbhishek/utils.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

94 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

License People Stars Forks Watches Last Updated

Powerful Utilities for Neovim Plugin Devs πŸ› οΈπŸ§°

utils.nvim is a Neovim plugin that provides a collection of utilities to simplify the development of your Neovim plugins.

✨ Features

  • Picker Absctraction: Offers a simple interface for popular pickers, no need to write custom picker anymore!
  • Caching Mechanism: Implements a caching system to store data and reduce unnecessary command execution, optimizing performance.
  • Notification Management: Offers functions to queue and display notifications, allowing seamless user communication within plugins.
  • Shell Execution: Includes capabilities to execute commands async, work with system tools, improving workflow efficiency.
  • More!

⚑ Setup

βš™οΈ Requirements

  • plenary.nvim
  • nvim-web-devicons (optional, for language icons)

πŸ’» Installation

utils.nvim is not meant to be installed by itself, but rather as a dependency for another plugin.

If you are building a plugin that requires the utilities provided by utils.nvim, you can add it as a dependency as shown below:

-- Lazy
{
    'yourname/plugin.nvim',
    dependencies = {
        '2kabhishek/utils.nvim'
        opts = {
            -- Decide picker is used by default
            picker_provider = "snacks", -- 'telescope', 'fzf_lua', or 'snacks' (default)
        }
    },
},

πŸš€ Usage

Modules

utils.nvim is divided into several modules, each providing specific functionalities:

  • picker: a module providing abstractions over various picker providers, supports telescope, fzf_lua, and snacks.
  • cache: a module for caching data and managing cache files.
  • notification: a module for simplifying notification queues.
  • language: a module for programming language filetype and icon management.
  • shell: a module for executing shell commands and opening URLs, files.
  • json: a module for handling JSON data.
  • time: a module for working with time and date.

Commands

utils.nvim adds the following command:

  • UtilsClearCache: Clears all cache files saved by the plugin. To execute it, run:

Help

Run :help utils.txt for more details.

πŸ—οΈ What's Next

Planning to add <feature/module>.

βœ… To-Do

  • You tell me!

β›… Behind The Code

🌈 Inspiration

utils.nvim was created while working on octohub.nvim which relied on a lot of common utilities like async shell execution, notifications, and caching.

πŸ’‘ Challenges/Learnings

  • Figuring out the callback mechanism for async functions was a bit tricky.
  • Learned better ways to handle caching and notifications.

πŸ” More Info

  • octohub.nvim β€” All your GitHub features in Neovim, uses utils.nvim
  • nerdy.nvim β€” Find nerd glyphs easily
  • tdo.nvim β€” Fast and simple notes in Neovim

⭐ hit the star button if you found this useful ⭐

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