diff --git a/init.lua b/init.lua index 0c2d249..de6276b 100644 --- a/init.lua +++ b/init.lua @@ -50,26 +50,54 @@ end, { nargs = 1 }) vim.opt.statusline = ' #%n %f %h%w%m%r %= %y %l:%c %p%% ' -- }}} +-- FilePicker Script {{{ +local function get_list_completion(arg_lead, cmdline, cur_pos) + local cmdout = '' + if (arg_lead == '') then + cmdout = vim.trim(io.popen('rg --files'):read('*a')) + else + local tmp = arg_lead:gsub('\\', '\\\\') + cmdout = vim.trim(io.popen('rg --files | rg ' .. tmp):read('*a')) + end + return vim.split(cmdout, '\n') +end + +local function cmd_handler(opts) + if vim.tbl_count(opts.fargs) == 0 then + return + end + for _, arg in ipairs(opts.fargs) do + vim.cmd.edit({args = {arg}}) + end +end + +vim.api.nvim_create_user_command( + 'FilePick', + cmd_handler, + { complete = get_list_completion, nargs = 1, force = true } +) +-- }}} + -- Toggle Terminal Script {{{ local term_buf = nil local term_winid = nil local function openTerminal() if vim.fn.bufexists(term_buf) ~= 1 then - vim.api.nvim_command("autocmd TermOpen * setlocal nonumber norelativenumber signcolumn=no") - vim.api.nvim_command("split | wincmd J | resize 10 | term") + vim.api.nvim_command('autocmd TermOpen * setlocal nonumber norelativenumber signcolumn=no') + vim.api.nvim_command('split | wincmd J | resize 10 | term') term_winid = vim.fn.win_getid() term_buf = vim.fn.bufnr('%') elseif vim.fn.win_gotoid(term_winid) ~= 1 then - vim.api.nvim_command("sbuffer " .. term_buf .. "| wincmd J | resize 10") + vim.api.nvim_command('sbuffer ' .. term_buf .. '| wincmd J | resize 10') term_winid = vim.fn.win_getid() end - vim.api.nvim_command("startinsert") + vim.api.nvim_command('startinsert') end local function hideTerminal() if vim.fn.win_gotoid(term_winid) == 1 then - vim.api.nvim_command("hide") + vim.api.nvim_command('hide') end end @@ -93,7 +121,8 @@ vim.api.nvim_create_autocmd({ 'TermOpen' }, { vim.keymap.set('n', '', ':b#', { noremap = true, silent = true }) vim.keymap.set('n', '', ':bprevious', { noremap = true, silent = true }) vim.keymap.set('n', '', ':bnext', { noremap = true, silent = true }) -vim.keymap.set('n', 'f', ':find ', { noremap = true }) +--vim.keymap.set('n', 'f', ':find ', { noremap = true }) +--vim.keymap.set('n', 'f', ':FilePick ', { noremap = true }) vim.keymap.set('n', 't', ToggleTerminal) vim.keymap.set('t', '', '') vim.keymap.set('n', 'x', '"_x')