Merge pull request #7 from barrettruth/feature/snacks
feat: add snacks.picker support
This commit is contained in:
commit
7586374e68
4 changed files with 90 additions and 58 deletions
|
|
@ -1,38 +1,35 @@
|
|||
http-codes *http-codes.txt*
|
||||
|
||||
Author: Barrett Ruth <https://barrettruth.com>
|
||||
Homepage: <https://github.com/barrett-ruth/http-codes.nvim>
|
||||
Homepage: <https://github.com/barrettruth/http-codes.nvim>
|
||||
|
||||
===============================================================================
|
||||
INTRODUCTION *http-codes.nvim*
|
||||
|
||||
https-codes.nvim lets you quickly investigate HTTP status codes with mozilla,
|
||||
supporting fzf-lua and telescope.nvim.
|
||||
|
||||
Author: Barrett Ruth <https://barrettruth.com>
|
||||
http-codes.nvim lets you quickly investigate HTTP status codes with Mozilla,
|
||||
supporting fzf-lua, snacks.nvim, and telescope.nvim.
|
||||
|
||||
===============================================================================
|
||||
SETUP *http-codes.setup()*
|
||||
>lua
|
||||
require('http-codes').setup(config)
|
||||
<
|
||||
Parameters: ~
|
||||
CONFIGURATION *http-codes.config*
|
||||
|
||||
{config} `(table)`: table containing configuration for http-codes.
|
||||
Defaults shown below.
|
||||
|
||||
Usage: ~
|
||||
Configure via `vim.g.http_codes` before the plugin loads:
|
||||
>lua
|
||||
require('http-codes').setup({
|
||||
-- defaults to available picker: 'fzf-lua' or 'telescope'
|
||||
use = 'fzf-lua'
|
||||
-- How the mozilla url is opened.
|
||||
-- Configured by default based on OS:
|
||||
open_url = 'xdg-open %s' -- UNIX
|
||||
-- = 'open %s' -- OSX
|
||||
-- = 'start %s' -- Windows
|
||||
})
|
||||
vim.g.http_codes = {
|
||||
use = 'fzf-lua',
|
||||
open_url = 'xdg-open %s',
|
||||
}
|
||||
<
|
||||
Options: ~
|
||||
|
||||
{use} `(string|nil)`: Picker to use: 'fzf-lua', 'snacks', or
|
||||
'telescope'. Auto-detected if not specified.
|
||||
|
||||
{open_url} `(string|nil)`: Command to open URLs. Uses `%s` as placeholder.
|
||||
Defaults based on OS:
|
||||
- Linux: 'xdg-open %s'
|
||||
- macOS: 'open %s'
|
||||
- Windows: 'start %s'
|
||||
|
||||
===============================================================================
|
||||
COMMANDS *http-codes.commands*
|
||||
|
||||
|
|
|
|||
|
|
@ -24,19 +24,21 @@ local function init()
|
|||
if not config.use then
|
||||
if pcall(require, 'fzf-lua') then
|
||||
config.use = 'fzf-lua'
|
||||
elseif pcall(require, 'snacks') then
|
||||
config.use = 'snacks'
|
||||
elseif pcall(require, 'telescope') then
|
||||
config.use = 'telescope'
|
||||
end
|
||||
end
|
||||
|
||||
if not config.use then
|
||||
vim.notify_once('http-codes.nvim: install fzf-lua or telescope.nvim', vim.log.levels.ERROR)
|
||||
vim.notify_once('http-codes.nvim: install fzf-lua, snacks.nvim, or telescope.nvim', vim.log.levels.ERROR)
|
||||
return false
|
||||
end
|
||||
|
||||
if not vim.tbl_contains({ 'fzf-lua', 'telescope' }, config.use) then
|
||||
if not vim.tbl_contains({ 'fzf-lua', 'snacks', 'telescope' }, config.use) then
|
||||
vim.notify_once(
|
||||
"http-codes.nvim: 'use' must be 'fzf-lua' or 'telescope'",
|
||||
"http-codes.nvim: 'use' must be 'fzf-lua', 'snacks', or 'telescope'",
|
||||
vim.log.levels.ERROR
|
||||
)
|
||||
return false
|
||||
|
|
@ -59,6 +61,8 @@ function M.pick()
|
|||
require('telescope').extensions.http.list(config.open_url)
|
||||
elseif config.use == 'fzf-lua' then
|
||||
require('http-codes.fzf-lua').pick(config.open_url)
|
||||
elseif config.use == 'snacks' then
|
||||
require('http-codes.snacks').pick(config.open_url)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
35
lua/http-codes/snacks.lua
Normal file
35
lua/http-codes/snacks.lua
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
local codes = require 'http-codes.codes'
|
||||
local cached_items = nil
|
||||
|
||||
local function codes_to_snack_items(codes)
|
||||
if cached_items then return cached_items end
|
||||
|
||||
local items = {}
|
||||
|
||||
local idx = 1
|
||||
for status, _ in pairs(codes) do
|
||||
table.insert(items, { idx = idx, text = status })
|
||||
idx = idx + 1
|
||||
end
|
||||
cached_items = items
|
||||
return items
|
||||
end
|
||||
|
||||
return {
|
||||
pick = function(open_url)
|
||||
require('snacks.picker').pick(nil, {
|
||||
title = 'HTTP Codes',
|
||||
items = codes_to_snack_items(codes),
|
||||
format = 'text',
|
||||
layout = {
|
||||
preset = 'select',
|
||||
hidden = { 'preview' },
|
||||
},
|
||||
confirm = function(picker, item)
|
||||
local link = codes[item.text]
|
||||
picker:close()
|
||||
vim.fn.jobstart(open_url:format(link))
|
||||
end,
|
||||
})
|
||||
end,
|
||||
}
|
||||
58
readme.md
58
readme.md
|
|
@ -1,51 +1,47 @@
|
|||
# http-codes.nvim
|
||||
|
||||
Quickly investigate HTTP status codes with the help of [mozilla](https://developer.mozilla.org/en-US/docs/Web/HTTP), including [telescope](https://github.com/barrett-ruth/telescope-http.nvim/) and [fzf-lua](https://github.com/ibhagwan/fzf-lua) integrations.
|
||||
Quickly investigate HTTP status codes with the help of [Mozilla](https://developer.mozilla.org/en-US/docs/Web/HTTP), with telescope, fzf-lua, and snacks.nvim integrations.
|
||||
|
||||
## Installation
|
||||
|
||||
Install via your favorite package manager, like [lazy](https://github.com/folke/lazy.nvim):
|
||||
Install using your package manager of choice or via [luarocks](https://luarocks.org/modules/barrettruth/http-codes.nvim):
|
||||
|
||||
```lua
|
||||
require('lazy').setup({
|
||||
{
|
||||
'barrett-ruth/http-codes.nvim',
|
||||
config = true,
|
||||
-- or 'nvim-telescope/telescope.nvim'
|
||||
dependencies = 'ibhagwan/fzf-lua'
|
||||
keys = { { '<leader>H', '<cmd>HTTPCodes<cr>' }}
|
||||
}
|
||||
})
|
||||
```
|
||||
luarocks install http-codes.nvim
|
||||
```
|
||||
|
||||
## [Configuration](./doc/http-codes.txt)
|
||||
## Dependencies
|
||||
|
||||
`http-codes.nvim` uses telescope or fzf-lua (whichever you've installed), which can be manually overidden.
|
||||
One of:
|
||||
- [fzf-lua](https://github.com/ibhagwan/fzf-lua)
|
||||
- [snacks.nvim](https://github.com/folke/snacks.nvim)
|
||||
- [telescope.nvim](https://github.com/nvim-telescope/telescope.nvim)
|
||||
|
||||
`http-codes.nvim` opens the Mozilla documentation URLs based on your operating system. This can be overidden.
|
||||
## Configuration
|
||||
|
||||
| OS | open_url |
|
||||
| ------- | ------------- |
|
||||
Configure via `vim.g.http_codes` before the plugin loads:
|
||||
|
||||
```lua
|
||||
vim.g.http_codes = {
|
||||
use = 'fzf-lua', -- or 'snacks' or 'telescope', auto-detected by default
|
||||
open_url = 'xdg-open %s', -- OS-specific by default
|
||||
}
|
||||
```
|
||||
|
||||
| OS | Default open_url |
|
||||
| ------- | ---------------- |
|
||||
| Windows | `start %s` |
|
||||
| OSX | `open %s` |
|
||||
| UNIX | `xdg-open %s` |
|
||||
|
||||
See [the docs](./doc/http-codes.txt) for more information.
|
||||
| macOS | `open %s` |
|
||||
| Linux | `xdg-open %s` |
|
||||
|
||||
## Usage
|
||||
|
||||
Use the exposed command in vimscript:
|
||||
|
||||
```lua
|
||||
```vim
|
||||
:HTTPCodes
|
||||
```
|
||||
|
||||
or in lua:
|
||||
## Documentation
|
||||
|
||||
```lua
|
||||
require('http-codes').http_codes()
|
||||
```vim
|
||||
:help http-codes.nvim
|
||||
```
|
||||
|
||||
## Migration
|
||||
|
||||
If migrating from [telescope-http.nvim](https://github.com/barrett-ruth/telescope-http.nvim), follow the above instructions—no telescope-specific config is necessary.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue