This commit is contained in:
Snoweuph 2024-07-02 23:52:43 +02:00
commit 67c224a398
Signed by: Snoweuph
GPG key ID: A494330694B208EF
111 changed files with 1822 additions and 0 deletions

36
Readme.md Normal file
View file

@ -0,0 +1,36 @@
# Dotfiles/nvim
## Install dependencies
### Fedora
#### Enable Coprs
```sh
dnf copr enable yorickpeterse/stylua -y
```
#### Add YUM Repos
```sh
echo '[charm]
name=Charm
baseurl=https://repo.charm.sh/yum/
enabled=1
gpgcheck=1
gpgkey=https://repo.charm.sh/yum/gpg.key' | sudo tee /etc/yum.repos.d/charm.repo
```
#### Install System Packages
```sh
dnf install -y neovim lua gcc curl wget git unzip tar gzip ripgrep php composer go nodejs npm delve stylua codespell cargo
```
#### Install Cargo packages
```sh
cargo install selene
```
#### Install NPM packages
```sh
npm install -g @fsouza/prettierd
npm install -g eslint_d
```

1
init.lua Normal file
View file

@ -0,0 +1 @@
require('core')

8
lua/core/editor.lua Normal file
View file

@ -0,0 +1,8 @@
-- Use 2 Spaces Instead of Tabs --
vim.opt.expandtab = true
vim.opt.tabstop = 4
vim.opt.softtabstop = 4
vim.opt.shiftwidth = 4
-- Enable Line Number --
vim.opt.number = true

3
lua/core/init.lua Normal file
View file

@ -0,0 +1,3 @@
require('core.keymap')
require('core.editor')
require('core.package_manager')

5
lua/core/keymap.lua Normal file
View file

@ -0,0 +1,5 @@
vim.g.mapleader = ' '
--[[ Indentation ]]
vim.keymap.set('n', '<Tab>', '>>')
vim.keymap.set('n', '<S-Tab>', '<<')

View file

@ -0,0 +1,19 @@
local lazypath = vim.fn.stdpath('data') .. '/lazy/lazy.nvim'
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
'git',
'clone',
'--filter=blob:none',
'https://github.com/folke/lazy.nvim.git',
'--branch=stable',
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
local plugins = require('util.toolchain').plugins
table.insert(plugins, 1, { import = 'editor' })
require('lazy').setup({
spec = plugins,
})

View file

@ -0,0 +1,4 @@
return {
'm4xshen/autoclose.nvim',
config = function() require('autoclose').setup() end,
}

32
lua/editor/dashboard.lua Normal file
View file

@ -0,0 +1,32 @@
return {
'goolord/alpha-nvim',
dependencies = {
'nvim-tree/nvim-web-devicons',
},
config = function()
-- Setup --
local alpha = require('alpha')
local dashboard = require('alpha.themes.startify')
-- Header --
dashboard.section.header.val = {
[[ ]],
[[ ]],
[[ ]],
[[ ]],
[[  ]],
[[ ████ ██████ █████ ██ ]],
[[ ███████████ █████  ]],
[[ █████████ ███████████████████ ███ ███████████ ]],
[[ █████████ ███ █████████████ █████ ██████████████ ]],
[[ █████████ ██████████ █████████ █████ █████ ████ █████ ]],
[[ ███████████ ███ ███ █████████ █████ █████ ████ █████ ]],
[[ ██████ █████████████████████ ████ █████ █████ ████ ██████ ]],
[[ ]],
[[ ]],
[[ ]],
}
alpha.setup(dashboard.opts)
end,
}

115
lua/editor/debugging.lua Normal file
View file

@ -0,0 +1,115 @@
return {
'mfussenegger/nvim-dap',
dependencies = {
'rcarriga/nvim-dap-ui',
'nvim-neotest/nvim-nio',
},
config = function()
-- Setup Debugging --
local dap = require('dap')
-- Open UI on Debugging --
local dapui = require('dapui')
dapui.setup({
layouts = {
{
elements = {
{ id = 'scopes', size = 0.65 },
{ id = 'breakpoints', size = 0.35 },
},
position = 'left',
size = 40,
},
{
elements = {
{ id = 'repl', size = 0.5 },
{ id = 'console', size = 0.5 },
},
position = 'bottom',
size = 10,
},
},
})
dap.listeners.before.attach.dapui_config = function() dapui.open() end
dap.listeners.before.launch.dapui_config = function() dapui.open() end
-- Keybinding --
vim.keymap.set(
'n',
'<Leader>dt',
dapui.toggle,
{ desc = 'Toggle Debugger UI' }
)
vim.keymap.set(
'n',
'<Leader>db',
dap.toggle_breakpoint,
{ desc = 'Toggle Breakpoint' }
)
vim.keymap.set(
'n',
'<Leader>dc',
dap.continue,
{ desc = 'Debugger Continue' }
)
vim.keymap.set(
'n',
'<Leader>dx',
dap.terminate,
{ desc = 'Debugger Terminate' }
)
vim.keymap.set(
'n',
'<Leader>ds',
dap.step_over,
{ desc = 'Debugger Step Over' }
)
-- Breakpoints --
vim.api.nvim_set_hl(
0,
'DapBreakpoint',
{ ctermbg = 0, fg = '#993939', bg = '#31353f' }
)
vim.api.nvim_set_hl(
0,
'DapLogPoint',
{ ctermbg = 0, fg = '#61afef', bg = '#31353f' }
)
vim.api.nvim_set_hl(
0,
'DapStopped',
{ ctermbg = 0, fg = '#98c379', bg = '#31353f' }
)
vim.fn.sign_define('DapBreakpoint', {
text = '',
texthl = 'DapBreakpoint',
linehl = 'DapBreakpoint',
numhl = 'DapBreakpoint',
})
vim.fn.sign_define('DapBreakpointCondition', {
text = '󰣏',
texthl = 'DapBreakpoint',
linehl = 'DapBreakpoint',
numhl = 'DapBreakpoint',
})
vim.fn.sign_define('DapBreakpointRejected', {
text = '',
texthl = 'DapBreakpoint',
linehl = 'DapBreakpoint',
numhl = 'DapBreakpoint',
})
vim.fn.sign_define('DapLogPoint', {
text = '',
texthl = 'DapLogPoint',
linehl = 'DapLogPoint',
numhl = 'DapLogPoint',
})
vim.fn.sign_define('DapStopped', {
text = '',
texthl = 'DapStopped',
linehl = 'DapStopped',
numhl = 'DapStopped',
})
end,
}

