using plenary to fetch synonyms instead of systemlist
This commit is contained in:
parent
9dcd475716
commit
0d886acb1d
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
A [Telescope](https://github.com/nvim-telescope/telescope.nvim) extension that loads a list of synonyms for the word under the cusor in the current buffer, and shows their definition in the preview window. Selecting one of the synonyms replaces the word in the buffer.
|
A [Telescope](https://github.com/nvim-telescope/telescope.nvim) extension that loads a list of synonyms for the word under the cusor in the current buffer, and shows their definition in the preview window. Selecting one of the synonyms replaces the word in the buffer.
|
||||||
|
|
||||||
|
![Screenshot](https://raw.githubusercontent.com/wiki/rudism/telescope-dict.nvim/img/screen_shot.png)
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
These should be available through your package manager (or likely already installed, in the case of `perl`):
|
These should be available through your package manager (or likely already installed, in the case of `perl`):
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
-- command
|
||||||
local telescope = require('telescope')
|
local telescope = require('telescope')
|
||||||
local pickers = require('telescope.pickers')
|
local pickers = require('telescope.pickers')
|
||||||
local finders = require('telescope.finders')
|
local finders = require('telescope.finders')
|
||||||
|
@ -6,13 +7,14 @@ local previewers = require('telescope.previewers')
|
||||||
local previewer_utils = require('telescope.previewers.utils')
|
local previewer_utils = require('telescope.previewers.utils')
|
||||||
local actions = require('telescope.actions')
|
local actions = require('telescope.actions')
|
||||||
local action_state = require('telescope.actions.state')
|
local action_state = require('telescope.actions.state')
|
||||||
|
local Job = require('plenary.job')
|
||||||
|
|
||||||
function script_path()
|
local function script_path()
|
||||||
local str = debug.getinfo(2, "S").source:sub(2)
|
local str = debug.getinfo(2, "S").source:sub(2)
|
||||||
return str:match("(.*/)")
|
return str:match("(.*/)")
|
||||||
end
|
end
|
||||||
|
|
||||||
function upper_first(word)
|
local function upper_first(word)
|
||||||
return word:gsub("(%a)([%w_']*)", function(first, rest) return first:upper()..rest:lower() end)
|
return word:gsub("(%a)([%w_']*)", function(first, rest) return first:upper()..rest:lower() end)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -21,44 +23,44 @@ return telescope.register_extension {
|
||||||
synonyms = function(opts)
|
synonyms = function(opts)
|
||||||
opts = opts or {}
|
opts = opts or {}
|
||||||
local cursor_word = vim.fn.expand("<cword>")
|
local cursor_word = vim.fn.expand("<cword>")
|
||||||
local command = table.concat({
|
Job:new({
|
||||||
"perl ",
|
command = 'perl',
|
||||||
script_path().."/cmd.pl ",
|
args = { script_path().."/cmd.pl", "synonyms", cursor_word },
|
||||||
"synonyms ",
|
on_exit = vim.schedule_wrap(function(job)
|
||||||
vim.fn.shellescape(cursor_word)
|
local synonyms = job:result() or {}
|
||||||
})
|
table.insert(synonyms, cursor_word:lower())
|
||||||
local synonyms = vim.fn.systemlist(command) or {}
|
pickers.new(opts, {
|
||||||
table.insert(synonyms, cursor_word:lower())
|
prompt_title = upper_first(cursor_word).." Synonyms",
|
||||||
pickers.new(opts, {
|
finder = finders.new_table {
|
||||||
prompt_title = upper_first(cursor_word).." Synonyms",
|
results = synonyms,
|
||||||
finder = finders.new_table {
|
},
|
||||||
results = synonyms,
|
sorter = sorters.get_substr_matcher(),
|
||||||
},
|
previewer = previewers.new_buffer_previewer({
|
||||||
sorter = sorters.get_substr_matcher(),
|
define_preview = function(self, entry, _)
|
||||||
previewer = previewers.new_buffer_previewer({
|
vim.api.nvim_win_set_option(self.state.winid, 'wrap', true)
|
||||||
define_preview = function(self, entry, status)
|
vim.api.nvim_win_set_option(self.state.winid, 'lbr', true)
|
||||||
vim.api.nvim_win_set_option(self.state.winid, 'wrap', true)
|
local cmd = { "perl", script_path().."/cmd.pl", "definitions", entry.value }
|
||||||
vim.api.nvim_win_set_option(self.state.winid, 'lbr', true)
|
return previewer_utils.job_maker(cmd, self.state.bufnr, {
|
||||||
local cmd = { "perl", script_path().."/cmd.pl", "definitions", entry.value }
|
callback = function(bufnr, _)
|
||||||
return previewer_utils.job_maker(cmd, self.state.bufnr, {
|
previewer_utils.highlighter(bufnr, 'yaml')
|
||||||
callback = function(bufnr, content)
|
end
|
||||||
previewer_utils.highlighter(bufnr, 'yaml')
|
})
|
||||||
end
|
end,
|
||||||
})
|
title = "Definition"
|
||||||
end,
|
}),
|
||||||
title = "Definition"
|
dynamic_preview_title = true,
|
||||||
}),
|
attach_mappings = function(prompt_bufnr)
|
||||||
dynamic_preview_title = true,
|
actions.select_default:replace(function()
|
||||||
attach_mappings = function(prompt_bufnr)
|
local selection = action_state.get_selected_entry()
|
||||||
actions.select_default:replace(function()
|
actions.close(prompt_bufnr)
|
||||||
local selection = action_state.get_selected_entry()
|
vim.cmd("normal! ciw" .. selection[1])
|
||||||
actions.close(prompt_bufnr)
|
vim.cmd "stopinsert"
|
||||||
vim.cmd("normal! ciw" .. selection[1])
|
end)
|
||||||
vim.cmd "stopinsert"
|
return true
|
||||||
end)
|
end,
|
||||||
return true
|
}):find()
|
||||||
end,
|
end)
|
||||||
}):find()
|
}):start()
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue