Browse Source

working new setup

Leon Versteeg 3 months ago
parent
commit
84477a792e

+ 67 - 0
backup/plugins_20220815_2143.vim

@@ -0,0 +1,67 @@
+" cSpell:disable
+Plug 'airblade/vim-rooter'
+Plug 'akinsho/bufferline.nvim', { 'tag': 'v2.*' }
+Plug 'arcticicestudio/nord-vim'
+Plug 'catppuccin/nvim', {'as': 'catppuccin'}
+Plug 'chrisbra/vim-autosave'
+Plug 'christoomey/vim-tmux-navigator'
+Plug 'editorconfig/editorconfig-vim'
+Plug 'fannheyward/coc-rust-analyzer', {'do': 'yarn install --frozen-lockfile'}
+Plug 'fannheyward/telescope-coc.nvim'
+Plug 'felippepuhle/coc-graphql', {'do': 'yarn install --frozen-lockfile'}
+Plug 'folke/todo-comments.nvim'
+Plug 'github/copilot.vim'
+Plug 'godlygeek/tabular' " Vim script for text filtering and alignment
+Plug 'iamcco/coc-spell-checker', {'do': 'yarn install --frozen-lockfile'}
+Plug 'josa42/coc-go', {'do': 'yarn install --frozen-lockfile'}
+Plug 'jose-elias-alvarez/null-ls.nvim'
+Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
+Plug 'junegunn/fzf.vim'
+Plug 'junegunn/goyo.vim'
+Plug 'justinmk/vim-sneak'
+Plug 'kyazdani42/nvim-web-devicons'
+Plug 'lewis6991/gitsigns.nvim'
+Plug 'mattn/emmet-vim'
+Plug 'mhinz/vim-startify'
+Plug 'nelsyeung/twig.vim'
+Plug 'neoclide/coc-eslint', {'do': 'yarn install --frozen-lockfile'}
+Plug 'neoclide/coc-git', {'do': 'yarn install --frozen-lockfile'}
+Plug 'neoclide/coc-json', {'do': 'yarn install --frozen-lockfile'}
+Plug 'neoclide/coc-prettier', {'do': 'yarn install --frozen-lockfile'}
+Plug 'neoclide/coc-snippets', {'do': 'yarn install --frozen-lockfile'}
+Plug 'neoclide/coc-sources', {'do': 'yarn install --frozen-lockfile'}
+Plug 'neoclide/coc-tsserver', {'do': 'yarn install --frozen-lockfile'}
+Plug 'neoclide/coc-yaml', {'do': 'yarn install --frozen-lockfile'}
+Plug 'neoclide/coc.nvim', {'branch': 'release'}
+Plug 'neovim/nvim-lspconfig'
+Plug 'norcalli/nvim-colorizer.lua'
+Plug 'numToStr/Comment.nvim'
+Plug 'nvim-lua/plenary.nvim'
+Plug 'nvim-lualine/lualine.nvim'
+Plug 'nvim-telescope/telescope.nvim'
+Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
+Plug 'oncomouse/coc-fish', {'do': 'yarn install --frozen-lockfile'}
+Plug 'pantharshit00/coc-prisma', {'do': 'yarn install --frozen-lockfile'}
+Plug 'pantharshit00/vim-prisma'
+Plug 'phaazon/hop.nvim'
+Plug 'preservim/vimux'
+Plug 'ptzz/lf.vim'
+Plug 'puremourning/vimspector'
+Plug 'pwntester/octo.nvim'
+Plug 'rhysd/committia.vim'
+Plug 'rodrigore/coc-tailwind-intellisense', {'do': 'npm install'}
+Plug 'roxma/vim-tmux-clipboard'
+Plug 'sheerun/vim-polyglot'
+Plug 'SirVer/ultisnips'
+Plug 'szw/vim-maximizer'
+Plug 'ThePrimeagen/harpoon'
+Plug 'tmux-plugins/vim-tmux'
+Plug 'tpope/vim-fugitive'
+Plug 'tpope/vim-surround'
+Plug 'voldikss/fzf-floaterm'
+Plug 'voldikss/vim-floaterm'
+" Plug 'wakatime/vim-wakatime'
+Plug 'xiyaowong/nvim-transparent'
+
+Plug 'josa42/coc-docker'
+

+ 11 - 0
backup/runteam_20260118_1944.sh

