summaryrefslogtreecommitdiffstats
path: root/lua/conf/plugins/telescope.lua
blob: 68a7c2311b25bfaad4c604817fe644ab2bd92ada (plain) (blame)
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
local misc = require('core.misc')
local map = misc.map

return { 'nvim-telescope/telescope.nvim',
  disable = vim.version().minor < 9,
  requires = {
    'nvim-lua/plenary.nvim',
    { 'nvim-telescope/telescope-fzf-native.nvim',
      config = function()
        vim.cmd.make()
      end
    }
  },
  function()
    local telescope = require("telescope")
    local actions = require('telescope.actions')
    local action_layout = require("telescope.actions.layout")

    local function telescopew()
      if vim.o.columns <= 80 then
        return vim.o.columns
      else
        return 0.8
      end
    end

    telescope.setup {
      defaults = {
        borderchars = {
          prompt  = { ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' },
          results = { ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' },
          preview = { ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' },
        },
        winblend = 0,
        layout_strategy = 'horizontal',
        sorting_strategy = 'descending',
        scroll_strategy = 'limit',
        layout_config = {
          horizontal = {
            width = telescopew(),
            height = 20,
            prompt_position = 'bottom',
            anchor = 'N',
          }
        },
        mappings = {
          i = {
            ["<esc>"] = actions.close,
            ['<C-j>'] = actions.move_selection_next,
            ['<C-k>'] = actions.move_selection_previous,
            ['<C-l>'] = actions.select_default,
            ['<C-u>'] = actions.preview_scrolling_up,
            ['<C-d>'] = actions.preview_scrolling_down,
            ["<C-p>"] = action_layout.toggle_preview
          },
          n = {
            ["gg"] = actions.move_to_top,
            ["G"] = actions.move_to_bottom,
          }
        }
      },
      extensions = {
        fzf = {}
      }
    }

    -- load in the fzf extension
    telescope.load_extension('fzf')

    -- keymaps
    local telebuilt = require('telescope.builtin')
    map('n', '<leader>f', function()
      telebuilt.fd { follow = true }
    end, { desc = 'Find files.' })
    map('n', '<leader>s', telebuilt.live_grep, { desc = 'Find string in project.' })
    map('n', '<leader>b', telebuilt.current_buffer_fuzzy_find, {
      desc = 'Find string in current buffer.',
    })

    -- enable previewing in the default colorscheme switcher
    telebuilt.colorscheme = function()
      require("telescope.builtin.__internal").colorscheme { enable_preview = true }
    end
  end
}