summary refs log tree commit diff
path: root/.vim
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2022-05-27 13:05:35 +0200
committerRobert Günzler <r@gnzler.io>2022-05-27 13:16:16 +0200
commit0d29bc8abc8df494e0e6659fd04b305dd39d4dea (patch)
tree21fb83d5611579da77dff8e52b62b88a14cd86a1 /.vim
parent0ddc2b874d9fb04474be7323d695847e5235e158 (diff)
vim: improve find_files/live_grep wrappers
Diffstat (limited to '.vim')
-rw-r--r--.vim/lua/misc.lua39
1 files changed, 26 insertions, 13 deletions
diff --git a/.vim/lua/misc.lua b/.vim/lua/misc.lua
index 14d5d7a..457aa3c 100644
--- a/.vim/lua/misc.lua
+++ b/.vim/lua/misc.lua
@@ -72,24 +72,37 @@ function M.sort_line()
   end
 end
 
-function M.live_grep(dirs)
-  if not dirs then vim.ui.input('Dirs: ', function(result) dirs = result end) end
+local function get_searchdirs(dirs)
+  -- skip asking if we're looking at known filetypes
+  local ft = vim.api.nvim_buf_get_option(0, 'filetype')
+  if not dirs and (ft == 'dirbuf' or ft == 'alpha') then
+    dirs = '%:p:h'
+  end
+  if not dirs then
+    vim.ui.input('Search directories: ', function(result) dirs = result end)
+  end
+  -- default to something reasonable
   if not dirs then dirs = '%:p:h' end
-  require('telescope.builtin').live_grep {
-    search_dirs=vim.split(dirs, ','),
-    prompt_title='Live Grep: '.. vim.fn.expand(dirs),
-  }
+  return vim.split(vim.fn.expand(dirs), ',')
 end
 
-function M.find_files(dirs)
-  if not dirs then vim.ui.input('Dirs: ', function(result) dirs = result end) end
-  if not dirs then dirs = '%:h:p' end
-  require('telescope.builtin').find_files {
-    search_dirs=vim.split(dirs, ','),
-    prompt_title='Find Files: '.. vim.fn.expand(dirs),
-  }
+function M.live_grep(dirs, opts)
+  opts = opts or {}
+  local search_dirs = get_searchdirs(dirs)
+  opts.search_dirs = search_dirs
+  opts.prompt_title = 'Grep: '.. vim.inspect(search_dirs)
+  return require('telescope.builtin').live_grep(opts)
 end
 
+function M.find_files(dirs, opts)
+  opts = opts or {}
+  local search_dirs = get_searchdirs(dirs)
+  opts.search_dirs = search_dirs
+  opts.prompt_title = 'Files: '.. vim.inspect(search_dirs)
+  return require('telescope.builtin').find_files(opts)
+end
+
+
 function M.fold_block() -- {{{
   local Comment = require('Comment.api')
   local m = vim.api.nvim_buf_get_mark