Finish up complete config restructure, get verilog working
This commit is contained in:
parent
a2caa1c3aa
commit
ec71de83b1
@ -12,7 +12,14 @@ end
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
|
||||
|
||||
require("lazy").setup("plugins", {
|
||||
require("lazy").setup({
|
||||
spec = {
|
||||
{ import = "plugins.nav" },
|
||||
{ import = "plugins.lsp" },
|
||||
{ import = "plugins.style" },
|
||||
{ import = "plugins.util" },
|
||||
{ import = "plugins.testing" }
|
||||
},
|
||||
change_detection = {
|
||||
notify = false, -- dont notify when plugins are changed
|
||||
}
|
||||
|
131
nvim/lua/plugins/lsp/cmp.lua
Executable file
131
nvim/lua/plugins/lsp/cmp.lua
Executable file
@ -0,0 +1,131 @@
|
||||
return {
|
||||
-- competion
|
||||
"hrsh7th/nvim-cmp",
|
||||
event = "InsertEnter",
|
||||
dependencies = {
|
||||
{ "hrsh7th/cmp-buffer" }, -- source for text in buffer
|
||||
{ "hrsh7th/cmp-path" }, -- source for file system paths
|
||||
{ "L3MON4D3/LuaSnip" }, -- snippet engine
|
||||
{ "saadparwaiz1/cmp_luasnip" }, -- for autocompletion
|
||||
{ "rafamadriz/friendly-snippets" }, -- useful snippets
|
||||
{ "onsails/lspkind.nvim" }, -- icons for cmp
|
||||
{ "hrsh7th/cmp-nvim-lsp-signature-help" }, -- signature help
|
||||
},
|
||||
|
||||
config = function()
|
||||
local cmp = require("cmp")
|
||||
local lspkind = require("lspkind")
|
||||
local luasnip = require("luasnip")
|
||||
|
||||
-- loads vscode style snippets from installed plugins (e.g. friendly-snippets)
|
||||
require("luasnip.loaders.from_vscode").lazy_load()
|
||||
require("luasnip.loaders.from_vscode").load({paths = { "~/.config/nvim/snippets" }})
|
||||
luasnip.setup({
|
||||
region_check_events = { "CursorMoved" },
|
||||
delete_check_events = { "TextChanged" },
|
||||
})
|
||||
|
||||
-- luasnip.filetype_extend("htmldjango", { "html" })
|
||||
|
||||
cmp.setup({
|
||||
completion = {
|
||||
completeopt = "menu,menuone,preview,noselect",
|
||||
},
|
||||
|
||||
window = {
|
||||
documentation = cmp.config.window.bordered(),
|
||||
completion = cmp.config.window.bordered({
|
||||
winhighlight = "Normal:CmpPmenu,CursorLine:PmenuSel,Search:None",
|
||||
}),
|
||||
},
|
||||
|
||||
snippet = { -- configure how nvim-cmp interacts with snippet engine
|
||||
expand = function(args)
|
||||
luasnip.lsp_expand(args.body)
|
||||
end,
|
||||
},
|
||||
|
||||
mapping = cmp.mapping.preset.insert({
|
||||
["<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-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-Space>"] = cmp.mapping.complete(), -- show completion suggestions
|
||||
["<C-q>"] = cmp.mapping.abort(), -- close completion window
|
||||
["<CR>"] = cmp.mapping.confirm({ select = false }), -- autocomplete if selected
|
||||
-- Mapping for Tab key
|
||||
["<Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.confirm({ behavior = cmp.ConfirmBehavior.Insert, select = true })
|
||||
elseif require("luasnip").expandable() then
|
||||
-- Expands snippet if possible
|
||||
require("luasnip").expand()
|
||||
else
|
||||
-- Otherwise, fallback (insert a tab character)
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
|
||||
-- Mapping for jumping in snippets
|
||||
["<C-p>"] = cmp.mapping(function(fallback)
|
||||
if require("luasnip").jumpable() then
|
||||
-- Jump backwards if inside a snippet
|
||||
require("luasnip").jump()
|
||||
else
|
||||
-- Otherwise, fallback (insert a tab character)
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" }),
|
||||
|
||||
-- Mapping for jumping backwards in snippets
|
||||
["<C-S-p>"] = cmp.mapping(function(fallback)
|
||||
if require("luasnip").jumpable() then
|
||||
-- Jump backwards if inside a snippet
|
||||
require("luasnip").jump()
|
||||
else
|
||||
-- Otherwise, fallback (insert a tab character)
|
||||
fallback()
|
||||
end
|
||||
end, { "i", "s" })
|
||||
}),
|
||||
|
||||
-- sources for autocompletion
|
||||
sources = cmp.config.sources({
|
||||
{ name = "nvim_lsp" }, -- lsp
|
||||
{ name = "luasnip" }, -- snippets
|
||||
{ name = "buffer" }, -- text within current buffer
|
||||
{ name = "path" }, -- file system paths
|
||||
{ name = 'nvim_lsp_signature_help' }, -- signature help
|
||||
}),
|
||||
|
||||
formatting = {
|
||||
fields = { "kind", "abbr", "menu" },
|
||||
format = lspkind.cmp_format({
|
||||
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)
|
||||
-- can also be a function to dynamically calculate max width such as
|
||||
-- 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)
|
||||
show_labelDetails = true, -- show labelDetails in menu. Disabled by default
|
||||
|
||||
-- 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))
|
||||
before = function(entry, vim_item)
|
||||
return vim_item
|
||||
end,
|
||||
}),
|
||||
},
|
||||
})
|
||||
|
||||
local opts = { silent = true }
|
||||
opts.desc = "next snippet placeholder"
|
||||
vim.keymap.set({ "i", "s" }, "<C-w>", function()
|
||||
luasnip.jump(1)
|
||||
end, opts)
|
||||
|
||||
opts.desc = "previous snippet placeholder"
|
||||
vim.keymap.set({ "i", "s" }, "<C-b>", function()
|
||||
luasnip.jump(-1)
|
||||
end, opts)
|
||||
end,
|
||||
}
|
16
nvim/lua/plugins/lsp/lsp-lines.lua
Executable file
16
nvim/lua/plugins/lsp/lsp-lines.lua
Executable file
@ -0,0 +1,16 @@
|
||||
return {
|
||||
---------- for lsp diagnostic lines ----------
|
||||
"https://git.sr.ht/~whynothugo/lsp_lines.nvim",
|
||||
event = "LspAttach",
|
||||
config = function()
|
||||
require("lsp_lines").setup()
|
||||
vim.diagnostic.config({ virtual_lines = false })
|
||||
|
||||
local lsplines = false
|
||||
vim.keymap.set("n", "<Leader>L", function ()
|
||||
lsplines = not lsplines
|
||||
vim.diagnostic.config({ virtual_text = not lsplines })
|
||||
vim.diagnostic.config({ virtual_lines = lsplines })
|
||||
end, { desc = "Toggle lsp_lines" })
|
||||
end,
|
||||
}
|
193
nvim/lua/plugins/lsp/lspconfig.lua
Executable file
193
nvim/lua/plugins/lsp/lspconfig.lua
Executable file
@ -0,0 +1,193 @@
|
||||
return {
|
||||
-- lsp configuration
|
||||
"neovim/nvim-lspconfig",
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
dependencies = {
|
||||
"hrsh7th/cmp-nvim-lsp",
|
||||
{ "antosha417/nvim-lsp-file-operations", config = true },
|
||||
-- "mfussenegger/nvim-jdtls",
|
||||
"nvim-java/nvim-java"
|
||||
},
|
||||
config = function()
|
||||
require('java').setup()
|
||||
-- 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)
|
||||
local signs = { Error = " ", Warn = " ", Hint = "", Info = " " }
|
||||
for type, icon in pairs(signs) do
|
||||
local hl = "DiagnosticSign" .. type
|
||||
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" })
|
||||
end
|
||||
|
||||
lspconfig.bashls.setup({
|
||||
capabilities = capabilities,
|
||||
on_attach = on_attach,
|
||||
})
|
||||
|
||||
lspconfig.clangd.setup({
|
||||
cmd = {
|
||||
"clangd",
|
||||
"--suggest-missing-includes",
|
||||
"--clang-tidy",
|
||||
},
|
||||
filetypes = { "c", "cpp", "objc", "objcpp", "cuda", "proto", "ino" },
|
||||
capabilities = capabilities,
|
||||
on_attach = on_attach,
|
||||
})
|
||||
|
||||
lspconfig.cssls.setup({
|
||||
capabilities = capabilities,
|
||||
on_attach = on_attach,
|
||||
})
|
||||
|
||||
lspconfig.html.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,
|
||||
}
|
||||
|
||||
lspconfig.veridian.setup {
|
||||
cmd = { 'veridian' },
|
||||
}
|
||||
|
||||
end,
|
||||
}
|
12
nvim/lua/plugins/lsp/luasnip.lua
Executable file
12
nvim/lua/plugins/lsp/luasnip.lua
Executable file
@ -0,0 +1,12 @@
|
||||
return {
|
||||
'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
|
||||
}
|
41
nvim/lua/plugins/lsp/mason.lua
Executable file
41
nvim/lua/plugins/lsp/mason.lua
Executable file
@ -0,0 +1,41 @@
|
||||
return {
|
||||
-- lsp package manager
|
||||
"williamboman/mason.nvim",
|
||||
dependencies = {
|
||||
"williamboman/mason-lspconfig.nvim",
|
||||
},
|
||||
config = function()
|
||||
-- import mason
|
||||
local mason = require("mason")
|
||||
|
||||
-- import mason-lspconfig
|
||||
local mason_lspconfig = require("mason-lspconfig")
|
||||
|
||||
-- enable mason and configure icons
|
||||
mason.setup({
|
||||
ui = {
|
||||
icons = {
|
||||
package_installed = "✔",
|
||||
package_pending = "➜",
|
||||
package_uninstalled = "✗",
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
mason_lspconfig.setup({
|
||||
-- list of servers for mason to install
|
||||
ensure_installed = {
|
||||
-- "bashls",
|
||||
-- "clangd",
|
||||
-- "cssls",
|
||||
-- "jdtls",
|
||||
-- "lua_ls",
|
||||
-- "pyright",
|
||||
-- "tsserver",
|
||||
"volar"
|
||||
},
|
||||
-- auto-install configured servers (with lspconfig)
|
||||
automatic_installation = true,
|
||||
})
|
||||
end,
|
||||
}
|
15
nvim/lua/plugins/lsp/none-ls.lua
Executable file
15
nvim/lua/plugins/lsp/none-ls.lua
Executable file
@ -0,0 +1,15 @@
|
||||
return {
|
||||
"nvimtools/none-ls.nvim",
|
||||
config = function()
|
||||
local null_ls = require("null-ls")
|
||||
|
||||
null_ls.setup({
|
||||
sources = {
|
||||
null_ls.builtins.formatting.stylua,
|
||||
null_ls.builtins.formatting.prettier,
|
||||
null_ls.builtins.formatting.shfmt,
|
||||
null_ls.builtins.formatting.black,
|
||||
},
|
||||
})
|
||||
end,
|
||||
}
|
26
nvim/lua/plugins/lsp/treesitter.lua
Executable file
26
nvim/lua/plugins/lsp/treesitter.lua
Executable file
@ -0,0 +1,26 @@
|
||||
return {
|
||||
-- syntax highlighting
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
build = ":TSUpdate",
|
||||
config = function()
|
||||
require("nvim-treesitter.configs").setup({
|
||||
ensure_installed = {
|
||||
"bash",
|
||||
"c",
|
||||
"cpp",
|
||||
"hyprlang",
|
||||
"javascript",
|
||||
"json",
|
||||
"lua",
|
||||
"python",
|
||||
"typescript",
|
||||
},
|
||||
sync_install = false,
|
||||
|
||||
highlight = {
|
||||
enable = true,
|
||||
disable = { "tex" }
|
||||
},
|
||||
})
|
||||
end,
|
||||
}
|
30
nvim/lua/plugins/lsp/typescript-tools.lua
Executable file
30
nvim/lua/plugins/lsp/typescript-tools.lua
Executable file
@ -0,0 +1,30 @@
|
||||
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)
|
||||
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,
|
||||
}
|
15
nvim/lua/plugins/lsp/vimtex.lua
Executable file
15
nvim/lua/plugins/lsp/vimtex.lua
Executable file
@ -0,0 +1,15 @@
|
||||
return {
|
||||
"lervag/vimtex",
|
||||
config = function()
|
||||
-- vimtex settings
|
||||
-- vim.g.vimtex_view_method = 'startup' -- PDF viewer (example: zathura, or use 'skim' for macOS)
|
||||
vim.g.vimtex_compiler_method = 'latexmk' -- Use latexmk for compilation
|
||||
vim.g.vimtex_fold_enabled = 1 -- Enable folding for LaTeX sections
|
||||
vim.g.vimtex_quickfix_mode = 0 -- Disable quickfix mode for compilation errors
|
||||
-- Key Mappings for LaTeX workflow
|
||||
vim.api.nvim_set_keymap('n', '<leader>lc', ':VimtexCompile<CR>', {}) -- Compile LaTeX file
|
||||
vim.api.nvim_set_keymap('n', '<leader>lv', ':VimtexView<CR>', {}) -- View compiled PDF
|
||||
vim.api.nvim_set_keymap('n', '<leader>lq', ':VimtexStop<CR>', {}) -- Stop compilation
|
||||
|
||||
end
|
||||
}
|
9
nvim/lua/plugins/nav/bufdelete.lua
Executable file
9
nvim/lua/plugins/nav/bufdelete.lua
Executable file
@ -0,0 +1,9 @@
|
||||
return {
|
||||
-- delete a buffer
|
||||
'famiu/bufdelete.nvim',
|
||||
config = function()
|
||||
local map = vim.api.nvim_set_keymap
|
||||
map('n', '<C-w>', '<cmd>Bdelete<CR>', { silent = true, desc = "close current buffer" })
|
||||
end
|
||||
}
|
||||
|
64
nvim/lua/plugins/nav/bufferline.lua
Executable file
64
nvim/lua/plugins/nav/bufferline.lua
Executable file
@ -0,0 +1,64 @@
|
||||
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,
|
||||
}
|
7
nvim/lua/plugins/nav/lastplace.lua
Executable file
7
nvim/lua/plugins/nav/lastplace.lua
Executable file
@ -0,0 +1,7 @@
|
||||
return {
|
||||
-- open file at previous position
|
||||
'ethanholz/nvim-lastplace',
|
||||
config = function()
|
||||
require('nvim-lastplace').setup{}
|
||||
end,
|
||||
}
|
146
nvim/lua/plugins/nav/navbuddy.lua
Executable file
146
nvim/lua/plugins/nav/navbuddy.lua
Executable file
@ -0,0 +1,146 @@
|
||||
return {
|
||||
"SmiteshP/nvim-navbuddy",
|
||||
dependencies = {
|
||||
"SmiteshP/nvim-navic",
|
||||
"MunifTanjim/nui.nvim",
|
||||
},
|
||||
opts = { lsp = { auto_attach = true } },
|
||||
config = function()
|
||||
local actions = require("nvim-navbuddy.actions")
|
||||
require("nvim-navbuddy").setup({
|
||||
window = {
|
||||
border = "rounded", -- "rounded", "double", "solid", "none"
|
||||
-- or an array with eight chars building up the border in a clockwise fashion
|
||||
-- starting with the top-left corner. eg: { "╔", "═" ,"╗", "║", "╝", "═", "╚", "║" }.
|
||||
size = "60%", -- Or table format example: { height = "40%", width = "100%"}
|
||||
position = "50%", -- Or table format example: { row = "100%", col = "0%"}
|
||||
scrolloff = nil, -- scrolloff value within navbuddy window
|
||||
sections = {
|
||||
left = {
|
||||
size = "20%",
|
||||
border = nil, -- You can set border style for each section individually as well.
|
||||
},
|
||||
mid = {
|
||||
size = "40%",
|
||||
border = nil,
|
||||
},
|
||||
right = {
|
||||
-- No size option for right most section. It fills to
|
||||
-- remaining area.
|
||||
border = nil,
|
||||
preview = "leaf", -- Right section can show previews too.
|
||||
-- Options: "leaf", "always" or "never"
|
||||
},
|
||||
},
|
||||
},
|
||||
node_markers = {
|
||||
enabled = true,
|
||||
icons = {
|
||||
leaf = " ",
|
||||
leaf_selected = " → ",
|
||||
branch = " ",
|
||||
},
|
||||
},
|
||||
icons = {
|
||||
File = " ",
|
||||
Module = " ",
|
||||
Namespace = " ",
|
||||
Package = " ",
|
||||
Class = " ",
|
||||
Method = " ",
|
||||
Property = " ",
|
||||
Field = " ",
|
||||
Constructor = " ",
|
||||
Enum = "",
|
||||
Interface = "",
|
||||
Function = " ",
|
||||
Variable = " ",
|
||||
Constant = " ",
|
||||
String = " ",
|
||||
Number = " ",
|
||||
Boolean = "◩ ",
|
||||
Array = " ",
|
||||
Object = " ",
|
||||
Key = " ",
|
||||
Null = " ",
|
||||
EnumMember = " ",
|
||||
Struct = " ",
|
||||
Event = " ",
|
||||
Operator = " ",
|
||||
TypeParameter = " ",
|
||||
},
|
||||
use_default_mappings = true, -- If set to false, only mappings set
|
||||
-- by user are set. Else default
|
||||
-- mappings are used for keys
|
||||
-- that are not set by user
|
||||
mappings = {
|
||||
["<esc>"] = actions.close(), -- Close and cursor to original location
|
||||
["q"] = actions.close(),
|
||||
|
||||
["j"] = actions.next_sibling(), -- down
|
||||
["k"] = actions.previous_sibling(), -- up
|
||||
|
||||
["h"] = actions.parent(), -- Move to left panel
|
||||
["l"] = actions.children(), -- Move to right panel
|
||||
["0"] = actions.root(), -- Move to first panel
|
||||
|
||||
["<C-S-v>"] = actions.visual_name(), -- Visual selection of name
|
||||
["<C-S-V>"] = actions.visual_scope(), -- Visual selection of scope
|
||||
|
||||
["y"] = actions.yank_name(), -- Yank the name to system clipboard "+
|
||||
["Y"] = actions.yank_scope(), -- Yank the scope to system clipboard "+
|
||||
|
||||
["i"] = actions.insert_name(), -- Insert at start of name
|
||||
["I"] = actions.insert_scope(), -- Insert at start of scope
|
||||
|
||||
["a"] = actions.append_name(), -- Insert at end of name
|
||||
["A"] = actions.append_scope(), -- Insert at end of scope
|
||||
|
||||
["r"] = actions.rename(), -- Rename currently focused symbol
|
||||
|
||||
["d"] = actions.delete(), -- Delete scope
|
||||
|
||||
["f"] = actions.fold_create(), -- Create fold of current scope
|
||||
["F"] = actions.fold_delete(), -- Delete fold of current scope
|
||||
|
||||
["c"] = actions.comment(), -- Comment out current scope
|
||||
|
||||
["<enter>"] = actions.select(), -- Goto selected symbol
|
||||
["o"] = actions.select(),
|
||||
|
||||
["J"] = actions.move_down(), -- Move focused node down
|
||||
["K"] = actions.move_up(), -- Move focused node up
|
||||
|
||||
["s"] = actions.toggle_preview(), -- Show preview of current node
|
||||
|
||||
["<C-v>"] = actions.vsplit(), -- Open selected node in a vertical split
|
||||
["<C-s>"] = actions.hsplit(), -- Open selected node in a horizontal split
|
||||
|
||||
["t"] = actions.telescope({ -- Fuzzy finder at current level.
|
||||
layout_config = { -- All options that can be
|
||||
height = 0.60, -- passed to telescope.nvim's
|
||||
width = 0.60, -- default can be passed here.
|
||||
prompt_position = "top",
|
||||
preview_width = 0.50,
|
||||
},
|
||||
layout_strategy = "horizontal",
|
||||
}),
|
||||
|
||||
["g?"] = actions.help(), -- Open mappings help window
|
||||
},
|
||||
lsp = {
|
||||
auto_attach = true, -- If set to true, you don't need to manually use attach function
|
||||
preference = nil, -- list of lsp server names in order of preference
|
||||
},
|
||||
source_buffer = {
|
||||
follow_node = true, -- Keep the current node in focus on the source buffer
|
||||
highlight = true, -- Highlight the currently focused node
|
||||
reorient = "smart", -- "smart", "top", "mid" or "none"
|
||||
scrolloff = nil, -- scrolloff value when navbuddy is open
|
||||
},
|
||||
custom_hl_group = nil, -- "Visual" or any other hl group to use instead of inverted colors
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>n", ":Navbuddy<CR>", { silent = true, desc = "open navbuddy menu" })
|
||||
end,
|
||||
}
|
24
nvim/lua/plugins/nav/nvim-tree.lua
Executable file
24
nvim/lua/plugins/nav/nvim-tree.lua
Executable file
@ -0,0 +1,24 @@
|
||||
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,
|
||||
}
|
87
nvim/lua/plugins/nav/telescope.lua
Executable file
87
nvim/lua/plugins/nav/telescope.lua
Executable file
@ -0,0 +1,87 @@
|
||||
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,
|
||||
}
|
17
nvim/lua/plugins/nav/toggleterm.lua
Executable file
17
nvim/lua/plugins/nav/toggleterm.lua
Executable file
@ -0,0 +1,17 @@
|
||||
return {
|
||||
-- literally the name, quick term toggle
|
||||
"akinsho/toggleterm.nvim",
|
||||
version = "*",
|
||||
config = function()
|
||||
require("toggleterm").setup({
|
||||
insert_mappings = false,
|
||||
terminal_mappings = false,
|
||||
open_mapping = "<leader>t",
|
||||
direction = "float",
|
||||
float_opts = {
|
||||
border = "curved",
|
||||
},
|
||||
})
|
||||
vim.keymap.set("t", "<S-Esc>", [[<cmd>ToggleTerm<CR>]], {}) -- close terminal wih esc
|
||||
end,
|
||||
}
|
12
nvim/lua/plugins/nav/whichkey.lua
Executable file
12
nvim/lua/plugins/nav/whichkey.lua
Executable file
@ -0,0 +1,12 @@
|
||||
return {
|
||||
-- keybinds popup
|
||||
"folke/which-key.nvim",
|
||||
event = "VeryLazy",
|
||||
init = function()
|
||||
vim.o.timeout = true
|
||||
vim.o.timeoutlen = 500
|
||||
end,
|
||||
opts = {
|
||||
|
||||
}
|
||||
}
|
34
nvim/lua/plugins/style/colorizer.lua
Executable file
34
nvim/lua/plugins/style/colorizer.lua
Executable file
@ -0,0 +1,34 @@
|
||||
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,
|
||||
}
|
139
nvim/lua/plugins/style/colors.lua
Executable file
139
nvim/lua/plugins/style/colors.lua
Executable file
@ -0,0 +1,139 @@
|
||||
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,
|
||||
}
|
61
nvim/lua/plugins/style/comment-box.lua
Executable file
61
nvim/lua/plugins/style/comment-box.lua
Executable file
@ -0,0 +1,61 @@
|
||||
return {
|
||||
"LudoPinelli/comment-box.nvim",
|
||||
config = function()
|
||||
-- add custom commentstring to plugin source, since configuration is not yet supported
|
||||
local function insertlang(lang, commentstring)
|
||||
local filename = os.getenv("HOME")
|
||||
.. "/.local/share/nvim/lazy/comment-box.nvim/lua/comment-box/commentstrings.lua"
|
||||
local file = io.open(filename, "r")
|
||||
if not file then
|
||||
return
|
||||
end
|
||||
|
||||
local content = file:read("a")
|
||||
if string.match(content, lang) then
|
||||
return
|
||||
end
|
||||
|
||||
local lines = {}
|
||||
for line in content:gmatch("[^\r\n]+") do
|
||||
table.insert(lines, line)
|
||||
end
|
||||
file:close()
|
||||
|
||||
table.insert(lines, 24, " " .. lang .. ' = { "' .. commentstring .. '", "" },')
|
||||
|
||||
file = io.open(filename, "w")
|
||||
if not file then
|
||||
return
|
||||
end
|
||||
|
||||
file:write(table.concat(lines, "\n"))
|
||||
|
||||
file:close()
|
||||
end
|
||||
|
||||
insertlang("hyprlang", "#%s")
|
||||
|
||||
require("comment-box").setup({
|
||||
comment_style = "line",
|
||||
doc_width = 70,
|
||||
box_width = 50,
|
||||
line_width = 70,
|
||||
})
|
||||
|
||||
local opts = { silent = true }
|
||||
|
||||
opts.desc = "comment text box"
|
||||
vim.keymap.set({"n", "v"}, "<leader>cb", ":CBccbox<CR>", opts)
|
||||
opts.desc = "comment text line"
|
||||
vim.keymap.set({"n", "v"}, "<leader>cl", ":CBllline<CR>", opts)
|
||||
opts.desc = "comment line"
|
||||
vim.keymap.set({"n", "v"}, "<leader>ce", ":CBline<CR>", opts)
|
||||
opts.desc = "comment highlight"
|
||||
vim.keymap.set({"n", "v"}, "<leader>ch", ":CBlcbox18<CR>", opts)
|
||||
|
||||
opts.desc = "delete comment box"
|
||||
vim.keymap.set({"n", "v"}, "<leader>cd", ":CBd<CR>", opts)
|
||||
opts.desc = "yank comment box contents"
|
||||
vim.keymap.set({"n", "v"}, "<leader>cy", ":CBy<CR>", opts)
|
||||
end,
|
||||
}
|
10
nvim/lua/plugins/style/comment.lua
Executable file
10
nvim/lua/plugins/style/comment.lua
Executable file
@ -0,0 +1,10 @@
|
||||
return {
|
||||
-- add comment keybinds
|
||||
'numToStr/Comment.nvim',
|
||||
opts = {},
|
||||
lazy = false,
|
||||
config = function()
|
||||
require('Comment').setup()
|
||||
require('Comment.ft').set('hyprlang', '#%s')
|
||||
end
|
||||
}
|
5
nvim/lua/plugins/style/dressing.lua
Executable file
5
nvim/lua/plugins/style/dressing.lua
Executable file
@ -0,0 +1,5 @@
|
||||
return {
|
||||
-- prettier prompts
|
||||
'stevearc/dressing.nvim',
|
||||
event = 'VeryLazy',
|
||||
}
|
55
nvim/lua/plugins/style/lualine.lua
Executable file
55
nvim/lua/plugins/style/lualine.lua
Executable file
@ -0,0 +1,55 @@
|
||||
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,
|
||||
}
|
77
nvim/lua/plugins/style/startup.lua
Executable file
77
nvim/lua/plugins/style/startup.lua
Executable file
@ -0,0 +1,77 @@
|
||||
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,
|
||||
}
|
103
nvim/lua/plugins/testing/dap.lua
Executable file
103
nvim/lua/plugins/testing/dap.lua
Executable file
@ -0,0 +1,103 @@
|
||||
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,
|
||||
}
|
70
nvim/lua/plugins/testing/neotest.lua
Executable file
70
nvim/lua/plugins/testing/neotest.lua
Executable file
@ -0,0 +1,70 @@
|
||||
-- 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,
|
||||
},
|
||||
}
|
19
nvim/lua/plugins/util/actions-preview.lua
Executable file
19
nvim/lua/plugins/util/actions-preview.lua
Executable file
@ -0,0 +1,19 @@
|
||||
return {
|
||||
"aznhe21/actions-preview.nvim",
|
||||
config = function()
|
||||
-- Configure actions-preview.nvim
|
||||
require("actions-preview").setup({
|
||||
-- Floating window configuration (optional)
|
||||
max_width = 80, -- Max width of the preview window
|
||||
max_height = 12, -- Max height of the preview window
|
||||
min_width = 20, -- Minimum width for the preview window
|
||||
min_height = 4, -- Minimum height for the preview window
|
||||
|
||||
-- Keymaps (optional)
|
||||
keymaps = {
|
||||
-- Trigger code action preview with a keybinding (example using <leader>a)
|
||||
{ "n", "<leader>ca", vim.lsp.buf.code_action },
|
||||
},
|
||||
})
|
||||
end,
|
||||
}
|
65
nvim/lua/plugins/util/autopairs.lua
Executable file
65
nvim/lua/plugins/util/autopairs.lua
Executable file
@ -0,0 +1,65 @@
|
||||
return {
|
||||
-- autoclose brackets and quotes
|
||||
"windwp/nvim-autopairs",
|
||||
event = "InsertEnter",
|
||||
config = function()
|
||||
require("nvim-autopairs").setup({
|
||||
fast_wrap = {
|
||||
map = "<C-e>",
|
||||
chars = { "{", "[", "(", '"', "'", "`" },
|
||||
},
|
||||
})
|
||||
|
||||
-- add spaces between parentheses
|
||||
local npairs = require("nvim-autopairs")
|
||||
local Rule = require("nvim-autopairs.rule")
|
||||
local cond = require("nvim-autopairs.conds")
|
||||
|
||||
local brackets = { { "(", ")" }, { "[", "]" }, { "{", "}" } }
|
||||
npairs.add_rules({
|
||||
-- Rule for a pair with left-side ' ' and right side ' '
|
||||
Rule(" ", " ")
|
||||
-- Pair will only occur if the conditional function returns true
|
||||
:with_pair(function(opts)
|
||||
-- We are checking if we are inserting a space in (), [], or {}
|
||||
local pair = opts.line:sub(opts.col - 1, opts.col)
|
||||
return vim.tbl_contains({
|
||||
brackets[1][1] .. brackets[1][2],
|
||||
brackets[2][1] .. brackets[2][2],
|
||||
brackets[3][1] .. brackets[3][2],
|
||||
}, pair)
|
||||
end)
|
||||
:with_move(cond.none())
|
||||
:with_cr(cond.none())
|
||||
-- We only want to delete the pair of spaces when the cursor is as such: ( | )
|
||||
:with_del(
|
||||
function(opts)
|
||||
local col = vim.api.nvim_win_get_cursor(0)[2]
|
||||
local context = opts.line:sub(col - 1, col + 2)
|
||||
return vim.tbl_contains({
|
||||
brackets[1][1] .. " " .. brackets[1][2],
|
||||
brackets[2][1] .. " " .. brackets[2][2],
|
||||
brackets[3][1] .. " " .. brackets[3][2],
|
||||
}, context)
|
||||
end
|
||||
),
|
||||
})
|
||||
-- For each pair of brackets we will add another rule
|
||||
for _, bracket in pairs(brackets) do
|
||||
npairs.add_rules({
|
||||
-- Each of these rules is for a pair with left-side '( ' and right-side ' )' for each bracket type
|
||||
Rule(bracket[1] .. " ", " " .. bracket[2])
|
||||
:with_pair(cond.none())
|
||||
:with_move(function(opts)
|
||||
return opts.char == bracket[2]
|
||||
end)
|
||||
:with_del(cond.none())
|
||||
:use_key(bracket[2])
|
||||
-- Removes the trailing whitespace that can occur without this
|
||||
:replace_map_cr(function(_)
|
||||
return "<C-c>2xi<CR><C-c>O"
|
||||
end),
|
||||
})
|
||||
end
|
||||
end,
|
||||
}
|
13
nvim/lua/plugins/util/autotag.lua
Executable file
13
nvim/lua/plugins/util/autotag.lua
Executable file
@ -0,0 +1,13 @@
|
||||
return {
|
||||
"windwp/nvim-ts-autotag",
|
||||
config = function ()
|
||||
require('nvim-ts-autotag').setup({
|
||||
opts = {
|
||||
-- Defaults
|
||||
enable_close = true, -- Auto close tags
|
||||
enable_rename = true, -- Auto rename pairs of tags
|
||||
enable_close_on_slash = true -- Auto close on trailing </
|
||||
},
|
||||
} )
|
||||
end
|
||||
}
|
4
nvim/lua/plugins/util/context.lua
Executable file
4
nvim/lua/plugins/util/context.lua
Executable file
@ -0,0 +1,4 @@
|
||||
return {
|
||||
-- similar to sticky scroll in vscode
|
||||
"nvim-treesitter/nvim-treesitter-context",
|
||||
}
|
14
nvim/lua/plugins/util/fidget.lua
Executable file
14
nvim/lua/plugins/util/fidget.lua
Executable file
@ -0,0 +1,14 @@
|
||||
return {
|
||||
-- notifications && lsp progress msgs
|
||||
"j-hui/fidget.nvim",
|
||||
config = function()
|
||||
require("fidget").setup({
|
||||
notification = {
|
||||
window = {
|
||||
winblend = 0,
|
||||
}
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
}
|
15
nvim/lua/plugins/util/grammar.lua
Executable file
15
nvim/lua/plugins/util/grammar.lua
Executable file
@ -0,0 +1,15 @@
|
||||
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
|
||||
}
|
9
nvim/lua/plugins/util/indent-blankline.lua
Executable file
9
nvim/lua/plugins/util/indent-blankline.lua
Executable file
@ -0,0 +1,9 @@
|
||||
return {
|
||||
-- indent lines
|
||||
'lukas-reineke/indent-blankline.nvim',
|
||||
opts = {},
|
||||
main = 'ibl',
|
||||
config = function()
|
||||
require('ibl').setup()
|
||||
end
|
||||
}
|
17
nvim/lua/plugins/util/markdown-preview.lua
Executable file
17
nvim/lua/plugins/util/markdown-preview.lua
Executable file
@ -0,0 +1,17 @@
|
||||
return {
|
||||
-- literally the name, previews md in browser
|
||||
"iamcco/markdown-preview.nvim",
|
||||
cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" },
|
||||
ft = { "markdown" },
|
||||
build = function(plugin)
|
||||
if vim.fn.executable "npx" then
|
||||
vim.cmd("!cd " .. plugin.dir .. " && cd app && npx --yes yarn install")
|
||||
else
|
||||
vim.cmd [[Lazy load markdown-preview.nvim]]
|
||||
vim.fn["mkdp#util#install"]()
|
||||
end
|
||||
end,
|
||||
init = function()
|
||||
if vim.fn.executable "npx" then vim.g.mkdp_filetypes = { "markdown" } end
|
||||
end,
|
||||
}
|
17
nvim/lua/plugins/util/multicursors.lua
Executable file
17
nvim/lua/plugins/util/multicursors.lua
Executable file
@ -0,0 +1,17 @@
|
||||
return {
|
||||
"smoka7/multicursors.nvim",
|
||||
event = "VeryLazy",
|
||||
dependencies = {
|
||||
'nvimtools/hydra.nvim',
|
||||
},
|
||||
opts = {},
|
||||
cmd = { 'MCstart', 'MCvisual', 'MCclear', 'MCpattern', 'MCvisualPattern', 'MCunderCursor' },
|
||||
keys = {
|
||||
{
|
||||
mode = { 'v', 'n' },
|
||||
'<leader><leader>c',
|
||||
'<cmd>MCstart<cr>',
|
||||
desc = 'Create a selection for selected text or word under the cursor',
|
||||
},
|
||||
},
|
||||
}
|
8
nvim/lua/plugins/util/surround.lua
Executable file
8
nvim/lua/plugins/util/surround.lua
Executable file
@ -0,0 +1,8 @@
|
||||
return {
|
||||
"kylechui/nvim-surround",
|
||||
version = "*",
|
||||
event = "VeryLazy",
|
||||
config = function()
|
||||
require("nvim-surround").setup()
|
||||
end
|
||||
}
|
14
nvim/lua/plugins/util/zen-mode.lua
Executable file
14
nvim/lua/plugins/util/zen-mode.lua
Executable file
@ -0,0 +1,14 @@
|
||||
return {
|
||||
-- view buffer w/o distractions
|
||||
"folke/zen-mode.nvim",
|
||||
config = function()
|
||||
require("zen-mode").setup({
|
||||
window = {
|
||||
width = 1,
|
||||
height = 1,
|
||||
},
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>z", ":ZenMode<CR>", { silent = true, desc = "open current buffer in zen mode" })
|
||||
end,
|
||||
}
|
30
nvim/snippets/package.json
Normal file
30
nvim/snippets/package.json
Normal file
@ -0,0 +1,30 @@
|
||||
{
|
||||
"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"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
6
nvim/snippets/snippets/docSetup.json
Executable file
6
nvim/snippets/snippets/docSetup.json
Executable file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"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"
|
||||
}
|
||||
}
|
45
nvim/snippets/snippets/html.json
Executable file
45
nvim/snippets/snippets/html.json
Executable file
@ -0,0 +1,45 @@
|
||||
{
|
||||
"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>"
|
||||
}
|
||||
}
|
93
nvim/snippets/snippets/javascript.json
Executable file
93
nvim/snippets/snippets/javascript.json
Executable file
@ -0,0 +1,93 @@
|
||||
{
|
||||
"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",
|
||||
"} );"
|
||||
]
|
||||
}
|
||||
}
|
420
nvim/snippets/snippets/tex.json
Executable file
420
nvim/snippets/snippets/tex.json
Executable file
@ -0,0 +1,420 @@
|
||||
{
|
||||
"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}"
|
||||
]
|
||||
}
|
||||
}
|
93
nvim/snippets/snippets/typescript.json
Executable file
93
nvim/snippets/snippets/typescript.json
Executable file
@ -0,0 +1,93 @@
|
||||
{
|
||||
"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",
|
||||
"} );"
|
||||
]
|
||||
}
|
||||
}
|
11
nvim/snippets/snippets/vue.json
Executable file
11
nvim/snippets/snippets/vue.json
Executable file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"script:setup": {
|
||||
"prefix": "script:setup",
|
||||
"body": [
|
||||
"<script setup lang=\"ts\">",
|
||||
"\t$1",
|
||||
"</script>"
|
||||
],
|
||||
"description": "Setup the basic structure of a class in JS"
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user