diff options
| author | srdusr <trevorgray@srdusr.com> | 2023-11-05 13:00:59 +0200 |
|---|---|---|
| committer | srdusr <trevorgray@srdusr.com> | 2023-11-05 13:00:59 +0200 |
| commit | 938cc9c18b476f3d45d0a06bf2a94c860a7aff7b (patch) | |
| tree | d075853870d54766ad20c9987eedb3476093ce76 /.config/nvim/lua/plugins | |
| parent | 46b7a1819af69c235edee23635cb1e2aca12bbfb (diff) | |
| parent | 312ae1da54e7f72c02da565aebb106590a3fa863 (diff) | |
| download | dotfiles-938cc9c18b476f3d45d0a06bf2a94c860a7aff7b.tar.gz dotfiles-938cc9c18b476f3d45d0a06bf2a94c860a7aff7b.zip | |
Merge commit '6006e9c4c6da59a57c87f0b23b674af5feaa24fb'
Diffstat (limited to '.config/nvim/lua/plugins')
| -rw-r--r-- | .config/nvim/lua/plugins/telescope.lua | 97 |
1 files changed, 61 insertions, 36 deletions
diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua index fb1b3ee..481cb7d 100644 --- a/.config/nvim/lua/plugins/telescope.lua +++ b/.config/nvim/lua/plugins/telescope.lua @@ -421,52 +421,77 @@ function M.find_books() local search_results = vim.fn.systemlist(search_cmd) local results = {} - local recent_books_section = {} -- To store recent books separately - for _, recent_book in ipairs(recent_books) do - table.insert(recent_books_section, 'Recent Books: ' .. recent_book) + -- Section for Recent Books + table.insert(results, ' Recent Books') + for _, recent_book_path in ipairs(recent_books) do + local formatted_path = vim.fn.fnameescape(recent_book_path) + table.insert(results, formatted_path) end + -- Section for All Books + table.insert(results, ' All Books') + local directories = {} + local files = {} + for _, search_result in ipairs(search_results) do - table.insert(results, search_result) + if vim.fn.isdirectory(search_result) == 1 then + table.insert(directories, search_result) + else + table.insert(files, search_result) + end end - -- Add the recent books section to the results - for _, recent_entry in ipairs(recent_books_section) do - table.insert(results, recent_entry) - end + table.sort(directories) + table.sort(files) - pickers - .new({}, { - prompt_title = 'Find Books', - finder = finders.new_table({ - results = results, - }), - previewer = require('telescope.previewers').vim_buffer_cat.new({}), - sorter = config.generic_sorter({}), - attach_mappings = function(prompt_bufnr, map) - actions_set.select:replace(function() - local entry = actions_state.get_selected_entry() - if entry ~= nil then - local path = entry.value + for _, dir in ipairs(directories) do + table.insert(results, dir) + end - actions.close(prompt_bufnr, false) - -- Determine whether it's a directory or a file - local is_directory = vim.fn.isdirectory(path) + for _, file in ipairs(files) do + table.insert(results, file) + end - if is_directory then - -- It's a directory, navigate to it in the current buffer - vim.cmd('e ' .. path) - else - -- It's a file, open it - vim.cmd('edit ' .. path) - end + local picker = pickers.new({}, { + prompt_title = 'Find Books', + finder = finders.new_table({ + results = results, + }), + file_ignore_patterns = { + '%.git', + }, + previewer = require('telescope.previewers').vim_buffer_cat.new({}), + sorter = config.generic_sorter({}), + attach_mappings = function(prompt_bufnr, map) + actions_set.select:replace(function() + local entry = actions_state.get_selected_entry() + if entry ~= nil then + local path = entry.value + + actions.close(prompt_bufnr, false) + + -- Check if it's under "Recent Books" + if path == ' Recent Books' or path == ' All Books' then + vim.notify("Cannot select 'All Books'/'Recent Books', please select a book or directory.", vim.log.levels.WARN, { title = 'Find Books' }) + else + -- Determine whether it's a directory or a file + local is_directory = vim.fn.isdirectory(path) + if is_directory then + -- It's a directory, navigate to it in the current buffer + vim.cmd('e ' .. path) + else + -- It's a file, open it + vim.cmd('e ' .. path) end - end) - return true - end, - }) - :find() + end + end + end) + return true + end, + }) + + picker:find() end function M.grep_current_dir() |