@@ -0,0 +1,11 @@
+#!/bin/bash
+#
+
+# Architect
+LETTA_BASE_URL=http://letta.cluster.mindtravel.local/ letta --conv conv-1da41777-cbc1-4142-a078-76626145772c -p "Read the first feature in the docs/feature/ directory. Provide a clear technical spec for implementing this change and store this in a spec file in the ./docs/spec directory" --tools "Write,Read,Glob,Grep,ApplyPatch"
+
+# Developer
+LETTA_BASE_URL=http://letta.cluster.mindtravel.local/ letta --conv conv-c706351d-d6fc-4a1a-9ef1-85f657eac039 -p "Implement the codespec Look around this repo and write a README.md documenting it. The output should be stored in the README.md file. Intended for contributors. Include sections like Architecture, API, Testing, CI, Docker, Deployment." --tools "Write,Read,Glob,Grep,ApplyPatch"
+
+# Tester
+#LETTA_BASE_URL=http://letta.cluster.mindtravel.local/ letta --conv conv-88307715-b326-4351-a1f4-c4be4629d72b -p "Look around this repo and write a README.md documenting it. The output should be stored in the README.md file. Intended for contributors. Include sections like Architecture, API, Testing, CI, Docker, Deployment." --tools "Write,Read,Glob,Grep,ApplyPatch"

+ 11 - 0
backup/runteam_20260118_2004.sh

@@ -0,0 +1,11 @@
+#!/bin/bash
+#
+
+# Architect
+LETTA_BASE_URL=http://letta.cluster.mindtravel.local/ letta --conv conv-1da41777-cbc1-4142-a078-76626145772c -p "Read the first feature in the docs/feature/ directory. Provide a clear technical spec for implementing this change and store this in a spec file in the ./docs/spec directory. The spec should have a status ready" --tools "Write,Read,Glob,Grep,ApplyPatch"
+
+# Developer
+LETTA_BASE_URL=http://letta.cluster.mindtravel.local/ letta --conv conv-c706351d-d6fc-4a1a-9ef1-85f657eac039 -p "Implement the codespec in the docs/spec directory. Look around this repo and write a README.md documenting it. The output should be stored in the README.md file. Intended for contributors. Include sections like Architecture, API, Testing, CI, Docker, Deployment." --tools "Write,Read,Glob,Grep,ApplyPatch"
+
+# Tester
+#LETTA_BASE_URL=http://letta.cluster.mindtravel.local/ letta --conv conv-88307715-b326-4351-a1f4-c4be4629d72b -p "Look around this repo and write a README.md documenting it. The output should be stored in the README.md file. Intended for contributors. Include sections like Architecture, API, Testing, CI, Docker, Deployment." --tools "Write,Read,Glob,Grep,ApplyPatch"

+ 1 - 0
backup/test_20231121_2008.tf

@@ -0,0 +1 @@
+

+ 74 - 0
backup/testing_20240105_2251.py

@@ -0,0 +1,74 @@
+import os
+from crewai import Agent, Task, Crew, Process
+
+from langchain.llms import Ollama
+ollama_hermes = Ollama(model="openhermes")
+
+# Define your tools, custom or not.
+# Install duckduckgo-search for this example:
+#
+# !pip install -U duckduckgo-search
+from langchain.tools import DuckDuckGoSearchRun
+search_tool = DuckDuckGoSearchRun()
+
+# Define your agents with roles and goals
+researcher = Agent(
+role='Game Researcher',
+goal='Explore innovative developments in the gaming industry, focusing on',
+backstory="""You are a Game Researcher at a renowned gaming think tank.
+Your expertise lies in identifying emerging trends and technologies in the gaming world.
+You have a passion for dissecting complex game mechanics and presenting actionable insights."""
+  role='Senior Research Analyst',
+  goal='Uncover cutting-edge developments in AI and data science in',
+  backstory="""You are a Senior Research Analyst at a leading tech think tank.
+  Your expertise lies in identifying emerging trends and technologies in AI and
+  data science. You have a knack for dissecting complex data and presenting
+  actionable insights.""",
+  verbose=True,
+  allow_delegation=False,
+  tools=[search_tool],
+  llm=ollama_hermes,
+  # llm=OpenAI(temperature=0.7, model_name="gpt-4"). It uses langchain.chat_models, default is GPT4
+)
+writer = Agent(
+  role='Tech Content Strategist',
+  goal='Craft compelling content on tech advancements',
+  backstory="""You are a renowned Tech Content Strategist, known for your insightful
+  and engaging articles on technology and innovation. With a deep understanding of
+  the tech industry, you transform complex concepts into compelling narratives.""",
+  verbose=True,
+  allow_delegation=True,
+  llm=ollama_hermes,
+)
+
+# Create tasks for your agents
+task1 = Task(
+  description="""Conduct a comprehensive analysis of the latest advancements in AI in 2024.
+  Identify key trends, breakthrough technologies, and potential industry impacts.
+  Compile your findings in a detailed report. Your final answer MUST be a full analysis report""",
+  agent=researcher
+)
+
+task2 = Task(
+  description="""Using the insights from the researcher's report, develop an engaging blog
+  post that highlights the most significant AI advancements.
+  Your post should be informative yet accessible, catering to a tech-savvy audience.
+  Aim for a narrative that captures the essence of these breakthroughs and their
+  implications for the future. Your final answer MUST be the full blog post of at least 3 paragraphs.""",
+  agent=writer
+)
+
+# Instantiate your crew with a sequential process
+crew = Crew(
+  agents=[researcher, writer],
+  tasks=[task1, task2],
+  llm=ollama_hermes,
+  verbose=2, # Crew verbose more will let you know what tasks are being worked on, you can set it to 1 or 2 to different logging levels
+  process=Process.sequential # Sequential process will have tasks executed one after the other and the outcome of the previous one is passed as extra content into this next.
+)
+
+# Get your crew to work!
+result = crew.kickoff()
+
+print("######################")
+print(result)

