From a1ec4771740d321df4480e8a7224fa10b59f0569 Mon Sep 17 00:00:00 2001 From: WriterV2 Date: Fri, 3 Apr 2026 22:46:48 +0200 Subject: Update repo with git init directly in home dir --- .config/nvim/init.lua | 5 + .config/nvim/lua/.luarc.json | 3 + .config/nvim/lua/lsp_config.lua | 264 +++++++++++++++++++++++++++++++++ .config/nvim/lua/plugins.lua | 17 +++ .config/nvim/lua/settings.lua | 14 ++ .config/nvim/lua/treesitter_config.lua | 49 ++++++ .config/nvim/lua/writing_config.lua | 18 +++ 7 files changed, 370 insertions(+) create mode 100644 .config/nvim/init.lua create mode 100644 .config/nvim/lua/.luarc.json create mode 100644 .config/nvim/lua/lsp_config.lua create mode 100644 .config/nvim/lua/plugins.lua create mode 100644 .config/nvim/lua/settings.lua create mode 100644 .config/nvim/lua/treesitter_config.lua create mode 100644 .config/nvim/lua/writing_config.lua (limited to '.config/nvim') 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 +vim.diagnostic.config({ + virtual_text = false, + signs = true, + float = { border = 'single' }, +}) +vim.keymap.set("n", "", 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 { + [''] = cmp.mapping.confirm({ select = true }), + [''] = cmp.mapping.scroll_docs(4), + [''] = 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", "", "(vsnip-jump-next)", { noremap = false }) +vim.api.nvim_set_keymap("s", "", "(vsnip-jump-next)", { noremap = false }) +vim.api.nvim_set_keymap("i", "", "(vsnip-jump-prev)", { noremap = false }) +vim.api.nvim_set_keymap("s", "", "(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, +}) -- cgit v1.2.3