aboutsummaryrefslogtreecommitdiffstats
path: root/lua/alpha/telescope/init.lua
blob: 99a74e3f160367b8b3eec58de930a2fb5bedc61c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
SHOULD_RELOAD_TELESCOPE = true

local reloader = function()
  if SHOULD_RELOAD_TELESCOPE then
    RELOAD "plenary"
    RELOAD "telescope"
    RELOAD "alpha.telescope.setup"
  end
end

local action_state = require "telescope.actions.state"
local fb_actions = require "telescope".extensions.file_browser.actions
local actions = require('telescope.actions')

local M = {}

function M.project_files()
  local opts = {} -- 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",
    })
end

function M.grep_string()
    vim.ui.input("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("Symbol for > ", function (input)
        if input == nil then
            return
        end
        require('telescope.builtin').lsp_workspace_symbols({ search = input})
    end)
end

function M.my_plugins()
    require("telescope.builtin").find_files {
        cwd = "~/plugins/",
    }
end

function M.projectionist ()
    return require("telescope").extensions.projectionist.projectionist()
end

function M.laravel ()
    vim.env.NO_TTY = 1
    return require("telescope").extensions.laravel.laravel()
end

function M.file_browser ()
    local opts

    opts = {
        sorting_strategy = "ascending",
        scroll_strategy = "cycle",
        layout_config = {
            prompt_position = "top",
        },

        attach_mappings = function(prompt_bufnr, map)
            local current_picker = action_state.get_current_picker(prompt_bufnr)

            local modify_cwd = function(new_cwd)
                local finder = current_picker.finder

                finder.path = new_cwd
                finder.files = true
                current_picker:refresh(false, { reset_prompt = true })
            end

            map("i", "-", function()
                modify_cwd(current_picker.cwd .. "/..")
            end)

            map("i", "~", function()
                modify_cwd(vim.fn.expand "~")
            end)

            map("n", "yy", function()
                local entry = action_state.get_selected_entry()
                vim.fn.setreg("+", entry.value)
            end)

            map("i", "<c-y>", fb_actions.create)

            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,
})