From 380e4b6cd79da572f158456216b9a7177fd6efae Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Wed, 23 Mar 2022 09:31:33 +0100 Subject: [PATCH] Add first custom Neovim Telescope picker This adds a list of my custom defined functions for easier calling. --- .../_extensions/custom_functions.lua | 33 +++++++++++++++++++ .../neovim/configuration/plugin/mappings.vim | 1 + home/programs/neovim/plugins/telescope.lua | 3 +- 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 home/programs/neovim/configuration/lua/telescope/_extensions/custom_functions.lua diff --git a/home/programs/neovim/configuration/lua/telescope/_extensions/custom_functions.lua b/home/programs/neovim/configuration/lua/telescope/_extensions/custom_functions.lua new file mode 100644 index 0000000..fd8f71a --- /dev/null +++ b/home/programs/neovim/configuration/lua/telescope/_extensions/custom_functions.lua @@ -0,0 +1,33 @@ +local telescope = require('telescope') +local pickers = require('telescope.pickers') +local finders = require('telescope.finders') +local actions = require('telescope.actions') +local action_state = require('telescope.actions.state') +local conf = require('telescope.config').values + +local custom_functions = function(opts) + opts = opts or {} + + local results = { 'CopyFileName', 'CopyRelativeFilePath', 'CopyFullFilePath' } + + pickers.new(opts, { + prompt_title = 'Custom Functions', + finder = finders.new_table { + results = results + }, + sorter = conf.generic_sorter(opts), + attach_mappings = function(prompt_bufnr, map) + actions.select_default:replace(function() + actions.close(prompt_bufnr) + local selection = action_state.get_selected_entry() + vim.api.nvim_call_function(selection[1], {}) + end) + return true + end, + }):find() +end + +return telescope.register_extension({ + -- setup = ctags_setup, + exports = { custom_functions = custom_functions }, +}) diff --git a/home/programs/neovim/configuration/plugin/mappings.vim b/home/programs/neovim/configuration/plugin/mappings.vim index 473717c..2cfe61b 100644 --- a/home/programs/neovim/configuration/plugin/mappings.vim +++ b/home/programs/neovim/configuration/plugin/mappings.vim @@ -14,6 +14,7 @@ nnoremap pp :Telescope builtin nnoremap pf :Telescope git_files nnoremap pb :Telescope buffers nnoremap pt :Telescope ctags_outline outline +nnoremap pc :Telescope custom_functions nnoremap pc :call TelescopeCurrentComposerPackage() nnoremap k :NERDTreeToggle diff --git a/home/programs/neovim/plugins/telescope.lua b/home/programs/neovim/plugins/telescope.lua index 306fdcc..429f469 100644 --- a/home/programs/neovim/plugins/telescope.lua +++ b/home/programs/neovim/plugins/telescope.lua @@ -1,4 +1,3 @@ --- TODO: Add custom source (functions) e.g. the copy functions local telescopeActions = require "telescope.actions" local telescopeActionsLayout = require "telescope.actions.layout" require('telescope').setup({ @@ -27,3 +26,5 @@ require('telescope').setup({ }, }, }) + +require('telescope').load_extension('custom_functions')