From 769f5934f00a49097fec227adbdef62a34d71109 Mon Sep 17 00:00:00 2001 From: TJ DeVries Date: Thu, 10 Sep 2020 21:20:18 -0400 Subject: [PATCH] feat: add current file fuzzy finder --- lua/telescope/builtin.lua | 65 +++++++++++++++++++++++++++++++-------- lua/telescope/sorters.lua | 7 +++++ 2 files changed, 60 insertions(+), 12 deletions(-) diff --git a/lua/telescope/builtin.lua b/lua/telescope/builtin.lua index 0819bea..794f5b0 100644 --- a/lua/telescope/builtin.lua +++ b/lua/telescope/builtin.lua @@ -103,7 +103,7 @@ builtin.lsp_references = function(opts) entry_maker = make_entry.gen_from_quickfix(opts), }, previewer = previewers.qflist.new(opts), - sorter = sorters.get_norcalli_sorter(), + sorter = sorters.get_generic_fuzzy_sorter(), }):find() end @@ -134,7 +134,7 @@ builtin.lsp_document_symbols = function(opts) entry_maker = make_entry.gen_from_quickfix(opts) }, previewer = previewers.vim_buffer.new(opts), - sorter = sorters.get_norcalli_sorter(), + sorter = sorters.get_generic_fuzzy_sorter(), }):find() end @@ -166,7 +166,7 @@ builtin.lsp_workspace_symbols = function(opts) entry_maker = make_entry.gen_from_quickfix(opts) }, previewer = previewers.qflist.new(opts), - sorter = sorters.get_norcalli_sorter(), + sorter = sorters.get_generic_fuzzy_sorter(), }):find() end @@ -184,7 +184,7 @@ builtin.quickfix = function(opts) entry_maker = make_entry.gen_from_quickfix(opts), }, previewer = previewers.qflist.new(opts), - sorter = sorters.get_norcalli_sorter(), + sorter = sorters.get_generic_fuzzy_sorter(), }):find() end @@ -207,7 +207,7 @@ builtin.loclist = function(opts) entry_maker = make_entry.gen_from_quickfix(opts), }, previewer = previewers.qflist.new(opts), - sorter = sorters.get_norcalli_sorter(), + sorter = sorters.get_generic_fuzzy_sorter(), }):find() end @@ -228,7 +228,7 @@ builtin.grep_string = function(opts) opts ), previewer = previewers.vimgrep.new(opts), - sorter = sorters.get_norcalli_sorter(), + sorter = sorters.get_generic_fuzzy_sorter(), }):find() end @@ -259,7 +259,7 @@ builtin.command_history = function(opts) pickers.new(opts, { prompt = 'Command History', finder = finders.new_table(results), - sorter = sorters.get_norcalli_sorter(), + sorter = sorters.get_generic_fuzzy_sorter(), attach_mappings = function(_, map) map('i', '', actions.set_command_line) @@ -307,7 +307,7 @@ builtin.builtin = function(opts) entry_maker = make_entry.gen_from_quickfix(opts), }, previewer = previewers.qflist.new(opts), - sorter = sorters.get_norcalli_sorter(), + sorter = sorters.get_generic_fuzzy_sorter(), }):find() end @@ -350,7 +350,10 @@ end -- Leave this alias around for people. builtin.fd = builtin.find_files --- TODO: This is partially broken, but I think it might be an nvim bug. +-- TODO: Sometimes some window options (for me, I've experience number & relativenumber) +-- don't work when we open this up. +-- I think it has something to do with nvim_open_win and style='minimal', +-- but I can't figure that part out at the moment... builtin.buffers = function(opts) opts = opts or {} @@ -368,7 +371,7 @@ builtin.buffers = function(opts) entry_maker = make_entry.gen_from_buffer(opts) }, previewer = previewers.vim_buffer.new(opts), - sorter = sorters.get_norcalli_sorter(), + sorter = sorters.get_generic_fuzzy_sorter(), }):find() end @@ -426,7 +429,7 @@ builtin.treesitter = function(opts) entry_maker = make_entry.gen_from_treesitter(opts) }, previewer = previewers.vim_buffer.new(opts), - sorter = sorters.get_norcalli_sorter(), + sorter = sorters.get_generic_fuzzy_sorter(), }):find() end @@ -459,7 +462,7 @@ builtin.planets = function(opts) end }, previewer = previewers.cat.new(opts), - sorter = sorters.get_norcalli_sorter(), + sorter = sorters.get_generic_fuzzy_sorter(), attach_mappings = function(prompt_bufnr, map) map('i', '', function() local selection = actions.get_selected_entry(prompt_bufnr) @@ -471,4 +474,42 @@ builtin.planets = function(opts) }:find() end +builtin.current_buffer_fuzzy_find = function(opts) + local lines = vim.api.nvim_buf_get_lines(0, 0, -1, false) + local lines_with_numbers = {} + for k, v in ipairs(lines) do + table.insert(lines_with_numbers, {k, v}) + end + + pickers.new(opts, { + prompt = 'Current Buffer Fuzzy', + finder = finders.new_table { + results = lines_with_numbers, + entry_maker = function(enumerated_line) + return { + display = enumerated_line[2], + ordinal = enumerated_line[2], + + lnum = enumerated_line[1], + } + end + }, + sorter = sorters.get_generic_fuzzy_sorter(), + attach_mappings = function(prompt_bufnr, map) + local goto_line = function() + local selection = actions.get_selected_entry(prompt_bufnr) + actions.close(prompt_bufnr) + + vim.api.nvim_win_set_cursor(0, {selection.lnum, 0}) + vim.cmd [[stopinsert]] + end + + map('n', '', goto_line) + map('i', '', goto_line) + + return true + end + }):find() +end + return builtin diff --git a/lua/telescope/sorters.lua b/lua/telescope/sorters.lua index 474bdff..9e17cf2 100644 --- a/lua/telescope/sorters.lua +++ b/lua/telescope/sorters.lua @@ -208,6 +208,13 @@ sorters.get_fuzzy_file = function(opts) end sorters.get_norcalli_sorter = function() + vim.api.nvim_err_writeln( + "get_norcalli_sorter() is changed to get_generic_fuzzy_sorter()" + ) + return sorters.get_generic_fuzzy_sorter() +end + +sorters.get_generic_fuzzy_sorter = function() local ngramlen = 2 local cached_ngrams = {}