Compare commits
85 Commits
a7469a678b
...
main
Author | SHA1 | Date | |
---|---|---|---|
1fbc072e4c | |||
82cb9c4673 | |||
b6bb24d403 | |||
01221c7803 | |||
f4c7857613 | |||
41a5b1d3b5 | |||
83c31fb13f | |||
6e53296a0b | |||
408f84bb8f | |||
1a241a1241 | |||
aac415c3b5 | |||
620a5cd2d6 | |||
ee9066213b | |||
4aa0c54fc4 | |||
5870ed5fc5 | |||
1805645694 | |||
d134abbfda | |||
4d6a5a431c | |||
68c12127c2 | |||
17b1d19a93 | |||
ea0a0c68c6 | |||
f989dadbd2 | |||
982b467cb0 | |||
877b59d5c5 | |||
acb285c118 | |||
37bc89fe35 | |||
c63aa24fa9 | |||
1be9e1875e | |||
d20ec7a2e7 | |||
ced6316866 | |||
cee8c2b203 | |||
52bfe295cb | |||
1d9cbabc87 | |||
4cb32c09b2 | |||
9d5cc591da | |||
51667cb7f1 | |||
311fc8bb8f | |||
08ca032751 | |||
37bf15d060 | |||
641511b845 | |||
94dc7b06ff | |||
cd11696d75 | |||
051dca6a2a | |||
f9cea1aa93 | |||
d75370ec4f | |||
109acc4cf5 | |||
177b91fc2d | |||
354ef1fef7 | |||
f50c4b19fc | |||
0eafcb26b2 | |||
f7d3c8b24b | |||
67363070e3 | |||
b18160a61b | |||
a4ce76b904 | |||
2a0b4634ae | |||
10e4d65827 | |||
3a7a2fdcd9 | |||
410c563e96 | |||
68fc58a50a | |||
d7b445365d | |||
3e6fae6379 | |||
c396441544 | |||
4656f74fdd | |||
c736531a33 | |||
e0c1fc4368 | |||
ae83467104 | |||
07ba68b8ff | |||
413023e903 | |||
2f511561d9 | |||
1112968c60 | |||
79d26ff6f8 | |||
d85ed3b970 | |||
a65afcc808 | |||
f5533f7693 | |||
3138926e01 | |||
fa358c9843 | |||
df72ebda9e | |||
0269979276 | |||
ad3afc0064 | |||
b8e3cf84ad | |||
869fb9d069 | |||
2fb3ad6968 | |||
fd0ebdf024 | |||
7d90560964 | |||
98b3bb3763 |
@@ -1,6 +1,11 @@
|
|||||||
# NeoVim Configs
|
# NeoVim Configs
|
||||||
This repository contains my NeoVim configs, including some of my snippets.
|
This repository contains my NeoVim configs, including some of my snippets.
|
||||||
|
|
||||||
|
It uses Lazy.nvim as the plugin manager, lspconfig for the language server configuration, none-ls for formatting, telescope, tree-sitter and many other plugins. Partially documented and fairly well organized
|
||||||
|
|
||||||
|
## Linter configs
|
||||||
|
You may find the linter configs and setup-scripts for some linters that require some extra setup [here](https://git.janishutz.com/janishutz/dotfiles/)
|
||||||
|
|
||||||
# Issues with jdtls
|
# Issues with jdtls
|
||||||
Ensure you have jdk21-opnejdk or newer installed. On Arch (and derivatives) you can switch the preferred java version using `archlinux-java set <version name>`
|
Ensure you have jdk21-opnejdk or newer installed. On Arch (and derivatives) you can switch the preferred java version using `archlinux-java set <version name>`
|
||||||
|
|
||||||
|
9
nvim-clean.sh
Executable file
9
nvim-clean.sh
Executable file
@@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
git pull
|
||||||
|
rm -rf ~/.local/share/nvim/
|
||||||
|
rm -rf ~/.local/state/nvim/
|
||||||
|
rm -rf ~/.cache/nvim/
|
||||||
|
|
||||||
|
# Re-Install configs to clean out lazy-lock and all other residue
|
||||||
|
./nvim-install.sh
|
@@ -1,27 +0,0 @@
|
|||||||
{
|
|
||||||
"diagnostic.enable": true,
|
|
||||||
"diagnostic.virtualText": true,
|
|
||||||
"diagnostic.floatEnabled": true,
|
|
||||||
"python.pythonPath": "/usr/bin/python3",
|
|
||||||
"suggest.enable": true,
|
|
||||||
"suggest.autoTrigger": "always",
|
|
||||||
"suggest.minTriggerInputLength": 1,
|
|
||||||
"suggest.timeout": 500,
|
|
||||||
"suggest.noselect": false,
|
|
||||||
"suggest.border": "single",
|
|
||||||
"suggest.floatMaxHeight": 20,
|
|
||||||
"suggest.floatMaxWidth": 80,
|
|
||||||
"suggest.menuHeight": 10,
|
|
||||||
"suggest.padding": [0, 1],
|
|
||||||
"snippets.ultisnips.pythonPrompt": false,
|
|
||||||
"languageserver": {
|
|
||||||
"verilog": {
|
|
||||||
"command": "verible-verilog-ls",
|
|
||||||
"filetypes": ["verilog", "systemverilog"],
|
|
||||||
"rootPatterns": ["verible-verilog-ls"]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"coc.preferences.enablePostfixCompletions": true,
|
|
||||||
"coc.source.buffer.enable": true,
|
|
||||||
"coc.source.file.enable": true
|
|
||||||
}
|
|
@@ -1,3 +0,0 @@
|
|||||||
require("options")
|
|
||||||
require("keybinds")
|
|
||||||
require("lazy-conf")
|
|
@@ -1,132 +0,0 @@
|
|||||||
local opts = require("utils").opts
|
|
||||||
|
|
||||||
local keymap = vim.keymap
|
|
||||||
|
|
||||||
-- write to file (sudo if readonly)
|
|
||||||
if vim.g.vscode then
|
|
||||||
keymap.set("n", "W", ":Write<CR>", opts("write file (vscode)"))
|
|
||||||
else
|
|
||||||
keymap.set("n", "W", ":w!<CR>", opts("write file"))
|
|
||||||
keymap.set("n", "<leader>W", ":lua require('utils').sudo_write()<CR>", opts("sudo write file"))
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Handy VSCode Shortcuts
|
|
||||||
-- Move lines up and down
|
|
||||||
vim.api.nvim_set_keymap('n', '<A-Up>', ':m .-2<CR>==', { noremap = true, silent = true })
|
|
||||||
vim.api.nvim_set_keymap('n', '<A-Down>', ':m .+1<CR>==', { noremap = true, silent = true })
|
|
||||||
vim.api.nvim_set_keymap('n', '<A-k>', '<Esc>:m .-2<CR>', { noremap = true, silent = true })
|
|
||||||
vim.api.nvim_set_keymap('n', '<A-j>', '<Esc>:m .+1<CR>', { noremap = true, silent = true })
|
|
||||||
|
|
||||||
-- Move lines in insert mode
|
|
||||||
vim.api.nvim_set_keymap('i', '<A-Up>', '<Esc>:m .-2<CR>i', { noremap = true, silent = true })
|
|
||||||
vim.api.nvim_set_keymap('i', '<A-Down>', '<Esc>:m .+1<CR>i', { noremap = true, silent = true })
|
|
||||||
vim.api.nvim_set_keymap('i', '<A-k>', '<Esc>:m .-2<CR>i', { noremap = true, silent = true })
|
|
||||||
vim.api.nvim_set_keymap('i', '<A-j>', '<Esc>:m .+1<CR>i', { noremap = true, silent = true })
|
|
||||||
|
|
||||||
-- Copy lines up and down in normal mode
|
|
||||||
vim.api.nvim_set_keymap('n', '<C-A-S-Up>', ':t .-1<CR>', { noremap = true, silent = true })
|
|
||||||
vim.api.nvim_set_keymap('n', '<C-A-S-Down>', ':t .-1<CR>', { noremap = true, silent = true })
|
|
||||||
vim.api.nvim_set_keymap('n', '<C-A-S-k>', ':t .-1<CR>', { noremap = true, silent = true })
|
|
||||||
vim.api.nvim_set_keymap('n', '<C-A-S-j>', ':t .<CR>', { noremap = true, silent = true })
|
|
||||||
|
|
||||||
-- Copy lines up and down in insert mode
|
|
||||||
vim.api.nvim_set_keymap('i', '<C-A-S-Up>', '<Esc>:t.-1<CR>i', { noremap = true, silent = true })
|
|
||||||
vim.api.nvim_set_keymap('i', '<C-A-S-Down>', '<Esc>:t.<CR>i', { noremap = true, silent = true })
|
|
||||||
vim.api.nvim_set_keymap('i', '<C-A-S-k>', '<Esc>:t.-1<CR>i', { noremap = true, silent = true })
|
|
||||||
vim.api.nvim_set_keymap('i', '<C-A-S-j>', '<Esc>:t.<CR>i', { noremap = true, silent = true })
|
|
||||||
|
|
||||||
|
|
||||||
-- Keep selection in visual mode when indenting
|
|
||||||
vim.api.nvim_set_keymap('v', '<', '<gv', { noremap = true, silent = true })
|
|
||||||
vim.api.nvim_set_keymap('v', '>', '>gv', { noremap = true, silent = true })
|
|
||||||
|
|
||||||
|
|
||||||
-- Save shortcut
|
|
||||||
keymap.set("i", "<C-s>", "<Esc>:w<CR>a", opts("Save file (shortcut)"))
|
|
||||||
keymap.set("n", "<C-s>", ":w<CR>", opts("Save file (shortcut)"))
|
|
||||||
|
|
||||||
-- Save and quit (sudo and no sudo)
|
|
||||||
keymap.set("n", "E", ":wq!<CR>", opts("write and quit file"))
|
|
||||||
keymap.set("n", "<leader>E", ":lua require('utils').sudo_write()<CR>:q!<CR>", opts("sudo write and quit file"))
|
|
||||||
|
|
||||||
-- Quite file
|
|
||||||
keymap.set("n", "Q", ":q!<CR>", opts("quit file"))
|
|
||||||
|
|
||||||
-- Duplicate line
|
|
||||||
keymap.set("n", "<leader>dd", ":t.<CR>", opts("Duplicate line"))
|
|
||||||
|
|
||||||
-- Editor focus
|
|
||||||
keymap.set("n", "<C-b>", ":wincmd p<CR>", opts("Cycle focus"))
|
|
||||||
|
|
||||||
-- Key Mappings for LaTeX workflow
|
|
||||||
keymap.set('n', '<leader>lc', ':VimtexCompile<CR>', opts("Compile latex document")) -- Compile LaTeX file
|
|
||||||
keymap.set('n', '<leader>lv', ':VimtexView<CR>', opts("View compiled latex pdf")) -- View compiled PDF
|
|
||||||
keymap.set('n', '<leader>lq', ':VimtexStop<CR>', opts("Stop Compiling document")) -- Stop compilation
|
|
||||||
|
|
||||||
-- Markdown-Preview
|
|
||||||
keymap.set('n', '<leader><leader>m', ':MarkdownPreview<CR>', opts("Preview Markdown document in browser")) -- Stop compilation
|
|
||||||
|
|
||||||
-- window navigation
|
|
||||||
keymap.set("n", "<A-h>", "<C-w>h", opts())
|
|
||||||
keymap.set("n", "<A-S-j>", "<C-w>j", opts())
|
|
||||||
keymap.set("n", "<A-S-k>", "<C-w>k", opts())
|
|
||||||
keymap.set("n", "<A-l>", "<C-w>l", opts())
|
|
||||||
|
|
||||||
-- window resize
|
|
||||||
keymap.set("n", "<A-C-h>", ":vertical resize -2<CR>", opts())
|
|
||||||
keymap.set("n", "<A-C-j>", ":resize -2<CR>", opts())
|
|
||||||
keymap.set("n", "<A-C-k>", ":resize +2<CR>", opts())
|
|
||||||
keymap.set("n", "<A-C-l>", ":vertical resize +2<CR>", opts())
|
|
||||||
|
|
||||||
-- nohlsearch
|
|
||||||
keymap.set("n", "<leader>h", ":nohlsearch<CR>", opts("remove search highlighting"))
|
|
||||||
|
|
||||||
-- run file
|
|
||||||
keymap.set("n", "<leader>r", ":!%:p<CR>", opts("run current file"))
|
|
||||||
keymap.set("n", "<leader><leader>r", ":!%:p", opts("run current file with arguments"))
|
|
||||||
|
|
||||||
-- chmod +x
|
|
||||||
keymap.set("n", "<leader>m", ":!chmod +x %:p<CR>", opts("make current file executable"))
|
|
||||||
|
|
||||||
-- script setup
|
|
||||||
keymap.set("n", "<leader>#", ":set syntax=sh<CR>:w<CR>:!chmod +x %:p<CR>:LspStart bashls<CR>i#!/bin/sh<CR><CR>", opts("setup sh script"))
|
|
||||||
keymap.set("n", "<leader><leader>#", ":set syntax=python<CR>:w<CR>:!chmod +x %:p<CR>:LspStart pyright<CR>i#!/usr/bin/env python3<CR><CR>", opts("setup python script"))
|
|
||||||
|
|
||||||
-- CTRL + Backspace
|
|
||||||
keymap.set("i", "<C-BackSpace>", "<C-w>", opts())
|
|
||||||
|
|
||||||
-- select all
|
|
||||||
keymap.set("n", "<leader>a", "ggVG", opts("select all"))
|
|
||||||
|
|
||||||
-- move cursor in insert mode
|
|
||||||
keymap.set("i", "<C-h>", "<Left>", opts())
|
|
||||||
keymap.set("i", "<C-j>", "<Down>", opts())
|
|
||||||
keymap.set("i", "<C-k>", "<Up>", opts())
|
|
||||||
keymap.set("i", "<C-l>", "<Right>", opts())
|
|
||||||
keymap.set("i", "<C-b>", "<C-Left>", opts("Jump back by word"))
|
|
||||||
keymap.set("i", "<C-e>", "<C-Right>", opts("Jump back by word"))
|
|
||||||
keymap.set("i", "<C-$>", "<End>", opts("Jump to EOL"))
|
|
||||||
keymap.set("i", "<C-0>", "<Home>", opts("Jump to beginning of line"))
|
|
||||||
|
|
||||||
-- open in neovide
|
|
||||||
-- keymap.set("n", "<leader>n", ":!neovide --no-fork %:p<CR>", opts("open in neovide (wip)"))
|
|
||||||
|
|
||||||
-- deleting doesn't yank except when used with <leader>
|
|
||||||
keymap.set({ "n", "v" }, "d", '"_d', opts())
|
|
||||||
keymap.set({ "n", "v" }, "D", '"_D', opts())
|
|
||||||
keymap.set({ "n", "v" }, "x", '"_x', opts())
|
|
||||||
keymap.set({ "n", "v" }, "X", '"_X', opts())
|
|
||||||
keymap.set({ "n", "v" }, "c", '"_c', opts())
|
|
||||||
keymap.set({ "n", "v" }, "C", '"_C', opts())
|
|
||||||
keymap.set({ "n", "v" }, "<leader>d", "d", opts("yank and delete"))
|
|
||||||
keymap.set({ "n", "v" }, "<leader>D", "D", opts("YANK and DELETE to end"))
|
|
||||||
|
|
||||||
-- <leader> + yank/paste/delete uses system clipboard
|
|
||||||
keymap.set({ "n", "v" }, "<leader>y", '"+y', opts("yank to system clipboard"))
|
|
||||||
keymap.set({ "n", "v" }, "<leader>Y", '"+y$', opts("YANK to system clipboard"))
|
|
||||||
keymap.set({ "n", "v" }, "<leader>p", '"+p', opts("paste from system clipboard"))
|
|
||||||
keymap.set({ "n", "v" }, "<leader>P", '"+P', opts("PASTE from system clipboard"))
|
|
||||||
keymap.set({ "n", "v" }, "<leader><leader>d", '"+d', opts("yank to system clipboard and delete"))
|
|
||||||
keymap.set({ "n", "v" }, "<leader><leader>D", '"+D', opts("YANK to system clipboard and DELETE"))
|
|
||||||
|
|
||||||
keymap.set("n", "<leader>wk", ":WhichKey<CR>", opts("Toggle WhichKey"))
|
|
@@ -1,26 +0,0 @@
|
|||||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
|
||||||
if not vim.loop.fs_stat(lazypath) then
|
|
||||||
vim.fn.system({
|
|
||||||
"git",
|
|
||||||
"clone",
|
|
||||||
"--filter=blob:none",
|
|
||||||
"https://github.com/folke/lazy.nvim.git",
|
|
||||||
"--branch=stable", -- latest stable release
|
|
||||||
lazypath,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
vim.opt.rtp:prepend(lazypath)
|
|
||||||
|
|
||||||
|
|
||||||
require("lazy").setup({
|
|
||||||
spec = {
|
|
||||||
{ import = "plugins.fm"},
|
|
||||||
{ import = "plugins.lsp" },
|
|
||||||
{ import = "plugins.style" },
|
|
||||||
{ import = "plugins.testing" },
|
|
||||||
{ import = "plugins.utility" }
|
|
||||||
},
|
|
||||||
change_detection = {
|
|
||||||
notify = false, -- dont notify when plugins are changed
|
|
||||||
}
|
|
||||||
})
|
|
@@ -1,36 +0,0 @@
|
|||||||
vim.g.mapleader = " "
|
|
||||||
vim.g.maplocalleader = " "
|
|
||||||
|
|
||||||
vim.opt.backspace = "2"
|
|
||||||
|
|
||||||
-- title
|
|
||||||
vim.opt.title = true
|
|
||||||
vim.opt.titlestring = "nvim - %f"
|
|
||||||
|
|
||||||
-- indentation
|
|
||||||
vim.opt.tabstop = 4
|
|
||||||
vim.opt.shiftwidth = 4
|
|
||||||
vim.opt.shiftround = true
|
|
||||||
vim.opt.expandtab = true
|
|
||||||
vim.opt.breakindent = true
|
|
||||||
vim.opt.linebreak = true
|
|
||||||
|
|
||||||
-- line numbers
|
|
||||||
vim.wo.number = true
|
|
||||||
vim.wo.cursorline = true
|
|
||||||
vim.wo.relativenumber = false
|
|
||||||
vim.opt.signcolumn = "yes" -- reserve space for diagnostics
|
|
||||||
|
|
||||||
-- search options
|
|
||||||
vim.opt.ignorecase = true
|
|
||||||
vim.opt.smartcase = true
|
|
||||||
|
|
||||||
-- swap and undo directories
|
|
||||||
vim.opt.undofile = true
|
|
||||||
vim.opt.undodir = vim.fn.expand("~/.cache/vim/undodir")
|
|
||||||
vim.opt.directory = vim.fn.expand("~/.cache/vim/swapfiles")
|
|
||||||
|
|
||||||
-- add hyprlang filetype
|
|
||||||
vim.filetype.add({
|
|
||||||
pattern = { [".*/hypr.*%.conf"] = "hyprlang" },
|
|
||||||
})
|
|
@@ -1,24 +0,0 @@
|
|||||||
return {
|
|
||||||
"nvim-tree/nvim-tree.lua",
|
|
||||||
version = "*",
|
|
||||||
lazy = false,
|
|
||||||
dependencies = {
|
|
||||||
"nvim-tree/nvim-web-devicons",
|
|
||||||
},
|
|
||||||
config = function()
|
|
||||||
vim.g.loaded_netrw = 1
|
|
||||||
vim.g.loaded_netrwPlugin = 1
|
|
||||||
|
|
||||||
require("nvim-tree").setup {
|
|
||||||
sort = {
|
|
||||||
folders_first = true,
|
|
||||||
sorter = "name"
|
|
||||||
},
|
|
||||||
filters = { custom = { "^.git$" } }
|
|
||||||
}
|
|
||||||
|
|
||||||
vim.keymap.set('n', '<leader>e', ":NvimTreeToggle<CR>", {silent = true, desc = "Open nvim-tree"})
|
|
||||||
vim.keymap.set('n', '<leader><leader>h', ":NvimTreeCollapseKeepBuffers<CR>", { silent = true, desc = "Collapse nvim-tree keeping open buffers" })
|
|
||||||
vim.keymap.set('n', '<leader><leader>e', ":NvimTreeFindFile<CR>", {silent = true, desc = "Go to currently open file in buffer or close"})
|
|
||||||
end,
|
|
||||||
}
|
|
@@ -1,87 +0,0 @@
|
|||||||
local actions = require('telescope.actions')
|
|
||||||
local action_state = require('telescope.actions.state')
|
|
||||||
|
|
||||||
-- Custom function for search and replace using Telescope
|
|
||||||
-- test
|
|
||||||
function _G.search_and_replace()
|
|
||||||
local current_file = vim.fn.expand('%:p')
|
|
||||||
local query = vim.fn.input('Enter search pattern: ')
|
|
||||||
|
|
||||||
-- Create the Telescope prompt with custom mappings
|
|
||||||
require('telescope.builtin').find_files({
|
|
||||||
prompt_title = 'Search and Replace',
|
|
||||||
cwd = vim.loop.cwd(),
|
|
||||||
hidden = true,
|
|
||||||
attach_mappings = function(prompt_bufnr, map)
|
|
||||||
actions.select_default:replace(function()
|
|
||||||
local selection = action_state.get_selected_entry()
|
|
||||||
|
|
||||||
-- Get the replace pattern from user
|
|
||||||
local replace_query = vim.fn.input('Replace with: ', '')
|
|
||||||
|
|
||||||
if not replace_query == '' then
|
|
||||||
local args = { query, replace_query }
|
|
||||||
|
|
||||||
-- Open a terminal buffer to run the search and replace command
|
|
||||||
require('telescope.builtin').terminal_job({
|
|
||||||
cmd = {
|
|
||||||
'sh', '-c',
|
|
||||||
string.format(
|
|
||||||
"grep -rl '%s' . | xargs sed -i 's/%s/%s/g'",
|
|
||||||
table.concat(args, "'"),
|
|
||||||
query,
|
|
||||||
replace_query
|
|
||||||
)
|
|
||||||
},
|
|
||||||
cwd = vim.fn.expand('%:p:h'),
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
return true
|
|
||||||
end)
|
|
||||||
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
return {
|
|
||||||
-- fuzzy finder
|
|
||||||
"nvim-telescope/telescope.nvim",
|
|
||||||
dependencies = {
|
|
||||||
"nvim-lua/plenary.nvim",
|
|
||||||
},
|
|
||||||
config = function()
|
|
||||||
local builtin = require("telescope.builtin")
|
|
||||||
local actions = require("telescope.actions")
|
|
||||||
local opts = { silent = true }
|
|
||||||
|
|
||||||
require("telescope").setup({
|
|
||||||
defaults = {
|
|
||||||
mappings = {
|
|
||||||
i = {
|
|
||||||
["<C-j>"] = actions.move_selection_next,
|
|
||||||
["<C-k>"] = actions.move_selection_previous,
|
|
||||||
["<C-q>"] = actions.send_selected_to_qflist + actions.open_qflist, -- TODO investigate
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
opts.desc = "telescope find files"
|
|
||||||
vim.keymap.set("n", "<leader>ff", builtin.find_files, opts)
|
|
||||||
|
|
||||||
opts.desc = "telescope live grep"
|
|
||||||
vim.keymap.set("n", "<leader>fg", builtin.live_grep, opts)
|
|
||||||
|
|
||||||
opts.desc = "telescope buffers"
|
|
||||||
vim.keymap.set("n", "<leader>fb", builtin.buffers, opts)
|
|
||||||
|
|
||||||
opts.desc = "telescope nvim functions"
|
|
||||||
vim.keymap.set("n", "<leader>fh", builtin.help_tags, opts)
|
|
||||||
|
|
||||||
|
|
||||||
-- Search and replace
|
|
||||||
|
|
||||||
end,
|
|
||||||
}
|
|
@@ -1,134 +0,0 @@
|
|||||||
return {
|
|
||||||
"neoclide/coc.nvim",
|
|
||||||
branch = "release",
|
|
||||||
config = function()
|
|
||||||
-- Completion support and diagnostics
|
|
||||||
vim.cmd("set completeopt=menuone,noinsert,noselect")
|
|
||||||
|
|
||||||
-- Diagnostics settings
|
|
||||||
vim.cmd("set updatetime=300")
|
|
||||||
vim.cmd('autocmd CursorHold * silent! CocAction("diagnosticRefresh")')
|
|
||||||
|
|
||||||
-- Snippet support
|
|
||||||
vim.g.coc_user_snippets = vim.fn.expand("~/.config/nvim/snippets")
|
|
||||||
|
|
||||||
-- Signature help (popup)
|
|
||||||
vim.cmd('autocmd CursorHold,CursorHoldI * silent! CocAction("showSignatureHelp")')
|
|
||||||
|
|
||||||
-- Enable some coc extensions
|
|
||||||
vim.g.coc_global_extensions = {
|
|
||||||
"coc-snippets", -- Snippets support
|
|
||||||
"coc-pyright", -- Python LSP
|
|
||||||
"coc-tsserver", -- JavaScript/TypeScript LSP
|
|
||||||
"coc-json", -- JSON LSP
|
|
||||||
"coc-html", -- HTML LSP
|
|
||||||
"coc-css", -- CSS LSP
|
|
||||||
"coc-lua", -- Lua LSP
|
|
||||||
"coc-diagnostic", -- Diagnostics
|
|
||||||
"coc-syntax", -- Syntax highlighting
|
|
||||||
"coc-eslint", -- ESLint (null-ls replacement for JS/TS)
|
|
||||||
"coc-prettier", -- Prettier formatting
|
|
||||||
"coc-java",
|
|
||||||
}
|
|
||||||
|
|
||||||
--------------
|
|
||||||
-- KEYBINDS --
|
|
||||||
--------------
|
|
||||||
local keymap = vim.keymap
|
|
||||||
local opts = { noremap = true, silent = true, desc = "" }
|
|
||||||
vim.opt.signcolumn = 'yes'
|
|
||||||
|
|
||||||
-- LSP actions
|
|
||||||
opts.desc = "Jump to previous diagnostics"
|
|
||||||
keymap.set("n", "[d", "<Plug>(coc-diagnostic-prev)", opts)
|
|
||||||
|
|
||||||
opts.desc = "Jump to next diagnostics"
|
|
||||||
keymap.set("n", "]d", "<Plug>(coc-diagnostic-next)", opts)
|
|
||||||
|
|
||||||
opts.desc = "Show LSP references"
|
|
||||||
keymap.set("n", "gR", "<cmd>CocAction('editor.action.showReferences')<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Go to declaration"
|
|
||||||
keymap.set("n", "gD", ":CocCommand editor.action.goToDeclaration<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Show LSP definitions"
|
|
||||||
keymap.set("n", "gd", "<cmd>CocAction('editor.action.goToDefinition')<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Show LSP implementations"
|
|
||||||
keymap.set("n", "gi", "<cmd>CocAction('editor.action.goToImplementation')<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Show LSP type definitions"
|
|
||||||
keymap.set("n", "gt", "<cmd>CocAction('editor.action.goToTypeDefinition')<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "See available code actions"
|
|
||||||
keymap.set({ "n", "v" }, "<leader>ca", "<cmd>CocAction('editor.action.quickFix')<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Format current file"
|
|
||||||
keymap.set("n", "<leader>gf", "<cmd>CocCommand editor.action.formatDocument<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Smart rename"
|
|
||||||
keymap.set("n", "<leader>n", "<cmd>CocCommand editor.action.rename<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Show buffer diagnostics"
|
|
||||||
keymap.set("n", "ga", "<cmd>CocList diagnostics<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Show line diagnostics"
|
|
||||||
keymap.set("n", "gA", "<cmd>CocAction('diagnostic.showLineDiagnostics')<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Go to previous diagnostic"
|
|
||||||
keymap.set("n", "[d", "<cmd>CocAction('diagnostic.gotoPrev')<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Go to next diagnostic"
|
|
||||||
keymap.set("n", "]d", "<cmd>CocAction('diagnostic.gotoNext')<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Show documentation for what is under cursor"
|
|
||||||
keymap.set("n", "<leader>k", "<cmd>CocAction('editor.action.showHover')<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Restart LSP"
|
|
||||||
keymap.set("n", "<leader>rs", "<cmd>CocRestart<CR>", opts)
|
|
||||||
|
|
||||||
-- CMP replacement
|
|
||||||
|
|
||||||
-- Mapping for next suggestion
|
|
||||||
opts.desc = "Next suggestion"
|
|
||||||
vim.keymap.set("i", "<C-j>", "<Cmd>coc#select_next()<CR>", opts)
|
|
||||||
|
|
||||||
-- Mapping for previous suggestion
|
|
||||||
opts.desc = "Previous suggestion"
|
|
||||||
vim.keymap.set("i", "<C-k>", "<Cmd>coc#select_prev()<CR>", opts)
|
|
||||||
|
|
||||||
-- Mapping for scrolling documentation forward
|
|
||||||
opts.desc = "Scroll docs forward"
|
|
||||||
vim.keymap.set("i", "<C-S-j>", "<Cmd>CocScrollFloat -4<CR>", opts)
|
|
||||||
|
|
||||||
-- Mapping for scrolling documentation backward
|
|
||||||
opts.desc = "Scroll docs back"
|
|
||||||
vim.keymap.set("i", "<C-S-k>", "<Cmd>CocScrollFloat 4<CR>", opts)
|
|
||||||
|
|
||||||
-- Mapping to show completion suggestions
|
|
||||||
opts.desc = "Show completion suggestions"
|
|
||||||
vim.keymap.set("i", "<C-Space>", "<C-r>=coc#refresh()<CR>", opts)
|
|
||||||
|
|
||||||
-- Mapping for Tab key (with snippet expansion and fallback)
|
|
||||||
opts.desc = "Complete or expand snippet"
|
|
||||||
keymap.set('i', '<TAB>', 'coc#pum#visible() ? coc#pum#next(1) : v:lua.check_back_space() ? "<TAB>" : coc#refresh()', opts)
|
|
||||||
|
|
||||||
-- Mapping for jumping to the next placeholder in snippets
|
|
||||||
opts.desc = "Jump to next placeholder in snippet"
|
|
||||||
vim.keymap.set("i", "<C-p>", function()
|
|
||||||
if vim.fn["coc#snippets#jumpable"]() == 1 then
|
|
||||||
vim.fnkeys(vim.api.nvim_replace_termcodes("<Tab>", true, true, true), "n")
|
|
||||||
end
|
|
||||||
end, opts)
|
|
||||||
|
|
||||||
-- Mapping for jumping to the previous placeholder in snippets
|
|
||||||
opts.desc = "Jump to previous placeholder in snippet"
|
|
||||||
vim.keymap.set("i", "<C-S-p>", function()
|
|
||||||
if vim.fn["coc#snippets#jumpable"]() == 1 then
|
|
||||||
vim.fn["coc#snippets#jump"](-1)
|
|
||||||
else
|
|
||||||
vim.fn.feedkeys(vim.api.nvim_replace_termcodes("<C-P>", true, true, true), "n")
|
|
||||||
end
|
|
||||||
end, opts)
|
|
||||||
end,
|
|
||||||
}
|
|
@@ -1,14 +0,0 @@
|
|||||||
return {
|
|
||||||
-- notifications && lsp progress msgs
|
|
||||||
"j-hui/fidget.nvim",
|
|
||||||
config = function()
|
|
||||||
require("fidget").setup({
|
|
||||||
notification = {
|
|
||||||
window = {
|
|
||||||
winblend = 0,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
}
|
|
@@ -1,29 +0,0 @@
|
|||||||
return {
|
|
||||||
-- syntax highlighting
|
|
||||||
"nvim-treesitter/nvim-treesitter",
|
|
||||||
build = ":TSUpdate",
|
|
||||||
config = function()
|
|
||||||
require("nvim-treesitter.configs").setup({
|
|
||||||
ensure_installed = {
|
|
||||||
"bash",
|
|
||||||
"c",
|
|
||||||
"cpp",
|
|
||||||
"hyprlang",
|
|
||||||
"java",
|
|
||||||
"javascript",
|
|
||||||
"json",
|
|
||||||
"lua",
|
|
||||||
"python",
|
|
||||||
"rust",
|
|
||||||
"typescript",
|
|
||||||
"verilog"
|
|
||||||
},
|
|
||||||
sync_install = false,
|
|
||||||
|
|
||||||
highlight = {
|
|
||||||
enable = true,
|
|
||||||
disable = { "tex" }
|
|
||||||
},
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
}
|
|
@@ -1,64 +0,0 @@
|
|||||||
return {
|
|
||||||
-- tab line
|
|
||||||
"akinsho/bufferline.nvim",
|
|
||||||
version = "*",
|
|
||||||
dependencies = "nvim-tree/nvim-web-devicons",
|
|
||||||
config = function()
|
|
||||||
local bufferline = require("bufferline")
|
|
||||||
bufferline.setup({
|
|
||||||
options = {
|
|
||||||
mode = "buffers",
|
|
||||||
show_buffer_close_icons = false,
|
|
||||||
middle_mouse_command = "bdelete! %d",
|
|
||||||
indicator = { style = "underline" },
|
|
||||||
offsets = {
|
|
||||||
{
|
|
||||||
filetype = "NvimTree",
|
|
||||||
text = " ",
|
|
||||||
text_align = "center",
|
|
||||||
separator = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
separator_style = { " ", " " },
|
|
||||||
diagnostics = "nvim_lsp",
|
|
||||||
diagnostics_indicator = function(count, level, diagnostics_dict, context)
|
|
||||||
local icon = level:match("error") and " " or " "
|
|
||||||
return icon .. count
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
local opts = { silent = true }
|
|
||||||
-- go to buffer
|
|
||||||
opts.desc = "go to buffer 1"
|
|
||||||
vim.keymap.set("n", "g1", "<Cmd>BufferLineGoToBuffer 1<CR>", opts)
|
|
||||||
opts.desc = "go to buffer 2"
|
|
||||||
vim.keymap.set("n", "g2", "<Cmd>BufferLineGoToBuffer 2<CR>", opts)
|
|
||||||
opts.desc = "go to buffer 3"
|
|
||||||
vim.keymap.set("n", "g3", "<Cmd>BufferLineGoToBuffer 3<CR>", opts)
|
|
||||||
opts.desc = "go to buffer 4"
|
|
||||||
vim.keymap.set("n", "g4", "<Cmd>BufferLineGoToBuffer 4<CR>", opts)
|
|
||||||
opts.desc = "go to buffer 5"
|
|
||||||
vim.keymap.set("n", "g5", "<Cmd>BufferLineGoToBuffer 5<CR>", opts)
|
|
||||||
opts.desc = "go to buffer 6"
|
|
||||||
vim.keymap.set("n", "g6", "<Cmd>BufferLineGoToBuffer 6<CR>", opts)
|
|
||||||
opts.desc = "go to buffer 7"
|
|
||||||
vim.keymap.set("n", "g7", "<Cmd>BufferLineGoToBuffer 7<CR>", opts)
|
|
||||||
opts.desc = "go to buffer 8"
|
|
||||||
vim.keymap.set("n", "g8", "<Cmd>BufferLineGoToBuffer 8<CR>", opts)
|
|
||||||
opts.desc = "go to buffer 9"
|
|
||||||
vim.keymap.set("n", "g9", "<Cmd>BufferLineGoToBuffer 9<CR>", opts)
|
|
||||||
opts.desc = "go to buffer 10"
|
|
||||||
vim.keymap.set("n", "g0", "<Cmd>BufferLineGoToBuffer 10<CR>", opts)
|
|
||||||
opts.desc = nil
|
|
||||||
-- cycle between buffers
|
|
||||||
vim.keymap.set("n", "J", "<cmd>BufferLineCyclePrev<CR>", opts)
|
|
||||||
vim.keymap.set("n", "K", "<cmd>BufferLineCycleNext<CR>", opts)
|
|
||||||
-- move buffers
|
|
||||||
vim.keymap.set("n", "<C-S-J>", "<cmd>BufferLineMovePrev<CR>", opts)
|
|
||||||
vim.keymap.set("n", "<C-S-K>", "<cmd>BufferLineMoveNext<CR>", opts)
|
|
||||||
-- go to previous buffer
|
|
||||||
vim.keymap.set({ "n", "i" }, "<C-Tab>", "<cmd>b#<CR>", opts)
|
|
||||||
end,
|
|
||||||
}
|
|
@@ -1,34 +0,0 @@
|
|||||||
return {
|
|
||||||
-- colorizes colors in code
|
|
||||||
'NvChad/nvim-colorizer.lua' ,
|
|
||||||
--cmd = 'ColorizerToggle',
|
|
||||||
config = function ()
|
|
||||||
require("colorizer").setup {
|
|
||||||
filetypes = { "*" },
|
|
||||||
user_default_options = {
|
|
||||||
RGB = true, -- #RGB hex codes - #FCE
|
|
||||||
RRGGBB = true, -- #RRGGBB hex codes - #F5C2E7
|
|
||||||
names = true, -- "Name" codes - lightpink
|
|
||||||
RRGGBBAA = true, -- #RRGGBBAA hex codes - #F5C2E7CC
|
|
||||||
AARRGGBB = true, -- 0xAARRGGBB hex codes - 0xCCF5C2E7
|
|
||||||
rgb_fn = true, -- CSS rgb() and rgba() functions - rgba(245,194,231,0.8)
|
|
||||||
hsl_fn = true, -- CSS hsl() and hsla() functions - hsl(0.88,0.72,0.86)
|
|
||||||
css = true, -- Enable all CSS features: rgb_fn, hsl_fn, names, RGB, RRGGBB
|
|
||||||
css_fn = true, -- Enable all CSS *functions*: rgb_fn, hsl_fn
|
|
||||||
-- Available modes for `mode`: foreground, background, virtualtext
|
|
||||||
mode = "background", -- Set the display mode.
|
|
||||||
-- Available methods are false / true / "normal" / "lsp" / "both"
|
|
||||||
-- True is same as normal
|
|
||||||
tailwind = false, -- Enable tailwind colors
|
|
||||||
-- parsers can contain values used in |user_default_options|
|
|
||||||
sass = { enable = false, parsers = { "css" }, }, -- Enable sass colors
|
|
||||||
virtualtext = "■",
|
|
||||||
-- update color values even if buffer is not focused
|
|
||||||
-- example use: cmp_menu, cmp_docs
|
|
||||||
always_update = false
|
|
||||||
},
|
|
||||||
-- all the sub-options of filetypes apply to buftypes
|
|
||||||
buftypes = {},
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
}
|
|
@@ -1,139 +0,0 @@
|
|||||||
return {
|
|
||||||
-- color theme
|
|
||||||
"EdenEast/nightfox.nvim",
|
|
||||||
lazy = false,
|
|
||||||
priority = 1000,
|
|
||||||
config = function()
|
|
||||||
local Shade = require("nightfox.lib.shade")
|
|
||||||
require("nightfox").setup({
|
|
||||||
options = {
|
|
||||||
transparent = true,
|
|
||||||
styles = {
|
|
||||||
comments = "italic",
|
|
||||||
functions = "italic",
|
|
||||||
keywords = "italic",
|
|
||||||
types = "italic",
|
|
||||||
}
|
|
||||||
},
|
|
||||||
palettes = {
|
|
||||||
all = {
|
|
||||||
black = Shade.new("#404944", 0.15, -0.15),
|
|
||||||
gray = Shade.new("#505050", 0.15, -0.15),
|
|
||||||
white = Shade.new("#dee4df", 0.15, -0.15),
|
|
||||||
red = Shade.new("#ff6060", 0.15, -0.15),
|
|
||||||
darkred = Shade.new("#903030", 0.15, -0.15),
|
|
||||||
strongred = Shade.new("#bb0000", 0.15, -0.15),
|
|
||||||
orange = Shade.new("#ce8c14", 0.15, -0.15),
|
|
||||||
green = Shade.new("#a3d397", 0.10, -0.15),
|
|
||||||
darkgreen = Shade.new("#005602", 0.10, -0.15),
|
|
||||||
darkyellow = Shade.new("#dfd100", 0.10, -0.15),
|
|
||||||
yellow = Shade.new("#e3c46d", 0.15, -0.15),
|
|
||||||
darkblue = Shade.new("#1010aa", 0.15, -0.15),
|
|
||||||
blue = Shade.new("#7070dd", 0.15, -0.15),
|
|
||||||
magenta = Shade.new("#C02490", 0.30, -0.15),
|
|
||||||
pink = Shade.new("#ff82c2", 0.15, -0.15),
|
|
||||||
purple = Shade.new("#761464", 0.15, -0.15),
|
|
||||||
cyan = Shade.new("#7ac9ff", 0.15, -0.15),
|
|
||||||
lightblue = Shade.new("#5c77ff", 0.15, -0.15),
|
|
||||||
softblue = Shade.new("#10ddff", 0.15, -0.15),
|
|
||||||
brown = Shade.new("#553200", 0.15, -0.15),
|
|
||||||
|
|
||||||
bg0 = "#0f1512", -- Dark bg (status line and float)
|
|
||||||
bg1 = "#0f1512", -- Default bg
|
|
||||||
bg2 = "#1b211e", -- Lighter bg (colorcolm folds)
|
|
||||||
bg3 = "#252b28", -- Lighter bg (cursor line)
|
|
||||||
bg4 = "#303633", -- Conceal, border fg
|
|
||||||
|
|
||||||
fg0 = "#dee4df", -- Lighter fg
|
|
||||||
fg1 = "#dee4df", -- Default fg
|
|
||||||
fg2 = "#dee4df", -- Darker fg (status line)
|
|
||||||
fg3 = "#89938d", -- Darker fg (line numbers, fold colums)
|
|
||||||
|
|
||||||
sel0 = "#404944", -- Popup bg, visual selection
|
|
||||||
sel1 = "#00513b", -- Popup sel bg, search bg
|
|
||||||
|
|
||||||
comment = "#89938d",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
specs = {
|
|
||||||
carbonfox = {
|
|
||||||
syntax = {
|
|
||||||
comment = "comment",
|
|
||||||
bracket = "darkyellow",
|
|
||||||
builtin0 = "softblue",
|
|
||||||
builtin1 = "sel0",
|
|
||||||
builtin2 = "sel1",
|
|
||||||
conditional = "darkblue",
|
|
||||||
const = "gray",
|
|
||||||
dep = "darkred",
|
|
||||||
field = "green",
|
|
||||||
func = "pink",
|
|
||||||
ident = "darkgreen",
|
|
||||||
keyword = "blue",
|
|
||||||
number = "yellow",
|
|
||||||
operator = "white",
|
|
||||||
preproc = "strongred",
|
|
||||||
regex = "purple",
|
|
||||||
statement = "magenta",
|
|
||||||
string = "cyan",
|
|
||||||
type = "red",
|
|
||||||
variable = "orange"
|
|
||||||
},
|
|
||||||
diag = {
|
|
||||||
error = "darkred",
|
|
||||||
warn = "yellow",
|
|
||||||
info = "lightblue",
|
|
||||||
hint = "fg3",
|
|
||||||
ok = "darkgreen",
|
|
||||||
},
|
|
||||||
diag_bg = {
|
|
||||||
error = "red",
|
|
||||||
warn = "#a16b00",
|
|
||||||
info = "cyan",
|
|
||||||
hint = "bg3",
|
|
||||||
ok = "green";
|
|
||||||
},
|
|
||||||
diff = {
|
|
||||||
add = "darkgreen",
|
|
||||||
delete = "darkred",
|
|
||||||
changed = "lightblue",
|
|
||||||
text = "fg0"
|
|
||||||
},
|
|
||||||
git = {
|
|
||||||
add = "darkgreen",
|
|
||||||
removed = "darkred",
|
|
||||||
changed = "lightblue",
|
|
||||||
conflict = "orange",
|
|
||||||
ignored = "gray"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
groups = {
|
|
||||||
all = {
|
|
||||||
Cursor = { fg = "palette.white", bg = "palette.lightblue" }, -- character under the cursor
|
|
||||||
WinSeparator = { fg = "palette.bg2" }, -- the column separating vertically split windows
|
|
||||||
EndOfBuffer = { link = "WinSeparator" }, -- filler lines (~) after the end of the buffer. By default, this is highlighted like |hl-NonText|.
|
|
||||||
CursorLine = { bg = "palette.bg1" },
|
|
||||||
CursorLineNr = { fg = "palette.cyan", style = "bold" }, -- Like LineNr when 'cursorline' or 'relativenumber' is set for the cursor line.
|
|
||||||
Search = { fg = "palette.lightblue", bg = "#00513b" }, -- Last search pattern highlighting (see 'hlsearch'). Also used for similar items that need to stand out.
|
|
||||||
IncSearch = { fg = "palette.lightblue", bg = "#1a6b51" }, -- 'incsearch' highlighting; also used for the text replaced with ":s///c"
|
|
||||||
ModeMsg = { fg = "palette.fg3", style = "bold" }, -- 'showmode' message (e.g., "-- INSERT --")
|
|
||||||
|
|
||||||
NvimTreeRootFolder = { fg = "palette.lightblue", style = "bold" },
|
|
||||||
NvimTreeFolderName = { fg = "palette.lightblue" },
|
|
||||||
NvimTreeFolderIcon = { fg = "palette.lightblue" },
|
|
||||||
NvimTreeOpenedFolderName = { fg = "palette.lightblue" },
|
|
||||||
NvimTreeSymlinkFolderName = { fg = "palette.magenta" },
|
|
||||||
|
|
||||||
NvimTreeExecFile = { fg = "palette.red" },
|
|
||||||
NvimTreeImageFile = { fg = "palette.white" },
|
|
||||||
NvimTreeSpecialFile = { fg = "palette.yellow" },
|
|
||||||
NvimTreeSymlink = { fg = "palette.magenta" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
if not vim.g.vscode then
|
|
||||||
vim.cmd([[colorscheme carbonfox]])
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
}
|
|
@@ -1,5 +0,0 @@
|
|||||||
return {
|
|
||||||
-- prettier prompts
|
|
||||||
'stevearc/dressing.nvim',
|
|
||||||
event = 'VeryLazy',
|
|
||||||
}
|
|
@@ -1,55 +0,0 @@
|
|||||||
return {
|
|
||||||
-- status line
|
|
||||||
'nvim-lualine/lualine.nvim',
|
|
||||||
dependencies = { 'nvim-tree/nvim-web-devicons' },
|
|
||||||
config = function()
|
|
||||||
local function getWords()
|
|
||||||
local wc = vim.api.nvim_eval("wordcount()")
|
|
||||||
if wc["visual_words"] then
|
|
||||||
return wc["visual_words"]
|
|
||||||
else
|
|
||||||
return wc["words"]
|
|
||||||
end
|
|
||||||
end
|
|
||||||
require('lualine').setup {
|
|
||||||
options = {
|
|
||||||
icons_enabled = true,
|
|
||||||
theme = "auto",
|
|
||||||
component_separators = { left = '', right = ''},
|
|
||||||
section_separators = { left = '', right = ''},
|
|
||||||
disabled_filetypes = {
|
|
||||||
statusline = {},
|
|
||||||
winbar = {},
|
|
||||||
},
|
|
||||||
ignore_focus = { 'NvimTree' },
|
|
||||||
always_divide_middle = true,
|
|
||||||
globalstatus = false,
|
|
||||||
refresh = {
|
|
||||||
statusline = 1000,
|
|
||||||
tabline = 1000,
|
|
||||||
winbar = 1000,
|
|
||||||
}
|
|
||||||
},
|
|
||||||
sections = {
|
|
||||||
lualine_a = { { 'mode', separator = { left = '', right = '' }, } },
|
|
||||||
lualine_b = {'branch', 'diff', 'diagnostics'},
|
|
||||||
lualine_c = {'filename'},
|
|
||||||
lualine_x = { getWords, 'encoding', 'fileformat', 'filetype'},
|
|
||||||
lualine_y = { { 'progress', left_padding=0 } },
|
|
||||||
lualine_z = { { 'location', separator = { left = '', right = '' }, padding=0} }
|
|
||||||
},
|
|
||||||
inactive_sections = {
|
|
||||||
lualine_a = {},
|
|
||||||
lualine_b = {},
|
|
||||||
lualine_c = {'filename'},
|
|
||||||
lualine_x = {'location'},
|
|
||||||
lualine_y = {},
|
|
||||||
lualine_z = {}
|
|
||||||
},
|
|
||||||
tabline = {},
|
|
||||||
winbar = {},
|
|
||||||
inactive_winbar = {},
|
|
||||||
extensions = {}
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
}
|
|
@@ -1,77 +0,0 @@
|
|||||||
return {
|
|
||||||
"startup-nvim/startup.nvim",
|
|
||||||
dependencies = {
|
|
||||||
"nvim-telescope/telescope.nvim",
|
|
||||||
"nvim-lua/plenary.nvim",
|
|
||||||
"nvim-telescope/telescope-file-browser.nvim",
|
|
||||||
},
|
|
||||||
config = function()
|
|
||||||
require("startup").setup({
|
|
||||||
title = {
|
|
||||||
type = "text",
|
|
||||||
align = "center",
|
|
||||||
content = {
|
|
||||||
[[]],
|
|
||||||
[[]],
|
|
||||||
[[]],
|
|
||||||
[[ ]],
|
|
||||||
[[ ██████ █████ █████ █████ ███ ]],
|
|
||||||
[[ ░░██████ ░░███ ░░███ ░░███ ░░░ ]],
|
|
||||||
[[ ░███░███ ░███ ██████ ██████ ░███ ░███ ████ █████████████ ]],
|
|
||||||
[[ ░███░░███░███ ███░░███ ███░░███ ░███ ░███ ░░███ ░░███░░███░░███ ]],
|
|
||||||
[[ ░███ ░░██████ ░███████ ░███ ░███ ░░███ ███ ░███ ░███ ░███ ░███ ]],
|
|
||||||
[[ ░███ ░░█████ ░███░░░ ░███ ░███ ░░░█████░ ░███ ░███ ░███ ░███ ]],
|
|
||||||
[[ █████ ░░█████░░██████ ░░██████ ░░███ █████ █████░███ █████ ]],
|
|
||||||
[[ ░░░░░ ░░░░░ ░░░░░░ ░░░░░░ ░░░ ░░░░░ ░░░░░ ░░░ ░░░░░ ]],
|
|
||||||
[[ ]],
|
|
||||||
},
|
|
||||||
highlight = "String",
|
|
||||||
default_color = "#010155"
|
|
||||||
},
|
|
||||||
|
|
||||||
quotes = {
|
|
||||||
type = "text",
|
|
||||||
align = "center",
|
|
||||||
content = function ()
|
|
||||||
local handle = io.popen("pwd")
|
|
||||||
if handle then
|
|
||||||
local cwd = handle:read("*l")
|
|
||||||
handle:close()
|
|
||||||
return {"Currently in " .. cwd}
|
|
||||||
else
|
|
||||||
return {"Error running command"}
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
highlight = "String",
|
|
||||||
default_color = "#FFFFFF"
|
|
||||||
},
|
|
||||||
|
|
||||||
old = {
|
|
||||||
type = "oldfiles",
|
|
||||||
oldfiles_directory = true,
|
|
||||||
align = "center",
|
|
||||||
title = "Old files",
|
|
||||||
oldfiles_amount = 10,
|
|
||||||
highlight = "String",
|
|
||||||
default_color = "#FFFFFF",
|
|
||||||
content = "",
|
|
||||||
},
|
|
||||||
|
|
||||||
options = {
|
|
||||||
mapping_keys = false;
|
|
||||||
},
|
|
||||||
|
|
||||||
colors = {
|
|
||||||
background = "#000000",
|
|
||||||
folded_section = "#100000"
|
|
||||||
},
|
|
||||||
|
|
||||||
mappings = {
|
|
||||||
execute_command = "<C-r>",
|
|
||||||
open_file = "<CR>",
|
|
||||||
},
|
|
||||||
|
|
||||||
parts = {"title", "quotes", "old"}
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
}
|
|
@@ -1,103 +0,0 @@
|
|||||||
return {
|
|
||||||
"mfussenegger/nvim-dap",
|
|
||||||
dependencies = {
|
|
||||||
{ "nvim-neotest/nvim-nio" },
|
|
||||||
{ "rcarriga/nvim-dap-ui" },
|
|
||||||
{ "theHamsta/nvim-dap-virtual-text" },
|
|
||||||
{ "nvim-telescope/telescope-dap.nvim" },
|
|
||||||
},
|
|
||||||
-- stylua: ignore
|
|
||||||
keys = {
|
|
||||||
{ "<leader>bR", function() require("dap").run_to_cursor() end, desc = "Run to Cursor", },
|
|
||||||
{ "<leader>bE", function() require("dapui").eval(vim.fn.input "[Expression] > ") end, desc = "Evaluate Input", },
|
|
||||||
{ "<leader>bC", function() require("dap").set_breakpoint(vim.fn.input "[Condition] > ") end, desc = "Conditional Breakpoint", },
|
|
||||||
{ "<leader>bU", function() require("dapui").toggle() end, desc = "Toggle UI", },
|
|
||||||
{ "<leader>bb", function() require("dap").step_back() end, desc = "Step Back", },
|
|
||||||
{ "<leader>bc", function() require("dap").continue() end, desc = "Continue", },
|
|
||||||
{ "<leader>bd", function() require("dap").disconnect() end, desc = "Disconnect", },
|
|
||||||
{ "<leader>be", function() require("dapui").eval() end, desc = "Evaluate", },
|
|
||||||
{ "<leader>bg", function() require("dap").session() end, desc = "Get Session", },
|
|
||||||
{ "<leader>bh", function() require("dap.ui.widgets").hover() end, desc = "Hover Variables", },
|
|
||||||
{ "<leader>bS", function() require("dap.ui.widgets").scopes() end, desc = "Scopes", },
|
|
||||||
{ "<leader>bi", function() require("dap").step_into() end, desc = "Step Into", },
|
|
||||||
{ "<leader>bo", function() require("dap").step_over() end, desc = "Step Over", },
|
|
||||||
{ "<leader>bp", function() require("dap").pause.toggle() end, desc = "Pause", },
|
|
||||||
{ "<leader>bq", function() require("dap").close() end, desc = "Quit", },
|
|
||||||
{ "<leader>br", function() require("dap").repl.toggle() end, desc = "Toggle REPL", },
|
|
||||||
{ "<leader>bs", function() require("dap").continue() end, desc = "Start", },
|
|
||||||
{ "<leader>bt", function() require("dap").toggle_breakpoint() end, desc = "Toggle Breakpoint", },
|
|
||||||
{ "<leader>bx", function() require("dap").terminate() end, desc = "Terminate", },
|
|
||||||
{ "<leader>bu", function() require("dap").step_out() end, desc = "Step Out", },
|
|
||||||
},
|
|
||||||
config = function()
|
|
||||||
require("nvim-dap-virtual-text").setup({
|
|
||||||
commented = true,
|
|
||||||
})
|
|
||||||
|
|
||||||
local dap, dapui = require("dap"), require("dapui")
|
|
||||||
dapui.setup({})
|
|
||||||
|
|
||||||
dap.listeners.after.event_initialized["dapui_config"] = function()
|
|
||||||
dapui.open()
|
|
||||||
end
|
|
||||||
dap.listeners.before.event_terminated["dapui_config"] = function()
|
|
||||||
dapui.close()
|
|
||||||
end
|
|
||||||
dap.listeners.before.event_exited["dapui_config"] = function()
|
|
||||||
dapui.close()
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.fn.sign_define("DapBreakpoint", { text = "●", texthl = "DapBreakpoint", linehl = "", numhl = ""})
|
|
||||||
vim.fn.sign_define("DapBreakpointCondition", { text = "●", texthl = "DapBreakpointCondition", linehl = "", numhl = ""})
|
|
||||||
vim.fn.sign_define("DapLogPoint", { text = "◆", texthl = "DapLogPoint", linehl = "", numhl = ""})
|
|
||||||
vim.fn.sign_define('DapStopped', { text='', texthl='DapStopped', linehl='DapStopped', numhl= 'DapStopped' })
|
|
||||||
|
|
||||||
dap.configurations.python = {
|
|
||||||
{
|
|
||||||
type = "python",
|
|
||||||
request = "launch",
|
|
||||||
name = "Launch file",
|
|
||||||
|
|
||||||
-- Options below are for debugpy, see https://github.com/microsoft/debugpy/wiki/Debug-configuration-settings for supported options
|
|
||||||
|
|
||||||
program = "${file}", -- This configuration will launch the current file if used.
|
|
||||||
pythonPath = function()
|
|
||||||
local cwd = vim.fn.getcwd()
|
|
||||||
if vim.fn.executable(cwd .. "/venv/bin/python") == 1 then
|
|
||||||
return cwd .. "/venv/bin/python"
|
|
||||||
elseif vim.fn.executable(cwd .. "/.venv/bin/python") == 1 then
|
|
||||||
return cwd .. "/.venv/bin/python"
|
|
||||||
else
|
|
||||||
return "/usr/bin/python"
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
dap.adapters.python = function(cb, config)
|
|
||||||
if config.request == "attach" then
|
|
||||||
---@diagnostic disable-next-line: undefined-field
|
|
||||||
local port = (config.connect or config).port
|
|
||||||
---@diagnostic disable-next-line: undefined-field
|
|
||||||
local host = (config.connect or config).host or "127.0.0.1"
|
|
||||||
cb({
|
|
||||||
type = "server",
|
|
||||||
port = assert(port, "`connect.port` is required for a python `attach` configuration"),
|
|
||||||
host = host,
|
|
||||||
options = {
|
|
||||||
source_filetype = "python",
|
|
||||||
},
|
|
||||||
})
|
|
||||||
else
|
|
||||||
cb({
|
|
||||||
type = "executable",
|
|
||||||
command = vim.fn.stdpath("data") .. '/mason/packages/debugpy/venv/bin/python',
|
|
||||||
args = { "-m", "debugpy.adapter" },
|
|
||||||
options = {
|
|
||||||
source_filetype = "python",
|
|
||||||
},
|
|
||||||
})
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
}
|
|
@@ -1,70 +0,0 @@
|
|||||||
-- plugins/neotest_config.lua
|
|
||||||
return {
|
|
||||||
-- Load neotest
|
|
||||||
{
|
|
||||||
"nvim-neotest/neotest",
|
|
||||||
dependencies = {
|
|
||||||
-- For JavaScript, TypeScript (Vite)
|
|
||||||
"marilari88/neotest-vitest",
|
|
||||||
-- For Python
|
|
||||||
"nvim-neotest/neotest-python",
|
|
||||||
-- For C, C++, Rust
|
|
||||||
"orjangj/neotest-ctest",
|
|
||||||
"rouge8/neotest-rust",
|
|
||||||
},
|
|
||||||
config = function()
|
|
||||||
local neotest = require("neotest")
|
|
||||||
local keymap = vim.keymap.set
|
|
||||||
|
|
||||||
-- General setup for neotest
|
|
||||||
neotest.setup({
|
|
||||||
adapters = {
|
|
||||||
-- Vite Adapter for JavaScript/TypeScript
|
|
||||||
require("neotest-vitest"),
|
|
||||||
-- Python Adapter
|
|
||||||
require("neotest-python"),
|
|
||||||
-- C/C++ Adapter
|
|
||||||
require("neotest-ctest"),
|
|
||||||
-- Rust Adapter
|
|
||||||
require("neotest-rust"),
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Keybinding Setup
|
|
||||||
local opts = { noremap = true, silent = true }
|
|
||||||
|
|
||||||
-- Run nearest test
|
|
||||||
opts.desc = "Run nearest test"
|
|
||||||
keymap("n", "<leader><leader>tr", '<cmd>lua require("neotest").run.run()<cr>', opts)
|
|
||||||
|
|
||||||
-- Run all tests in the current file
|
|
||||||
opts.desc = "Run all tests in current file"
|
|
||||||
keymap("n", "<leader><leader>tf", '<cmd>lua require("neotest").run.run(vim.fn.expand("%"))', opts)
|
|
||||||
|
|
||||||
-- Run all tests in the entire project
|
|
||||||
opts.desc = "Run all tests in project"
|
|
||||||
keymap("n", "<leader><leader>ta", "<cmd>Neotest run<cr>", opts)
|
|
||||||
|
|
||||||
-- Stop running tests
|
|
||||||
opts.desc = "Stop tests"
|
|
||||||
keymap("n", "<leader><leader>ts", "<cmd>Neotest stop<cr>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Jump to next test"
|
|
||||||
keymap("n", "<leader><leader>tn", "<cmd>Neotest jump next<cr>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Jump to previous test"
|
|
||||||
keymap("n", "<leader><leader>tp", "<cmd>Neotest jump prev<cr>", opts)
|
|
||||||
|
|
||||||
-- Show test summary
|
|
||||||
opts.desc = "Show neotest test summary"
|
|
||||||
keymap("n", "<leader><leader>tv", "<cmd>Neotest summary<cr>", opts)
|
|
||||||
|
|
||||||
-- Toggle the Neotest panel
|
|
||||||
opts.desc = "Show neotest output"
|
|
||||||
keymap("n", "<leader><leader>to", "<cmd>Neotest output<cr>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Show neotest output as panel"
|
|
||||||
keymap("n", "<leader><leader>tn", "<cmd>Neotest output-panel<cr>", opts)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
}
|
|
@@ -1,65 +0,0 @@
|
|||||||
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,
|
|
||||||
}
|
|
@@ -1,9 +0,0 @@
|
|||||||
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
|
|
||||||
}
|
|
||||||
|
|
@@ -1,61 +0,0 @@
|
|||||||
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,
|
|
||||||
}
|
|
@@ -1,10 +0,0 @@
|
|||||||
return {
|
|
||||||
-- add comment keybinds
|
|
||||||
'numToStr/Comment.nvim',
|
|
||||||
opts = {},
|
|
||||||
lazy = false,
|
|
||||||
config = function()
|
|
||||||
require('Comment').setup()
|
|
||||||
require('Comment.ft').set('hyprlang', '#%s')
|
|
||||||
end
|
|
||||||
}
|
|
@@ -1,4 +0,0 @@
|
|||||||
return {
|
|
||||||
-- similar to sticky scroll in vscode
|
|
||||||
"nvim-treesitter/nvim-treesitter-context",
|
|
||||||
}
|
|
@@ -1,12 +0,0 @@
|
|||||||
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
|
|
||||||
}
|
|
@@ -1,9 +0,0 @@
|
|||||||
return {
|
|
||||||
-- indent lines
|
|
||||||
'lukas-reineke/indent-blankline.nvim',
|
|
||||||
opts = {},
|
|
||||||
main = 'ibl',
|
|
||||||
config = function()
|
|
||||||
require('ibl').setup()
|
|
||||||
end
|
|
||||||
}
|
|
@@ -1,7 +0,0 @@
|
|||||||
return {
|
|
||||||
-- open file at previous position
|
|
||||||
'ethanholz/nvim-lastplace',
|
|
||||||
config = function()
|
|
||||||
require('nvim-lastplace').setup{}
|
|
||||||
end,
|
|
||||||
}
|
|
@@ -1,17 +0,0 @@
|
|||||||
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,
|
|
||||||
}
|
|
@@ -1,17 +0,0 @@
|
|||||||
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',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
@@ -1,146 +0,0 @@
|
|||||||
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,
|
|
||||||
}
|
|
@@ -1,8 +0,0 @@
|
|||||||
return {
|
|
||||||
"kylechui/nvim-surround",
|
|
||||||
version = "*",
|
|
||||||
event = "VeryLazy",
|
|
||||||
config = function()
|
|
||||||
require("nvim-surround").setup()
|
|
||||||
end
|
|
||||||
}
|
|
@@ -1,17 +0,0 @@
|
|||||||
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,
|
|
||||||
}
|
|
@@ -1,15 +0,0 @@
|
|||||||
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
|
|
||||||
}
|
|
@@ -1,12 +0,0 @@
|
|||||||
return {
|
|
||||||
-- keybinds popup
|
|
||||||
"folke/which-key.nvim",
|
|
||||||
event = "VeryLazy",
|
|
||||||
init = function()
|
|
||||||
vim.o.timeout = true
|
|
||||||
vim.o.timeoutlen = 500
|
|
||||||
end,
|
|
||||||
opts = {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,14 +0,0 @@
|
|||||||
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,
|
|
||||||
}
|
|
@@ -1,55 +0,0 @@
|
|||||||
-- taken from https://github.com/ibhagwan/nvim-lua
|
|
||||||
|
|
||||||
local M = {}
|
|
||||||
|
|
||||||
M.opts = function(desc)
|
|
||||||
if desc then
|
|
||||||
return { silent = true, desc = desc}
|
|
||||||
else
|
|
||||||
return { silent = true }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
M.sudo_exec = function(cmd, print_output)
|
|
||||||
vim.fn.inputsave()
|
|
||||||
local password = vim.fn.inputsecret("Password: ")
|
|
||||||
vim.fn.inputrestore()
|
|
||||||
if not password or #password == 0 then
|
|
||||||
print("Invalid password, sudo aborted")
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
local out = vim.fn.system(string.format("sudo -p '' -S %s", cmd), password)
|
|
||||||
if vim.v.shell_error ~= 0 then
|
|
||||||
print("\r\n")
|
|
||||||
print(out)
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
if print_output then print("\r\n", out) end
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
|
|
||||||
M.sudo_write = function(tmpfile, filepath)
|
|
||||||
if not tmpfile then tmpfile = vim.fn.tempname() end
|
|
||||||
if not filepath then filepath = vim.fn.expand("%") end
|
|
||||||
if not filepath or #filepath == 0 then
|
|
||||||
print("E32: No file name")
|
|
||||||
return
|
|
||||||
end
|
|
||||||
-- `bs=1048576` is equivalent to `bs=1M` for GNU dd or `bs=1m` for BSD dd
|
|
||||||
-- Both `bs=1M` and `bs=1m` are non-POSIX
|
|
||||||
local cmd = string.format("dd if=%s of=%s bs=1048576",
|
|
||||||
vim.fn.shellescape(tmpfile),
|
|
||||||
vim.fn.shellescape(filepath))
|
|
||||||
-- no need to check error as this fails the entire function
|
|
||||||
vim.api.nvim_exec(string.format("write! %s", tmpfile), true)
|
|
||||||
if M.sudo_exec(cmd) then
|
|
||||||
-- refreshes the buffer and prints the "written" message
|
|
||||||
vim.cmd.checktime()
|
|
||||||
-- exit command mode
|
|
||||||
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes(
|
|
||||||
"<Esc>", true, false, true), "n", true)
|
|
||||||
end
|
|
||||||
vim.fn.delete(tmpfile)
|
|
||||||
end
|
|
||||||
|
|
||||||
return M
|
|
@@ -1,30 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "janishutz-snippets",
|
|
||||||
"engines": {
|
|
||||||
"vscode": "^1.11.0"
|
|
||||||
},
|
|
||||||
"contributes": {
|
|
||||||
"snippets": [
|
|
||||||
{
|
|
||||||
"language": "all",
|
|
||||||
"path": "./snippets/docSetup.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"language": "tex",
|
|
||||||
"path": "./snippets/tex.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"language": "javascript",
|
|
||||||
"path": "./snippets/javascript.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"language": "typescript",
|
|
||||||
"path": "./snippets/typescript.json"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"language": "vue",
|
|
||||||
"path": "./snippets/vue.json"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"docTitle": {
|
|
||||||
"prefix": "prepareDoc",
|
|
||||||
"body": "$BLOCK_COMMENT_START\n*\t\t\t\t$WORKSPACE_NAME - $TM_FILENAME\n*\n*\tCreated by Janis Hutz $CURRENT_MONTH/$CURRENT_DATE/$CURRENT_YEAR, Licensed under ${1|the GPL V3,the MIT,a proprietary,the BSD,the LGPL V3,the Apache|} License\n*\t\t\thttps://janishutz.com, development@janishutz.com\n*\n*\n$BLOCK_COMMENT_END"
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,45 +0,0 @@
|
|||||||
{
|
|
||||||
"impress": {
|
|
||||||
"prefix": "impress",
|
|
||||||
"body": [
|
|
||||||
"<!DOCTYPE html>",
|
|
||||||
"<html>",
|
|
||||||
"\t<head>\n\t\t<title>$1</title>\n\t\t<link rel=\"stylesheet\" href=\"style.css\">\n\t</head>",
|
|
||||||
"\t<body class=\"impress-not-supported\">",
|
|
||||||
"\t\t<div class=\"fallback-message\">\n\t\t\t<p>Your browser <b>doesn't support the features required</b> by impress.js, so you are presented with a simplified version of this presentation.</p>\n\t\t\t<p>For the best experience please use the latest <b>Chrome</b>, <b>Safari</b> or <b>Firefox</b> browser.</p>\n\t\t</div>",
|
|
||||||
"\t\t<div id=\"impress\" data-width=\"1920\" data-height=\"1080\">",
|
|
||||||
"\t\t\t<div id=\"title\" class=\"step\">\n\t\t\t\t<div class=\"content\">",
|
|
||||||
"\t\t\t\t\t<h1>$2</h1>\n\t\t\t\t</div>",
|
|
||||||
"\t\t\t</div>\n\t\t</div>",
|
|
||||||
"\n\t\t<script src=\"https://cdn.jsdelivr.net/gh/impress/impress.js@2.0.0/js/impress.js\">\n\t\t</script><script>impress().init()</script>\n\t</body>",
|
|
||||||
"</html>"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"impress-step": {
|
|
||||||
"prefix": "impressStep",
|
|
||||||
"body": [
|
|
||||||
"\n<div id=\"$1\" class=\"step\">",
|
|
||||||
"\t<div class=\"content\">",
|
|
||||||
"\t\t<h2>$2</h2>\n\t</div>",
|
|
||||||
"</div>\n"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"html-basic": {
|
|
||||||
"prefix": "basic",
|
|
||||||
"body": [
|
|
||||||
"<!DOCTYPE html>",
|
|
||||||
"<html>",
|
|
||||||
"\t<head>\n\t\t<title>$1</title>\n\t\t<link rel=\"stylesheet\" href=\"/css/style.css\">\n\t\t<meta charset=\"utf-8\">\n\t\t<meta name=\"description\" content=\"$2\">\n\t</head>",
|
|
||||||
"\t<body>\n\t\t<h1>$3</h1>",
|
|
||||||
"\t</body>\n</html>"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"impress-notes": {
|
|
||||||
"prefix": "impressNotes",
|
|
||||||
"body": "<div class=\"notes\">\n\t$1\n</div>"
|
|
||||||
},
|
|
||||||
"impress-substep": {
|
|
||||||
"prefix": "impressSubstep",
|
|
||||||
"body": "<div class=\"substep\">\n\t$1\n</div>"
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,93 +0,0 @@
|
|||||||
{
|
|
||||||
"JS-Class": {
|
|
||||||
"prefix": "jsSetupClass",
|
|
||||||
"body": "class $1 { \n\tconstructor () {} \n\n \t$2 () {\n\t$3\n\t}\n}",
|
|
||||||
"description": "Setup the basic structure of a class in JS"
|
|
||||||
},
|
|
||||||
"ExpressJS": {
|
|
||||||
"prefix": "jsExpressSetup",
|
|
||||||
"body": [
|
|
||||||
"const express = require( 'express' );",
|
|
||||||
"let app = express();",
|
|
||||||
"const path = require( 'path' );",
|
|
||||||
"const expressSession = require( 'express-session' );",
|
|
||||||
"const fs = require( 'fs' );",
|
|
||||||
"const bodyParser = require( 'body-parser' );",
|
|
||||||
"const cookieParser = require( 'cookie-parser' )",
|
|
||||||
"const favicon = require( 'serve-favicon' );",
|
|
||||||
"\napp.use( expressSession ( {\n\tsecret: $1,\n\tresave: true,\n\tsaveUninitialized: true\n} ) );",
|
|
||||||
"app.use( bodyParser.urlencoded( { extended: false } ) );",
|
|
||||||
"app.use( bodyParser.json() );",
|
|
||||||
"app.use( cookieParser() );",
|
|
||||||
"app.use( favicon( path.join( __dirname + '$2' ) ) );\n",
|
|
||||||
"app.use( ( request, response, next ) => {\n\tresponse.sendFile( path.join( __dirname + '$3' ) ) \n} );",
|
|
||||||
"\n\napp.get( '/', ( request, response ) => {\n$4\n} );",
|
|
||||||
"\n\nconst PORT = process.env.PORT || 8080;",
|
|
||||||
"http.createServer( app ).listen( PORT );"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"ExpressJS-Route": {
|
|
||||||
"prefix": "jsEjsRoute",
|
|
||||||
"body": "\n\napp.get( '$1', ( request, response ) => {\n$4\n} );"
|
|
||||||
},
|
|
||||||
"JSAsync": {
|
|
||||||
"prefix": "jsAsync",
|
|
||||||
"body": "(async () => {\n$1\n} ) ();"
|
|
||||||
},
|
|
||||||
"JSpromiseReturnFunc": {
|
|
||||||
"prefix": "jsPromise",
|
|
||||||
"body": "function $1 () {\n\treturn new Promise( ( resolve, reject ) => {\n\t$2\n\t} );\n}"
|
|
||||||
},
|
|
||||||
"fetch from other url": {
|
|
||||||
"prefix": "remoteURL",
|
|
||||||
"body": [
|
|
||||||
"localStorage.getItem( 'url' ) + '/$1'"
|
|
||||||
],
|
|
||||||
"description": "remote URL fetching (get from base address from local storage)"
|
|
||||||
},
|
|
||||||
"fetch post": {
|
|
||||||
"prefix": "fetchPost",
|
|
||||||
"body": [
|
|
||||||
"const fetchOptions = {",
|
|
||||||
"\tmethod: 'post',",
|
|
||||||
"\tbody: JSON.stringify( $1 ),",
|
|
||||||
"\tcredentials: 'include',",
|
|
||||||
"\theaders: {",
|
|
||||||
"\t\t'Content-Type': 'application/json',",
|
|
||||||
"\t\t'charset': 'utf-8'",
|
|
||||||
"\t}",
|
|
||||||
"};",
|
|
||||||
"fetch( $2, fetchOptions ).then( res => {",
|
|
||||||
"\tif ( res.status === 200 ) {",
|
|
||||||
"\t\tres.json().then( json => {",
|
|
||||||
"\t\t\t$3",
|
|
||||||
"\t\t} );",
|
|
||||||
"\t}",
|
|
||||||
"} );",
|
|
||||||
"$4"
|
|
||||||
],
|
|
||||||
"description": "POST request using fetch"
|
|
||||||
},
|
|
||||||
"fetch get": {
|
|
||||||
"prefix": "fetchGet",
|
|
||||||
"body": [
|
|
||||||
"fetch( $2, { credentials: 'include' } ).then( res => {",
|
|
||||||
"\tif ( res.status === 200 ) {",
|
|
||||||
"\t\tres.json().then( json => {",
|
|
||||||
"\t\t\t$3",
|
|
||||||
"\t\t} );",
|
|
||||||
"\t}",
|
|
||||||
"} );",
|
|
||||||
"$4"
|
|
||||||
],
|
|
||||||
"description": "POST request using fetch"
|
|
||||||
},
|
|
||||||
"promise": {
|
|
||||||
"prefix": "promise",
|
|
||||||
"body": [
|
|
||||||
"return new Promise( ( resolve, reject ) => {",
|
|
||||||
"\t",
|
|
||||||
"} );"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,420 +0,0 @@
|
|||||||
{
|
|
||||||
"prepare LaTeX Document": {
|
|
||||||
"prefix": "latex-prepare",
|
|
||||||
"body": [
|
|
||||||
"\\documentclass{article}\n",
|
|
||||||
"\\newcommand{\\dir}{~/projects/latex} % IMPORTANT: No trailing slashes!",
|
|
||||||
"\\input{\\dir/include.tex}",
|
|
||||||
"\\load{recommended}\n",
|
|
||||||
"\\setup{$1}\n",
|
|
||||||
"\\begin{document}",
|
|
||||||
"\\startDocument",
|
|
||||||
"\\usetcolorboxes",
|
|
||||||
"$2\n\n",
|
|
||||||
"\\end{document}"
|
|
||||||
],
|
|
||||||
"description": "Prepares a full LaTeX Document for use and compiling"
|
|
||||||
},
|
|
||||||
"Fancy table": {
|
|
||||||
"prefix": "table",
|
|
||||||
"body": [
|
|
||||||
"\\begin{tables}{$1}{$2}\n",
|
|
||||||
"\t$3\\\\",
|
|
||||||
"\\end{tables}"
|
|
||||||
],
|
|
||||||
"description": "Insert a table (without environment)"
|
|
||||||
},
|
|
||||||
"Formula": {
|
|
||||||
"prefix": "formula",
|
|
||||||
"body": [
|
|
||||||
"\\begin{formula}[]{$1}",
|
|
||||||
"\t$2",
|
|
||||||
"\\end{formula}"
|
|
||||||
],
|
|
||||||
"description": "Inserts a tcolorbox to provide a formula (red)"
|
|
||||||
},
|
|
||||||
"Definition": {
|
|
||||||
"prefix": "definition",
|
|
||||||
"body": [
|
|
||||||
"\\begin{definition}[]{$1}",
|
|
||||||
"\t$2",
|
|
||||||
"\\end{definition}"
|
|
||||||
],
|
|
||||||
"description": "Inserts a tcolorbox to provide a definition (blue)"
|
|
||||||
},
|
|
||||||
"Recall": {
|
|
||||||
"prefix": "recall",
|
|
||||||
"body": [
|
|
||||||
"\\begin{recall}[]{$1}",
|
|
||||||
"\t$2",
|
|
||||||
"\\end{recall}"
|
|
||||||
],
|
|
||||||
"description": "Inserts a tcolorbox to provide a recall / revision of previous knowledge (yellow)"
|
|
||||||
},
|
|
||||||
"Important Remarks": {
|
|
||||||
"prefix": "remarks",
|
|
||||||
"body": [
|
|
||||||
"\\begin{remarks}[]{$1}",
|
|
||||||
"\t$2",
|
|
||||||
"\\end{remarks}"
|
|
||||||
],
|
|
||||||
"description": "Inserts a tcolorbox to provide remarks (green)"
|
|
||||||
},
|
|
||||||
"Guides": {
|
|
||||||
"prefix": "guides",
|
|
||||||
"body": [
|
|
||||||
"\\begin{guides}[]{$1}{${2:Usage}}",
|
|
||||||
"\t$2",
|
|
||||||
"\\end{guides}"
|
|
||||||
],
|
|
||||||
"description": "Inserts a tcolorbox to provide guides / instructions on how to use (red)"
|
|
||||||
},
|
|
||||||
"Properties": {
|
|
||||||
"prefix": "properties",
|
|
||||||
"body": [
|
|
||||||
"\\begin{properties}[]{$1}",
|
|
||||||
"\t$2",
|
|
||||||
"\\end{properties}"
|
|
||||||
],
|
|
||||||
"description": "Inserts a tcolorbox to inform about properties"
|
|
||||||
},
|
|
||||||
"Restrictions": {
|
|
||||||
"prefix": "restrictions",
|
|
||||||
"body": [
|
|
||||||
"\\begin{restrictions}[]{$1}",
|
|
||||||
"\t$2",
|
|
||||||
"\\end{restrictions}"
|
|
||||||
],
|
|
||||||
"description": "Inserts a tcolorbox to inform about restrictions"
|
|
||||||
},
|
|
||||||
"Limitations": {
|
|
||||||
"prefix": "limitations",
|
|
||||||
"body": [
|
|
||||||
"\\begin{limitations}[]{$1}",
|
|
||||||
"\t$2",
|
|
||||||
"\\end{limitations}"
|
|
||||||
],
|
|
||||||
"description": "Inserts a tcolorbox to inform about limitations"
|
|
||||||
},
|
|
||||||
"Theorem": {
|
|
||||||
"prefix": "theorem",
|
|
||||||
"body": [
|
|
||||||
"\\begin{theorem}[]{$1}",
|
|
||||||
"\t$2",
|
|
||||||
"\\end{theorem}"
|
|
||||||
],
|
|
||||||
"description": "Inserts a tcolorbox to inform about theorems"
|
|
||||||
},
|
|
||||||
"Lemma": {
|
|
||||||
"prefix": "lemma",
|
|
||||||
"body": [
|
|
||||||
"\\begin{lemma}[]{$1}",
|
|
||||||
"\t$2",
|
|
||||||
"\\end{lemma}"
|
|
||||||
],
|
|
||||||
"description": "Inserts a tcolorbox to inform about lemmas"
|
|
||||||
},
|
|
||||||
"Corollary": {
|
|
||||||
"prefix": "corollary",
|
|
||||||
"body": [
|
|
||||||
"\\begin{corollary}[]{$1}",
|
|
||||||
"\t$2",
|
|
||||||
"\\end{corollary}"
|
|
||||||
],
|
|
||||||
"description": "Inserts a tcolorbox to inform about corollaries"
|
|
||||||
},
|
|
||||||
"Proposition": {
|
|
||||||
"prefix": "proposition",
|
|
||||||
"body": [
|
|
||||||
"\\begin{proposition}[]{$1}",
|
|
||||||
"\t$2",
|
|
||||||
"\\end{proposition}"
|
|
||||||
],
|
|
||||||
"description": "Inserts a tcolorbox to inform about propositions"
|
|
||||||
},
|
|
||||||
"Fact": {
|
|
||||||
"prefix": "fact",
|
|
||||||
"body": [
|
|
||||||
"\\begin{fact}[]{$1}",
|
|
||||||
"\t$2",
|
|
||||||
"\\end{fact}"
|
|
||||||
],
|
|
||||||
"description": "Inserts a tcolorbox to inform about facts"
|
|
||||||
},
|
|
||||||
"Terms": {
|
|
||||||
"prefix": "terms",
|
|
||||||
"body": [
|
|
||||||
"\\begin{terms}[]{$1}",
|
|
||||||
"\t$2",
|
|
||||||
"\\end{terms}"
|
|
||||||
],
|
|
||||||
"description": "Inserts a tcolorbox to inform about terms"
|
|
||||||
},
|
|
||||||
"Proof": {
|
|
||||||
"prefix": "proof",
|
|
||||||
"body": [
|
|
||||||
"\\begin{proof}[]{$1}",
|
|
||||||
"\t$2",
|
|
||||||
"\\end{proof}"
|
|
||||||
],
|
|
||||||
"description": "Inserts a tcolorbox to show a proof"
|
|
||||||
},
|
|
||||||
"Axiom": {
|
|
||||||
"prefix": "axiom",
|
|
||||||
"body": [
|
|
||||||
"\\begin{axiom}[]{$1}",
|
|
||||||
"\t$2",
|
|
||||||
"\\end{axiom}"
|
|
||||||
],
|
|
||||||
"description": "Inserts a tcolorbox to show an axiom"
|
|
||||||
},
|
|
||||||
"Notation": {
|
|
||||||
"prefix": "notation",
|
|
||||||
"body": [
|
|
||||||
"\\begin{notation}[]{$1}",
|
|
||||||
"\t$2",
|
|
||||||
"\\end{notation}"
|
|
||||||
],
|
|
||||||
"description": "Inserts a tcolorbox to show notation"
|
|
||||||
},
|
|
||||||
"Example": {
|
|
||||||
"prefix": "example",
|
|
||||||
"body": [
|
|
||||||
"\\begin{example}[]{$1}",
|
|
||||||
"\t$2",
|
|
||||||
"\\end{example}"
|
|
||||||
],
|
|
||||||
"description": "Inserts a tcolorbox to show example"
|
|
||||||
},
|
|
||||||
"Task": {
|
|
||||||
"prefix": "task",
|
|
||||||
"body": [
|
|
||||||
"\\begin{task}[]{$1}",
|
|
||||||
"\t$2",
|
|
||||||
"\\end{task}"
|
|
||||||
],
|
|
||||||
"description": "Inserts a tcolorbox to show example"
|
|
||||||
},
|
|
||||||
"Usage": {
|
|
||||||
"prefix": "usage",
|
|
||||||
"body": [
|
|
||||||
"\\begin{usage}[]{$1}",
|
|
||||||
"\t$2",
|
|
||||||
"\\end{usage}"
|
|
||||||
],
|
|
||||||
"description": "Inserts a tcolorbox to inform about usage"
|
|
||||||
},
|
|
||||||
"Conjugation": {
|
|
||||||
"prefix": "conjugation",
|
|
||||||
"body": [
|
|
||||||
"\\begin{conjugation}[]{$1}",
|
|
||||||
"\t$2",
|
|
||||||
"\\end{conjugation}"
|
|
||||||
],
|
|
||||||
"description": "Inserts a tcolorbox to inform about conjugation"
|
|
||||||
},
|
|
||||||
"Forms": {
|
|
||||||
"prefix": "forms",
|
|
||||||
"body": [
|
|
||||||
"\\begin{forms}[]{$1}",
|
|
||||||
"\t$2",
|
|
||||||
"\\end{forms}"
|
|
||||||
],
|
|
||||||
"description": "Inserts a tcolorbox to inform about forms of e.g. grammatical structures"
|
|
||||||
},
|
|
||||||
"General-Tcolorbox": {
|
|
||||||
"prefix": "general-tcb",
|
|
||||||
"body": [
|
|
||||||
"\\begin{general}[]{${1:title}}{${2:second title}}{${3|red,green,blue,cyan,magenta,yellow,black,gray,white,darkgray,lightgray,brown,lime,olive,orange,pink,purple,teal,violet|}}",
|
|
||||||
"\t$4",
|
|
||||||
"\\end{general}"
|
|
||||||
],
|
|
||||||
"description": "Inserts a tcolorbox for general purposes. First bracket is title, second one is second title, third one colour"
|
|
||||||
},
|
|
||||||
"Derivative": {
|
|
||||||
"prefix": "derivative",
|
|
||||||
"body": [
|
|
||||||
"\\frac{\\mbox{d}}{\\mbox{d}x}$1"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Example (inline)": {
|
|
||||||
"prefix": "example-inline",
|
|
||||||
"body": [
|
|
||||||
"\\inlineex"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Example (short)": {
|
|
||||||
"prefix": "example-short",
|
|
||||||
"body": [
|
|
||||||
"\\shortex"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Definition (inline)": {
|
|
||||||
"prefix": "definition-inline",
|
|
||||||
"body": [
|
|
||||||
"\\inlinedef"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Definition (short)": {
|
|
||||||
"prefix": "definition-short",
|
|
||||||
"body": [
|
|
||||||
"\\shortdef"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Theorem (inline)": {
|
|
||||||
"prefix": "theorem-inline",
|
|
||||||
"body": [
|
|
||||||
"\\inlinetheorem"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Theorem (short)": {
|
|
||||||
"prefix": "theorem-short",
|
|
||||||
"body": [
|
|
||||||
"\\shorttheorem"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Lemma (inline)": {
|
|
||||||
"prefix": "lemma-inline",
|
|
||||||
"body": [
|
|
||||||
"\\inlinelemma"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Lemma (short)": {
|
|
||||||
"prefix": "lemma-short",
|
|
||||||
"body": [
|
|
||||||
"\\shortlemma"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Corollary (inline)": {
|
|
||||||
"prefix": "corollary-inline",
|
|
||||||
"body": [
|
|
||||||
"\\inlinecorollary"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Corollary (short)": {
|
|
||||||
"prefix": "corollary-short",
|
|
||||||
"body": [
|
|
||||||
"\\shortcorollary"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Proposition (inline)": {
|
|
||||||
"prefix": "proposition-inline",
|
|
||||||
"body": [
|
|
||||||
"\\inlineproposition"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Proposition (short)": {
|
|
||||||
"prefix": "proposition-short",
|
|
||||||
"body": [
|
|
||||||
"\\shortproposition"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Fact (inline)": {
|
|
||||||
"prefix": "fact-inline",
|
|
||||||
"body": [
|
|
||||||
"\\inlinefact"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Fact (short)": {
|
|
||||||
"prefix": "fact-short",
|
|
||||||
"body": [
|
|
||||||
"\\shortfact"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Axiom (inline)": {
|
|
||||||
"prefix": "axiom-inline",
|
|
||||||
"body": [
|
|
||||||
"\\inlineaxiom"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Axiom (short)": {
|
|
||||||
"prefix": "axiom-short",
|
|
||||||
"body": [
|
|
||||||
"\\shortaxiom"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Proof (inline)": {
|
|
||||||
"prefix": "proof-inline",
|
|
||||||
"body": [
|
|
||||||
"\\inlineproof"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Proof (short)": {
|
|
||||||
"prefix": "proof-short",
|
|
||||||
"body": [
|
|
||||||
"\\shortproof"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"bold": {
|
|
||||||
"prefix": "#bold",
|
|
||||||
"body": [
|
|
||||||
"\\textbf{$1}"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"italic": {
|
|
||||||
"prefix": "#i",
|
|
||||||
"body": [
|
|
||||||
"\\textit{$1}"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"bolditalic": {
|
|
||||||
"prefix": "#bi",
|
|
||||||
"body": [
|
|
||||||
"\\textbf{\\textit{$1}}"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"underlinie": {
|
|
||||||
"prefix": "#u",
|
|
||||||
"body": [
|
|
||||||
"\\underbar{$1}"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"algebra": {
|
|
||||||
"prefix": "algebra",
|
|
||||||
"body": [
|
|
||||||
"\\langle $1 \\rangle"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"fill-width": {
|
|
||||||
"prefix": "#fill",
|
|
||||||
"body": [
|
|
||||||
"\\hspace{\\fill}$1"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Latex-Colour": {
|
|
||||||
"prefix": "colour",
|
|
||||||
"body": [
|
|
||||||
"${1|red,green,blue,cyan,magenta,yellow,black,gray,white,darkgray,lightgray,brown,lime,olive,orange,pink,purple,teal,violet|}"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Latex-Text-Colour": {
|
|
||||||
"prefix": "colour-text",
|
|
||||||
"body": [
|
|
||||||
"\\color{${1|red,green,blue,cyan,magenta,yellow,black,gray,white,darkgray,lightgray,brown,lime,olive,orange,pink,purple,teal,violet|}}"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Set Language": {
|
|
||||||
"prefix": "setLang",
|
|
||||||
"body": [
|
|
||||||
"\\setLang{$1}"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Letter": {
|
|
||||||
"prefix": "latex-letter",
|
|
||||||
"body": [
|
|
||||||
"\\documentclass[12pt,a4paper]{scrlttr2}\n",
|
|
||||||
"\\newcommand{\\dir}{~/projects/latex} % IMPORTANT: No trailing slashes!",
|
|
||||||
"\\input{\\dir/include.tex}",
|
|
||||||
"\\load{letter}\n",
|
|
||||||
"% Subject",
|
|
||||||
"\\setkomavar{subject}{$1}",
|
|
||||||
"\\begin{document}\\raggedright",
|
|
||||||
"\t\\begin{letter}{Company \\\\\\ Name \\\\\\ Address \\\\\\ CH-Place}",
|
|
||||||
"\t\t\\opening{Intro}\n",
|
|
||||||
"\t\t$2\n",
|
|
||||||
"\t\t\\closing{Kind regards}",
|
|
||||||
"\t\\end{letter}",
|
|
||||||
"\\end{document}"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,93 +0,0 @@
|
|||||||
{
|
|
||||||
"JS-Class": {
|
|
||||||
"prefix": "jsSetupClass",
|
|
||||||
"body": "class $1 { \n\tconstructor () {} \n\n \t$2 () {\n\t$3\n\t}\n}",
|
|
||||||
"description": "Setup the basic structure of a class in JS"
|
|
||||||
},
|
|
||||||
"ExpressJS": {
|
|
||||||
"prefix": "jsExpressSetup",
|
|
||||||
"body": [
|
|
||||||
"const express = require( 'express' );",
|
|
||||||
"let app = express();",
|
|
||||||
"const path = require( 'path' );",
|
|
||||||
"const expressSession = require( 'express-session' );",
|
|
||||||
"const fs = require( 'fs' );",
|
|
||||||
"const bodyParser = require( 'body-parser' );",
|
|
||||||
"const cookieParser = require( 'cookie-parser' )",
|
|
||||||
"const favicon = require( 'serve-favicon' );",
|
|
||||||
"\napp.use( expressSession ( {\n\tsecret: $1,\n\tresave: true,\n\tsaveUninitialized: true\n} ) );",
|
|
||||||
"app.use( bodyParser.urlencoded( { extended: false } ) );",
|
|
||||||
"app.use( bodyParser.json() );",
|
|
||||||
"app.use( cookieParser() );",
|
|
||||||
"app.use( favicon( path.join( __dirname + '$2' ) ) );\n",
|
|
||||||
"app.use( ( request, response, next ) => {\n\tresponse.sendFile( path.join( __dirname + '$3' ) ) \n} );",
|
|
||||||
"\n\napp.get( '/', ( request, response ) => {\n$4\n} );",
|
|
||||||
"\n\nconst PORT = process.env.PORT || 8080;",
|
|
||||||
"http.createServer( app ).listen( PORT );"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"ExpressJS-Route": {
|
|
||||||
"prefix": "jsEjsRoute",
|
|
||||||
"body": "\n\napp.get( '$1', ( request: express.Request, response: express.Response ) => {\n$4\n} );"
|
|
||||||
},
|
|
||||||
"JSAsync": {
|
|
||||||
"prefix": "jsAsync",
|
|
||||||
"body": "(async () => {\n$1\n} ) ();"
|
|
||||||
},
|
|
||||||
"JSpromiseReturnFunc": {
|
|
||||||
"prefix": "jsPromise",
|
|
||||||
"body": "function $1 () {\n\treturn new Promise( ( resolve, reject ) => {\n\t$2\n\t} );\n}"
|
|
||||||
},
|
|
||||||
"fetch from other url": {
|
|
||||||
"prefix": "remoteURL",
|
|
||||||
"body": [
|
|
||||||
"localStorage.getItem( 'url' ) + '/$1'",
|
|
||||||
],
|
|
||||||
"description": "remote URL fetching (get from base address from local storage)"
|
|
||||||
},
|
|
||||||
"fetch post": {
|
|
||||||
"prefix": "fetchPost",
|
|
||||||
"body": [
|
|
||||||
"const fetchOptions = {",
|
|
||||||
"\tmethod: 'post',",
|
|
||||||
"\tbody: JSON.stringify( $1 ),",
|
|
||||||
"\tcredentials: 'include',",
|
|
||||||
"\theaders: {",
|
|
||||||
"\t\t'Content-Type': 'application/json',",
|
|
||||||
"\t\t'charset': 'utf-8'",
|
|
||||||
"\t}",
|
|
||||||
"};",
|
|
||||||
"fetch( $2, fetchOptions ).then( res => {",
|
|
||||||
"\tif ( res.status === 200 ) {",
|
|
||||||
"\t\tres.json().then( json => {",
|
|
||||||
"\t\t\t$3",
|
|
||||||
"\t\t} );",
|
|
||||||
"\t}",
|
|
||||||
"} );",
|
|
||||||
"$4"
|
|
||||||
],
|
|
||||||
"description": "POST request using fetch"
|
|
||||||
},
|
|
||||||
"fetch get": {
|
|
||||||
"prefix": "fetchGet",
|
|
||||||
"body": [
|
|
||||||
"fetch( $2, { credentials: 'include' } ).then( res => {",
|
|
||||||
"\tif ( res.status === 200 ) {",
|
|
||||||
"\t\tres.json().then( json => {",
|
|
||||||
"\t\t\t$3",
|
|
||||||
"\t\t} );",
|
|
||||||
"\t}",
|
|
||||||
"} );",
|
|
||||||
"$4"
|
|
||||||
],
|
|
||||||
"description": "POST request using fetch"
|
|
||||||
},
|
|
||||||
"promise": {
|
|
||||||
"prefix": "promise",
|
|
||||||
"body": [
|
|
||||||
"return new Promise( ( resolve, reject ) => {",
|
|
||||||
"\t",
|
|
||||||
"} );"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
"script:setup": {
|
|
||||||
"prefix": "script:setup",
|
|
||||||
"body": [
|
|
||||||
"<script setup lang=\"ts\">",
|
|
||||||
"\t$1",
|
|
||||||
"</script>"
|
|
||||||
],
|
|
||||||
"description": "Setup the basic structure of a class in JS"
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,4 +0,0 @@
|
|||||||
NeoVim
|
|
||||||
config
|
|
||||||
Supremum
|
|
||||||
Infimum
|
|
Binary file not shown.
@@ -1,2 +0,0 @@
|
|||||||
cp -r ~/.config/nvim/* ./nvim
|
|
||||||
rm ./nvim/lazy-lock.json
|
|
1
nvim-get-spell.sh
Executable file
1
nvim-get-spell.sh
Executable file
@@ -0,0 +1 @@
|
|||||||
|
cp ~/.config/nvim/spell/* ./nvim/spell/
|
96
nvim/ftplugin/java.lua
Normal file
96
nvim/ftplugin/java.lua
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
local home = os.getenv("HOME")
|
||||||
|
local jdtls_path = home .. "/.local/share/nvim/mason/packages/jdtls"
|
||||||
|
local workspace_dir = home .. "/.cache/jdtls/" .. vim.fn.fnamemodify(vim.fn.getcwd(), ":p:h:t")
|
||||||
|
local equinox_path = vim.fn.glob(jdtls_path .. "/plugins/org.eclipse.equinox.launcher_*.jar")
|
||||||
|
|
||||||
|
local on_attach = require('lsp-options').on_attach
|
||||||
|
local capabilities = require('lsp-options').capabilities
|
||||||
|
|
||||||
|
local keymap = vim.keymap
|
||||||
|
|
||||||
|
local opts = { silent = true }
|
||||||
|
-- ┌ ┐
|
||||||
|
-- │ Java │
|
||||||
|
-- └ ┘
|
||||||
|
local java_on_attach = function(client, bufnr)
|
||||||
|
on_attach(client, bufnr)
|
||||||
|
|
||||||
|
opts.desc = "Organize Imports"
|
||||||
|
keymap.set("n", "<leader>jo", "<cmd>lua require('jdtls').organize_imports()<CR>", opts)
|
||||||
|
|
||||||
|
opts.desc = "Extract variable"
|
||||||
|
keymap.set("n", "<leader>je", "<cmd>lua require('jdtls').extract_variable()<CR>", opts)
|
||||||
|
|
||||||
|
opts.desc = "Extract constant"
|
||||||
|
keymap.set("n", "<leader>je", "<cmd>lua require('jdtls').extract_constant()<CR>", opts)
|
||||||
|
|
||||||
|
opts.desc = "Test current method"
|
||||||
|
keymap.set("n", "<leader>jtm", "<cmd>lua require('jdtls').test_nearest_method()<CR>", opts)
|
||||||
|
|
||||||
|
opts.desc = "Test current class"
|
||||||
|
keymap.set("n", "<leader>jtc", "<cmd>lua require('jdtls').test_class()<CR>", opts)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
require("jdtls").start_or_attach({
|
||||||
|
cmd = {
|
||||||
|
-- 💀
|
||||||
|
"java", -- or '/path/to/java21_or_newer/bin/java'
|
||||||
|
|
||||||
|
"-Declipse.application=org.eclipse.jdt.ls.core.id1",
|
||||||
|
"-Dosgi.bundles.defaultStartLevel=4",
|
||||||
|
"-Declipse.product=org.eclipse.jdt.ls.core.product",
|
||||||
|
"-Dlog.protocol=true",
|
||||||
|
"-Dlog.level=ALL",
|
||||||
|
"-Xmx1g",
|
||||||
|
"--add-modules=ALL-SYSTEM",
|
||||||
|
"--add-opens",
|
||||||
|
"java.base/java.util=ALL-UNNAMED",
|
||||||
|
"--add-opens",
|
||||||
|
"java.base/java.lang=ALL-UNNAMED",
|
||||||
|
|
||||||
|
-- 💀
|
||||||
|
"-jar",
|
||||||
|
equinox_path,
|
||||||
|
|
||||||
|
-- 💀
|
||||||
|
"-configuration",
|
||||||
|
jdtls_path .. "/config_linux",
|
||||||
|
|
||||||
|
-- 💀
|
||||||
|
-- See `data directory configuration` section in the README
|
||||||
|
"-data",
|
||||||
|
workspace_dir,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- 💀
|
||||||
|
-- This is the default if not provided, you can remove it. Or adjust as needed.
|
||||||
|
-- One dedicated LSP server & client will be started per unique root_dir
|
||||||
|
--
|
||||||
|
-- vim.fs.root requires Neovim 0.10.
|
||||||
|
-- If you're using an earlier version, use: require('jdtls.setup').find_root({'.git', 'mvnw', 'gradlew'}),
|
||||||
|
root_dir = vim.fs.root(0, { ".git", "mvnw", "gradlew", "build.xml" }),
|
||||||
|
|
||||||
|
-- Here you can configure eclipse.jdt.ls specific settings
|
||||||
|
-- See https://github.com/eclipse/eclipse.jdt.ls/wiki/Running-the-JAVA-LS-server-from-the-command-line#initialize-request
|
||||||
|
-- for a list of options
|
||||||
|
settings = {
|
||||||
|
java = {},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Language server `initializationOptions`
|
||||||
|
-- You need to extend the `bundles` with paths to jar files
|
||||||
|
-- if you want to use additional eclipse.jdt.ls plugins.
|
||||||
|
--
|
||||||
|
-- See https://github.com/mfussenegger/nvim-jdtls#java-debug-installation
|
||||||
|
--
|
||||||
|
-- If you don't plan on using the debugger or other eclipse.jdt.ls plugins you can remove this
|
||||||
|
init_options = {
|
||||||
|
bundles = vim.split(
|
||||||
|
vim.fn.glob("$HOME/.local/share/nvim/mason/packages/java-*/extension/server/*.jar", true),
|
||||||
|
"\n"
|
||||||
|
),
|
||||||
|
},
|
||||||
|
on_attach = java_on_attach,
|
||||||
|
capabilities = capabilities,
|
||||||
|
})
|
@@ -12,71 +12,66 @@ end
|
|||||||
|
|
||||||
-- Handy VSCode Shortcuts
|
-- Handy VSCode Shortcuts
|
||||||
-- Move lines up and down
|
-- Move lines up and down
|
||||||
vim.api.nvim_set_keymap('n', '<A-Up>', ':m .-2<CR>==', { noremap = true, silent = true })
|
vim.api.nvim_set_keymap("n", "<A-Up>", ":m .-2<CR>==", { noremap = true, silent = true })
|
||||||
vim.api.nvim_set_keymap('n', '<A-Down>', ':m .+1<CR>==', { noremap = true, silent = true })
|
vim.api.nvim_set_keymap("n", "<A-Down>", ":m .+1<CR>==", { noremap = true, silent = true })
|
||||||
vim.api.nvim_set_keymap('n', '<A-k>', '<Esc>:m .-2<CR>', { noremap = true, silent = true })
|
vim.api.nvim_set_keymap("n", "<A-k>", "<Esc>:m .-2<CR>", { noremap = true, silent = true })
|
||||||
vim.api.nvim_set_keymap('n', '<A-j>', '<Esc>:m .+1<CR>', { noremap = true, silent = true })
|
vim.api.nvim_set_keymap("n", "<A-j>", "<Esc>:m .+1<CR>", { noremap = true, silent = true })
|
||||||
|
|
||||||
-- Move lines in insert mode
|
-- Move lines in insert mode
|
||||||
vim.api.nvim_set_keymap('i', '<A-Up>', '<Esc>:m .-2<CR>i', { noremap = true, silent = true })
|
vim.api.nvim_set_keymap("i", "<A-Up>", "<Esc>:m .-2<CR>i", { noremap = true, silent = true })
|
||||||
vim.api.nvim_set_keymap('i', '<A-Down>', '<Esc>:m .+1<CR>i', { noremap = true, silent = true })
|
vim.api.nvim_set_keymap("i", "<A-Down>", "<Esc>:m .+1<CR>i", { noremap = true, silent = true })
|
||||||
vim.api.nvim_set_keymap('i', '<A-k>', '<Esc>:m .-2<CR>i', { noremap = true, silent = true })
|
vim.api.nvim_set_keymap("i", "<A-k>", "<Esc>:m .-2<CR>i", { noremap = true, silent = true })
|
||||||
vim.api.nvim_set_keymap('i', '<A-j>', '<Esc>:m .+1<CR>i', { noremap = true, silent = true })
|
vim.api.nvim_set_keymap("i", "<A-j>", "<Esc>:m .+1<CR>i", { noremap = true, silent = true })
|
||||||
|
|
||||||
-- Copy lines up and down in normal mode
|
-- Copy lines up and down in normal mode
|
||||||
vim.api.nvim_set_keymap('n', '<C-A-S-Up>', ':t .-1<CR>', { noremap = true, silent = true })
|
vim.api.nvim_set_keymap("n", "<C-A-S-Up>", ":t .-1<CR>", { noremap = true, silent = true })
|
||||||
vim.api.nvim_set_keymap('n', '<C-A-S-Down>', ':t .-1<CR>', { noremap = true, silent = true })
|
vim.api.nvim_set_keymap("n", "<C-A-S-Down>", ":t .-1<CR>", { noremap = true, silent = true })
|
||||||
vim.api.nvim_set_keymap('n', '<C-A-S-k>', ':t .-1<CR>', { noremap = true, silent = true })
|
vim.api.nvim_set_keymap("n", "<C-A-S-k>", ":t .-1<CR>", { noremap = true, silent = true })
|
||||||
vim.api.nvim_set_keymap('n', '<C-A-S-j>', ':t .<CR>', { noremap = true, silent = true })
|
vim.api.nvim_set_keymap("n", "<C-A-S-j>", ":t .<CR>", { noremap = true, silent = true })
|
||||||
|
|
||||||
-- Copy lines up and down in insert mode
|
-- Copy lines up and down in insert mode
|
||||||
vim.api.nvim_set_keymap('i', '<C-A-S-Up>', '<Esc>:t.-1<CR>i', { noremap = true, silent = true })
|
vim.api.nvim_set_keymap("i", "<C-A-S-Up>", "<Esc>:t.-1<CR>i", { noremap = true, silent = true })
|
||||||
vim.api.nvim_set_keymap('i', '<C-A-S-Down>', '<Esc>:t.<CR>i', { noremap = true, silent = true })
|
vim.api.nvim_set_keymap("i", "<C-A-S-Down>", "<Esc>:t.<CR>i", { noremap = true, silent = true })
|
||||||
vim.api.nvim_set_keymap('i', '<C-A-S-k>', '<Esc>:t.-1<CR>i', { noremap = true, silent = true })
|
vim.api.nvim_set_keymap("i", "<C-A-S-k>", "<Esc>:t.-1<CR>i", { noremap = true, silent = true })
|
||||||
vim.api.nvim_set_keymap('i', '<C-A-S-j>', '<Esc>:t.<CR>i', { noremap = true, silent = true })
|
vim.api.nvim_set_keymap("i", "<C-A-S-j>", "<Esc>:t.<CR>i", { noremap = true, silent = true })
|
||||||
|
|
||||||
|
|
||||||
-- Keep selection in visual mode when indenting
|
-- Keep selection in visual mode when indenting
|
||||||
vim.api.nvim_set_keymap('v', '<', '<gv', { noremap = true, silent = true })
|
vim.api.nvim_set_keymap("v", "<", "<gv", { noremap = true, silent = true })
|
||||||
vim.api.nvim_set_keymap('v', '>', '>gv', { noremap = true, silent = true })
|
vim.api.nvim_set_keymap("v", ">", ">gv", { noremap = true, silent = true })
|
||||||
|
|
||||||
|
|
||||||
-- Save shortcut
|
|
||||||
keymap.set("i", "<C-s>", "<Esc>:w<CR>a", opts("Save file (shortcut)"))
|
|
||||||
keymap.set("n", "<C-s>", ":w<CR>", opts("Save file (shortcut)"))
|
|
||||||
|
|
||||||
-- Save and quit (sudo and no sudo)
|
-- Save and quit (sudo and no sudo)
|
||||||
keymap.set("n", "E", ":wq!<CR>", opts("write and quit file"))
|
keymap.set("n", "E", ":wq!<CR>", opts("write and quit file"))
|
||||||
keymap.set("n", "<leader>E", ":lua require('utils').sudo_write()<CR>:q!<CR>", opts("sudo write and quit file"))
|
keymap.set("n", "<leader>E", ":lua require('utils').sudo_write()<CR>:q!<CR>", opts("sudo write and quit file"))
|
||||||
|
|
||||||
-- Quite file
|
-- Quit file
|
||||||
keymap.set("n", "Q", ":q!<CR>", opts("quit file"))
|
keymap.set("n", "Q", ":q!<CR>", opts("quit file"))
|
||||||
|
|
||||||
-- Duplicate line
|
-- Duplicate line
|
||||||
keymap.set("n", "<leader>dd", ":t.<CR>", opts("Duplicate line"))
|
keymap.set("n", "<leader>dd", ":t.<CR>", opts("Duplicate line"))
|
||||||
|
|
||||||
-- Editor focus
|
-- Editor focus
|
||||||
keymap.set("n", "<C-b>", ":wincmd p<CR>", opts("Cycle focus"))
|
|
||||||
|
|
||||||
-- Key Mappings for LaTeX workflow
|
-- LaTeX mappings
|
||||||
keymap.set('n', '<leader>lc', ':VimtexCompile<CR>', opts("Compile latex document")) -- Compile LaTeX file
|
keymap.set("n", "<leader>lc", ":VimtexCompile<CR>", opts("Compile latex document")) -- Compile LaTeX file
|
||||||
keymap.set('n', '<leader>lv', ':VimtexView<CR>', opts("View compiled latex pdf")) -- View compiled PDF
|
keymap.set("n", "<leader>lv", ":VimtexView<CR>", opts("View compiled latex pdf")) -- View compiled PDF
|
||||||
keymap.set('n', '<leader>lq', ':VimtexStop<CR>', opts("Stop Compiling document")) -- Stop compilation
|
keymap.set("n", "<leader>lq", ":VimtexStop<CR>", opts("Stop Compiling document")) -- Stop compilation
|
||||||
|
|
||||||
-- Markdown-Preview
|
-- Markdown-Preview
|
||||||
keymap.set('n', '<leader><leader>m', ':MarkdownPreview<CR>', opts("Preview Markdown document in browser")) -- Stop compilation
|
keymap.set("n", "<leader><leader>m", ":MarkdownPreview<CR>", opts("Preview Markdown document in browser")) -- Stop compilation
|
||||||
|
|
||||||
-- window navigation
|
-- window navigation
|
||||||
keymap.set("n", "<A-h>", "<C-w>h", opts())
|
keymap.set("n", "<A-h>", "<C-w>h", opts())
|
||||||
keymap.set("n", "<A-S-j>", "<C-w>j", opts())
|
keymap.set("n", "<A-S-j>", "<C-w>j", opts())
|
||||||
keymap.set("n", "<A-S-k>", "<C-w>k", opts())
|
keymap.set("n", "<A-S-k>", "<C-w>k", opts())
|
||||||
keymap.set("n", "<A-l>", "<C-w>l", opts())
|
keymap.set("n", "<A-l>", "<C-w>l", opts())
|
||||||
|
keymap.set("n", "<C-k>", "<C-w>w", opts())
|
||||||
|
|
||||||
-- window resize
|
-- window resize
|
||||||
keymap.set("n", "<A-C-h>", ":vertical resize -2<CR>", opts())
|
keymap.set("n", "<A-C-h>", ":vertical resize +2<CR>", opts("Resize horizontally right"))
|
||||||
keymap.set("n", "<A-C-j>", ":resize -2<CR>", opts())
|
keymap.set("n", "<A-C-j>", ":resize -2<CR>", opts("Resize horizontally down"))
|
||||||
keymap.set("n", "<A-C-k>", ":resize +2<CR>", opts())
|
keymap.set("n", "<A-C-k>", ":resize +2<CR>", opts("Resize horizontally up"))
|
||||||
keymap.set("n", "<A-C-l>", ":vertical resize +2<CR>", opts())
|
keymap.set("n", "<A-C-l>", ":vertical resize -2<CR>", opts("Resize Vertically to left"))
|
||||||
|
keymap.set("n", "<leader><leader>e", ":vertical resize 40<CR>", opts("Reset sizing to default"))
|
||||||
|
|
||||||
-- nohlsearch
|
-- nohlsearch
|
||||||
keymap.set("n", "<leader>h", ":nohlsearch<CR>", opts("remove search highlighting"))
|
keymap.set("n", "<leader>h", ":nohlsearch<CR>", opts("remove search highlighting"))
|
||||||
@@ -89,11 +84,18 @@ keymap.set("n", "<leader><leader>r", ":!%:p", opts("run current file with argume
|
|||||||
keymap.set("n", "<leader>m", ":!chmod +x %:p<CR>", opts("make current file executable"))
|
keymap.set("n", "<leader>m", ":!chmod +x %:p<CR>", opts("make current file executable"))
|
||||||
|
|
||||||
-- script setup
|
-- script setup
|
||||||
keymap.set("n", "<leader>#", ":set syntax=sh<CR>:w<CR>:!chmod +x %:p<CR>:LspStart bashls<CR>i#!/bin/sh<CR><CR>", opts("setup sh script"))
|
keymap.set(
|
||||||
keymap.set("n", "<leader><leader>#", ":set syntax=python<CR>:w<CR>:!chmod +x %:p<CR>:LspStart pyright<CR>i#!/usr/bin/env python3<CR><CR>", opts("setup python script"))
|
"n",
|
||||||
|
"<leader>#",
|
||||||
-- CTRL + Backspace
|
":w<CR>:!chmod +x %:p<CR>ggi#!/bin/sh<CR><CR><Esc>:setfiletype bash<CR>",
|
||||||
keymap.set("i", "<C-BackSpace>", "<C-w>", opts())
|
opts("setup sh script")
|
||||||
|
)
|
||||||
|
keymap.set(
|
||||||
|
"n",
|
||||||
|
"<leader><leader>#",
|
||||||
|
":set syntax=python<CR>:w<CR>:!chmod +x %:p<CR>:LspStart pyright<CR>i#!/usr/bin/env python3<CR><CR>",
|
||||||
|
opts("setup python script")
|
||||||
|
)
|
||||||
|
|
||||||
-- select all
|
-- select all
|
||||||
keymap.set("n", "<leader>a", "ggVG", opts("select all"))
|
keymap.set("n", "<leader>a", "ggVG", opts("select all"))
|
||||||
@@ -108,8 +110,12 @@ keymap.set("i", "<C-e>", "<C-Right>", opts("Jump back by word"))
|
|||||||
keymap.set("i", "<C-$>", "<End>", opts("Jump to EOL"))
|
keymap.set("i", "<C-$>", "<End>", opts("Jump to EOL"))
|
||||||
keymap.set("i", "<C-0>", "<Home>", opts("Jump to beginning of line"))
|
keymap.set("i", "<C-0>", "<Home>", opts("Jump to beginning of line"))
|
||||||
|
|
||||||
-- open in neovide
|
-- Spell checking
|
||||||
-- keymap.set("n", "<leader>n", ":!neovide --no-fork %:p<CR>", opts("open in neovide (wip)"))
|
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"))
|
||||||
|
keymap.set("n", "<leader>slu", ":set spelllang=en_us<CR>", opts("Set spell checker lang to en_US"))
|
||||||
|
keymap.set("n", "<leader>sle", ":set spelllang=en_gb<CR>", opts("Set spell checker lang to en_GB"))
|
||||||
|
keymap.set("n", "<leader>slc", ":set spelllang=de_ch<CR>", opts("Set spell checker lang to de_CH"))
|
||||||
|
|
||||||
-- deleting doesn't yank except when used with <leader>
|
-- deleting doesn't yank except when used with <leader>
|
||||||
keymap.set({ "n", "v" }, "d", '"_d', opts())
|
keymap.set({ "n", "v" }, "d", '"_d', opts())
|
||||||
@@ -121,7 +127,7 @@ keymap.set({ "n", "v" }, "C", '"_C', opts())
|
|||||||
keymap.set({ "n", "v" }, "<leader>d", "d", opts("yank and delete"))
|
keymap.set({ "n", "v" }, "<leader>d", "d", opts("yank and delete"))
|
||||||
keymap.set({ "n", "v" }, "<leader>D", "D", opts("YANK and DELETE to end"))
|
keymap.set({ "n", "v" }, "<leader>D", "D", opts("YANK and DELETE to end"))
|
||||||
|
|
||||||
-- <leader> + yank/paste/delete uses system clipboard
|
-- <leader> + yank/paste/delete with system clipboard
|
||||||
keymap.set({ "n", "v" }, "<leader>y", '"+y', opts("yank to system clipboard"))
|
keymap.set({ "n", "v" }, "<leader>y", '"+y', opts("yank to system clipboard"))
|
||||||
keymap.set({ "n", "v" }, "<leader>Y", '"+y$', opts("YANK to system clipboard"))
|
keymap.set({ "n", "v" }, "<leader>Y", '"+y$', opts("YANK to system clipboard"))
|
||||||
keymap.set({ "n", "v" }, "<leader>p", '"+p', opts("paste from system clipboard"))
|
keymap.set({ "n", "v" }, "<leader>p", '"+p', opts("paste from system clipboard"))
|
||||||
@@ -130,3 +136,11 @@ keymap.set({ "n", "v" }, "<leader><leader>d", '"+d', opts("yank to system clipbo
|
|||||||
keymap.set({ "n", "v" }, "<leader><leader>D", '"+D', opts("YANK to system clipboard and DELETE"))
|
keymap.set({ "n", "v" }, "<leader><leader>D", '"+D', opts("YANK to system clipboard and DELETE"))
|
||||||
|
|
||||||
keymap.set("n", "<leader>wk", ":WhichKey<CR>", opts("Toggle WhichKey"))
|
keymap.set("n", "<leader>wk", ":WhichKey<CR>", opts("Toggle WhichKey"))
|
||||||
|
|
||||||
|
-- Toggle relative line numbers
|
||||||
|
keymap.set(
|
||||||
|
"n",
|
||||||
|
"<leader>.",
|
||||||
|
":lua vim.wo.relativenumber = not vim.wo.relativenumber",
|
||||||
|
opts("Toggle relative line numbers")
|
||||||
|
)
|
||||||
|
@@ -1,26 +1,25 @@
|
|||||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||||
if not vim.loop.fs_stat(lazypath) then
|
if not vim.loop.fs_stat(lazypath) then
|
||||||
vim.fn.system({
|
vim.fn.system({
|
||||||
"git",
|
"git",
|
||||||
"clone",
|
"clone",
|
||||||
"--filter=blob:none",
|
"--filter=blob:none",
|
||||||
"https://github.com/folke/lazy.nvim.git",
|
"https://github.com/folke/lazy.nvim.git",
|
||||||
"--branch=stable", -- latest stable release
|
"--branch=stable", -- latest stable release
|
||||||
lazypath,
|
lazypath,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
vim.opt.rtp:prepend(lazypath)
|
vim.opt.rtp:prepend(lazypath)
|
||||||
|
|
||||||
|
|
||||||
require("lazy").setup({
|
require("lazy").setup({
|
||||||
spec = {
|
spec = {
|
||||||
{ import = "plugins.nav" },
|
{ import = "plugins.nav" },
|
||||||
{ import = "plugins.lsp" },
|
{ import = "plugins.lsp" },
|
||||||
{ import = "plugins.style" },
|
{ import = "plugins.style" },
|
||||||
{ import = "plugins.util" },
|
{ import = "plugins.util" },
|
||||||
{ import = "plugins.testing" }
|
{ import = "plugins.testing" },
|
||||||
},
|
},
|
||||||
change_detection = {
|
change_detection = {
|
||||||
notify = false, -- dont notify when plugins are changed
|
notify = false, -- dont notify when plugins are changed
|
||||||
}
|
},
|
||||||
})
|
})
|
||||||
|
68
nvim/lua/lsp-options.lua
Normal file
68
nvim/lua/lsp-options.lua
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
local keymap = vim.keymap
|
||||||
|
|
||||||
|
local opts = { silent = true }
|
||||||
|
|
||||||
|
M.on_attach = function(client, bufnr)
|
||||||
|
opts.buffer = bufnr
|
||||||
|
|
||||||
|
-- set keybinds
|
||||||
|
opts.desc = "Show LSP references"
|
||||||
|
keymap.set("n", "gR", "<cmd>Telescope lsp_references<CR>", opts)
|
||||||
|
|
||||||
|
opts.desc = "Go to declaration"
|
||||||
|
keymap.set("n", "gD", ":lua vim.lsp.buf.declaration", opts)
|
||||||
|
|
||||||
|
opts.desc = "Show LSP definitions"
|
||||||
|
keymap.set("n", "gd", "<cmd>Telescope lsp_definitions<CR>", opts)
|
||||||
|
|
||||||
|
opts.desc = "Show LSP implementations"
|
||||||
|
keymap.set("n", "gi", "<cmd>Telescope lsp_implementations<CR>", opts)
|
||||||
|
|
||||||
|
opts.desc = "Show LSP type definitions"
|
||||||
|
keymap.set("n", "gt", "<cmd>Telescope lsp_type_definitions<CR>", opts)
|
||||||
|
|
||||||
|
opts.desc = "See available code actions"
|
||||||
|
keymap.set({ "n", "v" }, "<leader>ca", vim.lsp.buf.code_action, opts)
|
||||||
|
|
||||||
|
opts.desc = "Format current file"
|
||||||
|
keymap.set("n", "<leader>gf", vim.lsp.buf.format, opts)
|
||||||
|
|
||||||
|
opts.desc = "Smart rename"
|
||||||
|
keymap.set("n", "<leader>n", vim.lsp.buf.rename, opts)
|
||||||
|
|
||||||
|
opts.desc = "Show buffer diagnostics"
|
||||||
|
keymap.set("n", "ga", "<cmd>Telescope diagnostics bufnr=0<CR>", opts)
|
||||||
|
|
||||||
|
opts.desc = "Show line diagnostics"
|
||||||
|
keymap.set("n", "gA", ":lua vim.diagnostic.open_float()<CR>", opts)
|
||||||
|
|
||||||
|
opts.desc = "Go to previous diagnostic"
|
||||||
|
keymap.set("n", "[d", vim.diagnostic.goto_prev, opts)
|
||||||
|
|
||||||
|
opts.desc = "Go to next diagnostic"
|
||||||
|
keymap.set("n", "]d", vim.diagnostic.goto_next, opts)
|
||||||
|
|
||||||
|
opts.desc = "Show documentation for what is under cursor"
|
||||||
|
keymap.set("n", "<leader>k", vim.lsp.buf.hover, opts)
|
||||||
|
|
||||||
|
opts.desc = "Restart LSP"
|
||||||
|
keymap.set("n", "<leader>rs", ":LspRestart<CR>", opts)
|
||||||
|
|
||||||
|
vim.opt.signcolumn = "yes" -- reserve space for diagnostics
|
||||||
|
end
|
||||||
|
|
||||||
|
M.on_attach_no_formatting = function(client, bufnr)
|
||||||
|
M.on_attach(client, bufnr)
|
||||||
|
|
||||||
|
client.server_capabilities.documentFormattingProvider = false
|
||||||
|
client.server_capabilities.documentRangeFormattingProvider = false
|
||||||
|
end
|
||||||
|
|
||||||
|
-- used to enable autocompletion (assign to every lsp server config)
|
||||||
|
-- local capabilities = cmp_nvim_lsp.default_capabilities()
|
||||||
|
M.capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||||
|
M.capabilities.textDocument.completion.completionItem.snippetSupport = true
|
||||||
|
|
||||||
|
return M
|
@@ -15,10 +15,14 @@ vim.opt.expandtab = true
|
|||||||
vim.opt.breakindent = true
|
vim.opt.breakindent = true
|
||||||
vim.opt.linebreak = true
|
vim.opt.linebreak = true
|
||||||
|
|
||||||
|
-- folding
|
||||||
|
vim.wo.foldmethod = "expr"
|
||||||
|
vim.wo.foldexpr = "v:lua.vim.treesitter.foldexpr()"
|
||||||
|
|
||||||
-- line numbers
|
-- line numbers
|
||||||
vim.wo.number = true
|
vim.wo.number = true
|
||||||
vim.wo.cursorline = true
|
vim.wo.cursorline = true
|
||||||
vim.wo.relativenumber = true
|
vim.wo.relativenumber = false
|
||||||
vim.opt.signcolumn = "yes" -- reserve space for diagnostics
|
vim.opt.signcolumn = "yes" -- reserve space for diagnostics
|
||||||
|
|
||||||
-- search options
|
-- search options
|
||||||
|
@@ -1,25 +1,25 @@
|
|||||||
return {
|
return {
|
||||||
-- competion
|
-- competion
|
||||||
"hrsh7th/nvim-cmp",
|
"hrsh7th/nvim-cmp",
|
||||||
event = "InsertEnter",
|
event = "InsertEnter",
|
||||||
dependencies = {
|
dependencies = {
|
||||||
{ "hrsh7th/cmp-buffer" }, -- source for text in buffer
|
{ "hrsh7th/cmp-buffer" }, -- source for text in buffer
|
||||||
{ "hrsh7th/cmp-path" }, -- source for file system paths
|
{ "hrsh7th/cmp-path" }, -- source for file system paths
|
||||||
{ "L3MON4D3/LuaSnip" }, -- snippet engine
|
{ "L3MON4D3/LuaSnip" }, -- snippet engine
|
||||||
{ "saadparwaiz1/cmp_luasnip" }, -- for autocompletion
|
{ "saadparwaiz1/cmp_luasnip" }, -- for autocompletion
|
||||||
{ "rafamadriz/friendly-snippets" }, -- useful snippets
|
{ "rafamadriz/friendly-snippets" }, -- useful snippets
|
||||||
{ "onsails/lspkind.nvim" }, -- icons for cmp
|
{ "onsails/lspkind.nvim" }, -- icons for cmp
|
||||||
{ "hrsh7th/cmp-nvim-lsp-signature-help" }, -- signature help
|
{ "hrsh7th/cmp-nvim-lsp-signature-help" }, -- signature help
|
||||||
},
|
},
|
||||||
|
|
||||||
config = function()
|
config = function()
|
||||||
local cmp = require("cmp")
|
local cmp = require("cmp")
|
||||||
local lspkind = require("lspkind")
|
local lspkind = require("lspkind")
|
||||||
local luasnip = require("luasnip")
|
local luasnip = require("luasnip")
|
||||||
|
|
||||||
-- loads vscode style snippets from installed plugins (e.g. friendly-snippets)
|
-- loads vscode style snippets from installed plugins (e.g. friendly-snippets)
|
||||||
require("luasnip.loaders.from_vscode").lazy_load()
|
require("luasnip.loaders.from_vscode").lazy_load()
|
||||||
require("luasnip.loaders.from_vscode").load({paths = { "~/.config/nvim/snippets" }})
|
require("luasnip.loaders.from_vscode").load({ paths = { "~/.config/nvim/snippets" } })
|
||||||
luasnip.setup({
|
luasnip.setup({
|
||||||
region_check_events = { "CursorMoved" },
|
region_check_events = { "CursorMoved" },
|
||||||
delete_check_events = { "TextChanged" },
|
delete_check_events = { "TextChanged" },
|
||||||
@@ -27,32 +27,32 @@ return {
|
|||||||
|
|
||||||
-- luasnip.filetype_extend("htmldjango", { "html" })
|
-- luasnip.filetype_extend("htmldjango", { "html" })
|
||||||
|
|
||||||
cmp.setup({
|
cmp.setup({
|
||||||
completion = {
|
completion = {
|
||||||
completeopt = "menu,menuone,preview,noselect",
|
completeopt = "menu,menuone,preview,noselect",
|
||||||
},
|
},
|
||||||
|
|
||||||
window = {
|
window = {
|
||||||
documentation = cmp.config.window.bordered(),
|
documentation = cmp.config.window.bordered(),
|
||||||
completion = cmp.config.window.bordered({
|
completion = cmp.config.window.bordered({
|
||||||
winhighlight = "Normal:CmpPmenu,CursorLine:PmenuSel,Search:None",
|
winhighlight = "Normal:CmpPmenu,CursorLine:PmenuSel,Search:None",
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
|
|
||||||
snippet = { -- configure how nvim-cmp interacts with snippet engine
|
snippet = { -- configure how nvim-cmp interacts with snippet engine
|
||||||
expand = function(args)
|
expand = function(args)
|
||||||
luasnip.lsp_expand(args.body)
|
luasnip.lsp_expand(args.body)
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
|
||||||
mapping = cmp.mapping.preset.insert({
|
mapping = cmp.mapping.preset.insert({
|
||||||
["<C-j>"] = cmp.mapping.select_next_item({ behavior = cmp.ConfirmBehavior.Select }), -- next suggestion
|
["<C-j>"] = cmp.mapping.select_next_item({ behavior = cmp.ConfirmBehavior.Select }), -- next suggestion
|
||||||
["<C-k>"] = cmp.mapping.select_prev_item({ behavior = cmp.ConfirmBehavior.Select }), -- prev suggestion
|
["<C-k>"] = cmp.mapping.select_prev_item({ behavior = cmp.ConfirmBehavior.Select }), -- prev suggestion
|
||||||
["<C-S-J>"] = cmp.mapping.scroll_docs(4, { behavior = cmp.ConfirmBehavior.Select }), -- docs forward
|
["<C-S-J>"] = cmp.mapping.scroll_docs(4, { behavior = cmp.ConfirmBehavior.Select }), -- docs forward
|
||||||
["<C-S-K>"] = cmp.mapping.scroll_docs(-4, { behavior = cmp.ConfirmBehavior.Select }), -- docs back
|
["<C-S-K>"] = cmp.mapping.scroll_docs(-4, { behavior = cmp.ConfirmBehavior.Select }), -- docs back
|
||||||
["<C-Space>"] = cmp.mapping.complete(), -- show completion suggestions
|
["<C-Space>"] = cmp.mapping.complete(), -- show completion suggestions
|
||||||
["<C-q>"] = cmp.mapping.abort(), -- close completion window
|
["<C-q>"] = cmp.mapping.abort(), -- close completion window
|
||||||
["<CR>"] = cmp.mapping.confirm({ select = false }), -- autocomplete if selected
|
["<CR>"] = cmp.mapping.confirm({ select = false }), -- autocomplete if selected
|
||||||
-- Mapping for Tab key
|
-- Mapping for Tab key
|
||||||
["<Tab>"] = cmp.mapping(function(fallback)
|
["<Tab>"] = cmp.mapping(function(fallback)
|
||||||
if cmp.visible() then
|
if cmp.visible() then
|
||||||
@@ -86,46 +86,46 @@ return {
|
|||||||
-- Otherwise, fallback (insert a tab character)
|
-- Otherwise, fallback (insert a tab character)
|
||||||
fallback()
|
fallback()
|
||||||
end
|
end
|
||||||
end, { "i", "s" })
|
end, { "i", "s" }),
|
||||||
}),
|
}),
|
||||||
|
|
||||||
-- sources for autocompletion
|
-- sources for autocompletion
|
||||||
sources = cmp.config.sources({
|
sources = cmp.config.sources({
|
||||||
{ name = "nvim_lsp" }, -- lsp
|
{ name = "nvim_lsp" }, -- lsp
|
||||||
{ name = "luasnip" }, -- snippets
|
{ name = "luasnip" }, -- snippets
|
||||||
{ name = "buffer" }, -- text within current buffer
|
{ name = "buffer" }, -- text within current buffer
|
||||||
{ name = "path" }, -- file system paths
|
{ name = "path" }, -- file system paths
|
||||||
{ name = 'nvim_lsp_signature_help' }, -- signature help
|
{ name = "nvim_lsp_signature_help" }, -- signature help
|
||||||
}),
|
}),
|
||||||
|
|
||||||
formatting = {
|
formatting = {
|
||||||
fields = { "kind", "abbr", "menu" },
|
fields = { "kind", "abbr", "menu" },
|
||||||
format = lspkind.cmp_format({
|
format = lspkind.cmp_format({
|
||||||
mode = "symbol", -- show only symbol annotations
|
mode = "symbol", -- show only symbol annotations
|
||||||
maxwidth = 50, -- prevent the popup from showing more than provided characters (e.g 50 will not show more than 50 characters)
|
maxwidth = 50, -- prevent the popup from showing more than provided characters (e.g 50 will not show more than 50 characters)
|
||||||
-- can also be a function to dynamically calculate max width such as
|
-- can also be a function to dynamically calculate max width such as
|
||||||
-- maxwidth = function() return math.floor(0.45 * vim.o.columns) end,
|
-- maxwidth = function() return math.floor(0.45 * vim.o.columns) end,
|
||||||
ellipsis_char = "…", -- when popup menu exceed maxwidth, the truncated part would show ellipsis_char instead (must define maxwidth first)
|
ellipsis_char = "…", -- when popup menu exceed maxwidth, the truncated part would show ellipsis_char instead (must define maxwidth first)
|
||||||
show_labelDetails = true, -- show labelDetails in menu. Disabled by default
|
show_labelDetails = true, -- show labelDetails in menu. Disabled by default
|
||||||
|
|
||||||
-- The function below will be called before any actual modifications from lspkind
|
-- The function below will be called before any actual modifications from lspkind
|
||||||
-- so that you can provide more controls on popup customization. (See [#30](https://github.com/onsails/lspkind-nvim/pull/30))
|
-- so that you can provide more controls on popup customization. (See [#30](https://github.com/onsails/lspkind-nvim/pull/30))
|
||||||
before = function(entry, vim_item)
|
before = function(entry, vim_item)
|
||||||
return vim_item
|
return vim_item
|
||||||
end,
|
end,
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
local opts = { silent = true }
|
local opts = { silent = true }
|
||||||
opts.desc = "next snippet placeholder"
|
opts.desc = "next snippet placeholder"
|
||||||
vim.keymap.set({ "i", "s" }, "<C-w>", function()
|
vim.keymap.set({ "i", "s" }, "<C-w>", function()
|
||||||
luasnip.jump(1)
|
luasnip.jump(1)
|
||||||
end, opts)
|
end, opts)
|
||||||
|
|
||||||
opts.desc = "previous snippet placeholder"
|
opts.desc = "previous snippet placeholder"
|
||||||
vim.keymap.set({ "i", "s" }, "<C-b>", function()
|
vim.keymap.set({ "i", "s" }, "<C-b>", function()
|
||||||
luasnip.jump(-1)
|
luasnip.jump(-1)
|
||||||
end, opts)
|
end, opts)
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
17
nvim/lua/plugins/lsp/ls/bashls.lua
Normal file
17
nvim/lua/plugins/lsp/ls/bashls.lua
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
-- ┌ ┐
|
||||||
|
-- │ Bash │
|
||||||
|
-- └ ┘
|
||||||
|
local lsp = vim.lsp
|
||||||
|
|
||||||
|
local capabilities = require("lsp-options").capabilities
|
||||||
|
local on_attach = require("lsp-options").on_attach
|
||||||
|
|
||||||
|
lsp.config("bashls", {
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = on_attach,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
-- ── Enable configs ───────────────────────────────────────────────
|
||||||
|
local enable = vim.lsp.enable
|
||||||
|
enable("bashls")
|
28
nvim/lua/plugins/lsp/ls/c.lua
Normal file
28
nvim/lua/plugins/lsp/ls/c.lua
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
-- ┌ ┐
|
||||||
|
-- │ C, Cpp, objc │
|
||||||
|
-- └ ┘
|
||||||
|
local lsp = vim.lsp
|
||||||
|
|
||||||
|
local capabilities = require("lsp-options").capabilities
|
||||||
|
local on_attach = require("lsp-options").on_attach
|
||||||
|
|
||||||
|
lsp.config("clangd", {
|
||||||
|
cmd = {
|
||||||
|
"clangd",
|
||||||
|
"--suggest-missing-includes",
|
||||||
|
"--clang-tidy",
|
||||||
|
},
|
||||||
|
filetypes = { "c", "cpp", "objc", "objcpp", "cuda", "proto", "ino" },
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = on_attach,
|
||||||
|
})
|
||||||
|
|
||||||
|
lsp.config("cmake", {
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = on_attach,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- ── Enable configs ───────────────────────────────────────────────
|
||||||
|
local enable = vim.lsp.enable
|
||||||
|
enable("clangd")
|
||||||
|
enable("cmake")
|
17
nvim/lua/plugins/lsp/ls/go.lua
Normal file
17
nvim/lua/plugins/lsp/ls/go.lua
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
-- ┌ ┐
|
||||||
|
-- │ GO │
|
||||||
|
-- └ ┘
|
||||||
|
local lsp = vim.lsp
|
||||||
|
|
||||||
|
local capabilities = require("lsp-options").capabilities
|
||||||
|
local on_attach = require("lsp-options").on_attach
|
||||||
|
|
||||||
|
lsp.config("gopls", {
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = on_attach,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
-- ── Enable configs ───────────────────────────────────────────────
|
||||||
|
local enable = vim.lsp.enable
|
||||||
|
enable("gopls")
|
17
nvim/lua/plugins/lsp/ls/hypr.lua
Normal file
17
nvim/lua/plugins/lsp/ls/hypr.lua
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
-- ┌ ┐
|
||||||
|
-- │ Hyprland │
|
||||||
|
-- └ ┘
|
||||||
|
local lsp = vim.lsp
|
||||||
|
|
||||||
|
local capabilities = require("lsp-options").capabilities
|
||||||
|
local on_attach = require("lsp-options").on_attach
|
||||||
|
|
||||||
|
lsp.config("hyprls", {
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = on_attach,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
-- ── Enable configs ───────────────────────────────────────────────
|
||||||
|
local enable = vim.lsp.enable
|
||||||
|
enable("hyprls")
|
45
nvim/lua/plugins/lsp/ls/low-level.lua
Normal file
45
nvim/lua/plugins/lsp/ls/low-level.lua
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
-- ┌ ┐
|
||||||
|
-- │ Low-level (HDL and ASM) │
|
||||||
|
-- └ ┘
|
||||||
|
local lsp = vim.lsp
|
||||||
|
|
||||||
|
local capabilities = require("lsp-options").capabilities
|
||||||
|
local on_attach = require("lsp-options").on_attach
|
||||||
|
|
||||||
|
-- ┌ ┐
|
||||||
|
-- │ ASM │
|
||||||
|
-- └ ┘
|
||||||
|
lsp.config("asm_lsp", {
|
||||||
|
on_attach = on_attach,
|
||||||
|
capabilities = capabilities,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- ┌ ┐
|
||||||
|
-- │ Verilog │
|
||||||
|
-- └ ┘
|
||||||
|
local lspconfutil = require("lspconfig/util")
|
||||||
|
local root_pattern = lspconfutil.root_pattern("veridian.yml", ".git", ".xpr")
|
||||||
|
local verilog_root_dir = function()
|
||||||
|
local filename = lspconfutil.path.join(vim.loop.cwd(), fname)
|
||||||
|
return root_pattern(filename) or lspconfutil.path.dirname(filename)
|
||||||
|
end
|
||||||
|
lsp.config("veridian", {
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = on_attach,
|
||||||
|
root_dir = verilog_root_dir,
|
||||||
|
})
|
||||||
|
|
||||||
|
lsp.config("verible", {
|
||||||
|
-- cmd = { 'verible-verilog-ls', '--rules_config=/home/janis/.config/nvim/util/verible-conf.json' },
|
||||||
|
cmd = { "verible-verilog-ls", "--rules=-no-trailing-spaces", "" },
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = on_attach,
|
||||||
|
root_dir = verilog_root_dir,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
-- ── Enable configs ───────────────────────────────────────────────
|
||||||
|
local enable = vim.lsp.enable
|
||||||
|
enable("veridian")
|
||||||
|
enable("verible")
|
||||||
|
enable("asm_lsp")
|
32
nvim/lua/plugins/lsp/ls/luals.lua
Normal file
32
nvim/lua/plugins/lsp/ls/luals.lua
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
-- ┌ ┐
|
||||||
|
-- │ LUA │
|
||||||
|
-- └ ┘
|
||||||
|
local lsp = vim.lsp
|
||||||
|
|
||||||
|
local capabilities = require("lsp-options").capabilities
|
||||||
|
local on_attach = require("lsp-options").on_attach
|
||||||
|
|
||||||
|
lsp.config("lua_ls", {
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = on_attach,
|
||||||
|
settings = {
|
||||||
|
Lua = {
|
||||||
|
-- make the language server recognize "vim" global
|
||||||
|
diagnostics = {
|
||||||
|
globals = { "vim" },
|
||||||
|
},
|
||||||
|
workspace = {
|
||||||
|
-- make language server aware of runtime files
|
||||||
|
library = {
|
||||||
|
[vim.fn.expand("$VIMRUNTIME/lua")] = true,
|
||||||
|
[vim.fn.stdpath("config") .. "/lua"] = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
-- ── Enable configs ───────────────────────────────────────────────
|
||||||
|
local enable = vim.lsp.enable
|
||||||
|
enable("lua_ls")
|
17
nvim/lua/plugins/lsp/ls/pyright.lua
Normal file
17
nvim/lua/plugins/lsp/ls/pyright.lua
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
-- ┌ ┐
|
||||||
|
-- │ Python │
|
||||||
|
-- └ ┘
|
||||||
|
local lsp = vim.lsp
|
||||||
|
|
||||||
|
local capabilities = require("lsp-options").capabilities
|
||||||
|
local on_attach = require("lsp-options").on_attach
|
||||||
|
|
||||||
|
lsp.config("pyright", {
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = on_attach,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
-- ── Enable configs ───────────────────────────────────────────────
|
||||||
|
local enable = vim.lsp.enable
|
||||||
|
enable("pyright")
|
17
nvim/lua/plugins/lsp/ls/ruby.lua
Normal file
17
nvim/lua/plugins/lsp/ls/ruby.lua
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
-- ┌ ┐
|
||||||
|
-- │ Ruby │
|
||||||
|
-- └ ┘
|
||||||
|
local lsp = vim.lsp
|
||||||
|
|
||||||
|
local capabilities = require("lsp-options").capabilities
|
||||||
|
local on_attach = require("lsp-options").on_attach
|
||||||
|
|
||||||
|
lsp.config("ruby_lsp", {
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = on_attach,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
-- ── Enable configs ───────────────────────────────────────────────
|
||||||
|
local enable = vim.lsp.enable
|
||||||
|
enable("ruby_lsp")
|
24
nvim/lua/plugins/lsp/ls/rust-analyzer.lua
Normal file
24
nvim/lua/plugins/lsp/ls/rust-analyzer.lua
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
-- ┌ ┐
|
||||||
|
-- │ Rust │
|
||||||
|
-- └ ┘
|
||||||
|
local lsp = vim.lsp
|
||||||
|
|
||||||
|
local capabilities = require("lsp-options").capabilities
|
||||||
|
local on_attach = require("lsp-options").on_attach
|
||||||
|
|
||||||
|
lsp.config("rust_analyzer", {
|
||||||
|
settings = {
|
||||||
|
["rust-analyzer"] = {
|
||||||
|
diagnostics = {
|
||||||
|
enable = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = on_attach,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
-- ── Enable configs ───────────────────────────────────────────────
|
||||||
|
local enable = vim.lsp.enable
|
||||||
|
enable("rust_analyzer")
|
28
nvim/lua/plugins/lsp/ls/text.lua
Normal file
28
nvim/lua/plugins/lsp/ls/text.lua
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
-- ┌ ┐
|
||||||
|
-- │ Text languages (TeX and MD) │
|
||||||
|
-- └ ┘
|
||||||
|
local lsp = vim.lsp
|
||||||
|
|
||||||
|
local capabilities = require("lsp-options").capabilities
|
||||||
|
local on_attach = require("lsp-options").on_attach
|
||||||
|
|
||||||
|
-- ┌ ┐
|
||||||
|
-- │ Markdown │
|
||||||
|
-- └ ┘
|
||||||
|
lsp.config("marksman", {
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = on_attach,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- ┌ ┐
|
||||||
|
-- │ LaTeX │
|
||||||
|
-- └ ┘
|
||||||
|
lsp.config("texlab", {
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = on_attach,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- ── Enable configs ───────────────────────────────────────────────
|
||||||
|
local enable = vim.lsp.enable
|
||||||
|
enable("marksman")
|
||||||
|
enable("texlab")
|
70
nvim/lua/plugins/lsp/ls/web.lua
Normal file
70
nvim/lua/plugins/lsp/ls/web.lua
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
-- ┌ ┐
|
||||||
|
-- │ Web technology │
|
||||||
|
-- └ ┘
|
||||||
|
local lsp = vim.lsp
|
||||||
|
|
||||||
|
local capabilities = require("lsp-options").capabilities
|
||||||
|
local on_attach = require("lsp-options").on_attach
|
||||||
|
local on_attach_no_formatting = require("lsp-options").on_attach_no_formatting
|
||||||
|
|
||||||
|
-- ┌ ┐
|
||||||
|
-- │ HTML, CSS, JSON │
|
||||||
|
-- └ ┘
|
||||||
|
lsp.config("cssls", {
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = on_attach,
|
||||||
|
})
|
||||||
|
|
||||||
|
lsp.config("html", {
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = on_attach,
|
||||||
|
})
|
||||||
|
|
||||||
|
lsp.config("jsonls", {
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = on_attach,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- ┌ ┐
|
||||||
|
-- │ Vue │
|
||||||
|
-- └ ┘
|
||||||
|
lsp.config("vue_ls", {
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = on_attach_no_formatting,
|
||||||
|
filetypes = {
|
||||||
|
"vue",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- ┌ ┐
|
||||||
|
-- │ TS, JS, TSX, JSX │
|
||||||
|
-- └ ┘
|
||||||
|
lsp.config("ts_ls", {
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = on_attach_no_formatting,
|
||||||
|
init_options = {
|
||||||
|
plugins = {
|
||||||
|
{
|
||||||
|
name = "@vue/typescript-plugin",
|
||||||
|
location = "/usr/lib/node_modules/@vue/typescript-plugin",
|
||||||
|
languages = { "javascript", "typescript", "vue" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
filetypes = {
|
||||||
|
"javascript",
|
||||||
|
"typescript",
|
||||||
|
"typescriptreact",
|
||||||
|
"javascriptreact",
|
||||||
|
"vue",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
-- ── Enable configs ───────────────────────────────────────────────
|
||||||
|
local enable = vim.lsp.enable
|
||||||
|
enable("jsonls")
|
||||||
|
enable("html")
|
||||||
|
enable("cssls")
|
||||||
|
enable("vue_ls")
|
||||||
|
enable("ts_ls")
|
@@ -1,16 +1,16 @@
|
|||||||
return {
|
return {
|
||||||
---------- for lsp diagnostic lines ----------
|
---------- for lsp diagnostic lines ----------
|
||||||
"https://git.sr.ht/~whynothugo/lsp_lines.nvim",
|
"https://git.sr.ht/~whynothugo/lsp_lines.nvim",
|
||||||
event = "LspAttach",
|
event = "LspAttach",
|
||||||
config = function()
|
config = function()
|
||||||
require("lsp_lines").setup()
|
require("lsp_lines").setup()
|
||||||
vim.diagnostic.config({ virtual_lines = false })
|
vim.diagnostic.config({ virtual_lines = false })
|
||||||
|
|
||||||
local lsplines = false
|
local lsplines = false
|
||||||
vim.keymap.set("n", "<Leader>L", function ()
|
vim.keymap.set("n", "<Leader>L", function()
|
||||||
lsplines = not lsplines
|
lsplines = not lsplines
|
||||||
vim.diagnostic.config({ virtual_text = not lsplines })
|
vim.diagnostic.config({ virtual_text = not lsplines })
|
||||||
vim.diagnostic.config({ virtual_lines = lsplines })
|
vim.diagnostic.config({ virtual_lines = lsplines })
|
||||||
end, { desc = "Toggle lsp_lines" })
|
end, { desc = "Toggle lsp_lines" })
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
@@ -1,3 +1,7 @@
|
|||||||
|
-- ───────────────────────────────────────────────────────────────────
|
||||||
|
-- ╭───────────────────────────────────────────────╮
|
||||||
|
-- │ LSP Configuration │
|
||||||
|
-- ╰───────────────────────────────────────────────╯
|
||||||
return {
|
return {
|
||||||
-- lsp configuration
|
-- lsp configuration
|
||||||
"neovim/nvim-lspconfig",
|
"neovim/nvim-lspconfig",
|
||||||
@@ -5,74 +9,10 @@ return {
|
|||||||
dependencies = {
|
dependencies = {
|
||||||
"hrsh7th/cmp-nvim-lsp",
|
"hrsh7th/cmp-nvim-lsp",
|
||||||
{ "antosha417/nvim-lsp-file-operations", config = true },
|
{ "antosha417/nvim-lsp-file-operations", config = true },
|
||||||
-- "mfussenegger/nvim-jdtls",
|
"mfussenegger/nvim-jdtls",
|
||||||
"nvim-java/nvim-java"
|
|
||||||
},
|
},
|
||||||
config = function()
|
config = function()
|
||||||
require('java').setup()
|
local enable = vim.lsp.enable
|
||||||
-- import lspconfig plugin
|
|
||||||
local lspconfig = require("lspconfig")
|
|
||||||
|
|
||||||
-- import cmp-nvim-lsp plugin
|
|
||||||
local cmp_nvim_lsp = require("cmp_nvim_lsp")
|
|
||||||
|
|
||||||
local keymap = vim.keymap
|
|
||||||
|
|
||||||
local opts = { silent = true }
|
|
||||||
|
|
||||||
local on_attach = function(client, bufnr)
|
|
||||||
opts.buffer = bufnr
|
|
||||||
|
|
||||||
-- set keybinds
|
|
||||||
opts.desc = "Show LSP references"
|
|
||||||
keymap.set("n", "gR", "<cmd>Telescope lsp_references<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Go to declaration"
|
|
||||||
keymap.set("n", "gD", ":lua vim.lsp.buf.declaration", opts)
|
|
||||||
|
|
||||||
opts.desc = "Show LSP definitions"
|
|
||||||
keymap.set("n", "gd", "<cmd>Telescope lsp_definitions<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Show LSP implementations"
|
|
||||||
keymap.set("n", "gi", "<cmd>Telescope lsp_implementations<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Show LSP type definitions"
|
|
||||||
keymap.set("n", "gt", "<cmd>Telescope lsp_type_definitions<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "See available code actions"
|
|
||||||
keymap.set({ "n", "v" }, "<leader>ca", vim.lsp.buf.code_action, opts)
|
|
||||||
|
|
||||||
opts.desc = "Format current file"
|
|
||||||
keymap.set("n", "<leader>gf", vim.lsp.buf.format, opts)
|
|
||||||
|
|
||||||
opts.desc = "Smart rename"
|
|
||||||
keymap.set("n", "<leader>n", vim.lsp.buf.rename, opts)
|
|
||||||
|
|
||||||
opts.desc = "Show buffer diagnostics"
|
|
||||||
keymap.set("n", "ga", "<cmd>Telescope diagnostics bufnr=0<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Show line diagnostics"
|
|
||||||
keymap.set("n", "gA", ":lua vim.diagnostic.open_float()<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Go to previous diagnostic"
|
|
||||||
keymap.set("n", "[d", vim.diagnostic.goto_prev, opts)
|
|
||||||
|
|
||||||
opts.desc = "Go to next diagnostic"
|
|
||||||
keymap.set("n", "]d", vim.diagnostic.goto_next, opts)
|
|
||||||
|
|
||||||
opts.desc = "Show documentation for what is under cursor"
|
|
||||||
keymap.set("n", "<leader>k", vim.lsp.buf.hover, opts)
|
|
||||||
|
|
||||||
opts.desc = "Restart LSP"
|
|
||||||
keymap.set("n", "<leader>rs", ":LspRestart<CR>", opts)
|
|
||||||
|
|
||||||
vim.opt.signcolumn = "yes" -- reserve space for diagnostics
|
|
||||||
end
|
|
||||||
|
|
||||||
-- used to enable autocompletion (assign to every lsp server config)
|
|
||||||
-- local capabilities = cmp_nvim_lsp.default_capabilities()
|
|
||||||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
|
||||||
capabilities.textDocument.completion.completionItem.snippetSupport = true
|
|
||||||
|
|
||||||
-- Change the Diagnostic symbols in the sign column (gutter)
|
-- Change the Diagnostic symbols in the sign column (gutter)
|
||||||
local signs = { Error = " ", Warn = " ", Hint = "", Info = " " }
|
local signs = { Error = " ", Warn = " ", Hint = "", Info = " " }
|
||||||
@@ -81,134 +21,22 @@ return {
|
|||||||
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" })
|
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" })
|
||||||
end
|
end
|
||||||
|
|
||||||
lspconfig.bashls.setup({
|
-- ───────────────────────────────────────────────────────────────────
|
||||||
capabilities = capabilities,
|
-- ╭───────────────────────────────────────────────╮
|
||||||
on_attach = on_attach,
|
-- │ Import configs from other files │
|
||||||
})
|
-- ╰───────────────────────────────────────────────╯
|
||||||
|
require("plugins.lsp.ls.bashls")
|
||||||
lspconfig.clangd.setup({
|
require("plugins.lsp.ls.c")
|
||||||
cmd = {
|
require("plugins.lsp.ls.go")
|
||||||
"clangd",
|
require("plugins.lsp.ls.hypr")
|
||||||
"--suggest-missing-includes",
|
require("plugins.lsp.ls.low-level")
|
||||||
"--clang-tidy",
|
require("plugins.lsp.ls.luals")
|
||||||
},
|
require("plugins.lsp.ls.pyright")
|
||||||
filetypes = { "c", "cpp", "objc", "objcpp", "cuda", "proto", "ino" },
|
require("plugins.lsp.ls.rust-analyzer")
|
||||||
capabilities = capabilities,
|
require("plugins.lsp.ls.ruby")
|
||||||
on_attach = on_attach,
|
require("plugins.lsp.ls.text")
|
||||||
})
|
require("plugins.lsp.ls.web")
|
||||||
|
-- ───────────────────────────────────────────────────────────────────
|
||||||
lspconfig.cssls.setup({
|
|
||||||
capabilities = capabilities,
|
|
||||||
on_attach = on_attach,
|
|
||||||
})
|
|
||||||
|
|
||||||
lspconfig.html.setup({
|
|
||||||
capabilities = capabilities,
|
|
||||||
on_attach = on_attach,
|
|
||||||
})
|
|
||||||
|
|
||||||
lspconfig.jsonls.setup({
|
|
||||||
capabilities = capabilities,
|
|
||||||
on_attach = on_attach,
|
|
||||||
})
|
|
||||||
|
|
||||||
lspconfig.lua_ls.setup({
|
|
||||||
capabilities = capabilities,
|
|
||||||
on_attach = on_attach,
|
|
||||||
settings = {
|
|
||||||
Lua = {
|
|
||||||
-- make the language server recognize "vim" global
|
|
||||||
diagnostics = {
|
|
||||||
globals = { "vim" },
|
|
||||||
},
|
|
||||||
workspace = {
|
|
||||||
-- make language server aware of runtime files
|
|
||||||
library = {
|
|
||||||
[vim.fn.expand("$VIMRUNTIME/lua")] = true,
|
|
||||||
[vim.fn.stdpath("config") .. "/lua"] = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
lspconfig.pyright.setup({
|
|
||||||
capabilities = capabilities,
|
|
||||||
on_attach = on_attach,
|
|
||||||
})
|
|
||||||
|
|
||||||
local java_on_attach = function(client, bufnr)
|
|
||||||
on_attach(client, bufnr)
|
|
||||||
|
|
||||||
opts.buffer = bufnr
|
|
||||||
-- Keybinds for testing, refactoring, java specific
|
|
||||||
opts.desc = "Java profiling"
|
|
||||||
keymap.set("n", "<leader>jp", ":JavaProfile<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Java Refactor: Extract Variable (create variable from cursor)"
|
|
||||||
keymap.set("n", "<leader>jev", ":JavaExtractVariable<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Java Refactor: Extract Variable all occurrences (create variable from cursor)"
|
|
||||||
keymap.set("n", "<leader>jea", ":JavaExtractVariableAllOccurrence<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Java Refactor: Extract Const (create const from cursor)"
|
|
||||||
keymap.set("n", "<leader>jec", ":JavaExtractConst<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Java Refactor: Extract Method (create method from cursor)"
|
|
||||||
keymap.set("n", "<leader>jev", ":JavaExtractMethod<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Java Refactor: Extract Field (create field from cursor)"
|
|
||||||
keymap.set("n", "<leader>jev", ":JavaExtractField<CR>", opts)
|
|
||||||
|
|
||||||
-- Java testing, Debugging
|
|
||||||
opts.desc = "Java Testing: Run test class in buffer"
|
|
||||||
keymap.set("n", "<leader>jtc", ":JavaTestRunCurrentClass<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Java Testing: Debug test class in buffer"
|
|
||||||
keymap.set("n", "<leader>jdc", ":JavaTestDebugCurrentClass<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Java Testing: Run current method in buffer"
|
|
||||||
keymap.set("n", "<leader>jtm", ":JavaTestRunCurrentMethod<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Java Testing: Debug current method in buffer"
|
|
||||||
keymap.set("n", "<leader>jdm", ":JavaTestDebugCurrentMethod<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Java Testing: View last report"
|
|
||||||
keymap.set("n", "<leader>jtv", ":JavaTestViewLastReport<CR>", opts)
|
|
||||||
end
|
|
||||||
|
|
||||||
lspconfig.jdtls.setup({
|
|
||||||
capabilities = capabilities,
|
|
||||||
on_attach = java_on_attach,
|
|
||||||
})
|
|
||||||
|
|
||||||
lspconfig.texlab.setup{
|
|
||||||
cmd = { "texlab" },
|
|
||||||
filetypes = { "tex", "latex", "bib" },
|
|
||||||
root_dir = function(fname)
|
|
||||||
return vim.loop.cwd()
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
|
|
||||||
local lspconfutil = require 'lspconfig/util'
|
|
||||||
local root_pattern = lspconfutil.root_pattern("veridian.yml", ".git", ".xpr")
|
|
||||||
local verilog_root_dir = function ()
|
|
||||||
local filename = lspconfutil.path.join(vim.loop.cwd(), fname)
|
|
||||||
return root_pattern(filename) or lspconfutil.path.dirname(filename)
|
|
||||||
end
|
|
||||||
lspconfig.veridian.setup {
|
|
||||||
capabilities = capabilities,
|
|
||||||
on_attach = on_attach,
|
|
||||||
root_dir = verilog_root_dir
|
|
||||||
}
|
|
||||||
|
|
||||||
lspconfig.verible.setup( {
|
|
||||||
-- cmd = { 'verible-verilog-ls', '--rules_config=/home/janis/.config/nvim/util/verible-conf.json' },
|
|
||||||
cmd = { 'verible-verilog-ls', '--rules=-no-trailing-spaces', '' },
|
|
||||||
capabilities = capabilities,
|
|
||||||
on_attach = on_attach,
|
|
||||||
root_dir = verilog_root_dir
|
|
||||||
} )
|
|
||||||
|
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
-- ───────────────────────────────────────────────────────────────────
|
||||||
|
@@ -1,12 +1,3 @@
|
|||||||
return {
|
return {
|
||||||
'L3MON4D3/LuaSnip',
|
"L3MON4D3/LuaSnip",
|
||||||
-- config = function()
|
|
||||||
-- local luasnip = require('luasnip')
|
|
||||||
-- -- luasnip.setup({
|
|
||||||
-- -- region_check_events = "CursorMoved",
|
|
||||||
-- -- delete_check_events = "TextChanged",
|
|
||||||
-- -- })
|
|
||||||
--
|
|
||||||
-- require("luasnip.loaders.from_vscode").load({paths = "~/.config/nvim/my_snippets"})
|
|
||||||
-- end
|
|
||||||
}
|
}
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
return {
|
return {
|
||||||
-- lsp package manager
|
-- lsp package manager
|
||||||
"williamboman/mason.nvim",
|
"mason-org/mason.nvim",
|
||||||
dependencies = {
|
dependencies = {
|
||||||
"williamboman/mason-lspconfig.nvim",
|
"mason-org/mason-lspconfig.nvim",
|
||||||
},
|
},
|
||||||
config = function()
|
config = function()
|
||||||
-- import mason
|
-- import mason
|
||||||
@@ -25,17 +25,26 @@ return {
|
|||||||
mason_lspconfig.setup({
|
mason_lspconfig.setup({
|
||||||
-- list of servers for mason to install
|
-- list of servers for mason to install
|
||||||
ensure_installed = {
|
ensure_installed = {
|
||||||
-- "bashls",
|
"asm_lsp",
|
||||||
-- "clangd",
|
"bashls",
|
||||||
|
"clangd",
|
||||||
|
"cmake",
|
||||||
-- "cssls",
|
-- "cssls",
|
||||||
-- "jdtls",
|
"gopls",
|
||||||
|
"hyprls",
|
||||||
|
"jdtls",
|
||||||
|
"latexindent",
|
||||||
|
"marksman",
|
||||||
-- "lua_ls",
|
-- "lua_ls",
|
||||||
-- "pyright",
|
-- "pyright",
|
||||||
-- "tsserver",
|
"rust_analyzer",
|
||||||
"volar"
|
"ruby_lsp",
|
||||||
|
-- "ts_ls",
|
||||||
|
"vue_ls",
|
||||||
|
"verible",
|
||||||
},
|
},
|
||||||
-- auto-install configured servers (with lspconfig)
|
-- auto-install configured servers (with lspconfig)
|
||||||
automatic_installation = true,
|
automatic_enable = false
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
@@ -1,13 +1,57 @@
|
|||||||
|
-- ┌ ┐
|
||||||
|
-- │ Formatting, diagnostics │
|
||||||
|
-- └ ┘
|
||||||
return {
|
return {
|
||||||
"nvimtools/none-ls.nvim",
|
"nvimtools/none-ls.nvim",
|
||||||
|
dependencies = {
|
||||||
|
"nvimtools/none-ls-extras.nvim",
|
||||||
|
},
|
||||||
config = function()
|
config = function()
|
||||||
local null_ls = require("null-ls")
|
local null_ls = require("null-ls")
|
||||||
|
|
||||||
null_ls.setup({
|
null_ls.setup({
|
||||||
sources = {
|
sources = {
|
||||||
null_ls.builtins.formatting.stylua,
|
null_ls.builtins.formatting.stylua,
|
||||||
null_ls.builtins.formatting.prettier,
|
null_ls.builtins.formatting.prettier.with({
|
||||||
|
filetypes = {
|
||||||
|
"css",
|
||||||
|
"scss",
|
||||||
|
"less",
|
||||||
|
"html",
|
||||||
|
"json",
|
||||||
|
"yaml",
|
||||||
|
"markdown",
|
||||||
|
"graphql",
|
||||||
|
},
|
||||||
|
extra_args = {
|
||||||
|
"--print-width",
|
||||||
|
"120",
|
||||||
|
"--tab-width",
|
||||||
|
"4",
|
||||||
|
"--bracket-spacing",
|
||||||
|
"true",
|
||||||
|
"--arrow-parens",
|
||||||
|
"avoid",
|
||||||
|
"--jsx-single-quote",
|
||||||
|
"true",
|
||||||
|
"--trailing-comma",
|
||||||
|
"es5",
|
||||||
|
"--no-semi",
|
||||||
|
"false",
|
||||||
|
"--single-quote",
|
||||||
|
"true",
|
||||||
|
"--bracket-same-line",
|
||||||
|
"true",
|
||||||
|
"--vue-indent-script-and-style",
|
||||||
|
"true",
|
||||||
|
},
|
||||||
|
}),
|
||||||
null_ls.builtins.formatting.shfmt,
|
null_ls.builtins.formatting.shfmt,
|
||||||
|
null_ls.builtins.formatting.asmfmt,
|
||||||
|
null_ls.builtins.code_actions.proselint,
|
||||||
|
require("none-ls.diagnostics.eslint_d"),
|
||||||
|
require("none-ls.code_actions.eslint_d"),
|
||||||
|
require("none-ls.formatting.eslint_d"),
|
||||||
null_ls.builtins.formatting.black,
|
null_ls.builtins.formatting.black,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
@@ -1,28 +1,33 @@
|
|||||||
return {
|
return {
|
||||||
-- syntax highlighting
|
-- syntax highlighting
|
||||||
"nvim-treesitter/nvim-treesitter",
|
"nvim-treesitter/nvim-treesitter",
|
||||||
build = ":TSUpdate",
|
build = ":TSUpdate",
|
||||||
config = function()
|
config = function()
|
||||||
require("nvim-treesitter.configs").setup({
|
require("nvim-treesitter.configs").setup({
|
||||||
ensure_installed = {
|
ensure_installed = {
|
||||||
"bash",
|
"asm",
|
||||||
"c",
|
"bash",
|
||||||
"cpp",
|
"c",
|
||||||
|
"cpp",
|
||||||
"css",
|
"css",
|
||||||
"html",
|
"html",
|
||||||
"hyprlang",
|
"hyprlang",
|
||||||
"java",
|
"java",
|
||||||
"javascript",
|
"javadoc",
|
||||||
"json",
|
"javascript",
|
||||||
|
"jsdoc",
|
||||||
|
"json",
|
||||||
"jsonc",
|
"jsonc",
|
||||||
-- "latex",
|
-- "latex",
|
||||||
"lua",
|
"lua",
|
||||||
"markdown",
|
"markdown",
|
||||||
|
"meson",
|
||||||
"nginx",
|
"nginx",
|
||||||
"php",
|
"php",
|
||||||
"python",
|
"python",
|
||||||
"rasi",
|
"rasi",
|
||||||
"requirements",
|
"requirements",
|
||||||
|
"robots",
|
||||||
"ruby",
|
"ruby",
|
||||||
"rust",
|
"rust",
|
||||||
"scss",
|
"scss",
|
||||||
@@ -30,19 +35,20 @@ return {
|
|||||||
"svelte",
|
"svelte",
|
||||||
"swift",
|
"swift",
|
||||||
"toml",
|
"toml",
|
||||||
"typescript",
|
"typescript",
|
||||||
"tsx",
|
"tsx",
|
||||||
"verilog",
|
"verilog",
|
||||||
"vue",
|
"vue",
|
||||||
"xml",
|
"xml",
|
||||||
"yaml",
|
"yaml",
|
||||||
},
|
"zathurarc",
|
||||||
sync_install = false,
|
},
|
||||||
|
sync_install = false,
|
||||||
|
|
||||||
highlight = {
|
highlight = {
|
||||||
enable = true,
|
enable = true,
|
||||||
disable = { "tex" }
|
disable = { "tex" },
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
@@ -1,79 +0,0 @@
|
|||||||
return {
|
|
||||||
"pmizio/typescript-tools.nvim",
|
|
||||||
dependencies = { "nvim-lua/plenary.nvim", "neovim/nvim-lspconfig" },
|
|
||||||
opts = {},
|
|
||||||
ft = { "javascript", "javascriptreact", "typescript", "typescriptreact", "vue" },
|
|
||||||
config = function()
|
|
||||||
require("typescript-tools").setup({
|
|
||||||
on_attach = function(client, bufnr)
|
|
||||||
local opts = { silent = true }
|
|
||||||
local keymap = vim.keymap
|
|
||||||
opts.buffer = bufnr
|
|
||||||
|
|
||||||
-- set keybinds
|
|
||||||
opts.desc = "Show LSP references"
|
|
||||||
keymap.set("n", "gR", "<cmd>Telescope lsp_references<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Go to declaration"
|
|
||||||
keymap.set("n", "gD", ":lua vim.lsp.buf.declaration", opts)
|
|
||||||
|
|
||||||
opts.desc = "Show LSP definitions"
|
|
||||||
keymap.set("n", "gd", "<cmd>Telescope lsp_definitions<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Show LSP implementations"
|
|
||||||
keymap.set("n", "gi", "<cmd>Telescope lsp_implementations<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Show LSP type definitions"
|
|
||||||
keymap.set("n", "gt", "<cmd>Telescope lsp_type_definitions<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "See available code actions"
|
|
||||||
keymap.set({ "n", "v" }, "<leader>ca", vim.lsp.buf.code_action, opts)
|
|
||||||
|
|
||||||
opts.desc = "Format current file"
|
|
||||||
keymap.set("n", "<leader>gf", vim.lsp.buf.format, opts)
|
|
||||||
|
|
||||||
opts.desc = "Smart rename"
|
|
||||||
keymap.set("n", "<leader>n", vim.lsp.buf.rename, opts)
|
|
||||||
|
|
||||||
opts.desc = "Show buffer diagnostics"
|
|
||||||
keymap.set("n", "ga", "<cmd>Telescope diagnostics bufnr=0<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Show line diagnostics"
|
|
||||||
keymap.set("n", "gA", ":lua vim.diagnostic.open_float()<CR>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Go to previous diagnostic"
|
|
||||||
keymap.set("n", "[d", vim.diagnostic.goto_prev, opts)
|
|
||||||
|
|
||||||
opts.desc = "Go to next diagnostic"
|
|
||||||
keymap.set("n", "]d", vim.diagnostic.goto_next, opts)
|
|
||||||
|
|
||||||
opts.desc = "Show documentation for what is under cursor"
|
|
||||||
keymap.set("n", "<leader>k", vim.lsp.buf.hover, opts)
|
|
||||||
|
|
||||||
opts.desc = "Restart LSP"
|
|
||||||
keymap.set("n", "<leader>rs", ":LspRestart<CR>", opts)
|
|
||||||
|
|
||||||
vim.opt.signcolumn = "yes" -- reserve space for diagnostics
|
|
||||||
|
|
||||||
client.server_capabilities.documentFormattingProvider = false
|
|
||||||
client.server_capabilities.documentRangeFormattingProvider = false
|
|
||||||
end,
|
|
||||||
filetypes = {
|
|
||||||
"javascript",
|
|
||||||
"javascriptreact",
|
|
||||||
"typescript",
|
|
||||||
"typescriptreact",
|
|
||||||
"vue",
|
|
||||||
},
|
|
||||||
settings = {
|
|
||||||
tsserver_plugins = {
|
|
||||||
"@vue/typescript-plugin",
|
|
||||||
},
|
|
||||||
jsx_close_tag = {
|
|
||||||
enable = true,
|
|
||||||
filetypes = { "javascriptreact", "typescriptreact" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
end,
|
|
||||||
}
|
|
@@ -1,15 +1,15 @@
|
|||||||
return {
|
return {
|
||||||
"lervag/vimtex",
|
"lervag/vimtex",
|
||||||
config = function()
|
config = function()
|
||||||
-- vimtex settings
|
-- vimtex settings
|
||||||
-- vim.g.vimtex_view_method = 'startup' -- PDF viewer (example: zathura, or use 'skim' for macOS)
|
-- vim.g.vimtex_view_method = 'zathura' -- PDF viewer (example: zathura, or use 'skim' for macOS)
|
||||||
vim.g.vimtex_compiler_method = 'latexmk' -- Use latexmk for compilation
|
vim.g.vimtex_compiler_method = "latexmk" -- Use latexmk for compilation
|
||||||
vim.g.vimtex_fold_enabled = 1 -- Enable folding for LaTeX sections
|
vim.g.vimtex_fold_enabled = 1 -- Enable folding for LaTeX sections
|
||||||
vim.g.vimtex_quickfix_mode = 0 -- Disable quickfix mode for compilation errors
|
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
|
-- ── 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,
|
||||||
}
|
}
|
||||||
|
@@ -1,9 +0,0 @@
|
|||||||
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
|
|
||||||
}
|
|
||||||
|
|
@@ -13,7 +13,7 @@ return {
|
|||||||
indicator = { style = "underline" },
|
indicator = { style = "underline" },
|
||||||
offsets = {
|
offsets = {
|
||||||
{
|
{
|
||||||
filetype = "NvimTree",
|
filetype = "neo-tree",
|
||||||
text = " ",
|
text = " ",
|
||||||
text_align = "center",
|
text_align = "center",
|
||||||
separator = true,
|
separator = true,
|
||||||
|
12
nvim/lua/plugins/nav/bufremove.lua
Executable file
12
nvim/lua/plugins/nav/bufremove.lua
Executable file
@@ -0,0 +1,12 @@
|
|||||||
|
return {
|
||||||
|
"echasnovski/mini.bufremove",
|
||||||
|
config = function()
|
||||||
|
_G.MiniBufremove = require("mini.bufremove")
|
||||||
|
vim.keymap.set(
|
||||||
|
"n",
|
||||||
|
"<C-x>",
|
||||||
|
":lua MiniBufremove.delete()<CR>",
|
||||||
|
{ silent = true, noremap = true, desc = "Remove buffer" }
|
||||||
|
)
|
||||||
|
end,
|
||||||
|
}
|
18
nvim/lua/plugins/nav/gitsigns.lua
Executable file
18
nvim/lua/plugins/nav/gitsigns.lua
Executable file
@@ -0,0 +1,18 @@
|
|||||||
|
return {
|
||||||
|
-- git buffer integration
|
||||||
|
"lewis6991/gitsigns.nvim",
|
||||||
|
config = function()
|
||||||
|
require("gitsigns").setup({
|
||||||
|
count_chars = { "¹", "²", "³", "⁴", "⁵", "⁶", "⁷", "⁸", "⁹", ["+"] = "⁺" },
|
||||||
|
signs = {
|
||||||
|
add = { show_count = true },
|
||||||
|
change = { show_count = true },
|
||||||
|
delete = { show_count = true },
|
||||||
|
topdelete = { show_count = true },
|
||||||
|
changedelete = { show_count = true },
|
||||||
|
untracked = { show_count = true },
|
||||||
|
},
|
||||||
|
numhl = true,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
@@ -1,7 +1,7 @@
|
|||||||
return {
|
return {
|
||||||
-- open file at previous position
|
-- open file at previous position
|
||||||
'ethanholz/nvim-lastplace',
|
"ethanholz/nvim-lastplace",
|
||||||
config = function()
|
config = function()
|
||||||
require('nvim-lastplace').setup{}
|
require("nvim-lastplace").setup({})
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
@@ -82,7 +82,7 @@ return {
|
|||||||
|
|
||||||
["h"] = actions.parent(), -- Move to left panel
|
["h"] = actions.parent(), -- Move to left panel
|
||||||
["l"] = actions.children(), -- Move to right panel
|
["l"] = actions.children(), -- Move to right panel
|
||||||
["0"] = actions.root(), -- Move to first panel
|
["0"] = actions.root(), -- Move to first panel
|
||||||
|
|
||||||
["<C-S-v>"] = actions.visual_name(), -- Visual selection of name
|
["<C-S-v>"] = actions.visual_name(), -- Visual selection of name
|
||||||
["<C-S-V>"] = actions.visual_scope(), -- Visual selection of scope
|
["<C-S-V>"] = actions.visual_scope(), -- Visual selection of scope
|
||||||
@@ -141,6 +141,6 @@ return {
|
|||||||
custom_hl_group = nil, -- "Visual" or any other hl group to use instead of inverted colors
|
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" })
|
vim.keymap.set("n", "<leader><leader>n", ":Navbuddy<CR>", { silent = true, desc = "open navbuddy menu" })
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
336
nvim/lua/plugins/nav/neotree.lua
Executable file
336
nvim/lua/plugins/nav/neotree.lua
Executable file
@@ -0,0 +1,336 @@
|
|||||||
|
return {
|
||||||
|
"nvim-neo-tree/neo-tree.nvim",
|
||||||
|
dependencies = {
|
||||||
|
"nvim-lua/plenary.nvim",
|
||||||
|
"nvim-tree/nvim-web-devicons", -- not strictly required, but recommended
|
||||||
|
"MunifTanjim/nui.nvim",
|
||||||
|
-- {"3rd/image.nvim", opts = {}}, -- Optional image support in preview window: See `# Preview Mode` for more information
|
||||||
|
},
|
||||||
|
lazy = false, -- neo-tree will lazily load itself
|
||||||
|
config = function()
|
||||||
|
-- Automatically open up
|
||||||
|
require("neo-tree").setup({
|
||||||
|
close_if_last_window = true, -- Close Neo-tree if it is the last window left in the tab
|
||||||
|
popup_border_style = "rounded",
|
||||||
|
enable_git_status = true,
|
||||||
|
enable_diagnostics = true,
|
||||||
|
use_default_mappings = false,
|
||||||
|
open_files_do_not_replace_types = { "terminal", "trouble", "qf" }, -- when opening files, do not use windows containing these filetypes or buftypes
|
||||||
|
open_files_using_relative_paths = false,
|
||||||
|
sort_case_insensitive = false, -- used when sorting files and directories in the tree
|
||||||
|
-- sort_function = nil, -- use a custom function for sorting files and directories in the tree
|
||||||
|
sort_function = function(a, b) -- natural sort
|
||||||
|
if a.type == b.type then
|
||||||
|
local ap = a.path:lower()
|
||||||
|
local bp = b.path:lower()
|
||||||
|
|
||||||
|
if ap == bp then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
for i = 1, math.max(string.len(ap), string.len(bp)), 1 do
|
||||||
|
local l = string.sub(ap, i, -1)
|
||||||
|
local r = string.sub(bp, i, -1)
|
||||||
|
|
||||||
|
if
|
||||||
|
type(tonumber(string.sub(l, 1, 1))) == "number"
|
||||||
|
and type(tonumber(string.sub(r, 1, 1))) == "number"
|
||||||
|
then
|
||||||
|
local l_number = tonumber(string.match(l, "^[0-9]+"))
|
||||||
|
local r_number = tonumber(string.match(r, "^[0-9]+"))
|
||||||
|
|
||||||
|
if l_number ~= r_number then
|
||||||
|
return l_number < r_number
|
||||||
|
end
|
||||||
|
elseif string.sub(l, 1, 1) ~= string.sub(r, 1, 1) then
|
||||||
|
return l < r
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
return a.type < b.type
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
default_component_configs = {
|
||||||
|
container = {
|
||||||
|
enable_character_fade = true,
|
||||||
|
},
|
||||||
|
indent = {
|
||||||
|
indent_size = 2,
|
||||||
|
padding = 1, -- extra padding on left hand side
|
||||||
|
-- indent guides
|
||||||
|
with_markers = true,
|
||||||
|
indent_marker = "│",
|
||||||
|
last_indent_marker = "└",
|
||||||
|
highlight = "NeoTreeIndentMarker",
|
||||||
|
-- expander config, needed for nesting files
|
||||||
|
with_expanders = nil, -- if nil and file nesting is enabled, will enable expanders
|
||||||
|
expander_collapsed = "",
|
||||||
|
expander_expanded = "",
|
||||||
|
expander_highlight = "NeoTreeExpander",
|
||||||
|
},
|
||||||
|
icon = {
|
||||||
|
folder_closed = "",
|
||||||
|
folder_open = "",
|
||||||
|
folder_empty = "",
|
||||||
|
provider = function(icon, node, state) -- default icon provider utilizes nvim-web-devicons if available
|
||||||
|
if node.type == "file" or node.type == "terminal" then
|
||||||
|
local success, web_devicons = pcall(require, "nvim-web-devicons")
|
||||||
|
local name = node.type == "terminal" and "terminal" or node.name
|
||||||
|
if success then
|
||||||
|
local devicon, hl = web_devicons.get_icon(name)
|
||||||
|
icon.text = devicon or icon.text
|
||||||
|
icon.highlight = hl or icon.highlight
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
-- The next two settings are only a fallback, if you use nvim-web-devicons and configure default icons there
|
||||||
|
-- then these will never be used.
|
||||||
|
default = "*",
|
||||||
|
highlight = "NeoTreeFileIcon",
|
||||||
|
},
|
||||||
|
modified = {
|
||||||
|
symbol = "[+]",
|
||||||
|
highlight = "NeoTreeModified",
|
||||||
|
},
|
||||||
|
name = {
|
||||||
|
trailing_slash = true,
|
||||||
|
use_git_status_colors = true,
|
||||||
|
highlight = "NeoTreeFileName",
|
||||||
|
},
|
||||||
|
git_status = {
|
||||||
|
symbols = {
|
||||||
|
-- Change type
|
||||||
|
added = "+", -- or "✚", but this is redundant info if you use git_status_colors on the name
|
||||||
|
modified = "", -- or "", but this is redundant info if you use git_status_colors on the name
|
||||||
|
deleted = "✖", -- this can only be used in the git_status source
|
||||||
|
renamed = "", -- this can only be used in the git_status source
|
||||||
|
-- Status type
|
||||||
|
untracked = "",
|
||||||
|
ignored = "",
|
||||||
|
unstaged = "",
|
||||||
|
staged = "",
|
||||||
|
conflict = "",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- If you don't want to use these columns, you can set `enabled = false` for each of them individually
|
||||||
|
file_size = {
|
||||||
|
enabled = true,
|
||||||
|
width = 12, -- width of the column
|
||||||
|
required_width = 64, -- min width of window required to show this column
|
||||||
|
},
|
||||||
|
type = {
|
||||||
|
enabled = true,
|
||||||
|
width = 10, -- width of the column
|
||||||
|
required_width = 122, -- min width of window required to show this column
|
||||||
|
},
|
||||||
|
last_modified = {
|
||||||
|
enabled = true,
|
||||||
|
width = 20, -- width of the column
|
||||||
|
required_width = 88, -- min width of window required to show this column
|
||||||
|
},
|
||||||
|
created = {
|
||||||
|
enabled = true,
|
||||||
|
width = 20, -- width of the column
|
||||||
|
required_width = 110, -- min width of window required to show this column
|
||||||
|
},
|
||||||
|
symlink_target = {
|
||||||
|
enabled = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- A list of functions, each representing a global custom command
|
||||||
|
-- that will be available in all sources (if not overridden in `opts[source_name].commands`)
|
||||||
|
-- see `:h neo-tree-custom-commands-global`
|
||||||
|
commands = {},
|
||||||
|
window = {
|
||||||
|
position = "left",
|
||||||
|
width = 40,
|
||||||
|
mapping_options = {
|
||||||
|
noremap = true,
|
||||||
|
nowait = true,
|
||||||
|
},
|
||||||
|
mappings = {
|
||||||
|
["<2-LeftMouse>"] = "open",
|
||||||
|
["<cr>"] = "open",
|
||||||
|
["o"] = "open",
|
||||||
|
["<esc>"] = "cancel", -- close preview or floating neo-tree window
|
||||||
|
["P"] = { "toggle_preview", config = { use_float = true, use_image_nvim = true } },
|
||||||
|
-- Read `# Preview Mode` for more information
|
||||||
|
["l"] = "focus_preview",
|
||||||
|
["S"] = "open_split",
|
||||||
|
["v"] = "open_vsplit",
|
||||||
|
["t"] = "open_tabnew",
|
||||||
|
["w"] = "open_with_window_picker",
|
||||||
|
["C"] = "close_node",
|
||||||
|
-- ['C'] = 'close_all_subnodes',
|
||||||
|
["z"] = "close_all_nodes",
|
||||||
|
--["Z"] = "expand_all_nodes",
|
||||||
|
["q"] = "close_window",
|
||||||
|
["R"] = "refresh",
|
||||||
|
["?"] = "show_help",
|
||||||
|
["<"] = "prev_source",
|
||||||
|
[">"] = "next_source",
|
||||||
|
["i"] = "show_file_details",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
nesting_rules = {},
|
||||||
|
filesystem = {
|
||||||
|
scan_mode = "deep",
|
||||||
|
filtered_items = {
|
||||||
|
visible = false, -- when true, they will just be displayed differently than normal items
|
||||||
|
hide_dotfiles = true,
|
||||||
|
hide_gitignored = true,
|
||||||
|
hide_hidden = true, -- only works on Windows for hidden files/directories
|
||||||
|
hide_by_name = {
|
||||||
|
--"node_modules"
|
||||||
|
},
|
||||||
|
hide_by_pattern = { -- uses glob style patterns
|
||||||
|
--"*.meta",
|
||||||
|
--"*/src/*/tsconfig.json",
|
||||||
|
},
|
||||||
|
always_show = { -- remains visible even if other settings would normally hide it
|
||||||
|
--".gitignored",
|
||||||
|
},
|
||||||
|
always_show_by_pattern = { -- uses glob style patterns
|
||||||
|
--".env*",
|
||||||
|
},
|
||||||
|
never_show = { -- remains hidden even if visible is toggled to true, this overrides always_show
|
||||||
|
--".DS_Store",
|
||||||
|
--"thumbs.db"
|
||||||
|
},
|
||||||
|
never_show_by_pattern = { -- uses glob style patterns
|
||||||
|
--".null-ls_*",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
follow_current_file = {
|
||||||
|
enabled = true, -- This will find and focus the file in the active buffer every time
|
||||||
|
-- -- the current file is changed while the tree is open.
|
||||||
|
leave_dirs_open = false, -- `false` closes auto expanded dirs, such as with `:Neotree reveal`
|
||||||
|
},
|
||||||
|
group_empty_dirs = true, -- when true, empty folders will be grouped together
|
||||||
|
hijack_netrw_behavior = "open_default", -- netrw disabled, opening a directory opens neo-tree
|
||||||
|
-- in whatever position is specified in window.position
|
||||||
|
-- "open_current", -- netrw disabled, opening a directory opens within the
|
||||||
|
-- window like netrw would, regardless of window.position
|
||||||
|
-- "disabled", -- netrw left alone, neo-tree does not handle opening dirs
|
||||||
|
use_libuv_file_watcher = true, -- This will use the OS level file watchers to detect changes
|
||||||
|
-- instead of relying on nvim autocmd events.
|
||||||
|
window = {
|
||||||
|
mappings = {
|
||||||
|
["a"] = {
|
||||||
|
"add",
|
||||||
|
-- this command supports BASH style brace expansion ("x{a,b,c}" -> xa,xb,xc). see `:h neo-tree-file-actions` for details
|
||||||
|
-- some commands may take optional config options, see `:h neo-tree-mappings` for details
|
||||||
|
config = {
|
||||||
|
show_path = "none", -- "none", "relative", "absolute"
|
||||||
|
},
|
||||||
|
},
|
||||||
|
["A"] = "add_directory", -- also accepts the optional config.show_path option like "add". this also supports BASH style brace expansion.
|
||||||
|
["d"] = "delete",
|
||||||
|
["r"] = "rename",
|
||||||
|
["b"] = "rename_basename",
|
||||||
|
["y"] = "copy_to_clipboard",
|
||||||
|
["x"] = "cut_to_clipboard",
|
||||||
|
["p"] = "paste_from_clipboard",
|
||||||
|
["c"] = "copy", -- takes text input for destination, also accepts the optional config.show_path option like "add":
|
||||||
|
["m"] = "move", -- takes text input for destination, also accepts the optional config.show_path option like "add".
|
||||||
|
["<bs>"] = "navigate_up",
|
||||||
|
["."] = "set_root",
|
||||||
|
["H"] = "toggle_hidden",
|
||||||
|
["/"] = "fuzzy_finder",
|
||||||
|
["D"] = "fuzzy_finder_directory",
|
||||||
|
["#"] = "fuzzy_sorter", -- fuzzy sorting using the fzy algorithm
|
||||||
|
-- ["D"] = "fuzzy_sorter_directory",
|
||||||
|
["f"] = "filter_on_submit",
|
||||||
|
["<c-x>"] = "clear_filter",
|
||||||
|
["[g"] = "prev_git_modified",
|
||||||
|
["]g"] = "next_git_modified",
|
||||||
|
["s"] = {
|
||||||
|
"show_help",
|
||||||
|
nowait = false,
|
||||||
|
config = { title = "Order by", prefix_key = "s" },
|
||||||
|
},
|
||||||
|
["sc"] = { "order_by_created", nowait = false },
|
||||||
|
["sd"] = { "order_by_diagnostics", nowait = false },
|
||||||
|
["sg"] = { "order_by_git_status", nowait = false },
|
||||||
|
["sm"] = { "order_by_modified", nowait = false },
|
||||||
|
["sn"] = { "order_by_name", nowait = false },
|
||||||
|
["ss"] = { "order_by_size", nowait = false },
|
||||||
|
["st"] = { "order_by_type", nowait = false },
|
||||||
|
-- ['<key>'] = function(state) ... end,
|
||||||
|
},
|
||||||
|
fuzzy_finder_mappings = { -- define keymaps for filter popup window in fuzzy_finder_mode
|
||||||
|
["<down>"] = "move_cursor_down",
|
||||||
|
["<C-n>"] = "move_cursor_down",
|
||||||
|
["<up>"] = "move_cursor_up",
|
||||||
|
["<C-p>"] = "move_cursor_up",
|
||||||
|
["<esc>"] = "close",
|
||||||
|
-- ['<key>'] = function(state, scroll_padding) ... end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
commands = {}, -- Add a custom command or override a global one using the same function name
|
||||||
|
},
|
||||||
|
buffers = {
|
||||||
|
follow_current_file = {
|
||||||
|
enabled = true, -- This will find and focus the file in the active buffer every time
|
||||||
|
-- -- the current file is changed while the tree is open.
|
||||||
|
leave_dirs_open = false, -- `false` closes auto expanded dirs, such as with `:Neotree reveal`
|
||||||
|
},
|
||||||
|
group_empty_dirs = true, -- when true, empty folders will be grouped together
|
||||||
|
show_unloaded = true,
|
||||||
|
window = {
|
||||||
|
mappings = {
|
||||||
|
["d"] = "buffer_delete",
|
||||||
|
["bd"] = "buffer_delete",
|
||||||
|
["<bs>"] = "navigate_up",
|
||||||
|
["."] = "set_root",
|
||||||
|
["s"] = {
|
||||||
|
"show_help",
|
||||||
|
nowait = false,
|
||||||
|
config = { title = "Order by", prefix_key = "s" },
|
||||||
|
},
|
||||||
|
["sc"] = { "order_by_created", nowait = false },
|
||||||
|
["sd"] = { "order_by_diagnostics", nowait = false },
|
||||||
|
["sm"] = { "order_by_modified", nowait = false },
|
||||||
|
["sn"] = { "order_by_name", nowait = false },
|
||||||
|
["ss"] = { "order_by_size", nowait = false },
|
||||||
|
["st"] = { "order_by_type", nowait = false },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
git_status = {
|
||||||
|
window = {
|
||||||
|
position = "float",
|
||||||
|
mappings = {
|
||||||
|
["A"] = "git_add_all",
|
||||||
|
["u"] = "git_unstage_file",
|
||||||
|
["a"] = "git_add_file",
|
||||||
|
["r"] = "git_revert_file",
|
||||||
|
["c"] = "git_commit",
|
||||||
|
["p"] = "git_push",
|
||||||
|
["g"] = "git_commit_and_push",
|
||||||
|
["s"] = {
|
||||||
|
"show_help",
|
||||||
|
nowait = false,
|
||||||
|
config = { title = "Order by", prefix_key = "s" },
|
||||||
|
},
|
||||||
|
["sc"] = { "order_by_created", nowait = false },
|
||||||
|
["sd"] = { "order_by_diagnostics", nowait = false },
|
||||||
|
["sm"] = { "order_by_modified", nowait = false },
|
||||||
|
["sn"] = { "order_by_name", nowait = false },
|
||||||
|
["ss"] = { "order_by_size", nowait = false },
|
||||||
|
["st"] = { "order_by_type", nowait = false },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>e", "<Cmd>Neotree<CR>", { silent = true, desc = "Open Neotree" })
|
||||||
|
vim.keymap.set(
|
||||||
|
"n",
|
||||||
|
"<leader><leader>g",
|
||||||
|
"<Cmd>Neotree source=git_status position=float<CR>",
|
||||||
|
{ silent = true, desc = "Open git view" }
|
||||||
|
)
|
||||||
|
end,
|
||||||
|
}
|
@@ -1,24 +0,0 @@
|
|||||||
return {
|
|
||||||
"nvim-tree/nvim-tree.lua",
|
|
||||||
version = "*",
|
|
||||||
lazy = false,
|
|
||||||
dependencies = {
|
|
||||||
"nvim-tree/nvim-web-devicons",
|
|
||||||
},
|
|
||||||
config = function()
|
|
||||||
vim.g.loaded_netrw = 1
|
|
||||||
vim.g.loaded_netrwPlugin = 1
|
|
||||||
|
|
||||||
require("nvim-tree").setup {
|
|
||||||
sort = {
|
|
||||||
folders_first = true,
|
|
||||||
sorter = "name"
|
|
||||||
},
|
|
||||||
filters = { custom = { "^.git$" } }
|
|
||||||
}
|
|
||||||
|
|
||||||
vim.keymap.set('n', '<leader>e', ":NvimTreeToggle<CR>", {silent = true, desc = "Open nvim-tree"})
|
|
||||||
vim.keymap.set('n', '<leader><leader>h', ":NvimTreeCollapseKeepBuffers<CR>", { silent = true, desc = "Collapse nvim-tree keeping open buffers" })
|
|
||||||
vim.keymap.set('n', '<leader><leader>e', ":NvimTreeFindFile<CR>", {silent = true, desc = "Go to currently open file in buffer or close"})
|
|
||||||
end,
|
|
||||||
}
|
|
@@ -1,64 +1,73 @@
|
|||||||
return {
|
return {
|
||||||
-- fuzzy finder
|
-- fuzzy finder
|
||||||
"nvim-telescope/telescope.nvim",
|
"nvim-telescope/telescope.nvim",
|
||||||
dependencies = {
|
dependencies = {
|
||||||
"nvim-lua/plenary.nvim",
|
"nvim-lua/plenary.nvim",
|
||||||
},
|
},
|
||||||
config = function()
|
config = function()
|
||||||
local builtin = require("telescope.builtin")
|
local builtin = require("telescope.builtin")
|
||||||
local actions = require("telescope.actions")
|
local actions = require("telescope.actions")
|
||||||
local opts = { silent = true }
|
local opts = { silent = true }
|
||||||
|
|
||||||
require("telescope").setup({
|
require("telescope").setup({
|
||||||
defaults = {
|
defaults = {
|
||||||
mappings = {
|
mappings = {
|
||||||
i = {
|
i = {
|
||||||
["<C-j>"] = actions.move_selection_next,
|
["<C-j>"] = actions.move_selection_next,
|
||||||
["<C-k>"] = actions.move_selection_previous,
|
["<C-k>"] = actions.move_selection_previous,
|
||||||
["<C-q>"] = actions.send_selected_to_qflist + actions.open_qflist, -- TODO investigate
|
["<C-q>"] = actions.smart_add_selected_to_qflist,
|
||||||
},
|
["<C-A-q>"] = actions.smart_send_selected_to_qflist,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
})
|
},
|
||||||
|
})
|
||||||
|
|
||||||
opts.desc = "telescope find files"
|
opts.desc = "telescope find files"
|
||||||
vim.keymap.set("n", "<leader>ff", builtin.find_files, opts)
|
vim.keymap.set("n", "<leader>ff", builtin.find_files, opts)
|
||||||
|
|
||||||
opts.desc = "telescope live grep"
|
opts.desc = "telescope live grep"
|
||||||
vim.keymap.set("n", "<leader>fg", builtin.live_grep, opts)
|
vim.keymap.set("n", "<leader>fg", builtin.live_grep, opts)
|
||||||
|
|
||||||
opts.desc = "telescope buffers"
|
opts.desc = "telescope buffers"
|
||||||
vim.keymap.set("n", "<leader>fb", builtin.buffers, opts)
|
vim.keymap.set("n", "<leader>fb", builtin.buffers, opts)
|
||||||
|
|
||||||
opts.desc = "Show nvim functions"
|
opts.desc = "Show nvim functions"
|
||||||
vim.keymap.set("n", "<leader>fh", builtin.help_tags, opts)
|
vim.keymap.set("n", "<leader>fh", builtin.help_tags, opts)
|
||||||
|
|
||||||
-- Recent Commands
|
-- Recent Commands
|
||||||
opts.desc = "Show recent commands"
|
opts.desc = "Show recent commands"
|
||||||
vim.keymap.set('n', '<leader>frc', ':Telescope command_history<CR>', opts)
|
vim.keymap.set("n", "<leader>frc", ":Telescope command_history<CR>", opts)
|
||||||
|
|
||||||
-- Recent Searches
|
-- Recent Searches
|
||||||
opts.desc = "Show recent searches"
|
opts.desc = "Show recent searches"
|
||||||
vim.keymap.set('n', '<leader>frs', ':Telescope search_history<CR>', opts)
|
vim.keymap.set("n", "<leader>frs", ":Telescope search_history<CR>", opts)
|
||||||
|
|
||||||
-- Old Files
|
-- Old Files
|
||||||
opts.desc = "Show recent files"
|
opts.desc = "Show recent files"
|
||||||
vim.keymap.set('n', '<leader>frf', ':Telescope oldfiles<CR>', opts)
|
vim.keymap.set("n", "<leader>frf", ":Telescope oldfiles<CR>", opts)
|
||||||
|
|
||||||
-- Quickfix Items
|
-- Quickfix Items
|
||||||
opts.desc = "Show quickfix items"
|
opts.desc = "Show quickfix items"
|
||||||
vim.keymap.set('n', '<leader>fq', ':Telescope quickfix<CR>', opts)
|
vim.keymap.set("n", "<leader>fq", ":Telescope quickfix<CR>", opts)
|
||||||
|
|
||||||
-- Spell Suggestions
|
-- Spell Suggestions
|
||||||
opts.desc = "Show spell suggestions"
|
opts.desc = "Show spell suggestions"
|
||||||
vim.keymap.set('n', '<leader>fs', ':Telescope spell_suggest<CR>', opts)
|
vim.keymap.set("n", "<leader>fs", ":Telescope spell_suggest<CR>", opts)
|
||||||
|
|
||||||
-- Diagnostics
|
-- Diagnostics
|
||||||
opts.desc = "Show diagnostics"
|
opts.desc = "Show diagnostics"
|
||||||
vim.keymap.set('n', '<leader>fd', ':Telescope diagnostics<CR>', opts)
|
vim.keymap.set("n", "<leader>fd", ":Telescope diagnostics<CR>", opts)
|
||||||
|
|
||||||
|
-- Notifications
|
||||||
|
opts.desc = "Show notifications"
|
||||||
|
vim.keymap.set("n", "<leader>fn", ":Telescope notify<CR>", opts)
|
||||||
|
|
||||||
-- Implementations
|
-- Implementations
|
||||||
opts.desc = "Show implementations"
|
opts.desc = "Show implementations"
|
||||||
vim.keymap.set('n', '<leader>fi', ':Telescope lsp_implementations<CR>', opts)
|
vim.keymap.set("n", "<leader>fi", ":Telescope lsp_implementations<CR>", opts)
|
||||||
end,
|
|
||||||
|
-- quickfix
|
||||||
|
opts.desc = "Show quickfix list"
|
||||||
|
vim.keymap.set("n", "<leader>fq", ":Telescope quickfix<CR>", opts)
|
||||||
|
end,
|
||||||
}
|
}
|
||||||
|
@@ -1,17 +1,17 @@
|
|||||||
return {
|
return {
|
||||||
-- literally the name, quick term toggle
|
-- literally the name, quick term toggle
|
||||||
"akinsho/toggleterm.nvim",
|
"akinsho/toggleterm.nvim",
|
||||||
version = "*",
|
version = "*",
|
||||||
config = function()
|
config = function()
|
||||||
require("toggleterm").setup({
|
require("toggleterm").setup({
|
||||||
insert_mappings = false,
|
insert_mappings = false,
|
||||||
terminal_mappings = false,
|
terminal_mappings = false,
|
||||||
open_mapping = "<leader>t",
|
open_mapping = "<leader>t",
|
||||||
direction = "float",
|
direction = "float",
|
||||||
float_opts = {
|
float_opts = {
|
||||||
border = "curved",
|
border = "curved",
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
vim.keymap.set("t", "<S-Esc>", [[<cmd>ToggleTerm<CR>]], {}) -- close terminal wih esc
|
vim.keymap.set("t", "<S-Esc>", [[<cmd>ToggleTerm<CR>]], {}) -- close terminal wih esc
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
@@ -6,7 +6,5 @@ return {
|
|||||||
vim.o.timeout = true
|
vim.o.timeout = true
|
||||||
vim.o.timeoutlen = 500
|
vim.o.timeoutlen = 500
|
||||||
end,
|
end,
|
||||||
opts = {
|
opts = {},
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -1,9 +1,9 @@
|
|||||||
return {
|
return {
|
||||||
-- colorizes colors in code
|
-- colorizes colors in code
|
||||||
'NvChad/nvim-colorizer.lua' ,
|
"NvChad/nvim-colorizer.lua",
|
||||||
--cmd = 'ColorizerToggle',
|
--cmd = 'ColorizerToggle',
|
||||||
config = function ()
|
config = function()
|
||||||
require("colorizer").setup {
|
require("colorizer").setup({
|
||||||
filetypes = { "*" },
|
filetypes = { "*" },
|
||||||
user_default_options = {
|
user_default_options = {
|
||||||
RGB = true, -- #RGB hex codes - #FCE
|
RGB = true, -- #RGB hex codes - #FCE
|
||||||
@@ -19,16 +19,16 @@ return {
|
|||||||
mode = "background", -- Set the display mode.
|
mode = "background", -- Set the display mode.
|
||||||
-- Available methods are false / true / "normal" / "lsp" / "both"
|
-- Available methods are false / true / "normal" / "lsp" / "both"
|
||||||
-- True is same as normal
|
-- True is same as normal
|
||||||
tailwind = false, -- Enable tailwind colors
|
tailwind = false, -- Enable tailwind colors
|
||||||
-- parsers can contain values used in |user_default_options|
|
-- parsers can contain values used in |user_default_options|
|
||||||
sass = { enable = false, parsers = { "css" }, }, -- Enable sass colors
|
sass = { enable = false, parsers = { "css" } }, -- Enable sass colors
|
||||||
virtualtext = "■",
|
virtualtext = "■",
|
||||||
-- update color values even if buffer is not focused
|
-- update color values even if buffer is not focused
|
||||||
-- example use: cmp_menu, cmp_docs
|
-- example use: cmp_menu, cmp_docs
|
||||||
always_update = false
|
always_update = false,
|
||||||
},
|
},
|
||||||
-- all the sub-options of filetypes apply to buftypes
|
-- all the sub-options of filetypes apply to buftypes
|
||||||
buftypes = {},
|
buftypes = {},
|
||||||
}
|
})
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
@@ -13,44 +13,44 @@ return {
|
|||||||
functions = "italic",
|
functions = "italic",
|
||||||
keywords = "italic",
|
keywords = "italic",
|
||||||
types = "italic",
|
types = "italic",
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
palettes = {
|
palettes = {
|
||||||
all = {
|
all = {
|
||||||
black = Shade.new("#404944", 0.15, -0.15),
|
black = Shade.new("#404944", 0.15, -0.15),
|
||||||
gray = Shade.new("#505050", 0.15, -0.15),
|
gray = Shade.new("#505050", 0.15, -0.15),
|
||||||
white = Shade.new("#dee4df", 0.15, -0.15),
|
white = Shade.new("#dee4df", 0.15, -0.15),
|
||||||
red = Shade.new("#ff6060", 0.15, -0.15),
|
red = Shade.new("#ff6060", 0.15, -0.15),
|
||||||
darkred = Shade.new("#903030", 0.15, -0.15),
|
darkred = Shade.new("#903030", 0.15, -0.15),
|
||||||
strongred = Shade.new("#bb0000", 0.15, -0.15),
|
strongred = Shade.new("#bb0000", 0.15, -0.15),
|
||||||
orange = Shade.new("#ce8c14", 0.15, -0.15),
|
orange = Shade.new("#ce8c14", 0.15, -0.15),
|
||||||
green = Shade.new("#a3d397", 0.10, -0.15),
|
green = Shade.new("#a3d397", 0.10, -0.15),
|
||||||
darkgreen = Shade.new("#005602", 0.10, -0.15),
|
darkgreen = Shade.new("#005602", 0.10, -0.15),
|
||||||
darkyellow = Shade.new("#dfd100", 0.10, -0.15),
|
darkyellow = Shade.new("#dfd100", 0.10, -0.15),
|
||||||
yellow = Shade.new("#e3c46d", 0.15, -0.15),
|
yellow = Shade.new("#e3c46d", 0.15, -0.15),
|
||||||
darkblue = Shade.new("#1010cc", 0.15, -0.15),
|
darkblue = Shade.new("#1010cc", 0.15, -0.15),
|
||||||
blue = Shade.new("#7070dd", 0.15, -0.15),
|
blue = Shade.new("#7070dd", 0.15, -0.15),
|
||||||
magenta = Shade.new("#C02490", 0.30, -0.15),
|
magenta = Shade.new("#C02490", 0.30, -0.15),
|
||||||
pink = Shade.new("#ff82c2", 0.15, -0.15),
|
pink = Shade.new("#ff82c2", 0.15, -0.15),
|
||||||
purple = Shade.new("#761464", 0.15, -0.15),
|
purple = Shade.new("#761464", 0.15, -0.15),
|
||||||
cyan = Shade.new("#7ac9ff", 0.15, -0.15),
|
cyan = Shade.new("#7ac9ff", 0.15, -0.15),
|
||||||
lightblue = Shade.new("#5c77ff", 0.15, -0.15),
|
lightblue = Shade.new("#5c77ff", 0.15, -0.15),
|
||||||
softblue = Shade.new("#10ddff", 0.15, -0.15),
|
softblue = Shade.new("#10ddff", 0.15, -0.15),
|
||||||
brown = Shade.new("#553200", 0.15, -0.15),
|
brown = Shade.new("#553200", 0.15, -0.15),
|
||||||
|
|
||||||
bg0 = "#0f1512", -- Dark bg (status line and float)
|
bg0 = "#0f1512", -- Dark bg (status line and float)
|
||||||
bg1 = "#0f1512", -- Default bg
|
bg1 = "#0f1512", -- Default bg
|
||||||
bg2 = "#1b211e", -- Lighter bg (colorcolm folds)
|
bg2 = "#1b211e", -- Lighter bg (colorcolm folds)
|
||||||
bg3 = "#252b28", -- Lighter bg (cursor line)
|
bg3 = "#252b28", -- Lighter bg (cursor line)
|
||||||
bg4 = "#303633", -- Conceal, border fg
|
bg4 = "#303633", -- Conceal, border fg
|
||||||
|
|
||||||
fg0 = "#dee4df", -- Lighter fg
|
fg0 = "#dee4df", -- Lighter fg
|
||||||
fg1 = "#dee4df", -- Default fg
|
fg1 = "#dee4df", -- Default fg
|
||||||
fg2 = "#dee4df", -- Darker fg (status line)
|
fg2 = "#dee4df", -- Darker fg (status line)
|
||||||
fg3 = "#89938d", -- Darker fg (line numbers, fold colums)
|
fg3 = "#89938d", -- Darker fg (line numbers, fold colums)
|
||||||
|
|
||||||
sel0 = "#404944", -- Popup bg, visual selection
|
sel0 = "#404944", -- Popup bg, visual selection
|
||||||
sel1 = "#00513b", -- Popup sel bg, search bg
|
sel1 = "#00513b", -- Popup sel bg, search bg
|
||||||
|
|
||||||
comment = "#89938d",
|
comment = "#89938d",
|
||||||
},
|
},
|
||||||
@@ -61,7 +61,7 @@ return {
|
|||||||
comment = "comment",
|
comment = "comment",
|
||||||
bracket = "darkyellow",
|
bracket = "darkyellow",
|
||||||
builtin0 = "softblue",
|
builtin0 = "softblue",
|
||||||
builtin1 = "sel0",
|
builtin1 = "brown",
|
||||||
builtin2 = "sel1",
|
builtin2 = "sel1",
|
||||||
conditional = "darkblue",
|
conditional = "darkblue",
|
||||||
const = "gray",
|
const = "gray",
|
||||||
@@ -77,7 +77,7 @@ return {
|
|||||||
statement = "magenta",
|
statement = "magenta",
|
||||||
string = "cyan",
|
string = "cyan",
|
||||||
type = "red",
|
type = "red",
|
||||||
variable = "orange"
|
variable = "orange",
|
||||||
},
|
},
|
||||||
diag = {
|
diag = {
|
||||||
error = "darkred",
|
error = "darkred",
|
||||||
@@ -91,44 +91,44 @@ return {
|
|||||||
warn = "#a16b00",
|
warn = "#a16b00",
|
||||||
info = "cyan",
|
info = "cyan",
|
||||||
hint = "bg3",
|
hint = "bg3",
|
||||||
ok = "green";
|
ok = "green",
|
||||||
},
|
},
|
||||||
diff = {
|
diff = {
|
||||||
add = "darkgreen",
|
add = "darkgreen",
|
||||||
delete = "darkred",
|
delete = "darkred",
|
||||||
changed = "lightblue",
|
changed = "lightblue",
|
||||||
text = "fg0"
|
text = "fg0",
|
||||||
},
|
},
|
||||||
git = {
|
git = {
|
||||||
add = "darkgreen",
|
add = "darkgreen",
|
||||||
removed = "darkred",
|
removed = "darkred",
|
||||||
changed = "lightblue",
|
changed = "lightblue",
|
||||||
conflict = "orange",
|
conflict = "orange",
|
||||||
ignored = "gray"
|
ignored = "gray",
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
groups = {
|
groups = {
|
||||||
all = {
|
all = {
|
||||||
Cursor = { fg = "palette.white", bg = "palette.lightblue" }, -- character under the cursor
|
Cursor = { fg = "palette.white", bg = "palette.lightblue" }, -- character under the cursor
|
||||||
WinSeparator = { fg = "palette.bg2" }, -- the column separating vertically split windows
|
WinSeparator = { fg = "palette.bg2" }, -- the column separating vertically split windows
|
||||||
EndOfBuffer = { link = "WinSeparator" }, -- filler lines (~) after the end of the buffer. By default, this is highlighted like |hl-NonText|.
|
EndOfBuffer = { link = "WinSeparator" }, -- filler lines (~) after the end of the buffer. By default, this is highlighted like |hl-NonText|.
|
||||||
CursorLine = { bg = "palette.bg1" },
|
CursorLine = { bg = "palette.bg1" },
|
||||||
CursorLineNr = { fg = "palette.cyan", style = "bold" }, -- Like LineNr when 'cursorline' or 'relativenumber' is set for the cursor line.
|
CursorLineNr = { fg = "palette.cyan", style = "bold" }, -- Like LineNr when 'cursorline' or 'relativenumber' is set for the cursor line.
|
||||||
Search = { fg = "palette.lightblue", bg = "#00513b" }, -- Last search pattern highlighting (see 'hlsearch'). Also used for similar items that need to stand out.
|
Search = { fg = "palette.lightblue", bg = "#00513b" }, -- Last search pattern highlighting (see 'hlsearch'). Also used for similar items that need to stand out.
|
||||||
IncSearch = { fg = "palette.lightblue", bg = "#1a6b51" }, -- 'incsearch' highlighting; also used for the text replaced with ":s///c"
|
IncSearch = { fg = "palette.lightblue", bg = "#1a6b51" }, -- 'incsearch' highlighting; also used for the text replaced with ":s///c"
|
||||||
ModeMsg = { fg = "palette.fg3", style = "bold" }, -- 'showmode' message (e.g., "-- INSERT --")
|
ModeMsg = { fg = "palette.fg3", style = "bold" }, -- 'showmode' message (e.g., "-- INSERT --")
|
||||||
|
|
||||||
NvimTreeRootFolder = { fg = "palette.lightblue", style = "bold" },
|
NvimTreeRootFolder = { fg = "palette.lightblue", style = "bold" },
|
||||||
NvimTreeFolderName = { fg = "palette.lightblue" },
|
NvimTreeFolderName = { fg = "palette.lightblue" },
|
||||||
NvimTreeFolderIcon = { fg = "palette.lightblue" },
|
NvimTreeFolderIcon = { fg = "palette.lightblue" },
|
||||||
NvimTreeOpenedFolderName = { fg = "palette.lightblue" },
|
NvimTreeOpenedFolderName = { fg = "palette.lightblue" },
|
||||||
NvimTreeSymlinkFolderName = { fg = "palette.magenta" },
|
NvimTreeSymlinkFolderName = { fg = "palette.magenta" },
|
||||||
|
|
||||||
NvimTreeExecFile = { fg = "palette.red" },
|
NvimTreeExecFile = { fg = "palette.red" },
|
||||||
NvimTreeImageFile = { fg = "palette.white" },
|
NvimTreeImageFile = { fg = "palette.white" },
|
||||||
NvimTreeSpecialFile = { fg = "palette.yellow" },
|
NvimTreeSpecialFile = { fg = "palette.yellow" },
|
||||||
NvimTreeSymlink = { fg = "palette.magenta" },
|
NvimTreeSymlink = { fg = "palette.magenta" },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
@@ -45,17 +45,17 @@ return {
|
|||||||
local opts = { silent = true }
|
local opts = { silent = true }
|
||||||
|
|
||||||
opts.desc = "comment text box"
|
opts.desc = "comment text box"
|
||||||
vim.keymap.set({"n", "v"}, "<leader>cb", ":CBccbox<CR>", opts)
|
vim.keymap.set({ "n", "v" }, "<leader>cb", ":CBccbox<CR>", opts)
|
||||||
opts.desc = "comment text line"
|
opts.desc = "comment text line"
|
||||||
vim.keymap.set({"n", "v"}, "<leader>cl", ":CBllline<CR>", opts)
|
vim.keymap.set({ "n", "v" }, "<leader>cl", ":CBllline<CR>", opts)
|
||||||
opts.desc = "comment line"
|
opts.desc = "comment line"
|
||||||
vim.keymap.set({"n", "v"}, "<leader>ce", ":CBline<CR>", opts)
|
vim.keymap.set({ "n", "v" }, "<leader>ce", ":CBline<CR>", opts)
|
||||||
opts.desc = "comment highlight"
|
opts.desc = "comment highlight"
|
||||||
vim.keymap.set({"n", "v"}, "<leader>ch", ":CBlcbox18<CR>", opts)
|
vim.keymap.set({ "n", "v" }, "<leader>ch", ":CBlcbox18<CR>", opts)
|
||||||
|
|
||||||
opts.desc = "delete comment box"
|
opts.desc = "delete comment box"
|
||||||
vim.keymap.set({"n", "v"}, "<leader>cd", ":CBd<CR>", opts)
|
vim.keymap.set({ "n", "v" }, "<leader>cd", ":CBd<CR>", opts)
|
||||||
opts.desc = "yank comment box contents"
|
opts.desc = "yank comment box contents"
|
||||||
vim.keymap.set({"n", "v"}, "<leader>cy", ":CBy<CR>", opts)
|
vim.keymap.set({ "n", "v" }, "<leader>cy", ":CBy<CR>", opts)
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
return {
|
return {
|
||||||
-- add comment keybinds
|
-- add comment keybinds
|
||||||
'numToStr/Comment.nvim',
|
"numToStr/Comment.nvim",
|
||||||
opts = {},
|
opts = {},
|
||||||
lazy = false,
|
lazy = false,
|
||||||
config = function()
|
config = function()
|
||||||
require('Comment').setup()
|
require("Comment").setup()
|
||||||
require('Comment.ft').set('hyprlang', '#%s')
|
require("Comment.ft").set("hyprlang", "#%s")
|
||||||
end
|
end,
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
return {
|
return {
|
||||||
-- prettier prompts
|
-- prettier prompts
|
||||||
'stevearc/dressing.nvim',
|
"stevearc/dressing.nvim",
|
||||||
event = 'VeryLazy',
|
event = "VeryLazy",
|
||||||
}
|
}
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
return {
|
return {
|
||||||
-- status line
|
-- status line
|
||||||
'nvim-lualine/lualine.nvim',
|
"nvim-lualine/lualine.nvim",
|
||||||
dependencies = { 'nvim-tree/nvim-web-devicons' },
|
dependencies = { "nvim-tree/nvim-web-devicons" },
|
||||||
config = function()
|
config = function()
|
||||||
local function getWords()
|
local function getWords()
|
||||||
local wc = vim.api.nvim_eval("wordcount()")
|
local wc = vim.api.nvim_eval("wordcount()")
|
||||||
@@ -11,45 +11,45 @@ return {
|
|||||||
return wc["words"]
|
return wc["words"]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
require('lualine').setup {
|
require("lualine").setup({
|
||||||
options = {
|
options = {
|
||||||
icons_enabled = true,
|
icons_enabled = true,
|
||||||
theme = "auto",
|
theme = "auto",
|
||||||
component_separators = { left = '', right = ''},
|
component_separators = { left = "", right = "" },
|
||||||
section_separators = { left = '', right = ''},
|
section_separators = { left = "", right = "" },
|
||||||
disabled_filetypes = {
|
disabled_filetypes = {
|
||||||
statusline = {},
|
statusline = {},
|
||||||
winbar = {},
|
winbar = {},
|
||||||
},
|
},
|
||||||
ignore_focus = { 'NvimTree' },
|
ignore_focus = { "neo-tree" },
|
||||||
always_divide_middle = true,
|
always_divide_middle = true,
|
||||||
globalstatus = false,
|
globalstatus = false,
|
||||||
refresh = {
|
refresh = {
|
||||||
statusline = 1000,
|
statusline = 1000,
|
||||||
tabline = 1000,
|
tabline = 1000,
|
||||||
winbar = 1000,
|
winbar = 1000,
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
sections = {
|
sections = {
|
||||||
lualine_a = { { 'mode', separator = { left = '', right = '' }, } },
|
lualine_a = { { "mode", separator = { left = "", right = "" } } },
|
||||||
lualine_b = {'branch', 'diff', 'diagnostics'},
|
lualine_b = { "branch", "diff", "diagnostics" },
|
||||||
lualine_c = {'filename'},
|
lualine_c = { "filename" },
|
||||||
lualine_x = { getWords, 'encoding', 'fileformat', 'filetype'},
|
lualine_x = { getWords, "encoding", "fileformat", "filetype" },
|
||||||
lualine_y = { { 'progress', left_padding=0 } },
|
lualine_y = { { "progress", left_padding = 0 } },
|
||||||
lualine_z = { { 'location', separator = { left = '', right = '' }, padding=0} }
|
lualine_z = { { "location", separator = { left = "", right = "" }, padding = 0 } },
|
||||||
},
|
},
|
||||||
inactive_sections = {
|
inactive_sections = {
|
||||||
lualine_a = {},
|
lualine_a = {},
|
||||||
lualine_b = {},
|
lualine_b = {},
|
||||||
lualine_c = {'filename'},
|
lualine_c = { "filename" },
|
||||||
lualine_x = {'location'},
|
lualine_x = { "location" },
|
||||||
lualine_y = {},
|
lualine_y = {},
|
||||||
lualine_z = {}
|
lualine_z = {},
|
||||||
},
|
},
|
||||||
tabline = {},
|
tabline = {},
|
||||||
winbar = {},
|
winbar = {},
|
||||||
inactive_winbar = {},
|
inactive_winbar = {},
|
||||||
extensions = {}
|
extensions = {},
|
||||||
}
|
})
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
38
nvim/lua/plugins/style/noice.lua
Executable file
38
nvim/lua/plugins/style/noice.lua
Executable file
@@ -0,0 +1,38 @@
|
|||||||
|
return {
|
||||||
|
"folke/noice.nvim",
|
||||||
|
event = "VeryLazy",
|
||||||
|
opts = {
|
||||||
|
-- add any options here
|
||||||
|
},
|
||||||
|
dependencies = {
|
||||||
|
-- if you lazy-load any plugin below, make sure to add proper `module="..."` entries
|
||||||
|
"MunifTanjim/nui.nvim",
|
||||||
|
"rcarriga/nvim-notify",
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
require("notify").setup({
|
||||||
|
max_width = 80,
|
||||||
|
minimum_width = 30,
|
||||||
|
render = "wrapped-default", -- default, minimal, simple, compact, wrapped-compact or wrapped-default
|
||||||
|
stages = "slide", -- fade_in_slide_out, fade, slide, static
|
||||||
|
})
|
||||||
|
require("noice").setup({
|
||||||
|
lsp = {
|
||||||
|
-- override markdown rendering so that **cmp** and other plugins use **Treesitter**
|
||||||
|
override = {
|
||||||
|
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
|
||||||
|
["vim.lsp.util.stylize_markdown"] = true,
|
||||||
|
["cmp.entry.get_documentation"] = true, -- requires hrsh7th/nvim-cmp
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- you can enable a preset for easier configuration
|
||||||
|
presets = {
|
||||||
|
bottom_search = false, -- use a classic bottom cmdline for search
|
||||||
|
command_palette = true, -- position the cmdline and popupmenu together
|
||||||
|
long_message_to_split = true, -- long messages will be sent to a split
|
||||||
|
inc_rename = false, -- enables an input dialog for inc-rename.nvim
|
||||||
|
lsp_doc_border = false, -- add a border to hover docs and signature help
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
@@ -11,39 +11,39 @@ return {
|
|||||||
type = "text",
|
type = "text",
|
||||||
align = "center",
|
align = "center",
|
||||||
content = {
|
content = {
|
||||||
[[]],
|
[[]],
|
||||||
[[]],
|
[[]],
|
||||||
[[]],
|
[[]],
|
||||||
[[ ]],
|
[[ ]],
|
||||||
[[ ██████ █████ █████ █████ ███ ]],
|
[[ ██████ █████ █████ █████ ███ ]],
|
||||||
[[ ░░██████ ░░███ ░░███ ░░███ ░░░ ]],
|
[[ ░░██████ ░░███ ░░███ ░░███ ░░░ ]],
|
||||||
[[ ░███░███ ░███ ██████ ██████ ░███ ░███ ████ █████████████ ]],
|
[[ ░███░███ ░███ ██████ ██████ ░███ ░███ ████ █████████████ ]],
|
||||||
[[ ░███░░███░███ ███░░███ ███░░███ ░███ ░███ ░░███ ░░███░░███░░███ ]],
|
[[ ░███░░███░███ ███░░███ ███░░███ ░███ ░███ ░░███ ░░███░░███░░███ ]],
|
||||||
[[ ░███ ░░██████ ░███████ ░███ ░███ ░░███ ███ ░███ ░███ ░███ ░███ ]],
|
[[ ░███ ░░██████ ░███████ ░███ ░███ ░░███ ███ ░███ ░███ ░███ ░███ ]],
|
||||||
[[ ░███ ░░█████ ░███░░░ ░███ ░███ ░░░█████░ ░███ ░███ ░███ ░███ ]],
|
[[ ░███ ░░█████ ░███░░░ ░███ ░███ ░░░█████░ ░███ ░███ ░███ ░███ ]],
|
||||||
[[ █████ ░░█████░░██████ ░░██████ ░░███ █████ █████░███ █████ ]],
|
[[ █████ ░░█████░░██████ ░░██████ ░░███ █████ █████░███ █████ ]],
|
||||||
[[ ░░░░░ ░░░░░ ░░░░░░ ░░░░░░ ░░░ ░░░░░ ░░░░░ ░░░ ░░░░░ ]],
|
[[ ░░░░░ ░░░░░ ░░░░░░ ░░░░░░ ░░░ ░░░░░ ░░░░░ ░░░ ░░░░░ ]],
|
||||||
[[ ]],
|
[[ ]],
|
||||||
},
|
},
|
||||||
highlight = "String",
|
highlight = "String",
|
||||||
default_color = "#010155"
|
default_color = "#010155",
|
||||||
},
|
},
|
||||||
|
|
||||||
quotes = {
|
quotes = {
|
||||||
type = "text",
|
type = "text",
|
||||||
align = "center",
|
align = "center",
|
||||||
content = function ()
|
content = function()
|
||||||
local handle = io.popen("pwd")
|
local handle = io.popen("pwd")
|
||||||
if handle then
|
if handle then
|
||||||
local cwd = handle:read("*l")
|
local cwd = handle:read("*l")
|
||||||
handle:close()
|
handle:close()
|
||||||
return {"Currently in " .. cwd}
|
return { "Currently in " .. cwd }
|
||||||
else
|
else
|
||||||
return {"Error running command"}
|
return { "Error running command" }
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
highlight = "String",
|
highlight = "String",
|
||||||
default_color = "#FFFFFF"
|
default_color = "#FFFFFF",
|
||||||
},
|
},
|
||||||
|
|
||||||
old = {
|
old = {
|
||||||
@@ -58,12 +58,12 @@ return {
|
|||||||
},
|
},
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
mapping_keys = false;
|
mapping_keys = false,
|
||||||
},
|
},
|
||||||
|
|
||||||
colors = {
|
colors = {
|
||||||
background = "#000000",
|
background = "#000000",
|
||||||
folded_section = "#100000"
|
folded_section = "#100000",
|
||||||
},
|
},
|
||||||
|
|
||||||
mappings = {
|
mappings = {
|
||||||
@@ -71,7 +71,7 @@ return {
|
|||||||
open_file = "<CR>",
|
open_file = "<CR>",
|
||||||
},
|
},
|
||||||
|
|
||||||
parts = {"title", "quotes", "old"}
|
parts = { "title", "quotes", "old" },
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
@@ -47,10 +47,16 @@ return {
|
|||||||
dapui.close()
|
dapui.close()
|
||||||
end
|
end
|
||||||
|
|
||||||
vim.fn.sign_define("DapBreakpoint", { text = "●", texthl = "DapBreakpoint", linehl = "", numhl = ""})
|
vim.fn.sign_define("DapBreakpoint", { text = "●", texthl = "DapBreakpoint", linehl = "", numhl = "" })
|
||||||
vim.fn.sign_define("DapBreakpointCondition", { text = "●", texthl = "DapBreakpointCondition", linehl = "", numhl = ""})
|
vim.fn.sign_define(
|
||||||
vim.fn.sign_define("DapLogPoint", { text = "◆", texthl = "DapLogPoint", linehl = "", numhl = ""})
|
"DapBreakpointCondition",
|
||||||
vim.fn.sign_define('DapStopped', { text='', texthl='DapStopped', linehl='DapStopped', numhl= 'DapStopped' })
|
{ text = "●", texthl = "DapBreakpointCondition", linehl = "", numhl = "" }
|
||||||
|
)
|
||||||
|
vim.fn.sign_define("DapLogPoint", { text = "◆", texthl = "DapLogPoint", linehl = "", numhl = "" })
|
||||||
|
vim.fn.sign_define(
|
||||||
|
"DapStopped",
|
||||||
|
{ text = "", texthl = "DapStopped", linehl = "DapStopped", numhl = "DapStopped" }
|
||||||
|
)
|
||||||
|
|
||||||
dap.configurations.python = {
|
dap.configurations.python = {
|
||||||
{
|
{
|
||||||
@@ -91,7 +97,7 @@ return {
|
|||||||
else
|
else
|
||||||
cb({
|
cb({
|
||||||
type = "executable",
|
type = "executable",
|
||||||
command = vim.fn.stdpath("data") .. '/mason/packages/debugpy/venv/bin/python',
|
command = vim.fn.stdpath("data") .. "/mason/packages/debugpy/venv/bin/python",
|
||||||
args = { "-m", "debugpy.adapter" },
|
args = { "-m", "debugpy.adapter" },
|
||||||
options = {
|
options = {
|
||||||
source_filetype = "python",
|
source_filetype = "python",
|
||||||
|
@@ -1,70 +1,67 @@
|
|||||||
-- plugins/neotest_config.lua
|
|
||||||
return {
|
return {
|
||||||
-- Load neotest
|
"nvim-neotest/neotest",
|
||||||
{
|
dependencies = {
|
||||||
"nvim-neotest/neotest",
|
-- For JavaScript, TypeScript (Vite)
|
||||||
dependencies = {
|
"marilari88/neotest-vitest",
|
||||||
-- For JavaScript, TypeScript (Vite)
|
-- For Python
|
||||||
"marilari88/neotest-vitest",
|
"nvim-neotest/neotest-python",
|
||||||
-- For Python
|
-- For C, C++, Rust
|
||||||
"nvim-neotest/neotest-python",
|
"orjangj/neotest-ctest",
|
||||||
-- For C, C++, Rust
|
"rouge8/neotest-rust",
|
||||||
"orjangj/neotest-ctest",
|
},
|
||||||
"rouge8/neotest-rust",
|
config = function()
|
||||||
},
|
local neotest = require("neotest")
|
||||||
config = function()
|
local keymap = vim.keymap.set
|
||||||
local neotest = require("neotest")
|
|
||||||
local keymap = vim.keymap.set
|
|
||||||
|
|
||||||
-- General setup for neotest
|
-- General setup for neotest
|
||||||
neotest.setup({
|
neotest.setup({
|
||||||
adapters = {
|
adapters = {
|
||||||
-- Vite Adapter for JavaScript/TypeScript
|
-- Vite Adapter for JavaScript/TypeScript
|
||||||
require("neotest-vitest"),
|
require("neotest-vitest"),
|
||||||
-- Python Adapter
|
-- Python Adapter
|
||||||
require("neotest-python"),
|
require("neotest-python"),
|
||||||
-- C/C++ Adapter
|
-- C/C++ Adapter
|
||||||
require("neotest-ctest"),
|
require("neotest-ctest"),
|
||||||
-- Rust Adapter
|
-- Rust Adapter
|
||||||
require("neotest-rust"),
|
require("neotest-rust"),
|
||||||
},
|
-- Java Adapter
|
||||||
})
|
-- require("neotest-java")
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
-- Keybinding Setup
|
-- Keybinding Setup
|
||||||
local opts = { noremap = true, silent = true }
|
local opts = { noremap = true, silent = true }
|
||||||
|
|
||||||
-- Run nearest test
|
-- Run nearest test
|
||||||
opts.desc = "Run nearest test"
|
opts.desc = "Run nearest test"
|
||||||
keymap("n", "<leader><leader>tr", '<cmd>lua require("neotest").run.run()<cr>', opts)
|
keymap("n", "<leader><leader>tr", '<cmd>lua require("neotest").run.run()<cr>', opts)
|
||||||
|
|
||||||
-- Run all tests in the current file
|
-- Run all tests in the current file
|
||||||
opts.desc = "Run all tests in current file"
|
opts.desc = "Run all tests in current file"
|
||||||
keymap("n", "<leader><leader>tf", '<cmd>lua require("neotest").run.run(vim.fn.expand("%"))', opts)
|
keymap("n", "<leader><leader>tf", '<cmd>lua require("neotest").run.run(vim.fn.expand("%"))<cr>', opts)
|
||||||
|
|
||||||
-- Run all tests in the entire project
|
-- Stop running tests
|
||||||
opts.desc = "Run all tests in project"
|
opts.desc = "Stop tests"
|
||||||
keymap("n", "<leader><leader>ta", "<cmd>Neotest run<cr>", opts)
|
keymap("n", "<leader><leader>ts", '<cmd>lua require("neotest").run.stop()<cr>', opts)
|
||||||
|
|
||||||
-- Stop running tests
|
opts.desc = "Attach to nearest test"
|
||||||
opts.desc = "Stop tests"
|
keymap("n", "<leader><leader>ta", '<cmd>lua require("neotest").run.attach()<cr>', opts)
|
||||||
keymap("n", "<leader><leader>ts", "<cmd>Neotest stop<cr>", opts)
|
|
||||||
|
|
||||||
opts.desc = "Jump to next test"
|
opts.desc = "Jump to next test"
|
||||||
keymap("n", "<leader><leader>tn", "<cmd>Neotest jump next<cr>", opts)
|
keymap("n", "<leader><leader>tn", "<cmd>Neotest jump next<cr>", opts)
|
||||||
|
|
||||||
opts.desc = "Jump to previous test"
|
opts.desc = "Jump to previous test"
|
||||||
keymap("n", "<leader><leader>tp", "<cmd>Neotest jump prev<cr>", opts)
|
keymap("n", "<leader><leader>tp", "<cmd>Neotest jump prev<cr>", opts)
|
||||||
|
|
||||||
-- Show test summary
|
-- Show test summary
|
||||||
opts.desc = "Show neotest test summary"
|
opts.desc = "Show neotest test summary"
|
||||||
keymap("n", "<leader><leader>tv", "<cmd>Neotest summary<cr>", opts)
|
keymap("n", "<leader><leader>tv", "<cmd>Neotest summary<cr>", opts)
|
||||||
|
|
||||||
-- Toggle the Neotest panel
|
-- Toggle the Neotest panel
|
||||||
opts.desc = "Show neotest output"
|
opts.desc = "Show neotest output"
|
||||||
keymap("n", "<leader><leader>to", "<cmd>Neotest output<cr>", opts)
|
keymap("n", "<leader><leader>to", "<cmd>Neotest output<cr>", opts)
|
||||||
|
|
||||||
opts.desc = "Show neotest output as panel"
|
opts.desc = "Show neotest output as panel"
|
||||||
keymap("n", "<leader><leader>tn", "<cmd>Neotest output-panel<cr>", opts)
|
keymap("n", "<leader><leader>tn", "<cmd>Neotest output-panel<cr>", opts)
|
||||||
end,
|
end,
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
@@ -1,19 +1,19 @@
|
|||||||
return {
|
return {
|
||||||
"aznhe21/actions-preview.nvim",
|
"aznhe21/actions-preview.nvim",
|
||||||
config = function()
|
config = function()
|
||||||
-- Configure actions-preview.nvim
|
-- Configure actions-preview.nvim
|
||||||
require("actions-preview").setup({
|
require("actions-preview").setup({
|
||||||
-- Floating window configuration (optional)
|
-- Floating window configuration (optional)
|
||||||
max_width = 80, -- Max width of the preview window
|
max_width = 80, -- Max width of the preview window
|
||||||
max_height = 12, -- Max height of the preview window
|
max_height = 12, -- Max height of the preview window
|
||||||
min_width = 20, -- Minimum width for the preview window
|
min_width = 20, -- Minimum width for the preview window
|
||||||
min_height = 4, -- Minimum height for the preview window
|
min_height = 4, -- Minimum height for the preview window
|
||||||
|
|
||||||
-- Keymaps (optional)
|
-- Keymaps (optional)
|
||||||
keymaps = {
|
keymaps = {
|
||||||
-- Trigger code action preview with a keybinding (example using <leader>a)
|
-- Trigger code action preview with a keybinding (example using <leader>a)
|
||||||
{ "n", "<leader>ca", vim.lsp.buf.code_action },
|
{ "n", "<leader>ca", vim.lsp.buf.code_action },
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
@@ -1,65 +1,65 @@
|
|||||||
return {
|
return {
|
||||||
-- autoclose brackets and quotes
|
-- autoclose brackets and quotes
|
||||||
"windwp/nvim-autopairs",
|
"windwp/nvim-autopairs",
|
||||||
event = "InsertEnter",
|
event = "InsertEnter",
|
||||||
config = function()
|
config = function()
|
||||||
require("nvim-autopairs").setup({
|
require("nvim-autopairs").setup({
|
||||||
fast_wrap = {
|
fast_wrap = {
|
||||||
map = "<C-e>",
|
map = "<leader>wa",
|
||||||
chars = { "{", "[", "(", '"', "'", "`" },
|
chars = { "{", "[", "(", '"', "'", "`" },
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
-- add spaces between parentheses
|
-- add spaces between parentheses
|
||||||
local npairs = require("nvim-autopairs")
|
local npairs = require("nvim-autopairs")
|
||||||
local Rule = require("nvim-autopairs.rule")
|
local Rule = require("nvim-autopairs.rule")
|
||||||
local cond = require("nvim-autopairs.conds")
|
local cond = require("nvim-autopairs.conds")
|
||||||
|
|
||||||
local brackets = { { "(", ")" }, { "[", "]" }, { "{", "}" } }
|
local brackets = { { "(", ")" }, { "[", "]" }, { "{", "}" } }
|
||||||
npairs.add_rules({
|
npairs.add_rules({
|
||||||
-- Rule for a pair with left-side ' ' and right side ' '
|
-- Rule for a pair with left-side ' ' and right side ' '
|
||||||
Rule(" ", " ")
|
Rule(" ", " ")
|
||||||
-- Pair will only occur if the conditional function returns true
|
-- Pair will only occur if the conditional function returns true
|
||||||
:with_pair(function(opts)
|
:with_pair(function(opts)
|
||||||
-- We are checking if we are inserting a space in (), [], or {}
|
-- We are checking if we are inserting a space in (), [], or {}
|
||||||
local pair = opts.line:sub(opts.col - 1, opts.col)
|
local pair = opts.line:sub(opts.col - 1, opts.col)
|
||||||
return vim.tbl_contains({
|
return vim.tbl_contains({
|
||||||
brackets[1][1] .. brackets[1][2],
|
brackets[1][1] .. brackets[1][2],
|
||||||
brackets[2][1] .. brackets[2][2],
|
brackets[2][1] .. brackets[2][2],
|
||||||
brackets[3][1] .. brackets[3][2],
|
brackets[3][1] .. brackets[3][2],
|
||||||
}, pair)
|
}, pair)
|
||||||
end)
|
end)
|
||||||
:with_move(cond.none())
|
:with_move(cond.none())
|
||||||
:with_cr(cond.none())
|
:with_cr(cond.none())
|
||||||
-- We only want to delete the pair of spaces when the cursor is as such: ( | )
|
-- We only want to delete the pair of spaces when the cursor is as such: ( | )
|
||||||
:with_del(
|
:with_del(
|
||||||
function(opts)
|
function(opts)
|
||||||
local col = vim.api.nvim_win_get_cursor(0)[2]
|
local col = vim.api.nvim_win_get_cursor(0)[2]
|
||||||
local context = opts.line:sub(col - 1, col + 2)
|
local context = opts.line:sub(col - 1, col + 2)
|
||||||
return vim.tbl_contains({
|
return vim.tbl_contains({
|
||||||
brackets[1][1] .. " " .. brackets[1][2],
|
brackets[1][1] .. " " .. brackets[1][2],
|
||||||
brackets[2][1] .. " " .. brackets[2][2],
|
brackets[2][1] .. " " .. brackets[2][2],
|
||||||
brackets[3][1] .. " " .. brackets[3][2],
|
brackets[3][1] .. " " .. brackets[3][2],
|
||||||
}, context)
|
}, context)
|
||||||
end
|
end
|
||||||
),
|
),
|
||||||
})
|
})
|
||||||
-- For each pair of brackets we will add another rule
|
-- For each pair of brackets we will add another rule
|
||||||
for _, bracket in pairs(brackets) do
|
for _, bracket in pairs(brackets) do
|
||||||
npairs.add_rules({
|
npairs.add_rules({
|
||||||
-- Each of these rules is for a pair with left-side '( ' and right-side ' )' for each bracket type
|
-- Each of these rules is for a pair with left-side '( ' and right-side ' )' for each bracket type
|
||||||
Rule(bracket[1] .. " ", " " .. bracket[2])
|
Rule(bracket[1] .. " ", " " .. bracket[2])
|
||||||
:with_pair(cond.none())
|
:with_pair(cond.none())
|
||||||
:with_move(function(opts)
|
:with_move(function(opts)
|
||||||
return opts.char == bracket[2]
|
return opts.char == bracket[2]
|
||||||
end)
|
end)
|
||||||
:with_del(cond.none())
|
:with_del(cond.none())
|
||||||
:use_key(bracket[2])
|
:use_key(bracket[2])
|
||||||
-- Removes the trailing whitespace that can occur without this
|
-- Removes the trailing whitespace that can occur without this
|
||||||
:replace_map_cr(function(_)
|
:replace_map_cr(function(_)
|
||||||
return "<C-c>2xi<CR><C-c>O"
|
return "<C-c>2xi<CR><C-c>O"
|
||||||
end),
|
end),
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
@@ -1,13 +1,13 @@
|
|||||||
return {
|
return {
|
||||||
"windwp/nvim-ts-autotag",
|
"windwp/nvim-ts-autotag",
|
||||||
config = function ()
|
config = function()
|
||||||
require('nvim-ts-autotag').setup({
|
require("nvim-ts-autotag").setup({
|
||||||
opts = {
|
opts = {
|
||||||
-- Defaults
|
-- Defaults
|
||||||
enable_close = true, -- Auto close tags
|
enable_close = true, -- Auto close tags
|
||||||
enable_rename = true, -- Auto rename pairs of tags
|
enable_rename = true, -- Auto rename pairs of tags
|
||||||
enable_close_on_slash = true -- Auto close on trailing </
|
enable_close_on_slash = true, -- Auto close on trailing </
|
||||||
},
|
},
|
||||||
} )
|
})
|
||||||
end
|
end,
|
||||||
}
|
}
|
||||||
|
21
nvim/lua/plugins/util/colour-picker.lua
Normal file
21
nvim/lua/plugins/util/colour-picker.lua
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
return {
|
||||||
|
"uga-rosa/ccc.nvim",
|
||||||
|
config = function()
|
||||||
|
local ccc = require("ccc")
|
||||||
|
vim.opt.termguicolors = true
|
||||||
|
ccc.setup({
|
||||||
|
highlighter = {
|
||||||
|
auto_enable = false,
|
||||||
|
lsp = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
local keymap = vim.keymap
|
||||||
|
keymap.set(
|
||||||
|
"n",
|
||||||
|
"<leader>cp",
|
||||||
|
"<cmd>CccPick<CR>",
|
||||||
|
{ noremap = true, silent = true, desc = "Toggle colour picker" }
|
||||||
|
)
|
||||||
|
end,
|
||||||
|
}
|
@@ -6,9 +6,8 @@ return {
|
|||||||
notification = {
|
notification = {
|
||||||
window = {
|
window = {
|
||||||
winblend = 0,
|
winblend = 0,
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
})
|
})
|
||||||
end
|
end,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -1,15 +0,0 @@
|
|||||||
return {
|
|
||||||
"kikofmas/grammarous.nvim",
|
|
||||||
config = function ()
|
|
||||||
local keymap = vim.keymap
|
|
||||||
local opts = require('utils').opts
|
|
||||||
|
|
||||||
keymap.set('n', '<leader>sr', ':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'))
|
|
||||||
keymap.set('n', '<leader>slu', ':set spelllang=en_us<CR>', opts('Set spell checker lang to en_US'))
|
|
||||||
keymap.set('n', '<leader>sle', ':set spelllang=en_gb<CR>', opts('Set spell checker lang to en_GB'))
|
|
||||||
keymap.set('n', '<leader>slc', ':set spelllang=de_ch<CR>', opts('Set spell checker lang to de_CH'))
|
|
||||||
end
|
|
||||||
}
|
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user