81
lua/editor/file_tree.lua Normal file
View file

@ -0,0 +1,81 @@
return {
'nvim-neo-tree/neo-tree.nvim',
branch = 'v3.x',
dependencies = {
'nvim-lua/plenary.nvim',
'nvim-tree/nvim-web-devicons',
'MunifTanjim/nui.nvim',
},
config = function()
-- Setup --
require('neo-tree').setup({
close_if_last_window = false,
enable_git_status = true,
enable_diagnostics = true,
name = {
trailing_slash = false,
use_git_status_colors = true,
highlight = 'NeoTreeFileName',
},
git_status = {
symbols = {
-- Git Change type Icon --
added = '',
modified = '',
deleted = '',
renamed = '󰁕',
-- Git Status type Icon --
untracked = '',
ignored = '',
unstaged = '󰄱',
staged = '',
conflict = '',
},
},
symlink_target = {
enabled = false,
},
filesystem = {
hijack_netrw_behavior = 'open_default',
},
-- Keybinding --
window = {
mappings = {
['<space>'] = 'open',
},
},
})
-- Dignostic Icons --
vim.fn.sign_define('DiagnosticSignError', {
text = '',
texthl = 'DiagnosticSignError',
})
vim.fn.sign_define('DiagnosticSignWarn', {
text = '',
texthl = 'DiagnosticSignWarn',
})
vim.fn.sign_define('DiagnosticSignInfo', {
text = '',
texthl = 'DiagnosticSignInfo',
})
vim.fn.sign_define('DiagnosticSignHint', {
text = '󰌵',
texthl = 'DiagnosticSignHint',
})
-- Keybinding --
vim.keymap.set(
'n',
'<leader>ft',
':Neotree toggle reveal left<CR>',
{ desc = 'Toggle File Tree' }
)
vim.keymap.set(
'n',
'<leader>fo',
':Neotree buffers reveal float<CR>',
{ desc = 'Show Open Files' }
)
end,
}

View file

@ -0,0 +1,14 @@
return {
'nvim-treesitter/nvim-treesitter',
build = ':TSUpdate',
config = function()
-- Setup --
local config = require('nvim-treesitter.configs')
config.setup({
auto_install = true,
highlight = { enable = true },
indent = { enable = true },
ensure_installed = require('util.toolchain').highlighters,
})
end,
}

8
lua/editor/key_list.lua Normal file
View file

@ -0,0 +1,8 @@
return {
'folke/which-key.nvim',
config = function()
vim.o.timeout = true
vim.o.timeoutlen = 300
require('which-key').setup({})
end,
}

View file

@ -0,0 +1,118 @@
local TOOLCHAIN = require('util.toolchain')
return {
{
'williamboman/mason.nvim',
lazy = false,
config = function() require('mason').setup() end,
},
{
'williamboman/mason-lspconfig.nvim',
lazy = false,
opts = {
auto_install = true,
},
config = function()
require('mason-lspconfig').setup({
ensure_installed = TOOLCHAIN.lsp_requriemts,
})
end,
},
{
'neovim/nvim-lspconfig',
lazy = false,
config = function()
-- Setup --
local capabilities = require('cmp_nvim_lsp').default_capabilities()
local lspconfig = require('lspconfig')
for _, setup in ipairs(TOOLCHAIN.lsp_setups) do
setup(lspconfig, capabilities)
end
-- Keybinding --
vim.keymap.set(
'n',
'<leader>cd',
vim.lsp.buf.hover,
{ desc = 'Show Code Definition' }
)
vim.keymap.set(
'n',
'<leader>gd',
vim.lsp.buf.definition,
{ desc = 'Go to Definition' }
)
vim.keymap.set(
'n',
'<leader>gr',
vim.lsp.buf.references,
{ desc = 'Go to References' }
)
vim.keymap.set(
'n',
'<leader>ca',
vim.lsp.buf.code_action,
{ desc = 'Do Code Actions' }
)
end,
},
{
'nvimtools/none-ls.nvim',
dependencies = {
'nvim-lua/plenary.nvim',
'nvimtools/none-ls-extras.nvim',
},
config = function()
-- Setup --
local null_ls = require('null-ls')
local null_ls_sources = {}
for _, setup_function in ipairs(TOOLCHAIN.null_ls) do
local conf = setup_function(null_ls)
if #conf ~= 0 then
for _, _conf in pairs(conf) do
table.insert(null_ls_sources, _conf)
end
end
end
null_ls.setup({
sources = null_ls_sources,
})
-- Keybinding --
vim.keymap.set(
'n',
'<leader>fc',
vim.lsp.buf.format,
{ desc = 'Format Code' }
)
end,
},
{
'nvimdev/lspsaga.nvim',
after = 'nvim-lspconfig',
dependencies = {
'nvim-treesitter/nvim-treesitter',
'nvim-tree/nvim-web-devicons',
},
config = function()
require('lspsaga').setup({})
-- Keybinding --
vim.keymap.set(
'n',
'<leader>cr',
':Lspsaga rename<CR>',
{ desc = 'Rename Variable' }
)
vim.keymap.set(
'n',
'<leader>cp',
':Lspsaga peek_definition<CR>',
{ desc = 'Peek Code Definition' }
)
end,
},
}

