- refactor fzf field index experssion and line field number options
- enable native fzf previewers (bat/cat/head) for all file/buffer providers
- buffers|lines|blines|tabs now respect default previewer
Since LUA is single threaded I reached a limit to performance
optimization, both 'git_icons' and 'file_icons' require string
matching and manipulations which eventually hurt performance
when running on large amount of files.
In order to solve that this commit introduces the option to spawn
commands and process the entries in a separate neovim process which
prints to stdio as if it was a regular shell command. This speeds up
things significantly and also makes the UI super responsive as if fzf
was run in the shell. This required a few lua hacks to be able to load
nvim-web-devicons in a '--headless --clean' instance and sharing the
user configuration through the RPC interface from the running instance.
This is enabled by default for 'files' and 'grep' providers and can also
be enabled for 'git.files' if required, control using the 'multiprocess'
option.
- do not spawn cmd with libuv unless 'file_icons' or 'git_icons' are set
- 'path.starts_with_separator' minor regex optimization
- 'files' cmd fallback order is now fd, **rg** and then find
- 'strip_cwd_prefix' enabled again (default: 'true')
- 'cwd' header line added to 'files' and 'git' providers
also changes buffers preview to read lines from the buffer instead
of attaching the exisiting buffer to the preview window, the former
turned out to changed the 'lastused' field of the buffer which was
undesireable for buffer sorting.
'nvim-jdtls' extends the LSP to support eclipse jdt classes
since classes are inside '.jar' file it displays them as 'jdt://'
URIs which are then handled by 'nvim-jdtls', we can then use
'vim.lsp.util.jump_to_location' to open the URIs.
This improves the colors for file icons if nvim-web-devicons is
available. If it is, fzf-lua now uses those colors for the icons.
This should also improve the performance of make_entry_file by
optimizing string creation and when various regexes are matched.