From d93cbb14c08a004978380be013ece80f0f5725cb Mon Sep 17 00:00:00 2001 From: chlorospingus Date: Wed, 23 Apr 2025 18:43:29 -0700 Subject: [PATCH] Add neovim config --- .gitignore | 1 + README.md | 2 +- nvim/init.lua | 136 +++++++++++++++++++++++++++++++ nvim/lua/config/lazy.lua | 35 ++++++++ nvim/lua/plugins/autoclose.lua | 3 + nvim/lua/plugins/cmp.lua | 17 ++++ nvim/lua/plugins/codesnap.lua | 16 ++++ nvim/lua/plugins/colors.lua | 3 + nvim/lua/plugins/keystrokes.lua | 5 ++ nvim/lua/plugins/lualine.lua | 6 ++ nvim/lua/plugins/presence.lua | 4 + nvim/lua/plugins/theme.lua | 3 + nvim/lua/plugins/transparent.lua | 3 + nvim/lua/plugins/typst.lua | 6 ++ nvim/nvim.txz | Bin 0 -> 3600 bytes 15 files changed, 239 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 nvim/init.lua create mode 100644 nvim/lua/config/lazy.lua create mode 100644 nvim/lua/plugins/autoclose.lua create mode 100644 nvim/lua/plugins/cmp.lua create mode 100644 nvim/lua/plugins/codesnap.lua create mode 100644 nvim/lua/plugins/colors.lua create mode 100644 nvim/lua/plugins/keystrokes.lua create mode 100644 nvim/lua/plugins/lualine.lua create mode 100644 nvim/lua/plugins/presence.lua create mode 100644 nvim/lua/plugins/theme.lua create mode 100644 nvim/lua/plugins/transparent.lua create mode 100644 nvim/lua/plugins/typst.lua create mode 100644 nvim/nvim.txz diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..240e410 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +nvim/lazylock.json diff --git a/README.md b/README.md index 3a47dca..3b1ccca 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ # dotfiles -My dotfiles including Hyprland, Aylur's GTK Shell, Anyrun, and Starship. +My dotfiles including Hyprland, Aylur's GTK Shell, Rofi, Neovim, and Starship. diff --git a/nvim/init.lua b/nvim/init.lua new file mode 100644 index 0000000..e3e958b --- /dev/null +++ b/nvim/init.lua @@ -0,0 +1,136 @@ +require('config.lazy') + +local capabilities = require('cmp_nvim_lsp').default_capabilities() + +-- Set up lspconfig. +local lspconfig = require('lspconfig') +local servers = { 'jdtls', 'rust_analyzer', 'csharp_ls', 'html', 'marksman', 'ts_ls', 'clangd', 'cssls', 'tinymist'} +for _, lsp in ipairs(servers) do + lspconfig[lsp].setup { + capabilities = capabilities, + } +end +lspconfig.pylsp.setup({settings={pylsp={plugins={pylint={enabled = true,}}}}}) + +local cmp = require('cmp') +cmp.setup({ + snippet = { + expand = function(args) + vim.fn["vsnip#anonymous"](args.body) + end, + }, + window = { + completion = cmp.config.window.bordered(), + documentation = cmp.config.window.bordered(), + }, + -- formatting = { + -- format = require('lspkind').cmp_format(), + -- }, + mapping = cmp.mapping.preset.insert({ + [''] = cmp.mapping.confirm { + behavior = cmp.ConfirmBehavior.Replace, + select = true, + }, + }), + sources = cmp.config.sources({ + { name = 'nvim_lsp' }, + { name = 'vsnip' }, + }) +}) + +require('autoclose').setup{} + +require('lualine').setup { + options = { + icons_enabled = true, + theme = 'auto', + component_separators = { left = '', right = ''}, + section_separators = { left = '', right = ''}, + disabled_filetypes = { + statusline = {}, + winbar = {}, + }, + ignore_focus = {}, + always_divide_middle = true, + globalstatus = false, + refresh = { + statusline = 1000, + tabline = 1000, + winbar = 1000, + } + }, + sections = { + lualine_a = {{'mode', separator = {left = '', right = ''}, padding = 0}}, + lualine_b = {'branch'}, + lualine_c = {'diagnostics'}, + lualine_x = {}, + lualine_y = {'filetype'}, + lualine_z = {{'filename', separator = {left = '', right = ''}, padding = 0}} + }, + tabline = {}, + winbar = {}, + inactive_winbar = {}, + extensions = {} +} + +require('presence').setup({ + neovim_image_text = 'Because emacs was too intimidating', + editing_text = 'Typing away...', + reading_text = 'Reading the man pages' +}) + +require('screenkey').setup{} + +vim.keymap.set({'n', 'x', 'o'}, 'z', vim.diagnostic.open_float) +vim.keymap.set({'n', 'x', 'o', 'i'}, '', "up") + + +if vim.g.neovide then + vim.o.guifont = 'ComicShannsMono Nerd Font:h14' + vim.g.neovide_transparency = 0.85 + vim.g.neovide_cursor_animation_length = 0.05 + vim.g.neovide_cursor_trail_size = 0.5 +end + +vim.cmd([[ + no e + + no a i + no i a + no A I + no I A + no k o + no / + ino + + no h + no t + no n + no s + no / ^ + no = + + no + ino + no : + ino : + cno + nn :bn + nn :UndotreeToggle + + ino + no j J + nn :noh + nn n + set number + set relativenumber + hi LineNr ctermfg=67 + set tabstop=4 + set shiftwidth=4 + set cmdheight=0 + + let g:vsnip_snippet_dir = '~/.config/nvim/vsnip' + + colorscheme catppuccin +]]) + diff --git a/nvim/lua/config/lazy.lua b/nvim/lua/config/lazy.lua new file mode 100644 index 0000000..f5ee74c --- /dev/null +++ b/nvim/lua/config/lazy.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/nvim/lua/plugins/autoclose.lua b/nvim/lua/plugins/autoclose.lua new file mode 100644 index 0000000..311753d --- /dev/null +++ b/nvim/lua/plugins/autoclose.lua @@ -0,0 +1,3 @@ +return { + 'm4xshen/autoclose.nvim', +} diff --git a/nvim/lua/plugins/cmp.lua b/nvim/lua/plugins/cmp.lua new file mode 100644 index 0000000..61d77bc --- /dev/null +++ b/nvim/lua/plugins/cmp.lua @@ -0,0 +1,17 @@ +return { + 'hrsh7th/nvim-cmp', + version = false, + lazy = false, + dependencies = { + "neovim/nvim-lspconfig", + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-buffer", + "hrsh7th/lspkind-nvim", + "honza/vim-snippets", + "hrsh7th/vim-vsnip", + "hrsh7th/cmp-vsnip", + "rafamadriz/friendly-snippets" + }, + init = function() + end +} diff --git a/nvim/lua/plugins/codesnap.lua b/nvim/lua/plugins/codesnap.lua new file mode 100644 index 0000000..86162f6 --- /dev/null +++ b/nvim/lua/plugins/codesnap.lua @@ -0,0 +1,16 @@ +return { + 'mistricky/codesnap.nvim', + lazy = false, + build = 'make', + keys = { + {'', 'CodeSnap', mode = 'x'}, + }, + opts = { + bg_theme = "sea", + has_line_number = true, + bg_padding = 0, + code_font_family = "ComicShannsMono Nerd Font"; + mac_window_bar = false, + watermark = "" + } +} diff --git a/nvim/lua/plugins/colors.lua b/nvim/lua/plugins/colors.lua new file mode 100644 index 0000000..df1a528 --- /dev/null +++ b/nvim/lua/plugins/colors.lua @@ -0,0 +1,3 @@ +return { + 'norcalli/nvim-colorizer.lua' +} diff --git a/nvim/lua/plugins/keystrokes.lua b/nvim/lua/plugins/keystrokes.lua new file mode 100644 index 0000000..11c7a65 --- /dev/null +++ b/nvim/lua/plugins/keystrokes.lua @@ -0,0 +1,5 @@ +return { + 'NStefan002/screenkey.nvim', + lazy = false, + version = "*", +} diff --git a/nvim/lua/plugins/lualine.lua b/nvim/lua/plugins/lualine.lua new file mode 100644 index 0000000..2ec5ffa --- /dev/null +++ b/nvim/lua/plugins/lualine.lua @@ -0,0 +1,6 @@ +return { + 'nvim-lualine/lualine.nvim', + dependencies = { + 'nvim-tree/nvim-web-devicons', + } +} diff --git a/nvim/lua/plugins/presence.lua b/nvim/lua/plugins/presence.lua new file mode 100644 index 0000000..3ee261c --- /dev/null +++ b/nvim/lua/plugins/presence.lua @@ -0,0 +1,4 @@ +return { + 'andweeb/presence.nvim', + lazy = false +} diff --git a/nvim/lua/plugins/theme.lua b/nvim/lua/plugins/theme.lua new file mode 100644 index 0000000..8be5d10 --- /dev/null +++ b/nvim/lua/plugins/theme.lua @@ -0,0 +1,3 @@ +return { + 'catppuccin/nvim' +} diff --git a/nvim/lua/plugins/transparent.lua b/nvim/lua/plugins/transparent.lua new file mode 100644 index 0000000..408d2a3 --- /dev/null +++ b/nvim/lua/plugins/transparent.lua @@ -0,0 +1,3 @@ +return { + 'xiyaowong/transparent.nvim' +} diff --git a/nvim/lua/plugins/typst.lua b/nvim/lua/plugins/typst.lua new file mode 100644 index 0000000..6f65f73 --- /dev/null +++ b/nvim/lua/plugins/typst.lua @@ -0,0 +1,6 @@ +return { + 'chomosuke/typst-preview.nvim', + lazy = false, -- or ft = 'typst' + version = '1.*', + opts = {}, -- lazy.nvim will implicitly calls `setup {}` +} diff --git a/nvim/nvim.txz b/nvim/nvim.txz new file mode 100644 index 0000000000000000000000000000000000000000..44df9ce8da004af099f7facd1dc1b4f800b5691f GIT binary patch literal 3600 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 W@Bsj>%&4TX#Ao{g000001X)`9fcl^S literal 0 HcmV?d00001