diff options
| author | Ariel D'Alessandro <dalessandro.ariel@gmail.com> | 2022-07-16 14:06:04 +0200 |
|---|---|---|
| committer | Ariel D'Alessandro <dalessandro.ariel@gmail.com> | 2022-07-16 14:06:04 +0200 |
| commit | 12ad6f06d15fef6217ed24549106930ed8dcc44a (patch) | |
| tree | aeae4197568d8201147085e7add86a9c1de56716 | |
| parent | f3692dd749a6215ccbbcca04c8346186fe0359cf (diff) | |
| download | nvim-conf-12ad6f06d15fef6217ed24549106930ed8dcc44a.tar.gz nvim-conf-12ad6f06d15fef6217ed24549106930ed8dcc44a.zip | |
Extract php code acitons.
| -rw-r--r-- | after/plugin/lsp.lua | 136 | ||||
| -rw-r--r-- | after/plugin/null-ls.lua | 9 | ||||
| -rw-r--r-- | lua/alpha/php_code_actions.lua | 160 | ||||
| -rw-r--r-- | lua/alpha/plugins.lua | 1 | ||||
| -rw-r--r-- | lua/alpha/telescope/setup.lua | 1 | ||||
| -rw-r--r-- | plugin/packer_compiled.lua | 5 |
6 files changed, 77 insertions, 235 deletions
diff --git a/after/plugin/lsp.lua b/after/plugin/lsp.lua index 07861a4..8b8d1b2 100644 --- a/after/plugin/lsp.lua +++ b/after/plugin/lsp.lua @@ -1,118 +1,118 @@ local telescope_mapper = require("alpha.telescope.mappings") local filetype_attach = setmetatable({ - go = function(_) - vim.cmd([[ + go = function(_) + vim.cmd([[ augroup lsp_buf_format au! BufWritePre <buffer> autocmd BufWritePre <buffer> :lua vim.lsp.buf.formatting_sync() augroup END - ]] ) - end, + ]]) + end, - gdscript = function(_) end, + gdscript = function(_) end, }, { - __index = function() - return function() end - end, + __index = function() + return function() end + end, }) local function on_attach(client) - local filetype = vim.api.nvim_buf_get_option(0, "filetype") - -- keymaps for lsp - vim.keymap.set("n", "K", vim.lsp.buf.hover, { buffer = 0 }) - vim.keymap.set("n", "<c-]>", vim.lsp.buf.definition, { buffer = 0 }) - vim.keymap.set("n", "<leader>vrn", vim.lsp.buf.rename, { buffer = 0 }) - vim.keymap.set("n", "<leader>vf", function() - return vim.lsp.buf.format({ async = true }) - end, { buffer = 0 }) - vim.keymap.set("n", "<leader>vn", vim.diagnostic.goto_next, { buffer = 0 }) - vim.keymap.set("n", "<leader>vp", vim.diagnostic.goto_prev, { buffer = 0 }) - vim.keymap.set("n", "<leader>vca", vim.lsp.buf.code_action, { buffer = 0 }) - vim.keymap.set("i", "<c-h>", vim.lsp.buf.signature_help, { buffer = 0 }) - vim.keymap.set("n", "<leader>vo", ":LspRestart<cr>", { noremap = true }) + local filetype = vim.api.nvim_buf_get_option(0, "filetype") + -- keymaps for lsp + vim.keymap.set("n", "K", vim.lsp.buf.hover, { buffer = 0 }) + vim.keymap.set("n", "<c-]>", vim.lsp.buf.definition, { buffer = 0 }) + vim.keymap.set("n", "<leader>vrn", vim.lsp.buf.rename, { buffer = 0 }) + vim.keymap.set("n", "<leader>vf", function() + return vim.lsp.buf.format({ async = true }) + end, { buffer = 0 }) + vim.keymap.set("n", "<leader>vn", vim.diagnostic.goto_next, { buffer = 0 }) + vim.keymap.set("n", "<leader>vp", vim.diagnostic.goto_prev, { buffer = 0 }) + vim.keymap.set("n", "<leader>vca", vim.lsp.buf.code_action, { buffer = 0 }) + vim.keymap.set("i", "<c-h>", vim.lsp.buf.signature_help, { buffer = 0 }) + vim.keymap.set("n", "<leader>vo", ":LspRestart<cr>", { noremap = true }) - telescope_mapper("gr", "lsp_references", nil, true) - telescope_mapper("<leader>pv", "find_symbol", nil, true) - telescope_mapper("<leader>pd", "lsp_document_symbols", nil, true) + telescope_mapper("gr", "lsp_references", nil, true) + telescope_mapper("<leader>pv", "find_symbol", nil, true) + telescope_mapper("<leader>pd", "lsp_document_symbols", nil, true) - vim.bo.omnifunc = "v:lua.vim.lsp.omnifunc" + vim.bo.omnifunc = "v:lua.vim.lsp.omnifunc" - -- Attach any filetype specific options to the client - filetype_attach[filetype](client) + -- Attach any filetype specific options to the client + filetype_attach[filetype](client) end vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, { - underline = true, - update_in_insert = false, - virtual_text = { spacing = 2, prefix = "●" }, - severity_sort = true, + underline = true, + update_in_insert = false, + virtual_text = { spacing = 2, prefix = "●" }, + severity_sort = true, }) local signs = { Error = " ", Warn = " ", Hint = " ", Info = " " } for type, icon in pairs(signs) do - local hl = "DiagnosticSign" .. type - vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" }) + local hl = "DiagnosticSign" .. type + vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" }) end -- Actual configs local lsp_flags = { - debounce_text_changes = 150, + debounce_text_changes = 150, } require("lspconfig")["rust_analyzer"].setup({ - on_attach = on_attach, - flags = lsp_flags, - -- Server-specific settings... - settings = { - ["rust-analyzer"] = {}, - }, + on_attach = on_attach, + flags = lsp_flags, + -- Server-specific settings... + settings = { + ["rust-analyzer"] = {}, + }, }) require("lspconfig").dockerls.setup({ - on_attach = on_attach, - flags = lsp_flags, + on_attach = on_attach, + flags = lsp_flags, }) require("lspconfig")["intelephense"].setup({ - on_attach = on_attach, - flags = lsp_flags, + on_attach = on_attach, + flags = lsp_flags, }) require("lspconfig").jsonls.setup({ - flags = lsp_flags, + flags = lsp_flags, }) require("lspconfig").html.setup({ - flags = lsp_flags, + flags = lsp_flags, }) require("lspconfig").html.setup({ - flags = lsp_flags, + flags = lsp_flags, }) require("lspconfig").emmet_ls.setup({ - flags = lsp_flags, + flags = lsp_flags, }) require("lspconfig").gopls.setup({ - on_attach = on_attach, - flags = lsp_flags, + on_attach = on_attach, + flags = lsp_flags, }) require("lspconfig")["sumneko_lua"].setup({ - on_attach = on_attach, - flags = lsp_flags, - settings = { - Lua = { - runtime = { - version = "LuaJIT", - }, - diagnostics = { - globals = { "vim" }, - }, - workspace = { - library = vim.api.nvim_get_runtime_file("", true), - }, - telemetry = { - enable = false, - }, - }, - }, + on_attach = on_attach, + flags = lsp_flags, + settings = { + Lua = { + runtime = { + version = "LuaJIT", + }, + diagnostics = { + globals = { "vim" }, + }, + workspace = { + library = vim.api.nvim_get_runtime_file("", true), + }, + telemetry = { + enable = false, + }, + }, + }, }) diff --git a/after/plugin/null-ls.lua b/after/plugin/null-ls.lua index 4ab1e74..2c1cef4 100644 --- a/after/plugin/null-ls.lua +++ b/after/plugin/null-ls.lua @@ -1,10 +1,9 @@ local ok, null_ls = pcall(require, "null-ls") - if not ok then return end -local my_sources = R("alpha.php_code_actions") +local php_actions = require("php-code-actions") local sources = { null_ls.builtins.code_actions.gitsigns, @@ -18,13 +17,9 @@ local sources = { null_ls.builtins.code_actions.gitrebase, null_ls.builtins.code_actions.refactoring, null_ls.builtins.completion.luasnip, - - my_sources.php_setter_getter_actions, + php_actions.getter_setter, } --- null_ls.reset_sources() --- null_ls.register(sources) - null_ls.setup({ sources = sources, }) 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 = { "<?php", "", "class Some", "{", " /**", " * @var []int", " */", " private array $test = 1;", "}", "" }, - -- ft = "php", - -- lsp_method = "textDocument/codeAction", - -- method = "NULL_LS_CODE_ACTION", - -- range = { - -- col = 21, - -- end_col = 21, - -- end_row = 8, - -- row = 8 - -- }, - -- row = 8 - -- } - -- una solucion manar el archivo a algo php para q lo procece - - -- P(context) - end, - }, -} - -return M diff --git a/lua/alpha/plugins.lua b/lua/alpha/plugins.lua index 6ffaf53..cc17db0 100644 --- a/lua/alpha/plugins.lua +++ b/lua/alpha/plugins.lua @@ -202,6 +202,7 @@ return require("packer").startup(function(use) -- Local plugins can be included local_use("telescope-projectionist.nvim") local_use("telescope-laravel.nvim") + local_use("php-code-actions.nvim") use("habamax/vim-godot") use("junegunn/vim-easy-align") diff --git a/lua/alpha/telescope/setup.lua b/lua/alpha/telescope/setup.lua index c3b222d..00e6ebf 100644 --- a/lua/alpha/telescope/setup.lua +++ b/lua/alpha/telescope/setup.lua @@ -162,6 +162,7 @@ require("telescope").setup { _ = require("telescope").load_extension "dap" _ = require("telescope").load_extension "notify" _ = require("telescope").load_extension "file_browser" +-- makes the selection like lsp code actions in telescope _ = require("telescope").load_extension "ui-select" _ = require("telescope").load_extension "fzf" _ = require("telescope").load_extension "git_worktree" diff --git a/plugin/packer_compiled.lua b/plugin/packer_compiled.lua index c23a3d2..1c1f179 100644 --- a/plugin/packer_compiled.lua +++ b/plugin/packer_compiled.lua @@ -292,6 +292,11 @@ _G.packer_plugins = { path = "/home/alpha/.local/share/nvim/site/pack/packer/start/packer.nvim", url = "https://github.com/wbthomason/packer.nvim" }, + ["php-code-actions.nvim"] = { + loaded = true, + path = "/home/alpha/.local/share/nvim/site/pack/packer/start/php-code-actions.nvim", + url = "/home/alpha/plugins/php-code-actions.nvim" + }, playground = { loaded = true, path = "/home/alpha/.local/share/nvim/site/pack/packer/start/playground", |