view vim-setup/.vimrc @ 71:75de5903355c

Giagantic changes that update Dowa library to be more align with stb style array and hashmap. Updated Seobeo to be caching on server side instead of file level caching. Deleted bunch of things I don't really use.
author June Park <parkjune1995@gmail.com>
date Sun, 28 Dec 2025 20:34:22 -0800
parents 983769fba767
children 76cd7afa6b8e
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

" FZF
" Add fzf to runtimepath
set rtp += ~/.fzf
" <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: Ripgrep search for selected text (visual mode)
vnoremap <leader>fs :<C-u>execute 'Rg ' . getreg('"')<CR>

" 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

" 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>