Skip to content

A neovim plugin that lets you easily create Telescope pickers from arbitrary console commands

License

Notifications You must be signed in to change notification settings

axkirillov/easypick.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 

Repository files navigation

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