diff --git a/flake.lock b/flake.lock index 3b25694..38a24cc 100644 --- a/flake.lock +++ b/flake.lock @@ -178,22 +178,6 @@ "type": "github" } }, - "jj-nvim": { - "flake": false, - "locked": { - "lastModified": 1769675330, - "narHash": "sha256-Zere6x/mcV0zlsqp6RB7XWkeXRBmDhSl8rpEYA1x+Sg=", - "owner": "NicolasGB", - "repo": "jj.nvim", - "rev": "680d864e1165ac5d334eef6d69e301f2094ff4c3", - "type": "github" - }, - "original": { - "owner": "NicolasGB", - "repo": "jj.nvim", - "type": "github" - } - }, "luvit-meta": { "flake": false, "locked": { @@ -219,11 +203,11 @@ ] }, "locked": { - "lastModified": 1769904653, - "narHash": "sha256-ZDVBonlM1KWDrgmiWQiUffHkxrlmb7ycA6c/BzZO2nw=", + "lastModified": 1768349111, + "narHash": "sha256-Ufn7eONdsaB6wso01KOyC8fWXDPbCsf6q/120JrSRBg=", "owner": "nix-community", "repo": "neovim-nightly-overlay", - "rev": "ff53ef2634c6fe3af40c2ac893fd2e486e5fe353", + "rev": "c18fb3367dbaa0830dd46443cc1cb006444e1f0e", "type": "github" }, "original": { @@ -235,11 +219,11 @@ "neovim-src": { "flake": false, "locked": { - "lastModified": 1769867454, - "narHash": "sha256-lJWmcmmbUlzWNtIU7klxvBzTDzeAThcgoCPAqMn46o0=", + "lastModified": 1768347573, + "narHash": "sha256-s3CvS2gr1y+DabfpNHjPy4Al2KVcWbS4F5TsfwR12Cs=", "owner": "neovim", "repo": "neovim", - "rev": "270c7b46afabdb16a833f67747067b769901f269", + "rev": "bb0f28f20be3b5dd64881d0528f43a8e2eea63c0", "type": "github" }, "original": { @@ -293,11 +277,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1769940825, - "narHash": "sha256-M2tEly38lj2LViQq51MNLxDtHUY71qiGaksS5z3zG4c=", + "lastModified": 1768384274, + "narHash": "sha256-Iy0CREn8AVYpQCXffCGnP1/PemrWDr2ST+vlFji/UQA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "799ceb0d87a54388051a4e41ef33a9ba555c30b6", + "rev": "6a758e1182472360ea18946eb064fef36041d744", "type": "github" }, "original": { @@ -312,7 +296,6 @@ "dart": "dart", "flake-utils": "flake-utils_2", "gen-luarc": "gen-luarc", - "jj-nvim": "jj-nvim", "neovim-nightly-overlay": "neovim-nightly-overlay", "nixpkgs": "nixpkgs_2" } diff --git a/flake.nix b/flake.nix index c722d83..5312b1a 100644 --- a/flake.nix +++ b/flake.nix @@ -15,10 +15,6 @@ dart = { url = "github:iofq/dart.nvim"; }; - jj-nvim = { - url = "github:NicolasGB/jj.nvim"; - flake = false; - }; }; outputs = inputs@{ diff --git a/nix/neovim-overlay.nix b/nix/neovim-overlay.nix index 8433c39..6cf2234 100644 --- a/nix/neovim-overlay.nix +++ b/nix/neovim-overlay.nix @@ -4,27 +4,18 @@ final: prev: let mkNeovim = prev.callPackage ./mkNeovim.nix { pkgs = final; }; dart-nvim = inputs.dart.packages.x86_64-linux.default; - mkPlugin = - src: pname: - prev.vimUtils.buildVimPlugin { - inherit pname src; - version = src.lastModifiedDate; - }; - jj-nvim = mkPlugin inputs.jj-nvim "jj-nvim"; plugins = with prev.vimPlugins; [ blink-cmp blink-ripgrep-nvim conform-nvim dart-nvim - jj-nvim mini-nvim nvim-autopairs nvim-lint nvim-lspconfig nvim-treesitter.withAllGrammars nvim-treesitter-textobjects - nvim-treesitter-context quicker-nvim render-markdown-nvim snacks-nvim diff --git a/nvim/after/colors/iofq.lua b/nvim/after/colors/iofq.lua index b1e6a7a..7d80403 100644 --- a/nvim/after/colors/iofq.lua +++ b/nvim/after/colors/iofq.lua @@ -19,6 +19,9 @@ hi(0, '@constant.builtin', { fg = '#ff9664' }) hi(0, '@constant.macro', { link = 'Macro' }) hi(0, '@constructor', { fg = '#a1cdd8' }) hi(0, '@constructor.lua', { fg = '#cbd9d8' }) +hi(0, '@diff.delta', { link = 'diffChanged' }) +hi(0, '@diff.minus', { link = 'diffRemoved' }) +hi(0, '@diff.plus', { link = 'diffAdded' }) hi(0, '@exception', { link = 'Exception' }) hi(0, '@field', { fg = '#5a93aa' }) hi(0, '@field.rust', { fg = '#cbd9d8' }) @@ -102,11 +105,35 @@ hi(0, '@string.special.url', { fg = '#ff9664', italic = true, underline = true } hi(0, '@tag', { fg = '#ad5c7c' }) hi(0, '@tag.attribute', { fg = '#73a3b7', italic = true }) hi(0, '@tag.delimiter', { fg = '#afd4de' }) +hi(0, '@text', { fg = '#e6eaea' }) +hi(0, '@text.danger', { bg = '#e85c51', fg = '#152528' }) +hi(0, '@text.diff.add', { link = 'diffAdded' }) +hi(0, '@text.diff.delete', { link = 'diffRemoved' }) +hi(0, '@text.emphasis', { link = 'Italic' }) +hi(0, '@text.literal', { fg = '#a1cdd8', italic = true }) +hi(0, '@text.math', { fg = '#73a3b7' }) +hi(0, '@text.note', { bg = '#5a93aa', fg = '#152528' }) +hi(0, '@text.reference', { bold = true, fg = '#ad5c7c' }) +hi(0, '@text.strike', { fg = '#e6eaea', strikethrough = true }) +hi(0, '@text.strong', { bold = true, fg = '#c54e45' }) +hi(0, '@text.title', { link = 'Title' }) +hi(0, '@text.todo', { bg = '#7aa4a1', fg = '#152528' }) +hi(0, '@text.todo.checked', { fg = '#7aa4a1' }) +hi(0, '@text.todo.unchecked', { fg = '#fda47f' }) +hi(0, '@text.underline', { link = 'Underline' }) +hi(0, '@text.warning', { bg = '#fda47f', fg = '#152528' }) hi(0, '@type.builtin', { fg = '#afd4de' }) hi(0, '@variable', { fg = '#ebebeb' }) hi(0, '@variable.builtin', { fg = '#e85c51' }) hi(0, '@variable.member', { fg = '#5a93aa' }) hi(0, '@variable.parameter', { fg = '#afd4de' }) +hi(0, 'AerialGuide', { fg = '#2d4f56' }) +hi(0, 'AerialLine', { link = 'Search' }) +hi(0, 'AlphaButtons', { fg = '#a1cdd8' }) +hi(0, 'AlphaFooter', { fg = '#5a93aa' }) +hi(0, 'AlphaHeader', { fg = '#73a3b7' }) +hi(0, 'AlphaHeaderLabel', { fg = '#ff8349' }) +hi(0, 'AlphaShortcut', { fg = '#ff8349' }) hi(0, 'BlinkCmpCursorLineDocumentationHack', { bg = '#254147' }) hi(0, 'BlinkCmpCursorLineMenuHack', { bg = '#425e5e' }) hi(0, 'BlinkCmpDoc', { bg = '#0f1c1e', fg = '#e6eaea' }) @@ -158,6 +185,36 @@ hi(0, 'BufferVisibleMod', { bg = '#0f1c1e', fg = '#fda47f' }) hi(0, 'BufferVisibleSign', { bg = '#0f1c1e', fg = '#5a93aa' }) hi(0, 'BufferVisibleTarget', { bg = '#0f1c1e', fg = '#e85c51' }) hi(0, 'Character', { link = 'String' }) +hi(0, 'CmpDocumentation', { bg = '#0f1c1e', fg = '#e6eaea' }) +hi(0, 'CmpDocumentationBorder', { bg = '#0f1c1e', fg = '#293e40' }) +hi(0, 'CmpItemAbbr', { fg = '#e6eaea' }) +hi(0, 'CmpItemAbbrDeprecated', { fg = '#587b7b', strikethrough = true }) +hi(0, 'CmpItemAbbrMatch', { fg = '#73a3b7' }) +hi(0, 'CmpItemAbbrMatchFuzzy', { fg = '#73a3b7' }) +hi(0, 'CmpItemKindClass', { link = 'Type' }) +hi(0, 'CmpItemKindConstant', { link = '@constant' }) +hi(0, 'CmpItemKindConstructor', { link = 'Function' }) +hi(0, 'CmpItemKindDefault', { fg = '#cbd9d8' }) +hi(0, 'CmpItemKindEnum', { link = 'Constant' }) +hi(0, 'CmpItemKindEnumMember', { link = '@field' }) +hi(0, 'CmpItemKindEvent', { link = 'Constant' }) +hi(0, 'CmpItemKindField', { link = '@field' }) +hi(0, 'CmpItemKindFunction', { link = 'Function' }) +hi(0, 'CmpItemKindInterface', { link = 'Constant' }) +hi(0, 'CmpItemKindKeyword', { link = 'Identifier' }) +hi(0, 'CmpItemKindMethod', { link = 'Function' }) +hi(0, 'CmpItemKindModule', { link = '@namespace' }) +hi(0, 'CmpItemKindOperator', { link = 'Operator' }) +hi(0, 'CmpItemKindProperty', { link = '@property' }) +hi(0, 'CmpItemKindReference', { link = 'Keyword' }) +hi(0, 'CmpItemKindSnippet', { fg = '#cbd9d8' }) +hi(0, 'CmpItemKindStruct', { link = 'Type' }) +hi(0, 'CmpItemKindTypeParameter', { link = '@field' }) +hi(0, 'CmpItemKindUnit', { link = 'Constant' }) +hi(0, 'CmpItemKindValue', { link = 'Keyword' }) +hi(0, 'CmpItemKindVariable', { link = '@variable' }) +hi(0, 'CmpItemMenu', { link = 'Comment' }) +hi(0, 'CocInlayHint', { bg = '#1d3337', fg = '#6d7f8b' }) hi(0, 'ColorColumn', { bg = '#1d3337' }) hi(0, 'Comment', { fg = '#6d7f8b' }) hi(0, 'Conceal', { fg = '#2d4f56' }) @@ -168,6 +225,26 @@ hi(0, 'Cursor', { bg = '#e6eaea', fg = '#152528' }) hi(0, 'CursorColumn', { link = 'CursorLine' }) hi(0, 'CursorLine', { bg = '#254147' }) hi(0, 'CursorLineNr', { bold = true, fg = '#fda47f' }) +hi(0, 'DapUIBreakpointsCurrentLine', { bold = true, fg = '#7aa4a1' }) +hi(0, 'DapUIBreakpointsDisabledLine', { fg = '#6d7f8b' }) +hi(0, 'DapUIBreakpointsInfo', { fg = '#5a93aa' }) +hi(0, 'DapUIBreakpointsLine', { link = 'DapUILineNumber' }) +hi(0, 'DapUIBreakpointsPath', { fg = '#afd4de' }) +hi(0, 'DapUIDecoration', { fg = '#587b7b' }) +hi(0, 'DapUIFloatBorder', { link = 'FloatBorder' }) +hi(0, 'DapUIFrameName', { link = 'Normal' }) +hi(0, 'DapUILineNumber', { link = 'Number' }) +hi(0, 'DapUIModifiedValue', { bold = true, fg = '#ebebeb' }) +hi(0, 'DapUIScope', { fg = '#afd4de' }) +hi(0, 'DapUISource', { link = 'Keyword' }) +hi(0, 'DapUIStoppedThread', { fg = '#afd4de' }) +hi(0, 'DapUIThread', { link = 'String' }) +hi(0, 'DapUIType', { link = 'Type' }) +hi(0, 'DapUIValue', { fg = '#ebebeb' }) +hi(0, 'DapUIVariable', { fg = '#ebebeb' }) +hi(0, 'DapUIWatchesEmpty', { fg = '#e85c51' }) +hi(0, 'DapUIWatchesError', { fg = '#e85c51' }) +hi(0, 'DapUIWatchesValue', { fg = '#fda47f' }) hi(0, 'DashboardCenter', { link = 'String' }) hi(0, 'DashboardFooter', { fg = '#ff9664', italic = true }) hi(0, 'DashboardHeader', { link = 'Title' }) @@ -188,20 +265,39 @@ hi(0, 'DiagnosticVirtualTextInfo', { bg = '#1f353c', fg = '#5a93aa' }) hi(0, 'DiagnosticVirtualTextOk', { bg = '#24383a', fg = '#7aa4a1' }) hi(0, 'DiagnosticVirtualTextWarn', { bg = '#383835', fg = '#fda47f' }) hi(0, 'DiagnosticWarn', { fg = '#fda47f' }) -hi(0, 'DiffAdd', { bg = '#24383a', fg = '#7aa4a1' }) -hi(0, 'DiffChange', { bg = '#31474b', fg = '#73daca' }) -hi(0, 'DiffDelete', { bg = '#31474b', fg = '#e85c51' }) +hi(0, 'DiffAdd', { bg = '#293e40' }) +hi(0, 'DiffChange', { bg = '#31474b' }) +hi(0, 'DiffDelete', { bg = '#4a3332' }) hi(0, 'DiffText', { bg = '#466066' }) +hi(0, 'DiffviewDiffAddAsDelete', { bg = '#4a3332' }) +hi(0, 'DiffviewDim1', { fg = '#6d7f8b' }) +hi(0, 'DiffviewFilePanelCounter', { bold = true, fg = '#a1cdd8' }) +hi(0, 'DiffviewFilePanelFileName', { fg = '#e6eaea' }) +hi(0, 'DiffviewFilePanelTitle', { bold = true, fg = '#b97490' }) +hi(0, 'DiffviewPrimary', { fg = '#73a3b7' }) +hi(0, 'DiffviewSecondary', { fg = '#7aa4a1' }) hi(0, 'Directory', { fg = '#73a3b7' }) hi(0, 'EndOfBuffer', { fg = '#152528' }) hi(0, 'Error', { fg = '#e85c51' }) hi(0, 'ErrorMsg', { fg = '#e85c51' }) hi(0, 'Exception', { link = 'Keyword' }) +hi(0, 'EyelinerDimmed', { fg = '#6d7f8b' }) +hi(0, 'EyelinerPrimary', { underline = true }) +hi(0, 'EyelinerSecondary', { bold = true, underline = true }) +hi(0, 'FernBranchText', { fg = '#5a93aa' }) +hi(0, 'FidgetTask', { link = 'LineNr' }) +hi(0, 'FidgetTitle', { link = 'Title' }) hi(0, 'FloatBorder', { fg = '#587b7b' }) hi(0, 'FocusedSymbol', { link = 'Search' }) hi(0, 'FoldColumn', { fg = '#587b7b' }) hi(0, 'Folded', { bg = '#1d3337', fg = '#587b7b' }) hi(0, 'Function', { fg = '#73a3b7' }) +hi(0, 'GitGutterAdd', { fg = '#7aa4a1' }) +hi(0, 'GitGutterChange', { fg = '#fda47f' }) +hi(0, 'GitGutterDelete', { fg = '#e85c51' }) +hi(0, 'GitSignsAdd', { fg = '#7aa4a1' }) +hi(0, 'GitSignsChange', { fg = '#fda47f' }) +hi(0, 'GitSignsDelete', { fg = '#e85c51' }) hi(0, 'GlyphPalette0', { fg = '#2f3239' }) hi(0, 'GlyphPalette1', { fg = '#e85c51' }) hi(0, 'GlyphPalette10', { fg = '#8eb2af' }) @@ -218,19 +314,54 @@ hi(0, 'GlyphPalette6', { fg = '#a1cdd8' }) hi(0, 'GlyphPalette7', { fg = '#eeeeee' }) hi(0, 'GlyphPalette8', { fg = '#4e5157' }) hi(0, 'GlyphPalette9', { fg = '#eb746b' }) +hi(0, 'HopNextKey', { bold = true, fg = '#a1cdd8' }) +hi(0, 'HopNextKey1', { bold = true, fg = '#5a93aa' }) +hi(0, 'HopNextKey2', { fg = '#4d7d90' }) hi(0, 'HopUnmatched', { fg = '#6d7f8b' }) hi(0, 'Identifier', { fg = '#a1cdd8' }) hi(0, 'IncSearch', { bg = '#7aa4a1', fg = '#152528' }) +hi(0, 'IndentBlanklineChar', { fg = '#254147' }) +hi(0, 'IndentBlanklineContextChar', { fg = '#ebebeb' }) +hi(0, 'IndentBlanklineContextStart', { sp = '#ebebeb', underline = true }) +hi(0, 'IndentBlanklineIndent1', { fg = '#cb7985' }) +hi(0, 'IndentBlanklineIndent2', { fg = '#5a93aa' }) +hi(0, 'IndentBlanklineIndent3', { fg = '#ff8349' }) +hi(0, 'IndentBlanklineIndent4', { fg = '#a1cdd8' }) +hi(0, 'IndentBlanklineIndent5', { fg = '#e85c51' }) +hi(0, 'IndentBlanklineIndent6', { fg = '#fda47f' }) hi(0, 'Italic', { italic = true }) hi(0, 'Keyword', { fg = '#ad5c7c' }) hi(0, 'Label', { link = 'Conditional' }) +hi(0, 'LazyButtonActive', { link = 'TabLineSel' }) +hi(0, 'LazyDimmed', { link = 'LineNr' }) +hi(0, 'LazyProp', { link = 'LineNr' }) +hi(0, 'LeapBackdrop', { fg = '#6d7f8b' }) +hi(0, 'LeapLabelPrimary', { bg = '#d38d97', fg = '#152528' }) +hi(0, 'LeapLabelSecondary', { bg = '#afd4de', fg = '#152528' }) +hi(0, 'LeapMatch', { bg = '#d38d97', fg = '#152528' }) +hi(0, 'LightspeedGreyWash', { fg = '#6d7f8b' }) hi(0, 'LineNr', { fg = '#587b7b' }) hi(0, 'LspCodeLens', { fg = '#6d7f8b' }) hi(0, 'LspCodeLensSeparator', { fg = '#587b7b' }) +hi(0, 'LspFloatWinBorder', { fg = '#587b7b' }) +hi(0, 'LspFloatWinNormal', { bg = '#0f1c1e' }) hi(0, 'LspInlayHint', { bg = '#1d3337', fg = '#6d7f8b' }) hi(0, 'LspReferenceRead', { bg = '#293e40' }) hi(0, 'LspReferenceText', { bg = '#293e40' }) hi(0, 'LspReferenceWrite', { bg = '#293e40' }) +hi(0, 'LspSagaBorderTitle', { link = 'Title' }) +hi(0, 'LspSagaCodeActionBorder', { fg = '#587b7b' }) +hi(0, 'LspSagaCodeActionContent', { link = 'String' }) +hi(0, 'LspSagaCodeActionTitle', { link = 'Title' }) +hi(0, 'LspSagaDefPreviewBorder', { fg = '#587b7b' }) +hi(0, 'LspSagaFinderSelection', { fg = '#293e40' }) +hi(0, 'LspSagaHoverBorder', { fg = '#587b7b' }) +hi(0, 'LspSagaRenameBorder', { fg = '#587b7b' }) +hi(0, 'LspSagaSignatureHelpBorder', { fg = '#e85c51' }) +hi(0, 'LspSignatureActiveParameter', { fg = '#425e5e' }) +hi(0, 'LspTroubleCount', { bg = '#587b7b', fg = '#ad5c7c' }) +hi(0, 'LspTroubleNormal', { bg = '#0f1c1e', fg = '#587b7b' }) +hi(0, 'LspTroubleText', { fg = '#cbd9d8' }) hi(0, 'MatchParen', { bold = true, fg = '#fda47f' }) hi(0, 'MiniAnimateCursor', { nocombine = true, reverse = true }) hi(0, 'MiniAnimateNormalFloat', { link = 'NormalFloat' }) @@ -254,11 +385,11 @@ hi(0, 'MiniDepsTitle', { link = 'Title' }) hi(0, 'MiniDepsTitleError', { bg = '#e85c51', fg = '#0f1c1e' }) hi(0, 'MiniDepsTitleSame', { link = 'DiffText' }) hi(0, 'MiniDepsTitleUpdate', { bg = '#7aa4a1', fg = '#0f1c1e' }) -hi(0, 'MiniDiffOverAdd', { link = 'diffAdded' }) -hi(0, 'MiniDiffOverChange', { link = 'diffChanged' }) -hi(0, 'MiniDiffOverChangeBuf', { link = 'diffChanged' }) -hi(0, 'MiniDiffOverContext', { link = 'diffAdded' }) -hi(0, 'MiniDiffOverDelete', { link = 'diffRemoved' }) +hi(0, 'MiniDiffOverAdd', { bg = '#31474b' }) +hi(0, 'MiniDiffOverChange', { bg = '#466066' }) +hi(0, 'MiniDiffOverChangeBuf', { bg = '#466066' }) +hi(0, 'MiniDiffOverContext', { bg = '#31474b' }) +hi(0, 'MiniDiffOverDelete', { fg = 'red' }) hi(0, 'MiniDiffSignAdd', { fg = 'green', bold = true }) hi(0, 'MiniDiffSignChange', { fg = 'green', bold = true }) hi(0, 'MiniDiffSignDelete', { fg = 'red', bold = true }) @@ -349,6 +480,75 @@ hi(0, 'ModesDelete', { bg = '#e85c51' }) hi(0, 'ModesInsert', { bg = '#a1cdd8' }) hi(0, 'ModesVisual', { bg = '#ad5c7c' }) hi(0, 'MoreMsg', { bold = true, fg = '#5a93aa' }) +hi(0, 'NagicIconsOperator', { link = 'Operator' }) +hi(0, 'NavicIconsBoolean', { link = 'Boolean' }) +hi(0, 'NavicIconsClass', { link = 'Type' }) +hi(0, 'NavicIconsConstant', { link = 'Constant' }) +hi(0, 'NavicIconsConstructor', { link = 'Function' }) +hi(0, 'NavicIconsEnum', { link = 'Constant' }) +hi(0, 'NavicIconsEnumMember', { link = '@field' }) +hi(0, 'NavicIconsEvent', { link = 'Constant' }) +hi(0, 'NavicIconsField', { link = '@field' }) +hi(0, 'NavicIconsFile', { link = 'Directory' }) +hi(0, 'NavicIconsFunction', { link = 'Function' }) +hi(0, 'NavicIconsInterface', { link = 'Constant' }) +hi(0, 'NavicIconsKey', { link = 'Identifier' }) +hi(0, 'NavicIconsMethod', { link = 'Function' }) +hi(0, 'NavicIconsModule', { link = '@namespace' }) +hi(0, 'NavicIconsNamespace', { link = '@namespace' }) +hi(0, 'NavicIconsNull', { link = 'Type' }) +hi(0, 'NavicIconsNumber', { link = 'Number' }) +hi(0, 'NavicIconsObject', { link = '@namespace' }) +hi(0, 'NavicIconsPackage', { link = '@namespace' }) +hi(0, 'NavicIconsProperty', { link = '@property' }) +hi(0, 'NavicIconsString', { link = 'String' }) +hi(0, 'NavicIconsStruct', { link = 'Type' }) +hi(0, 'NavicIconsTypeParameter', { link = '@field' }) +hi(0, 'NavicIconsVariable', { link = '@variable' }) +hi(0, 'NavicSeparator', { fg = '#2d4f56' }) +hi(0, 'NavicText', { fg = '#e6eaea' }) +hi(0, 'NeoTreeDimText', { link = 'Conceal' }) +hi(0, 'NeoTreeDirectoryIcon', { fg = '#5a93aa' }) +hi(0, 'NeoTreeDirectoryName', { fg = '#5a93aa' }) +hi(0, 'NeoTreeDotfile', { fg = '#4d7d90' }) +hi(0, 'NeoTreeFileName', { fg = '#cbd9d8' }) +hi(0, 'NeoTreeFileNameOpened', { fg = '#e6eaea' }) +hi(0, 'NeoTreeGitAdded', { fg = '#7aa4a1' }) +hi(0, 'NeoTreeGitConflict', { fg = '#ff8349', italic = true }) +hi(0, 'NeoTreeGitDeleted', { fg = '#e85c51' }) +hi(0, 'NeoTreeGitIgnored', { fg = '#6d7f8b' }) +hi(0, 'NeoTreeGitModified', { fg = '#fda47f' }) +hi(0, 'NeoTreeGitUntracked', { fg = '#934e69' }) +hi(0, 'NeoTreeIndentMarker', { fg = '#2d4f56' }) +hi(0, 'NeoTreeNormal', { fg = '#e6eaea' }) +hi(0, 'NeoTreeNormalNC', { link = 'NeoTreeNormal' }) +hi(0, 'NeoTreeRootName', { bold = true, fg = '#ff8349' }) +hi(0, 'NeoTreeSymbolicLinkTarget', { fg = '#ad6771' }) +hi(0, 'NeogitBranch', { fg = '#fda47f' }) +hi(0, 'NeogitDiffAdd', { fg = '#7aa4a1' }) +hi(0, 'NeogitDiffAddHighlight', { bg = '#293e40' }) +hi(0, 'NeogitDiffContextHighlight', { bg = '#1d3337' }) +hi(0, 'NeogitDiffDelete', { fg = '#e85c51' }) +hi(0, 'NeogitDiffDeleteHighlight', { bg = '#4a3332' }) +hi(0, 'NeogitHunkHeader', { bg = '#254147', fg = '#5a93aa' }) +hi(0, 'NeogitHunkHeaderHighlight', { bg = '#293e40', fg = '#5a93aa' }) +hi(0, 'NeogitNotificationError', { fg = '#e85c51' }) +hi(0, 'NeogitNotificationInfo', { fg = '#5a93aa' }) +hi(0, 'NeogitNotificationWarning', { fg = '#fda47f' }) +hi(0, 'NeogitRemote', { fg = '#7aa4a1' }) +hi(0, 'NeotestAdapterName', { bold = true, fg = '#cb7985' }) +hi(0, 'NeotestDir', { fg = '#a1cdd8' }) +hi(0, 'NeotestExpandMarker', { link = 'Conceal' }) +hi(0, 'NeotestFailed', { fg = '#e85c51' }) +hi(0, 'NeotestFile', { fg = '#5a93aa' }) +hi(0, 'NeotestFocused', { underline = true }) +hi(0, 'NeotestIndent', { link = 'Conceal' }) +hi(0, 'NeotestMarked', { bold = true, fg = '#e6eaea' }) +hi(0, 'NeotestNamespace', { fg = '#89aeb8' }) +hi(0, 'NeotestPassed', { fg = '#7aa4a1' }) +hi(0, 'NeotestRunning', { fg = '#ff8349' }) +hi(0, 'NeotestSkipped', { fg = '#fda47f' }) +hi(0, 'NeotestTest', { link = 'Normal' }) hi(0, 'NonText', { fg = '#2d4f56' }) hi(0, 'Normal', { fg = '#e6eaea' }) hi(0, 'NormalFloat', { bg = '#0f1c1e', fg = '#e6eaea' }) @@ -370,10 +570,32 @@ hi(0, 'NotifyWARNBorder', { fg = '#896554' }) hi(0, 'NotifyWARNIcon', { link = 'NotifyWARNTitle' }) hi(0, 'NotifyWARNTitle', { fg = '#fda47f' }) hi(0, 'Number', { fg = '#ff8349' }) +hi(0, 'NvimTreeEmptyFolderName', { fg = '#587b7b' }) +hi(0, 'NvimTreeFolderIcon', { fg = '#5a93aa' }) +hi(0, 'NvimTreeFolderName', { fg = '#5a93aa' }) +hi(0, 'NvimTreeGitDeleted', { fg = '#e85c51' }) +hi(0, 'NvimTreeGitDirty', { fg = '#fda47f' }) +hi(0, 'NvimTreeGitMerge', { fg = '#ff8349' }) +hi(0, 'NvimTreeGitNew', { fg = '#7aa4a1' }) +hi(0, 'NvimTreeGitRenamed', { link = 'NvimTreeGitDeleted' }) +hi(0, 'NvimTreeGitStaged', { link = 'NvimTreeGitStaged' }) +hi(0, 'NvimTreeImageFile', { fg = '#c8c8c8' }) +hi(0, 'NvimTreeIndentMarker', { fg = '#2d4f56' }) +hi(0, 'NvimTreeNormal', { fg = '#e6eaea' }) +hi(0, 'NvimTreeOpenedFile', { fg = '#d38d97' }) +hi(0, 'NvimTreeOpenedFolderName', { fg = '#73a3b7' }) +hi(0, 'NvimTreeRootFolder', { bold = true, fg = '#ff8349' }) +hi(0, 'NvimTreeSpecialFile', { fg = '#a1cdd8' }) +hi(0, 'NvimTreeSymlink', { fg = '#ad6771' }) +hi(0, 'NvimTreeVertSplit', { link = 'VertSplit' }) hi(0, 'Operator', { fg = '#cbd9d8' }) hi(0, 'Pmenu', { bg = '#293e40', fg = '#e6eaea' }) hi(0, 'PmenuSel', { bg = '#425e5e' }) hi(0, 'PmenuThumb', { bg = '#425e5e' }) +hi(0, 'PounceAccept', { bg = '#ff9664', fg = '#152528' }) +hi(0, 'PounceAcceptBest', { bg = '#afd4de', fg = '#152528' }) +hi(0, 'PounceGap', { bg = '#293e40', fg = '#e6eaea' }) +hi(0, 'PounceMatch', { bg = '#425e5e', fg = '#e6eaea' }) hi(0, 'PreProc', { fg = '#d38d97' }) hi(0, 'Question', { link = 'MoreMsg' }) hi(0, 'QuickFixLine', { link = 'CursorLine' }) @@ -388,6 +610,9 @@ hi(0, 'Repeat', { link = 'Conditional' }) hi(0, 'Search', { bg = '#425e5e', fg = '#e6eaea' }) hi(0, 'SignColumn', { fg = '#587b7b' }) hi(0, 'SignColumnSB', { link = 'SignColumn' }) +hi(0, 'SignifySignAdd', { fg = '#7aa4a1' }) +hi(0, 'SignifySignChange', { fg = '#fda47f' }) +hi(0, 'SignifySignDelete', { fg = '#e85c51' }) hi(0, 'SnacksBackdrop', { bg = '#000000' }) hi(0, 'SnacksImageMath', { fg = '#73a3b7' }) hi(0, 'SnacksPickerDir', { fg = '#cccccc' }) @@ -401,38 +626,62 @@ hi(0, 'SpellLocal', { sp = '#5a93aa', undercurl = true }) hi(0, 'SpellRare', { sp = '#5a93aa', undercurl = true }) hi(0, 'Statement', { fg = '#ad5c7c' }) hi(0, 'StatusLine', { bg = 'none' }) -hi(0, 'StatusLineNC', { bg = 'none', fg = 'grey' }) +hi(0, 'StatusLineNC', { bg = 'none', fg = "grey" }) hi(0, 'String', { fg = '#7aa4a1' }) hi(0, 'Substitute', { bg = '#e85c51', fg = '#152528' }) hi(0, 'SymbolOutlineConnector', { link = 'Conceal' }) +hi(0, 'TSRainbowBlue', { fg = '#5a93aa' }) +hi(0, 'TSRainbowCyan', { fg = '#a1cdd8' }) +hi(0, 'TSRainbowGreen', { fg = '#7aa4a1' }) +hi(0, 'TSRainbowOrange', { fg = '#ff8349' }) +hi(0, 'TSRainbowRed', { fg = '#e85c51' }) +hi(0, 'TSRainbowViolet', { fg = '#ad5c7c' }) +hi(0, 'TSRainbowYellow', { fg = '#fda47f' }) hi(0, 'TabLine', { bg = '#1d3337', fg = '#cbd9d8' }) hi(0, 'TablineFill', { bg = 'none' }) hi(0, 'TabLineSel', { bg = '#587b7b', fg = '#152528' }) +hi(0, 'TelescopeBorder', { fg = '#2d4f56' }) +hi(0, 'TelescopeMatching', { link = 'Search' }) +hi(0, 'TelescopeSelection', { link = 'CursorLine' }) +hi(0, 'TelescopeSelectionCaret', { fg = '#7aa4a1' }) hi(0, 'Title', { bold = true, fg = '#73a3b7' }) hi(0, 'Todo', { bg = '#5a93aa', fg = '#152528' }) hi(0, 'Type', { fg = '#fda47f' }) hi(0, 'Visual', { bg = '#293e40' }) hi(0, 'WarningMsg', { fg = '#fda47f' }) +hi(0, 'WhichKey', { link = 'Identifier' }) +hi(0, 'WhichKeyDesc', { link = 'Keyword' }) +hi(0, 'WhichKeyFloat', { link = 'NormalFloat' }) +hi(0, 'WhichKeyGroup', { link = 'Function' }) +hi(0, 'WhichKeySeparator', { link = 'Comment' }) +hi(0, 'WhichKeySeperator', { link = 'Comment' }) +hi(0, 'WhichKeyValue', { link = 'Comment' }) hi(0, 'Whitespace', { fg = '#254147' }) hi(0, 'WildMenu', { link = 'Pmenu' }) hi(0, 'WinBar', { bold = true, fg = '#587b7b' }) hi(0, 'WinBarNC', { bold = true, fg = '#587b7b' }) hi(0, 'WinSeparator', { fg = '#0f1c1e' }) -hi(0, 'diffAdded', { bg = '#24383a', fg = '#7aa4a1' }) -hi(0, 'diffChanged', { bg = '#31474b', fg = '#73daca' }) +hi(0, 'diffAdded', { fg = '#7aa4a1' }) +hi(0, 'diffChanged', { fg = '#fda47f' }) hi(0, 'diffFile', { fg = '#5a93aa' }) hi(0, 'diffIndexLine', { fg = '#d38d97' }) hi(0, 'diffLine', { fg = '#ff9664' }) hi(0, 'diffNewFile', { fg = '#7aa4a1' }) hi(0, 'diffOldFile', { fg = '#fda47f' }) -hi(0, 'diffRemoved', { bg = '#31474b', fg = '#e85c51' }) -hi(0, 'diffText', { bg = '#466066' }) +hi(0, 'diffRemoved', { fg = '#e85c51' }) hi(0, 'illuminatedWordRead', { link = 'LspReferenceText' }) hi(0, 'illuminatedWordText', { link = 'LspReferenceText' }) hi(0, 'illuminatedWordWrite', { link = 'LspReferenceText' }) hi(0, 'lCursor', { link = 'Cursor' }) hi(0, 'qfFileName', { link = 'Directory' }) hi(0, 'qfLineNr', { link = 'LineNr' }) +hi(0, 'rainbowcol1', { fg = '#e85c51' }) +hi(0, 'rainbowcol2', { fg = '#fda47f' }) +hi(0, 'rainbowcol3', { fg = '#7aa4a1' }) +hi(0, 'rainbowcol4', { fg = '#5a93aa' }) +hi(0, 'rainbowcol5', { fg = '#a1cdd8' }) +hi(0, 'rainbowcol6', { fg = '#ad5c7c' }) +hi(0, 'rainbowcol7', { fg = '#cb7985' }) hi(0, 'typescriptParens', { fg = '#cbd9d8' }) -- Terminal colors diff --git a/nvim/after/lua/iofq/jj.lua b/nvim/after/lua/iofq/jj.lua deleted file mode 100644 index 4556b7f..0000000 --- a/nvim/after/lua/iofq/jj.lua +++ /dev/null @@ -1,17 +0,0 @@ -local M = {} - -M.is_jj_diffedit_open = function() - local qf = vim.fn.getqflist() - - local entry = qf[1] - if not entry or not entry.user_data or not entry.user_data.diff then - return 0 - else - return 1 - end -end - -M.diffedit = function() - vim.fn.jobstart('jj diffedit --tool diffview-new') -end -return M diff --git a/nvim/after/lua/iofq/snacks_jj.lua b/nvim/after/lua/iofq/snacks_jj.lua new file mode 100644 index 0000000..aae14fa --- /dev/null +++ b/nvim/after/lua/iofq/snacks_jj.lua @@ -0,0 +1,90 @@ +local M = {} + +function M.status() + local function get_files() + local status_raw = vim.fn.system('jj diff --no-pager --quiet --summary') + local files = {} + + for status in status_raw:gmatch('[^\r\n]+') do + local state, file = string.match(status, '^(%a)%s(.+)$') + + if state and file then + local hl = '' + if state == 'A' then + hl = 'SnacksPickerGitStatusAdded' + elseif state == 'M' then + hl = 'SnacksPickerGitStatusModified' + elseif state == 'D' then + hl = 'SnacksPickerGitStatusDeleted' + elseif state == 'R' then + hl = 'SnacksPickerGitStatusRenamed' + file = string.match(file, '{.-=>%s*(.-)}') + end + + local diff = vim.fn.system('jj diff ' .. file .. ' --no-pager --stat --git') + table.insert(files, { + file = file, + filename_hl = hl, + diff = diff, + }) + end + end + + return files + end + + Snacks.picker.pick { + source = 'jj_status', + items = get_files(), + format = 'file', + title = 'jj status', + preview = function(ctx) + if ctx.item.file then + Snacks.picker.preview.diff(ctx) + else + ctx.preview:reset() + ctx.preview:set_title('No preview') + end + end, + } +end + +function M.file_history(filename) + local function preview(ctx) + if ctx.item.rev then + Snacks.picker.preview.cmd( + { 'jj', 'log', '--ignore-working-copy', '--git', '-r', ctx.item.rev, '-p', filename }, + ctx + ) + else + ctx.preview:reset() + return 'No preview available.' + end + end + + local function get_history(f) + local status_raw = vim.fn.system( + 'jj log --ignore-working-copy --no-graph' + .. ' --template \'if(root, format_root_commit(self), label(if(current_working_copy, "working_copy"), concat(separate(" ", self.change_id().shortest(8), self.bookmarks()), " | ", if(empty, label("empty", "(empty)")), if(description, description.first_line(), label(if(empty, "empty"), description_placeholder),),) ++ "\n",),)\'' + .. ' -- ' + .. f + ) + local lines = {} + for line in status_raw:gmatch('[^\r\n]+') do + local rev = string.match(line, '(%w+)%s.*') + table.insert(lines, { + text = line, + rev = rev, + }) + end + return lines + end + + Snacks.picker.pick { + format = 'text', + title = 'jj file history for ' .. filename, + items = get_history(filename), + preview = preview, + } +end +return M diff --git a/nvim/after/plugin/init.lua b/nvim/after/plugin/init.lua index 7518a64..b2afa6a 100644 --- a/nvim/after/plugin/init.lua +++ b/nvim/after/plugin/init.lua @@ -42,7 +42,6 @@ vim.lsp.enable { 'gopls', 'lua_ls', 'basedpyright', - 'csharp_ls', } local map = vim.keymap.set diff --git a/nvim/after/plugin/mini.lua b/nvim/after/plugin/mini.lua index 5e57fff..30d5984 100644 --- a/nvim/after/plugin/mini.lua +++ b/nvim/after/plugin/mini.lua @@ -9,7 +9,6 @@ vim.schedule(function() ai.setup { n_lines = 300, custom_textobjects = { - i = require('mini.extra').gen_ai_spec.indent(), a = ai.gen_spec.treesitter { a = '@parameter.outer', i = '@parameter.inner' }, f = ai.gen_spec.treesitter { a = '@function.outer', i = '@function.inner' }, }, diff --git a/nvim/after/plugin/plugins.lua b/nvim/after/plugin/plugins.lua index e4506f9..abd3c45 100644 --- a/nvim/after/plugin/plugins.lua +++ b/nvim/after/plugin/plugins.lua @@ -55,25 +55,16 @@ map('n', 'fj', Snacks.picker.jumps) map('n', 'f.', Snacks.picker.resume) map('n', 'fb', Snacks.picker.buffers) map('n', 'fq', Snacks.picker.qflist) +map('n', 'jf', require('iofq.snacks_jj').status) +map('n', 'jh', function() + require('iofq.snacks_jj').file_history(vim.api.nvim_buf_get_name(0)) +end) vim.schedule(function() require('nvim-treesitter').setup() require('nvim-treesitter-textobjects').setup() - vim.keymap.set('n', '[c', function() - require('treesitter-context').go_to_context(vim.v.count1) - end, { silent = true }) require('nvim-autopairs').setup() - require('jj').setup {} - map('n', 'ja', require('jj.annotate').file) - map('n', 'jf', require('jj.picker').status) - map('n', 'jj', require('jj.cmd').log) - map('n', 'jh', require('jj.picker').file_history) - map('n', 'je', require('iofq.jj').diffedit) - map('n', 'jd', function() - require('jj.diff').open_vdiff { rev = 'trunk()' } - end) - require('quicker').setup() map('n', 'qf', function() require('quicker').toggle { max_height = 20 }