aboutsummaryrefslogtreecommitdiffstats
path: root/lua/pi/telescope/init.lua
diff options
context:
space:
mode:
authorElvis Claros Castro <elvis@claros.ar>2024-07-12 11:18:14 -0300
committerElvis Claros Castro <elvis@claros.ar>2024-07-12 11:18:14 -0300
commitea0f4bf8ffade657b1d45152dbc183d4679e75c4 (patch)
treecc1fb023bc308e019ddce33a4b0aed39f56805dc /lua/pi/telescope/init.lua
parent1fd0af14d592d612c2aaab7717c04c8806ba3daa (diff)
downloadnvim-conf-ea0f4bf8ffade657b1d45152dbc183d4679e75c4.tar.gz
nvim-conf-ea0f4bf8ffade657b1d45152dbc183d4679e75c4.zip
Feat: PI
Diffstat (limited to 'lua/pi/telescope/init.lua')
-rw-r--r--lua/pi/telescope/init.lua186
1 files changed, 186 insertions, 0 deletions
diff --git a/lua/pi/telescope/init.lua b/lua/pi/telescope/init.lua
new file mode 100644
index 0000000..7117a35
--- /dev/null
+++ b/lua/pi/telescope/init.lua
@@ -0,0 +1,186 @@
+local SHOULD_RELOAD_TELESCOPE = false
+
+local reloader = function()
+ if SHOULD_RELOAD_TELESCOPE then
+ Reload "plenary"
+ Reload "telescope"
+ Reload "pi.telescope.setup"
+ end
+end
+
+local fb_actions = require("telescope").extensions.file_browser.actions
+local actions = require "telescope.actions"
+local my_actions = require "pi.telescope.my_actions"
+
+local M = {}
+
+function M.project_files()
+ local opts = { show_untracked = true } -- define here if you want to define something
+ local ok = pcall(require("telescope.builtin").git_files, opts)
+ if not ok then
+ require("telescope.builtin").find_files(opts)
+ end
+end
+
+function M.branches()
+ require("telescope.builtin").git_branches {
+ attach_mappings = function(_, map)
+ map("i", "<c-j>", actions.git_create_branch)
+ map("n", "<c-j>", actions.git_create_branch)
+ return true
+ end,
+ }
+end
+
+function M.search_config()
+ require("telescope.builtin").git_files {
+ prompt_title = "< Dotfiles >",
+ cwd = "$HOME/.dotfiles",
+ show_untracked = true,
+ }
+end
+
+M.find_nvim_config = function()
+ require("telescope.builtin").find_files {
+ prompt_title = "< Neovim >",
+ cwd = "$HOME/.config/nvim/",
+ }
+end
+
+M.find_nvim_plugin = function()
+ require("telescope.builtin").find_files {
+ prompt_title = "< Plugins >",
+ cwd = "$HOME/.config/nvim/lua/plugins/",
+ attach_mappings = function(_, map)
+ map("i", "<C-y>", my_actions.create_plugin)
+ map("i", "<C-w>", my_actions.disable_plugin)
+ map("i", "<C-e>", my_actions.enable_plugin)
+
+ return true
+ end,
+ }
+end
+
+function M.grep_string()
+ vim.ui.input({ prompt = "Grep for > " }, function(input)
+ if input == nil then
+ return
+ end
+ require("telescope.builtin").grep_string { search = input }
+ end)
+end
+
+function M.grep_word()
+ require("telescope.builtin").grep_string { search = vim.fn.expand "<cword>" }
+end
+
+function M.find_symbol()
+ vim.ui.input({ prompt = "Symbol for > " }, function(input)
+ if input == nil then
+ return
+ end
+ require("telescope.builtin").lsp_workspace_symbols { query = input }
+ end)
+end
+
+function M.my_plugins()
+ if vim.fn.isdirectory(vim.fn.getenv "HOME" .. "/code/plugins/") == 0 then
+ vim.notify("Directory ~/code/plugins does not exists", vim.log.levels.WARN, { title = "Telescope Mappings" })
+ return
+ end
+ require("telescope.builtin").find_files {
+ cwd = "~/code/plugins/",
+ }
+end
+
+function M.scratchs()
+ require("telescope.builtin").find_files {
+ prompt_title = "Scratchs",
+ no_ignore = true,
+ cwd = "~/.config/nvim/lua/scratchs/",
+ attach_mappings = function(_, map)
+ map("i", "<c-t>", my_actions.create_scratch_file)
+
+ return true
+ end,
+ }
+end
+
+function M.projectionist()
+ return require("telescope").extensions.projectionist.projectionist()
+end
+
+function M.laravel_commands()
+ return require("telescope").extensions.laravel.laravel()
+end
+
+function M.api_specs()
+ if vim.fn.isdirectory "./api-specification" == 0 then
+ vim.notify("Directory api-specification does not exists", vim.log.levels.WARN, { title = "Telescope Mappings" })
+ return
+ end
+ require("telescope.builtin").git_files {
+ cwd = "./api-specification",
+ show_untracked = true,
+ }
+end
+
+function M.worktree()
+ return require("telescope").extensions.git_worktree.git_worktrees()
+end
+
+function M.worktree_create()
+ return require("telescope").extensions.git_worktree.create_git_worktree()
+end
+
+function M.refactor()
+ return require("telescope").extensions.refactoring.refactors()
+end
+
+function M.gateway()
+ return require("pi.php.gateway").graphql_definitions {
+ layout_config = {
+ horizontal = {
+ preview_width = function(_, cols, _)
+ return math.floor(cols * 0.7)
+ end,
+ },
+ },
+ }
+end
+
+function M.file_browser_relative()
+ return M.file_browser { path = "%:p:h" }
+end
+
+function M.file_browser(opts)
+ opts = opts or {}
+
+ opts = {
+ path = opts.path,
+ sorting_strategy = "ascending",
+ scroll_strategy = "cycle",
+ layout_config = {
+ prompt_position = "top",
+ },
+
+ attach_mappings = function(_, map)
+ map("i", "<c-y>", fb_actions.create_from_prompt)
+
+ return true
+ end,
+ }
+
+ return require("telescope").extensions.file_browser.file_browser(opts)
+end
+
+return setmetatable({}, {
+ __index = function(_, k)
+ reloader()
+ if M[k] then
+ return M[k]
+ else
+ return require("telescope.builtin")[k]
+ end
+ end,
+})