Add coc basic config, not fully working yet
This commit is contained in:
65
nvim-coc/lua/plugins/utility/autopairs.lua
Executable file
65
nvim-coc/lua/plugins/utility/autopairs.lua
Executable file
@@ -0,0 +1,65 @@
|
||||
return {
|
||||
-- autoclose brackets and quotes
|
||||
"windwp/nvim-autopairs",
|
||||
event = "InsertEnter",
|
||||
config = function()
|
||||
require("nvim-autopairs").setup({
|
||||
fast_wrap = {
|
||||
map = "<C-e>",
|
||||
chars = { "{", "[", "(", '"', "'", "`" },
|
||||
},
|
||||
})
|
||||
|
||||
-- add spaces between parentheses
|
||||
local npairs = require("nvim-autopairs")
|
||||
local Rule = require("nvim-autopairs.rule")
|
||||
local cond = require("nvim-autopairs.conds")
|
||||
|
||||
local brackets = { { "(", ")" }, { "[", "]" }, { "{", "}" } }
|
||||
npairs.add_rules({
|
||||
-- Rule for a pair with left-side ' ' and right side ' '
|
||||
Rule(" ", " ")
|
||||
-- Pair will only occur if the conditional function returns true
|
||||
:with_pair(function(opts)
|
||||
-- We are checking if we are inserting a space in (), [], or {}
|
||||
local pair = opts.line:sub(opts.col - 1, opts.col)
|
||||
return vim.tbl_contains({
|
||||
brackets[1][1] .. brackets[1][2],
|
||||
brackets[2][1] .. brackets[2][2],
|
||||
brackets[3][1] .. brackets[3][2],
|
||||
}, pair)
|
||||
end)
|
||||
:with_move(cond.none())
|
||||
:with_cr(cond.none())
|
||||
-- We only want to delete the pair of spaces when the cursor is as such: ( | )
|
||||
:with_del(
|
||||
function(opts)
|
||||
local col = vim.api.nvim_win_get_cursor(0)[2]
|
||||
local context = opts.line:sub(col - 1, col + 2)
|
||||
return vim.tbl_contains({
|
||||
brackets[1][1] .. " " .. brackets[1][2],
|
||||
brackets[2][1] .. " " .. brackets[2][2],
|
||||
brackets[3][1] .. " " .. brackets[3][2],
|
||||
}, context)
|
||||
end
|
||||
),
|
||||
})
|
||||
-- For each pair of brackets we will add another rule
|
||||
for _, bracket in pairs(brackets) do
|
||||
npairs.add_rules({
|
||||
-- Each of these rules is for a pair with left-side '( ' and right-side ' )' for each bracket type
|
||||
Rule(bracket[1] .. " ", " " .. bracket[2])
|
||||
:with_pair(cond.none())
|
||||
:with_move(function(opts)
|
||||
return opts.char == bracket[2]
|
||||
end)
|
||||
:with_del(cond.none())
|
||||
:use_key(bracket[2])
|
||||
-- Removes the trailing whitespace that can occur without this
|
||||
:replace_map_cr(function(_)
|
||||
return "<C-c>2xi<CR><C-c>O"
|
||||
end),
|
||||
})
|
||||
end
|
||||
end,
|
||||
}
|
9
nvim-coc/lua/plugins/utility/bufdelete.lua
Executable file
9
nvim-coc/lua/plugins/utility/bufdelete.lua
Executable file
@@ -0,0 +1,9 @@
|
||||
return {
|
||||
-- delete a buffer
|
||||
'famiu/bufdelete.nvim',
|
||||
config = function()
|
||||
local map = vim.api.nvim_set_keymap
|
||||
map('n', '<C-w>', '<cmd>Bdelete<CR>', { silent = true, desc = "close current buffer" })
|
||||
end
|
||||
}
|
||||
|
61
nvim-coc/lua/plugins/utility/comment-box.lua
Executable file
61
nvim-coc/lua/plugins/utility/comment-box.lua
Executable file
@@ -0,0 +1,61 @@
|
||||
return {
|
||||
"LudoPinelli/comment-box.nvim",
|
||||
config = function()
|
||||
-- add custom commentstring to plugin source, since configuration is not yet supported
|
||||
local function insertlang(lang, commentstring)
|
||||
local filename = os.getenv("HOME")
|
||||
.. "/.local/share/nvim/lazy/comment-box.nvim/lua/comment-box/commentstrings.lua"
|
||||
local file = io.open(filename, "r")
|
||||
if not file then
|
||||
return
|
||||
end
|
||||
|
||||
local content = file:read("a")
|
||||
if string.match(content, lang) then
|
||||
return
|
||||
end
|
||||
|
||||
local lines = {}
|
||||
for line in content:gmatch("[^\r\n]+") do
|
||||
table.insert(lines, line)
|
||||
end
|
||||
file:close()
|
||||
|
||||
table.insert(lines, 24, " " .. lang .. ' = { "' .. commentstring .. '", "" },')
|
||||
|
||||
file = io.open(filename, "w")
|
||||
if not file then
|
||||
return
|
||||
end
|
||||
|
||||
file:write(table.concat(lines, "\n"))
|
||||
|
||||
file:close()
|
||||
end
|
||||
|
||||
insertlang("hyprlang", "#%s")
|
||||
|
||||
require("comment-box").setup({
|
||||
comment_style = "line",
|
||||
doc_width = 70,
|
||||
box_width = 50,
|
||||
line_width = 70,
|
||||
})
|
||||
|
||||
local opts = { silent = true }
|
||||
|
||||
opts.desc = "comment text box"
|
||||
vim.keymap.set({"n", "v"}, "<leader>cb", ":CBccbox<CR>", opts)
|
||||
opts.desc = "comment text line"
|
||||
vim.keymap.set({"n", "v"}, "<leader>cl", ":CBllline<CR>", opts)
|
||||
opts.desc = "comment line"
|
||||
vim.keymap.set({"n", "v"}, "<leader>ce", ":CBline<CR>", opts)
|
||||
opts.desc = "comment highlight"
|
||||
vim.keymap.set({"n", "v"}, "<leader>ch", ":CBlcbox18<CR>", opts)
|
||||
|
||||
opts.desc = "delete comment box"
|
||||
vim.keymap.set({"n", "v"}, "<leader>cd", ":CBd<CR>", opts)
|
||||
opts.desc = "yank comment box contents"
|
||||
vim.keymap.set({"n", "v"}, "<leader>cy", ":CBy<CR>", opts)
|
||||
end,
|
||||
}
|
10
nvim-coc/lua/plugins/utility/comment.lua
Executable file
10
nvim-coc/lua/plugins/utility/comment.lua
Executable file
@@ -0,0 +1,10 @@
|
||||
return {
|
||||
-- add comment keybinds
|
||||
'numToStr/Comment.nvim',
|
||||
opts = {},
|
||||
lazy = false,
|
||||
config = function()
|
||||
require('Comment').setup()
|
||||
require('Comment.ft').set('hyprlang', '#%s')
|
||||
end
|
||||
}
|
4
nvim-coc/lua/plugins/utility/context.lua
Executable file
4
nvim-coc/lua/plugins/utility/context.lua
Executable file
@@ -0,0 +1,4 @@
|
||||
return {
|
||||
-- similar to sticky scroll in vscode
|
||||
"nvim-treesitter/nvim-treesitter-context",
|
||||
}
|
12
nvim-coc/lua/plugins/utility/grammar.lua
Executable file
12
nvim-coc/lua/plugins/utility/grammar.lua
Executable file
@@ -0,0 +1,12 @@
|
||||
return {
|
||||
"kikofmas/grammarous.nvim",
|
||||
config = function ()
|
||||
local keymap = vim.keymap
|
||||
local opts = require('utils').opts
|
||||
|
||||
keymap.set('n', '<leader>sl', ':GrammarousCheck<CR>', opts('LanguageTool Spell Checker'))
|
||||
keymap.set('n', '<leader>sc', ':GrammarousCheck --comments-only<CR>', opts('LanguageTool Spell Checker, only comments'))
|
||||
keymap.set('n', '<leader>ss', ':set spell<CR>', opts('Start built-in spell checker'))
|
||||
keymap.set('n', '<leader>sn', ':set nospell<CR>', opts('Stop spell checker'))
|
||||
end
|
||||
}
|
9
nvim-coc/lua/plugins/utility/indent-blankline.lua
Executable file
9
nvim-coc/lua/plugins/utility/indent-blankline.lua
Executable file
@@ -0,0 +1,9 @@
|
||||
return {
|
||||
-- indent lines
|
||||
'lukas-reineke/indent-blankline.nvim',
|
||||
opts = {},
|
||||
main = 'ibl',
|
||||
config = function()
|
||||
require('ibl').setup()
|
||||
end
|
||||
}
|
7
nvim-coc/lua/plugins/utility/lastplace.lua
Executable file
7
nvim-coc/lua/plugins/utility/lastplace.lua
Executable file
@@ -0,0 +1,7 @@
|
||||
return {
|
||||
-- open file at previous position
|
||||
'ethanholz/nvim-lastplace',
|
||||
config = function()
|
||||
require('nvim-lastplace').setup{}
|
||||
end,
|
||||
}
|
17
nvim-coc/lua/plugins/utility/markdown-preview.lua
Executable file
17
nvim-coc/lua/plugins/utility/markdown-preview.lua
Executable file
@@ -0,0 +1,17 @@
|
||||
return {
|
||||
-- literally the name, previews md in browser
|
||||
"iamcco/markdown-preview.nvim",
|
||||
cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" },
|
||||
ft = { "markdown" },
|
||||
build = function(plugin)
|
||||
if vim.fn.executable "npx" then
|
||||
vim.cmd("!cd " .. plugin.dir .. " && cd app && npx --yes yarn install")
|
||||
else
|
||||
vim.cmd [[Lazy load markdown-preview.nvim]]
|
||||
vim.fn["mkdp#util#install"]()
|
||||
end
|
||||
end,
|
||||
init = function()
|
||||
if vim.fn.executable "npx" then vim.g.mkdp_filetypes = { "markdown" } end
|
||||
end,
|
||||
}
|
17
nvim-coc/lua/plugins/utility/multicursors.lua
Executable file
17
nvim-coc/lua/plugins/utility/multicursors.lua
Executable file
@@ -0,0 +1,17 @@
|
||||
return {
|
||||
"smoka7/multicursors.nvim",
|
||||
event = "VeryLazy",
|
||||
dependencies = {
|
||||
'nvimtools/hydra.nvim',
|
||||
},
|
||||
opts = {},
|
||||
cmd = { 'MCstart', 'MCvisual', 'MCclear', 'MCpattern', 'MCvisualPattern', 'MCunderCursor' },
|
||||
keys = {
|
||||
{
|
||||
mode = { 'v', 'n' },
|
||||
'<leader><leader>c',
|
||||
'<cmd>MCstart<cr>',
|
||||
desc = 'Create a selection for selected text or word under the cursor',
|
||||
},
|
||||
},
|
||||
}
|
146
nvim-coc/lua/plugins/utility/navbuddy.lua
Executable file
146
nvim-coc/lua/plugins/utility/navbuddy.lua
Executable file
@@ -0,0 +1,146 @@
|
||||
return {
|
||||
"SmiteshP/nvim-navbuddy",
|
||||
dependencies = {
|
||||
"SmiteshP/nvim-navic",
|
||||
"MunifTanjim/nui.nvim",
|
||||
},
|
||||
opts = { lsp = { auto_attach = true } },
|
||||
config = function()
|
||||
local actions = require("nvim-navbuddy.actions")
|
||||
require("nvim-navbuddy").setup({
|
||||
window = {
|
||||
border = "rounded", -- "rounded", "double", "solid", "none"
|
||||
-- or an array with eight chars building up the border in a clockwise fashion
|
||||
-- starting with the top-left corner. eg: { "╔", "═" ,"╗", "║", "╝", "═", "╚", "║" }.
|
||||
size = "60%", -- Or table format example: { height = "40%", width = "100%"}
|
||||
position = "50%", -- Or table format example: { row = "100%", col = "0%"}
|
||||
scrolloff = nil, -- scrolloff value within navbuddy window
|
||||
sections = {
|
||||
left = {
|
||||
size = "20%",
|
||||
border = nil, -- You can set border style for each section individually as well.
|
||||
},
|
||||
mid = {
|
||||
size = "40%",
|
||||
border = nil,
|
||||
},
|
||||
right = {
|
||||
-- No size option for right most section. It fills to
|
||||
-- remaining area.
|
||||
border = nil,
|
||||
preview = "leaf", -- Right section can show previews too.
|
||||
-- Options: "leaf", "always" or "never"
|
||||
},
|
||||
},
|
||||
},
|
||||
node_markers = {
|
||||
enabled = true,
|
||||
icons = {
|
||||
leaf = " ",
|
||||
leaf_selected = " → ",
|
||||
branch = " ",
|
||||
},
|
||||
},
|
||||
icons = {
|
||||
File = " ",
|
||||
Module = " ",
|
||||
Namespace = " ",
|
||||
Package = " ",
|
||||
Class = " ",
|
||||
Method = " ",
|
||||
Property = " ",
|
||||
Field = " ",
|
||||
Constructor = " ",
|
||||
Enum = "",
|
||||
Interface = "",
|
||||
Function = " ",
|
||||
Variable = " ",
|
||||
Constant = " ",
|
||||
String = " ",
|
||||
Number = " ",
|
||||
Boolean = "◩ ",
|
||||
Array = " ",
|
||||
Object = " ",
|
||||
Key = " ",
|
||||
Null = " ",
|
||||
EnumMember = " ",
|
||||
Struct = " ",
|
||||
Event = " ",
|
||||
Operator = " ",
|
||||
TypeParameter = " ",
|
||||
},
|
||||
use_default_mappings = true, -- If set to false, only mappings set
|
||||
-- by user are set. Else default
|
||||
-- mappings are used for keys
|
||||
-- that are not set by user
|
||||
mappings = {
|
||||
["<esc>"] = actions.close(), -- Close and cursor to original location
|
||||
["q"] = actions.close(),
|
||||
|
||||
["j"] = actions.next_sibling(), -- down
|
||||
["k"] = actions.previous_sibling(), -- up
|
||||
|
||||
["h"] = actions.parent(), -- Move to left panel
|
||||
["l"] = actions.children(), -- Move to right panel
|
||||
["0"] = actions.root(), -- Move to first panel
|
||||
|
||||
["<C-S-v>"] = actions.visual_name(), -- Visual selection of name
|
||||
["<C-S-V>"] = actions.visual_scope(), -- Visual selection of scope
|
||||
|
||||
["y"] = actions.yank_name(), -- Yank the name to system clipboard "+
|
||||
["Y"] = actions.yank_scope(), -- Yank the scope to system clipboard "+
|
||||
|
||||
["i"] = actions.insert_name(), -- Insert at start of name
|
||||
["I"] = actions.insert_scope(), -- Insert at start of scope
|
||||
|
||||
["a"] = actions.append_name(), -- Insert at end of name
|
||||
["A"] = actions.append_scope(), -- Insert at end of scope
|
||||
|
||||
["r"] = actions.rename(), -- Rename currently focused symbol
|
||||
|
||||
["d"] = actions.delete(), -- Delete scope
|
||||
|
||||
["f"] = actions.fold_create(), -- Create fold of current scope
|
||||
["F"] = actions.fold_delete(), -- Delete fold of current scope
|
||||
|
||||
["c"] = actions.comment(), -- Comment out current scope
|
||||
|
||||
["<enter>"] = actions.select(), -- Goto selected symbol
|
||||
["o"] = actions.select(),
|
||||
|
||||
["J"] = actions.move_down(), -- Move focused node down
|
||||
["K"] = actions.move_up(), -- Move focused node up
|
||||
|
||||
["s"] = actions.toggle_preview(), -- Show preview of current node
|
||||
|
||||
["<C-v>"] = actions.vsplit(), -- Open selected node in a vertical split
|
||||
["<C-s>"] = actions.hsplit(), -- Open selected node in a horizontal split
|
||||
|
||||
["t"] = actions.telescope({ -- Fuzzy finder at current level.
|
||||
layout_config = { -- All options that can be
|
||||
height = 0.60, -- passed to telescope.nvim's
|
||||
width = 0.60, -- default can be passed here.
|
||||
prompt_position = "top",
|
||||
preview_width = 0.50,
|
||||
},
|
||||
layout_strategy = "horizontal",
|
||||
}),
|
||||
|
||||
["g?"] = actions.help(), -- Open mappings help window
|
||||
},
|
||||
lsp = {
|
||||
auto_attach = true, -- If set to true, you don't need to manually use attach function
|
||||
preference = nil, -- list of lsp server names in order of preference
|
||||
},
|
||||
source_buffer = {
|
||||
follow_node = true, -- Keep the current node in focus on the source buffer
|
||||
highlight = true, -- Highlight the currently focused node
|
||||
reorient = "smart", -- "smart", "top", "mid" or "none"
|
||||
scrolloff = nil, -- scrolloff value when navbuddy is open
|
||||
},
|
||||
custom_hl_group = nil, -- "Visual" or any other hl group to use instead of inverted colors
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>n", ":Navbuddy<CR>", { silent = true, desc = "open navbuddy menu" })
|
||||
end,
|
||||
}
|
8
nvim-coc/lua/plugins/utility/surround.lua
Executable file
8
nvim-coc/lua/plugins/utility/surround.lua
Executable file
@@ -0,0 +1,8 @@
|
||||
return {
|
||||
"kylechui/nvim-surround",
|
||||
version = "*",
|
||||
event = "VeryLazy",
|
||||
config = function()
|
||||
require("nvim-surround").setup()
|
||||
end
|
||||
}
|
17
nvim-coc/lua/plugins/utility/toggleterm.lua
Executable file
17
nvim-coc/lua/plugins/utility/toggleterm.lua
Executable file
@@ -0,0 +1,17 @@
|
||||
return {
|
||||
-- literally the name, quick term toggle
|
||||
"akinsho/toggleterm.nvim",
|
||||
version = "*",
|
||||
config = function()
|
||||
require("toggleterm").setup({
|
||||
insert_mappings = false,
|
||||
terminal_mappings = false,
|
||||
open_mapping = "<leader>t",
|
||||
direction = "float",
|
||||
float_opts = {
|
||||
border = "curved",
|
||||
},
|
||||
})
|
||||
vim.keymap.set("t", "<S-Esc>", [[<cmd>ToggleTerm<CR>]], {}) -- close terminal wih esc
|
||||
end,
|
||||
}
|
15
nvim-coc/lua/plugins/utility/vimtex.lua
Executable file
15
nvim-coc/lua/plugins/utility/vimtex.lua
Executable file
@@ -0,0 +1,15 @@
|
||||
return {
|
||||
"lervag/vimtex",
|
||||
config = function()
|
||||
-- vimtex settings
|
||||
-- vim.g.vimtex_view_method = 'startup' -- PDF viewer (example: zathura, or use 'skim' for macOS)
|
||||
vim.g.vimtex_compiler_method = 'latexmk' -- Use latexmk for compilation
|
||||
vim.g.vimtex_fold_enabled = 1 -- Enable folding for LaTeX sections
|
||||
vim.g.vimtex_quickfix_mode = 0 -- Disable quickfix mode for compilation errors
|
||||
-- Key Mappings for LaTeX workflow
|
||||
vim.api.nvim_set_keymap('n', '<leader>lc', ':VimtexCompile<CR>', {}) -- Compile LaTeX file
|
||||
vim.api.nvim_set_keymap('n', '<leader>lv', ':VimtexView<CR>', {}) -- View compiled PDF
|
||||
vim.api.nvim_set_keymap('n', '<leader>lq', ':VimtexStop<CR>', {}) -- Stop compilation
|
||||
|
||||
end
|
||||
}
|
12
nvim-coc/lua/plugins/utility/whichkey.lua
Executable file
12
nvim-coc/lua/plugins/utility/whichkey.lua
Executable file
@@ -0,0 +1,12 @@
|
||||
return {
|
||||
-- keybinds popup
|
||||
"folke/which-key.nvim",
|
||||
event = "VeryLazy",
|
||||
init = function()
|
||||
vim.o.timeout = true
|
||||
vim.o.timeoutlen = 500
|
||||
end,
|
||||
opts = {
|
||||
|
||||
}
|
||||
}
|
14
nvim-coc/lua/plugins/utility/zen-mode.lua
Executable file
14
nvim-coc/lua/plugins/utility/zen-mode.lua
Executable file
@@ -0,0 +1,14 @@
|
||||
return {
|
||||
-- view buffer w/o distractions
|
||||
"folke/zen-mode.nvim",
|
||||
config = function()
|
||||
require("zen-mode").setup({
|
||||
window = {
|
||||
width = 1,
|
||||
height = 1,
|
||||
},
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>z", ":ZenMode<CR>", { silent = true, desc = "open current buffer in zen mode" })
|
||||
end,
|
||||
}
|
Reference in New Issue
Block a user