diff --git a/MIGRATION_PLAN.md b/MIGRATION_PLAN.md index ad33c37..162c6c6 100644 --- a/MIGRATION_PLAN.md +++ b/MIGRATION_PLAN.md @@ -334,39 +334,95 @@ Source of truth for the step-by-step rebuild. Keep this concise and up to date. - [x] Persistent folds (via UFO) -- no need, this is no longer required. - [x] Note: UFO handles folding; no explicit persistence mechanism needed -## Phase 11 — Colorscheme Integration +## Phase 11 — Colorscheme: Modern Paper Tonic ## Phase 11.1 — Confirm scope and priorities - [x] Confirm scope and priorities for this phase -- [x] Decision: Port Paper Tonic colorscheme from `~/projects/nvim-paper-tonic` -- [x] Decision: Install as local plugin via lazy.nvim (use `dir = '~/projects/nvim-paper-tonic'`) -- [x] Decision: Test first, then extend with missing highlights as needed -- [x] Custom TreeSitter captures to verify/define: `@CssClassName`, `@CssIdentifier`, `@DataAttribute`, `@DataAttributeValue`, `@cssPseudoClass`, `@cssNestingSelector`, etc. +- [x] Decision: Create modern Paper Tonic fork from scratch +- [x] Decision: Name = "paper-tonic-modern" +- [x] Decision: Location = inside nvim config initially, move to repo later +- [x] Decision: Structure = modular Lua colorscheme (colors.lua, groups/*.lua) +- [x] Phased approach: + - Phase 11.2-11.4: Extract palette and base groups + - Phase 11.5-11.6: General TreeSitter highlights (modern @* groups) + - Phase 11.7: Semantic highlighting (custom CSS/HTML captures) + - Phase 11.8: Plugin support (LSP, Telescope, Gitsigns, etc.) -## Phase 11.2 — Install Paper Tonic colorscheme -- [x] Create `lua/plugins/colorscheme.lua` with Paper Tonic as local plugin -- [x] Set `lazy = false` and `priority = 1000` to load first -- [x] Apply colorscheme in config function +## Phase 11.2 — Extract Paper Tonic color palette +- [ ] Create `lua/paper-tonic-modern/colors.lua` +- [ ] Extract all `c_*` color variables from Paper Tonic +- [ ] Document what each color represents (foreground, background, accent colors) +- [ ] Convert to modern format (keep hex, 256-color, ANSI mappings) -## Phase 11.3 — Verify custom TreeSitter highlights -- [ ] Open HTML/CSS files and verify custom captures have colors -- [ ] Check if `@CssClassName` (HTML class attributes) matches CSS class selector colors -- [ ] Check if `@CssIdentifier` (HTML id attributes) matches CSS id selector colors -- [ ] Check if `@DataAttribute` and `@DataAttributeValue` are distinct -- [ ] Check CSS-specific captures: `@cssPseudoClass`, `@cssNestingSelector`, `@CssUniversalSelector`, etc. +## Phase 11.3 — Create colorscheme structure +- [ ] Create directory structure: + - `colors/paper-tonic-modern.lua` (entry point) + - `lua/paper-tonic-modern/init.lua` (main logic) + - `lua/paper-tonic-modern/colors.lua` (palette) + - `lua/paper-tonic-modern/groups/` (highlight group definitions) +- [ ] Create helper function for setting highlights +- [ ] Set up colorscheme loading mechanism -## Phase 11.4 — Verify plugin highlights -- [ ] Telescope UI (borders, selection, prompts) -- [ ] Gitsigns (add, change, delete signs in gutter) -- [ ] nvim-cmp (completion menu, selected item, kind icons) -- [ ] LSP diagnostics (ERROR, WARN, HINT, INFO signs and virtual text) -- [ ] Oil.nvim (if distinctive colors needed) +## Phase 11.4 — Base vim highlight groups +- [ ] Create `lua/paper-tonic-modern/groups/editor.lua` +- [ ] Map Paper Tonic colors to base groups: Normal, Comment, LineNr, CursorLine, etc. +- [ ] Create `lua/paper-tonic-modern/groups/syntax.lua` +- [ ] Map to syntax groups: Function, String, Keyword, Identifier, etc. +- [ ] Test with simple Lua file to verify base colors work -## Phase 11.5 — Add missing highlights (if needed) -- [ ] Create `lua/colorscheme-overrides.lua` if custom highlights needed -- [ ] Define highlights for custom TreeSitter captures not in colorscheme -- [ ] Define highlights for plugins not covered by colorscheme -- [ ] Load overrides after colorscheme applies (use autocmd or lazy.nvim config) +## Phase 11.5 — Modern TreeSitter highlight groups +- [ ] Create `lua/paper-tonic-modern/groups/treesitter.lua` +- [ ] Map modern `@*` groups to Paper Tonic colors: + - Core: @variable, @function, @keyword, @string, @number, @boolean, @comment + - Types: @type, @property, @field, @parameter + - Operators: @operator, @punctuation.delimiter, @punctuation.bracket + - Language constructs: @keyword.function, @keyword.return, @keyword.conditional +- [ ] Use `:help treesitter-highlight-groups` as reference +- [ ] Test with multiple languages: Lua, PHP, JavaScript, HTML, CSS + +## Phase 11.6 — Language-specific TreeSitter groups +- [ ] Add language-specific overrides (e.g., @variable.php, @tag.html) +- [ ] Ensure HTML tags, CSS selectors, PHP variables have appropriate colors +- [ ] Test across primary languages (HTML, PHP, JS, CSS, Markdown) + +## Phase 11.7 — Semantic highlighting (custom captures) +- [ ] Create `lua/paper-tonic-modern/groups/semantic.lua` +- [ ] Define your custom semantic captures: + - @CssClassName (for CSS .class and HTML class="" - same color) + - @CssIdentifier (for CSS #id and HTML id="" - same color) + - @DataAttribute, @DataAttributeValue (HTML data-* attributes) + - @cssPseudoClass, @cssNestingSelector, @CssUniversalSelector (CSS-specific) +- [ ] Verify cross-language consistency: class names in HTML match CSS +- [ ] Test with existing custom queries (after/queries/css/highlights.scm, after/queries/html/highlights.scm) + +## Phase 11.8 — Plugin highlight groups +- [ ] Create `lua/paper-tonic-modern/groups/lsp.lua` +- [ ] Define LSP diagnostics: DiagnosticError, DiagnosticWarn, DiagnosticHint, DiagnosticInfo +- [ ] Define LSP UI: LspReferenceText, LspReferenceRead, LspReferenceWrite +- [ ] Create `lua/paper-tonic-modern/groups/plugins.lua` +- [ ] Add Telescope highlights (TelescopeNormal, TelescopeBorder, TelescopeSelection) +- [ ] Add Gitsigns highlights (GitSignsAdd, GitSignsChange, GitSignsDelete) +- [ ] Add nvim-cmp highlights (CmpItemKind*, CmpItemMenu, etc.) +- [ ] Add Oil.nvim highlights if needed + +## Phase 11.9 — Update plugin configuration +- [ ] Update `lua/plugins/colorscheme.lua` to use paper-tonic-modern +- [ ] Remove old Paper Tonic reference +- [ ] Remove colorscheme-overrides.lua (no longer needed) +- [ ] Test full config reload + +## Phase 11.10 — Validation and polish +- [ ] Test all primary languages (Lua, PHP, HTML, CSS, JS, Markdown) +- [ ] Verify semantic consistency (CSS classes in HTML match CSS files) +- [ ] Check plugin UI colors (Telescope, Gitsigns, nvim-cmp) +- [ ] Verify LSP diagnostics are visible and distinct +- [ ] Document color scheme in README + +## Phase 11.11 — Extract to separate repo (later) +- [ ] Move to `~/projects/paper-tonic-modern/` +- [ ] Update plugin config to point to new location +- [ ] Add proper README, LICENSE, screenshots +- [ ] Consider publishing to GitHub ## Phase 12 — Cleanup & Validation