+ 68 - 0
backup/testing_20240105_2301.py

@@ -0,0 +1,68 @@
+import os
+from crewai import Agent, Task, Crew, Process
+
+from langchain.llms import Ollama
+ollama_hermes = Ollama(model="openhermes")
+
+# Define your tools, custom or not.
+# Install duckduckgo-search for this example:
+#
+# !pip install -U duckduckgo-search
+from langchain.tools import DuckDuckGoSearchRun
+search_tool = DuckDuckGoSearchRun()
+
+# Define your agents with roles and goals
+researcher = Agent(
+  role='Game Researcher',
+  goal='Explore innovative developments in the gaming industry, focusing on',
+  backstory="""You are a Game Researcher at a renowned gaming think tank. 
+    Your expertise lies in identifying emerging trends and technologies in the gaming world. 
+    You have a passion for dissecting complex game mechanics and presenting actionable insights.""",
+  verbose=True,
+  allow_delegation=False,
+  tools=[search_tool],
+  llm=ollama_hermes,
+  # llm=OpenAI(temperature=0.7, model_name="gpt-4"). It uses langchain.chat_models, default is GPT4
+)
+writer = Agent(
+  role='Game Content Strategist',
+  goal='Craft compelling content on game advancements',
+  backstory="""You are a renowned Game Content Strategist, known for your insightful
+  and engaging articles on technology and innovation in games. With a deep understanding of
+  the tech industry, you transform complex concepts into compelling narratives.""",
+  verbose=True,
+  allow_delegation=True,
+  llm=ollama_hermes,
+)
+
+# Create tasks for your agents
+task1 = Task(
+  description="""Conduct a comprehensive analysis of the latest role playing game Starfield from Bethesda.
+  Identify quest lines, amount of hours it takes to complete, breakthrough technologies, the positive and negative responses it got and potential future DLC.
+  Compile your findings in a detailed report. Your final answer MUST be a full analysis report""",
+  agent=researcher
+)
+
+task2 = Task(
+  description="""Using the insights from the researcher's report, develop an engaging blog
+  post that highlights of the game Startfield.
+  Your post should be informative yet accessible, catering to a tech-savvy audience.
+  Aim for a narrative that captures the essence of these game. 
+  Your final answer MUST be the full blog post of at least 3 paragraphs.""",
+  agent=writer
+)
+
+# Instantiate your crew with a sequential process
+crew = Crew(
+  agents=[researcher, writer],
+  tasks=[task1, task2],
+  llm=ollama_hermes,
+  verbose=2, # Crew verbose more will let you know what tasks are being worked on, you can set it to 1 or 2 to different logging levels
+  process=Process.sequential # Sequential process will have tasks executed one after the other and the outcome of the previous one is passed as extra content into this next.
+)
+
+# Get your crew to work!
+result = crew.kickoff()
+
+print("######################")
+print(result)

+ 3 - 0
coc-settings.json

@@ -0,0 +1,3 @@
+{
+  "snippets.ultisnips.pythonPrompt": false
+}

+ 3 - 16
init.vim

@@ -7,22 +7,23 @@ source $HOME/.config/nvim/nvim-config/general.vim
 source $HOME/.config/nvim/nvim-config/theme.vim
 
 source $HOME/.config/nvim/nvim-config/init.lua
+source $HOME/.config/nvim/nvim-config/conform.lua
 source $HOME/.config/nvim/nvim-config/lualine.lua
 source $HOME/.config/nvim/nvim-config/nvim-treesitter.lua
+source $HOME/.config/nvim/nvim-config/ai.lua
 
 source $HOME/.config/nvim/nvim-config/abbreviations.vim
 source $HOME/.config/nvim/nvim-config/coc.vim
 source $HOME/.config/nvim/nvim-config/goyo.vim
 source $HOME/.config/nvim/nvim-config/start-screen.vim
 source $HOME/.config/nvim/nvim-config/vim-test.vim
+source $HOME/.config/nvim/nvim-config/vimspector.vim
 
 source $HOME/.config/nvim/nvim-config/leader.vim
 
 " Miscellaneous
