aboutsummaryrefslogtreecommitdiffstats
path: root/lua/alpha/scratchs/draft.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/alpha/scratchs/draft.lua')
-rw-r--r--lua/alpha/scratchs/draft.lua144
1 files changed, 60 insertions, 84 deletions
diff --git a/lua/alpha/scratchs/draft.lua b/lua/alpha/scratchs/draft.lua
index 32b9c8d..8954fdc 100644
--- a/lua/alpha/scratchs/draft.lua
+++ b/lua/alpha/scratchs/draft.lua
@@ -1,100 +1,76 @@
-local api = vim.api
-
-function GlobalFunction()
- local position_params = vim.lsp.util.make_position_params()
- P(position_params)
-
- vim.lsp.buf_request(0, "textDocument/completion", position_params, function(err, result)
- if vim.tbl_isempty(result or {}) then return end
-
- local textEdit = result.items[1].additionalTextEdits;
-
- local bufnr = vim.api.nvim_get_current_buf()
- vim.lsp.util.apply_text_edits(textEdit, bufnr)
- end)
-end
-
-local ts_locals = require "nvim-treesitter.locals"
-local ts_utils = require "nvim-treesitter.ts_utils"
-
+local pickers = require("telescope.pickers")
+local finders = require("telescope.finders")
+local conf = require("telescope.config").values
+local action_state = require("telescope.actions.state")
+local action_set = require("telescope.actions.set")
local get_node_text = vim.treesitter.get_node_text
-
-local function get_root_node()
- local node = ts_utils.get_node_at_cursor()
- if node == nil then
- error("No treesitter parser found.")
- end
-
- local parent = node:parent()
- while (parent ~= nil) do
- node = parent
- parent = node:parent()
- end
-
- return node
-end
-
--- this function allows me to retrieve all the queries or mutations
--- from the yaml file
--- next integrate with telescope to quick search
--- actions, go to the file line
--- new action open the php class on the method (lsp maybe, but the problem is not attached)
-function Queries()
+local function getElements()
vim.treesitter.set_query(
"yaml",
"GraphQL_endpoints",
[[
-(
- (document
- (block_node
-(block_mapping
-(block_mapping_pair
- value: (block_node
-(block_mapping (block_mapping_pair
- value: (block_node
-(block_mapping (block_mapping_pair
- value: (block_node
- (block_mapping (block_mapping_pair key: (flow_node) @name))
-))))))))))
- )
-)
+ (document (block_node (block_mapping (block_mapping_pair
+ value: (block_node (block_mapping (block_mapping_pair
+ value: (block_node (block_mapping (block_mapping_pair
+ value: (block_node (block_mapping (block_mapping_pair
+ key: (flow_node) @mutation
+ value: (block_node (block_mapping (block_mapping_pair
+ key: (flow_node) @resolve (#eq? @resolve "resolve")
+ value: (flow_node) @resolver
+ )))
+ )))
+ )))
+ )))
+ ))))
]]
)
local query = vim.treesitter.get_query("yaml", "GraphQL_endpoints")
- local rootNode = get_root_node()
- for _, node in query:iter_captures(rootNode, 0, rootNode:start(), rootNode:end_()) do
- P(get_node_text(node, 0))
- P(node:start())
- P(node:end_())
+ local elements = {}
+
+ local parsers = require("nvim-treesitter.parsers")
+ local parser = parsers.get_parser(0)
+ ---@diagnostic disable-next-line: deprecated
+ local tree = unpack(parser:parse())
+
+ for id, node in query:iter_captures(tree:root(), 0) do
+ if query.captures[id] == "mutation" then
+ table.insert(elements, { get_node_text(node, 0), node:start() + 1 })
+ end
end
-end
-local function get_visual_selection()
- local s_start = vim.fn.getpos("'<")
- local s_end = vim.fn.getpos("'>")
- local n_lines = math.abs(s_end[2] - s_start[2]) + 1
- local lines = vim.api.nvim_buf_get_lines(0, s_start[2] - 1, s_end[2], false)
- lines[1] = string.sub(lines[1], s_start[3], -1)
- if n_lines == 1 then
- lines[n_lines] = string.sub(lines[n_lines], 1, s_end[3] - s_start[3] + 1)
- else
- lines[n_lines] = string.sub(lines[n_lines], 1, s_end[3])
- end
- return table.concat(lines, '\n')
+ return elements
end
-function GetPhpString()
- local s_start = vim.fn.getpos("'<")
- local s_end = vim.fn.getpos("'>")
- local text = get_visual_selection()
- P(text)
- local result = vim.fn.system("php -r 'echo \"" .. text .. "\";'")
- vim.api.nvim_put({result}, "", true, false)
- P(result)
- vim.api.nvim_buf_set_text(0, s_start[2] -1 , s_start[3] -1, s_end[2] -1, s_end[3], {result})
+function Queries(opts)
+ opts = opts or {}
+ pickers.new(opts, {
+ promt_title = "Queries",
+ finder = finders.new_table({
+ results = getElements(),
+ entry_maker = function(entry)
+ return {
+ value = entry,
+ display = entry[1],
+ ordinal = entry[1],
+ path = vim.api.nvim_buf_get_name(0),
+ lnum = entry[2],
+ }
+ end,
+ }),
+ sorter = conf.generic_sorter(opts),
+ previewer = conf.grep_previewer(opts),
+ attach_mappings = function()
+ action_set.select:enhance({
+ post = function()
+ local selection = action_state.get_selected_entry()
+ vim.api.nvim_win_set_cursor(0, { selection.lnum, 0 })
+ end,
+ })
+
+ return true
+ end,
+ }):find()
end
-
-vim.keymap.set('n', '<leader>rrh', GetPhpString, {})