axkirillov / easypick.nvim

A neovim plugin that lets you easily create Telescope pickers from arbitrary console commands
MIT License
392 stars 10 forks source link
cli lua neovim neovim-plugin nvim nvim-plugin telescope telescope-extension

easypick.nvim

Easypick is a neovim plugin that lets you easily create Telescope pickers (see telescope.nvim) from arbitrary console commands.

installation

use {'axkirillov/easypick.nvim', requires = 'nvim-telescope/telescope.nvim'}

configuration

local easypick = require("easypick")

-- only required for the example to work
local get_default_branch = "git remote show origin | grep 'HEAD branch' | cut -d' ' -f5"
local base_branch = vim.fn.system(get_default_branch) or "main"

easypick.setup({
    pickers = {
        -- add your custom pickers here
        -- below you can find some examples of what those can look like

        -- list files inside current folder with default previewer
        {
            -- name for your custom picker, that can be invoked using :Easypick <name> (supports tab completion)
            name = "ls",
            -- the command to execute, output has to be a list of plain text entries
            command = "ls",
            -- specify your custom previwer, or use one of the easypick.previewers
            previewer = easypick.previewers.default()
        },

        -- diff current branch with base_branch and show files that changed with respective diffs in preview
        {
            name = "changed_files",
            command = "git diff --name-only $(git merge-base HEAD " .. base_branch .. " )",
            previewer = easypick.previewers.branch_diff({base_branch = base_branch})
        },

        -- list files that have conflicts with diffs in preview
        {
            name = "conflicts",
            command = "git diff --name-only --diff-filter=U --relative",
            previewer = easypick.previewers.file_diff()
        },
    }
})

usage

After the setup is called the Easypick command becomes available with all your pickers added to tab completion.

image

Running the :Easypick command with no arguments should result in the picker picker being called image

one-off picker

A one off picker can be created by calling

require('easypick').one_off('type your command here')

This will open up a picker just for the typed in command with default selection action and previewer

actions

The default action opens a file. Specify the action field in your picker config if you want a custom action.

easypick.actions.nvim_commandf(template) takes a template string and inserts the selected entry at the %s position, then executes the command.

For example '!make %s' will insert the entry at %s position and execute the corresponding command

recipes

More recipes are available in wiki