return { 'nvim-telescope/telescope.nvim', tag = '0.1.4', dependencies = { 'nvim-lua/plenary.nvim' }, config = function() require('telescope').setup{ defaults = { vimgrep_arguments = { 'rg', '--color=never', '--no-heading', '--with-filename', '--line-number', '--column', '--smart-case', '--hidden', } } } local builtin = require('telescope.builtin') local telescope = require('telescope') vim.keymap.set('n', 'tf', "Telescope find_files hidden=true", {}) -- Open files vim.keymap.set('n', 'ts', builtin.live_grep, {}) -- Grep files vim.keymap.set('n', 'tb', builtin.buffers, {}) -- Neovim buffers vim.keymap.set('n', 'tm', builtin.man_pages, {}) -- man pages vim.keymap.set('n', 'tp', builtin.registers, {}) -- Paste from registers vim.keymap.set('n', 'tt', builtin.resume, {}) -- Last open Telescope vim.keymap.set('n', 'to', builtin.oldfiles, {}) -- Recently opened files -- Git functionality (tg prefix) vim.keymap.set('n', 'tgf', builtin.git_files, {}) vim.keymap.set('n', 'tgc', builtin.git_commits, {}) vim.keymap.set('n', 'tgh', builtin.git_bcommits, {}) -- Current buffer's commits vim.keymap.set('n', 'tgb', builtin.git_branches, {}) -- CR: checkout, C-t: track, C-r: rebase, C-a: create, C-s: switch, C-d: delete, C-y: merge vim.keymap.set('n', 'tgs', builtin.git_stash, {}) -- List stash, apply with CR -- LSP functionality (tl prefix) vim.keymap.set('n', 'tlr', builtin.lsp_references, {}) vim.keymap.set('n', 'tli', builtin.lsp_incoming_calls, {}) vim.keymap.set('n', 'tlo', builtin.lsp_outgoing_calls, {}) vim.keymap.set('n', 'tld', builtin.lsp_definitions, {}) vim.keymap.set('n', 'tlt', builtin.lsp_type_definitions, {}) vim.keymap.set('n', 'tls', builtin.lsp_document_symbols, {}) vim.keymap.set('n', 'tlm', builtin.lsp_implementations, {}) vim.keymap.set('n', 'tlw', builtin.lsp_workspace_symbols, {}) vim.keymap.set('n', 'tlD', builtin.diagnostics, {}) -- Custom Rails shortcuts vim.keymap.set('n', 'trj', function() builtin.find_files({ search_dirs = { "app/javascript", "app/assets/javascripts" } }) end, { desc = "Open Rails Javascripts" } ) vim.keymap.set('n', 'trsj', function() builtin.live_grep({ search_dirs = { "app/javascript", "app/assets/javascripts" } }) end, { desc = "Grep Rails Javascripts" } ) vim.keymap.set('n', 'trm', function() builtin.find_files({ search_dirs = { "app/models" } }) end, { desc = "Open Rails Models" } ) vim.keymap.set('n', 'trsm', function() builtin.live_grep({ search_dirs = { "app/models" } }) end, { desc = "Grep Rails Models" } ) vim.keymap.set('n', 'trc', function() builtin.find_files({ search_dirs = { "app/controllers" } }) end, { desc = "Open Rails Controllers" } ) vim.keymap.set('n', 'trsc', function() builtin.live_grep({ search_dirs = { "app/controllers" } }) end, { desc = "Grep Rails Controllers" } ) vim.keymap.set('n', 'trv', function() builtin.find_files({ search_dirs = { "app/views" } }) end, { desc = "Open Rails Views" } ) vim.keymap.set('n', 'trsv', function() builtin.live_grep({ search_dirs = { "app/views" } }) end, { desc = "Grep Rails Views" } ) end, }