57
lua/editor/llm.lua Normal file
View file

@ -0,0 +1,57 @@
local explain_prompt = [[
Explain this Code short and Precise:
$fname
```$ftype
$buf
```
---
]]
local generate_prompt = [[
<|fim_prefix|>$before<|fim_suffix|>$after<|fim_middle|>
]]
return {
dir = '~/Workspace/nvim/ollama.nvim',
--"nomnivore/ollama.nvim",
config = function()
local ollama = require('ollama')
ollama.setup({
model = 'codegemma:instruct',
prompts = {
Ask_About_Code = false,
Modify_Code = false,
Raw = false,
Simplify_Code = false,
Explain_Code = {
model = 'codegemma:instruct',
prompt = explain_prompt,
input_label = '>',
action = require('ollama.actions.factory').create_action({
display = true,
window = 'vsplit',
}),
},
Generate_Code = {
model = 'codegemma:2b-code',
prompt = generate_prompt,
input_label = '>',
action = 'display',
options = {
num_predict = 128,
temperature = 0.0,
top_p = 0.9,
stop = { '<|file_separator|>' },
},
},
},
})
vim.keymap.set(
'n',
'<leader>op',
ollama.prompt,
{ desc = 'Ollama Prompt' }
)
end,
}

68
lua/editor/search.lua Normal file
View file

@ -0,0 +1,68 @@
return {
'nvim-telescope/telescope.nvim',
tag = '0.1.5',
dependencies = {
'nvim-lua/plenary.nvim',
'nvim-telescope/telescope-ui-select.nvim',
},
config = function()
-- Setup --
require('telescope').setup({
extensions = {
['ui-select'] = {
require('telescope.themes').get_dropdown({}),
},
},
})
require('telescope').load_extension('ui-select')
-- Keybinding --
local function setTelescopeBinding(
mode,
keymap,
method,
search_global,
description
)
local function binding()
local path = search_global and '~'
or require('neo-tree.sources.manager').get_state(
'filesystem'
).path
method({ search_dirs = { path } })
end
vim.keymap.set(mode, keymap, binding, { desc = description })
end
local telescope = require('telescope.builtin')
setTelescopeBinding(
'n',
'<leader>ff',
telescope.find_files,
false,
'Find File'
)
setTelescopeBinding(
'n',
'<leader>fz',
telescope.live_grep,
false,
'Fuzzy Find'
)
setTelescopeBinding(
'n',
'<leader>gff',
telescope.find_files,
true,
'Global Find File'
)
setTelescopeBinding(
'n',
'<leader>gfz',
telescope.live_grep,
true,
'Global Fuzzy Find'
)
end,
}

76
lua/editor/snippets.lua Normal file
View file

