From 49c82d2baf2348dea954b11beb25c0bed7cf94d4 Mon Sep 17 00:00:00 2001 From: Syed Daanish Date: Wed, 8 Jul 2026 06:10:49 +0100 Subject: [PATCH] Fix neovim config --- home/nvim/default.nix | 4 +- home/nvim/init.lua | 280 ++------------------------------------ home/nvim/lua/extra.lua | 30 ++++ home/nvim/lua/keymaps.lua | 48 +++++++ home/nvim/lua/lsp.lua | 28 ++++ home/nvim/lua/options.lua | 66 +++++++++ home/nvim/lua/plugins.lua | 109 +++++++++++++++ 7 files changed, 291 insertions(+), 274 deletions(-) create mode 100644 home/nvim/lua/extra.lua create mode 100644 home/nvim/lua/keymaps.lua create mode 100644 home/nvim/lua/lsp.lua create mode 100644 home/nvim/lua/options.lua create mode 100644 home/nvim/lua/plugins.lua diff --git a/home/nvim/default.nix b/home/nvim/default.nix index 300b247..72b8051 100644 --- a/home/nvim/default.nix +++ b/home/nvim/default.nix @@ -47,7 +47,7 @@ clang-tools stylua ]; - - initLua = builtins.readFile ./init.lua; }; + + home.file.".config/nvim".source = ./.; } diff --git a/home/nvim/init.lua b/home/nvim/init.lua index 9411116..4f8ca7f 100644 --- a/home/nvim/init.lua +++ b/home/nvim/init.lua @@ -1,273 +1,9 @@ --- Options -local o = vim.opt -local g = vim.g -g.mapleader = " " -g.loaded_perl_provider = 0 -g.loaded_ruby_provider = 0 -g.clipboard = "osc52" -o.number = true -o.winborder = "rounded" -o.expandtab = true -o.shiftwidth = 2 -o.tabstop = 4 -o.softtabstop = 4 -o.completeopt = { "menuone", "noselect", "noinsert" } -o.updatetime = 100 -o.timeoutlen = 300 -o.clipboard = "unnamedplus" -o.foldenable = false -o.list = true -o.listchars = { - tab = "→ ", - eol = " ", - space = " ", - nbsp = "␣", - trail = "·", - lead = "·", -} -o.scroll = 5 -o.smoothscroll = true -o.termguicolors = true -o.laststatus = 3 -o.mousescroll = "ver:0,hor:0" +require("extra") +require("keymaps") +require("lsp") +require("options") +require("plugins") -vim.lsp.semantic_tokens.enable = false - -vim.diagnostic.config({ - float = { - border = "rounded", - }, -}) - -vim.g.rainbow_delimiters = { - highlight = { - "RainbowDelimiterYellow", - "RainbowDelimiterBlue", - "RainbowDelimiterOrange", - "RainbowDelimiterGreen", - "RainbowDelimiterViolet", - "RainbowDelimiterCyan", - "RainbowDelimiterRed", - }, -} - -vim.diagnostic.config({ - virtual_text = true, - signs = { - text = { - [vim.diagnostic.severity.ERROR] = "󰅚 ", - [vim.diagnostic.severity.WARN] = "󰀪 ", - [vim.diagnostic.severity.INFO] = "󰋽 ", - [vim.diagnostic.severity.HINT] = "󰌶 ", - }, - }, - underline = true, - update_in_insert = true, - severity_sort = true, -}) - --- LSP config -local capabilities = require("cmp_nvim_lsp").default_capabilities() - -vim.lsp.config("lua_ls", { - capabilities = capabilities, - settings = { - Lua = { - diagnostics = { - globals = { - "vim", - }, - }, - workspace = { - library = vim.api.nvim_get_runtime_file("", true), - }, - telemetry = { - enable = false, - }, - }, - }, -}) - -vim.lsp.config("clangd", { - capabilities = capabilities, -}) - -vim.lsp.enable("lua_ls") -vim.lsp.enable("clangd") - --- Plugins -require("picvim").setup({}) - -require("notify").setup({}) - -require("gitsigns").setup({}) - -require("mini.pairs").setup({}) - -require("rainbow-delimiters.setup").setup({}) - -require("neo-tree").setup({ - filesystem = { - filtered_items = { - visible = true, - }, - }, -}) - -require("lualine").setup({ - options = { - theme = "auto", - }, - sections = { - lualine_b = { - { "branch" }, - { - "diff", - symbols = { - added = " ", - modified = " ", - removed = " ", - }, - diff_color = { - added = { fg = "#a6e3a1" }, - modified = { fg = "#f9e2af" }, - removed = { fg = "#f38ca8" }, - }, - }, - }, - }, -}) - -require("nvim-cursorline").setup({ - cursorline = { - enable = true, - timeout = 0, - number = false, - }, - cursorword = { - enable = true, - min_length = 1, - hl = { - underline = true, - }, - }, -}) - -require("conform").setup({ - formatters_by_ft = { - lua = { "stylua" }, - }, - - format_on_save = { - timeout_ms = 500, - lsp_fallback = true, - }, -}) - -local cmp = require("cmp") -cmp.setup({ - window = { - completion = cmp.config.window.bordered({ - border = "rounded", - }), - documentation = cmp.config.window.bordered({ - border = "rounded", - }), - }, - mapping = cmp.mapping.preset.insert({ - [""] = cmp.mapping.confirm({ - select = true, - }), - [""] = cmp.mapping.select_next_item(), - [""] = cmp.mapping.select_prev_item(), - }), - sources = { - { - name = "nvim_lsp", - }, - { - name = "clangd", - }, - }, -}) - -local neoscroll = require("neoscroll") -neoscroll.setup({ - mappings = { - "", - "", - "", - "", - "", - "", - "zt", - "zz", - "zb", - }, -}) - --- Keymaps -local map = vim.keymap.set -map({ "n", "i", "v" }, "", "w") -map("n", ";", ":") -map("n", "", ":move-2") -map("n", "", ":move+1") -map("x", "", ":move '<-2gv") -map("x", "", ":move '>+1gv") -map("i", "", ":move-2") -map("i", "", ":move+1") -map("n", ">", ">>") -map("v", ">", ">gv") -map("n", "<", "<<") -map("v", "<", ">") -map("v", ".", ">gv") -map("n", ",", "<<") -map("v", ",", "", "nohlsearch") -map("n", "u", "ggVG") -map("n", "z", "u") -map("n", "d", "red") -map("n", "q", "Neotree") -map("n", "", "Minuet virtualtext toggle") -map("x", "p", '"_dP') -map("x", "P", '"_dP') -map("n", "\\", function() - vim.cmd([[ - Neotree close - mksession! p.vim - echo "saved session" - ]]) -end) -map("n", "", function() - neoscroll.scroll(-0.05, { move_cursor = false, duration = 20 }) -end) -map("n", "", function() - neoscroll.scroll(0.05, { move_cursor = false, duration = 20 }) -end) -map("n", "", function() - neoscroll.scroll(-0.1, { move_cursor = false, duration = 50 }) -end) -map("n", "", function() - neoscroll.scroll(0.1, { move_cursor = false, duration = 50 }) -end) - --- Vimscript stuff -vim.cmd([[ -aunmenu PopUp -colorscheme tokyonight-night -]]) - --- AutoCMD's - -local autocmd = vim.api.nvim_create_autocmd - -autocmd("CursorHold", { - callback = function() - vim.diagnostic.open_float(nil, { - focusable = false, - border = "rounded", - source = "if_many", - }) - end, -}) +if vim.env.SSH_CONNECTION or vim.env.SSH_TTY then + vim.g.clipboard = "osc52" +end diff --git a/home/nvim/lua/extra.lua b/home/nvim/lua/extra.lua new file mode 100644 index 0000000..d093512 --- /dev/null +++ b/home/nvim/lua/extra.lua @@ -0,0 +1,30 @@ +-- Vimscript +vim.cmd([[ +aunmenu PopUp +colorscheme tokyonight-night +]]) + +-- AutoCMD's +local autocmd = vim.api.nvim_create_autocmd + +autocmd("CursorHold", { + callback = function() + vim.diagnostic.open_float(nil, { + focusable = false, + border = "rounded", + source = "if_many", + }) + end, +}) + +vim.api.nvim_create_autocmd("VimLeavePre", { + callback = function() + if vim.fn.filereadable("p.vim") == 1 then + vim.cmd([[ + Neotree close + mksession! p.vim + echo "saved session" + ]]) + end + end, +}) diff --git a/home/nvim/lua/keymaps.lua b/home/nvim/lua/keymaps.lua new file mode 100644 index 0000000..1c5d1fb --- /dev/null +++ b/home/nvim/lua/keymaps.lua @@ -0,0 +1,48 @@ +-- Keymaps +local map = vim.keymap.set +map({ "n", "i", "v" }, "", "w") +map("n", ";", ":") +map("n", "", ":move-2") +map("n", "", ":move+1") +map("x", "", ":move '<-2gv") +map("x", "", ":move '>+1gv") +map("i", "", ":move-2") +map("i", "", ":move+1") +map("n", ">", ">>") +map("v", ">", ">gv") +map("n", "<", "<<") +map("v", "<", ">") +map("v", ".", ">gv") +map("n", ",", "<<") +map("v", ",", "", "nohlsearch") +map("n", "u", "ggVG") +map("n", "z", "u") +map("n", "d", "red") +map("n", "q", "Neotree") +map("n", "", "Minuet virtualtext toggle") +map("x", "p", '"_dP') +map("x", "P", '"_dP') + +map("n", "\\", function() + vim.cmd([[ + Neotree close + mksession! p.vim + echo "saved session" + ]]) +end) + +local neoscroll = require("neoscroll") +map("n", "", function() + neoscroll.scroll(-0.05, { move_cursor = false, duration = 20 }) +end) +map("n", "", function() + neoscroll.scroll(0.05, { move_cursor = false, duration = 20 }) +end) +map("n", "", function() + neoscroll.scroll(-0.1, { move_cursor = false, duration = 50 }) +end) +map("n", "", function() + neoscroll.scroll(0.1, { move_cursor = false, duration = 50 }) +end) diff --git a/home/nvim/lua/lsp.lua b/home/nvim/lua/lsp.lua new file mode 100644 index 0000000..0af235b --- /dev/null +++ b/home/nvim/lua/lsp.lua @@ -0,0 +1,28 @@ +-- LSP config +local capabilities = require("cmp_nvim_lsp").default_capabilities() + +vim.lsp.config("lua_ls", { + capabilities = capabilities, + settings = { + Lua = { + diagnostics = { + globals = { + "vim", + }, + }, + workspace = { + library = vim.api.nvim_get_runtime_file("", true), + }, + telemetry = { + enable = false, + }, + }, + }, +}) + +vim.lsp.config("clangd", { + capabilities = capabilities, +}) + +vim.lsp.enable("lua_ls") +vim.lsp.enable("clangd") diff --git a/home/nvim/lua/options.lua b/home/nvim/lua/options.lua new file mode 100644 index 0000000..2ae4f04 --- /dev/null +++ b/home/nvim/lua/options.lua @@ -0,0 +1,66 @@ +-- Options +local o = vim.opt +local g = vim.g +g.mapleader = " " +g.loaded_perl_provider = 0 +g.loaded_ruby_provider = 0 +o.number = true +o.winborder = "rounded" +o.expandtab = true +o.shiftwidth = 2 +o.tabstop = 4 +o.softtabstop = 4 +o.completeopt = { "menuone", "noselect", "noinsert" } +o.updatetime = 100 +o.timeoutlen = 300 +o.clipboard = "unnamedplus" +o.foldenable = false +o.list = true +o.listchars = { + tab = "→ ", + eol = " ", + space = " ", + nbsp = "␣", + trail = "·", + lead = "·", +} +o.scroll = 5 +o.smoothscroll = true +o.termguicolors = true +o.laststatus = 3 +o.mousescroll = "ver:0,hor:0" + +vim.lsp.semantic_tokens.enable = false + +vim.diagnostic.config({ + float = { + border = "rounded", + }, +}) + +vim.g.rainbow_delimiters = { + highlight = { + "RainbowDelimiterYellow", + "RainbowDelimiterBlue", + "RainbowDelimiterOrange", + "RainbowDelimiterGreen", + "RainbowDelimiterViolet", + "RainbowDelimiterCyan", + "RainbowDelimiterRed", + }, +} + +vim.diagnostic.config({ + virtual_text = true, + signs = { + text = { + [vim.diagnostic.severity.ERROR] = "󰅚 ", + [vim.diagnostic.severity.WARN] = "󰀪 ", + [vim.diagnostic.severity.INFO] = "󰋽 ", + [vim.diagnostic.severity.HINT] = "󰌶 ", + }, + }, + underline = true, + update_in_insert = true, + severity_sort = true, +}) diff --git a/home/nvim/lua/plugins.lua b/home/nvim/lua/plugins.lua new file mode 100644 index 0000000..7faa251 --- /dev/null +++ b/home/nvim/lua/plugins.lua @@ -0,0 +1,109 @@ +-- Plugins +require("picvim").setup({}) + +require("notify").setup({}) + +require("gitsigns").setup({}) + +require("mini.pairs").setup({}) + +require("rainbow-delimiters.setup").setup({}) + +require("neo-tree").setup({ + filesystem = { + filtered_items = { + visible = true, + }, + }, +}) + +require("lualine").setup({ + options = { + theme = "auto", + }, + sections = { + lualine_b = { + { "branch" }, + { + "diff", + symbols = { + added = " ", + modified = " ", + removed = " ", + }, + diff_color = { + added = { fg = "#a6e3a1" }, + modified = { fg = "#f9e2af" }, + removed = { fg = "#f38ca8" }, + }, + }, + }, + }, +}) + +require("nvim-cursorline").setup({ + cursorline = { + enable = true, + timeout = 0, + number = false, + }, + cursorword = { + enable = true, + min_length = 1, + hl = { + underline = true, + }, + }, +}) + +require("conform").setup({ + formatters_by_ft = { + lua = { "stylua" }, + }, + + format_on_save = { + timeout_ms = 500, + lsp_fallback = true, + }, +}) + +local cmp = require("cmp") +cmp.setup({ + window = { + completion = cmp.config.window.bordered({ + border = "rounded", + }), + documentation = cmp.config.window.bordered({ + border = "rounded", + }), + }, + mapping = cmp.mapping.preset.insert({ + [""] = cmp.mapping.confirm({ + select = true, + }), + [""] = cmp.mapping.select_next_item(), + [""] = cmp.mapping.select_prev_item(), + }), + sources = { + { + name = "nvim_lsp", + }, + { + name = "clangd", + }, + }, +}) + +require("neoscroll").setup({ + mappings = { + "", + "", + "", + "", + "", + "", + "zt", + "zz", + "zb", + }, +})