From b7ef29a8886a57aadb787807a7c6cf74c1f0ed3a Mon Sep 17 00:00:00 2001 From: anand Date: Wed, 17 Dec 2025 15:57:55 +0530 Subject: Nixos --- nvim/init.lua | 175 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100755 nvim/init.lua (limited to 'nvim/init.lua') diff --git a/nvim/init.lua b/nvim/init.lua new file mode 100755 index 0000000..7ec606c --- /dev/null +++ b/nvim/init.lua @@ -0,0 +1,175 @@ +vim.g.mapleader = ' ' +vim.o.number = true +vim.o.tabstop = 2 +vim.o.softtabstop = 2 +vim.o.shiftwidth = 2 +vim.o.foldlevel = 2 +vim.o.expandtab = true +vim.o.autoindent = true +vim.o.smartindent = true +vim.o.signcolumn = 'yes' +vim.o.foldlevel = 99 +vim.o.hlsearch = false +vim.o.swapfile = true +vim.o.undodir = os.getenv("HOME") .. "/.vim/undodir" +vim.o.undofile = true +vim.o.smartcase = true +vim.o.ignorecase = true +vim.o.scrolloff = 8 +vim.opt.path:append("**") +vim.o.winborder = 'rounded' +vim.o.foldmethod = 'expr' +vim.o.guifont = 'IntoneMono NF:h10' +vim.o.foldexpr = 'v:lua.vim.lsp.foldexpr()' +vim.api.nvim_create_autocmd('LspAttach', { + callback = function(args) + local client = vim.lsp.get_client_by_id(args.data.client_id) + if client ~= nil and client:supports_method('textDocument/foldingRange') then + local win = vim.api.nvim_get_current_win() + vim.wo[win][0].foldexpr = 'v:lua.vim.lsp.foldexpr()' + end + end, +}) + +-- Clone 'mini.nvim' manually in a way that it gets managed by 'mini.deps' +local path_package = vim.fn.stdpath('data') .. '/site/' +local mini_path = path_package .. 'pack/deps/start/mini.nvim' +if not vim.loop.fs_stat(mini_path) then + vim.cmd('echo "Installing `mini.nvim`" | redraw') + local clone_cmd = { + 'git', 'clone', '--filter=blob:none', + 'https://github.com/nvim-mini/mini.nvim', mini_path + } + vim.fn.system(clone_cmd) + vim.cmd('packadd mini.nvim | helptags ALL') + vim.cmd('echo "Installed `mini.nvim`" | redraw') +end + +vim.api.nvim_create_autocmd("TextYankPost", { + callback = function() + vim.highlight.on_yank() + end, +}) + +require('mini.deps').setup({ path = { package = path_package } }) + +local add = require('mini.deps').add +add({ + source = 'nvim-flutter/flutter-tools.nvim', + depends = { + 'stevearc/dressing.nvim', + 'nvim-lua/plenary.nvim' + } +}) +add({ source = 'lewis6991/gitsigns.nvim' }) +add({ source = 'tpope/vim-fugitive' }) +add({ source = 'folke/tokyonight.nvim' }) +add({ source = 'nvim-treesitter/nvim-treesitter' }) +add({ source = 'OXY2DEV/markview.nvim' }) +add({ + source = 'nvim-mini/mini.completion', + dependencies = { + 'nvim-mini/mini.icons', + 'nvim-mini/mini-snippets' + } +}) +add({ source = 'nvim-mini/mini.surround' }) +add({ source = 'nvim-mini/mini.ai' }) +add({ source = 'nvim-mini/mini.move' }) +add({ source = 'nvim-mini/mini.files' }) +add({ source = 'nvim-treesitter/nvim-treesitter-context' }) +add({ source = 'echasnovski/mini.pick' }) +add({ source = 'onsails/diaglist.nvim' }) +add({ source = 'mbbill/undotree' }) +add({ source = 'HakonHarnes/img-clip.nvim' }) +add({ source = 'akinsho/toggleterm.nvim' }) +add({ source = 'mason-org/mason.nvim' }) +add({ source = 'neovim/nvim-lspconfig' }) +add({ source = 'jghauser/follow-md-links.nvim' }) +add({ source = 'rachartier/tiny-inline-diagnostic.nvim' }) +add({ + source = 'adibhanna/laravel.nvim', + dependencies = { + "MunifTanjim/nui.nvim", + "nvim-lua/plenary.nvim" + } +}) + +vim.lsp.enable({ 'jdtls', 'tinymist', 'clangd', 'emmet_language_server', 'lua_ls', 'neocmake', 'rust_analyzer', 'gopls' }) + +-- Plugin Setup +require('mason').setup() +require('flutter-tools').setup {} +require('mini.surround').setup() +require('mini.ai').setup() +require('mini.pick').setup() +require('mini.move').setup() +require('mini.files').setup() +require('mini.completion').setup() +require("tiny-inline-diagnostic").setup() +require('toggleterm').setup() +require('diaglist').init() +require('gitsigns').setup() +require("laravel").setup() +require 'treesitter-context'.setup { enable = true } + +vim.cmd.colorscheme('tokyonight-night') +vim.cmd.hi("StatusLine guibg=NONE") + +vim.api.nvim_create_autocmd("BufWritePre", { + pattern = "*.*", + callback = function() vim.lsp.buf.format() end, +}) + +-- Keymaps +vim.keymap.set("i", "", "", { desc = "Solution for xterm" }) +vim.keymap.set({ "n", "v" }, "j", "gj", { desc = "Personal preference" }) +vim.keymap.set({ "n", "v" }, "k", "gk", { desc = "Personal preference" }) +vim.keymap.set("n", "e", "lua MiniFiles.open()", { desc = 'Open Mini.Files' }) +vim.keymap.set("n", "cw", require('diaglist').open_all_diagnostics, { desc = 'Open diagnostics' }) +vim.keymap.set("n", "cl", "cclose", { desc = 'Open diagnostics' }) +vim.keymap.set('n', 'u', vim.cmd.UndotreeToggle, { desc = 'Toggle undo tree' }) +vim.keymap.set("n", "pv", "Ex", { desc = "Open netrw" }) +vim.keymap.set("n", "ff", "Pick files", { desc = "Open file Picker" }) +vim.keymap.set("n", "fg", "Pick grep_live", { desc = "Open Live Grep" }) +vim.keymap.set("n", "", "zz") +vim.keymap.set("n", "", "zz") +vim.keymap.set("n", "n", "nzzzv") +vim.keymap.set("n", "N", "Nzzzv") +vim.keymap.set({ "n", "v" }, "y", "\"+y", { desc = "Copy to system clipboard" }) +vim.keymap.set({ "n", "v" }, "yy", "V\"+y", { desc = "Copy to system clipboard" }) +vim.keymap.set({ "n" }, "p", "\"+p", { desc = "Paste system clipboard" }) +vim.keymap.set("v", "d", "\"_d", { desc = "Delete without copying to buffer" }) +vim.keymap.set("n", "dd", "V\"+d", { desc = "Delete without copying to buffer" }) +vim.keymap.set({ 'n', 'i' }, '', 'tabnext', { desc = "Move to next tab" }) +vim.keymap.set({ 'n', 'i' }, '', 'tabprevious', { desc = "Move to previous tab" }) +vim.keymap.set("n", "", "cnextzz") +vim.keymap.set("n", "", "cprevzz") +vim.keymap.set({ "n", "t" }, "/", "ToggleTerm") +vim.keymap.set("n", "gx", function() + local url = vim.fn.expand("") + vim.fn.jobstart({ "xdg-open", url }, { detach = true }) +end, { desc = "Open URL with xdg-open" }) + +-- vim.keymap.set("i", "", function() +-- if vim.fn.pumvisible() == 1 then +-- return "" +-- else +-- return "" +-- end +-- end, { expr = true, silent = true })a + +vim.api.nvim_create_autocmd('LspAttach', { + callback = function(ev) + local client = vim.lsp.get_client_by_id(ev.data.client_id) + if client ~= nil and client:supports_method('textDocument/completion') then + vim.opt.completeopt = { 'menu', 'menuone', 'noselect', 'fuzzy', 'popup' } + vim.lsp.completion.enable(true, client.id, ev.buf, { autotrigger = true }) + vim.keymap.set('i', '', function() + vim.lsp.completion.get() + end, { desc = 'Start Completion' }) + end + end, +}) + +vim.diagnostic.config({ virtual_text = false }) -- cgit v1.2.3