aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAriel D'Alessandro <dalessandro.ariel@gmail.com>2022-07-16 14:06:04 +0200
committerAriel D'Alessandro <dalessandro.ariel@gmail.com>2022-07-16 14:06:04 +0200
commit12ad6f06d15fef6217ed24549106930ed8dcc44a (patch)
treeaeae4197568d8201147085e7add86a9c1de56716
parentf3692dd749a6215ccbbcca04c8346186fe0359cf (diff)
downloadnvim-conf-12ad6f06d15fef6217ed24549106930ed8dcc44a.tar.gz
nvim-conf-12ad6f06d15fef6217ed24549106930ed8dcc44a.zip
Extract php code acitons.
-rw-r--r--after/plugin/lsp.lua136
-rw-r--r--after/plugin/null-ls.lua9
-rw-r--r--lua/alpha/php_code_actions.lua160
-rw-r--r--lua/alpha/plugins.lua1
-rw-r--r--lua/alpha/telescope/setup.lua1
-rw-r--r--plugin/packer_compiled.lua5
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",