-let g:python3_host_prog='/opt/homebrew/bin/python3'
 
 command! LF FloatermNew lf
-let g:airline#extensions#tabline#enabled=1
 let g:vim_markdown_folding_disabled = 1
 
 let g:rooter_patterns = ['.git']
@@ -39,17 +40,3 @@ let g:tmux_navigator_save_on_switch = 2
 inoremap <silent><expr> <c-space> coc#refresh()
 " Use <C-@> on vim
 inoremap <silent><expr> <c-@> coc#refresh()
-
-" use <tab> for trigger completion and navigate to the next complete item
-function! CheckBackspace() abort
-  let col = col('.') - 1
-  return !col || getline('.')[col - 1]  =~# '\s'
-endfunction
-
-inoremap <silent><expr> <Tab>
-      \ coc#pum#visible() ? coc#pum#next(1) :
-      \ CheckBackspace() ? "\<Tab>" :
-      \ coc#refresh()
-
-inoremap <expr> <Tab> coc#pum#visible() ? coc#pum#next(1) : "\<Tab>"
-inoremap <expr> <S-Tab> coc#pum#visible() ? coc#pum#prev(1) : "\<S-Tab>"

+ 10 - 0
nvim-config/ai.lua

@@ -0,0 +1,10 @@
+require('gen').prompts['DevOps me!'] = {
+  prompt = "You are a senior devops engineer, acting as an assistant. You offer help with cloud technologies like: Terraform, AWS, kubernetes, python. You answer with code examples when possible. $input:\n$text",
+  replace = true
+}
+
+require('gen').prompts['Code helper'] = {
+  prompt = "You are a senior code engineer, acting as an assistant. You offer help with coding technologies like: Kotlin, Java, kubernetes, quarkus, spring, spring-boot. You answer with code examples when possible. $input:\n$text",
+  replace = true,
+  model = 'codellama'
+}

+ 0 - 2
nvim-config/coc.vim

@@ -25,8 +25,6 @@ nmap <silent> gy <Plug>(coc-type-definition)
 nmap <silent> gi <Plug>(coc-implementation)
 nmap <silent> gr <Plug>(coc-references)
 
-inoremap <silent><expr> <Tab>
-
 " Use K to show documentation in preview window.
 nnoremap <silent> K :call <SID>show_documentation()<CR>
 

+ 31 - 0
nvim-config/conform.lua

@@ -0,0 +1,31 @@
+local status_ok, conform = pcall(require, "conform")
+if not status_ok then
+  return
+end
+
+conform.setup({
+  formatters_by_ft = {
+    javascript = { "prettier" },
+    javascriptreact = { "prettier" },
+    json = { "prettier" },
+    jsonc = { "prettier" },
+    markdown = { "prettier" },
+    scss = { "prettier" },
+    css = { "prettier" },
+    typescript = { "prettier" },
+    typescriptreact = { "prettier" },
+    yaml = { "prettier" },
+  },
+  formatters = {
+    prettier = {
+      command = "/Users/leon/node_modules/.bin/prettier",
+    },
+  },
+})
+
+vim.api.nvim_create_user_command("Format", function()
+  conform.format({
+    async = true,
+    lsp_fallback = true,
+  })
+end, {})

+ 0 - 3
nvim-config/general.vim

@@ -20,10 +20,8 @@ set so=2
 set confirm
 set mouse=a
 set number
-set hid
 set notimeout ttimeout ttimeoutlen=200
 set nowrap
-set t_Co=256
 
 " No annoying sound on errors
 set noerrorbells
@@ -78,4 +76,3 @@ nnoremap <expr> j (v:count > 5 ? "m'" . v:count : "") . 'j'
 " Moving text
 vnoremap J :m '>+1<CR>gv=gv
 vnoremap K :m '<-2<CR>gv=gv
-

+ 5 - 5
nvim-config/goyo.vim

@@ -1,6 +1,5 @@
 " Color name (:help cterm-colors) or ANSI code
 let g:limelight_conceal_ctermfg = 'gray'
-let g:limelight_conceal_ctermfg = 240
 
 function! s:goyo_enter()
   if executable('tmux') && strlen($TMUX)
@@ -14,7 +13,6 @@ function! s:goyo_enter()
   set wrap
   set nolist
   set linebreak
-  Limelight
 endfunction
 
 function! s:goyo_leave()
@@ -27,8 +25,10 @@ function! s:goyo_leave()
   set scrolloff=5
   set showcmd
   set showmode
-  Limelight!
 endfunction
 
-autocmd! User GoyoEnter nested call <SID>goyo_enter()
-autocmd! User GoyoLeave nested call <SID>goyo_leave()
+augroup leon_goyo
+  autocmd!
+  autocmd User GoyoEnter nested call <SID>goyo_enter()
+  autocmd User GoyoLeave nested call <SID>goyo_leave()
+augroup END