@ -0,0 +1,76 @@
return {
{
'L3MON4D3/LuaSnip',
version = '2.*',
dependencies = {
'rafamadriz/friendly-snippets',
'mireq/luasnip-snippets',
},
build = 'make install_jsregexp',
config = function()
-- Setup --
require('luasnip.loaders.from_vscode').lazy_load()
require('luasnip.loaders.from_snipmate').lazy_load()
require('luasnip_snippets.common.snip_utils').setup()
end,
},
{
'hrsh7th/nvim-cmp',
dependencies = {
'L3MON4D3/LuaSnip',
'saadparwaiz1/cmp_luasnip',
'hrsh7th/cmp-nvim-lsp',
},
config = function()
-- Setup --
local cmp = require('cmp')
local luasnip = require('luasnip')
luasnip.setup({
load_ft_func = require('luasnip_snippets.common.snip_utils').load_ft_func,
ft_func = require('luasnip_snippets.common.snip_utils').ft_func,
enable_autosnippets = true,
})
-- Keybinding --
vim.keymap.set({ 'i', 's' }, '<Tab>', function()
if luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
else
vim.api.nvim_input('<C-V><Tab>')
end
end, { silent = true })
vim.keymap.set(
{ 'i', 's' },
'<S-Tab>',
function() luasnip.jump(-1) end,
{ silent = true }
)
local doc_keybindings = {
['<C-b>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(),
['<C-e>'] = cmp.mapping.abort(),
['<CR>'] = cmp.mapping.confirm({ select = true }),
}
-- Setup --
cmp.setup({
snippet = {
expand = function(args) luasnip.lsp_expand(args.body) end,
},
window = {
completion = cmp.config.window.bordered(),
documentation = cmp.config.window.bordered(),
},
mapping = cmp.mapping.preset.insert(doc_keybindings),
sources = cmp.config.sources({
{ name = 'lazydev', group_index = 0 },
{ name = 'nvim_lsp' },
{ name = 'luasnip' },
}, { { name = 'buffer' } }),
})
end,
},
}

77
lua/editor/status_bar.lua Normal file
View file

@ -0,0 +1,77 @@
return {
{
'nvim-lualine/lualine.nvim',
dependencies = {
'nvim-tree/nvim-web-devicons',
'nvimdev/lspsaga.nvim',
},
after = 'rcarriga/nvim-dap-ui',
config = function()
-- Setup --
local lspsaga_breadcrumbs = require('lspsaga.symbol.winbar').get_bar
require('lualine').setup({
options = {
component_separators = { left = '', right = '' },
section_separators = { left = '', right = '' },
disabled_filetypes = {
'neo-tree',
'fugitive',
'help',
statusline = {
'dap-repl',
'dapui_console',
'dapui_console',
'dapui_watches',
'dapui_stacks',
'dapui_breakpoints',
'dapui_scopes',
},
},
ignore_focus = {},
always_divide_middle = true,
globalstatus = false,
refresh = {
statusline = 1000,
tabline = 1000,
winbar = 1000,
},
},
sections = {
lualine_a = { 'mode' },
lualine_b = { 'diagnostics' },
lualine_c = { lspsaga_breadcrumbs },
lualine_x = { 'location' },
lualine_y = { 'diff', 'branch' },
lualine_z = { 'filetype' },
},
inactive_sections = {
lualine_a = { 'mode' },
lualine_b = { 'diagnostics' },
lualine_c = {},
lualine_x = { 'location' },
lualine_y = { 'diff', 'branch' },
lualine_z = { 'filetype' },
},
tabline = {},
winbar = {
lualine_a = { 'filename' },
},
inactive_winbar = {
lualine_a = { 'filename' },
},
extensions = {
require('temp.status_bar_plugin'),
},
})
end,
},
{
'romgrk/barbar.nvim',
dependencies = {
'lewis6991/gitsigns.nvim',
'nvim-tree/nvim-web-devicons',
},
config = function() require('barbar').setup() end,
},
}

30
lua/editor/terminal.lua Normal file
View file

@ -0,0 +1,30 @@
return {
'rebelot/terminal.nvim',
config = function()
local terminal = require('terminal')
terminal.setup({
layout = {
open_cmd = 'vertical new',
},
cmd = { 'bash' },
autoclose = true,
})
local project_dir = require('util.finder').get_opened_folder()
local term
local function toggle()
if term == nil then
term = terminal.terminal:new()
term.cwd = project_dir
end
term:toggle()
end
vim.keymap.set(
{ 'n', 't' },
'<F6>',
toggle,
{ desc = 'Toggle Terminal' }
)
end,
}

9
lua/editor/theme.lua Normal file
View file

@ -0,0 +1,9 @@
return {
'catppuccin/nvim',
name = 'catppuccin',
priority = 1000,
config = function()
-- Set Theme --
vim.cmd('colorscheme catppuccin')
end,
}

View file

@ -0,0 +1,65 @@
local M = {}
M.filetypes = {
'dap-repl',
'dapui_console',
'dapui_console',
'dapui_watches',
'dapui_stacks',
'dapui_breakpoints',
'dapui_scopes',
}
local function merge_colors(foreground, background)
local new_name = foreground .. background
local hl_fg = vim.api.nvim_get_hl(0, { name = foreground })
local hl_bg = vim.api.nvim_get_hl(0, { name = background })
local fg = string.format('#%06x', hl_fg.fg and hl_fg.fg or 0)
local bg = string.format('#%06x', hl_bg.bg and hl_bg.bg or 0)
vim.api.nvim_set_hl(0, new_name, { fg = fg, bg = bg })
return new_name
end
local function get_dap_repl_winbar(active)
local get_mode = require('lualine.highlight').get_mode_suffix
return function()
local filetype = vim.bo.filetype
local disabled_filetypes = { 'dap-repl' }
if not vim.tbl_contains(disabled_filetypes, filetype) then
return ''
end
local background_color = string.format(
'lualine_b' .. '%s',
active and get_mode() or '_inactive'
)
local controls_string = '%#' .. background_color .. '#'
for element in require('dapui.controls').controls():gmatch('%S+') do
local color, action = string.match(element, '%%#(.*)#(%%.*)%%#0#')
controls_string = controls_string
.. ' %#'
.. merge_colors(color, background_color)
.. '#'
.. action
end
return controls_string
end
end
M.winbar = {
lualine_a = { { 'filename', file_status = false } },
lualine_b = { get_dap_repl_winbar(true) },
}
M.inactive_winbar = {
lualine_a = { { 'filename', file_status = false } },
lualine_b = { get_dap_repl_winbar(false) },
}
return M

View file

@ -0,0 +1,5 @@
---@type ToolchainActions
return {
plugins = {},
setup = function(_null_ls) return {} end,
}

View file

@ -0,0 +1,4 @@
---@type ToolchainDebuggers
return {
plugins = {},
}

View file

@ -0,0 +1,10 @@
---@type ToolchainDiagnostics
return {
plugins = {},
setup = function(null_ls)
return {
null_ls.builtins.diagnostics.spectral,
--null_ls.builtins.diagnostics.vacuum --Pure Openapi linter
}
end,
}

View file

@ -0,0 +1,5 @@
---@type ToolchainFormatters
return {
plugins = {},
setup = function(_null_ls) return {} end,
}

View file

@ -0,0 +1,10 @@
---@type Toolchain
return {
requirements = require('toolchain.config.requirements'),
language_servers = require('toolchain.config.language_server'),
formatters = require('toolchain.config.formatter'),
actions = require('toolchain.config.actions'),
diagnostics = require('toolchain.config.diagnostics'),
debuggers = require('toolchain.config.debugger'),
should_init = function() return true end,
}

View file

@ -0,0 +1,16 @@
---@type ToolchainLanguageServers
return {
requirements = {
'jsonls',
'lemminx',
'yamlls',
'taplo',
},
setup = function(lspconfig, capabilities)
local config = { capabilities = capabilities }
lspconfig.jsonls.setup(config)
lspconfig.lemminx.setup(config)
lspconfig.yamlls.setup(config)
lspconfig.taplo.setup(config)
end,
}

View file

@ -0,0 +1,9 @@
return {
{
'folke/lazydev.nvim',
ft = 'lua',
opts = {
library = {},
},
},
}

View file

@ -0,0 +1,17 @@
---@type ToolchainRequirements
return {
plugins = {
table.unpack(require('toolchain.config.formatter').plugins),
table.unpack(require('toolchain.config.actions').plugins),
table.unpack(require('toolchain.config.diagnostics').plugins),
table.unpack(require('toolchain.config.debugger').plugins),
table.unpack(require('toolchain.config.plugins')),
},
highlighters = {
'json',
'xml',
'yaml',
'toml',
},
language_servers = require('toolchain.config.language_server').requirements,
}

View file

@ -0,0 +1,5 @@
---@type ToolchainActions
return {
plugins = {},
setup = function(_null_ls) return {} end,
}

View file

@ -0,0 +1,4 @@
---@type ToolchainDebuggers
return {
plugins = {},
}

View file

@ -0,0 +1,5 @@
---@type ToolchainDiagnostics
return {
plugins = {},
setup = function(_null_ls) return {} end,
}

View file

@ -0,0 +1,5 @@
---@type ToolchainFormatters
return {
plugins = {},
setup = function(_null_ls) return {} end,
}

View file

@ -0,0 +1,10 @@
---@type Toolchain
return {
requirements = require('toolchain.database.requirements'),
language_servers = require('toolchain.database.language_server'),
formatters = require('toolchain.database.formatter'),
actions = require('toolchain.database.actions'),
diagnostics = require('toolchain.database.diagnostics'),
debuggers = require('toolchain.database.debugger'),
should_init = function() return true end,
}

View file

@ -0,0 +1,10 @@
---@type ToolchainLanguageServers
return {
requirements = {
'sqlls',
},
setup = function(lspconfig, capabilities)
local config = { capabilities = capabilities }
lspconfig.sqlls.setup(config)
end,
}

View file

@ -0,0 +1 @@
return {}

View file

@ -0,0 +1,14 @@
---@type ToolchainRequirements
return {
plugins = {
table.unpack(require('toolchain.database.formatter').plugins),
table.unpack(require('toolchain.database.actions').plugins),
table.unpack(require('toolchain.database.diagnostics').plugins),
table.unpack(require('toolchain.database.debugger').plugins),
table.unpack(require('toolchain.database.plugins')),
},
highlighters = {
'sql',
},
language_servers = require('toolchain.database.language_server').requirements,
}

View file

@ -0,0 +1,5 @@
---@type ToolchainActions
return {
plugins = {},
setup = function(_null_ls) return {} end,
}

View file

@ -0,0 +1,4 @@
---@type ToolchainDebuggers
return {
plugins = {},
}

View file

@ -0,0 +1,5 @@
---@type ToolchainDiagnostics
return {
plugins = {},
setup = function(_null_ls) return {} end,
}

View file

@ -0,0 +1,5 @@
---@type ToolchainFormatters
return {
plugins = {},
setup = function(_null_ls) return {} end,
}

View file

@ -0,0 +1,10 @@
---@type Toolchain
return {
requirements = require('toolchain.frontend.requirements'),
language_servers = require('toolchain.frontend.language_server'),
formatters = require('toolchain.frontend.formatter'),
actions = require('toolchain.frontend.actions'),
diagnostics = require('toolchain.frontend.diagnostics'),
debuggers = require('toolchain.frontend.debugger'),
should_init = function() return true end,
}

View file

@ -0,0 +1,12 @@
---@type ToolchainLanguageServers
return {
requirements = {
'svelte',
'volar',
},
setup = function(lspconfig, capabilities)
local config = { capabilities = capabilities }
lspconfig.svelte.setup(config)
lspconfig.volar.setup(config)
end,
}

View file

@ -0,0 +1 @@
return {}

View file

@ -0,0 +1,16 @@
---@type ToolchainRequirements
return {
plugins = {
table.unpack(require('toolchain.frontend.formatter').plugins),
table.unpack(require('toolchain.frontend.actions').plugins),
table.unpack(require('toolchain.frontend.diagnostics').plugins),
table.unpack(require('toolchain.frontend.debugger').plugins),
table.unpack(require('toolchain.frontend.plugins')),
},
highlighters = {
'svelte',
'vue',
},
language_servers = require('toolchain.frontend.language_server').requirements,
}

View file

@ -0,0 +1,9 @@
---@type ToolchainActions
return {
plugins = {},
setup = function(null_ls)
return {
null_ls.builtins.code_actions.refactoring,
}
end,
}

View file

@ -0,0 +1,4 @@
---@type ToolchainDebuggers
return {
plugins = {},
}

View file

@ -0,0 +1,5 @@
---@type ToolchainDiagnostics
return {
plugins = {},
setup = function(_null_ls) return {} end,
}

View file

@ -0,0 +1,5 @@
---@type ToolchainFormatters
return {
plugins = {},
setup = function(_null_ls) return {} end,
}

View file

@ -0,0 +1,10 @@
---@type Toolchain
return {
requirements = require('toolchain.generic.requirements'),
language_servers = require('toolchain.generic.language_server'),
formatters = require('toolchain.generic.formatter'),
actions = require('toolchain.generic.actions'),
diagnostics = require('toolchain.generic.diagnostics'),
debuggers = require('toolchain.generic.debugger'),
should_init = function() return true end,
}

View file

@ -0,0 +1,5 @@
---@type ToolchainLanguageServers
return {
requirements = {},
setup = function(_lspgeneric, _capabilities) end,
}

View file

@ -0,0 +1 @@
return {}

View file

@ -0,0 +1,12 @@
---@type ToolchainRequirements
return {
plugins = {
table.unpack(require('toolchain.generic.formatter').plugins),
table.unpack(require('toolchain.generic.actions').plugins),
table.unpack(require('toolchain.generic.diagnostics').plugins),
table.unpack(require('toolchain.generic.debugger').plugins),
table.unpack(require('toolchain.generic.plugins')),
},
highlighters = {},
language_servers = require('toolchain.generic.language_server').requirements,
}

View file

@ -0,0 +1,5 @@
---@type ToolchainActions
return {
plugins = {},
setup = function(_null_ls) return {} end,
}

View file

@ -0,0 +1,4 @@
---@type ToolchainDebuggers
return {
plugins = {},
}

View file

@ -0,0 +1,5 @@
---@type ToolchainDiagnostics
return {
plugins = {},
setup = function(_null_ls) return {} end,
}

View file

@ -0,0 +1,5 @@
---@type ToolchainFormatters
return {
plugins = {},
setup = function(_null_ls) return {} end,
}

View file

@ -0,0 +1,10 @@
---@type Toolchain
return {
requirements = require('toolchain.git.requirements'),
language_servers = require('toolchain.git.language_server'),
formatters = require('toolchain.git.formatter'),
actions = require('toolchain.git.actions'),
diagnostics = require('toolchain.git.diagnostics'),
debuggers = require('toolchain.git.debugger'),
should_init = function() return true end,
}

View file

@ -0,0 +1,5 @@
---@type ToolchainLanguageServers
return {
requirements = {},
setup = function(_lspconfig, _capabilities) end,
}

View file

@ -0,0 +1,38 @@
return {
{
'tpope/vim-fugitive',
},
{
'lewis6991/gitsigns.nvim',
config = function()
-- Setup --
require('gitsigns').setup()
-- Keybinding --
vim.keymap.set(
'n',
'<leader>gh',
':Gitsigns preview_hunk_inline<CR>',
{ desc = 'Toggle Inline Git Diff' }
)
vim.keymap.set(
'n',
'<leader>gb',
':Gitsigns toggle_current_line_blame<CR>',
{ desc = 'Toggle Inline Git Blame' }
)
vim.keymap.set(
'n',
'<leader>go',
':Git <CR>',
{ desc = 'Open Git' }
)
end,
},
{
'moyiz/git-dev.nvim',
lazy = true,
cmd = { 'GitDevOpen', 'GitDevCleanAll' },
opts = {},
},
}

View file

@ -0,0 +1,18 @@
---@type ToolchainRequirements
return {
plugins = {
table.unpack(require('toolchain.git.formatter').plugins),
table.unpack(require('toolchain.git.actions').plugins),
table.unpack(require('toolchain.git.diagnostics').plugins),
table.unpack(require('toolchain.git.debugger').plugins),
table.unpack(require('toolchain.git.plugins')),
},
highlighters = {
'gitcommit',
'gitignore',
'gitattributes',
'git_rebase',
'git_config',
},
language_servers = require('toolchain.git.language_server').requirements,
}

View file

@ -0,0 +1,10 @@
---@type ToolchainActions
return {
plugins = {},
setup = function(null_ls)
return {
null_ls.builtins.code_actions.gomodifytags,
null_ls.builtins.code_actions.impl,
}
end,
}

View file

@ -0,0 +1,18 @@
---@type ToolchainDebuggers
return {
plugins = {
{
'leoluz/nvim-dap-go',
config = function()
local dir = require('util.finder').find_project_dir(
'go.mod',
3,
{ 'src', 'app', 'pkg' },
{ 'test' },
true
)
require('dap-go').setup({ delve = { cwd = dir } })
end,
},
},
}

View file

@ -0,0 +1,10 @@
---@type ToolchainDiagnostics
return {
plugins = {},
setup = function(null_ls)
return {
null_ls.builtins.diagnostics.golangci_lint,
null_ls.builtins.diagnostics.staticcheck,
}
end,
}

View file

@ -0,0 +1,9 @@
---@type ToolchainFormatters
return {
plugins = {},
setup = function(null_ls)
return {
null_ls.builtins.formatting.gofumpt,
}
end,
}

10
lua/toolchain/go/init.lua Normal file
View file

@ -0,0 +1,10 @@
---@type Toolchain
return {
requirements = require('toolchain.go.requirements'),
language_servers = require('toolchain.go.language_server'),
formatters = require('toolchain.go.formatter'),
actions = require('toolchain.go.actions'),
diagnostics = require('toolchain.go.diagnostics'),
debuggers = require('toolchain.go.debugger'),
should_init = function() return true end,
}

View file

@ -0,0 +1,9 @@
---@type ToolchainLanguageServers
return {
requirements = {
'gopls',
},
setup = function(lspconfig, capabilities)
lspconfig.gopls.setup({ capabilities = capabilities })
end,
}

View file

@ -0,0 +1 @@
return {}

View file

@ -0,0 +1,17 @@
---@type ToolchainRequirements
return {
plugins = {
table.unpack(require('toolchain.go.formatter').plugins),
table.unpack(require('toolchain.go.actions').plugins),
table.unpack(require('toolchain.go.diagnostics').plugins),
table.unpack(require('toolchain.go.debugger').plugins),
table.unpack(require('toolchain.go.plugins')),
},
highlighters = {
'go',
'gomod',
'gosum',
'gotmpl',
},
language_servers = require('toolchain.go.language_server').requirements,
}

View file

@ -0,0 +1,5 @@
---@type ToolchainActions
return {
plugins = {},
setup = function(_null_ls) return {} end,
}

View file

@ -0,0 +1,4 @@
---@type ToolchainDebuggers
return {
plugins = {},
}

View file

@ -0,0 +1,9 @@
---@type ToolchainDiagnostics
return {
plugins = {},
setup = function(null_ls)
return {
null_ls.builtins.diagnostics.selene,
}
end,
}

View file

@ -0,0 +1,9 @@
---@type ToolchainFormatters
return {
plugins = {},
setup = function(null_ls)
return {
null_ls.builtins.formatting.stylua,
}
end,
}

View file

@ -0,0 +1,10 @@
---@type Toolchain
return {
requirements = require('toolchain.lua.requirements'),
language_servers = require('toolchain.lua.language_server'),
formatters = require('toolchain.lua.formatter'),
actions = require('toolchain.lua.actions'),
diagnostics = require('toolchain.lua.diagnostics'),
debuggers = require('toolchain.lua.debugger'),
should_init = function() return true end,
}

View file

@ -0,0 +1,18 @@
---@type ToolchainLanguageServers
return {
requirements = {
'lua_ls',
},
setup = function(lspconfig, capabilities)
lspconfig.lua_ls.setup({
capabilities = capabilities,
settings = {
Lua = {
diagnostics = {
globals = { 'vim' },
},
},
},
})
end,
}

View file

@ -0,0 +1 @@
return {}

View file

@ -0,0 +1,15 @@
---@type ToolchainRequirements
return {
plugins = {
table.unpack(require('toolchain.lua.formatter').plugins),
table.unpack(require('toolchain.lua.actions').plugins),
table.unpack(require('toolchain.lua.diagnostics').plugins),
table.unpack(require('toolchain.lua.debugger').plugins),
table.unpack(require('toolchain.lua.plugins')),
},
highlighters = {
'lua',
'luadoc',
},
language_servers = require('toolchain.lua.language_server').requirements,
}

View file

@ -0,0 +1,5 @@
---@type ToolchainActions
return {
plugins = {},
setup = function(_null_ls) return {} end,
}

View file

@ -0,0 +1,4 @@
---@type ToolchainDebuggers
return {
plugins = {},
}

View file

@ -0,0 +1,11 @@
---@type ToolchainDiagnostics
return {
plugins = {},
setup = function(null_ls)
return {
null_ls.builtins.diagnostics.phpstan,
null_ls.builtins.diagnostics.phpcs,
null_ls.builtins.diagnostics.twigcs,
}
end,
}

View file

@ -0,0 +1,12 @@
---@type ToolchainFormatters
return {
plugins = {},
setup = function(null_ls)
return {
null_ls.builtins.formatting.phpcsfixer.with({
prefer_local = 'vendor/bin/php-cs-fixer',
args = { 'fix', '--allow-risky=yes', '$FILENAME' },
}),
}
end,
}

View file

@ -0,0 +1,10 @@
---@type Toolchain
return {
requirements = require('toolchain.php.requirements'),
language_servers = require('toolchain.php.language_server'),
formatters = require('toolchain.php.formatter'),
actions = require('toolchain.php.actions'),
diagnostics = require('toolchain.php.diagnostics'),
debuggers = require('toolchain.php.debugger'),
should_init = function() return true end,
}

View file

@ -0,0 +1,13 @@
---@type ToolchainLanguageServers
return {
requirements = {
'phpactor',
'twiggy_language_server',
'stimulus_ls',
},
setup = function(lspconfig, capabilities)
local config = { capabilities = capabilities }
lspconfig.phpactor.setup(config)
lspconfig.stimulus_ls.setup(config)
end,
}

View file

@ -0,0 +1 @@
return {}

View file

@ -0,0 +1,16 @@
---@type ToolchainRequirements
return {
plugins = {
table.unpack(require('toolchain.php.formatter').plugins),
table.unpack(require('toolchain.php.actions').plugins),
table.unpack(require('toolchain.php.diagnostics').plugins),
table.unpack(require('toolchain.php.debugger').plugins),
table.unpack(require('toolchain.php.plugins')),
},
highlighters = {
'php',
'phpdoc',
'twig',
},
language_servers = require('toolchain.php.language_server').requirements,
}

View file

@ -0,0 +1,5 @@
---@type ToolchainActions
return {
plugins = {},
setup = function(_null_ls) return {} end,
}

View file

@ -0,0 +1,4 @@
---@type ToolchainDebuggers
return {
plugins = {},
}

View file

@ -0,0 +1,11 @@
---@type ToolchainDiagnostics
return {
plugins = {},
setup = function(null_ls)
return {
null_ls.builtins.diagnostics.actionlint,
null_ls.builtins.diagnostics.checkmake,
null_ls.builtins.diagnostics.dotenv_linter,
}
end,
}

View file

@ -0,0 +1,10 @@
---@type ToolchainFormatters
return {
plugins = {},
setup = function(null_ls)
return {
null_ls.builtins.formatting.shfmt,
null_ls.builtins.formatting.shellharden,
}
end,
}

View file

@ -0,0 +1,10 @@
---@type Toolchain
return {
requirements = require('toolchain.scripts.requirements'),
language_servers = require('toolchain.scripts.language_server'),
formatters = require('toolchain.scripts.formatter'),
actions = require('toolchain.scripts.actions'),
diagnostics = require('toolchain.scripts.diagnostics'),
debuggers = require('toolchain.scripts.debugger'),
should_init = function() return true end,
}

View file

@ -0,0 +1,10 @@
---@type ToolchainLanguageServers
return {
requirements = {
'bashls',
},
setup = function(lspconfig, capabilities)
local config = { capabilities = capabilities }
lspconfig.bashls.setup(config)
end,
}

View file

@ -0,0 +1 @@
return {}

View file

@ -0,0 +1,17 @@
---@type ToolchainRequirements
return {
plugins = {
table.unpack(require('toolchain.scripts.formatter').plugins),
table.unpack(require('toolchain.scripts.actions').plugins),
table.unpack(require('toolchain.scripts.diagnostics').plugins),
table.unpack(require('toolchain.scripts.debugger').plugins),
table.unpack(require('toolchain.scripts.plugins')),
},
highlighters = {
'bash',
'make',
'just',
'dockerfile',
},
language_servers = require('toolchain.scripts.language_server').requirements,
}

View file

@ -0,0 +1,9 @@
---@type ToolchainActions
return {
plugins = {},
setup = function(null_ls)
return {
null_ls.builtins.code_actions.proselint,
}
end,
}

View file

@ -0,0 +1,4 @@
---@type ToolchainDebuggers
return {
plugins = {},
}

View file

@ -0,0 +1,11 @@
---@type ToolchainDiagnostics
return {
plugins = {},
setup = function(null_ls)
return {
null_ls.builtins.diagnostics.alex,
null_ls.builtins.diagnostics.codespell,
null_ls.builtins.diagnostics.trail_space,
}
end,
}

View file

@ -0,0 +1,9 @@
---@type ToolchainFormatters
return {
plugins = {},
setup = function(null_ls)
return {
null_ls.builtins.diagnostics.markdownlint,
}
end,
}

View file

@ -0,0 +1,10 @@
---@type Toolchain
return {
requirements = require('toolchain.text.requirements'),
language_servers = require('toolchain.text.language_server'),
formatters = require('toolchain.text.formatter'),
actions = require('toolchain.text.actions'),
diagnostics = require('toolchain.text.diagnostics'),
debuggers = require('toolchain.text.debugger'),
should_init = function() return true end,
}

View file

@ -0,0 +1,10 @@
---@type ToolchainLanguageServers
return {
requirements = {
'marksman',
},
setup = function(lspconfig, capabilities)
local config = { capabilities = capabilities }
lspconfig.marksman.setup(config)
end,
}

View file

@ -0,0 +1,36 @@
return {
{
'mrjones2014/mdpreview.nvim',
ft = 'markdown',
dependencies = {
'norcalli/nvim-terminal.lua',
},
config = function()
require('mdpreview').setup({
cli_args = {
'glow',
'-s',
'~/.config/glow/catppuccin-macchiato.json',
'-w',
'1',
'--local',
},
renderer = {
opts = {
win_opts = {
number = true,
wrap = false,
},
},
},
})
vim.keymap.set(
'n',
'<Leader>mp',
':Mdpreview<CR>',
{ desc = 'Show Markdown Preview' }
)
end,
},
}

View file

@ -0,0 +1,14 @@
---@type ToolchainRequirements
return {
plugins = {
table.unpack(require('toolchain.text.formatter').plugins),
table.unpack(require('toolchain.text.actions').plugins),
table.unpack(require('toolchain.text.diagnostics').plugins),
table.unpack(require('toolchain.text.debugger').plugins),
table.unpack(require('toolchain.text.plugins')),
},
highlighters = {
'markdown',
},
language_servers = require('toolchain.text.language_server').requirements,
}

Some files were not shown because too many files have changed in this diff Show more