changeset 43:5e6a5d3c6868

[Personal] Moving my vim-set up config here.
author MrJuneJune <me@mrjunejune.com>
date Mon, 01 Dec 2025 22:43:40 -0800
parents c2706ffb442b
children 0cfd7d9277b0
files react_games/src/Connectfour/latest.tsx vim-setup/.tmux.conf vim-setup/.vimrc vim-setup/README.md vim-setup/start.sh
diffstat 5 files changed, 299 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/react_games/src/Connectfour/latest.tsx	Mon Dec 01 21:00:10 2025 -0800
+++ b/react_games/src/Connectfour/latest.tsx	Mon Dec 01 22:43:40 2025 -0800
@@ -1,5 +1,4 @@
 import { CSSProperties, memo, useCallback, useReducer } from "react";
-import ReactDOM from "react-dom/client";
 
 /**
  * Connect4 game is also known as Four Up, Plot Four, Find Four, Captain’s Mistress, Four in a Row, Drop Four, and Gravitrips in the Soviet Union.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vim-setup/.tmux.conf	Mon Dec 01 22:43:40 2025 -0800
@@ -0,0 +1,20 @@
+set -g history-limit 500000
+set -g default-terminal "tmux-256color"
+set -s escape-time 0
+
+setw -g mode-keys vi
+set -g mouse on
+
+bind | split-window -h 
+bind - split-window -v 
+
+# bind-key -T copy-mode-vi v send-keys -X begin-selection
+# bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "pbcopy" 
+# # if using xclip
+# bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xclip -in -selection clipboard"
+# # bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "wl-copy"
+
+bind h select-pane -L
+bind j select-pane -D
+bind k select-pane -U
+bind l select-pane -R
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vim-setup/.vimrc	Mon Dec 01 22:43:40 2025 -0800
@@ -0,0 +1,208 @@
+" 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
+
+" <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>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vim-setup/README.md	Mon Dec 01 22:43:40 2025 -0800
@@ -0,0 +1,15 @@
+# My vim setup
+
+Simple vim setup I use for my work flow.
+
+## How to install and start 
+
+```
+./start.sh
+```
+
+## Reasoning
+
+I started out using VSCode when I started coding around 2015? I think it was using around 2GB of RAM or something crazy like that. Anyway, I experimented with different set ups since using vim with plugins, neovims, and etcs
+
+I realized that IDE is not needed and I just want to write a text into a file to code so updating my vimrc with simple shell script to add two plugins I use; fzf and wiki. 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vim-setup/start.sh	Mon Dec 01 22:43:40 2025 -0800
@@ -0,0 +1,56 @@
+#!/bin/bash
+
+set -e
+
+# Not using plugin management since it is cancer
+PLUG_DIR="$HOME/.vim/pack/plugins/start"
+THEME_DIR="$HOME/.vim/pack/themes/start"
+NEOVIM_DIR="$HOME/.config/nvim/pack" 
+
+mkdir -p "$NEOVIM_DIR"
+mkdir -p "$PLUG_DIR"
+mkdir -p "$THEME_DIR"
+
+echo "---Installing system dependencies---"
+if [[ "$(uname)" == "Darwin" ]]; then
+  echo "Assuming OS is mac"
+  brew install ripgrep vim git curl neovim
+else
+  echo "Assuming OS is linux"
+  sudo apt update
+  sudo apt install -y ripgrep vim git curl neovim
+fi
+
+echo "---Installing fzf binary---"
+if [ ! -d "$HOME/.fzf" ]; then
+  git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
+  ~/.fzf/install --no-key-bindings --no-completion --no-update-rc
+else
+  echo "fzf already installed"
+fi
+
+echo "---Installing fzf.vim---"
+git clone --depth 1 https://github.com/junegunn/fzf.vim.git "$PLUG_DIR/fzf.vim"
+
+echo "Linking fzf Vim plugin files..."
+ln -sf ~/.fzf/plugin "$PLUG_DIR/fzf"
+ln -sf ~/.fzf/autoload "$PLUG_DIR/fzf"
+
+echo "---Installing wiki.vim---"
+git clone --depth 1 https://github.com/lervag/wiki.vim.git "$PLUG_DIR/wiki.vim"
+
+echo "---Installing nightfly colorscheme---"
+git clone --depth 1 https://github.com/bluz71/vim-nightfly-colors.git "$THEME_DIR/nightfly"
+
+echo "---Link to neovim---"
+ln -s ~/.vim/pack ~/.config/nvim/pack
+
+echo "---Set vimrc into neovim"
+cat > ~/.config/nvim/init.vim <<EOF
+" Neovim compatibility for Vim config
+set runtimepath^=~/.vim runtimepath+=~/.vim/after
+let &packpath = &runtimepath
+
+EOF
+
+cat .vimrc >> ~/.config/nvim/init.vim