my demo first config lua
This commit is contained in:
170
lua/alpha/telescope/my_actions.lua
Normal file
170
lua/alpha/telescope/my_actions.lua
Normal file
@@ -0,0 +1,170 @@
|
||||
local M = {}
|
||||
|
||||
local action_state = require "telescope.actions.state"
|
||||
local actions = require "telescope.actions"
|
||||
|
||||
M.create_plugin = function(prompt_bufnr)
|
||||
local new_plugin = action_state.get_current_line()
|
||||
actions.close(prompt_bufnr)
|
||||
vim.cmd(string.format("edit ~/.config/nvim/lua/plugins/%s.lua", new_plugin))
|
||||
end
|
||||
|
||||
|
||||
local get_disable_stm_node = function(bufnr, tree)
|
||||
vim.treesitter.query.set(
|
||||
"lua",
|
||||
"alpha_plugin_is_disabled",
|
||||
[[
|
||||
(return_statement
|
||||
(expression_list
|
||||
(table_constructor
|
||||
(field
|
||||
name: (identifier) @enabled (#eq? @enabled "enabled")
|
||||
value: (false) @is_false
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
]]
|
||||
)
|
||||
|
||||
local query = vim.treesitter.query.get("lua", "alpha_plugin_is_disabled")
|
||||
|
||||
for id, node in query:iter_captures(tree:root(), bufnr) do
|
||||
if query.captures[id] == "enabled" then
|
||||
return node
|
||||
end
|
||||
end
|
||||
|
||||
return nil
|
||||
end
|
||||
|
||||
local get_enabled_node = function(bufnr, tree)
|
||||
vim.treesitter.query.set(
|
||||
"lua",
|
||||
"alpha_plugin_has_enable_property",
|
||||
[[
|
||||
(return_statement
|
||||
(expression_list
|
||||
(table_constructor
|
||||
(field
|
||||
name: (identifier) @enabled (#eq? @enabled "enabled")
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
]]
|
||||
)
|
||||
|
||||
local query = vim.treesitter.query.get("lua", "alpha_plugin_has_enable_property")
|
||||
|
||||
for id, node in query:iter_captures(tree:root(), bufnr) do
|
||||
if query.captures[id] == "enabled" then
|
||||
return node
|
||||
end
|
||||
end
|
||||
|
||||
return nil
|
||||
end
|
||||
|
||||
local get_return_node = function(bufnr, tree)
|
||||
vim.treesitter.query.set(
|
||||
"lua",
|
||||
"alpha_plugin_return_table_constructor",
|
||||
[[
|
||||
(return_statement
|
||||
(expression_list
|
||||
(table_constructor) @table_constructor
|
||||
)
|
||||
)
|
||||
]]
|
||||
)
|
||||
|
||||
local query = vim.treesitter.query.get("lua", "alpha_plugin_return_table_constructor")
|
||||
|
||||
for id, node in query:iter_captures(tree:root(), bufnr) do
|
||||
if query.captures[id] == "table_constructor" then
|
||||
return node
|
||||
end
|
||||
end
|
||||
|
||||
return nil
|
||||
end
|
||||
|
||||
M.disable_plugin = function(prompt_bufnr)
|
||||
local entry = action_state.get_selected_entry()
|
||||
local uri = vim.uri_from_fname(entry.cwd .. entry[1])
|
||||
local bufnr = vim.uri_to_bufnr(uri)
|
||||
vim.fn.bufload(bufnr)
|
||||
|
||||
local parsers = require "nvim-treesitter.parsers"
|
||||
local parser = parsers.get_parser(bufnr)
|
||||
local tree = parser:parse()[1]
|
||||
|
||||
local disabled_stm_node = get_disable_stm_node(bufnr, tree)
|
||||
if disabled_stm_node ~= nil then
|
||||
vim.notify("Plugin is already disable", vim.log.levels.WARN, {})
|
||||
return
|
||||
end
|
||||
|
||||
local start_line
|
||||
local end_line
|
||||
|
||||
local enable_node = get_enabled_node(bufnr, tree)
|
||||
if enable_node == nil then
|
||||
-- node does not exists need to assume line
|
||||
local return_node = get_return_node(bufnr, tree)
|
||||
|
||||
if return_node == nil then
|
||||
vim.notify("Can determine how to diable the plugin", vim.log.levels.ERROR, {})
|
||||
return
|
||||
end
|
||||
|
||||
start_line = return_node:start() + 2
|
||||
end_line = start_line
|
||||
else
|
||||
start_line = enable_node:start()
|
||||
end_line = start_line + 1
|
||||
end
|
||||
|
||||
vim.api.nvim_buf_set_lines(bufnr, start_line, end_line, false, { " enabled = false," })
|
||||
vim.notify("Plugin " .. entry[1] .. " Disabled", vim.log.levels.INFO, {})
|
||||
actions.close(prompt_bufnr)
|
||||
vim.api.nvim_buf_call(bufnr, function()
|
||||
vim.cmd "write"
|
||||
end)
|
||||
end
|
||||
|
||||
M.enable_plugin = function(prompt_bufnr)
|
||||
local entry = action_state.get_selected_entry()
|
||||
local uri = vim.uri_from_fname(entry.cwd .. entry[1])
|
||||
local bufnr = vim.uri_to_bufnr(uri)
|
||||
vim.fn.bufload(bufnr)
|
||||
|
||||
local parsers = require "nvim-treesitter.parsers"
|
||||
local parser = parsers.get_parser(bufnr)
|
||||
|
||||
local tree = parser:parse()[1]
|
||||
|
||||
local disabled_stm_node = get_disable_stm_node(bufnr, tree)
|
||||
if disabled_stm_node == nil then
|
||||
vim.notify("Plugin is already Enable", vim.log.levels.WARN, {})
|
||||
return
|
||||
end
|
||||
|
||||
local enable_line = disabled_stm_node:start()
|
||||
vim.api.nvim_buf_set_lines(bufnr, enable_line, enable_line + 1, false, {})
|
||||
vim.notify("Plugin " .. entry[1] .. " Enabled", vim.log.levels.INFO, {})
|
||||
actions.close(prompt_bufnr)
|
||||
vim.api.nvim_buf_call(bufnr, function()
|
||||
vim.cmd "write"
|
||||
end)
|
||||
end
|
||||
|
||||
M.create_scratch_file = function(prompt_bufnr)
|
||||
local new_scratch = action_state.get_current_line()
|
||||
actions.close(prompt_bufnr)
|
||||
vim.cmd(string.format("edit ~/.config/nvim/lua/scratchs/%s.lua", new_scratch))
|
||||
end
|
||||
|
||||
return M
|
||||
Reference in New Issue
Block a user