Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/s1n7ax/nvim-window-picker
This plugins prompts the user to pick a window and returns the window id of the picked window
https://github.com/s1n7ax/nvim-window-picker
neovim neovim-lua neovim-lua-plugin neovim-plugin neovim-plugins
Last synced: 3 days ago
JSON representation
This plugins prompts the user to pick a window and returns the window id of the picked window
- Host: GitHub
- URL: https://github.com/s1n7ax/nvim-window-picker
- Owner: s1n7ax
- License: mit
- Created: 2021-09-25T20:30:24.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-04-22T01:58:23.000Z (7 months ago)
- Last Synced: 2024-08-02T13:33:53.839Z (3 months ago)
- Topics: neovim, neovim-lua, neovim-lua-plugin, neovim-plugin, neovim-plugins
- Language: Lua
- Homepage:
- Size: 105 KB
- Stars: 303
- Watchers: 4
- Forks: 25
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# nvim-window-picker
`hint = 'floating-big-letter'`
https://github.com/s1n7ax/nvim-window-picker/assets/18459807/8a6a57e2-8be0-4385-88a9-f49c6a088627
`hint = 'statusline-winbar'`
https://github.com/s1n7ax/nvim-window-picker/assets/18459807/8d9a790b-cbcb-455d-8d74-97c55b3cc9b0
This plugins prompts the user to pick a window and returns the window id of the
picked window.## Install
### lazy
```lua
{
's1n7ax/nvim-window-picker',
name = 'window-picker',
event = 'VeryLazy',
version = '2.*',
config = function()
require'window-picker'.setup()
end,
}
```### packer
```lua
use {
's1n7ax/nvim-window-picker',
tag = 'v2.*',
config = function()
require'window-picker'.setup()
end,
}
```## How to use
```lua
local picked_window_id = require('window-picker').pick_window()
```You can put the picked window id to good use
## Configuration
If you want to have custom properties just for one time, you can pass any of
following directly to `pick_window()` function itself to override the default
behaviour.```lua
require 'window-picker'.setup({
-- 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',-- 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 '%=' .. char .. '%='
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 = 'never', -- "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 insteadfont = '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 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
-- included in the selection
-- EX:-
-- function(window_ids, filters)
-- -- folder the window_ids
-- -- return only the ones you want to include
-- return {1000, 1001}
-- end
filter_func = nil,-- following filters are only applied when you are using the default filter
-- 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
filetype = { 'NvimTree', 'neo-tree', 'notify' },-- if the file type is one of following, the window will be ignored
buftype = { 'terminal' },
},-- filter using window options
wo = {},-- 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
file_name_contains = {},
},-- You can pass in the highlight name or a table of content to set as
-- highlight
highlights = {
statusline = {
focused = {
fg = '#ededed',
bg = '#e35e4f',
bold = true,
},
unfocused = {
fg = '#ededed',
bg = '#44cc41',
bold = true,
},
},
winbar = {
focused = {
fg = '#ededed',
bg = '#e35e4f',
bold = true,
},
unfocused = {
fg = '#ededed',
bg = '#44cc41',
bold = true,
},
},
},
})
``````lua
require('window-picker').pick_window({
hint = 'floating-big-letter'
})
```## Theming
If you just want to define the colors using Neovim Highlights, then it's totally
possible. You can set following highlights manually.- `WindowPickerStatusLine` (currently focused window statusline highlights)
- `WindowPickerStatusLineNC` (currently unfocused window statusline highlights)
- `WindowPickerWinBar` (currently focused window winbar highlights)
- `WindowPickerWinBarNC` (currently unfocused window winbar highlights)## Breaking changes in v2.0.0
_Before_: return value from `selection_display` will be wrapped by `'%='` and
`'%='` to fill the empty space of status line or winbar._After_: return value of `selection_display` will be passed directly to the
status line or winbar. This allows all the customizations available from
statusline syntax. You can check `:help statusline` for more info.