summaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
authorTJ DeVries <devries.timothyj@gmail.com>2020-08-28 00:19:10 -0400
committerTJ DeVries <devries.timothyj@gmail.com>2020-08-28 00:19:10 -0400
commitf2fcdcb6751701db94236d534db72346f7c118d6 (patch)
treebaa700549805f8ca969f3acdb29eaeb6af8f273f /lua
parentd20be453a82b7fc6e54c8424133218b4032962a7 (diff)
feat: borders and no previews for rocker
Diffstat (limited to 'lua')
-rw-r--r--lua/telescope/builtin.lua41
-rw-r--r--lua/telescope/mappings.lua5
-rw-r--r--lua/telescope/pickers.lua25
-rw-r--r--lua/telescope/previewers.lua12
4 files changed, 65 insertions, 18 deletions
diff --git a/lua/telescope/builtin.lua b/lua/telescope/builtin.lua
index a1e8437..89dcbf1 100644
--- a/lua/telescope/builtin.lua
+++ b/lua/telescope/builtin.lua
@@ -11,13 +11,7 @@ local sorters = require('telescope.sorters')
local builtin = {}
-local ifnil = function(x, was_nil, was_not_nil)
- if x == nil then
- return was_nil
- else
- return was_not_nil
- end
-end
+local ifnil = function(x, was_nil, was_not_nil) if x == nil then return was_nil else return was_not_nil end end
builtin.git_files = function(opts)
opts = opts or {}
@@ -52,6 +46,9 @@ builtin.git_files = function(opts)
prompt = 'Simple File',
finder = file_finder,
sorter = file_sorter,
+
+ border = opts.border,
+ borderchars = opts.borderchars,
}
end
@@ -207,6 +204,36 @@ builtin.quickfix = function()
}
end
+builtin.grep_string = function(opts)
+ opts = opts or {}
+
+ local search = opts.search or vim.fn.expand("<cword>")
+
+ local grepper = finders.new {
+ maximum_results = 10000,
+
+ -- TODO: We can optimize these.
+ -- static = true,
+
+ fn_command = function()
+ return {
+ command = 'rg',
+ args = {"--vimgrep", search},
+ }
+ end
+ }
+
+ local file_picker = pickers.new {
+ previewer = previewers.vimgrep
+ }
+
+ file_picker:find {
+ prompt = 'Live Grep',
+ finder = grepper,
+ sorter = sorters.get_norcalli_sorter(),
+ }
+end
+
return builtin
diff --git a/lua/telescope/mappings.lua b/lua/telescope/mappings.lua
index 264a2d3..4e01812 100644
--- a/lua/telescope/mappings.lua
+++ b/lua/telescope/mappings.lua
@@ -65,6 +65,11 @@ keymap["enter"] = function(prompt_bufnr, results_bufnr)
return
end
+ -- TODO: This is not great.
+ if type(value) == "table" then
+ value = entry.display
+ end
+
local sections = vim.split(value, ":")
local filename = sections[1]
diff --git a/lua/telescope/pickers.lua b/lua/telescope/pickers.lua
index 3b70235..b5e418a 100644
--- a/lua/telescope/pickers.lua
+++ b/lua/telescope/pickers.lua
@@ -12,6 +12,8 @@ local Previewer = require('telescope.previewers').Previewer
local pickers = {}
+local ifnil = function(x, was_nil, was_not_nil) if x == nil then return was_nil else return was_not_nil end end
+
-- Picker takes a function (`get_window_options`) that returns the configurations required for three windows:
-- prompt
-- results
@@ -45,18 +47,26 @@ function Picker:new(opts)
end
function Picker:get_window_options(max_columns, max_lines, prompt_title, find_options)
+
+ local popup_border = ifnil(find_options.border, {}, find_options.border)
+
local preview = {
- border = {},
+ border = popup_border,
+ borderchars = find_options.borderchars or nil,
enter = false,
highlight = false
}
+
local results = {
- border = {},
+ border = popup_border,
+ borderchars = find_options.borderchars or nil,
enter = false,
}
+
local prompt = {
title = prompt_title,
- border = {},
+ border = popup_border,
+ borderchars = find_options.borderchars or nil,
enter = true
}
@@ -121,6 +131,8 @@ function Picker:find(opts)
opts.preview_cutoff = 120
end
+ opts.borderchars = opts.borderchars or { '─', '│', '─', '│', '┌', '┐', '┘', '└'}
+
local finder = opts.finder
assert(finder, "Finder is required to do picking")
@@ -275,16 +287,15 @@ function Picker:find(opts)
state.set_status(prompt_bufnr, {
prompt_bufnr = prompt_bufnr,
prompt_win = prompt_win,
- prompt_border_win = prompt_opts.border.win_id,
+ prompt_border_win = prompt_opts.border and prompt_opts.border.win_id,
results_bufnr = results_bufnr,
results_win = results_win,
- results_border_win = results_opts.border.win_id,
+ results_border_win = results_opts.border and results_opts.border.win_id,
preview_bufnr = preview_bufnr,
preview_win = preview_win,
- preview_border_win = preview_opts and preview_opts.border.win_id,
-
+ preview_border_win = preview_opts.border and preview_opts.border.win_id,
picker = self,
previewer = self.previewer,
finder = finder,
diff --git a/lua/telescope/previewers.lua b/lua/telescope/previewers.lua
index 5082b1a..3e79ad3 100644
--- a/lua/telescope/previewers.lua
+++ b/lua/telescope/previewers.lua
@@ -5,7 +5,7 @@ local previewers = {}
local Previewer = {}
Previewer.__index = Previewer
-local bat_options = "--style=grid --paging=always --wrap=never"
+local bat_options = " --style=grid --paging=always "
-- --terminal-width=%s
function Previewer:new(opts)
@@ -71,7 +71,7 @@ previewers.vim_buffer_or_bat = previewers.new {
local file_name = vim.split(value, ":")[1]
- log.info("Previewing File: %s", file_name)
+ log.trace("Previewing File: %s", file_name)
-- vim.fn.termopen(
-- string.format("bat --color=always --style=grid %s"),
@@ -151,9 +151,11 @@ previewers.vimgrep = previewers.new {
vim.api.nvim_win_set_buf(status.preview_win, bufnr)
+ local termopen_command = string.format(self.state.command_string, filename, lnum, start, finish)
+
-- HACK! Requires `termopen` to accept buffer argument.
vim.cmd(string.format("noautocmd call win_gotoid(%s)", status.preview_win))
- vim.fn.termopen(string.format(self.state.command_string, filename, lnum, start, finish))
+ vim.fn.termopen(termopen_command)
vim.cmd(string.format("noautocmd call win_gotoid(%s)", status.prompt_win))
end
@@ -185,9 +187,11 @@ previewers.qflist = previewers.new {
vim.api.nvim_win_set_buf(status.preview_win, bufnr)
+ local termopen_command = string.format(self.state.command_string, filename, lnum, start, finish)
+
-- HACK! Requires `termopen` to accept buffer argument.
vim.cmd(string.format("noautocmd call win_gotoid(%s)", status.preview_win))
- vim.fn.termopen(string.format(self.state.command_string, filename, lnum, start, finish))
+ vim.fn.termopen(termopen_command)
vim.cmd(string.format("noautocmd call win_gotoid(%s)", status.prompt_win))
end
}