Add neovim config

This commit is contained in:
2025-04-23 18:43:29 -07:00
parent 9740b37a63
commit d93cbb14c0
15 changed files with 239 additions and 1 deletions

136
nvim/init.lua Normal file
View File

@@ -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({
['<CR>'] = 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'}, '<c-s>', "<cmd>up<cr>")
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 <c-r>
no a i
no i a
no A I
no I A
no k o
no <c-f> /
ino <c-v> <esc><c-v>
no h <left>
no t <up>
no n <down>
no s <right>
no / ^
no = <end>
no <c-h> <esc>
ino <c-h> <esc>
no <c-t> :
ino <c-t> <c-o>:
cno <c-h> <esc>
nn <c-b> :bn<enter>
nn <c-u> :UndotreeToggle<enter>
ino <c-bs> <c-w>
no j J
nn <enter> :noh<enter>
nn <c-enter> 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
]])

35
nvim/lua/config/lazy.lua Normal file
View File

@@ -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 },
})

View File

@@ -0,0 +1,3 @@
return {
'm4xshen/autoclose.nvim',
}

17
nvim/lua/plugins/cmp.lua Normal file
View File

@@ -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
}

View File

@@ -0,0 +1,16 @@
return {
'mistricky/codesnap.nvim',
lazy = false,
build = 'make',
keys = {
{'<F2>', '<cmd>CodeSnap<cr>', mode = 'x'},
},
opts = {
bg_theme = "sea",
has_line_number = true,
bg_padding = 0,
code_font_family = "ComicShannsMono Nerd Font";
mac_window_bar = false,
watermark = ""
}
}

View File

@@ -0,0 +1,3 @@
return {
'norcalli/nvim-colorizer.lua'
}

View File

@@ -0,0 +1,5 @@
return {
'NStefan002/screenkey.nvim',
lazy = false,
version = "*",
}

View File

@@ -0,0 +1,6 @@
return {
'nvim-lualine/lualine.nvim',
dependencies = {
'nvim-tree/nvim-web-devicons',
}
}

View File

@@ -0,0 +1,4 @@
return {
'andweeb/presence.nvim',
lazy = false
}

View File

@@ -0,0 +1,3 @@
return {
'catppuccin/nvim'
}

View File

@@ -0,0 +1,3 @@
return {
'xiyaowong/transparent.nvim'
}

View File

@@ -0,0 +1,6 @@
return {
'chomosuke/typst-preview.nvim',
lazy = false, -- or ft = 'typst'
version = '1.*',
opts = {}, -- lazy.nvim will implicitly calls `setup {}`
}

BIN
nvim/nvim.txz Normal file

Binary file not shown.