summaryrefslogtreecommitdiff
path: root/.config/nvim/lua/plugins
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim/lua/plugins')
-rw-r--r--.config/nvim/lua/plugins/blink-cmp.lua163
-rw-r--r--.config/nvim/lua/plugins/colorful-menu.lua91
-rw-r--r--.config/nvim/lua/plugins/nvim-cmp.lua14
-rw-r--r--.config/nvim/lua/plugins/nvim-scissors.lua27
-rw-r--r--.config/nvim/lua/plugins/nvim-treesitter.lua12
5 files changed, 259 insertions, 48 deletions
diff --git a/.config/nvim/lua/plugins/blink-cmp.lua b/.config/nvim/lua/plugins/blink-cmp.lua
index 51d910b..85f93c9 100644
--- a/.config/nvim/lua/plugins/blink-cmp.lua
+++ b/.config/nvim/lua/plugins/blink-cmp.lua
@@ -1,44 +1,151 @@
return {
'saghen/blink.cmp',
+ event = 'InsertEnter',
version = '1.*',
+ dependencies = {
+ {
+ 'Kaiser-Yang/blink-cmp-git',
+ dependencies = { 'nvim-lua/plenary.nvim' },
+ },
+ },
---@module 'blink.cmp'
---@type blink.cmp.Config
opts = {
- -- 'default' (recommended) for mappings similar to built-in completions (C-y to accept)
- -- 'super-tab' for mappings similar to vscode (tab to accept)
- -- 'enter' for enter to accept
- -- 'none' for no mappings
- --
- -- All presets have the following mappings:
- -- C-space: Open menu or open docs if already open
- -- C-n/C-p or Up/Down: Select next/previous item
- -- C-e: Hide menu
- -- C-k: Toggle signature help (if signature.enabled = true)
- --
- -- See :h blink-cmp-config-keymap for defining your own keymap
- keymap = { preset = 'default' },
+ keymap = {
+ preset = 'enter',
+ ['<C-e>'] = {},
+ ['<C-c>'] = { 'hide', 'fallback' },
- appearance = {
- -- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font'
- -- Adjusts spacing to ensure icons are aligned
- nerd_font_variant = 'mono',
+ ['<C-b>'] = {},
+ ['<C-f>'] = {},
+ ['<C-u>'] = { 'scroll_documentation_up', 'fallback' },
+ ['<C-d>'] = { 'scroll_documentation_down', 'fallback' },
},
- -- (Default) Only show the documentation popup when manually triggered
- completion = { documentation = { auto_show = false } },
+ completion = {
+ -- Show documentation when selecting a completion item
+ documentation = {
+ auto_show = true, -- TODO: turn this to off? once carbonight is ready
+ auto_show_delay_ms = 0,
+ window = { border = 'single' },
+ },
- -- Default list of enabled providers defined so that you can extend it
- -- elsewhere in your config, without redefining it, due to `opts_extend`
- sources = {
- default = { 'lsp', 'path', 'snippets', 'buffer' },
+ keyword = { range = 'full' },
+ -- Full seems cool but might be annoying
+ -- TODO: after a while, did I like this?
+ -- If so keep, otherwise switch to prefix
+
+ -- Preselect first one, don't complete until confirmation
+ list = { selection = { preselect = true, auto_insert = false } },
+
+ menu = {
+ draw = {
+ -- TODO: really cool but ugly AF now
+ -- need to add support for this in carbonight first
+ -- We don't need label_description now because label and label_description are already
+ -- combined together in label by colorful-menu.nvim.
+ -- columns = { { 'kind_icon' }, { 'label', gap = 1 } },
+ -- components = {
+ -- label = {
+ -- text = function(ctx)
+ -- return require('colorful-menu').blink_components_text(ctx)
+ -- end,
+ -- highlight = function(ctx)
+ -- return require('colorful-menu').blink_components_highlight(ctx)
+ -- end,
+ -- },
+ -- },
+ },
+ },
},
- -- (Default) Rust fuzzy matcher for typo resistance and significantly better performance
- -- You may use a lua implementation instead by using `implementation = "lua"` or fallback to the lua implementation,
- -- when the Rust fuzzy matcher is not available, by using `implementation = "prefer_rust"`
- --
- -- See the fuzzy documentation for more information
+ -- TODO: configure this when I get to fixing the LSP signature thing
+ signature = {},
+
fuzzy = { implementation = 'prefer_rust_with_warning' },
+
+ sources = {
+ default = { 'lsp', 'path', 'snippets', 'lazydev', 'git' },
+
+ providers = {
+ lazydev = {
+ name = 'LazyDev',
+ module = 'lazydev.integrations.blink',
+ score_offset = 100, -- prioritize lazydev
+ },
+ git = {
+ module = 'blink-cmp-git',
+ name = 'Git',
+ opts = {},
+ },
+
+ snippets = {
+ score_offset = 200, -- make snippets highest priority
+ transform_items = function(_, items)
+ return vim.tbl_filter(function(item)
+ if item.kind ~= require('blink.cmp.types').CompletionItemKind.Snippet then
+ return true
+ end
+
+ local name = item.description
+ -- vim.print(name)
+ local parts = vim.split(name, ' ', { trimempty = false })
+ local namespace = #parts > 1 and parts[1] or nil
+ -- vim.print(namespace)
+ if not namespace then
+ return true
+ end
+
+ -- vim.print(vim.fn.getcwd())
+ local path = vim.split(vim.fn.getcwd(), '/')
+ local dir = path[#path]
+ -- vim.print(dir)
+
+ return dir == namespace
+ end, items)
+ end,
+ },
+ },
+ },
+
+ appearance = {
+ -- TODO: change icons to make more sense to me
+ kind_icons = {
+ Text = '', --  󰉿
+ Method = '󰊕',
+ Function = '󰊕',
+ Constructor = '󰒓',
+
+ Field = '󰜢',
+ Variable = '󰆦',
+ Property = '󰖷',
+
+ Class = '󱡠',
+ Interface = '󱡠',
+ Struct = '󱡠',
+ Module = '󰅩',
+
+ Unit = '󰪚',
+ Value = '󰦨',
+ Enum = '󰦨',
+ EnumMember = '󰦨',
+
+ Keyword = '󰻾',
+ Constant = '󰏿',
+
+ Snippet = '',
+ Color = '󰏘',
+ File = '󰈔',
+ Reference = '󰬲',
+ Folder = '󰉋',
+ Event = '󱐋',
+ Operator = '󰪚',
+ TypeParameter = '󰬛',
+ },
+ },
},
opts_extend = { 'sources.default' },
+
+ -- TODO: pressing backk (deleting), should re-show completion menu
+ -- TODO: ghost text only for LLMs?
}
diff --git a/.config/nvim/lua/plugins/colorful-menu.lua b/.config/nvim/lua/plugins/colorful-menu.lua
new file mode 100644
index 0000000..71ef6b9
--- /dev/null
+++ b/.config/nvim/lua/plugins/colorful-menu.lua
@@ -0,0 +1,91 @@
+return {
+ "xzbdmw/colorful-menu.nvim",
+ config = function()
+ -- You don't need to set these options.
+ require("colorful-menu").setup({
+ ls = {
+ lua_ls = {
+ -- Maybe you want to dim arguments a bit.
+ arguments_hl = "@comment",
+ },
+ gopls = {
+ -- By default, we render variable/function's type in the right most side,
+ -- to make them not to crowd together with the original label.
+
+ -- when true:
+ -- foo *Foo
+ -- ast "go/ast"
+
+ -- when false:
+ -- foo *Foo
+ -- ast "go/ast"
+ align_type_to_right = true,
+ -- When true, label for field and variable will format like "foo: Foo"
+ -- instead of go's original syntax "foo Foo". If align_type_to_right is
+ -- true, this option has no effect.
+ add_colon_before_type = false,
+ -- See https://github.com/xzbdmw/colorful-menu.nvim/pull/36
+ preserve_type_when_truncate = true,
+ },
+ -- for lsp_config or typescript-tools
+ ts_ls = {
+ -- false means do not include any extra info,
+ -- see https://github.com/xzbdmw/colorful-menu.nvim/issues/42
+ extra_info_hl = "@comment",
+ },
+ vtsls = {
+ -- false means do not include any extra info,
+ -- see https://github.com/xzbdmw/colorful-menu.nvim/issues/42
+ extra_info_hl = "@comment",
+ },
+ ["rust-analyzer"] = {
+ -- Such as (as Iterator), (use std::io).
+ extra_info_hl = "@comment",
+ -- Similar to the same setting of gopls.
+ align_type_to_right = true,
+ -- See https://github.com/xzbdmw/colorful-menu.nvim/pull/36
+ preserve_type_when_truncate = true,
+ },
+ clangd = {
+ -- Such as "From <stdio.h>".
+ extra_info_hl = "@comment",
+ -- Similar to the same setting of gopls.
+ align_type_to_right = true,
+ -- the hl group of leading dot of "•std::filesystem::permissions(..)"
+ import_dot_hl = "@comment",
+ -- See https://github.com/xzbdmw/colorful-menu.nvim/pull/36
+ preserve_type_when_truncate = true,
+ },
+ zls = {
+ -- Similar to the same setting of gopls.
+ align_type_to_right = true,
+ },
+ roslyn = {
+ extra_info_hl = "@comment",
+ },
+ dartls = {
+ extra_info_hl = "@comment",
+ },
+ -- The same applies to pyright/pylance
+ basedpyright = {
+ -- It is usually import path such as "os"
+ extra_info_hl = "@comment",
+ },
+ -- If true, try to highlight "not supported" languages.
+ fallback = true,
+ -- this will be applied to label description for unsupport languages
+ fallback_extra_info_hl = "@comment",
+ },
+ -- If the built-in logic fails to find a suitable highlight group for a label,
+ -- this highlight is applied to the label.
+ fallback_highlight = "@variable",
+ -- If provided, the plugin truncates the final displayed text to
+ -- this width (measured in display cells). Any highlights that extend
+ -- beyond the truncation point are ignored. When set to a float
+ -- between 0 and 1, it'll be treated as percentage of the width of
+ -- the window: math.floor(max_width * vim.api.nvim_win_get_width(0))
+ -- Default 60.
+ max_width = 60,
+ })
+ end,
+}
diff --git a/.config/nvim/lua/plugins/nvim-cmp.lua b/.config/nvim/lua/plugins/nvim-cmp.lua
deleted file mode 100644
index 16b3612..0000000
--- a/.config/nvim/lua/plugins/nvim-cmp.lua
+++ /dev/null
@@ -1,14 +0,0 @@
-return {
- -- 'hrsh7th/nvim-cmp',
- -- event = 'InsertEnter',
- -- dependencies = {
- -- 'onsails/lspkind.nvim', -- icons for completion type
- -- 'hrsh7th/cmp-path', -- complete filepaths
- -- 'hrsh7th/cmp-nvim-lsp', -- lsp source for nvim-cmp
- -- 'saadparwaiz1/cmp_luasnip', -- snippets source for nvim-cmp
- -- { 'L3MON4D3/LuaSnip', build = 'make install_jsregexp' }, -- snippets plugin
- -- },
- -- config = function()
- -- require('cmp_helper')
- -- end,
-}
diff --git a/.config/nvim/lua/plugins/nvim-scissors.lua b/.config/nvim/lua/plugins/nvim-scissors.lua
new file mode 100644
index 0000000..8eb3b8b
--- /dev/null
+++ b/.config/nvim/lua/plugins/nvim-scissors.lua
@@ -0,0 +1,27 @@
+return {
+ 'chrisgrieser/nvim-scissors',
+ dependencies = 'folke/snacks.nvim',
+ event = 'VeryLazy',
+ opts = {
+ ---@type "yq"|"jq"|"none"|string[]
+ jsonFormatter = 'jq',
+ },
+ keys = {
+ {
+ '<leader>sa',
+ function()
+ require('scissors').addNewSnippet()
+ end,
+ desc = '[S]nippet [A]dd',
+ mode = { 'n', 'x' },
+ },
+ {
+ '<leader>se',
+ function()
+ require('scissors').editSnippet()
+ end,
+ desc = '[S]nippet [E]dit',
+ mode = { 'n', 'x' },
+ },
+ },
+}
diff --git a/.config/nvim/lua/plugins/nvim-treesitter.lua b/.config/nvim/lua/plugins/nvim-treesitter.lua
index 7313054..7ee6a47 100644
--- a/.config/nvim/lua/plugins/nvim-treesitter.lua
+++ b/.config/nvim/lua/plugins/nvim-treesitter.lua
@@ -59,12 +59,12 @@ return {
},
swap = {
enable = true,
- swap_next = {
- ['<leader>sa'] = { query = '@parameter.inner', desc = 'Swap Argument (next)' },
- },
- swap_previous = {
- ['<leader>sA'] = { query = '@parameter.inner', desc = 'Swap Argument (prev)' },
- },
+ -- swap_next = {
+ -- ['<leader>sa'] = { query = '@parameter.inner', desc = 'Swap Argument (next)' },
+ -- },
+ -- swap_previous = {
+ -- ['<leader>sA'] = { query = '@parameter.inner', desc = 'Swap Argument (prev)' },
+ -- },
},
},
})