summaryrefslogtreecommitdiff
path: root/.config/nvim
diff options
context:
space:
mode:
authorWriterV2 <primary-v2@protonmail.com>2026-04-03 22:46:48 +0200
committerWriterV2 <primary-v2@protonmail.com>2026-04-03 22:46:48 +0200
commita1ec4771740d321df4480e8a7224fa10b59f0569 (patch)
tree5e97e8ced79b4fea057fab6e76f80849c053e401 /.config/nvim
Update repo with git init directly in home dir
Diffstat (limited to '.config/nvim')
-rw-r--r--.config/nvim/init.lua5
-rw-r--r--.config/nvim/lua/.luarc.json3
-rw-r--r--.config/nvim/lua/lsp_config.lua264
-rw-r--r--.config/nvim/lua/plugins.lua17
-rw-r--r--.config/nvim/lua/settings.lua14
-rw-r--r--.config/nvim/lua/treesitter_config.lua49
-rw-r--r--.config/nvim/lua/writing_config.lua18
7 files changed, 370 insertions, 0 deletions
diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua
new file mode 100644
index 0000000..64f9138
--- /dev/null
+++ b/.config/nvim/init.lua
@@ -0,0 +1,5 @@
+require("plugins");
+require("settings");
+require("lsp_config");
+require("treesitter_config");
+require("writing_config");
diff --git a/.config/nvim/lua/.luarc.json b/.config/nvim/lua/.luarc.json
new file mode 100644
index 0000000..23b9ee2
--- /dev/null
+++ b/.config/nvim/lua/.luarc.json
@@ -0,0 +1,3 @@
+{
+ "workspace.checkThirdParty": false
+} \ No newline at end of file
diff --git a/.config/nvim/lua/lsp_config.lua b/.config/nvim/lua/lsp_config.lua
new file mode 100644
index 0000000..20eecd1
--- /dev/null
+++ b/.config/nvim/lua/lsp_config.lua
@@ -0,0 +1,264 @@
+-- show diagnostic messages in quickfix list with <M-q>
+vim.diagnostic.config({
+ virtual_text = false,
+ signs = true,
+ float = { border = 'single' },
+})
+vim.keymap.set("n", "<M-q>", function()
+ -- toggle quickfix list
+ local windows = vim.fn.getwininfo()
+ local qf_opened = false
+ for i = 1, #windows, 1 do
+ local window = windows[i]
+ if window.quickfix == 1 then
+ qf_opened = true
+ break
+ end
+ end
+ if qf_opened then
+ vim.api.nvim_command("cclose")
+ else
+ vim.diagnostic.setqflist()
+ end
+end)
+
+-- setup and config nvim-cmp completion
+local cmp = require("cmp")
+cmp.register_source("nvim_lsp_signature_help", require("cmp_nvim_lsp_signature_help").new())
+
+cmp.setup({
+ -- set vim-vsnip as snippet engine for nvim-cmp completion
+ snippet = {
+ expand = function(args)
+ vim.fn["vsnip#anonymous"](args.body)
+ end,
+ },
+ mapping = cmp.mapping.preset.insert {
+ ['<CR>'] = cmp.mapping.confirm({ select = true }),
+ ['<C-Down>'] = cmp.mapping.scroll_docs(4),
+ ['<C-Up>'] = cmp.mapping.scroll_docs(-4),
+ },
+ -- complete based on LSP, Snippets and Buffer
+ sources = cmp.config.sources({
+ { name = 'nvim_lsp' },
+ { name = 'vsnip' },
+ }, {
+ { name = 'buffer' },
+ })
+})
+
+-- Jump forward or backward to snippet placeholders in insert mode
+vim.api.nvim_set_keymap("i", "<C-l>", "<Plug>(vsnip-jump-next)", { noremap = false })
+vim.api.nvim_set_keymap("s", "<C-l>", "<Plug>(vsnip-jump-next)", { noremap = false })
+vim.api.nvim_set_keymap("i", "<C-h>", "<Plug>(vsnip-jump-prev)", { noremap = false })
+vim.api.nvim_set_keymap("s", "<C-h>", "<Plug>(vsnip-jump-prev)", { noremap = false })
+
+
+-- complete text in search based on buffer
+cmp.setup.cmdline('/', {
+ mapping = cmp.mapping.preset.cmdline(),
+ sources = {
+ { name = 'buffer' }
+ }
+})
+
+-- compete path in commandline
+cmp.setup.cmdline(':', {
+ mapping = cmp.mapping.preset.cmdline(),
+ sources = cmp.config.sources({
+ { name = 'path' }
+ }, {
+ { name = 'cmdline' }
+ }),
+})
+
+-- add additional completion capabilities
+local capabilities = require('cmp_nvim_lsp').default_capabilities()
+
+
+-- attaches settings after language server attaches to current buffer
+local on_attach = function(client, bufnr)
+ local bufopts = { noremap = true, silent = true, buffer = bufnr }
+ vim.keymap.set("n", "gd", vim.lsp.buf.definition, bufopts)
+ vim.keymap.set("n", "gr", vim.lsp.buf.references, bufopts)
+ vim.keymap.set("n", "gi", vim.lsp.buf.implementation, bufopts)
+ vim.keymap.set("n", "K", vim.lsp.buf.hover, bufopts)
+ vim.api.nvim_create_autocmd("BufWritePre", {
+ pattern = "*",
+ callback = function()
+ vim.lsp.buf.format {
+ async = false
+ }
+ end,
+ })
+end
+
+for _, method in ipairs({ 'textDocument/diagnostic', 'workspace/diagnostic' }) do
+ local default_diagnostic_handler = vim.lsp.handlers[method]
+ vim.lsp.handlers[method] = function(err, result, context, config)
+ if err ~= nil and err.code == -32802 then
+ return
+ end
+ return default_diagnostic_handler(err, result, context, config)
+ end
+end
+
+-- Language Servers
+
+-- Rust
+vim.lsp.config('rust_analyzer', {
+ capabilities = capabilities,
+ on_attach = on_attach,
+ settings = {
+ ["rust-analyzer"] = {
+ checkOnSave = {
+ command = "clippy"
+ },
+ assist = {
+ importGranularity = "module",
+ importPrefix = "by_self",
+ },
+ cargo = {
+ loadOutDirsFromCheck = true
+ },
+ procMacro = {
+ enable = true
+ },
+ },
+ },
+})
+vim.lsp.enable('rust_analyzer')
+
+-- Bash
+vim.lsp.config('bashls', {
+ capabilities = capabilities,
+ on_attach = on_attach,
+})
+vim.lsp.enable('bashls')
+
+-- Python
+vim.lsp.config('jedi_language_server', {
+ capabilities = capabilities,
+ on_attach = on_attach,
+})
+vim.lsp.enable('jedi_language_server')
+
+-- HTML
+vim.lsp.config('html', {
+ capabilities = capabilities,
+ on_attach = on_attach,
+})
+vim.lsp.enable('html')
+
+-- CSS
+vim.lsp.config('cssls', {
+ capabilities = capabilities,
+ on_attach = on_attach,
+})
+vim.lsp.enable('cssl')
+
+-- Tex
+vim.lsp.config('texlab', {
+ capabilities = capabilities,
+ on_attach = on_attach,
+})
+vim.lsp.enable('texlab')
+
+-- Svelte
+vim.lsp.config('svelte', {
+ capabilities = capabilities,
+ on_attach = on_attach,
+})
+vim.lsp.enable('svelte')
+
+-- Typescript & Javascript
+vim.lsp.config('ts_ls', {
+ capabilities = capabilities,
+ on_attach = on_attach,
+ filetypes = { "typescript", "javascript" },
+})
+vim.lsp.enable('ts_ls')
+
+-- JSON
+vim.lsp.config('jsonls', {
+ capabilities = capabilities,
+ on_attach = on_attach,
+})
+vim.lsp.enable('jsonls')
+
+-- Lua
+vim.lsp.config('lua_ls', {
+ capabilities = capabilities,
+ on_attach = on_attach,
+ settings = {
+ Lua = {
+ diagnostics = {
+ globals = { "vim", "on_attach" }
+ },
+ workspace = {
+ library = vim.api.nvim_get_runtime_file("", true),
+ }
+ }
+ }
+})
+vim.lsp.enable('lua_ls')
+
+-- Java
+vim.lsp.config('jdtls', {
+ capabilities = capabilities,
+ on_attach = on_attach,
+})
+vim.lsp.enable('jdtls')
+
+-- C lang
+vim.lsp.config('clangd', {
+ capabilities = capabilities,
+ on_attach = on_attach,
+})
+vim.lsp.enable('clangd')
+
+-- Nushell
+vim.lsp.config('nushell', {
+ capabilities = capabilities,
+ on_attach = on_attach,
+})
+vim.lsp.enable('nushell')
+
+-- Go
+vim.lsp.config('gopls', {
+ capabilities = capabilities,
+ on_attach = on_attach,
+})
+vim.lsp.enable('gopls')
+
+-- Tailwind
+vim.lsp.config('tailwindcss', {
+ capabilities = capabilities,
+ on_attach = on_attach,
+ init_options = {
+ userLanguages = {
+ rust = "html",
+ }
+ },
+ filetypes = {
+ "html",
+ "svelte",
+ "rust"
+ }
+})
+vim.lsp.enable('tailwindcss')
+
+-- Elixir
+vim.lsp.config('expert', {
+ capabilities = capabilities,
+ on_attach = on_attach,
+ --cmd = { 'bash', '/home/thev2/expert/apps/expert/_build/prod/rel/plain/bin/start_expert', '--stdio' },
+ cmd = { 'expert', '--stdio' },
+ root_markers = { 'mix.exs', '.git' },
+ filetypes = { 'elixir', 'eelixir', 'heex' },
+})
+vim.lsp.enable('expert')
+
+
+-- show nvim-lsp progress
+require "fidget".setup {}
diff --git a/.config/nvim/lua/plugins.lua b/.config/nvim/lua/plugins.lua
new file mode 100644
index 0000000..c255508
--- /dev/null
+++ b/.config/nvim/lua/plugins.lua
@@ -0,0 +1,17 @@
+require "paq" {
+ "savq/paq-nvim",
+ "wadackel/vim-dogrun",
+ "neovim/nvim-lspconfig",
+ "hrsh7th/cmp-nvim-lsp",
+ "hrsh7th/cmp-buffer",
+ "hrsh7th/cmp-path",
+ "hrsh7th/cmp-cmdline",
+ "hrsh7th/nvim-cmp",
+ "hrsh7th/cmp-vsnip",
+ "hrsh7th/vim-vsnip",
+ "rafamadriz/friendly-snippets",
+ "hrsh7th/cmp-nvim-lsp-signature-help",
+ "nvim-treesitter/nvim-treesitter",
+ "j-hui/fidget.nvim",
+ --"LhKipp/nvim-nu",
+}
diff --git a/.config/nvim/lua/settings.lua b/.config/nvim/lua/settings.lua
new file mode 100644
index 0000000..8548605
--- /dev/null
+++ b/.config/nvim/lua/settings.lua
@@ -0,0 +1,14 @@
+vim.cmd("colorscheme dogrun")
+vim.opt.encoding = "utf-8"
+vim.opt.relativenumber = true
+vim.opt.laststatus = 2
+vim.opt.autoindent = true
+vim.opt.shiftwidth = 4
+vim.opt.softtabstop = 4
+vim.opt.expandtab = true
+vim.opt.linebreak = true
+vim.opt.termguicolors = true
+vim.opt.completeopt = { "menuone", "noinsert", "noselect" }
+vim.opt.statusline = "%= %f %= "
+vim.opt.cursorline = true
+vim.cmd("highlight clear CursorLine")
diff --git a/.config/nvim/lua/treesitter_config.lua b/.config/nvim/lua/treesitter_config.lua
new file mode 100644
index 0000000..e934d71
--- /dev/null
+++ b/.config/nvim/lua/treesitter_config.lua
@@ -0,0 +1,49 @@
+require("nvim-treesitter.configs").setup {
+ ensure_installed = {
+ "rust",
+ "bash",
+ "c",
+ "comment",
+ "cpp",
+ "css",
+ "dockerfile",
+ "fish",
+ "gdscript",
+ "gitignore",
+ "glsl",
+ "go",
+ "haskell",
+ "help",
+ "html",
+ "http",
+ "java",
+ "javascript",
+ "json",
+ "kotlin",
+ "latex",
+ "llvm",
+ "lua",
+ "make",
+ "markdown",
+ "pascal",
+ "python",
+ "regex",
+ "scss",
+ "sql",
+ "svelte",
+ "toml",
+ "typescript",
+ "vim",
+ "vue",
+ "yaml",
+ },
+ sync_install = true,
+ auto_install = true,
+ highlight = {
+ enable = true,
+ },
+ ignore_install = {
+ "nu"
+ },
+ modules = {},
+}
diff --git a/.config/nvim/lua/writing_config.lua b/.config/nvim/lua/writing_config.lua
new file mode 100644
index 0000000..6380868
--- /dev/null
+++ b/.config/nvim/lua/writing_config.lua
@@ -0,0 +1,18 @@
+vim.api.nvim_create_autocmd("BufWritePost", {
+ pattern = "*.tex",
+ callback = function()
+ -- compile tex file to pdf with pdflatex on save
+ if vim.fn.executable('pdflatex') == 1 then
+ vim.cmd("execute '!pdflatex ' . expand('%:p')")
+ else
+ print("pdflatex is not installed")
+ end
+
+ -- compile tex file to html with pandoc on save
+ if vim.fn.executable('pandoc') == 1 then
+ vim.cmd("execute '!pandoc -o ' . substitute(expand('%:p'), '.tex', '.html ', '') . expand('%:p')")
+ else
+ print("pandoc is not installed")
+ end
+ end,
+})