An open API service indexing awesome lists of open source software.

https://github.com/2KAbhishek/utils.nvim

Powerful Utilities for Neovim Plugin Devs 🛠️🧰
https://github.com/2KAbhishek/utils.nvim

devs github maintainer neovim neovim-plugin plugins utility

Last synced: 8 days ago
JSON representation

Powerful Utilities for Neovim Plugin Devs 🛠️🧰

Awesome Lists containing this project

README

        

utils.nvim


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:

```lua
-- 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 ``.

### ✅ To-Do

- You tell me!

## ⛅ Behind The Code

### 🌈 Inspiration

utils.nvim was created while working on [octohub.nvim](https://github.com/2kabhishek/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](https://github.com/2kabhishek/octohub.nvim) — All your GitHub features in Neovim, uses utils.nvim
- [nerdy.nvim](https://github.com/2kabhishek/nerdy.nevim) — Find nerd glyphs easily
- [tdo.nvim](https://github.com/2KAbhishek/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