From 12ad6f06d15fef6217ed24549106930ed8dcc44a Mon Sep 17 00:00:00 2001 From: Ariel D'Alessandro Date: Sat, 16 Jul 2022 14:06:04 +0200 Subject: Extract php code acitons. --- lua/alpha/php_code_actions.lua | 160 ----------------------------------------- lua/alpha/plugins.lua | 1 + lua/alpha/telescope/setup.lua | 1 + 3 files changed, 2 insertions(+), 160 deletions(-) delete mode 100644 lua/alpha/php_code_actions.lua (limited to 'lua') diff --git a/lua/alpha/php_code_actions.lua b/lua/alpha/php_code_actions.lua deleted file mode 100644 index 32b3ed9..0000000 --- a/lua/alpha/php_code_actions.lua +++ /dev/null @@ -1,160 +0,0 @@ -local null_ls = require("null-ls") -local utils = require("alpha.utils") -local ts_utils = require("nvim-treesitter.ts_utils") -local generator = require("alpha.setter_getter_template") - -local get_node_text = vim.treesitter.get_node_text - -local function tableConcat(t1, t2) - for i = 1, #t2 do - t1[#t1 + 1] = t2[i] - end - return t1 -end - -vim.treesitter.set_query( - "php", - "Alpha_refactor_property", - [[ - [ - (union_type - (primitive_type) @type - ) - (union_type - (named_type) @type - ) - (property_element - (variable_name) @name - ) - ] -]] -) - -vim.treesitter.set_query( - "phpdoc", - "Alpha_refactor_property_phpdoc_primitives", - [[ - [ - (type_list - (primitive_type) @primitive - ) - ] - ]] -) - -vim.treesitter.set_query( - "phpdoc", - "Alpha_refactor_property_phpdoc_class", - [[ - [ - (type_list - (named_type - (name) @class - ) - ) - ] - ]] -) - -local M = {} - -M.php_setter_getter_actions = { - method = null_ls.methods.CODE_ACTION, - filetypes = { "php" }, - generator = { - fn = function(context) - local cursor_node = utils.get_master_node() - if cursor_node == nil then - return - end - if cursor_node.type(cursor_node) ~= "property_declaration" then - return - end - return { - { - title = "Create Getter and Setter", - action = function() - local property_node = cursor_node - - local property_name - local property_types = {} - local nullable = false - local query = vim.treesitter.get_query("php", "Alpha_refactor_property") - for _, match in query:iter_matches(property_node, 0) do - for id, subNode in pairs(match) do - local capture_name = query.captures[id] - if capture_name == "name" then - property_name = string.sub(get_node_text(subNode, 0), 2) - elseif capture_name == "type" then - table.insert(property_types, get_node_text(subNode, 0)) - end - end - end - - local comment_node = ts_utils.get_previous_node(property_node) - if comment_node ~= nil then - -- P(comment_node:type()) - local row, column = comment_node:start() - local test_node = ts_utils.get_root_for_position(row, column) - local primitive_query = vim.treesitter.get_query("phpdoc", "Alpha_refactor_property_phpdoc_primitives") - for _, match in primitive_query:iter_matches(test_node, 0) do - for _, subNode in pairs(match) do - local type = get_node_text(subNode, 0) - -- P(type) - if type ~= "null" then - table.insert(property_types, type) - else - nullable = true - end - end - end - - local class_query = vim.treesitter.get_query("phpdoc", "Alpha_refactor_property_phpdoc_class") - for _, match in class_query:iter_matches(test_node, 0) do - for _, subNode in pairs(match) do - local type = get_node_text(subNode, 0) - table.insert(property_types, type) - end - end - end - -- P(property_types) - local getter = generator.getGetter(property_name, nullable, property_types, true) - local setter = generator.getSetter(property_name, nullable, property_types, true) - - -- this is using the last line of file mines 2 - vim.api.nvim_buf_set_lines( - 0, - #context.content - 2, - #context.content - 2, - false, - tableConcat(getter, setter) - ) - end, - }, - } - -- context dump - -- { - -- bufname = "/home/alpha/.dotfiles/nvim/.config/nvim/test.php", - -- bufnr = 90, - -- client_id = 1, - -- col = 20, - -- content = { "