···11+*artio.txt* a minimal, nature-infused file picker for neovim using the new
22+ extui window
33+44+==============================================================================
55+66+FEATURES *artio-features*
77+88+Requires Neovim `>= 0.12`
99+1010+- Lightweight picker window built on Neovim's extui
1111+- Prompt + list UI components - minimal and focused
1212+- Fuzzy filtering using matchfuzzy (built-in)
1313+- Optional icon support for common filetypes through mini.icons
1414+ (https://github.com/echasnovski/mini.nvim)
1515+- No heavy dependencies - pure Lua
1616+1717+EXTUI
1818+1919+artio requires the extui to be enabled.
2020+2121+an example of how to set this up is:
2222+2323+>lua
2424+ require("vim._extui").enable({ enable = true, msg = {
2525+ target = "msg",
2626+ } })
2727+<
2828+2929+INSTALLATION
3030+3131+`vim.pack`
3232+3333+>lua
3434+ vim.pack.add({{ src = "https://github.com/comfysage/artio.nvim" }})
3535+<
3636+3737+`lazy.nvim`
3838+3939+>lua
4040+ {
4141+ "comfysage/artio.nvim", lazy = false,
4242+ }
4343+<
4444+4545+==============================================================================
4646+4747+CONFIGURATION *artio-config*
4848+4949+Options ~
5050+5151+options that change default behavior of the picker.
5252+5353+>lua
5454+ {
5555+ opts = {
5656+ preselect = true, -- whether to preselect the first match
5757+ bottom = true, -- whether to draw the prompt at the bottom
5858+ shrink = true, -- whether the window should shrink to fit the matches
5959+ promptprefix = "", -- prefix for the prompt
6060+ prompt_title = true, -- whether to draw the prompt title
6161+ pointer = "", -- pointer for the selected match
6262+ use_icons = true, -- requires mini.icons
6363+ },
6464+ }
6565+<
6666+6767+Window Options ~
6868+6969+some less used options for the picker window and its render logic.
7070+7171+>lua
7272+ {
7373+ win = {
7474+ height = 12,
7575+ hidestatusline = false, -- works best with laststatus=3
7676+ },
7777+ }
7878+<
7979+8080+Mappings ~
8181+8282+these override the default mappings for any picker.
8383+these map keys to actions. its allowed to use multiple keys for the same
8484+action.
8585+8686+NOTE: if you override the mappings, make sure to provide keys for all actions
8787+8888+>lua
8989+ {
9090+ mappings = {
9191+ ["<down>"] = "down",
9292+ ["<up>"] = "up",
9393+ ["<cr>"] = "accept",
9494+ ["<esc>"] = "cancel",
9595+ ["<tab>"] = "mark",
9696+ ["<c-l>"] = "togglepreview",
9797+ ["<c-q>"] = "setqflist",
9898+ ["<m-q>"] = "setqflistmark",
9999+ },
100100+ }
101101+<
102102+103103+Setup ~
104104+105105+after setting up artio with your options there are some additional things to
106106+setup.
107107+108108+Keymaps for artio are set using the |<Plug>| interface. These bindings are set
109109+by the api and can be rebound by the user to specific keybindings.
110110+111111+By default there are <Plug> bindings for all builtins. |artio-builtins|
112112+113113+Example ~
114114+115115+>lua
116116+ require('artio').setup({})
117117+118118+ -- override built-in ui select with artio
119119+ vim.ui.select = require("artio").select
120120+121121+ vim.keymap.set("n", "<leader><leader>", "<Plug>(artio-files)")
122122+ vim.keymap.set("n", "<leader>fg", "<Plug>(artio-grep)")
123123+124124+ -- smart file picker
125125+ vim.keymap.set("n", "<leader>ff", "<Plug>(artio-smart)")
126126+127127+ -- general built-in pickers
128128+ vim.keymap.set("n", "<leader>fh", "<Plug>(artio-helptags)")
129129+ vim.keymap.set("n", "<leader>fb", "<Plug>(artio-buffers)")
130130+ vim.keymap.set("n", "<leader>f/", "<Plug>(artio-buffergrep)")
131131+ vim.keymap.set("n", "<leader>fo", "<Plug>(artio-oldfiles)")
132132+<
133133+134134+ vim:tw=78:ts=8:noet:ft=help:norl: