Files
dotfiles/config/nvim/lua/plugins/code.lua

212 lines
5.7 KiB
Lua

return {
-- A better annotation generator.
-- Supports multiple languages and annotation conventions.
-- https://github.com/danymat/neogen
{
'danymat/neogen',
version = '*',
opts = { enabled = true, snippet_engine = 'luasnip' },
},
-- Terminal manager for (neo)vim
-- https://github.com/voldikss/vim-floaterm
{
'voldikss/vim-floaterm',
cmd = { 'FloatermToggle' },
init = function()
vim.g.floaterm_width = 0.8
vim.g.floaterm_height = 0.8
end,
},
-- Run your tests at the speed of thought
-- https://github.com/vim-test/vim-test
{
'vim-test/vim-test',
dependencies = { 'voldikss/vim-floaterm' },
config = function()
vim.cmd [[
function! PhpUnitTransform(cmd) abort
return join(map(split(a:cmd), 'v:val == "--colors" ? "--colors=always" : v:val'))
endfunction
let g:test#custom_transformations = {'phpunit': function('PhpUnitTransform')}
let g:test#transformation = 'phpunit'
" let test#php#phpunit#options = '--colors=always'
let test#php#pest#options = '-v'
let test#javascript#jest#options = '--color'
function! FloatermStrategy(cmd)
execute 'silent FloatermSend q'
execute 'silent FloatermKill'
execute 'FloatermNew! '.a:cmd.' | less -X'
endfunction
let g:test#custom_strategies = {'floaterm': function('FloatermStrategy')}
let g:test#strategy = 'floaterm'
]]
end,
},
-- Cloak allows you to overlay *'s over defined patterns in defined files.
-- https://github.com/laytan/cloak.nvim
{
'laytan/cloak.nvim',
version = '*',
opts = {
enabled = true,
cloak_character = '*',
-- The applied highlight group (colors) on the cloaking, see `:h highlight`.
highlight_group = 'Comment',
patterns = {
{
-- Match any file starting with ".env".
-- This can be a table to match multiple file patterns.
file_pattern = {
'.env*',
'wrangler.toml',
'.dev.vars',
},
-- Match an equals sign and any character after it.
-- This can also be a table of patterns to cloak,
-- example: cloak_pattern = { ":.+", "-.+" } for yaml files.
cloak_pattern = '=.+',
},
},
},
},
-- projectionist.vim: Granular project configuration
-- https://github.com/tpope/vim-projectionist
{
'tpope/vim-projectionist',
dependencies = 'tpope/vim-dispatch',
config = function()
vim.g.projectionist_heuristics = {
artisan = {
['*'] = {
start = 'php artisan serve',
console = 'php artisan tinker',
},
['app/*.php'] = {
type = 'source',
alternate = {
'tests/Unit/{}Test.php',
'tests/Feature/{}Test.php',
},
},
['tests/Feature/*Test.php'] = {
type = 'test',
alternate = 'app/{}.php',
},
['tests/Unit/*Test.php'] = {
type = 'test',
alternate = 'app/{}.php',
},
['app/Models/*.php'] = {
type = 'model',
},
['app/Http/Controllers/*.php'] = {
type = 'controller',
},
['routes/*.php'] = {
type = 'route',
},
['database/migrations/*.php'] = {
type = 'migration',
},
},
['src/&composer.json'] = {
['src/*.php'] = {
type = 'source',
alternate = {
'tests/{}Test.php',
},
},
['tests/*Test.php'] = {
type = 'test',
alternate = 'src/{}.php',
},
},
['app/&composer.json'] = {
['app/*.php'] = {
type = 'source',
alternate = {
'tests/{}Test.php',
},
},
['tests/*Test.php'] = {
type = 'test',
alternate = 'app/{}.php',
},
},
}
end,
},
-- A vim text object for XML/HTML attributes.
-- https://github.com/whatyouhide/vim-textobj-xmlattr
{
'whatyouhide/vim-textobj-xmlattr',
dependencies = { 'kana/vim-textobj-user' },
},
-- Describe the regexp under the cursor
-- https://github.com/bennypowers/nvim-regexplainer
{
'bennypowers/nvim-regexplainer',
event = 'BufEnter',
dependencies = {
'nvim-treesitter/nvim-treesitter',
'MunifTanjim/nui.nvim',
},
opts = {
-- automatically show the explainer when the cursor enters a regexp
auto = true,
},
},
-- Clarify and beautify your comments using boxes and lines.
-- https://github.com/LudoPinelli/comment-box.nvim
{
'LudoPinelli/comment-box.nvim',
event = 'BufEnter',
opts = {},
},
-- Plugin to improve viewing Markdown files in Neovim
-- https://github.com/MeanderingProgrammer/render-markdown.nvim
{
'MeanderingProgrammer/render-markdown.nvim',
event = 'BufEnter',
dependencies = {
'nvim-treesitter/nvim-treesitter',
'nvim-tree/nvim-web-devicons',
},
ft = 'markdown',
opts = {},
},
{
'ray-x/go.nvim',
dependencies = { -- optional packages
'ray-x/guihua.lua',
'neovim/nvim-lspconfig',
'nvim-treesitter/nvim-treesitter',
},
config = function() require('go').setup() end,
event = { 'CmdlineEnter' },
ft = { 'go', 'gomod' },
build = ':lua require("go.install").update_all_sync()', -- if you need to install/update all binaries
},
-- Mainly a PHP Language Server with more features than you can shake a stick at
-- https://github.com/phpactor/phpactor
{
'phpactor/phpactor',
build = 'composer install --no-dev --optimize-autoloader',
ft = 'php',
},
}