Skip to content
Closed

sync #2048

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
3f0cd75
feat: add support for new LSP config API in Neovim 0.11+
umutondersu Apr 16, 2025
f70dcb3
Typo fix
umutondersu Apr 16, 2025
4b81900
fix(lsp): correct variable name in lsp config loop
umutondersu Apr 17, 2025
5502cea
style: format with stylua
umutondersu Apr 17, 2025
a590ab6
fix(lsp): Remove backwards compatibility and add comments for lsp setup
umutondersu Apr 20, 2025
dac395d
fix: Typo in comment
umutondersu Apr 20, 2025
531073d
fix: revert back to original handler logic
umutondersu Apr 21, 2025
81c5210
Fix: correct variables inside comments
umutondersu Apr 30, 2025
9e0c7b6
fix(deps): pin mason plugin versions to v1.*
umutondersu May 10, 2025
0018683
feat(lsp): Update Mason to v2
umutondersu May 11, 2025
f9628e5
Merge branch 'master' into master
umutondersu May 11, 2025
718c90d
fix: mason server name
umutondersu May 11, 2025
82949b8
Refactor(lsp): Ensure automatic server enabling
umutondersu May 17, 2025
0ecd679
chore: base
paulbkim-dev Feb 8, 2026
1b65e46
chore: add AGENTS.md development context
paulbkim-dev Mar 6, 2026
357dab6
fix(plugins): initial plugin configuration fixes
paulbkim-dev Mar 6, 2026
ba5ecb2
chore: clear README.md
paulbkim-dev Feb 9, 2026
1c56f4c
fix(treesitter): use configs.setup and drop extra install logic
Feb 10, 2026
7748db4
fix(config): wire Vue TS backend and remove stale wrapping module
paulbkim-dev Feb 16, 2026
8894b26
feat(git): add diffview shortcuts
paulbkim-dev Feb 16, 2026
1ce6776
fix(treesitter): use new nvim-treesitter setup API
paulbkim-dev Feb 17, 2026
ef1e7af
chore(gitignore): ignore local Serena metadata
paulbkim-dev Feb 17, 2026
e5a8662
docs(nvim): add README and :help reference guide
paulbkim-dev Feb 17, 2026
6fb1730
feat(workflow): add backend engineering plugin stack
paulbkim-dev Feb 17, 2026
a06b051
docs(readme): document backend workflow and keymaps
paulbkim-dev Feb 17, 2026
1da7fbe
feat(debug): add C/C++ codelldb profile and textobject selects
paulbkim-dev Feb 17, 2026
3b78c4b
fix(opencode): sanitize notified errors
paulbkim-dev Feb 17, 2026
e6be670
fix(startup): fix multi-splash, remove stale session manager
paulbkim-dev Mar 6, 2026
cfa2d19
added folding and lint
paulbkim-dev Feb 22, 2026
953e5b7
feat(lsp): add file rename → import update support
paulbkim-dev Mar 2, 2026
99d232e
feat(keymap): reorganize <leader>g prefix, add LSP goto keymaps
paulbkim-dev Mar 6, 2026
da30b14
feat(yank): add location reference clipboard utilities
paulbkim-dev Mar 6, 2026
ef32c15
feat(ui): add bufferline plugin config
paulbkim-dev Mar 6, 2026
cbfd797
refactor(config): inline location reference plugin and refresh docs
paulbkim-dev Mar 6, 2026
0db92a7
refactor(debug): inline C/C++ DAP setup into debug plugin spec
paulbkim-dev Mar 6, 2026
6d2fd09
fix(bufferline): preserve neo-tree on buffer cleanup
paulbkim-dev Mar 6, 2026
448f3de
fix(markdown): conditionally open preview browser
paulbkim-dev Mar 7, 2026
f9b4a07
add claude base
paulbkim-dev Apr 5, 2026
bcf01e3
Merge remote-tracking branch 'upstream/master'
paulbkim-dev Apr 5, 2026
5e80798
remove opencode plugin config
paulbkim-dev May 8, 2026
48ba60a
clean up gitsigns keymaps
paulbkim-dev May 8, 2026
20fd850
harden language tooling setup
paulbkim-dev May 8, 2026
37a75ad
tidy and harden neovim config
paulbkim-dev May 8, 2026
7b571fe
add neovim field manual
paulbkim-dev May 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"enabledPlugins": {
"lua-lsp@claude-plugins-official": true
}
}
8 changes: 8 additions & 0 deletions .claude/settings.local.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"permissions": {
"allow": [
"Bash(wc:*)",
"Bash(git:*)"
]
}
}
8 changes: 8 additions & 0 deletions .githooks/post-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/bin/sh
echo "→ Pushing to remote..."
if git push; then
echo "✓ Push successful."
else
echo "✗ Push failed. Run 'git push' manually to retry." >&2
exit 1
fi
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,4 @@ spell/
# For the official `nvim-lua/kickstart.nvim` git repository, we leave it ignored to avoid unneeded
# merge conflicts.
lazy-lock.json

