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 0000000..44df9ce Binary files /dev/null and b/nvim/nvim.txz differ