let g:mapleader = '\' let g:vsnip_snippet_dir = '~/.config/nvim/snippets' " fuck zig niggers let g:polyglot_disabled = ['autoindent'] lua <'] = cmp.mapping.scroll_docs(-4), -- [''] = cmp.mapping.scroll_docs(4), [''] = cmp.mapping.abort(), [''] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. }), sources = cmp.config.sources({ { name = 'nvim_lsp' }, { name = 'vsnip' }, -- { name = 'man' } }, { { name = 'buffer' } }) }) cmp.setup.filetype('gitcommit', { sources = cmp.config.sources({ { name = 'git' }, -- You can specify the `git` source if [you were installed it](https://github.com/petertriho/cmp-git). }, { { name = 'buffer' }, }) }) -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). cmp.setup.cmdline({ '/', '?' }, { mapping = cmp.mapping.preset.cmdline(), sources = { { name = 'buffer' } } }) -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). cmp.setup.cmdline(':', { mapping = cmp.mapping.preset.cmdline(), sources = cmp.config.sources({ { name = 'path' }, { name = 'man' }, }, { { name = 'cmdline' } } ) }) cmp.register_source('man', { complete = function(self, request, callback) local input = string.match(request.context.cursor_before_line, "Man%s+(.*)$") if not input then return end local result = {} local handle = io.popen("man -k . | cut -d ' ' -f 1,2 | sed 's/ (/(/'") if handle then for line in handle:lines() do if vim.startswith(line:lower(), input:lower()) then table.insert(result, { label = line, kind = cmp.lsp.CompletionItemKind.File, }) end end handle:close() end callback({ items = result, isIncomplete = false }) end }) require("wpm").setup({ sample_count = 8, sample_interval = 750, percentile = 1 }) local capabilities = require('cmp_nvim_lsp').default_capabilities() capabilities.offsetEncoding = "utf-16" require('lspconfig')['clangd'].setup { capabilities = capabilities } require('lspconfig')['ts_ls'].setup { capabilities = capabilities, settings = { eslint = { rules = { eqeqeq = "off" } } } } require('lspconfig')['zls'].setup { capabilities = capabilities } require('lspconfig')['intelephense'].setup { capabilities = capabilities } require('lspconfig')['jdtls'].setup { capabilities = capabilities } require('lspconfig')['vala_ls'].setup { capabilities = capabilities } require('lspconfig')['arduino_language_server'].setup { capabilities = capabilities } vim.diagnostic.config({ signs = false }) require('whitespace-nvim').setup({ highlight = 'Underlined', ignored_filetypes = { 'TelescopePrompt', 'Trouble', 'help', 'dashboard' }, -- `ignore_terminal` configures whether to ignore terminal buffers ignore_terminal = true, }) require'nvim-treesitter.configs'.setup { ensure_installed = { "c", "cpp", "javascript", "html", "lua", "vim", "vimdoc", "java", "sql", "query", "markdown", "markdown_inline" }, sync_install = false, textobjects = { enable = true }, injections = { enable = true, }, auto_install = true, -- parser_install_dir = "/some/path/to/store/parsers", -- Remember to run vim.opt.runtimepath:append("/some/path/to/store/parsers")! highlight = { enable = true, disable = function(lang, buf) local max_filesize = 100 * 1024 -- 100 KB local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf)) if ok and stats and stats.size > max_filesize then return true end end, additional_vim_regex_highlighting = false, }, query_linter = { enable = true, lint_events = {"BufWrite", "CursorHold"}, }, } require('img-clip').setup( { -- recommended settings default = { embed_image_as_base64 = false, prompt_for_file_name = false, drag_and_drop = { insert_mode = true, }, }, } ) require('render-markdown').setup { file_types = { "markdown", "Avante" }, enable = true, } require('avante_lib').load() require('avante').setup({ mappings = { --- @class AvanteConflictMappings diff = { ours = "co", theirs = "ct", all_theirs = "ca", both = "cb", cursor = "cc", next = "]x", prev = "[x", }, suggestion = { accept = "", next = "", prev = "", dismiss = "", }, jump = { next = "]]", prev = "[[", }, submit = { normal = "", insert = "", }, }, provider = "openai_mini", providers = { ---@type AvanteProvider openai_mini = { __inherited_from = "openai", model = "gpt-4o-mini", timeout = 30, max_tokens = 10000, }, ---@type AvanteProvider ollama = { api_key_name = '', endpoint = "127.0.0.1:11434/v1", -- model = 'qwen2.5:7b-instruct-q4_K_M', model = 'qwen2.5-coder:7b-instruct-q5_K_M', -- model = 'yi-coder:9b-chat-q4_0', -- model = "codestral", -- model = "codestral:22b-v0.1-q6_K", -- model = "mistral-nemo:12b-instruct-2407-q8_0", -- model = "mistral-nemo:12b-instruct-2407-q4_K_S", -- model = "deepseek-coder-v2:16b-lite-instruct-q5_K_M", -- model = "llama3.1:8b-instruct-q5_K_M", -- model = "starcoder2:15b-instruct-v0.1-q3_K_S", -- model = "gemma2:27b-instruct-q5_K_M", -- model = "mixtral:8x7b-instruct-v0.1-q3_K_L", parse_curl_args = function(opts, code_opts) return { url = opts.endpoint .. "/chat/completions", headers = { ["Accept"] = "application/json", ["Content-Type"] = "application/json", }, body = { model = opts.model, messages = require("avante.providers").openai.parse_messages(code_opts), -- you can make your own message, but this is very advanced max_tokens = 20000, stream = true, }, } end, parse_response_data = function(data_stream, event_state, opts) require("avante.providers").openai.parse_response(data_stream, event_state, opts) end, }, }, }) EOF set autoindent expandtab tabstop=2 shiftwidth=2 number set mouse=a set mousemodel=popup set noshowmode set termguicolors set title set foldnestmax=1 set foldlevel=10000 set foldmethod=indent set smartcase set showtabline=2 set nocompatible set guicursor+=i:-blinkwait175-blinkoff150-blinkon175 set signcolumn=number filetype plugin on let g:vimspector_enable_mappings = 'HUMAN' let g:vimspector_enable_debug_logging = 0 let g:lightline = { \ 'colorscheme': 'landscape', \ 'active': { \ 'left': [ [ 'mode', 'paste' ], \ [ 'readonly', 'filename', 'modified' ] ], \ 'right': [ [ 'lineinfo' ], \ [ 'percent' ], \ [ 'fmtcustom', 'tabbycustom', 'enccustom', 'ftcustom', 'wpm' ] ] \ }, \ 'tabline': { \ 'left': [ ['buffers'] ], \ 'right': [ ['close'], ['tabscustom'] ] \ }, \ 'component_expand': { \ 'buffers': 'lightline#bufferline#buffers' \ }, \ 'component_type': { \ 'buffers': 'tabsel' \ }, \ 'component_function': { \ 'tabline_tabs': 'TablineTabs', \ 'wpm': 'WPM', \ 'ftcustom': 'CustomFT', \ 'enccustom': 'CustomEncode', \ 'fmtcustom': 'CustomFileFormat', \ 'tabscustom': 'CustomTabs', \ 'tabbycustom': 'TabbyStatus' \ } \ } if exists('g:loaded_relative_sign_numbers') finish endif let g:loaded_relative_sign_numbers = 1 let s:signs = {} function! s:UpdateSignColumn() execute 'sign unplace * group=RelativeLineNumbers' let disallowed_langs = [] if index(disallowed_langs, &filetype) >= 0 return endif let l:cur_line = line('.') let l:last_line = line('$') if !has_key(s:signs, 0) execute 'sign define RelNum0 text=0 texthl=LineNr' let s:signs[0] = 1 endif let l:start = 1 if l:cur_line > 10 let l:start = l:cur_line - 10 endif let l:end = l:cur_line + 10 if l:end > l:last_line let l:end = l:last_line endif for l:lnum in range(l:start, l:end) if l:lnum != l:cur_line let l:distance = abs(l:cur_line - l:lnum) if l:distance > 0 && l:distance <= 9 if !has_key(s:signs, l:distance) execute 'sign define RelNum' . l:distance . ' text=' . l:distance . ' texthl=LineNr' let s:signs[l:distance] = 1 endif execute 'sign place ' . l:lnum . ' line=' . l:lnum . \' name=RelNum' . l:distance . \' group=RelativeLineNumbers buffer=' . bufnr('') endif endif endfor endfunction augroup RelativeSignNumbers autocmd! autocmd BufEnter,WinEnter,CursorMoved,CursorMovedI * call s:UpdateSignColumn() augroup END command! EnableRelativeSignNumbers call s:UpdateSignColumn() command! DisableRelativeSignNumbers execute 'sign unplace * group=RelativeLineNumbers' let g:lightline.component_raw = {'buffers': 1} let g:lightline#bufferline#clickable = 1 let g:lightline#bufferline#show_number = 2 let g:zig_fmt_autosave=0 let g:ale_javascript_eslint_options = '--config /home/aurelia/.eslintrc.json' function! CustomTabs() if tabpagenr('$') == 1 return '' endif let current_tab = tabpagenr() let tab_list = [] for i in range(1, tabpagenr('$')) if i == current_tab call add(tab_list, '[' . i . ']') else call add(tab_list, i) endif endfor return join(tab_list, ' | ') endfunction function CustomFileFormat() if &filetype != 'Avante' && &filetype != 'AvanteInput' return &fileformat endif return '' endfunction function CustomEncode() if &filetype != 'Avante' && &filetype != 'AvanteInput' return &fileencoding endif return '' endfunction function CustomFT() if &filetype != 'Avante' && &filetype != 'AvanteInput' return &filetype endif return '' endfunction function WPM() if &filetype != 'Avante' && &filetype != 'AvanteInput' return (luaeval("require('wpm').historic_graph()") . ' ' . luaeval("require('wpm').wpm()")) . 'wpm' endif return '' endfunction function TabbyStatus() if !exists("g:tabby_inline_completion_trigger") let g:tabby_inline_completion_trigger = 'auto' endif if g:tabby_inline_completion_trigger == 'auto' return '' endif if g:tabby_inline_completion_trigger == 'manual' return 'ai: manual' endif return 'ai: off' endfunction function ToggleTabby() if !exists("g:tabby_inline_completion_trigger") let g:tabby_inline_completion_trigger = 'auto' endif if g:tabby_inline_completion_trigger == 'auto' let g:tabby_inline_completion_trigger = 'manual' elseif g:tabby_inline_completion_trigger == 'off' let g:tabby_inline_completion_trigger = 'auto' else let g:tabby_inline_completion_trigger = 'off' endif endfunction function! TablineTabs() return lightline#tabline() endfunction let g:tabby_keybinding_accept = '' autocmd Filetype json,jsonc let g:indentLine_setConceal = 0 autocmd Filetype javascriptreact,typescriptreact TSEnable indent autocmd Filetype * call tabby#inline_completion#keybindings#Setup() function! SWB() execute('call lightline#bufferline#go_previous()') endfunction function! SW() execute('call lightline#bufferline#go_next()') endfunction function! Q() let float_visible = 0 let winid = 0 for win in range(1, winnr('$')) let config = nvim_win_get_config(win_getid(win)) if has_key(config, 'relative') && config.relative != '' let float_visible = 1 let winid = win_getid(win) break endif endfor if float_visible call nvim_win_close(winid, v:true) return endif if exists("t:NERDTreeBufName") && bufwinnr(t:NERDTreeBufName) != -1 NERDTreeClose else call feedkeys(":nohlsearch\") if len(filter(range(1, bufnr('$')), 'buflisted(v:val)')) > 1 call feedkeys(':bd') else call feedkeys(':q') endif endif endfunction function! GoToTab(tab_number) execute 'call lightline#bufferline#go(' . a:tab_number . ')' endfunction function! InputTabNumber() let l:tab_number = nr2char(getchar()) if l:tab_number =~ '\d' call GoToTab(str2nr(l:tab_number)) endif endfunction function! TurnOffDiag() let disallowed_langs = ['c', 'cpp', 'javascript', 'typescript', 'typescriptreact', 'javascriptreact'] if index(disallowed_langs, &filetype) >= 0 ALEDisable endif endfunction function! AddSpacesToParentheses() range let saved_search = @/ let pattern = '\v(\w+\()(\S.{-})(\))' execute a:firstline . ',' . a:lastline . 's/' . pattern . '/\1 \2 \3/ge' execute a:firstline . ',' . a:lastline . 's/( )/( )/ge' execute a:firstline . ',' . a:lastline . 's/(\s\+/( /ge' execute a:firstline . ',' . a:lastline . 's/\s\+)/ )/ge' let @/ = saved_search endfunction function! OpenLsp() let float_visible = 0 for win in range(1, winnr('$')) let config = nvim_win_get_config(win_getid(win)) if has_key(config, 'relative') && config.relative != '' let float_visible = 1 break endif endfor if float_visible call Q() endif call feedkeys('K') endfunction function! OpenFloat() let float_visible = 0 let g:float_winid = 0 for win in range(1, winnr('$')) let config = nvim_win_get_config(win_getid(win)) if has_key(config, 'relative') && config.relative != '' let float_visible = 1 let g:float_winid = win_getid(win) break endif endfor lua <') let parts = split(file_line, '#L') if len(parts) > 1 execute 'e +' . parts[1] . ' ' . parts[0] | sleep 200m set number execute('call lightline#bufferline#go_next()') else normal! gf endif endfunction nnoremap c "+yy vnoremap c "+y nnoremap p "+gP vnoremap p "+P nnoremap f :lua vim.lsp.buf.code_action() vnoremap f :lua vim.lsp.buf.code_action() nnoremap rs :lua vim.lsp.buf.rename() vnoremap rs :lua vim.lsp.buf.rename() nnoremap gf :call GFLine() vnoremap ap :call AddSpacesToParentheses() autocmd BufReadPost,BufNew * call TurnOffDiag() nnoremap :noh nnoremap :NERDTreeMirror:NERDTreeFocus inoremap :NERDTreeMirror:NERDTreeFocus vnoremap :NERDTreeMirror:NERDTreeFocus nnoremap :call Q() tnoremap nnoremap :call SWB() nnoremap :call SW() nnoremap w nnoremap nnoremap b vnoremap w vnoremap vnoremap b noremap :tabn noremap :tabp nnoremap :call InputTabNumber() inoremap :call InputTabNumber() vnoremap :call InputTabNumber() nnoremap :Telescope live_grep nnoremap :Telescope current_buffer_fuzzy_find nnoremap :Telescope marks nnoremap :lua ToggleDiagnostics() nnoremap :VimspectorReset nnoremap :VimspectorToggle nnoremap b :VimspectorBreakpoints nnoremap d :VimspectorDisassemble nnoremap [ VimspectorUpFrame nnoremap ] VimspectorDownFrame nnoremap VimspectorBalloonEval inoremap vnoremap >gv vnoremap lightline#bufferline#move_previous() nnoremap lightline#bufferline#move_next() nnoremap t :call OpenFloat() nnoremap T :call OpenLsp() nnoremap gd nnoremap gd :Telescope diagnostics nnoremap gr :Telescope lsp_references nnoremap [[ ?{:nohl nnoremap ]] /}:nohl nnoremap ][ /{:nohl nnoremap [] ?}:nohl vnoremap [[ ?{:nohlgv vnoremap ]] /}:nohlgv vnoremap ][ /{:nohlgv vnoremap [] ?}:nohlgv nnoremap nnoremap ta :call ToggleTabby() xnoremap ip :silent! normal! T,vt, onoremap ip :silent! normal! T,vt, nnoremap nnoremap vnoremap vnoremap inoremap i inoremap i colorscheme base16-synth-midnight-dark hi LineNr guibg=#000000 hi String ctermfg=1 guifg=#ea5971 hi Character ctermfg=1 guifg=#dddddd hi CmpItemKindDefault guifg=#7cede9 guibg=#101010 hi javaScriptIdentifier guifg=#ff40ff ctermfg=Magenta hi Delimiter ctermfg=14 guifg=#cccccc hi AvanteConflictCurrent guibg=#101010 hi AvanteConflictIncoming guibg=#102010 hi PmenuSel guibg=#ffffff guifg=#202020 hi Variable guifg=#40FF40 ctermfg=Green hi @variable guifg=#40FF40 ctermfg=Green hi Identifier guifg=#27ea91 hi def link @lsp.typemod.variable.defaultLibrary.javascriptreact Special hi def link @lsp.typemod.variable.defaultLibrary.typescriptreact Special hi def link @lsp.typemod.variable.defaultLibrary.javascript Special hi def link @lsp.typemod.variable.defaultLibrary.typescript Special hi def link @punctuation.special.javascript Delimiter hi def link @lsp.type.keywordLiteral.zig Special hi def link @lsp.type.string.zig NONE hi def link @type.builtin.arduino Keyword hi def link markdownId markdownIdDeclaration hi def link markdownH1 RenderMarkdownH1 hi def link markdownH2 RenderMarkdownH2 hi def link markdownHeadingRule RenderMarkdownTableHead hi def link markdownRule markdownH1 hi def link markdownIdDeclaration markdownCode hi def link markdownLineStart markdownCode hi @type.builtin.cpp guifg=#ea5ce2 hi SpecialChar ctermfg=9 guifg=#e4600e hi SignColumn guibg=#000000 let g:vim_json_conceal=0 let g:markdown_syntax_conceal=0 let g:indentLine_color_term=239 let g:indentLine_color_gui='#141414' let NERDTreeQuitOnOpen=1 let NERDTreeWinSize=36 let NERDTreeMinimalUI=1 autocmd BufNewFile,BufRead *.zig set shiftwidth=2 autocmd BufNewFile,BufRead *.modelfile set ft=gotmpl autocmd BufNewFile,BufRead *.vsh set ft=glsl aunmenu PopUp.Inspect aunmenu PopUp.-1- aunmenu PopUp.How-to\ disable\ mouse anoremenu PopUp.Inspect Inspect augroup highlight_yank autocmd! au TextYankPost * silent! lua vim.highlight.on_yank { higroup='TelescopeSelection', timeout=200 } augroup END