.DS_Store
341 changes: 341 additions & 0 deletions MANUAL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,341 @@
# Neovim Field Manual

This is a hands-on guide for this config. It focuses on the shortcuts, motions,
and working habits that are most useful day to day.

Leader is `<Space>`.

## First Moves

| Goal | Keys | Notes |
| --- | --- | --- |
| See available leader groups | `<Space>` | `which-key` opens immediately. |
| Find files | `<leader>sf` | Telescope file picker. |
| Search text in project | `<leader>sg` | Uses ripgrep through Telescope. |
| Search current buffer | `<leader>/` | Compact in-buffer fuzzy search. |
| Switch buffers | `<leader><leader>` | Telescope buffer picker. |
| Previous / next buffer | `<S-h>` / `<S-l>` | Bufferline navigation. |
| Reveal file tree | `\` | Neo-tree reveal. |
| Open Oil explorer | `<leader>eo` | Editable directory buffer. |
| Format buffer | `<leader>f` | Conform, with LSP fallback. |
| Exit terminal mode | `<Esc><Esc>` | Easier than `<C-\><C-n>`. |

## Motions Worth Practicing

### Cursor and file movement

| Motion | Meaning | Practice |
| --- | --- | --- |
| `h j k l` | left, down, up, right | Use these before arrow keys. |
| `w` / `b` | next / previous word start | Move through identifiers quickly. |
| `e` / `ge` | next / previous word end | Useful before `c` and `d`. |
| `0` / `^` / `$` | line start, first nonblank, line end | Combine with `d`, `y`, `c`. |
| `gg` / `G` | file top / bottom | Prefix `G` with a line number. |
| `%` | matching pair | Parentheses, braces, brackets. |
| `{` / `}` | paragraph or block-ish movement | Good in Markdown and code blocks. |
| `<C-d>` / `<C-u>` | half-page down / up | Your `scrolloff=10` keeps context visible. |
| `<C-o>` / `<C-i>` | jump back / forward | `jumpoptions=clean,view` restores view better. |

### Search movement

| Motion | Meaning |
| --- | --- |
| `/text` | search forward |
| `?text` | search backward |
| `n` / `N` | next / previous match |
| `*` / `#` | search word under cursor forward / backward |
| `<Esc>` | clear search highlight |

Search is smart-case: lowercase searches are case-insensitive, mixed-case
searches become case-sensitive.

### One-character targeting

| Motion | Meaning | Example |
| --- | --- | --- |
| `f<char>` | move to next char | `f)` |
| `F<char>` | move to previous char | `F(` |
| `t<char>` | move before next char | `dt,` deletes until comma. |
| `T<char>` | move after previous char | `cT.` changes back to after dot. |
| `;` / `,` | repeat char search forward / backward | Works after `f`, `F`, `t`, `T`. |

## Editing Grammar

Vim editing is usually:

```text
operator + motion
```

| Operator | Meaning | Example |
| --- | --- | --- |
| `d` | delete | `dw`, `d$`, `di"` |
| `c` | change | `ciw`, `cib`, `ct,` |
| `y` | yank | `yiw`, `yap`, `y$` |
| `>` / `<` | indent / unindent | `>ip`, `<ap` |
| `=` | auto-indent | `=ip`, `gg=G` |
| `gq` | format text with `formatexpr` | Works with LSP when supported. |

Repeat with `.` after a good edit. This is the fastest way to turn one precise
edit into a batch of edits.

## Text Objects

Built-in text objects:

| Text object | Meaning | Example |
| --- | --- | --- |
| `iw` / `aw` | inner / around word | `ciw`, `daw` |
| `i"` / `a"` | inside / around quotes | `ci"`, `ya"` |
| `i'` / `a'` | inside / around single quotes | `ci'` |
| `i)` / `a)` | inside / around parentheses | `di)` |
| `i]` / `a]` | inside / around brackets | `ci]` |
| `i}` / `a}` | inside / around braces | `di}` |
| `ip` / `ap` | inner / around paragraph | `yap` |

Configured structural text objects:

