Dotfiles/neovim/init.lua
2025-06-08 22:13:28 +02:00

177 lines
3.9 KiB
Lua

vim.cmd[[packadd packer.nvim]]
vim.opt.nu = true
vim.opt.relativenumber = true
vim.opt.tabstop = 4
vim.opt.softtabstop = 4
vim.opt.shiftwidth = 4
vim.opt.expandtab = true
vim.opt.smartindent = true
vim.opt.wrap = false
vim.opt.swapfile = false
vim.opt.backup = false
vim.opt.undodir = os.getenv("HOME") .. "/.vim/undodir"
vim.opt.undofile = true
vim.opt.hlsearch = false
vim.opt.incsearch = true
vim.opt.termguicolors = true
vim.opt.scrolloff = 8
vim.opt.signcolumn = "yes"
vim.opt.isfname:append("@-@")
vim.opt.updatetime = 50
vim.opt.colorcolumn = "80"
vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1
vim.g.rainbow_active = 1
vim.g.indent_guides_start_level=1
vim.cmd('filetype plugin on')
vim.cmd('syntax on')
require('packer').startup(function(use)
use('tpope/vim-surround')
use('neovim/nvim-lspconfig')
use('folke/tokyonight.nvim')
use('euclidianAce/BetterLua.vim')
use{
'https://git.folkert-kevelam.nl/folkert/Neovim-SpecSwitcher.git',
as = 'SpecSwitcher'
}
use{
'nvim-lualine/lualine.nvim',
dependencies = { 'nvim-tree/nvim-web-devicons' }
}
use('airblade/vim-gitgutter')
use('janet-lang/janet.vim')
use{
'nvim-treesitter/nvim-treesitter',
run = ':TSUpdate'
}
use('nvim-tree/nvim-tree.lua')
end)
require("nvim-tree").setup()
vim.keymap.set('n', '<leader>to', "<cmd>NvimTreeFocus<CR>")
vim.keymap.set('n', '<leader>tc', "<cmd>NvimTreeClose<CR>")
require('SpecSwitcher').setup({
descend_dirs={
"include",
"src",
"spec",
"impl",
"specification",
"implementation"
},
extensions={
{"ads", "adb"}
}
})
vim.keymap.set('n', '<leader>n', require('SpecSwitcher').Switch_Open(false))
require('tokyonight').setup({
style = "storm",
light_style = "day",
transparent = false,
terminal_colors = true,
})
vim.cmd[[colorscheme tokyonight]]
require('lualine').setup({
tabline = {
lualine_a = {'buffers'},
lualine_b = {'branch'},
lualine_c = {'filename'},
lualine_x = {},
lualine_y = {'windows'},
lualine_z = {'tabs'}
}
})
vim.wo.foldmethod = 'expr'
vim.wo.foldexpr = 'v:lua.vim.treesitter.foldexpr()'
require'nvim-treesitter.configs'.setup {
ensure_installed = {"ada"},
sync_install = false,
auto_install = true,
highlight = {
enable = true,
additional_vim_regex_highlighting = true
}
}
vim.lsp.enable('lua_ls')
vim.lsp.config('lua_ls', {
on_init = function(client)
if client.workspace_folders then
local path = client.workspace_folders[1].name
if
path ~= vim.fn.srtdpath('config')
and (vim.uv.fs_state(path .. '/.luarc.json') or vim.uv.fs_state(path .. '/.luarc.jsonc'))
then
return
end
end
client.config.settings.Lua = vim.tbl_deep_extend('force', client.config.settings.Lua, {
runtime = {
version = 'LuaJIT',
path = {
'lua/?.lua',
'lua/?/init.lua',
},
},
workspace = {
checkThirdParty = false,
library = {
vim.env.VIMRUNTIME
}
}
})
end,
settings = {
Lua = {}
}
})
vim.lsp.enable('ada_ls')
vim.lsp.config('ada_ls', {
on_attach = function(client, bufnr)
vim.lsp.completion.enable(true, client.id, bufnr, {
autotrigger = true,
convert = function(item)
return { abbr = item.label:gsub("%b()", "") }
end,
})
vim.keymap.set("i", "<C-space>", vim.lsp.completion.get, {desc = "trigger autocompletion"})
end,
settings = {
ada = {
projectFile = "project.gpr";
}
}
})
vim.opt.completeopt = { "menuone", "noselect", "popup" }