summaryrefslogtreecommitdiff
path: root/.config/nvim
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim')
-rw-r--r--.config/nvim/.gitignore1
-rw-r--r--.config/nvim/init.lua6
-rw-r--r--.config/nvim/lua/lazy-nvim.lua35
-rw-r--r--.config/nvim/lua/misc.lua40
-rw-r--r--.config/nvim/lua/plugins/autopair.lua8
-rw-r--r--.config/nvim/lua/plugins/colorscheme.lua8
-rw-r--r--.config/nvim/lua/plugins/indentbars.lua16
-rw-r--r--.config/nvim/lua/plugins/telescope.lua27
-rw-r--r--.config/nvim/lua/plugins/treesitter.lua27
-rw-r--r--.config/nvim/lua/plugins/undotree.lua6
-rw-r--r--.config/nvim/lua/remap.lua31
-rw-r--r--.config/nvim/lua/settings.lua23
-rw-r--r--.config/nvim/oldinit.lua319
13 files changed, 547 insertions, 0 deletions
diff --git a/.config/nvim/.gitignore b/.config/nvim/.gitignore
new file mode 100644
index 0000000..e033bc6
--- /dev/null
+++ b/.config/nvim/.gitignore
@@ -0,0 +1 @@
+lazy-lock.json
diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua
new file mode 100644
index 0000000..dc60c4f
--- /dev/null
+++ b/.config/nvim/init.lua
@@ -0,0 +1,6 @@
+require("misc")
+require("settings")
+require("remap")
+
+-- add plugins
+require("lazy-nvim")
diff --git a/.config/nvim/lua/lazy-nvim.lua b/.config/nvim/lua/lazy-nvim.lua
new file mode 100644
index 0000000..f5ee74c
--- /dev/null
+++ b/.config/nvim/lua/lazy-nvim.lua
@@ -0,0 +1,35 @@
+-- Bootstrap lazy.nvim
+local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
+if not (vim.uv or vim.loop).fs_stat(lazypath) then
+ local lazyrepo = "https://github.com/folke/lazy.nvim.git"
+ local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
+ if vim.v.shell_error ~= 0 then
+ vim.api.nvim_echo({
+ { "Failed to clone lazy.nvim:\n", "ErrorMsg" },
+ { out, "WarningMsg" },
+ { "\nPress any key to exit..." },
+ }, true, {})
+ vim.fn.getchar()
+ os.exit(1)
+ end
+end
+vim.opt.rtp:prepend(lazypath)
+
+-- Make sure to setup `mapleader` and `maplocalleader` before
+-- loading lazy.nvim so that mappings are correct.
+-- This is also a good place to setup other settings (vim.opt)
+vim.g.mapleader = " "
+vim.g.maplocalleader = "\\"
+
+-- Setup lazy.nvim
+require("lazy").setup({
+ spec = {
+ -- import your plugins
+ { import = "plugins" },
+ },
+ -- Configure any other settings here. See the documentation for more details.
+ -- colorscheme that will be used when installing plugins.
+ install = { colorscheme = { "habamax" } },
+ -- automatically check for plugin updates
+ checker = { enabled = true },
+})
diff --git a/.config/nvim/lua/misc.lua b/.config/nvim/lua/misc.lua
new file mode 100644
index 0000000..588e8c9
--- /dev/null
+++ b/.config/nvim/lua/misc.lua
@@ -0,0 +1,40 @@
+function FormatBuffer()
+ local save_cursor = vim.fn.getpos('.')
+ local save_view = vim.fn.winsaveview()
+
+ vim.api.nvim_command('normal! ggVG')
+ vim.api.nvim_command('normal! ==')
+
+ vim.fn.setpos('.', save_cursor)
+ vim.fn.winrestview(save_view)
+end
+
+-- vim.api.nvim_create_autocmd({ "BufWritePre" }, {
+-- pattern = {"*"},
+-- callback = function()
+-- local save_cursor = vim.fn.getpos(".")
+-- vim.cmd([[%s/\s\+$//e]])
+-- vim.fn.setpos(".", save_cursor)
+-- end,
+-- })
+
+-- vim.api.nvim_create_autocmd({ "BufWritePost" }, {
+-- pattern = { "*.tex" },
+-- callback = function()
+-- vim.cmd("!pdflatex *.tex")
+-- end,
+-- })
+
+vim.filetype.add {
+ extension = {
+ rasi = 'rasi',
+ vert = "glsl",
+ frag = "glsl",
+ },
+ pattern = {
+ ['.*/waybar/config'] = 'jsonc',
+ ['.*/mako/config'] = 'dosini',
+ ['.*/kitty/*.conf'] = 'bash',
+ ['.*/hypr/.*%.conf'] = 'hyprlang',
+ },
+}
diff --git a/.config/nvim/lua/plugins/autopair.lua b/.config/nvim/lua/plugins/autopair.lua
new file mode 100644
index 0000000..40222e1
--- /dev/null
+++ b/.config/nvim/lua/plugins/autopair.lua
@@ -0,0 +1,8 @@
+return {
+ "windwp/nvim-autopairs",
+ opt = true,
+ event = "InsertEnter",
+ config = function()
+ require("nvim-autopairs").setup()
+ end
+}
diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua
new file mode 100644
index 0000000..5fcd21a
--- /dev/null
+++ b/.config/nvim/lua/plugins/colorscheme.lua
@@ -0,0 +1,8 @@
+return {
+ "https://github.com/Mofiqul/dracula.nvim",
+ lazy=false,
+ priority=1000,
+ config = function()
+ vim.cmd.colorscheme("dracula")
+ end
+}
diff --git a/.config/nvim/lua/plugins/indentbars.lua b/.config/nvim/lua/plugins/indentbars.lua
new file mode 100644
index 0000000..0a98358
--- /dev/null
+++ b/.config/nvim/lua/plugins/indentbars.lua
@@ -0,0 +1,16 @@
+return {
+ "lukas-reineke/indent-blankline.nvim",
+ event = { "VeryLazy" },
+ config = function()
+ vim.opt.list = true
+ vim.opt.listchars = {
+ tab = "| ",
+ }
+ require("ibl").setup({
+ indent = {
+ tab_char = "|",
+ char = "|"
+ }
+ })
+ end,
+}
diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua
new file mode 100644
index 0000000..d6ddca9
--- /dev/null
+++ b/.config/nvim/lua/plugins/telescope.lua
@@ -0,0 +1,27 @@
+return {
+ 'nvim-telescope/telescope.nvim',
+ dependencies = { 'nvim-lua/plenary.nvim' },
+ config = function()
+ require('telescope').setup({
+ defaults = {
+ sorting_strategy = "ascending",
+ layout_strategy = 'bottom_pane',
+ layout_config = {
+ height = 10,
+ },
+ prompt_prefix = "",
+ selection_caret = "",
+ entry_prefix = "",
+ border = true,
+ borderchars = { "─", " ", " ", " ", "─", "─", " ", " " },
+ preview = false,
+ },
+ })
+ local builtin = require('telescope.builtin')
+ vim.keymap.set('n', '<leader>f', builtin.find_files, {})
+ vim.keymap.set('n', '<leader>r', builtin.live_grep, {})
+ vim.keymap.set('n', '<leader>b', function()
+ builtin.buffers({ sort_mru = true, ignore_current_buffer = true})
+ end)
+ end
+}
diff --git a/.config/nvim/lua/plugins/treesitter.lua b/.config/nvim/lua/plugins/treesitter.lua
new file mode 100644
index 0000000..6ac96af
--- /dev/null
+++ b/.config/nvim/lua/plugins/treesitter.lua
@@ -0,0 +1,27 @@
+return {
+ 'nvim-treesitter/nvim-treesitter',
+ name = 'treesitter',
+ build = ':TSUpdate',
+ config = function()
+ require('nvim-treesitter.configs').setup({
+ ensure_installed = {
+ "vimdoc", "c", "lua", "cpp",
+ "bash", "css", "glsl", "nasm", "haskell",
+ "hyprlang", "zig",
+ },
+ sync_install = false,
+
+ auto_install = true,
+
+ indent = {
+ enable = true
+ },
+
+ highlight = {
+ enable = true,
+
+ additional_vim_regex_highlighting = { "markdown" },
+ },
+ })
+ end
+}
diff --git a/.config/nvim/lua/plugins/undotree.lua b/.config/nvim/lua/plugins/undotree.lua
new file mode 100644
index 0000000..1404add
--- /dev/null
+++ b/.config/nvim/lua/plugins/undotree.lua
@@ -0,0 +1,6 @@
+return {
+ "mbbill/undotree",
+ config = function()
+ vim.keymap.set("n", "<leader>u", vim.cmd.UndotreeToggle)
+ end
+}
diff --git a/.config/nvim/lua/remap.lua b/.config/nvim/lua/remap.lua
new file mode 100644
index 0000000..6d842dc
--- /dev/null
+++ b/.config/nvim/lua/remap.lua
@@ -0,0 +1,31 @@
+vim.g.mapleader = " "
+vim.g.maplocalleader = "\\"
+
+-- vim.keymap.set("i", "<C-BS>", "<C-w>")
+-- vim.keymap.set("v", "<", "<gv")
+-- vim.keymap.set("v", ">", ">gv")
+
+-- vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv")
+-- vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv")
+
+-- vim.keymap.set("n", "<leader>k", "<cmd>:bd<CR>")
+
+vim.keymap.set("n", "<leader>=", FormatBuffer)
+
+-- vim.keymap.set({"n", "v"}, "<leader>d", "\"_d")
+vim.keymap.set("n", "<leader>p", "\"+p")
+vim.keymap.set("v", "<leader>y", "\"+y")
+
+-- vim.keymap.set({"n", "i", "v", "s"}, "<F1>", "<Nop>")
+
+vim.keymap.set("n", "<leader>=", FormatBuffer)
+
+-- insert mode moving
+vim.keymap.set('i', '<C-h>', '<Left>', opts)
+vim.keymap.set('i', '<C-j>', '<Down>', opts)
+vim.keymap.set('i', '<C-k>', '<Up>', opts)
+vim.keymap.set('i', '<C-l>', '<Right>', opts)
+
+-- C-g to escape
+vim.keymap.set('i', '<C-g>', '<Esc>', opts)
+vim.keymap.set('v', '<C-g>', '<Esc>', opts)
diff --git a/.config/nvim/lua/settings.lua b/.config/nvim/lua/settings.lua
new file mode 100644
index 0000000..e750225
--- /dev/null
+++ b/.config/nvim/lua/settings.lua
@@ -0,0 +1,23 @@
+vim.o.tabstop = 4
+vim.o.shiftwidth = 4
+vim.o.smartindent = true
+vim.opt.undodir = os.getenv("HOME") .. "/.cache/nvim/undodir"
+vim.opt.undofile = true
+vim.opt.swapfile = false
+
+vim.opt.relativenumber = true
+vim.opt.number = true
+
+vim.opt.scrolloff = 7
+
+vim.opt.termguicolors = true
+vim.opt.background = "dark"
+
+vim.opt.incsearch = true
+
+vim.opt.signcolumn = "no"
+vim.opt.isfname:append("@-@")
+
+vim.opt.splitbelow = true
+vim.opt.splitright = true
+
diff --git a/.config/nvim/oldinit.lua b/.config/nvim/oldinit.lua
new file mode 100644
index 0000000..fafc8f8
--- /dev/null
+++ b/.config/nvim/oldinit.lua
@@ -0,0 +1,319 @@
+vim.g.mapleader = " "
+
+-- LAZY
+local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
+if not vim.loop.fs_stat(lazypath) then
+ vim.fn.system({
+ "git",
+ "clone",
+ "--filter=blob:none",
+ "https://github.com/folke/lazy.nvim.git",
+ "--branch=stable",
+ lazypath,
+ })
+end
+vim.opt.rtp:prepend(lazypath)
+
+-- Packages
+require("lazy").setup({
+ {
+ "https://github.com/junegunn/fzf.vim",
+ dependencies = {
+ "https://github.com/junegunn/fzf",
+ },
+ keys = {
+ { "<Leader><Leader>", "<Cmd>Files<CR>", desc = "Find files" },
+ { "<Leader>b", "<Cmd>Buffers<CR>", desc = "Find buffers" },
+ { "<Leader>/", "<Cmd>Rg<CR>", desc = "Search project" },
+ },
+ },
+ {
+ "https://github.com/stevearc/oil.nvim",
+ config = function()
+ require("oil").setup()
+ end,
+ keys = {
+ { "-", "<Cmd>Oil<CR>", desc = "Browse files from here" },
+ },
+ },
+ {
+ "https://github.com/windwp/nvim-autopairs",
+ event = "InsertEnter", -- Only load when you enter Insert mode
+ config = function()
+ require("nvim-autopairs").setup()
+ end,
+ },
+ {
+ "https://github.com/numToStr/Comment.nvim",
+ event = "VeryLazy", -- Special lazy.nvim event for things that can load later and are not important for the initial UI
+ config = function()
+ require("Comment").setup()
+ end,
+ },
+ {
+ "https://github.com/tpope/vim-sleuth",
+ event = { "BufReadPost", "BufNewFile" }, -- Load after your file content
+ },
+ {
+ "nvim-treesitter/nvim-treesitter",
+ build = ":TSUpdate",
+ config = function ()
+ local configs = require("nvim-treesitter.configs")
+
+ configs.setup({
+ ensure_installed = { "c", "lua", "html", "zig" },
+ sync_install = false,
+ highlight = { enable = true },
+ indent = { enable = true },
+ incremental_selection = {
+ enable = true,
+ keymaps = {
+ node_incremental = "v",
+ node_decremental = "V",
+ },
+ },
+ })
+ end
+ },
+ {
+ "https://github.com/farmergreg/vim-lastplace",
+ event = "BufReadPost",
+ },
+ {
+ "https://github.com/NeogitOrg/neogit",
+ dependencies = {
+ "nvim-lua/plenary.nvim",
+ "sindrets/diffview.nvim"
+ },
+ cmd = "Neogit", -- Only load when you run the Neogit command
+ config = function()
+ require("neogit").setup()
+ end,
+ },
+ {
+ "https://github.com/Mofiqul/dracula.nvim",
+ lazy=false,
+ priority=1000,
+ },
+ {
+ "neovim/nvim-lspconfig",
+ dependencies = {
+ "williamboman/mason.nvim",
+ "williamboman/mason-lspconfig.nvim",
+ "L3MON4D3/LuaSnip",
+ 'saghen/blink.cmp',
+ },
+ config = function()
+ local blink = require('blink.cmp')
+ local capabilities = vim.tbl_deep_extend(
+ "force",
+ {},
+ vim.lsp.protocol.make_client_capabilities(),
+ blink.get_lsp_capabilities())
+ require("mason").setup({
+ PATH = "append",
+ })
+ require("mason-lspconfig").setup({
+ ensure_installed = {
+ "lua_ls",
+ "zls",
+ "texlab",
+ "clangd",
+ },
+ handlers = {
+ function(server_name) -- default handler (optional)
+ require("lspconfig")[server_name].setup {
+ capabilities = capabilities
+ }
+ end,
+ ["zls"] = function ()
+ vim.g.zig_fmt_parse_errors = 0
+ vim.g.zig_fmt_autosave = 0
+ local lspconfig = require("lspconfig")
+ lspconfig.zls.setup({
+ capabilities = capabilities,
+ autoformat = false,
+ })
+ end,
+ ["lua_ls"] = function()
+ local lspconfig = require("lspconfig")
+ lspconfig.lua_ls.setup {
+ capabilities = capabilities,
+ settings = {
+ Lua = {
+ runtime = { version = "Lua 5.1" },
+ diagnostics = {
+ globals = { "bit", "vim", "it", "describe", "before_each", "after_each" },
+ }
+ }
+ }
+ }
+ end,
+ }
+ })
+ vim.diagnostic.config({
+ -- update_in_insert = true,
+ float = {
+ focusable = false,
+ style = "minimal",
+ border = "rounded",
+ source = true,
+ header = "",
+ prefix = "",
+ },
+ })
+ vim.api.nvim_create_autocmd('LspAttach', {
+ callback = function(event)
+ local opts = {buffer = event.buf}
+ vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts)
+ vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts)
+ vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts)
+ vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts)
+ vim.keymap.set('n', 'go', vim.lsp.buf.type_definition, opts)
+ vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts)
+ vim.keymap.set('n', 'gs', vim.lsp.buf.signature_help, opts)
+ vim.keymap.set('n', '<F2>', vim.lsp.buf.rename, opts)
+ vim.keymap.set({'n', 'x'}, '<F3>', vim.lsp.buf.format, opts)
+ vim.keymap.set('n', '<F4>', vim.lsp.buf.code_action, opts)
+ end,
+ })
+ end
+ },
+ {
+ 'dnlhc/glance.nvim',
+ cmd = 'Glance'
+ },
+ {
+ 'saghen/blink.cmp',
+ version = "*",
+ -- build = "cargo build --release",
+ opts = {
+ snippets = { preset = 'luasnip', },
+ completion = {
+ keyword = {
+ range = 'prefix',
+ },
+ trigger = {
+ -- show_in_snippet = false,
+ -- show_on_keyword = false,
+ -- show_on_trigger_character = false,
+ -- show_on_accept_on_trigger_character = false,
+ -- show_on_insert_on_trigger_character = false,
+ },
+ list = {
+ selection = {
+ preselect = false,
+ auto_insert = false,
+ },
+ },
+ menu = {
+ draw = {
+ columns = { { "label", "label_description", gap = 1 }, { "kind" , "source_name", gap = 1} },
+ },
+ },
+ documentation = {
+ auto_show = true,
+ },
+ ghost_text = {
+ enabled = true,
+ },
+ },
+ fuzzy = {
+ prebuilt_binaries = {
+ download = true,
+ },
+ },
+ keymap = {
+ preset = 'default',
+ ['<Tab>'] = { 'accept', 'fallback' },
+ ['<CR>'] = { 'accept', 'fallback' },
+ ['<C-M-i>'] = { 'show', 'select_and_accept', 'fallback' },
+ },
+ cmdline = {
+ completion = {
+ list = {
+ selection = {
+ preselect = false,
+ auto_insert = false,
+ },
+ },
+ },
+ keymap = {
+ preset = 'cmdline',
+ ['<Tab>'] = { 'show', 'accept', 'fallback' },
+ ['<CR>'] = { 'accept', 'fallback' },
+ ['<C-M-i>'] = { 'show', 'select_and_accept', 'fallback' },
+ },
+ },
+ sources = {
+ default = { 'lsp', 'path', 'snippets', 'buffer' },
+ providers = {
+ buffer = {
+ name = 'Buffer',
+ module = 'blink.cmp.sources.buffer',
+ opts = {
+ -- all buffers of same filetype
+ get_bufnrs = function()
+ return vim
+ .iter(vim.api.nvim_list_bufs())
+ :filter(
+ function (buf)
+ return vim.bo[buf].buftype ~= 'nofile'
+ and vim.bo[buf].filetype == vim.bo.filetype
+ end)
+ :totable()
+ end,
+ }
+ },
+ }
+ },
+ },
+ }
+})
+
+vim.cmd.colorscheme("dracula")
+
+vim.opt.number = true
+vim.opt.relativenumber = true
+
+vim.opt.splitbelow = true
+vim.opt.splitright = true
+
+vim.o.shiftwidth = 4
+vim.o.tabstop = 4;
+vim.o.expandtab = false
+vim.opt.signcolumn = "no"
+vim.o.smartindent = true;
+
+vim.opt.swapfile = false
+vim.opt.backup = false
+vim.opt.undodir = os.getenv("HOME") .. "/.cache/nvim/undodir"
+vim.opt.undofile = true
+
+vim.opt.pumheight = 8
+
+vim.opt.scrolloff = 7
+
+vim.opt.list = true
+vim.opt.listchars = { tab = " " }
+
+-- Map movement keys in insert and command modes
+local map = vim.api.nvim_set_keymap
+local opts = { noremap = true }
+
+-- Insert mode mappings
+map('i', '<C-h>', '<Left>', opts)
+map('i', '<C-j>', '<Down>', opts)
+map('i', '<C-k>', '<Up>', opts)
+map('i', '<C-l>', '<Right>', opts)
+
+-- Command-line mode mappings
+map('c', '<C-h>', '<Left>', opts)
+map('c', '<C-j>', '<Down>', opts)
+map('c', '<C-k>', '<Up>', opts)
+map('c', '<C-l>', '<Right>', opts)
+
+map('i', '<C-g>', '<Esc>', opts)
+map('v', '<C-g>', '<Esc>', opts)
+
+vim.keymap.set('n', 'gR', '<CMD>Glance references<CR>')