" Plugged setup {{{ let data_dir = has('nvim') ? stdpath('data') . '/site' : '~/.vim' if empty(glob(data_dir . '/autoload/plug.vim')) silent execute '!curl -fLo '.data_dir.'/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' autocmd VimEnter * PlugInstall --sync | source $MYVIMRC endif call plug#begin() " auto pairs Plug 'LunarWatcher/auto-pairs' " Lightline Plug 'itchyny/lightline.vim' " CSS-Color Plug 'ap/vim-css-color' "Surround Plug 'tpope/vim-surround' Plug 'tpope/vim-repeat' " For snippets Plug 'SirVer/ultisnips' " Vifm replacing netrw Plug 'vifm/vifm.vim' " Git nuff said Plug 'tpope/vim-fugitive' Plug 'airblade/vim-gitgutter' " Latex Plug 'lervag/vimtex' " Rust Plug 'rust-lang/rust.vim' let g:rustfmt_autosave = 1 if has("nvim") Plug 'simrat39/rust-tools.nvim' " Adds extra functionality over rust analyzer endif " Markdown Plug 'preservim/vim-markdown' " Table mode Plug 'dhruvasagar/vim-table-mode' " Color schemes Plug 'zoomiti/firewatch' Plug 'sonph/onehalf', { 'rtp': 'vim' } Plug 'sjl/badwolf' Plug 'lifepillar/vim-colortemplate' Plug 'cocopon/inspecthi.vim' if has("nvim") " LSP Plug 'neovim/nvim-lspconfig' Plug 'hrsh7th/nvim-cmp' " For LSP completion Plug 'hrsh7th/cmp-nvim-lsp' Plug 'hrsh7th/cmp-path' Plug 'hrsh7th/cmp-buffer' Plug 'hrsh7th/cmp-nvim-lua' Plug 'f3fora/cmp-spell' " Plug 'hrsh7th/cmp-copilot' Plug 'onsails/lspkind.nvim' Plug 'quangnguyen30192/cmp-nvim-ultisnips' " Diagnostics Plug 'folke/trouble.nvim' " Telescope Plug 'nvim-telescope/telescope.nvim' Plug 'nvim-telescope/telescope-fzf-native.nvim', { 'do': 'make' } Plug 'nvim-telescope/telescope-ui-select.nvim' Plug 'nvim-neorg/neorg-telescope' Plug 'kyazdani42/nvim-web-devicons' " Debugging Plug 'mfussenegger/nvim-dap' " Lean requires nvim " Plug 'Julian/lean.nvim' Plug 'nvim-lua/plenary.nvim' Plug 'andrewradev/switch.vim' " For Lean switch support Plug 'norcalli/nvim-colorizer.lua' " For colorizing " Tree sitter Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} Plug 'lewis6991/spellsitter.nvim' Plug 'nvim-treesitter/playground' " Neorg Plug 'nvim-neorg/neorg' " Copilot " Plug 'github/copilot.vim' endif call plug#end() " }}} " Vim Config {{{ set encoding=utf-8 set completeopt=menu,menuone,noselect,noinsert syntax on " Uncomment the following to have Vim jump to the last position when " reopening a file au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif " Uncomment the following to have Vim load indentation rules and plugins " according to the detected filetype. filetype plugin indent on " show existing tab with 4 spaces width" set tabstop=4 " when indenting with '>', use 4 spaces width" set shiftwidth=4 " On pressing tab, insert 4 spaces" "set expandtab " The following are commented out as they cause vim to behave a lot " differently from regular Vi. They are highly recommended though. "set showcmd " Show (partial) command in status line. set showmatch " Show matching brackets. "set ignorecase " Do case insensitive matching set smartcase " Do smart case matching set incsearch " Incremental search set autowrite " Automatically save before commands like :next and :make set hidden " Hide buffers when they are abandoned set mouse=a " Enable mouse usage (all modes) set mousemodel=popup set number " Enable line numbers set relativenumber " Enable relative line numbers set title " Changes terminal title when started set scrolloff=15 " Vim remaps {{{ nnoremap let mapleader=" " let maplocalleader=" " nnoremap :nohl if has('nvim') nnoremap b Telescope buffers nnoremap lua require("telescope.builtin").current_buffer_fuzzy_find(require('telescope.themes').get_ivy()) nnoremap f Telescope find_files else nnoremap b ls:b nnoremap s ls:sb endif noremap ; l noremap l k noremap k j noremap j h noremap h ; nnoremap [q :cprev nnoremap ]q :cnext noremap j h noremap k j noremap l k noremap ; l " Terminal Settings if has("nvim") " Enter terminal-mode automatically " autocmd TermOpen * startinsert autocmd BufEnter term://* startinsert " Disable line numbers on terminals autocmd TermOpen * :setlocal nonumber norelativenumber " allows you to use Ctrl-c on terminal window autocmd TermOpen * nnoremap i " Allows for esc to leave insert mode tnoremap " Allows for window navigation tnoremap tnoremap tnoremap j h tnoremap k j tnoremap l k tnoremap ; l tnoremap tnoremap tnoremap tnoremap endif " }}} " }}} " Colors {{{ if has('termguicolors') if &term =~ 'alacritty' set t_8f=[38;2;%lu;%lu;%lum set t_8b=[48;2;%lu;%lu;%lum endif set termguicolors endif let g:dark_transp_bg = 1 " Deprecated becase of last line " if has('nvim') " au ColorScheme * hi Normal ctermbg=none guibg=none|hi LineNr guibg=none ctermbg=none|hi Folded guibg=none ctermbg=none|hi NonText guibg=none ctermbg=none|hi SpecialKey guibg=none ctermbg=none|hi VertSplit guibg=none ctermbg=none|hi SignColumn guibg=none ctermbg=none|hi EndOfBuffer guibg=none ctermbg=none " endif colorscheme fire " }}} " LightLine config {{{ set noshowmode let g:lightline = { \ 'enable': { \ 'statusline': 1, \ 'tabline': 1, \ }, \ 'colorscheme': 'fire', \ 'active' : { \ 'left' : [ [ 'mode', 'paste' ], \ [ 'readonly', 'branch', 'filename', 'modified' ]] \ }, \ 'component_function': { \ 'branch': 'LightlineBranch', \ 'filename': 'LightlineFilename', \ 'readonly': 'LightlineReadonly', \ }, \ } function! LightlineFilename() return &filetype ==# 'fugitive' ? fugitive#statusline() : \ &filetype ==# 'qf' ? 'QuickFix' : \ &filetype ==# 'Trouble' ? 'Trouble' : \ expand('%:t') !=# '' ? expand('%:t') : '[No Name]' endfunction function! LightlineReadonly() return &readonly && &filetype !~# '\v(help|fugitive|Trouble)' ? 'RO' : '' endfunction function! LightlineBranch() return &filetype !~# '\v(help|fugitive|qf|Trouble)' ? FugitiveHead() : '' endfunction " }}} " Conceal options {{{ hi clear Conceal set conceallevel=2 set concealcursor=n augroup filetype_vim autocmd! autocmd FileType vim setlocal foldmethod=marker augroup END " }}} " UltiSnips Config {{{ let g:UltiSnipsExpandTrigger="" let g:UltiSnipsJumpForwardTrigger="" let g:UltiSnipsJumpBackwardTrigger="" " }}} " Fugitive Config {{{ nnoremap gs :G nnoremap gp :G pull nnoremap gP :G push set updatetime=100 " }}} " VIFM {{{ let g:loaded_netrw = 1 let g:loaded_netrwPlugin = 1 let g:vifm_replace_netrw = 1 let g:vifm_embed_split = 1 let g:vifm_exec = "vifmrun" nnoremap gx :!xdg-open =shellescape(expand('')) command! Vex vertical VsplitVifm command! Sex SplitVifm command! Ex Vifm " }}} " Markdown config {{{ let g:vim_markdown_frontmatter = 1 let g:vim_markdown_folding_disabled = 1 " }}} " Auto-Pairs config {{{ let g:AutoPairsMapBS = 1 " }}} " Autocompile dwmblocks {{{ if has("nvim") autocmd BufWritePost ~/desktop/dwmblocks/blocks.h :term cd ~/desktop/dwmblocks/; sudo make install && { killall -q dwmblocks;setsid -f dwmblocks > /dev/null 2> /dev/null ; } else autocmd BufWritePost ~/desktop/dwmblocks/blocks.h !cd ~/desktop/dwmblocks/; sudo make install && { killall -q dwmblocks;setsid dwmblocks > /dev/null 2> /dev/null & } endif " }}} " Make " set makeprg=make\ --silent\ 2>&1\ \\\|\ grep\ -E\ \"^([^:\\S]+):\\S+:.+\" " Source a global configuration file if available if filereadable("/etc/vim/vimrc.local") source /etc/vim/vimrc.local endif " Lua Setup {{{ if has("nvim") lua << EOF require('telescope').setup{} require('telescope').load_extension('fzf') -- Setup treesitter require'nvim-treesitter.configs'.setup { --{{{ -- A list of parser names, or "all" ensure_installed = { "c", "lua", "rust", "vim" }, -- Install parsers synchronously (only applied to `ensure_installed`) sync_install = false, -- Automatically install missing parsers when entering buffer auto_install = true, -- List of parsers to ignore installing (for "all") ignore_install = { "javascript" }, highlight = { -- `false` will disable the whole extension enable = true, -- NOTE: these are the names of the parsers and not the filetype. (for example if you want to -- disable highlighting for the `tex` filetype, you need to include `latex` in this list as this is -- the name of the parser) -- list of language that will be disabled disable = { 'latex', 'markdown' }, -- Setting this to true will run `:h syntax` and tree-sitter at the same time. -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). -- Using this option may slow down your editor, and you may see some duplicate highlights. -- Instead of true it can also be a list of languages additional_vim_regex_highlighting = false, }, incremental_selection = { enable = true, keymaps = { init_selction = "gnn", node_incremental = "grn", scope_incremental = "grc", node_decremental = "grm", } }, indent = { enable = true, }, playground = { enable = true, }, } --}}} require('spellsitter').setup() require'colorizer'.setup() -- Setup nvim-cmp. local cmp = require'cmp' local lspkind = require'lspkind' local cmp_ultisnips_mappings = require'cmp_nvim_ultisnips.mappings' cmp.setup({ snippet = { expand = function(args) vim.fn["UltiSnips#Anon"](args.body) end, }, mapping = { [''] = cmp.mapping.scroll_docs(-4), [''] = cmp.mapping.scroll_docs(4), [''] = cmp.mapping.complete(), [''] = cmp.mapping.close(), [''] = cmp.mapping.confirm({ select = true }), [''] = cmp.mapping(function(fallback) if cmp.visible() then cmp.select_next_item() else cmp_ultisnips_mappings.expand_or_jump_forwards(fallback) end end, { 'i', 's' }), [''] = cmp.mapping(function(fallback) if cmp.visible() then cmp.select_prev_item() else cmp_ultisnips_mappings.jump_backwards(fallback) end end, { 'i', 's' }), }, sources = cmp.config.sources({ { name = 'copilot' }, { name = 'nvim_lsp' }, { name = 'neorg' }, { name = 'nvim_lua' }, { name = 'ultisnips' }, { name = 'spell', option = { enable_in_context = function() return true --require('cmp.config.context').in_treesitter_capture('spell') end, }, keyword_length = 3, }, { name = 'path' }, }, { { name = 'buffer', keyword_length = 5}, }), formatting = { format = lspkind.cmp_format { with_text = true, menu = { buffer = "[buf]", nvim_lsp = "[LSP]", nvim_lua = "[api]", path = "[path]", ultisnips = "[snip]", spell = "[spell]", --copilot = "[cop]", }, }, }, }) -- Setup lspconfig. local capabilities = require('cmp_nvim_lsp').default_capabilities() local function on_attach(client, bufnr) local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end buf_set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', {noremap = true}) -- buf_set_keymap('n', 'gt', 'lua vim.lsp.buf.type_definition()', {noremap = true}) buf_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', {noremap = true}) buf_set_keymap('n', 'r', 'lua vim.lsp.buf.rename()', {noremap = true}) buf_set_keymap('n', 'd', 'Trouble workspace_diagnostics', {noremap = true}) buf_set_keymap('n', ']d', 'lua vim.diagnostic.goto_next()', {noremap = true}) buf_set_keymap('n', '[d', 'lua vim.diagnostic.goto_prev()', {noremap = true}) buf_set_keymap('n', '', 'lua vim.lsp.buf.code_action()', {noremap = true}) buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', {noremap = true}) buf_set_keymap('n', '', 'lua vim.lsp.buf.hover()', {noremap = true}) buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') end require('lspconfig')['ccls'].setup({ capabilities = capabilities, on_attach = on_attach }) require('lspconfig')['pyright'].setup({ capabilities = capabilities, on_attach = on_attach }) require('lspconfig')['texlab'].setup({ capabilities = capabilities, on_attach = on_attach }) require('rust-tools').setup({ server = {capabilities = capabilities, on_attach = function(client, bufnr) on_attach(client, bufnr); local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end buf_set_keymap('n', 'c', 'lua require\'rust-tools\'.open_cargo_toml.open_cargo_toml()', {noremap = true}) end } }) --[[ require('lean').setup{ --{{{ -- Enable the Lean language server(s)? -- -- false to disable, otherwise should be a table of options to pass to -- `leanls` and/or `lean3ls`. -- -- See https://github.com/neovim/nvim-lspconfig/blob/master/CONFIG.md#leanls for details. -- Lean 4 lsp = { on_attach = on_attach }, -- Lean 3 lsp3 = { on_attach = on_attach }, -- What filetype should be associated with standalone Lean files? -- Can be set to "lean3" if you prefer that default. -- Having a leanpkg.toml or lean-toolchain file should always mean -- autodetection works correctly. ft = { default = "lean3" }, -- Abbreviation support abbreviations = { -- Set one of the following to true to enable abbreviations builtin = true, -- built-in expander compe = false, -- nvim-compe source snippets = false, -- snippets.nvim source -- additional abbreviations: extra = { -- Add a \wknight abbreviation to insert ♘ -- -- Note that the backslash is implied, and that you of -- course may also use a snippet engine directly to do -- this if so desired. wknight = '♘', }, -- Change if you don't like the backslash -- (comma is a popular choice on French keyboards) leader = '\\', }, -- Enable suggested mappings? -- -- false by default, true to enable mappings = true, -- Infoview support infoview = { -- Automatically open an infoview on entering a Lean buffer? autoopen = true, -- Set the infoview windows' widths width = 30, }, -- Progress bar support progress_bars = { -- Enable the progress bars? enable = true, -- Use a different priority for the signs priority = 10, }, } -- }}} --]] require("trouble").setup { -- your configuration comes here -- or leave it empty to use the default settings -- refer to the configuration section below } require('neorg').setup { load = { ["core.defaults"] = {}, ["core.norg.completion"] = { config = { -- Note that this table is optional and doesn't need to be provided engine = 'nvim-cmp', } }, ["core.integrations.nvim-cmp"] = { config = { -- Note that this table is optional and doesn't need to be provided -- Configuration here } }, ["core.norg.concealer"] = { config = { -- Note that this table is optional and doesn't need to be provided -- Configuration here } }, ["core.norg.dirman"] = { config = { workspaces = { example_gtd = "~/GitHub/example_workspaces/gtd", neorg = "~/neorg", }, default_workspace = "neorg", }, }, ["core.gtd.base"] = { config = { workspace = "neorg", }, }, ["core.integrations.telescope"] = {}, -- Enable the telescope module } } EOF endif " }}}