fzf.lua 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. local M = {
  2. "ibhagwan/fzf-lua",
  3. }
  4. M.config = function()
  5. local config = require("fzf-lua.config")
  6. local actions = require("trouble.sources.fzf").actions
  7. config.defaults.actions.files["ctrl-q"] = actions.open
  8. local fzf_lua = require("fzf-lua")
  9. -- Basic fzf-lua setup
  10. fzf_lua.setup({
  11. layout = "fzf-vim",
  12. keymap = {
  13. fzf = {
  14. ["CTRL-Q"] = "select-all+accept",
  15. },
  16. },
  17. grep = {
  18. fzf_opts = {
  19. ["--history"] = vim.fn.stdpath("data") .. "/fzf-lua-grep-history",
  20. },
  21. },
  22. })
  23. nmap("K", vim.lsp.buf.hover, { desc = "Hover Documentation" })
  24. nmap("gd", function()
  25. fzf_lua.lsp_definitions({ jump_to_single_result = true })
  26. end, { desc = "Goto Definition" })
  27. nmap("gr", function()
  28. fzf_lua.lsp_references({ ignore_current_line = true })
  29. end, { desc = "Goto References" })
  30. nmap("gi", function()
  31. fzf_lua.lsp_implementations({ jump_to_single_result = true })
  32. end, { desc = "Goto Implementation" })
  33. nmap("<leader>D", fzf_lua.lsp_typedefs, { desc = "Type Definition" })
  34. nmap("<leader>ca", fzf_lua.lsp_code_actions, { desc = "Code Action" })
  35. nmap("<leader>ds", fzf_lua.lsp_document_symbols, { desc = "Document Symbols" })
  36. nmap("<leader>ws", fzf_lua.lsp_workspace_symbols, { desc = "Workspace Symbols" })
  37. nmap("<leader>ic", fzf_lua.lsp_incoming_calls, { desc = "Incoming Calls" })
  38. nmap("<leader>oc", fzf_lua.lsp_outgoing_calls, { desc = "Outgoing Calls" })
  39. -- keys = {
  40. nmap("<leader>/", function()
  41. fzf_lua.files({
  42. cwd_prompt = false,
  43. silent = true,
  44. })
  45. end, { desc = "Find Files" })
  46. nmap(";", fzf_lua.buffers, { desc = "Find Buffers" })
  47. nmap("gf", fzf_lua.live_grep, { desc = "Find Live Grep" })
  48. nmap("sb", fzf_lua.grep_curbuf, { desc = "Search Current Buffer" })
  49. nmap("gw", fzf_lua.grep_cword, { desc = "Search word under cursor" })
  50. nmap("gW", fzf_lua.grep_cWORD, { desc = "Search WORD under cursor" })
  51. nmap("sk", fzf_lua.keymaps, { desc = "Search Keymaps" })
  52. nmap("sh", fzf_lua.help_tags, { desc = "Search help" })
  53. -- Automatic sizing of height/width of vim.ui.select
  54. fzf_lua.register_ui_select(function(_, items)
  55. local min_h, max_h = 0.60, 0.80
  56. local h = (#items + 4) / vim.o.lines
  57. if h < min_h then
  58. h = min_h
  59. elseif h > max_h then
  60. h = max_h
  61. end
  62. return { winopts = { height = h, width = 0.80, row = 0.40 } }
  63. end)
  64. end
  65. return M