Skip to content

Commit

Permalink
fix: nvim-window-picker upgrade from v1 to v2
Browse files Browse the repository at this point in the history
User should upgrade nvim-window-picker by manual.
  • Loading branch information
adoyle-h committed Sep 11, 2024
1 parent 488111a commit bac2ad6
Show file tree
Hide file tree
Showing 3 changed files with 105 additions and 37 deletions.
2 changes: 1 addition & 1 deletion doc/one.txt
Original file line number Diff line number Diff line change
Expand Up @@ -416,7 +416,7 @@ If bufferline plugin enabled, some keymaps will be overridden. See [Buffer Line]
--------------------------------------------------------------------------------
## Window *one-keymaps-window*

- `-` = Choose window in current tab
- `-` = Jump to window in current tab
- `<C-w><C-w>` = Choose window or tab via telescope picker
- `<]w>` = Focus to next window
- `<[w>` = Focus to previous window
Expand Down
2 changes: 1 addition & 1 deletion doc/usage/keymaps.md
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,7 @@ If bufferline plugin enabled, some keymaps will be overridden. See [Buffer Line]

## Window

- `-` = Choose window in current tab
- `-` = Jump to window in current tab
- `<C-w><C-w>` = Choose window or tab via telescope picker
- `<]w>` = Focus to next window
- `<[w>` = Focus to previous window
Expand Down
138 changes: 103 additions & 35 deletions lua/one/plugins/move/window-picker.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3,39 +3,59 @@ local colors = config.colors

return {
's1n7ax/nvim-window-picker',
tag = 'v1.*',
tag = '2.*',

config = function()
require'window-picker'.setup(config['window-picker'])
require 'window-picker'.setup(config['window-picker'])
end,

defaultConfig = {
'window-picker',
{
-- when there is only one window available to pick from, use that window
-- without prompting the user to select
autoselect_one = true,

-- whether you want to include the window you are currently on to window
-- selection or not
include_current_win = true,
-- type of hints you want to get
-- following types are supported
-- 'statusline-winbar' | 'floating-big-letter'
-- 'statusline-winbar' draw on 'statusline' if possible, if not 'winbar' will be
-- 'floating-big-letter' draw big letter on a floating window used
hint = 'statusline-winbar',

-- when you go to window selection mode, status bar will show one of
-- following letters on them so you can use that letter to select the window
selection_chars = 'FJDKSLA;CMRUEIWOQP',

-- You can change the display string in status bar.
-- It supports '%' printf style. Such as `return char .. ': %f'` to display
-- buffer filepath. See :h 'stl' for details.
selection_display = function(char)
return string.format('[%s] %s', char, '%f')
end,

-- whether you want to use winbar instead of the statusline
-- "always" means to always use winbar,
-- "never" means to never use winbar
-- "smart" means to use winbar if cmdheight=0 and statusline if cmdheight > 0
use_winbar = 'smart', -- "always" | "never" | "smart"
-- This section contains picker specific configurations
picker_config = {
statusline_winbar_picker = {
-- You can change the display string in status bar.
-- It supports '%' printf style. Such as `return char .. ': %f'` to display
-- buffer file path. See :h 'stl' for details.
selection_display = function(char, windowid)
return string.format(' [%s] %s', char, '%f')
end,

-- whether you want to use winbar instead of the statusline
-- "always" means to always use winbar,
-- "never" means to never use winbar
-- "smart" means to use winbar if cmdheight=0 and statusline if cmdheight > 0
use_winbar = 'smart', -- "always" | "never" | "smart"
},

floating_big_letter = {
-- window picker plugin provides bunch of big letter fonts
-- fonts will be lazy loaded as they are being requested
-- additionally, user can pass in a table of fonts in to font
-- property to use instead

font = 'ansi-shadow', -- ansi-shadow |
},
},

-- whether to show 'Pick window:' prompt
show_prompt = true,

-- prompt message to show to get the user input
prompt_message = 'Pick a window',

-- if you want to manually filter out the windows, pass in a function that
-- takes two parameters. you should return window ids that should be
Expand All @@ -52,6 +72,15 @@ return {
-- defined by this plugin. if you pass in a function to "filter_func"
-- property, you are on your own
filter_rules = {

-- when there is only one window available to pick from, use that window
-- without prompting the user to select
autoselect_one = true,

-- whether you want to include the window you are currently on to window
-- selection or not
include_current_win = false,

-- filter using buffer options
bo = {
-- if the file type is one of following, the window will be ignored
Expand All @@ -65,7 +94,11 @@ return {
'nerdtree',
'NvimTree',
'neo-tree',
'neo-tree-popup',
'neo-tree-preview',
'NvimSeparator', -- defined in colorful-winsep.nvim
'notify',
'noice',
'aerial',
'Mundo',
'mason',
Expand All @@ -81,25 +114,43 @@ return {
-- filter using window options
wo = {},

-- if the file path contains one of following names, the window
-- will be ignored
-- if the file path contains one of following names, the window will be ignored
file_path_contains = {},

-- if the file name contains one of following names, the window will be
-- ignored
-- if the file name contains one of following names, the window will be ignored
file_name_contains = {},
},

-- the foreground (text) color of the picker
fg_color = colors.black,
-- You can pass in the highlight name or a table of content to set as
-- highlight
highlights = {
statusline = {
focused = {
fg = colors.black,
bg = colors.blue,
bold = true,
},
unfocused = {
fg = colors.black,
bg = colors.green,
bold = true,
},
},

-- if you have include_current_win == true, then current_win_hl_color will
-- be highlighted using this background color
current_win_hl_color = colors.blue,
winbar = {
focused = {
fg = colors.black,
bg = colors.blue,

-- all the windows except the curren window will be highlighted using this
-- color
other_win_hl_color = colors.green,
bold = true,
},
unfocused = {
fg = colors.black,
bg = colors.green,
bold = true,
},
},
},
},
},

Expand All @@ -109,10 +160,27 @@ return {
'-',
function()
local picker = require('window-picker')
local picked_window_id = picker.pick_window() or vim.api.nvim_get_current_win()
vim.api.nvim_set_current_win(picked_window_id)

local ok, winsep = pcall(require, 'colorful-winsep')
if ok then
winsep.hide()
end

local picked_window_id = picker.pick_window({
filter_rules = {
bo = {
-- if the file type is one of following, the window will be ignored
filetype = {},
},
},
prompt_message = 'Jump to window in current tab',
})

if picked_window_id then
vim.api.nvim_set_current_win(picked_window_id)
end
end,
{ desc = 'Pick a window' },
{ desc = 'Jump to window in current tab' },
},
},
}

0 comments on commit bac2ad6

Please sign in to comment.