wip
This commit is contained in:
parent
b3d90826a8
commit
221c01e6e3
6 changed files with 298 additions and 124 deletions
2
init.lua
2
init.lua
|
@ -6,7 +6,7 @@ require("pika.lazy")
|
|||
-- │ themes are under ./lua/pika/plugins/colorschemes.lua │
|
||||
-- ╰──────────────────────────────────────────────────────╯
|
||||
|
||||
vim.cmd.colorscheme("oldschool")
|
||||
vim.cmd.colorscheme("monet")
|
||||
|
||||
-- Keybind for saving clipboard screenshot and inserting a Markdown link
|
||||
vim.api.nvim_set_keymap("n", "<leader>ps", ":lua SaveScreenshotAndInsertLink()<CR>", { noremap = true, silent = true })
|
||||
|
|
|
@ -7,6 +7,7 @@ nomap("n", "<C-k>", "")
|
|||
nomap("n", "q", "")
|
||||
nomap("v", "q", "")
|
||||
nomap("v", "<leader>S", "")
|
||||
nomap({ "i", "v", "n" }, "<C-q>", "")
|
||||
|
||||
local map = vim.keymap.set
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@ return {
|
|||
name = "cyberdream",
|
||||
lazy = false,
|
||||
opts = {
|
||||
transparent = true,
|
||||
transparent = false,
|
||||
hide_fillchars = true,
|
||||
terminal_colors = true,
|
||||
},
|
||||
|
|
|
@ -26,16 +26,116 @@ return {
|
|||
-- C-k: Toggle signature help (if signature.enabled = true)
|
||||
--
|
||||
-- See :h blink-cmp-config-keymap for defining your own keymap
|
||||
keymap = { preset = "super-tab" },
|
||||
keymap = {
|
||||
-- set to 'none' to disable the 'default' preset
|
||||
preset = "super-tab",
|
||||
|
||||
["<C-k>"] = { "select_prev", "fallback" },
|
||||
["<C-j>"] = { "select_next", "fallback" },
|
||||
["<C-q>"] = { "hide", "fallback" },
|
||||
|
||||
-- disable a keymap from the preset
|
||||
["<C-e>"] = {},
|
||||
["<C-p>"] = {},
|
||||
["<C-n>"] = {},
|
||||
|
||||
-- show with a list of providers
|
||||
-- ["<C-space>"] = {
|
||||
-- function(cmp)
|
||||
-- cmp.show({ providers = { "snippets" } })
|
||||
-- end,
|
||||
-- },
|
||||
|
||||
-- control whether the next command will be run when using a function
|
||||
-- ["<C-n>"] = {
|
||||
-- function(cmp)
|
||||
-- if some_condition then
|
||||
-- return
|
||||
-- end -- runs the next command
|
||||
-- return true -- doesn't run the next command
|
||||
-- end,
|
||||
-- "select_next",
|
||||
-- },
|
||||
},
|
||||
|
||||
appearance = {
|
||||
-- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font'
|
||||
-- Adjusts spacing to ensure icons are aligned
|
||||
nerd_font_variant = "Nerd Font Mono",
|
||||
nerd_font_variant = "mono",
|
||||
|
||||
highlight_ns = vim.api.nvim_create_namespace("blink_cmp"),
|
||||
-- Sets the fallback highlight groups to nvim-cmp's highlight groups
|
||||
-- Useful for when your theme doesn't support blink.cmp
|
||||
-- Will be removed in a future release
|
||||
|
||||
use_nvim_cmp_as_default = true,
|
||||
},
|
||||
|
||||
-- (Default) Only show the documentation popup when manually triggered
|
||||
completion = { documentation = { auto_show = false } },
|
||||
completion = {
|
||||
documentation = {
|
||||
auto_show = false,
|
||||
auto_show_delay_ms = 230,
|
||||
update_delay_ms = 50,
|
||||
treesitter_highlighting = false,
|
||||
draw = function(opts)
|
||||
opts.default_implementation()
|
||||
end,
|
||||
window = {
|
||||
min_width = 16,
|
||||
max_width = 80,
|
||||
max_height = 24,
|
||||
border = "padded", -- Defaults to `vim.o.winborder` on nvim 0.11+ or 'padded' when not defined/<=0.10
|
||||
winblend = 0,
|
||||
winhighlight = "Normal:BlinkCmpDoc,FloatBorder:BlinkCmpDocBorder,EndOfBuffer:BlinkCmpDoc",
|
||||
-- Note that the gutter will be disabled when border ~= 'none'
|
||||
scrollbar = true,
|
||||
},
|
||||
},
|
||||
ghost_text = {
|
||||
enabled = true,
|
||||
show_with_selection = true,
|
||||
show_without_selection = true,
|
||||
show_with_menu = true,
|
||||
show_without_menu = true,
|
||||
},
|
||||
|
||||
-- ─────────────────────────────────< mini-icons config >──────────────────────────────
|
||||
menu = {
|
||||
draw = {
|
||||
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,
|
||||
},
|
||||
kind_icon = {
|
||||
text = function(ctx)
|
||||
local kind_icon, _, _ = require("mini.icons").get("lsp", ctx.kind)
|
||||
return kind_icon
|
||||
end,
|
||||
-- (optional) use highlights from mini.icons
|
||||
highlight = function(ctx)
|
||||
local _, hl, _ = require("mini.icons").get("lsp", ctx.kind)
|
||||
return hl
|
||||
end,
|
||||
},
|
||||
|
||||
-- kind = {
|
||||
-- -- (optional) use highlights from mini.icons
|
||||
-- highlight = function(ctx)
|
||||
-- local _, hl, _ = require("mini.icons").get("lsp", ctx.kind)
|
||||
-- return hl
|
||||
-- end,
|
||||
-- },
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- Default list of enabled providers defined so that you can extend it
|
||||
-- elsewhere in your config, without redefining it, due to `opts_extend`
|
||||
|
@ -52,4 +152,184 @@ return {
|
|||
},
|
||||
opts_extend = { "sources.default" },
|
||||
},
|
||||
|
||||
-- ─────────────────────────────────< colorful menu.nvim >─────────────────────────────────
|
||||
{
|
||||
"xzbdmw/colorful-menu.nvim",
|
||||
opts = {
|
||||
{
|
||||
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,
|
||||
},
|
||||
},
|
||||
-- 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,
|
||||
},
|
||||
}
|
||||
|
|
|
@ -1,110 +0,0 @@
|
|||
return {
|
||||
"nvim-treesitter/nvim-treesitter-textobjects",
|
||||
lazy = true,
|
||||
config = function()
|
||||
require("nvim-treesitter.configs").setup({
|
||||
textobjects = {
|
||||
select = {
|
||||
enable = true,
|
||||
|
||||
-- Automatically jump forward to textobj, similar to targets.vim
|
||||
lookahead = true,
|
||||
|
||||
keymaps = {
|
||||
-- You can use the capture groups defined in textobjects.scm
|
||||
["a="] = { query = "@assignment.outer", desc = "Select outer part of an assignment" },
|
||||
["i="] = { query = "@assignment.inner", desc = "Select inner part of an assignment" },
|
||||
["l="] = { query = "@assignment.lhs", desc = "Select left hand side of an assignment" },
|
||||
["r="] = { query = "@assignment.rhs", desc = "Select right hand side of an assignment" },
|
||||
|
||||
-- works for javascript/typescript files (custom capture I created in after/queries/ecma/textobjects.scm)
|
||||
["a:"] = { query = "@property.outer", desc = "Select outer part of an object property" },
|
||||
["i:"] = { query = "@property.inner", desc = "Select inner part of an object property" },
|
||||
["l:"] = { query = "@property.lhs", desc = "Select left part of an object property" },
|
||||
["r:"] = { query = "@property.rhs", desc = "Select right part of an object property" },
|
||||
|
||||
["aa"] = { query = "@parameter.outer", desc = "Select outer part of a parameter/argument" },
|
||||
["ia"] = { query = "@parameter.inner", desc = "Select inner part of a parameter/argument" },
|
||||
|
||||
["ai"] = { query = "@conditional.outer", desc = "Select outer part of a conditional" },
|
||||
["ii"] = { query = "@conditional.inner", desc = "Select inner part of a conditional" },
|
||||
|
||||
["al"] = { query = "@loop.outer", desc = "Select outer part of a loop" },
|
||||
["il"] = { query = "@loop.inner", desc = "Select inner part of a loop" },
|
||||
|
||||
["af"] = { query = "@call.outer", desc = "Select outer part of a function call" },
|
||||
["if"] = { query = "@call.inner", desc = "Select inner part of a function call" },
|
||||
|
||||
["am"] = { query = "@function.outer", desc = "Select outer part of a method/function definition" },
|
||||
["im"] = { query = "@function.inner", desc = "Select inner part of a method/function definition" },
|
||||
|
||||
["ac"] = { query = "@class.outer", desc = "Select outer part of a class" },
|
||||
["ic"] = { query = "@class.inner", desc = "Select inner part of a class" },
|
||||
},
|
||||
},
|
||||
swap = {
|
||||
enable = true,
|
||||
swap_next = {
|
||||
["<leader>na"] = "@parameter.inner", -- swap parameters/argument with next
|
||||
["<leader>n:"] = "@property.outer", -- swap object property with next
|
||||
["<leader>nm"] = "@function.outer", -- swap function with next
|
||||
},
|
||||
swap_previous = {
|
||||
["<leader>pa"] = "@parameter.inner", -- swap parameters/argument with prev
|
||||
["<leader>p:"] = "@property.outer", -- swap object property with prev
|
||||
["<leader>pm"] = "@function.outer", -- swap function with previous
|
||||
},
|
||||
},
|
||||
move = {
|
||||
enable = true,
|
||||
set_jumps = true, -- whether to set jumps in the jumplist
|
||||
goto_next_start = {
|
||||
["]f"] = { query = "@call.outer", desc = "Next function call start" },
|
||||
["]m"] = { query = "@function.outer", desc = "Next method/function def start" },
|
||||
["]c"] = { query = "@class.outer", desc = "Next class start" },
|
||||
["]i"] = { query = "@conditional.outer", desc = "Next conditional start" },
|
||||
["]l"] = { query = "@loop.outer", desc = "Next loop start" },
|
||||
|
||||
-- You can pass a query group to use query from `queries/<lang>/<query_group>.scm file in your runtime path.
|
||||
-- Below example nvim-treesitter's `locals.scm` and `folds.scm`. They also provide highlights.scm and indent.scm.
|
||||
["]s"] = { query = "@scope", query_group = "locals", desc = "Next scope" },
|
||||
["]z"] = { query = "@fold", query_group = "folds", desc = "Next fold" },
|
||||
},
|
||||
goto_next_end = {
|
||||
["]F"] = { query = "@call.outer", desc = "Next function call end" },
|
||||
["]M"] = { query = "@function.outer", desc = "Next method/function def end" },
|
||||
["]C"] = { query = "@class.outer", desc = "Next class end" },
|
||||
["]I"] = { query = "@conditional.outer", desc = "Next conditional end" },
|
||||
["]L"] = { query = "@loop.outer", desc = "Next loop end" },
|
||||
},
|
||||
goto_previous_start = {
|
||||
["[f"] = { query = "@call.outer", desc = "Prev function call start" },
|
||||
["[m"] = { query = "@function.outer", desc = "Prev method/function def start" },
|
||||
["[c"] = { query = "@class.outer", desc = "Prev class start" },
|
||||
["[i"] = { query = "@conditional.outer", desc = "Prev conditional start" },
|
||||
["[l"] = { query = "@loop.outer", desc = "Prev loop start" },
|
||||
},
|
||||
goto_previous_end = {
|
||||
["[F"] = { query = "@call.outer", desc = "Prev function call end" },
|
||||
["[M"] = { query = "@function.outer", desc = "Prev method/function def end" },
|
||||
["[C"] = { query = "@class.outer", desc = "Prev class end" },
|
||||
["[I"] = { query = "@conditional.outer", desc = "Prev conditional end" },
|
||||
["[L"] = { query = "@loop.outer", desc = "Prev loop end" },
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
local ts_repeat_move = require("nvim-treesitter.textobjects.repeatable_move")
|
||||
|
||||
-- vim way: ; goes to the direction you were moving.
|
||||
vim.keymap.set({ "n", "x", "o" }, ";", ts_repeat_move.repeat_last_move)
|
||||
vim.keymap.set({ "n", "x", "o" }, ",", ts_repeat_move.repeat_last_move_opposite)
|
||||
|
||||
-- Optionally, make builtin f, F, t, T also repeatable with ; and ,
|
||||
vim.keymap.set({ "n", "x", "o" }, "f", ts_repeat_move.builtin_f)
|
||||
vim.keymap.set({ "n", "x", "o" }, "F", ts_repeat_move.builtin_F)
|
||||
vim.keymap.set({ "n", "x", "o" }, "t", ts_repeat_move.builtin_t)
|
||||
vim.keymap.set({ "n", "x", "o" }, "T", ts_repeat_move.builtin_T)
|
||||
end,
|
||||
}
|
|
@ -7,13 +7,22 @@ return {
|
|||
},
|
||||
config = function()
|
||||
require("nvim-treesitter.configs").setup({
|
||||
highlight = { enable = true },
|
||||
indent = { enable = true },
|
||||
autotag = { enable = true },
|
||||
sync_install = false,
|
||||
highlight = {
|
||||
enable = true,
|
||||
},
|
||||
indent = {
|
||||
enable = true,
|
||||
},
|
||||
autotag = {
|
||||
enable = true,
|
||||
},
|
||||
ensure_installed = {
|
||||
"bash",
|
||||
"caddy",
|
||||
"gitignore",
|
||||
"git_config",
|
||||
"git_rebase",
|
||||
"markdown",
|
||||
"markdown_inline",
|
||||
"yaml",
|
||||
|
@ -25,12 +34,6 @@ return {
|
|||
},
|
||||
incremental_selection = {
|
||||
enable = true,
|
||||
keymaps = {
|
||||
init_selection = "<C-space>",
|
||||
node_incremental = "<C-space>",
|
||||
scope_incremental = false,
|
||||
node_decremental = "<bs>",
|
||||
},
|
||||
},
|
||||
})
|
||||
end,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue