Mercurial
view vim-setup/.vimrc @ 279:b3b547563ec7
Add Google connector service and agent wiki
Implement the C/Seobeo Google Drive and Gmail connector with encrypted OAuth storage, Zenbu authentication, browser testing, AI tool discovery, chunked HTTP decoding, and Bazel coverage. Consolidate repository guidance into progressive wiki documentation and enforce arena-first allocation for new first-party C code.
Co-authored-by: Copilot <[email protected]>
Copilot-Session: 84c338fd-0939-4bb3-b7f3-1062eb213e5d
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Mon, 17 Aug 2026 22:22:36 -0700 |
| parents | 790930d9bb90 |
| children |
line wrap: on
line source
" Line numbers set number set relativenumber " Turn off error set noerrorbells set novisualbell set t_vb= " Indentation set tabstop=2 set shiftwidth=2 set expandtab set autoindent " Syntax syntax on filetype plugin indent on set termguicolors let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum" let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum" colorscheme nightfly " Force turn on unless it is over 1M LOC autocmd BufReadPre * if getfsize(expand("%")) > 1000000 | syntax off | endif " Line wrapping set nowrap " Search settings set ignorecase set smartcase set hlsearch set incsearch " Cursor line set cursorline " Appearance set termguicolors set background=dark set signcolumn=yes " Backspace behavior set backspace=indent,eol,start " Clipboard set clipboard+=unnamedplus " Split window behavior set splitright set splitbelow set splitbelow " General Keymaps " Map semicolon to colon in normal mode nnoremap ; : " Yank into clipboard nnoremap <leader>y "+y vnoremap <leader>y "+y command! -bang -nargs=* RG \ call fzf#vim#grep( \ 'rg --column --line-number --no-heading --color=always --smart-case --hidden '.shellescape(<q-args>), \ 1, \ fzf#vim#with_preview(), \ <bang>0) " <leader>ff: Fuzzy file search nnoremap <leader>ff :Files<CR> " <leader>fb: Fuzzy search within buffer nnoremap <leader>fb :Buffers<CR> " <leader>ft: ctag search nnoremap <leader>ft :Tags<CR> " <leader>fs: Ripgrep search for word (normal mode) nnoremap <leader>fs :RG<CR> " <leader>fs: Open Ripgrep search prompt nnoremap <leader>fs :RG<CR> function! RipgrepCursor(query) call fzf#vim#grep( \ 'rg --column --line-number --no-heading --color=always --smart-case -- '.shellescape(a:query), \ 1, \ fzf#vim#with_preview(), \ 0) endfunction " <leader>gr: Search word under cursor (Normal) nnoremap <silent> <leader>gr :call RipgrepCursor(expand('<cword>'))<CR> " <leader>gr: Search selection (Visual) vnoremap <silent> <leader>gr y:call RipgrepCursor(@@)<CR> " ctag open in preview nnoremap <leader>gd <C-w>} " ctag open nnoremap <leader>gD <C-]> " No highlight nnoremap <leader>nh :noh<CR> " Search Files inoremap <C-f> <C-x> " Open man in vim noremap <c-k> :h <cword><cr> " vim wiki " Set the directory where your wiki pages will be stored let g:wiki_root = expand('~/wiki/') " Set wiki syntax and file extensions let g:wiki_filetypes = ['md', 'wiki'] " Enable global mappings (optional) let g:wiki_global_mappings = 1 " Enable links to markdown files let g:wiki_link_extension = '.md' " Turn on man vim mode runtime! ftplugin/man.vim " Keyword set keywordprg=:Man " FZF enbale vim set rtp+=/opt/homebrew/opt/fzf " For some reason it include ( or ) when I use it in here set iskeyword-=( iskeyword-=) " ============================================================================ " Markdown Clipboard Image Paste " ============================================================================ " Configuration: Set your API endpoint URL (leave empty to save locally) let g:clipboard_image_upload_url = '' " Optional: Custom curl options (e.g., for auth headers) " let g:clipboard_image_curl_opts = '-H "Authorization: Bearer YOUR_TOKEN"' let g:clipboard_image_curl_opts = '' function! PasteClipboardImage() if &filetype != 'markdown' echo "Clipboard image paste only works in markdown files" return endif if !executable('pngpaste') echo "Error: pngpaste not found. Install with: brew install pngpaste" return endif let l:tmpfile = tempname() . '.png' let l:result = system('pngpaste ' . shellescape(l:tmpfile) . ' 2>&1') if v:shell_error != 0 echo "No image in clipboard or pngpaste failed: " . l:result return endif if !filereadable(l:tmpfile) echo "Failed to save clipboard image" return endif if g:clipboard_image_upload_url == '' let l:dir = expand('%:p:h') let l:random = localtime() . '_' . rand() let l:filename = 'image_' . l:random . '.png' let l:filepath = l:dir . '/' . l:filename call rename(l:tmpfile, l:filepath) if !filereadable(l:filepath) echo "Failed to save image locally" call delete(l:tmpfile) return endif let l:url = l:filename echo "Image saved locally: " . l:filename else echo "Uploading image..." let l:curl_cmd = 'curl -s -X POST' let l:curl_cmd .= ' -H "Content-Type: image/png"' let l:curl_cmd .= ' --data-binary @' . shellescape(l:tmpfile) if g:clipboard_image_curl_opts != '' let l:curl_cmd .= ' ' . g:clipboard_image_curl_opts endif let l:curl_cmd .= ' ' . shellescape(g:clipboard_image_upload_url) let l:url = system(l:curl_cmd) call delete(l:tmpfile) if v:shell_error != 0 echo "Upload failed: " . l:url return endif let l:url = substitute(l:url, '^\s*\(.\{-}\)\s*$', '\1', '') echo "Image uploaded!" endif " Insert markdown image syntax at cursor execute "normal! a" . l:markdown_img . "\<Esc>" endfunction autocmd FileType markdown nnoremap <buffer> <leader>p :call PasteClipboardImage()<CR> " Setup LSP + completion (I will turn on and off depending on sitautions) " lua << EOF " vim.lsp.set_log_level('OFF') " " local cmp = require('cmp') " local luasnip = require('luasnip') " local lspconfig = require('lspconfig') " local util = require('lspconfig.util') " " -- ────────────────────────────── " -- nvim-cmp setup (unchanged) " -- ────────────────────────────── " cmp.setup({ " snippet = { " expand = function(args) luasnip.lsp_expand(args.body) end, " }, " mapping = cmp.mapping.preset.insert({ " ['<C-Space>'] = cmp.mapping.complete(), " ['<CR>'] = cmp.mapping.confirm({ select = true }), " ['<C-J>'] = cmp.mapping.select_next_item(), " ['<C-K>'] = cmp.mapping.select_prev_item(), " }), " sources = cmp.config.sources({ " { name = 'nvim_lsp', group_index = 1 }, " { name = 'luasnip', group_index = 1 }, " { name = 'buffer', group_index = 2 }, " }) " }) " " local capabilities = require('cmp_nvim_lsp').default_capabilities() " " -- ts_ls " lspconfig.ts_ls.setup({ " capabilities = capabilities, " root_dir = require('lspconfig.util').root_pattern('tsconfig.json'), " init_options = { " maxTsServerMemory = 8192, " preferences = { " includePackageJsonAutoImports = "auto", " }, " }, " filetypes = { "typescript", "typescriptreact", "javascript", "javascriptreact" }, " settings = { " typescript = { " inlayHints = { " includeInlayParameterNameHints = "all", " includeInlayParameterNameHintsWhenArgumentMatchesName = false, " includeInlayFunctionParameterTypeHints = true, " includeInlayVariableTypeHints = true, " includeInlayPropertyDeclarationTypeHints = true, " includeInlayFunctionLikeReturnTypeHints = true, " includeInlayEnumMemberValueHints = true, " }, " }, " }, " " -- Force tsserver to reload the tsconfig every time (fixes 95% of path alias issues) " on_attach = function(client, bufnr) " -- Optional: show when LSP attaches " print("ts_ls attached to " .. vim.fn.getcwd()) " end, " }) " " -- Python " lspconfig.basedpyright.setup({ " capabilities = capabilities, " on_attach = function(client, bufnr) " -- Optional: notify when Python LSP attaches " print("basedpyright attached to " .. vim.fn.getcwd()) " " -- Common LSP keymaps (you can put them once at the bottom instead if you prefer) " -- local bufopts = { noremap = true, silent = true, buffer = bufnr } " -- vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts) " -- vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts) " -- vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts) " -- vim.keymap.set('n', '<leader>rn', vim.lsp.buf.rename, bufopts) " -- vim.keymap.set('n', '<leader>ca', vim.lsp.buf.code_action, bufopts) " -- vim.keymap.set('n', '\\d', vim.diagnostic.open_float, bufopts) " -- vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, bufopts) " -- vim.keymap.set('n', ']d', vim.diagnostic.goto_next, bufopts) " end, " settings = { " basedpyright = { " analysis = { " autoSearchPaths = true, " useLibraryCodeForTypes = true, " diagnosticMode = "workspace", -- or "openFiles" if you have huge monorepos " typeCheckingMode = "standard", -- "strict" if you want maximum strictness " }, " }, " }, " root_dir = util.root_pattern( " "venv", -- This is what I mostly use " "pyproject.toml", -- belows are whatever they use I guess " "setup.py", " "setup.cfg", " "requirements.txt", " ".git" " ), " }) " " EOF " " " Optional key mappings for LSP " nnoremap <silent> gd <cmd>lua vim.lsp.buf.definition()<CR> " nnoremap <silent> K <cmd>lua vim.lsp.buf.hover()<CR> " nnoremap <silent> gr <cmd>lua vim.lsp.buf.references()<CR> " nnoremap <silent> \d <cmd>lua vim.diagnostic.open_float(nil, { border = "rounded" })<CR> " nnoremap <silent> [d <cmd>lua vim.diagnostic.goto_prev()<CR> " nnoremap <silent> ]d <cmd>lua vim.diagnostic.goto_next()<CR> " nnoremap <silent> \ca <cmd>lua vim.lsp.buf.code_action()<CR>