diff --git a/plugins/arrow.nix b/plugins/arrow.nix index 6899cba..90723fc 100644 --- a/plugins/arrow.nix +++ b/plugins/arrow.nix @@ -5,7 +5,7 @@ extra = { packages = [ pkgs.vimPlugins.arrow-nvim ]; - config = '' + config = /*lua*/ '' require('arrow').setup({ show_icons = true, leader_key = ';', -- Recommended to be a single key diff --git a/plugins/flash.nix b/plugins/flash.nix new file mode 100644 index 0000000..bc827f2 --- /dev/null +++ b/plugins/flash.nix @@ -0,0 +1,45 @@ +{pkgs, ... }: +{ + opts.enable = true; + + extra = { + packages = [ pkgs.vimPlugins.flash-nvim ]; + + config = /*lua*/ '' + require("flash").toggle(true) -- activate toggle flash mode + ''; + }; + + rootOpts.keymaps = [ + { + mode = ["n" "x" "o" ]; + key = "gs"; + options.desc = "Flash jump"; + action.__raw = ''function() require("flash").jump() end''; + } + { + mode = "n"; + key = "gS"; + options.desc = "Flash Treesitter"; + action.__raw = ''function() require("flash").treesitter() end''; + } + { + mode = "o"; + key = "gR"; + options.desc = "Remote Flash"; + action.__raw = ''function() require("flash").remote() end''; + } + { + mode = "o"; + key = "gr"; + options.desc = "Flash Treesitter search"; + action.__raw = ''function() require("flash").treesitter_search() end''; + } + { + mode = "n"; + key = "uf"; + options.desc = "Toggle flash search"; + action.__raw = ''function() require("flash").toggle() end''; + } + ]; +} diff --git a/plugins/luasnip.nix b/plugins/luasnip.nix index 5f97d0a..e3ab507 100644 --- a/plugins/luasnip.nix +++ b/plugins/luasnip.nix @@ -10,13 +10,13 @@ _:{ rootOpts.keymaps = [ { mode = "i"; - key = ""; + key = ""; action.__raw = ''function() require("luasnip").jump(1) end''; options.desc = "Jump to next snippet node"; } { mode = "i"; - key = ""; + key = ""; action.__raw = ''function() require("luasnip").jump(-1) end''; options.desc = "Jump to previous snippet node"; } diff --git a/plugins/nvim-window-picker/default.nix b/plugins/nvim-window-picker/default.nix new file mode 100644 index 0000000..dd3573e --- /dev/null +++ b/plugins/nvim-window-picker/default.nix @@ -0,0 +1,49 @@ +{lib, pkgs, ...}:{ + extra = { + packages = [ + (import ./package.nix { inherit lib pkgs; }) + ]; + + config = /*Lua*/ '' + require('window-picker').setup({ + hint = 'statusline-winbar', --alternative: 'floating-big-letter', + selection_chars = 'ENARITUDÄMCHLGVFXQ', -- default: 'FJDKSLA;CMRUEIWOQP' + picker_config = { + statusline_winbar_picker = { + selection_display = function(char, windowid) + return table.concat({'%=', '=== ', char, ' ===', '%='}) + end, + + use_winbar = 'smart' + }, + }, + highlights = { + statusline = { + focused = { + fg = '#E67e80', + bg = '#2e383c', + bold = true, + }, + unfocused = { + fg = '#a7c080', + bg = '#2e383c', + bold = true, + }, + }, + winbar = { + focused = { + fg = '#E67e80', + bg = '#2e383c', + bold = true, + }, + unfocused = { + fg = '#a7c080', + bg = '#2e383c', + bold = true, + }, + }, + } + }) + ''; + }; +} diff --git a/plugins/nvim-window-picker/package.nix b/plugins/nvim-window-picker/package.nix new file mode 100644 index 0000000..44d3ff0 --- /dev/null +++ b/plugins/nvim-window-picker/package.nix @@ -0,0 +1,23 @@ +{ pkgs, ...}: +let + version = "v2.0.3"; + owner = "s1n7ax"; + repo = "nvim-window-picker"; +in +pkgs.vimUtils.buildVimPlugin { + name = "nvim-window-picker"; + inherit version; + + # NOTE: for my work PC, fetchFromGithub fails, due to an SSL error + src = builtins.fetchTarball { + url = "http://github.com/${owner}/${repo}/archive/${version}.tar.gz"; + sha256 = "sha256:1bcjsx5qgvj1gi6zdi3fwc44x7afh35xbyrjik0dzl3hj6ds960g"; + }; + + # src = pkgs.fetchFromGitHub { + # owner = "s1n7ax"; + # repo = "nvim-window-picker"; + # rev = version; + # hash = "sha256:1bcjsx5qgvj1gi6zdi3fwc44x7afh35xbyrjik0dzl3hj6ds960g"; + # } +} diff --git a/plugins/toggleterm.nix b/plugins/toggleterm.nix index 7e4aaaa..e2fffbb 100644 --- a/plugins/toggleterm.nix +++ b/plugins/toggleterm.nix @@ -93,7 +93,7 @@ in options.desc = "Switch to normal mode"; } { - mode = [ "n" "t" ]; + mode = [ "n" ]; key = "tn"; action.__raw = '' function() @@ -107,7 +107,7 @@ in options.desc = "Rename current terminal"; } { - mode = [ "n" "t" ]; + mode = [ "n" ]; key = "tl"; action = "TermSelect"; options.desc = "List terminals"; diff --git a/plugins/treesitter.nix b/plugins/treesitter.nix index c966506..59c5962 100644 --- a/plugins/treesitter.nix +++ b/plugins/treesitter.nix @@ -10,9 +10,7 @@ # Enable treesitter based indentation (use '=' to auto-indent) settings = { indent.enable = true; - highlight = { - enable = true; - }; + highlight.enable = true; }; # Workaround to enable incremental selection without setting default keymaps (keymaps are set globally) @@ -22,8 +20,6 @@ enable = true; keymaps = lib.mkForce { }; }; - - settings.highlight.enable = true; }; rootOpts = { @@ -83,24 +79,34 @@ "]k" = { query = "@block.outer"; desc = "Next block start"; }; "]f" = { query = "@function.outer"; desc = "Next function start"; }; "]a" = { query = "@parameter.inner"; desc = "Next argument start"; }; + "]?" = { query = "@condition.outer"; desc = "Next conditional start"; }; + "]l" = { query = "@loop.outer"; desc = "Next loop start"; }; + "]c" = { query = "@call.inner"; desc = "Previous call start"; }; + "]/" = { query = "@comment.outer"; desc = "Next comment start"; }; }; gotoNextEnd = { "]K" = { query = "@block.outer"; desc = "Next block end"; }; "]F" = { query = "@function.outer"; desc = "Next function end"; }; "]A" = { query = "@parameter.inner"; desc = "Next argument end"; }; + "]L" = { query = "@loop.outer"; desc = "Next loop end"; }; }; gotoPreviousStart = { "[k" = { query = "@block.outer"; desc = "Previous block start"; }; "[f" = { query = "@function.outer"; desc = "Previous function start"; }; "[a" = { query = "@parameter.inner"; desc = "Previous argument start"; }; + "[?" = { query = "@condition.outer"; desc = "Previous conditional start"; }; + "[l" = { query = "@loop.outer"; desc = "Previous loop start"; }; + "[c" = { query = "@call.inner"; desc = "Previous call start"; }; + "[/" = { query = "@comment.outer"; desc = "Previous comment start"; }; }; gotoPreviousEnd = { "[K" = { query = "@block.outer"; desc = "Previous block end"; }; "[F" = { query = "@function.outer"; desc = "Previous function end"; }; "[A" = { query = "@parameter.inner"; desc = "Previous argument end"; }; + "[L" = { query = "@loop.outer"; desc = "Previous loop end"; }; }; }; diff --git a/plugins/zoxide.vim/package.nix b/plugins/zoxide.vim/package.nix index 08767da..eb2f05d 100644 --- a/plugins/zoxide.vim/package.nix +++ b/plugins/zoxide.vim/package.nix @@ -8,6 +8,7 @@ pkgs.vimUtils.buildVimPlugin { name = "zoxide.vim"; inherit version; + # NOTE: for my work PC, fetchFromGithub fails, due to an SSL error src = builtins.fetchTarball { url = "http://github.com/${owner}/${repo}/archive/${version}.tar.gz"; sha256 = "sha256:025rqfs0n2ryi7xwzpq5h2r7jhvxbrb2gjp6fqa072hapgqr0igb";