From 7a2a46c06c59ac0f07bd2b36fee91b1f8a2ac59f Mon Sep 17 00:00:00 2001 From: Smirnov Oleksandr Date: Wed, 29 Jun 2022 15:54:26 +0300 Subject: [PATCH] feat(_utils.ts): get interface --- lua/gopher/_utils/ts/init.lua | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/lua/gopher/_utils/ts/init.lua b/lua/gopher/_utils/ts/init.lua index 1e1dcae..c2690b3 100644 --- a/lua/gopher/_utils/ts/init.lua +++ b/lua/gopher/_utils/ts/init.lua @@ -5,6 +5,7 @@ local M = { struct_block = [[((type_declaration (type_spec name:(type_identifier) @struct.name type: (struct_type)))@struct.declaration)]], em_struct_block = [[(field_declaration name:(field_identifier)@struct.name type: (struct_type)) @struct.declaration]], package = [[(package_clause (package_identifier)@package.name)@package.clause]], + interface = [[((type_declaration (type_spec name:(type_identifier) @interface.name type:(interface_type)))@interface.declaration)]], method_name = [[((method_declaration receiver: (parameter_list)@method.receiver name: (field_identifier)@method.name body:(block))@method.declaration)]], func = [[((function_declaration name: (identifier)@function.name) @function.declaration)]], }, @@ -68,4 +69,19 @@ function M.get_package_node_at_pos(row, col, bufnr) end end +---@param row string +---@param col string +---@param bufnr string +---@return table|nil +function M.get_interface_node_at_pos(row, col, bufnr) + local query = M.querys.interface + local bufn = bufnr or vim.api.nvim_get_current_buf() + local ns = nodes.nodes_at_cursor(query, get_name_defaults(), bufn, row, col) + if ns == nil then + u.notify("interface not found", "warn") + else + return ns[#ns] + end +end + return M