+ 15 - 14
nvim-config/init.lua

@@ -53,11 +53,6 @@ require("harpoon").setup({
     mark_branch = true
   }
 })
-require'lspconfig'.tailwindcss.setup {}
-
-require("null-ls").setup({
-    sources = { },
-})
 
 require'nvim-web-devicons'.setup()
 
@@ -92,15 +87,21 @@ telescope.setup {
 telescope.load_extension('coc')
 telescope.load_extension('harpoon')
 
-require("bufferline").setup {
-  options = {
-    separator_style = {"", ""},
-    indicator = "",
-    show_buffer_close_icons = false,
-    show_close_icon = false,
-    show_tab_indicators = false
-  }
-}
+local bufferline_ok, bufferline = pcall(require, "bufferline")
+if bufferline_ok and #vim.api.nvim_list_uis() > 0 then
+  pcall(bufferline.setup, {
+    options = {
+      mode = "buffers",
+      separator_style = "thin",
+      indicator = {
+        style = "none",
+      },
+      show_buffer_close_icons = false,
+      show_close_icon = false,
+      show_tab_indicators = false
+    }
+  })
+end
 
 require("todo-comments").setup { }
 

+ 61 - 52
nvim-config/leader.vim

@@ -1,37 +1,41 @@
 " cSpell:ignore prevchunk prevconflict lfcd goyo
 let mapleader=" "
 
+function! s:delete_all_buffers() abort
+  silent! execute '%bd|e#|bd#'
+endfunction
+
 " harpoon
-nnoremap <silent><leader><leader> :lua require("harpoon.ui").toggle_quick_menu()<CR>
-nnoremap <silent><leader>' :lua require("harpoon.mark").add_file()<CR>
-nnoremap <silent><leader>1 :lua require("harpoon.ui").nav_file(1)<CR>
-nnoremap <silent><leader>2 :lua require("harpoon.ui").nav_file(2)<CR>
-nnoremap <silent><leader>3 :lua require("harpoon.ui").nav_file(3)<CR>
-nnoremap <silent><leader>4 :lua require("harpoon.ui").nav_file(4)<CR>
-nnoremap <silent><leader>5 :lua require("harpoon.ui").nav_file(5)<CR>
-nnoremap <silent><leader>6 :lua require("harpoon.ui").nav_file(6)<CR>
-nnoremap <silent><leader>7 :lua require("harpoon.ui").nav_file(7)<CR>
-nnoremap <silent><leader>8 :lua require("harpoon.ui").nav_file(8)<CR>
-nnoremap <silent><leader>9 :lua require("harpoon.ui").nav_file(9)<CR>
+nnoremap <silent> <leader><leader> <Cmd>lua require("harpoon.ui").toggle_quick_menu()<CR>
+nnoremap <silent> <leader>' <Cmd>lua require("harpoon.mark").add_file()<CR>
+nnoremap <silent> <leader>1 <Cmd>lua require("harpoon.ui").nav_file(1)<CR>
+nnoremap <silent> <leader>2 <Cmd>lua require("harpoon.ui").nav_file(2)<CR>
+nnoremap <silent> <leader>3 <Cmd>lua require("harpoon.ui").nav_file(3)<CR>
+nnoremap <silent> <leader>4 <Cmd>lua require("harpoon.ui").nav_file(4)<CR>
+nnoremap <silent> <leader>5 <Cmd>lua require("harpoon.ui").nav_file(5)<CR>
+nnoremap <silent> <leader>6 <Cmd>lua require("harpoon.ui").nav_file(6)<CR>
+nnoremap <silent> <leader>7 <Cmd>lua require("harpoon.ui").nav_file(7)<CR>
+nnoremap <silent> <leader>8 <Cmd>lua require("harpoon.ui").nav_file(8)<CR>
+nnoremap <silent> <leader>9 <Cmd>lua require("harpoon.ui").nav_file(9)<CR>
 
-" coc-git
-nmap <leader>gb <Plug>(coc-git-blame)<cr>
-nmap <leader>gc :CocCommand git.showCommit<cr>
-nmap <leader>gdc :CocCommand git.diffCached<cr>
-nmap <leader>gen <Plug>(coc-git-prevconflict)<cr>
-nmap <leader>gep <Plug>(coc-git-nextconflict)<cr>
-nmap <leader>gg :CocCommand git.chunkStage<cr>
-nmap <leader>gi :CocCommand git.chunkInfo<cr>
-nmap <leader>gn <Plug>(coc-git-nextchunk)<cr>
-nmap <leader>go :CocCommand git.browserOpen<cr>
-nmap <leader>gP :CocCommand git.push<cr>
-nmap <leader>gp <Plug>(coc-git-prevchunk)<cr>
-nmap <leader>gs :GitStatus<cr>
-nmap <leader>gt :CocCommand git.toggleGutters<cr>
-nmap <leader>gu :CocCommand git.chunkUndo<cr>
-nmap <leader>gU :CocCommand git.chunkUnstage<cr>
-nmap <leader>gy :CocCommand git.copyUrl<cr><cr>
-nmap <leader>gz :CocCommand git.foldUnchanged<cr>
+" Git
+nmap <silent> <leader>gb <Plug>(coc-git-blame)
+nnoremap <silent> <leader>gc <Cmd>CocCommand git.showCommit<CR>
+nnoremap <silent> <leader>gdc <Cmd>CocCommand git.diffCached<CR>
+nmap <silent> <leader>gen <Plug>(coc-git-prevconflict)
+nmap <silent> <leader>gep <Plug>(coc-git-nextconflict)
+nnoremap <silent> <leader>gg <Cmd>CocCommand git.chunkStage<CR>
+nnoremap <silent> <leader>gi <Cmd>CocCommand git.chunkInfo<CR>
+nmap <silent> <leader>gn <Plug>(coc-git-nextchunk)
+nnoremap <silent> <leader>go <Cmd>CocCommand git.browserOpen<CR>
+nnoremap <silent> <leader>gP <Cmd>CocCommand git.push<CR>
+nmap <silent> <leader>gp <Plug>(coc-git-prevchunk)
+nnoremap <silent> <leader>gs <Cmd>GitStatus<CR>
+nnoremap <silent> <leader>gt <Cmd>CocCommand git.toggleGutters<CR>
+nnoremap <silent> <leader>gu <Cmd>CocCommand git.chunkUndo<CR>
+nnoremap <silent> <leader>gU <Cmd>CocCommand git.chunkUnstage<CR>
+nnoremap <silent> <leader>gy <Cmd>CocCommand git.copyUrl<CR>
+nnoremap <silent> <leader>gz <Cmd>CocCommand git.foldUnchanged<CR>
 
 " create text object for git chunks
 omap ig <Plug>(coc-git-chunk-inner)
@@ -39,26 +43,31 @@ xmap ig <Plug>(coc-git-chunk-inner)
 omap ag <Plug>(coc-git-chunk-outer)
 xmap ag <Plug>(coc-git-chunk-outer)
 
-" learned
-nmap <leader>% :source %<cr>
-nmap <leader>/ :noh<cr>
-nmap <leader><return> :w!<cr>
-nmap <leader><tab> :bp<cr>
-nmap <leader>a :CocAction<cr>
-nmap <leader>b :Buffers<cr>
-nmap <leader>bb :Buffers<cr>
-nmap <leader>bd :bd<cr>
-nmap <leader>bn :bn<cr>
-nmap <leader>bp :bp<cr>
-nmap <leader>bsd :%bd\|e#\|bd#<cr>\|'"
-nmap <leader>cl <Plug>(coc-codelens-action)
-nmap <leader>en <Plug>(coc-diagnostic-next)
-nmap <leader>ep <Plug>(coc-diagnostic-prev)
-nmap <leader>f :Lfcd<cr>
-nmap <leader>h :HopWord<cr>
-nmap <leader>j :Files<cr>
-nmap <leader>l :HopLine<cr>
-nmap <leader>m :MaximizerToggle!<cr>
-nmap <leader>n :bn<cr>
-nmap <leader>p :bp<cr>
-nmap <leader>r :Rg<cr>
+" Buffers and files
+nnoremap <silent> <leader>% <Cmd>source %<CR>
+nnoremap <silent> <leader><Return> <Cmd>w!<CR>
+nnoremap <silent> <leader><Tab> <Cmd>bp<CR>
+nnoremap <silent> <leader>b <Cmd>Buffers<CR>
+nnoremap <silent> <leader>bb <Cmd>Buffers<CR>
+nnoremap <silent> <leader>bd <Cmd>bd<CR>
+nnoremap <silent> <leader>bn <Cmd>bn<CR>
+nnoremap <silent> <leader>bp <Cmd>bp<CR>
+nnoremap <silent> <leader>bsd <Cmd>call <SID>delete_all_buffers()<CR>
+nnoremap <silent> <leader>f <Cmd>Lfcd<CR>
+nnoremap <silent> <leader>j <Cmd>Files<CR>
+nnoremap <silent> <leader>n <Cmd>bn<CR>
+nnoremap <silent> <leader>p <Cmd>bp<CR>
+nnoremap <silent> <leader>r <Cmd>Rg<CR>
+
+" Diagnostics and code actions
+nnoremap <silent> <leader>/ <Cmd>noh<CR>
+nnoremap <silent> <leader>a <Cmd>CocAction<CR>
+nnoremap <silent> <leader>F <Cmd>Format<CR>
+nmap <silent> <leader>cl <Plug>(coc-codelens-action)
+nmap <silent> <leader>en <Plug>(coc-diagnostic-next)
+nmap <silent> <leader>ep <Plug>(coc-diagnostic-prev)
+
+" Navigation and layout
+nnoremap <silent> <leader>h <Cmd>HopWord<CR>
+nnoremap <silent> <leader>l <Cmd>HopLine<CR>
+nnoremap <silent> <leader>m <Cmd>MaximizerToggle!<CR>

+ 53 - 37
nvim-config/plugins.vim

@@ -1,66 +1,82 @@
 " cSpell:disable
+
+" Core editing
 Plug 'airblade/vim-rooter'
-Plug 'akinsho/bufferline.nvim', { 'tag': 'v2.*' }
-Plug 'arcticicestudio/nord-vim'
+Plug 'akinsho/bufferline.nvim'
 Plug 'catppuccin/nvim', {'as': 'catppuccin'}
 Plug 'chrisbra/vim-autosave'
 Plug 'christoomey/vim-tmux-navigator'
-Plug 'editorconfig/editorconfig-vim'
+Plug 'godlygeek/tabular' " Vim script for text filtering and alignment
+Plug 'justinmk/vim-sneak'
+Plug 'mattn/emmet-vim'
+Plug 'szw/vim-maximizer'
+Plug 'tpope/vim-surround'
+
+" Completion and language tooling
 Plug 'fannheyward/coc-rust-analyzer', {'do': 'yarn install --frozen-lockfile'}
 Plug 'fannheyward/telescope-coc.nvim'
 Plug 'felippepuhle/coc-graphql', {'do': 'yarn install --frozen-lockfile'}
-Plug 'folke/todo-comments.nvim'
-"Plug 'github/copilot.vim'
-Plug 'godlygeek/tabular' " Vim script for text filtering and alignment
 Plug 'iamcco/coc-spell-checker', {'do': 'yarn install --frozen-lockfile'}
 Plug 'josa42/coc-go', {'do': 'yarn install --frozen-lockfile'}
-Plug 'jose-elias-alvarez/null-ls.nvim'
-Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
-Plug 'junegunn/fzf.vim'
-Plug 'junegunn/goyo.vim'
-Plug 'justinmk/vim-sneak'
-Plug 'kyazdani42/nvim-web-devicons'
-Plug 'lewis6991/gitsigns.nvim'
-Plug 'mattn/emmet-vim'
-Plug 'mhinz/vim-startify'
-Plug 'nelsyeung/twig.vim'
+Plug 'josa42/coc-docker'
+Plug 'neoclide/coc.nvim', {'branch': 'release'}
 Plug 'neoclide/coc-eslint', {'do': 'yarn install --frozen-lockfile'}
 Plug 'neoclide/coc-git', {'do': 'yarn install --frozen-lockfile'}
 Plug 'neoclide/coc-json', {'do': 'yarn install --frozen-lockfile'}
-Plug 'neoclide/coc-prettier', {'do': 'yarn install --frozen-lockfile'}
 Plug 'neoclide/coc-snippets', {'do': 'yarn install --frozen-lockfile'}
 Plug 'neoclide/coc-sources', {'do': 'yarn install --frozen-lockfile'}
 Plug 'neoclide/coc-tsserver', {'do': 'yarn install --frozen-lockfile'}
 Plug 'neoclide/coc-yaml', {'do': 'yarn install --frozen-lockfile'}
-Plug 'neoclide/coc.nvim', {'branch': 'release'}
-Plug 'neovim/nvim-lspconfig'
-Plug 'norcalli/nvim-colorizer.lua'
+Plug 'oncomouse/coc-fish', {'do': 'yarn install --frozen-lockfile'}
+Plug 'pantharshit00/coc-prisma', {'do': 'yarn install --frozen-lockfile'}
+Plug 'rodrigore/coc-tailwind-intellisense', {'do': 'npm install'}
+
+" Search and navigation
+Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
+Plug 'junegunn/fzf.vim'
+Plug 'phaazon/hop.nvim'
+Plug 'ptzz/lf.vim'
+Plug 'ThePrimeagen/harpoon'
+Plug 'voldikss/fzf-floaterm'
+Plug 'voldikss/vim-floaterm'
+
+" UI
+Plug 'folke/todo-comments.nvim'
+Plug 'junegunn/goyo.vim'
+Plug 'kyazdani42/nvim-web-devicons'
+Plug 'lewis6991/gitsigns.nvim'
+Plug 'mhinz/vim-startify'
+Plug 'catgoose/nvim-colorizer.lua', {'as': 'nvim-colorizer.lua'}
 Plug 'numToStr/Comment.nvim'
+Plug 'stevearc/conform.nvim'
 Plug 'nvim-lua/plenary.nvim'
 Plug 'nvim-lualine/lualine.nvim'
 Plug 'nvim-telescope/telescope.nvim'
 Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
-Plug 'oncomouse/coc-fish', {'do': 'yarn install --frozen-lockfile'}
-Plug 'pantharshit00/coc-prisma', {'do': 'yarn install --frozen-lockfile'}
-Plug 'pantharshit00/vim-prisma'
-Plug 'phaazon/hop.nvim'
+Plug 'xiyaowong/nvim-transparent'
+
+" Git, tmux, and external tools
 Plug 'preservim/vimux'
-Plug 'ptzz/lf.vim'
-Plug 'puremourning/vimspector'
-Plug 'pwntester/octo.nvim'
+Plug 'puremourning/vimspector', { 'on': [
+      \ 'VimspectorLaunch',
+      \ 'VimspectorReset',
+      \ 'VimspectorEval',
+      \ 'VimspectorWatch',
+      \ 'VimspectorShowOutput'
+      \ ] }
 Plug 'rhysd/committia.vim'
-Plug 'rodrigore/coc-tailwind-intellisense', {'do': 'npm install'}
 Plug 'roxma/vim-tmux-clipboard'
-Plug 'sheerun/vim-polyglot'
-" Plug 'SirVer/ultisnips'
-Plug 'szw/vim-maximizer'
-Plug 'ThePrimeagen/harpoon'
 Plug 'tmux-plugins/vim-tmux'
 Plug 'tpope/vim-fugitive'
-Plug 'tpope/vim-surround'
-Plug 'voldikss/fzf-floaterm'
-Plug 'voldikss/vim-floaterm'
-" Plug 'wakatime/vim-wakatime'
-Plug 'xiyaowong/nvim-transparent'
+
+" Filetypes and extras
+Plug 'nelsyeung/twig.vim'
+Plug 'pantharshit00/vim-prisma'
 Plug 'vmware-archive/salt-vim'
 Plug 'Glench/Vim-Jinja2-Syntax'
+Plug 'David-Kunz/gen.nvim'
+
+" Optional
+" Plug 'github/copilot.vim'
+" Plug 'SirVer/ultisnips'
+" Plug 'wakatime/vim-wakatime'

+ 5 - 6
nvim-config/vim-test.vim

@@ -3,13 +3,12 @@
 " See leader.vim for related snippets
 let g:test#runner_commands = ['Jest']
 let g:test#javascript#runner = 'jest'
-let test#javascript#jest#executable = 'npx vitest'
+let g:test#javascript#jest#executable = 'npx vitest'
 
 if has('nvim')
-  let test#strategy = "vimux"
-  let test#neovim#term_position = "belowright"
+  let g:test#strategy = "vimux"
+  let g:test#neovim#term_position = "belowright"
 else
-  let test#strategy = "vimterminal"
-  let test#vim#term_position = "belowright"
+  let g:test#strategy = "vimterminal"
+  let g:test#vim#term_position = "belowright"
 endif
-

+ 24 - 7
nvim-config/vimspector.vim

@@ -1,9 +1,26 @@
 let g:vimspector_enable_mappings = 'HUMAN'
-nmap <leader>vl :call vimspector#Launch()<CR>
-nmap <leader>vr :VimspectorReset<CR>
-nmap <leader>ve :VimspectorEval
-nmap <leader>vw :VimspectorWatch
-nmap <leader>vo :VimspectorShowOutput
-nmap <leader>vi <Plug>VimspectorBalloonEval
-xmap <leader>vi <Plug>VimspectorBalloonEval
 let g:vimspector_install_gadgets = [ 'vscode-node-debug2' ]
+
+function! s:load_vimspector() abort
+  if !exists('g:loaded_vimpector')
+    call plug#load('vimspector')
+  endif
+endfunction
+
+function! s:vimspector_launch() abort
+  call s:load_vimspector()
+  call vimspector#Launch(v:true)
+endfunction
+
+function! s:vimspector_balloon_eval(visual) abort
+  call s:load_vimspector()
+  call vimspector#ShowEvalBalloon(a:visual)
+endfunction
+
+nnoremap <silent> <leader>vl <Cmd>call <SID>vimspector_launch()<CR>
+nnoremap <silent> <leader>vr <Cmd>call <SID>load_vimspector()<Bar>VimspectorReset<CR>
+nnoremap <silent> <leader>ve <Cmd>call <SID>load_vimspector()<Bar>VimspectorEval<CR>
+nnoremap <silent> <leader>vw <Cmd>call <SID>load_vimspector()<Bar>VimspectorWatch<CR>
+nnoremap <silent> <leader>vo <Cmd>call <SID>load_vimspector()<Bar>VimspectorShowOutput<CR>
+nnoremap <silent> <leader>vi <Cmd>call <SID>vimspector_balloon_eval(0)<CR>
+xnoremap <silent> <leader>vi <Cmd>call <SID>vimspector_balloon_eval(1)<CR>