| Text object | Meaning | Example |
| --- | --- | --- |
| `if` / `af` | inner / around function | `vaf`, `yif`, `daf` |
| `ic` / `ac` | inner / around class | `vac`, `yic`, `dac` |

`mini.ai` adds better around/inside behavior, and Treesitter textobjects add
function/class awareness.

## Search and Replace

| Goal | Keys |
| --- | --- |
| Help tags | `<leader>sh` |
| Keymaps | `<leader>sk` |
| Files | `<leader>sf` |
| Builtin pickers | `<leader>ss` |
| Word under cursor | `<leader>sw` |
| Live grep | `<leader>sg` |
| Diagnostics | `<leader>sd` |
| Resume last picker | `<leader>sr` |
| Recent files | `<leader>s.` |
| Commands | `<leader>sc` |
| Open-file grep | `<leader>s/` |
| Neovim config files | `<leader>sn` |
| Project search and replace | `<leader>sR` |

Hands-on flow:

1. Use `<leader>sg` to find a symbol or string.
2. Use `<C-q>` in Telescope when you want a quickfix list.
3. Use `<leader>sR` for real project edits with preview.
4. Use `<leader>f` after edits to format.

## LSP and Code Intelligence

| Goal | Keys |
| --- | --- |
| Rename symbol | `grn` |
| Code action | `gra` |
| References | `grr` or `<leader>gr` |
| Implementation | `gri` or `<leader>gi` |
| Definition | `grd` or `<leader>gd` |
| Declaration | `grD` or `<leader>gD` |
| Document symbols | `gO` |
| Workspace symbols | `gW` |
| Type definition | `grt` or `<leader>gt` |
| Toggle inlay hints | `<leader>th` |

This config also enables LSP CodeLens when the server supports it and linked
editing for servers that expose `textDocument/linkedEditingRange`.

## Diagnostics

| Goal | Keys |
| --- | --- |
| Previous diagnostic | `[d` |
| Next diagnostic | `]d` |
| Diagnostic details | `<leader>de` |
| Diagnostics location list | `<leader>q` |
| Yank diagnostic context | `<leader>dy` |
| Trouble all diagnostics | `<leader>xx` |
| Trouble workspace diagnostics | `<leader>xw` |
| Trouble current document | `<leader>xd` |
| Trouble quickfix | `<leader>xq` |
| Trouble loclist | `<leader>xl` |

Diagnostic display is intentionally quieter:

- Virtual text shows warnings and errors.
- Underlines are limited to errors.
- Diagnostic floats use rounded borders.
- Jumping diagnostics opens a focused-on-cursor float through `jump.on_jump`.

## Git

### Repository-level UI

| Goal | Keys |
| --- | --- |
| Open Neogit | `<leader>Gg` |
| Open Diffview | `<leader>Gd` |
| Close Diffview | `<leader>GD` |
| Current file history | `<leader>Gf` |
| Repository history | `<leader>GF` |

### Hunk-level work

| Goal | Keys |
| --- | --- |
| Next / previous hunk | `]c` / `[c` |
| Stage hunk | `<leader>hs` |
| Reset hunk | `<leader>hr` |
| Stage buffer | `<leader>hS` |
| Undo staged hunk | `<leader>hu` |
| Reset buffer | `<leader>hR` |
| Preview hunk | `<leader>hp` |
| Preview hunk inline | `<leader>hi` |
| Blame current line | `<leader>hb` |
| Diff against index | `<leader>hd` |
| Diff against last commit | `<leader>hD` |
| All hunks to quickfix | `<leader>hQ` |
| Current buffer hunks to quickfix | `<leader>hq` |
| Toggle current-line blame | `<leader>tb` |
| Toggle word diff | `<leader>tw` |
| Toggle deleted lines | `<leader>tD` |

In visual mode, `<leader>hs` and `<leader>hr` stage or reset the selected hunk
range.

## Buffers, Windows, and Sessions

| Goal | Keys |
| --- | --- |
| Previous / next buffer | `<S-h>` / `<S-l>` |
| Pick buffer | `<leader>bp` |
| Delete current buffer | `<leader>bd` |
| Delete all listed buffers | `<leader>bD` |
| Move left / right window | `<leader>wh` / `<leader>wl` |
| Move lower / upper window | `<leader>wj` / `<leader>wk` |
| Tmux-aware navigation | `<C-h/j/k/l>` |
| Restore session | `<leader>wr` |
| Restore last session | `<leader>wl` |
| Stop session save | `<leader>wd` |

Splits open to the right and below by default.

## Files and AI-Friendly References

