diff --git a/flake.lock b/flake.lock index 15c4ba2..3b25694 100644 --- a/flake.lock +++ b/flake.lock @@ -61,11 +61,11 @@ ] }, "locked": { - "lastModified": 1767609335, - "narHash": "sha256-feveD98mQpptwrAEggBQKJTYbvwwglSbOv53uCfH9PY=", + "lastModified": 1768135262, + "narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "250481aafeb741edfe23d29195671c19b36b6dca", + "rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac", "type": "github" }, "original": { @@ -178,6 +178,22 @@ "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": { @@ -203,11 +219,11 @@ ] }, "locked": { - "lastModified": 1768003501, - "narHash": "sha256-pxxUR3VRDcDpMgF1qb9FnlHAEOGi24bk6pdB1QzL1II=", + "lastModified": 1769904653, + "narHash": "sha256-ZDVBonlM1KWDrgmiWQiUffHkxrlmb7ycA6c/BzZO2nw=", "owner": "nix-community", "repo": "neovim-nightly-overlay", - "rev": "d31b28318affe5d58ef12e7f72a7adfa66930a7a", + "rev": "ff53ef2634c6fe3af40c2ac893fd2e486e5fe353", "type": "github" }, "original": { @@ -219,11 +235,11 @@ "neovim-src": { "flake": false, "locked": { - "lastModified": 1768000044, - "narHash": "sha256-hcdQHR8l8oZDIl0vXKNtbrN+32dTs9EYvlqppoHgG2k=", + "lastModified": 1769867454, + "narHash": "sha256-lJWmcmmbUlzWNtIU7klxvBzTDzeAThcgoCPAqMn46o0=", "owner": "neovim", "repo": "neovim", - "rev": "930817f1009d9d392103b5440e2503cb47fdacc0", + "rev": "270c7b46afabdb16a833f67747067b769901f269", "type": "github" }, "original": { @@ -277,11 +293,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1768020509, - "narHash": "sha256-V7El1ktdJ0/WWEr6wGBKFYu433vitrWvxmvPk79FsSc=", + "lastModified": 1769940825, + "narHash": "sha256-M2tEly38lj2LViQq51MNLxDtHUY71qiGaksS5z3zG4c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "299d331f770cdf7c466a4faa08b3070a767d681d", + "rev": "799ceb0d87a54388051a4e41ef33a9ba555c30b6", "type": "github" }, "original": { @@ -296,6 +312,7 @@ "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 5312b1a..c722d83 100644 --- a/flake.nix +++ b/flake.nix @@ -15,6 +15,10 @@ 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 6cf2234..8433c39 100644 --- a/nix/neovim-overlay.nix +++ b/nix/neovim-overlay.nix @@ -4,18 +4,27 @@ 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 7d80403..b1e6a7a 100644 --- a/nvim/after/colors/iofq.lua +++ b/nvim/after/colors/iofq.lua @@ -19,9 +19,6 @@ 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' }) @@ -105,35 +102,11 @@ 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' }) @@ -185,36 +158,6 @@ 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' }) @@ -225,26 +168,6 @@ 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' }) @@ -265,39 +188,20 @@ 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 = '#293e40' }) -hi(0, 'DiffChange', { bg = '#31474b' }) -hi(0, 'DiffDelete', { bg = '#4a3332' }) +hi(0, 'DiffAdd', { bg = '#24383a', fg = '#7aa4a1' }) +hi(0, 'DiffChange', { bg = '#31474b', fg = '#73daca' }) +hi(0, 'DiffDelete', { bg = '#31474b', fg = '#e85c51' }) 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' }) @@ -314,54 +218,19 @@ 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' }) @@ -385,11 +254,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', { bg = '#31474b' }) -hi(0, 'MiniDiffOverChange', { bg = '#466066' }) -hi(0, 'MiniDiffOverChangeBuf', { bg = '#466066' }) -hi(0, 'MiniDiffOverContext', { bg = '#31474b' }) -hi(0, 'MiniDiffOverDelete', { fg = 'red' }) +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, 'MiniDiffSignAdd', { fg = 'green', bold = true }) hi(0, 'MiniDiffSignChange', { fg = 'green', bold = true }) hi(0, 'MiniDiffSignDelete', { fg = 'red', bold = true }) @@ -480,75 +349,6 @@ 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' }) @@ -570,32 +370,10 @@ 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' }) @@ -610,9 +388,6 @@ 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' }) @@ -626,62 +401,38 @@ 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', { fg = '#7aa4a1' }) -hi(0, 'diffChanged', { fg = '#fda47f' }) +hi(0, 'diffAdded', { bg = '#24383a', fg = '#7aa4a1' }) +hi(0, 'diffChanged', { bg = '#31474b', fg = '#73daca' }) 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', { fg = '#e85c51' }) +hi(0, 'diffRemoved', { bg = '#31474b', fg = '#e85c51' }) +hi(0, 'diffText', { bg = '#466066' }) 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 new file mode 100644 index 0000000..4556b7f --- /dev/null +++ b/nvim/after/lua/iofq/jj.lua @@ -0,0 +1,17 @@ +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 deleted file mode 100644 index aae14fa..0000000 --- a/nvim/after/lua/iofq/snacks_jj.lua +++ /dev/null @@ -1,90 +0,0 @@ -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 b2afa6a..7518a64 100644 --- a/nvim/after/plugin/init.lua +++ b/nvim/after/plugin/init.lua @@ -42,6 +42,7 @@ 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 30d5984..5e57fff 100644 --- a/nvim/after/plugin/mini.lua +++ b/nvim/after/plugin/mini.lua @@ -9,6 +9,7 @@ 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 abd3c45..e4506f9 100644 --- a/nvim/after/plugin/plugins.lua +++ b/nvim/after/plugin/plugins.lua @@ -55,16 +55,25 @@ 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 }