feat(picker): allow custom function actions.open_file.window_picker.picker (#1782)
* feat: allow passing a custom function as a window picker WIP * fix: move logic expression to if statement If `M.window_picker.custom_function()` returns `nil` then `pick_win_id()` will run (the or part). We don't want that. More verbose, but better. * feat(open): add window_picker.picker * feat(open): add window_picker.picker * style nit * feat(open): add window_picker.picker * docs: add window_picker.picker documentation * docs: add window_picker.picker documentation Co-authored-by: Alexander Courtis <alex@courtis.org>
This commit is contained in:
parent
18272f8df3
commit
d85b6718ce
@ -348,6 +348,7 @@ Subsequent calls to setup will replace the previous configuration.
|
|||||||
resize_window = true,
|
resize_window = true,
|
||||||
window_picker = {
|
window_picker = {
|
||||||
enable = true,
|
enable = true,
|
||||||
|
picker = "default",
|
||||||
chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890",
|
chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890",
|
||||||
exclude = {
|
exclude = {
|
||||||
filetype = { "notify", "packer", "qf", "diff", "fugitive", "fugitiveblame" },
|
filetype = { "notify", "packer", "qf", "diff", "fugitive", "fugitiveblame" },
|
||||||
@ -999,6 +1000,16 @@ Configuration for various actions.
|
|||||||
from which you last opened the tree.
|
from which you last opened the tree.
|
||||||
Type: `boolean`, Default: `true`
|
Type: `boolean`, Default: `true`
|
||||||
|
|
||||||
|
*nvim-tree.actions.open_file.window_picker.picker*
|
||||||
|
Change the default window picker, can be a string `"default"` or a function.
|
||||||
|
The function should return the window id that will open the node,
|
||||||
|
or `nil` if an invalid window is picked or user cancelled the action.
|
||||||
|
Type: `string` | `function`, Default: `"default"`
|
||||||
|
e.g. s1n7ax/nvim-window-picker plugin: >
|
||||||
|
window_picker = {
|
||||||
|
enable = true,
|
||||||
|
picker = require('window-picker').pick_window,
|
||||||
|
<
|
||||||
*nvim-tree.actions.open_file.window_picker.chars*
|
*nvim-tree.actions.open_file.window_picker.chars*
|
||||||
A string of chars used as identifiers by the window picker.
|
A string of chars used as identifiers by the window picker.
|
||||||
Type: `string`, Default: `"ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"`
|
Type: `string`, Default: `"ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"`
|
||||||
|
|||||||
@ -640,6 +640,7 @@ local DEFAULT_OPTS = { -- BEGIN_DEFAULT_OPTS
|
|||||||
resize_window = true,
|
resize_window = true,
|
||||||
window_picker = {
|
window_picker = {
|
||||||
enable = true,
|
enable = true,
|
||||||
|
picker = "default",
|
||||||
chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890",
|
chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890",
|
||||||
exclude = {
|
exclude = {
|
||||||
filetype = { "notify", "packer", "qf", "diff", "fugitive", "fugitiveblame" },
|
filetype = { "notify", "packer", "qf", "diff", "fugitive", "fugitiveblame" },
|
||||||
@ -699,6 +700,7 @@ local FIELD_OVERRIDE_TYPECHECK = {
|
|||||||
on_attach = { ["function"] = true, string = true },
|
on_attach = { ["function"] = true, string = true },
|
||||||
sort_by = { ["function"] = true, string = true },
|
sort_by = { ["function"] = true, string = true },
|
||||||
root_folder_label = { ["function"] = true, string = true },
|
root_folder_label = { ["function"] = true, string = true },
|
||||||
|
picker = { ["function"] = true, string = true },
|
||||||
}
|
}
|
||||||
|
|
||||||
local function validate_options(conf)
|
local function validate_options(conf)
|
||||||
|
|||||||
@ -175,7 +175,11 @@ local function get_target_winid(mode, win_ids)
|
|||||||
end
|
end
|
||||||
else
|
else
|
||||||
-- pick a window
|
-- pick a window
|
||||||
target_winid = pick_win_id()
|
if type(M.window_picker.picker) == "function" then
|
||||||
|
target_winid = M.window_picker.picker()
|
||||||
|
else
|
||||||
|
target_winid = pick_win_id()
|
||||||
|
end
|
||||||
if target_winid == nil then
|
if target_winid == nil then
|
||||||
-- pick failed/cancelled
|
-- pick failed/cancelled
|
||||||
return
|
return
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user