| Goal | Keys |
| --- | --- |
| Neo-tree reveal | `\` |
| Oil explorer | `<leader>eo` |
| Harpoon add file | `<leader>a` |
| Harpoon menu | `<leader>hm` or `<C-e>` |
| Harpoon previous / next | `<C-S-P>` / `<C-S-N>` |
| Yank absolute file location | `<leader>ya` |
| Yank relative file location | `<leader>yr` |
| Yank current file as `@path` | `<leader>yf` |
| Yank current directory as `@dir` | `<leader>yd` |

The reference yanks include file, range, and symbol context when available.
They are useful for prompts, review comments, and issue descriptions.

## Tests and Debugging

### Neotest

| Goal | Keys |
| --- | --- |
| Run nearest test | `<leader>nr` |
| Run current file | `<leader>nf` |
| Run suite from cwd | `<leader>ns` |
| Debug nearest test | `<leader>nd` |
| Toggle summary | `<leader>nn` |
| Open output | `<leader>no` |
| Toggle output panel | `<leader>nO` |
| Attach | `<leader>na` |
| Stop run | `<leader>nS` |

### DAP

| Goal | Keys |
| --- | --- |
| Continue / start | `<F5>` |
| Step into | `<F1>` |
| Step over | `<F2>` |
| Step out | `<F3>` |
| Toggle breakpoint | `<leader>b` |
| Conditional breakpoint | `<leader>B` |
| Toggle DAP UI | `<F7>` |

Configured adapters include Go through `dap-go` when `dlv` exists, JS/TS through
`js-debug-adapter`, and C/C++ through `codelldb`.

## CMake, Markdown, and Code Context

| Goal | Keys |
| --- | --- |
| CMake generate | `<leader>cg` |
| CMake build | `<leader>cb` |
| CMake run | `<leader>cr` |
| CMake test | `<leader>ct` |
| CMake config | `<leader>cc` |
| Markdown preview | `<leader>mp` |
| Toggle Treesitter context | `<leader>tc` |
| Next function start | `<leader>jm` |
| Next function end | `<leader>jM` |
| Previous function start | `<leader>jk` |
| Previous function end | `<leader>jK` |
| Next class start | `<leader>jc` |
| Previous class start | `<leader>jC` |
| Open all folds | `zR` |
| Close all folds | `zM` |

## Completion and Snippets

Completion uses `blink.cmp` with LSP, paths, and snippets.

| Goal | Keys |
| --- | --- |
| Open completion/docs | `<C-Space>` |
| Next / previous item | `<C-n>` / `<C-p>` |
| Accept completion | `<C-y>` |
| Hide menu | `<C-e>` |
| Toggle signature help | `<C-k>` |

Supermaven is active on insert:

| Goal | Keys |
| --- | --- |
| Accept suggestion | `<Tab>` |
| Clear suggestion | `<C-]>` |
| Accept word | `<C-j>` |

## Config-Specific Habits

- Use `<leader>` groups by memory shape: `s` for search, `g` for goto, `G` for
git UI, `h` for git hunks, `x` for Trouble, `n` for tests, `w` for windows
and sessions, `y` for reference yanks.
- Keep relative line numbers on. For example, `d5j` deletes five lines down,
and `y3k` yanks three lines up.
- Use `.` after focused edits. Example: `ciwnew_name<Esc>` then jump and press
`.` to repeat.
- Prefer text objects over visual selection when possible: `ci"`, `di)`,
`yaf`, `dac`.
- Use `<C-o>` after LSP jumps. Your jump list preserves view, so returning to
the previous context is less disorienting.
- Use `<leader>dy`, `<leader>yr`, and `<leader>yf` when copying context for AI
agents or code reviews.
- Do not rely on modelines for project settings. This config disables modelines
for safer project-local behavior.

## Five-Minute Drill

1. Open a project with `nvim .`.
2. Press `<leader>sf`, open a file.
3. Use `/`, `n`, `N`, `w`, `b`, `%`, `<C-d>`, and `<C-u>` to move without the mouse.
4. Change a word with `ciw`, repeat the edit elsewhere with `.`.
5. Select a function with `vaf`, then try `yaf` and `daf` in a scratch file.
6. Jump to definition with `<leader>gd`, return with `<C-o>`.
7. Open diagnostics with `<leader>xx`, then jump with `[d` and `]d`.
8. Preview a git hunk with `<leader>hp`, then stage it with `<leader>hs`.
9. Run the nearest test with `<leader>nr`.
10. Copy an AI-friendly reference with `<leader>yr`.
Loading
Loading