Skip to content

Commit 9bb8695

Browse files
authored
Merge pull request #278 from BingCoke/main
2 parents 2d7bd3d + bbb5c51 commit 9bb8695

File tree

3 files changed

+90
-0
lines changed

3 files changed

+90
-0
lines changed

README.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,9 @@ use {
101101
-- Jump to request line on run
102102
jump_to_request = false,
103103
env_file = '.env',
104+
-- for telescope select
105+
env_pattern = "\\.env$",
106+
env_edit_command = "tabedit",
104107
custom_dynamic_variables = {},
105108
yank_dry_run = true,
106109
search_back = true,
@@ -189,6 +192,26 @@ request method (e.g. `GET`) and run `rest.nvim`.
189192
Run `export DEBUG_PLENARY="debug"` before starting nvim. Logs will appear most
190193
likely in ~/.cache/nvim/rest.nvim.log
191194

195+
## Telescope Extension
196+
197+
```lua
198+
199+
-- first load extension
200+
require("telescope").load_extension("rest")
201+
-- then use it
202+
require("telescope").extensions.rest.select_env()
203+
204+
```
205+
206+
### Mappings
207+
208+
- Enter: Select Env file
209+
- Ctrl+O: Edit Env file
210+
211+
### Config
212+
213+
- env_pattern: For env file pattern
214+
- env_edit_command: For env file edit command
192215

193216
## Contribute
194217

lua/rest-nvim/config/init.lua

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ local config = {
3636
},
3737
jump_to_request = false,
3838
env_file = ".env",
39+
env_pattern = "\\.env$",
40+
env_edit_command = "tabedit",
3941
custom_dynamic_variables = {},
4042
yank_dry_run = true,
4143
search_back = true,

lua/telescope/_extensions/rest.lua

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
local has_telescope, telescope = pcall(require, "telescope")
2+
3+
if not has_telescope then
4+
return
5+
end
6+
7+
local rest = require("rest-nvim")
8+
9+
local state = require("telescope.actions.state")
10+
11+
local action_state = require("telescope.actions.state")
12+
local actions = require("telescope.actions")
13+
local finders = require("telescope.finders")
14+
local pickers = require("telescope.pickers")
15+
local conf = require("telescope.config").values
16+
17+
local config = require("rest-nvim.config")
18+
19+
local function rest_env_select(opt)
20+
local pattern = config.get("env_pattern")
21+
local edit = config.get("env_edit_command")
22+
23+
local command = string.format("fd -H '%s'", pattern)
24+
local result = io.popen(command):read("*a")
25+
26+
local lines = {}
27+
for line in result:gmatch("[^\r\n]+") do
28+
table.insert(lines, line)
29+
end
30+
31+
pickers
32+
.new({}, {
33+
prompt_title = "Select Env File",
34+
finder = finders.new_table({
35+
results = lines,
36+
}),
37+
attach_mappings = function(prompt_bufnr, map)
38+
actions.select_default:replace(function()
39+
local selection = action_state.get_selected_entry()
40+
actions.close(prompt_bufnr)
41+
if selection == nil then
42+
return
43+
end
44+
rest.select_env(selection[1])
45+
end)
46+
map("i", "<c-o>", function()
47+
actions.close(prompt_bufnr)
48+
local selection = state.get_selected_entry(prompt_bufnr)
49+
if selection == nil then
50+
return
51+
end
52+
vim.api.nvim_command(edit .. " " .. selection[1])
53+
end)
54+
return true
55+
end,
56+
previewer = conf.grep_previewer({}),
57+
})
58+
:find()
59+
end
60+
61+
return telescope.register_extension({
62+
exports = {
63+
select_env = rest_env_select,
64+
},
65+
})

0 commit comments

Comments
 (0)