Author | SHA1 | Message | Date |
---|---|---|---|
Yigit Colakoglu | e79063b4c6 | Neovim session support and more, sessions only support one buffer rn | 1 year ago |
Yigit Colakoglu | 3ba4441b9f | Devdocs support | 1 year ago |
Yigit Colakoglu | a046d7c6e9 | Neogit keybind | 1 year ago |
Yigit Colakoglu | 6f8ae21825 | Copilot support | 1 year ago |
Yigit Colakoglu | fd1dc11f60 | Fixed wrong telescope keybind | 1 year ago |
Yigit Colakoglu | 83e23bab00 | Changed color scheme | 1 year ago |
Yigit Colakoglu | ae1dae2bf2 | Cattpuccin | 1 year ago |
Yigit Colakoglu | 26f24e6791 | Merge branch 'main' of github.com:theFr1nge/dotfiles | 1 year ago |
Yigit Colakoglu | b416e5ca58 | Nvim config updated | 1 year ago |
Fr1nge |
17465e9fd4
|
Update README.md | 2 years ago |
Fr1nge |
30eb9495a1
|
Update README.md | 2 years ago |
Yigit Colakoglu | bfd0799ab3 | Added dots for bird | 2 years ago |
@ -1,4 +0,0 @@ | |||||
# Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities. | |||||
version: v1.19.0 | |||||
ignore: {} | |||||
patch: {} |
@ -1,15 +1,15 @@ | |||||
{ | { | ||||
"dependencies": { | "dependencies": { | ||||
"coc-css": ">=1.2.6", | |||||
"coc-html": ">=1.4.1", | |||||
"coc-java": ">=1.5.3", | |||||
"coc-jedi": ">=0.25.2", | |||||
"coc-json": ">=1.3.4", | |||||
"coc-markdownlint": ">=1.11.1", | |||||
"coc-prettier": ">=1.1.23", | |||||
"coc-css": ">=1.3.0", | |||||
"coc-html": ">=1.6.1", | |||||
"coc-java": ">=1.5.5", | |||||
"coc-java-lombok": ">=1.0.0", | |||||
"coc-jedi": ">=0.30.1", | |||||
"coc-json": ">=1.4.1", | |||||
"coc-markdownlint": ">=1.12.4", | |||||
"coc-prettier": ">=9.2.2", | |||||
"coc-tailwindcss": ">=0.7.0", | "coc-tailwindcss": ">=0.7.0", | ||||
"coc-tsserver": ">=1.6.8", | |||||
"coc-vetur": ">=1.2.4", | |||||
"coc-vimtex": ">=1.0.4" | |||||
"coc-tsserver": ">=1.9.13", | |||||
"coc-vimtex": ">=1.1.1" | |||||
} | } | ||||
} | } |
@ -0,0 +1 @@ | |||||
source ~/.gef-7c170cf6be3d84b2672a22e43b9128a23fe53c3b.py |
@ -1,18 +0,0 @@ | |||||
source /usr/share/pwndbg/gdbinit.py | |||||
source /home/yigit/.local/share/splitmind/gdbinit.py | |||||
python | |||||
import splitmind | |||||
(splitmind.Mind() | |||||
.tell_splitter(show_titles=True) | |||||
.tell_splitter(set_title="Main") | |||||
.right(display="backtrace", size="25%") | |||||
.above(of="main", display="disasm", size="80%", banner="top") | |||||
.show("code", on="disasm", banner="none") | |||||
.right(cmd='tty; tail -f /dev/null', size="65%", clearing=False) | |||||
.tell_splitter(set_title='Input / Output') | |||||
.above(display="stack", size="75%") | |||||
.above(display="legend", size="25") | |||||
.show("regs", on="legend") | |||||
.below(of="backtrace", cmd="ipython", size="30%") | |||||
).build(nobanner=True) | |||||
end |
@ -1,3 +0,0 @@ | |||||
file:///home/yigit/Nextcloud | |||||
file:///home/yigit/Documents/ | |||||
file:///home/yigit/Pictures/ |
@ -0,0 +1,8 @@ | |||||
# TODOs | |||||
- specific run keybinds for certain filetypes | |||||
- python | |||||
- ipython | |||||
- bash | |||||
- c/c++? | |||||
- java? | |||||
@ -1,25 +0,0 @@ | |||||
{ | |||||
"languageserver": { | |||||
"ccls": { | |||||
"command": "ccls", | |||||
"filetypes": [ | |||||
"c", | |||||
"cpp", | |||||
"objc", | |||||
"objcpp" | |||||
], | |||||
"rootPatterns": [ | |||||
".ccls", | |||||
"compile_commands.json", | |||||
".vim/", | |||||
".git/", | |||||
".hg/" | |||||
], | |||||
"initializationOptions": { | |||||
"cache": { | |||||
"directory": "/tmp/ccls" | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} |
@ -0,0 +1,28 @@ | |||||
-- Set leader key | |||||
vim.g.mapleader = ',' | |||||
-- Load lazy.nvim | |||||
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("plugins") | |||||
-- Initialize Keybinds | |||||
require('config') | |||||
-- Initialize Keybinds | |||||
require('keybinds') | |||||
-- Initialize LSP | |||||
require('lsp') | |||||
@ -0,0 +1,69 @@ | |||||
{ | |||||
"FixCursorHold.nvim": { "branch": "master", "commit": "1900f89dc17c603eec29960f57c00bd9ae696495" }, | |||||
"aerial.nvim": { "branch": "master", "commit": "e2e3bc2df4490690ea005395eecdc8eeb30c4def" }, | |||||
"alpha-nvim": { "branch": "main", "commit": "29074eeb869a6cbac9ce1fbbd04f5f5940311b32" }, | |||||
"auto-session": { "branch": "main", "commit": "51196ca66b38fc1660fdf50031cb0b31a199b7c9" }, | |||||
"barbar.nvim": { "branch": "master", "commit": "dd852401ee902745b67fc09a83d113b3fe82a96f" }, | |||||
"barbecue": { "branch": "main", "commit": "cd7e7da622d68136e13721865b4d919efd6325ed" }, | |||||
"catppuccin": { "branch": "main", "commit": "5e36ca599f4aa41bdd87fbf2c5aae4397ac55074" }, | |||||
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, | |||||
"cmp-cmdline": { "branch": "main", "commit": "8ee981b4a91f536f52add291594e89fb6645e451" }, | |||||
"cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" }, | |||||
"cmp-nvim-lsp-signature-help": { "branch": "main", "commit": "3d8912ebeb56e5ae08ef0906e3a54de1c66b92f1" }, | |||||
"cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" }, | |||||
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, | |||||
"cmp-snippy": { "branch": "master", "commit": "6e39210aa3a74e2bf6462f492eaf0d436cd2b7d3" }, | |||||
"cmp-vimtex": { "branch": "master", "commit": "50da2d9baeca3e9efb9ca9d90f68c7cc01377bc2" }, | |||||
"copilot-cmp": { "branch": "master", "commit": "72fbaa03695779f8349be3ac54fa8bd77eed3ee3" }, | |||||
"copilot-lualine": { "branch": "main", "commit": "4dd368bed56c424b4a6822ad007b7540d472ae6d" }, | |||||
"copilot.lua": { "branch": "master", "commit": "858bbfa6fa81c88fb1f64107d7981f1658619e0a" }, | |||||
"dap-buddy.nvim": { "branch": "main", "commit": "bbda2b062e5519cde4e10b6e4240d3dd1f867b20" }, | |||||
"diffview.nvim": { "branch": "main", "commit": "3dc498c9777fe79156f3d32dddd483b8b3dbd95f" }, | |||||
"gitsigns.nvim": { "branch": "main", "commit": "d195f0c35ced5174d3ecce1c4c8ebb3b5bc23fa9" }, | |||||
"harpoon": { "branch": "harpoon2", "commit": "6afc142443f8135329f8dd09b77e229f65001c0c" }, | |||||
"headlines.nvim": { "branch": "master", "commit": "e3d7bfdf40e41a020d966d35f8b48d75b90367d2" }, | |||||
"indent-blankline.nvim": { "branch": "master", "commit": "3c8a185da4b8ab7aef487219f5e001b11d4b6aaf" }, | |||||
"lazy.nvim": { "branch": "main", "commit": "96584866b9c5e998cbae300594d0ccfd0c464627" }, | |||||
"lspkind.nvim": { "branch": "master", "commit": "7f26cf5e27e2bd910ce0ea00c514da2bf97423b8" }, | |||||
"lualine.nvim": { "branch": "master", "commit": "566b7036f717f3d676362742630518a47f132fff" }, | |||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "56e435e09f8729af2d41973e81a0db440f8fe9c9" }, | |||||
"mason.nvim": { "branch": "main", "commit": "a09da6ac634926a299dd439da08bdb547a8ca011" }, | |||||
"mini.nvim": { "branch": "main", "commit": "b5645ac6eefce8e7af9d7dd4e5e296a81cba8a10" }, | |||||
"neodev.nvim": { "branch": "main", "commit": "2a8630847dbb93455936156c0689678e4eaee319" }, | |||||
"neogit": { "branch": "master", "commit": "f2315fde7e6d154661dea91f8f8595adb0f44308" }, | |||||
"neomutt.vim": { "branch": "main", "commit": "df510c3d5bcff2013accf957854e0f2a5c01d83b" }, | |||||
"neotest": { "branch": "master", "commit": "6aa6e4529a4a125b49c48541b97ba146ceee2441" }, | |||||
"noice.nvim": { "branch": "main", "commit": "92433164e2f7118d4122c7674c3834d9511722ba" }, | |||||
"nui.nvim": { "branch": "main", "commit": "80445d015d2b5f9af0d9e8bce63d303bc86eda8a" }, | |||||
"null-ls.nvim": { "branch": "main", "commit": "0010ea927ab7c09ef0ce9bf28c2b573fc302f5a7" }, | |||||
"nvim": { "branch": "main", "commit": "5e36ca599f4aa41bdd87fbf2c5aae4397ac55074" }, | |||||
"nvim-cmp": { "branch": "main", "commit": "538e37ba87284942c1d76ed38dd497e54e65b891" }, | |||||
"nvim-dap": { "branch": "master", "commit": "f0dca670fa059eb89dda8869a6310c804241345c" }, | |||||
"nvim-dap-ui": { "branch": "master", "commit": "34160a7ce6072ef332f350ae1d4a6a501daf0159" }, | |||||
"nvim-devdocs": { "branch": "master", "commit": "521d24661ffe6d1ba025debea2675c765a9c1ee1" }, | |||||
"nvim-hlslens": { "branch": "main", "commit": "8ffc64bb6b624612cf762982b92633f283f7a715" }, | |||||
"nvim-lspconfig": { "branch": "master", "commit": "ce0e625df61be77abe1340fbc9afe9ad39b31dd8" }, | |||||
"nvim-navic": { "branch": "master", "commit": "8649f694d3e76ee10c19255dece6411c29206a54" }, | |||||
"nvim-notify": { "branch": "master", "commit": "ebcdd8219e2a2cbc0a4bef68002f6867f1fde269" }, | |||||
"nvim-scrollbar": { "branch": "main", "commit": "35f99d559041c7c0eff3a41f9093581ceea534e8" }, | |||||
"nvim-snippy": { "branch": "master", "commit": "7c8f18e90cad4f56c4e22a49101668735639f286" }, | |||||
"nvim-tree.lua": { "branch": "master", "commit": "f1b3e6a7eb92da492bd693257367d9256839ed3d" }, | |||||
"nvim-treesitter": { "branch": "master", "commit": "65ef62092ef997d2ecf68ede01a0afbda17808c3" }, | |||||
"nvim-ufo": { "branch": "main", "commit": "c6d88523f574024b788f1c3400c5d5b9bb1a0407" }, | |||||
"nvim-web-devicons": { "branch": "master", "commit": "cff25ce621e6d15fae0b0bfe38c00be50ce38468" }, | |||||
"plenary.nvim": { "branch": "master", "commit": "55d9fe89e33efd26f532ef20223e5f9430c8b0c0" }, | |||||
"promise-async": { "branch": "main", "commit": "94f6f03c6c1e2aab551aacdf0c1e597a7269abb6" }, | |||||
"rest.nvim": { "branch": "main", "commit": "84e81a19ab24ccf05c9233d34d4dfce61c233abe" }, | |||||
"session-lens": { "branch": "main", "commit": "1b65d8e1bcd1836c5135cce118ba18d662a9dabd" }, | |||||
"telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, | |||||
"telescope.nvim": { "branch": "master", "commit": "d90956833d7c27e73c621a61f20b29fdb7122709" }, | |||||
"toggleterm.nvim": { "branch": "main", "commit": "cbd041d91b90cd3c02df03fe6133208888f8e008" }, | |||||
"vim-cppman": { "branch": "master", "commit": "de1318252b68fba9b8249254475b6e050d160b73" }, | |||||
"vim-illuminate": { "branch": "master", "commit": "3bd2ab64b5d63b29e05691e624927e5ebbf0fb86" }, | |||||
"vim-snippets": { "branch": "master", "commit": "ba72b08e04e184ecd0a2a1b8012a81ddb040dbc3" }, | |||||
"vim-surround": { "branch": "master", "commit": "3d188ed2113431cf8dac77be61b842acb64433d9" }, | |||||
"vim-tmux-navigator": { "branch": "master", "commit": "38b1d0402c4600543281dc85b3f51884205674b6" }, | |||||
"vimtex": { "branch": "master", "commit": "f9b19d09ee6f0ba70dad0b5c2e710dd700681000" }, | |||||
"which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" }, | |||||
"zen-mode.nvim": { "branch": "main", "commit": "50e2e2a36cc97847d9ab3b1a3555ba2ef6839b50" } | |||||
} |
@ -0,0 +1,30 @@ | |||||
local M = {} | |||||
M.skull_bent = { | |||||
[[ :::!~!!!!!:. ]], | |||||
[[ .xUHWH!! !!?M88WHX:. ]], | |||||
[[ .X*#M@$!! !X!M$$$$$$WWx:. ]], | |||||
[[ :!!!!!!?H! :!$!$$$$$$$$$$8X: ]], | |||||
[[ !!~ ~:~!! :~!$!#$$$$$$$$$$8X: ]], | |||||
[[ :!~::!H!< ~.U$X!?R$$$$$$$$MM! ]], | |||||
[[ ~!~!!!!~~ .:XW$$$U!!?$$$$$$RMM! ]], | |||||
[[ !:~~~ .:!M"T#$$$$WX??#MRRMMM! ]], | |||||
[[ ~?WuxiW*` `"#$$$$8!!!!??!!! ]], | |||||
[[ :X- M$$$$ `"T#$T~!8$WUXU~ ]], | |||||
[[ :%` ~#$$$m: ~!~ ?$$$$$$ ]], | |||||
[[ :!`.- ~T$$$$8xx. .xWW- ~""##*" ]], | |||||
[[..... -~~:<` ! ~?T#$$@@W@*?$$ /` ]], | |||||
[[W$@@M!!! .!~~ !! .:XUW$W!~ `"~: : ]], | |||||
[[#"~~`.:x%`!! !H: !WM$$$$Ti.: .!WUn+!` ]], | |||||
[[:::~:!!`:X~ .: ?H.!u "$$$B$$$!W:U!T$$M~ ]], | |||||
[[.~~ :X@!.-~ ?@WTWo("*$$$W$TH$! ` ]], | |||||
[[Wi.~!X$?!-~ : ?$$$B$Wu("**$RM! ]], | |||||
[[$R@i.~~ ! : ~$$$$$B$$en:`` ]], | |||||
[[?MXT@Wx.~ : ~"##*$$$$M~ ]], | |||||
} | |||||
M.all = { | |||||
M.skull_bent | |||||
} | |||||
return M |
@ -0,0 +1,25 @@ | |||||
-- Appearance Settings | |||||
-- Set command-line height | |||||
vim.opt.cmdheight = 2 | |||||
-- Tab and indent settings | |||||
vim.opt.expandtab = true | |||||
vim.opt.shiftwidth = 2 | |||||
vim.opt.tabstop = 2 | |||||
-- Status line | |||||
vim.opt.laststatus = 2 | |||||
-- Material theme style | |||||
vim.opt.termguicolors = true | |||||
-- Colorscheme settings | |||||
vim.opt.background = "dark" | |||||
vim.cmd.colorscheme "catppuccin" | |||||
vim.wo.relativenumber = true | |||||
vim.wo.number = true | |||||
vim.o.guifont = "CaskaydiaCove Nerd Font Mono:h8:#h-slight" | |||||
vim.g.neovide_cursor_vfx_mode = "railgun" |
@ -0,0 +1,62 @@ | |||||
local dap, dapui = require("dap"), require("dapui") | |||||
-- Set breakpoint icon | |||||
vim.fn.sign_define('DapBreakpoint', {text='', texthl='red', linehl='red', numhl='red'}) | |||||
-- Bind nvim-dap-ui to dap events | |||||
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 | |||||
-- Python | |||||
dap.adapters.python = { | |||||
type = 'executable'; | |||||
command = 'python'; | |||||
args = { '-m', 'debugpy.adapter' }; | |||||
} | |||||
dap.configurations.python = { | |||||
{ | |||||
type = 'python'; | |||||
request = 'launch'; | |||||
name = "Launch file"; | |||||
program = "${file}"; | |||||
pythonPath = function() | |||||
return '/usr/bin/python' | |||||
end; | |||||
}, | |||||
} | |||||
dap.adapters.bashdb = { | |||||
type = 'executable'; | |||||
command = vim.fn.stdpath("data") .. '/mason/packages/bash-debug-adapter/bash-debug-adapter'; | |||||
name = 'bashdb'; | |||||
} | |||||
dap.configurations.sh = { | |||||
{ | |||||
type = 'bashdb'; | |||||
request = 'launch'; | |||||
name = "Launch file"; | |||||
showDebugOutput = true; | |||||
pathBashdb = vim.fn.stdpath("data") .. '/mason/packages/bash-debug-adapter/extension/bashdb_dir/bashdb'; | |||||
pathBashdbLib = vim.fn.stdpath("data") .. '/mason/packages/bash-debug-adapter/extension/bashdb_dir'; | |||||
trace = true; | |||||
file = "${file}"; | |||||
program = "${file}"; | |||||
cwd = '${workspaceFolder}'; | |||||
pathCat = "cat"; | |||||
pathBash = "/bin/bash"; | |||||
pathMkfifo = "mkfifo"; | |||||
pathPkill = "pkill"; | |||||
args = {}; | |||||
env = {}; | |||||
terminalKind = "integrated"; | |||||
} | |||||
} |
@ -0,0 +1,3 @@ | |||||
require('config.settings') | |||||
require('config.appearance') | |||||
require('config.dap') |
@ -0,0 +1,3 @@ | |||||
return { | |||||
filetypes = {'cmake', 'CMakeLists.txt'} | |||||
} |
@ -0,0 +1,95 @@ | |||||
local function is_null_ls_formatting_enabled(bufnr) | |||||
local file_type = vim.api.nvim_buf_get_option(bufnr, "filetype") | |||||
local generators = require("null-ls.generators").get_available( | |||||
file_type, | |||||
require("null-ls.methods").internal.FORMATTING | |||||
) | |||||
return #generators > 0 | |||||
end | |||||
local custom_attach = function(client, bufnr) | |||||
-- null-ls formatting support | |||||
if client.server_capabilities.documentFormattingProvider then | |||||
if | |||||
client.name == "null-ls" and is_null_ls_formatting_enabled(bufnr) | |||||
or client.name ~= "null-ls" | |||||
then | |||||
vim.bo[bufnr].formatexpr = "v:lua.vim.lsp.formatexpr()" | |||||
vim.keymap.set("n", "<leader>gq", "<cmd>lua vim.lsp.buf.format({ async = true })<CR>", opts) | |||||
else | |||||
vim.bo[bufnr].formatexpr = nil | |||||
end | |||||
end | |||||
vim.api.nvim_create_autocmd("CursorHold", { | |||||
buffer=bufnr, | |||||
callback = function() | |||||
local opts = { | |||||
focusable = false, | |||||
close_events = { "BufLeave", "CursorMoved", "InsertEnter", "FocusLost" }, | |||||
border = 'rounded', | |||||
source = 'always', -- show source in diagnostic popup window | |||||
prefix = ' ' | |||||
} | |||||
if not vim.b.diagnostics_pos then | |||||
vim.b.diagnostics_pos = { nil, nil } | |||||
end | |||||
local cursor_pos = vim.api.nvim_win_get_cursor(0) | |||||
if (cursor_pos[1] ~= vim.b.diagnostics_pos[1] or cursor_pos[2] ~= vim.b.diagnostics_pos[2]) and | |||||
#vim.diagnostic.get() > 0 | |||||
then | |||||
vim.diagnostic.open_float(nil, opts) | |||||
end | |||||
vim.b.diagnostics_pos = cursor_pos | |||||
end | |||||
}) | |||||
-- Make K show hover menu if it is supported | |||||
vim.keymap.set('n', 'K', vim.lsp.buf.hover, { buffer = bufnr }) | |||||
-- The blow command will highlight the current variable and its usages in the buffer. | |||||
if client.server_capabilities.document_highlight then | |||||
vim.cmd([[ | |||||
hi! link LspReferenceRead Visual | |||||
hi! link LspReferenceText Visual | |||||
hi! link LspReferenceWrite Visual | |||||
augroup lsp_document_highlight | |||||
autocmd CursorHold <buffer> lua vim.lsp.buf.document_highlight() | |||||
autocmd CursorHoldI <buffer> lua vim.lsp.buf.document_highlight() | |||||
autocmd CursorMoved <buffer> lua vim.lsp.buf.clear_references() | |||||
augroup END | |||||
]]) | |||||
end | |||||
if vim.g.logging_level == 'debug' then | |||||
local msg = string.format("Language server %s started!", client.name) | |||||
vim.notify(msg, 'info', {title = 'Nvim-config'}) | |||||
end | |||||
end | |||||
local utils = require("utils") | |||||
local lspconfigs = { | |||||
clangd = {}, | |||||
pyright = {}, | |||||
bashls = {}, | |||||
html = {}, | |||||
tsserver = {}, | |||||
lua_ls = require("config.lsp.lua_ls"), | |||||
cssls = {}, | |||||
asm_lsp = {}, | |||||
rust_analyzer = require("config.lsp.rust_analyzer"), | |||||
cmake = require("config.lsp.cmake"), | |||||
} | |||||
local mason_extras = { | |||||
} | |||||
return { | |||||
mason_servers = utils.mergeTables(utils.getTableKeys(lspconfigs), mason_extras), | |||||
lspconfigs = lspconfigs, | |||||
lsp_onattach = custom_attach | |||||
} |
@ -0,0 +1,27 @@ | |||||
return { | |||||
settings = { | |||||
Lua = { | |||||
runtime = { | |||||
-- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) | |||||
version = 'LuaJIT', | |||||
-- Setup your lua path | |||||
path = vim.split(package.path, ';'), | |||||
}, | |||||
diagnostics = { | |||||
-- Get the language server to recognize the `vim` global | |||||
globals = {'vim'}, | |||||
}, | |||||
workspace = { | |||||
-- Make the server aware of Neovim runtime files | |||||
library = { | |||||
[vim.fn.expand('$VIMRUNTIME/lua')] = true, | |||||
[vim.fn.expand('$VIMRUNTIME/lua/vim/lsp')] = true, | |||||
}, | |||||
}, | |||||
-- Do not send telemetry data containing a randomized but unique identifier | |||||
telemetry = { | |||||
enable = false, | |||||
}, | |||||
}, | |||||
}, | |||||
} |
@ -0,0 +1,9 @@ | |||||
return { | |||||
settings = { | |||||
['rust-analyzer'] = { | |||||
diagnostics = { | |||||
enable = false; | |||||
} | |||||
} | |||||
} | |||||
} |
@ -0,0 +1,11 @@ | |||||
return function () | |||||
require('aerial').setup({ | |||||
-- Your configuration here | |||||
-- To auto-open the aerial window on entering a buffer: | |||||
on_attach = function(bufnr) | |||||
vim.keymap.set("n", "{", "<cmd>AerialPrev<CR>", { buffer = bufnr }) | |||||
vim.keymap.set("n", "}", "<cmd>AerialNext<CR>", { buffer = bufnr }) | |||||
require('aerial').open({focus = false}) | |||||
end | |||||
}) | |||||
end |
@ -0,0 +1,112 @@ | |||||
return function() | |||||
local theme = require("alpha.themes.theta") | |||||
local art = require("art") | |||||
local quotes = require("quotes") | |||||
-- Header | |||||
local function apply_gradient_hl(text) | |||||
local gradient = require("utils").create_gradient("#CBA6F7", "#94E2D5", #text) | |||||
local lines = {} | |||||
for i, line in ipairs(text) do | |||||
local tbl = { | |||||
type = "text", | |||||
val = line, | |||||
opts = { | |||||
hl = "HeaderGradient" .. i, | |||||
shrink_margin = false, | |||||
position = "center", | |||||
}, | |||||
} | |||||
table.insert(lines, tbl) | |||||
-- create hl group | |||||
vim.api.nvim_set_hl(0, "HeaderGradient" .. i, { fg = gradient[i] }) | |||||
end | |||||
return { | |||||
type = "group", | |||||
val = lines, | |||||
opts = { position = "center" }, | |||||
} | |||||
end | |||||
local function footer_align(quote_text, width) | |||||
local max_width = width or 35 | |||||
local tbl = {} | |||||
for _, text in ipairs(quote_text) do | |||||
local padded_text = require("utils").pad_string(text, max_width, "right") | |||||
table.insert(tbl, { type = "text", val = padded_text, opts = { hl = "Comment", position = "center" } }) | |||||
end | |||||
return { | |||||
type = "group", | |||||
val = tbl, | |||||
opts = {}, | |||||
} | |||||
end | |||||
local function get_info() | |||||
local lazy_stats = require("lazy").stats() | |||||
local total_plugins = " " .. lazy_stats.loaded .. "/" .. lazy_stats.count .. " packages" | |||||
local datetime = os.date(" %A %B %d") | |||||
local version = vim.version() | |||||
local nvim_version_info = "ⓥ " .. version.major .. "." .. version.minor .. "." .. version.patch | |||||
local info_string = datetime .. " | " .. total_plugins .. " | " .. nvim_version_info | |||||
return { | |||||
type = "text", | |||||
val = info_string, | |||||
opts = { | |||||
hl = "Delimiter", | |||||
position = "center", | |||||
}, | |||||
} | |||||
end | |||||
-- Links / tools | |||||
local dashboard = require("alpha.themes.dashboard") | |||||
local links = { | |||||
type = "group", | |||||
val = { | |||||
dashboard.button("e", " Edit Empty Buffer", "<cmd>ene<CR>"), | |||||
dashboard.button("s", " Open Sesssion", "<cmd>Telescope session-lens<CR>"), | |||||
dashboard.button("o", " Open File", "<cmd>Telescope fd<CR>"), | |||||
dashboard.button("d", " Open Folder", "<cmd>let dir=system(\"zenity --file-selection --directory\")<CR><cmd>cd `=dir`<CR>"), | |||||
dashboard.button("c", " Edit Configuration", "<cmd>cd ~/.config/nvim<CR><cmd> Telescope fd<CR>"), | |||||
dashboard.button("u", " Update Plugins", "<cmd>Lazy update<CR>"), | |||||
}, | |||||
position = "center", | |||||
} | |||||
-- MRU | |||||
local function get_mru(max_shown) | |||||
local tbl = { | |||||
{ type = "text", val = "Recent Files", opts = { hl = "SpecialComment", position = "center" } }, | |||||
} | |||||
local mru_list = theme.mru(1, "", max_shown) | |||||
for _, file in ipairs(mru_list.val) do | |||||
table.insert(tbl, file) | |||||
end | |||||
return { type = "group", val = tbl, opts = {} } | |||||
end | |||||
theme.config.layout = { | |||||
{ type = "padding", val = 4 }, | |||||
apply_gradient_hl(art.skull_bent), | |||||
{ type = "padding", val = 1 }, | |||||
get_info(), | |||||
{ type = "padding", val = 1 }, | |||||
links, | |||||
{ type = "padding", val = 2 }, | |||||
get_mru(5), | |||||
{ type = "padding", val = 3 }, | |||||
footer_align(quotes.simple_einstein, 50), | |||||
} | |||||
require("alpha").setup(theme.config) | |||||
end |
@ -0,0 +1,36 @@ | |||||
return function() | |||||
require("auto-session").setup { | |||||
log_level = "error", | |||||
auto_session_suppress_dirs = { "~/", "~/Projects", "~/Downloads", "/"}, | |||||
auto_save_enabled = true, | |||||
auto_session_enabled = true, | |||||
bypass_session_save_file_types = { | |||||
"alpha", | |||||
"NvimTree", | |||||
"aerial", | |||||
}, | |||||
post_restore_cmds = { | |||||
function() | |||||
local unwanted_fts = { | |||||
alpha=true, | |||||
aerial=true, | |||||
NvimTree=true, | |||||
} | |||||
for _, buffer in ipairs(vim.api.nvim_list_bufs()) do | |||||
-- Check if the buffer's filetype matches | |||||
local ft = vim.api.nvim_buf_get_option(buffer, 'filetype') | |||||
if unwanted_fts[ft] or #ft == 0 then | |||||
-- Close the buffer | |||||
vim.api.nvim_buf_delete(buffer, {force = true}) | |||||
end | |||||
end | |||||
end, | |||||
function() | |||||
require("nvim-tree.api").tree.open({ focus = false }) | |||||
end, | |||||
} | |||||
} | |||||
end | |||||
@ -0,0 +1,32 @@ | |||||
vim.g.barbar_auto_setup = false -- disable auto-setup | |||||
return { | |||||
auto_hide = 1, | |||||
clickable = true, | |||||
focus_on_close = 'previous', | |||||
icons = { | |||||
button = '', | |||||
-- Enables / disables diagnostic symbols | |||||
diagnostics = { | |||||
[vim.diagnostic.severity.ERROR] = {enabled = true, icon = ''}, | |||||
[vim.diagnostic.severity.WARN] = {enabled = false}, | |||||
[vim.diagnostic.severity.INFO] = {enabled = false}, | |||||
[vim.diagnostic.severity.HINT] = {enabled = true}, | |||||
}, | |||||
gitsigns = { | |||||
added = {enabled = true, icon = '+'}, | |||||
changed = {enabled = true, icon = '~'}, | |||||
deleted = {enabled = true, icon = '-'}, | |||||
}, | |||||
modified = {button = '●'}, | |||||
pinned = {button = '', filename = true}, | |||||
}, | |||||
-- Set the filetypes which barbar will offset itself for | |||||
sidebar_filetypes = { | |||||
NvimTree = true, | |||||
}, | |||||
} |
@ -0,0 +1,50 @@ | |||||
return { | |||||
flavour = "mocha", -- latte, frappe, macchiato, mocha | |||||
background = { -- :h background | |||||
light = "latte", | |||||
dark = "mocha", | |||||
}, | |||||
transparent_background = false, -- disables setting the background color. | |||||
show_end_of_buffer = false, -- shows the '~' characters after the end of buffers | |||||
term_colors = false, -- sets terminal colors (e.g. `g:terminal_color_0`) | |||||
dim_inactive = { | |||||
enabled = false, -- dims the background color of inactive window | |||||
shade = "dark", | |||||
percentage = 0.15, -- percentage of the shade to apply to the inactive window | |||||
}, | |||||
no_italic = false, -- Force no italic | |||||
no_bold = false, -- Force no bold | |||||
no_underline = false, -- Force no underline | |||||
styles = { -- Handles the styles of general hi groups (see `:h highlight-args`): | |||||
comments = { "italic" }, -- Change the style of comments | |||||
conditionals = { "italic" }, | |||||
loops = {}, functions = {}, | |||||
keywords = {}, | |||||
strings = {}, | |||||
variables = {}, | |||||
numbers = {}, | |||||
booleans = {}, | |||||
properties = {}, | |||||
types = {}, | |||||
operators = {}, | |||||
}, | |||||
color_overrides = {}, | |||||
custom_highlights = {}, | |||||
integrations = { | |||||
cmp = true, | |||||
gitsigns = true, | |||||
treesitter = true, | |||||
which_key = true, | |||||
alpha=true, | |||||
noice = true, | |||||
mason = true, | |||||
neogit = true, | |||||
nvimtree = true, | |||||
mini = { | |||||
enabled = true, | |||||
indentscope_color = "", | |||||
}, | |||||
-- For more plugins integrations please scroll down (https://github.com/catppuccin/nvim#integrations) | |||||
}, | |||||
} | |||||
@ -0,0 +1,12 @@ | |||||
return function () | |||||
-- require("copilot").setup({ | |||||
-- auto_refresh = false, | |||||
-- suggestion = { | |||||
-- enabled = false, | |||||
-- auto_trigger = false, | |||||
-- }, | |||||
-- panel = { | |||||
-- enabled = false | |||||
-- }, | |||||
-- }) | |||||
end |
@ -0,0 +1,40 @@ | |||||
local function setup() | |||||
local db = require("dashboard"); | |||||
local art = require("art") | |||||
local utils = require("utils") | |||||
db.setup({ | |||||
theme = 'hyper', | |||||
config = { | |||||
header = art.skull_bent, | |||||
week_header = { | |||||
append = true | |||||
}, | |||||
shortcut = { | |||||
{ desc = ' Update', group = '@property', action = 'Lazy update', key = 'u' }, | |||||
{ | |||||
icon = ' ', | |||||
icon_hl = '@variable', | |||||
desc = 'Files', | |||||
group = 'Label', | |||||
action = 'Telescope find_files', | |||||
key = 'f', | |||||
}, | |||||
{ | |||||
desc = ' Apps', | |||||
group = 'DiagnosticHint', | |||||
action = 'Telescope app', | |||||
key = 'a', | |||||
}, | |||||
{ | |||||
desc = ' dotfiles', | |||||
group = 'Number', | |||||
action = 'Telescope dotfiles', | |||||
key = 'd', | |||||
}, | |||||
}, | |||||
}, | |||||
}) | |||||
end | |||||
return setup; |
@ -0,0 +1,4 @@ | |||||
return function () | |||||
local harpoon = require('harpoon') | |||||
harpoon:setup({}) | |||||
end |
@ -0,0 +1,7 @@ | |||||
return { | |||||
exclude = { | |||||
filetypes = { | |||||
"dashboard" | |||||
} | |||||
} | |||||
} |
@ -0,0 +1,279 @@ | |||||
-- Eviline config for lualine | |||||
-- Author: shadmansaleh | |||||
-- Credit: glepnir | |||||
-- Color table for highlights | |||||
-- stylua: ignore | |||||
local colors = { | |||||
bg = '#202328', | |||||
fg = '#bbc2cf', | |||||
yellow = '#ECBE7B', | |||||
cyan = '#008080', | |||||
darkblue = '#081633', | |||||
green = '#98be65', | |||||
orange = '#FF8800', | |||||
violet = '#a9a1e1', | |||||
magenta = '#c678dd', | |||||
blue = '#51afef', | |||||
red = '#ec5f67', | |||||
} | |||||
local function show_macro_recording() | |||||
local recording_register = vim.fn.reg_recording() | |||||
if recording_register == "" then | |||||
return "" | |||||
else | |||||
return "Recording @" .. recording_register | |||||
end | |||||
end | |||||
local conditions = { | |||||
buffer_not_empty = function() | |||||
return vim.fn.empty(vim.fn.expand('%:t')) ~= 1 | |||||
end, | |||||
hide_in_width = function() | |||||
return vim.fn.winwidth(0) > 80 | |||||
end, | |||||
check_git_workspace = function() | |||||
local filepath = vim.fn.expand('%:p:h') | |||||
local gitdir = vim.fn.finddir('.git', filepath .. ';') | |||||
return gitdir and #gitdir > 0 and #gitdir < #filepath | |||||
end, | |||||
} | |||||
-- Config | |||||
local config = function() | |||||
local config = { | |||||
extensions = {'nvim-tree', 'nvim-dap-ui', 'aerial'}, | |||||
options = { | |||||
-- Disable lualine in nvim-tree | |||||
-- disabled_filetypes = { 'packer', 'NvimTree' }, | |||||
-- Disable sections and component separators | |||||
component_separators = '', | |||||
section_separators = '', | |||||
theme = { | |||||
-- We are going to use lualine_c an lualine_x as left and | |||||
-- right section. Both are highlighted by c theme . So we | |||||
-- are just setting default looks o statusline | |||||
normal = { c = { fg = colors.fg, bg = colors.bg } }, | |||||
inactive = { c = { fg = colors.fg, bg = colors.bg } }, | |||||
}, | |||||
}, | |||||
sections = { | |||||
-- these are to remove the defaults | |||||
lualine_a = {}, | |||||
lualine_b = {}, | |||||
lualine_y = {}, | |||||
lualine_z = {}, | |||||
-- These will be filled later | |||||
lualine_c = {}, | |||||
lualine_x = {}, | |||||
}, | |||||
inactive_sections = { | |||||
-- these are to remove the defaults | |||||
lualine_a = {}, | |||||
lualine_b = {}, | |||||
lualine_y = {}, | |||||
lualine_z = {}, | |||||
lualine_c = {}, | |||||
lualine_x = {}, | |||||
}, | |||||
} | |||||
-- Inserts a component in lualine_c at left section | |||||
local function ins_left(component) | |||||
table.insert(config.sections.lualine_c, component) | |||||
end | |||||
-- Inserts a component in lualine_x at right section | |||||
local function ins_right(component) | |||||
table.insert(config.sections.lualine_x, component) | |||||
end | |||||
ins_left { | |||||
function() | |||||
return '▊' | |||||
end, | |||||
color = { fg = colors.blue }, -- Sets highlighting of component | |||||
padding = { left = 0, right = 1 }, -- We don't need space before this | |||||
} | |||||
ins_left { | |||||
-- mode component | |||||
function() | |||||
return '' | |||||
end, | |||||
color = function() | |||||
-- auto change color according to neovims mode | |||||
local mode_color = { | |||||
n = colors.red, | |||||
i = colors.green, | |||||
v = colors.blue, | |||||
[''] = colors.blue, | |||||
V = colors.blue, | |||||
c = colors.magenta, | |||||
no = colors.red, | |||||
s = colors.orange, | |||||
S = colors.orange, | |||||
[''] = colors.orange, | |||||
ic = colors.yellow, | |||||
R = colors.violet, | |||||
Rv = colors.violet, | |||||
cv = colors.red, | |||||
ce = colors.red, | |||||
r = colors.cyan, | |||||
rm = colors.cyan, | |||||
['r?'] = colors.cyan, | |||||
['!'] = colors.red, | |||||
t = colors.red, | |||||
} | |||||
return { fg = mode_color[vim.fn.mode()] } | |||||
end, | |||||
padding = { right = 1 }, | |||||
} | |||||
ins_left { | |||||
-- filesize component | |||||
'filesize', | |||||
cond = conditions.buffer_not_empty, | |||||
} | |||||
ins_left { | |||||
'macro-recording', | |||||
fmt = show_macro_recording, | |||||
} | |||||
ins_left { | |||||
'filename', | |||||
cond = conditions.buffer_not_empty, | |||||
color = { fg = colors.magenta, gui = 'bold' }, | |||||
} | |||||
ins_left { 'location' } | |||||
ins_left { 'progress', color = { fg = colors.fg, gui = 'bold' } } | |||||
ins_left { | |||||
'diagnostics', | |||||
sources = { 'nvim_diagnostic' }, | |||||
symbols = { error = ' ', warn = ' ', info = ' ' }, | |||||
diagnostics_color = { | |||||
color_error = { fg = colors.red }, | |||||
color_warn = { fg = colors.yellow }, | |||||
color_info = { fg = colors.cyan }, | |||||
}, | |||||
} | |||||
-- Insert mid section. You can make any number of sections in neovim :) | |||||
-- for lualine it's any number greater then 2 | |||||
ins_left { | |||||
function() | |||||
return '%=' | |||||
end, | |||||
} | |||||
ins_left { | |||||
-- Lsp server name . | |||||
function() | |||||
local msg = 'No Active Lsp' | |||||
local buf_ft = vim.api.nvim_buf_get_option(0, 'filetype') | |||||
local clients = vim.lsp.get_active_clients() | |||||
if next(clients) == nil then | |||||
return msg | |||||
end | |||||
for _, client in ipairs(clients) do | |||||
local filetypes = client.config.filetypes | |||||
if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then | |||||
return client.name | |||||
end | |||||
end | |||||
return msg | |||||
end, | |||||
icon = ' LSP:', | |||||
color = { fg = '#ffffff', gui = 'bold' }, | |||||
} | |||||
ins_right { | |||||
'copilot', | |||||
show_colors = true, | |||||
show_loading = true | |||||
} | |||||
-- Add components to right sections | |||||
ins_right { | |||||
'o:encoding', -- option component same as &encoding in viml | |||||
fmt = string.upper, -- I'm not sure why it's upper case either ;) | |||||
cond = conditions.hide_in_width, | |||||
color = { fg = colors.green, gui = 'bold' }, | |||||
} | |||||
ins_right { | |||||
'fileformat', | |||||
fmt = string.upper, | |||||
icons_enabled = false, -- I think icons are cool but Eviline doesn't have them. sigh | |||||
color = { fg = colors.green, gui = 'bold' }, | |||||
} | |||||
ins_right { | |||||
'branch', | |||||
icon = '', | |||||
color = { fg = colors.violet, gui = 'bold' }, | |||||
} | |||||
ins_right { | |||||
'diff', | |||||
-- Is it me or the symbol for modified us really weird | |||||
symbols = { added = ' ', modified = ' ', removed = ' ' }, | |||||
diff_color = { | |||||
added = { fg = colors.green }, | |||||
modified = { fg = colors.orange }, | |||||
removed = { fg = colors.red }, | |||||
}, | |||||
cond = conditions.hide_in_width, | |||||
} | |||||
ins_right { | |||||
function() | |||||
return '▊' | |||||
end, | |||||
color = { fg = colors.blue }, | |||||
padding = { left = 1 }, | |||||
} | |||||
local lualine = require("lualine"); | |||||
vim.api.nvim_create_autocmd("RecordingEnter", { | |||||
callback = function() | |||||
lualine.refresh({ | |||||
place = { "statusline" }, | |||||
}) | |||||
end, | |||||
}) | |||||
vim.api.nvim_create_autocmd("RecordingLeave", { | |||||
callback = function() | |||||
-- This is going to seem really weird! | |||||
-- Instead of just calling refresh we need to wait a moment because of the nature of | |||||
-- `vim.fn.reg_recording`. If we tell lualine to refresh right now it actually will | |||||
-- still show a recording occuring because `vim.fn.reg_recording` hasn't emptied yet. | |||||
-- So what we need to do is wait a tiny amount of time (in this instance 50 ms) to | |||||
-- ensure `vim.fn.reg_recording` is purged before asking lualine to refresh. | |||||
local timer = vim.loop.new_timer() | |||||
timer:start( | |||||
50, | |||||
0, | |||||
vim.schedule_wrap(function() | |||||
lualine.refresh({ | |||||
place = { "statusline" }, | |||||
}) | |||||
end) | |||||
) | |||||
end, | |||||
}) | |||||
lualine.setup(config) | |||||
end | |||||
return config | |||||
@ -0,0 +1,14 @@ | |||||
return function () | |||||
require('mini.surround').setup({}) | |||||
require('mini.splitjoin').setup({}) | |||||
require('mini.trailspace').setup({}) | |||||
require('mini.comment').setup({}) | |||||
require('mini.align').setup({}) | |||||
vim.api.nvim_create_autocmd("Filetype", { | |||||
pattern = "dashboard", | |||||
callback = function() | |||||
vim.b.minitrailspace_disable = true | |||||
end | |||||
}) | |||||
end |
@ -0,0 +1,3 @@ | |||||
return { | |||||
library = { plugins = { "nvim-dap-ui" }, types = true }, | |||||
} |
@ -0,0 +1,18 @@ | |||||
return { | |||||
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, | |||||
}, | |||||
}, | |||||
-- you can enable a preset for easier configuration | |||||
presets = { | |||||
bottom_search = true, -- 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 | |||||
}, | |||||
} |
@ -0,0 +1,8 @@ | |||||
return function() | |||||
local null_ls = require("null-ls") | |||||
null_ls.setup({ | |||||
sources = { | |||||
null_ls.builtins.formatting.stylua, | |||||
}, | |||||
}) | |||||
end |
@ -0,0 +1,110 @@ | |||||
local has_words_before = function() | |||||
unpack = unpack or table.unpack | |||||
local line, col = unpack(vim.api.nvim_win_get_cursor(0)) | |||||
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil | |||||
end | |||||
return function() | |||||
local cmp = require'cmp' | |||||
local snippy = require("snippy") | |||||
local lspkind = require('lspkind') | |||||
cmp.setup({ | |||||
snippet = { | |||||
expand = function(args) | |||||
require('snippy').expand_snippet(args.body) -- For `snippy` users. | |||||
end, | |||||
}, | |||||
window = { | |||||
completion = cmp.config.window.bordered(), | |||||
documentation = cmp.config.window.bordered(), | |||||
}, | |||||
mapping = cmp.mapping.preset.insert({ | |||||
['<C-b>'] = cmp.mapping.scroll_docs(-4), | |||||
['<C-f>'] = cmp.mapping.scroll_docs(4), | |||||
['<C-Space>'] = cmp.mapping.complete(), | |||||
['<C-e>'] = cmp.mapping.abort(), | |||||
["<CR>"] = cmp.mapping({ | |||||
i = function(fallback) | |||||
if cmp.visible() and cmp.get_active_entry() then | |||||
cmp.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = false }) | |||||
else | |||||
fallback() | |||||
end | |||||
end, | |||||
s = cmp.mapping.confirm({ select = false }), | |||||
c = cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = false }), | |||||
}), | |||||
["<Tab>"] = cmp.mapping(function(fallback) | |||||
if cmp.visible() then | |||||
cmp.select_next_item() | |||||
elseif snippy.can_expand_or_advance() then | |||||
snippy.expand_or_advance() | |||||
elseif has_words_before() then | |||||
cmp.complete() | |||||
else | |||||
fallback() | |||||
end | |||||
end, { "i", "s" }), | |||||
["<S-Tab>"] = cmp.mapping(function(fallback) | |||||
if cmp.visible() then | |||||
cmp.select_prev_item() | |||||
elseif snippy.can_jump(-1) then | |||||
snippy.previous() | |||||
else | |||||
fallback() | |||||
end | |||||
end, { "i", "s" }), | |||||
}), | |||||
sources = cmp.config.sources({ | |||||
{ name = "copilot" }, | |||||
{ name = 'nvim_lsp' }, | |||||
{ name = 'snippy' }, | |||||
{ name = 'vimtex', }, | |||||
{ name = 'path' }, | |||||
}, { | |||||
{ name = 'buffer' }, | |||||
}), | |||||
formatting = { | |||||
format = lspkind.cmp_format({ | |||||
mode = 'symbol_text', | |||||
preset = 'codicons', | |||||
maxwidth = 50, | |||||
ellipsis_char = '...', | |||||
before = function (entry, vim_item) | |||||
return vim_item | |||||
end, | |||||
symbol_map = { Copilot = "" }, | |||||
}) | |||||
} | |||||
}) | |||||
cmp.setup.filetype('gitcommit', { | |||||
sources = cmp.config.sources({ | |||||
{ name = 'git' }, | |||||
}, { | |||||
{ name = 'buffer' }, | |||||
}) | |||||
}) | |||||
cmp.setup.cmdline({ '/', '?' }, { | |||||
mapping = cmp.mapping.preset.cmdline(), | |||||
view = { | |||||
entries = {name = 'wildmenu', separator = '|' } | |||||
}, | |||||
sources = { | |||||
{ name = 'buffer' }, | |||||
{ name = 'path' } | |||||
} | |||||
}) | |||||
cmp.setup.cmdline(':', { | |||||
mapping = cmp.mapping.preset.cmdline(), | |||||
sources = cmp.config.sources({ | |||||
{ name = 'path' } | |||||
}, { | |||||
{ name = 'cmdline' } | |||||
}) | |||||
}) | |||||
end |
@ -0,0 +1,17 @@ | |||||
return function () | |||||
require('nvim-devdocs').setup({ | |||||
float_win = { | |||||
relative = "editor", | |||||
height = 50, | |||||
width = 170, | |||||
border = "rounded", | |||||
}, | |||||
wrap = false, | |||||
previewer_cmd = "glow", | |||||
cmd_args = { "-s", "dark", "-w", "80" }, | |||||
after_open = function(bufnr) | |||||
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<Esc>', ':close<CR>', {}) | |||||
end | |||||
}) | |||||
end | |||||
@ -0,0 +1,34 @@ | |||||
local function open_nvim_tree(data) | |||||
-- buffer is a real file on the disk | |||||
local real_file = vim.fn.filereadable(data.file) == 1 | |||||
if not real_file then | |||||
return | |||||
end | |||||
-- open the tree, find the file but don't focus it | |||||
require("nvim-tree.api").tree.open({ focus = false, find_file = true, }) | |||||
end | |||||
vim.api.nvim_create_autocmd({ "BufCreate" }, { callback = open_nvim_tree }) | |||||
return function () | |||||
require("nvim-tree").setup({ | |||||
sort_by = "case_sensitive", | |||||
update_focused_file = { | |||||
enable = true, | |||||
update_cwd = true, | |||||
}, | |||||
view = { | |||||
adaptive_size = true, | |||||
}, | |||||
diagnostics = { | |||||
enable = true, | |||||
show_on_dirs = true | |||||
}, | |||||
renderer = { | |||||
group_empty = false, | |||||
}, | |||||
}) | |||||
end |
@ -0,0 +1,31 @@ | |||||
local handler = function(virtText, lnum, endLnum, width, truncate) | |||||
local newVirtText = {} | |||||
local suffix = (" %d "):format(endLnum - lnum) | |||||
local sufWidth = vim.fn.strdisplaywidth(suffix) | |||||
local targetWidth = width - sufWidth | |||||
local curWidth = 0 | |||||
for _, chunk in ipairs(virtText) do | |||||
local chunkText = chunk[1] | |||||
local chunkWidth = vim.fn.strdisplaywidth(chunkText) | |||||
if targetWidth > curWidth + chunkWidth then | |||||
table.insert(newVirtText, chunk) | |||||
else | |||||
chunkText = truncate(chunkText, targetWidth - curWidth) | |||||
local hlGroup = chunk[2] | |||||
table.insert(newVirtText, { chunkText, hlGroup }) | |||||
chunkWidth = vim.fn.strdisplaywidth(chunkText) | |||||
-- str width returned from truncate() may less than 2nd argument, need padding | |||||
if curWidth + chunkWidth < targetWidth then | |||||
suffix = suffix .. (" "):rep(targetWidth - curWidth - chunkWidth) | |||||
end | |||||
break | |||||
end | |||||
curWidth = curWidth + chunkWidth | |||||
end | |||||
table.insert(newVirtText, { suffix, "MoreMsg" }) | |||||
return newVirtText | |||||
end | |||||
return { | |||||
fold_virt_text_handler = handler, | |||||
} |
@ -0,0 +1,27 @@ | |||||
local options = { | |||||
defaults = { | |||||
layout_strategy = 'horizontal', | |||||
layout_config = { | |||||
height = 0.95, | |||||
prompt_position = "top" | |||||
}, | |||||
sorting_strategy = "ascending", | |||||
color_devicons = true, | |||||
mappings = { | |||||
}, | |||||
}, | |||||
pickers = { | |||||
man_pages = { | |||||
sections = { "2", "3" } | |||||
} | |||||
}, | |||||
extensions = { | |||||
["ui-select"] = { | |||||
require("telescope.themes").get_dropdown { | |||||
} | |||||
}, | |||||
}, | |||||
extensions_list = { "ui-select", "session-lens" }, | |||||
} | |||||
return options |
@ -0,0 +1,13 @@ | |||||
return { | |||||
ensure_installed = { "html", "json", "c", "cpp", "css", "bash", "lua", "java", "python", "javascript", "latex", "markdown" }, | |||||
sync_install = false, | |||||
auto_install = true, | |||||
ignore_install = { }, | |||||
highlight = { | |||||
enable = true, | |||||
additional_vim_regex_highlighting = { "markdown" } | |||||
}, | |||||
} |
@ -0,0 +1,9 @@ | |||||
return { | |||||
opts = {}, | |||||
register = { | |||||
["<leader>f"] = { name = "+file" }, | |||||
["<leader>s"] = { name = "+search" }, | |||||
["<leader>g"] = { name = "+git" }, | |||||
["<leader>l"] = { name = "+lsp" }, | |||||
} | |||||
} |
@ -0,0 +1,70 @@ | |||||
-- Enable syntax highlighting | |||||
vim.opt.syntax = "on" | |||||
-- Autocomplete settings in command mode | |||||
vim.opt.wildmenu = true | |||||
vim.opt.wildmode = "longest,list,full" | |||||
-- Various settings | |||||
vim.opt.autoread = true | |||||
vim.opt.backspace = { "indent", "eol", "start" } | |||||
vim.opt.splitright = true | |||||
vim.opt.splitbelow = true | |||||
vim.opt.lazyredraw = false | |||||
vim.opt.ttyfast = true | |||||
vim.opt.wrap = false | |||||
vim.opt.backup = false | |||||
vim.opt.writebackup = false | |||||
vim.opt.swapfile = false | |||||
vim.opt.errorbells = false | |||||
vim.opt.visualbell = false | |||||
vim.opt.history = 500 | |||||
vim.opt.hidden = true | |||||
vim.opt.ignorecase = true | |||||
vim.opt.smartcase = true | |||||
vim.opt.incsearch = true | |||||
vim.opt.timeoutlen = 500 | |||||
vim.opt.ttimeoutlen = 0 | |||||
vim.opt.showcmd = true | |||||
vim.cmd('nohlsearch') | |||||
vim.opt.scrolloff = 5 | |||||
vim.opt.sidescrolloff = 10 | |||||
vim.opt.shortmess:append("c") | |||||
vim.opt.updatetime = 300 | |||||
-- Persistent undo settings | |||||
vim.opt.undodir = vim.fn.expand('~/.local/share/vim/undo/') | |||||
vim.opt.undofile = true | |||||
vim.opt.undolevels = 1000 | |||||
vim.opt.undoreload = 10000 | |||||
-- Wildignore settings | |||||
vim.opt.wildignore:append({"*/tmp/*", "*.so", "*.zip", "*/vendor/bundle/*", "*/node_modules/"}) | |||||
-- Autocommand to disable auto commenting on new lines | |||||
vim.api.nvim_create_autocmd("FileType", { | |||||
pattern = "*", | |||||
callback = function() | |||||
vim.opt_local.formatoptions:remove("c") | |||||
vim.opt_local.formatoptions:remove("r") | |||||
vim.opt_local.formatoptions:remove("o") | |||||
end | |||||
}) | |||||
-- Filetype settings | |||||
vim.cmd('filetype off') | |||||
vim.cmd('filetype plugin on') | |||||
-- Autocomplete settings | |||||
vim.opt.completeopt = {"menu", "menuone", "noselect"} | |||||
-- Folding settings | |||||
vim.o.foldcolumn = '1' -- '0' is not bad | |||||
vim.o.foldlevel = 99 -- Using ufo provider need a large value, feel free to decrease the value | |||||
vim.o.foldlevelstart = 99 | |||||
vim.o.foldenable = true | |||||
vim.o.sessionoptions="blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions,globals" |
@ -0,0 +1,21 @@ | |||||
local function load_skeleton(filetype) | |||||
-- do nothing if no filetype | |||||
if filetype == "" then return end | |||||
-- glob every directory of 'runtimepath' to search for skeleton/filetype | |||||
local skeletons = vim.api.nvim_get_runtime_file('skeleton/' .. filetype, true) | |||||
if #skeletons == 0 then return end | |||||
-- read last skeleton into 1st line. | |||||
vim.api.nvim_command('0read ' .. skeletons[#skeletons]) | |||||
end | |||||
-- augroup setup | |||||
vim.api.nvim_create_augroup('aug_skeleton', {clear = true}) | |||||
vim.api.nvim_create_autocmd('BufNewFile', { | |||||
group = 'aug_skeleton', | |||||
pattern = '*', | |||||
callback = function() | |||||
load_skeleton(vim.bo.filetype) | |||||
end, | |||||
}) |
@ -0,0 +1,39 @@ | |||||
local map = vim.api.nvim_set_keymap | |||||
local opts = { noremap = true, silent = true } | |||||
-- Move to previous/next | |||||
map('n', '<A-,>', '<Cmd>BufferPrevious<CR>', opts) | |||||
map('n', '<A-.>', '<Cmd>BufferNext<CR>', opts) | |||||
-- Re-order to previous/next | |||||
map('n', '<A-<>', '<Cmd>BufferMovePrevious<CR>', opts) | |||||
map('n', '<A->>', '<Cmd>BufferMoveNext<CR>', opts) | |||||
-- Goto buffer in position... | |||||
map('n', '<A-1>', '<Cmd>BufferGoto 1<CR>', opts) | |||||
map('n', '<A-2>', '<Cmd>BufferGoto 2<CR>', opts) | |||||
map('n', '<A-3>', '<Cmd>BufferGoto 3<CR>', opts) | |||||
map('n', '<A-4>', '<Cmd>BufferGoto 4<CR>', opts) | |||||
map('n', '<A-5>', '<Cmd>BufferGoto 5<CR>', opts) | |||||
map('n', '<A-6>', '<Cmd>BufferGoto 6<CR>', opts) | |||||
map('n', '<A-7>', '<Cmd>BufferGoto 7<CR>', opts) | |||||
map('n', '<A-8>', '<Cmd>BufferGoto 8<CR>', opts) | |||||
map('n', '<A-9>', '<Cmd>BufferGoto 9<CR>', opts) | |||||
map('n', '<A-0>', '<Cmd>BufferLast<CR>', opts) | |||||
-- Pin/unpin buffer | |||||
map('n', '<A-p>', '<Cmd>BufferPin<CR>', opts) | |||||
-- Pin/unpin buffer | |||||
map('n', '<A-Tab>', '<Cmd>b#<CR>', opts) | |||||
-- Close buffer | |||||
map('n', '<A-c>', '<Cmd>BufferClose<CR>', opts) | |||||
-- Magic buffer-picking mode | |||||
map('n', '<C-b>', '<Cmd>BufferPick<CR>', opts) | |||||
-- Sort automatically by... | |||||
map('n', '<Space>bb', '<Cmd>BufferOrderByBufferNumber<CR>', opts) | |||||
map('n', '<Space>bd', '<Cmd>BufferOrderByDirectory<CR>', opts) | |||||
map('n', '<Space>bl', '<Cmd>BufferOrderByLanguage<CR>', opts) | |||||
map('n', '<Space>bw', '<Cmd>BufferOrderByWindowNumber<CR>', opts) | |||||
@ -0,0 +1,13 @@ | |||||
local map = vim.api.nvim_set_keymap | |||||
-- Toggle breakpoint with F11 | |||||
vim.api.nvim_set_keymap('n', '<F11>', "<cmd>lua require'dap'.toggle_breakpoint()<CR>", {noremap = true, silent = true}) | |||||
-- Start debugging with F4 | |||||
vim.api.nvim_set_keymap('n', '<F4>', "<cmd>lua require'dap'.continue()<CR>", {noremap = true, silent = true}) | |||||
-- Step into with F7 | |||||
vim.api.nvim_set_keymap('n', '<F7>', "<cmd>lua require'dap'.step_into()<CR>", {noremap = true, silent = true}) | |||||
-- Step over with F8 | |||||
vim.api.nvim_set_keymap('n', '<F8>', "<cmd>lua require'dap'.step_over()<CR>", {noremap = true, silent = true}) |
@ -0,0 +1,37 @@ | |||||
local map = vim.api.nvim_set_keymap | |||||
local opts = {noremap = true} | |||||
-- [,w] SAVE | |||||
map('', '<Leader>w', ':update<CR>', opts) | |||||
-- <VISUAL> [Q] REFORMAT TEXT | |||||
map('v', 'Q', 'gq', opts) | |||||
-- Clipboard Bindings, Prefixing with leader copies to global | |||||
map('n', '<Leader>y', '"+y', opts) | |||||
map('n', '<Leader>p', '"+p', opts) | |||||
map('v', '<Leader>y', '"+y', opts) | |||||
map('v', '<Leader>p', '"+p', opts) | |||||
map('n', '<Leader>Y', '"+Y', opts) | |||||
map('n', '<Leader>P', '"+P', opts) | |||||
map('v', '<Leader>d', '"+d', opts) | |||||
map('n', '<Leader>D', '"+D', opts) | |||||
-- Find and replace with Ctrl-R | |||||
map('v', '<C-r>', '"hy:%s/<C-r>h//g<left><left><left>', opts) | |||||
-- Apply . to all selected lines | |||||
map('v', '.', ':normal .<CR>', opts) | |||||
-- Quit window | |||||
map('', '<Leader>qb', ':q<CR>', opts) | |||||
-- Quit all without saving | |||||
map('', '<Leader>qq', ':qa!<CR>', opts) | |||||
-- Quit with escape from man pages | |||||
vim.api.nvim_create_autocmd("FileType", { | |||||
pattern = "man", | |||||
command = "nnoremap <buffer> <Esc> :AerialClose<CR>:bd<CR>" | |||||
}) |
@ -0,0 +1,7 @@ | |||||
require('keybinds.editor') -- Vim native keybinds | |||||
require('keybinds.telescope') -- Keybinds for use with telescope | |||||
require('keybinds.plugin') -- Keybinds for use nvim tree | |||||
require('keybinds.barbar') | |||||
require('keybinds.terminal') | |||||
require('keybinds.dap') |
@ -0,0 +1,78 @@ | |||||
local map = vim.api.nvim_set_keymap | |||||
local harpoon = require('harpoon') | |||||
-- basic telescope configuration | |||||
local conf = require("telescope.config").values | |||||
local function toggle_telescope(harpoon_files) | |||||
local file_paths = {} | |||||
for _, item in ipairs(harpoon_files.items) do | |||||
table.insert(file_paths, item.value) | |||||
end | |||||
require("telescope.pickers").new({}, { | |||||
prompt_title = "Harpoon", | |||||
finder = require("telescope.finders").new_table({ | |||||
results = file_paths, | |||||
}), | |||||
previewer = conf.file_previewer({}), | |||||
sorter = conf.generic_sorter({}), | |||||
}):find() | |||||
end | |||||
-- Using ufo provider need remap `zR` and `zM`. If Neovim is 0.6.1, remap yourself | |||||
vim.keymap.set('n', 'zR', require('ufo').openAllFolds) | |||||
vim.keymap.set('n', 'zM', require('ufo').closeAllFolds) | |||||
vim.keymap.set("n", "<C-e>", function() toggle_telescope(harpoon:list()) end, | |||||
{ desc = "Open harpoon window" }) | |||||
map('n', '<Leader>tt', "<Cmd> NvimTreeToggle<CR>", { | |||||
noremap = true, | |||||
desc = "Toggle directory tree" | |||||
}) | |||||
map('n', '<Leader>tf', "<Cmd> NvimTreeFindFile<CR>", { | |||||
noremap = true, | |||||
desc = "Go to current file in dir tree" | |||||
}) | |||||
map('n', '<Leader>ta', "<Cmd> AerialToggle<CR>", { | |||||
noremap = true, | |||||
desc = "Open aerial sidebar" | |||||
}) | |||||
map('n', '<Leader>tn', "<Cmd> AerialNavToggle<CR>", { | |||||
noremap = true, | |||||
desc = "Toggle aerial navigator" | |||||
}) | |||||
map('n', '<Leader>Z', "<Cmd> lua require('zen-mode').toggle({})<CR>", { | |||||
noremap = true, | |||||
desc = "Toggle zen mode" | |||||
}) | |||||
map('n', '<Leader>G', "<Cmd> Neogit<CR>", { | |||||
noremap = true, | |||||
desc = "Open Neogit" | |||||
}) | |||||
map('n', '<Leader>lz', "<Cmd>DevdocsOpenFloat<CR>", { | |||||
noremap = true, | |||||
desc = "Open devdocs viewer" | |||||
}) | |||||
vim.keymap.set("n", "<C-e>", function() toggle_telescope(harpoon:list()) end, | |||||
{ desc = "Open harpoon window" }) | |||||
map('n', '<Leader>C', "<Cmd>NoiceDismiss<CR>", { | |||||
noremap = true, | |||||
desc = "Dismiss noice notifications" | |||||
}) | |||||
map('n', '<Leader>\'', "<Cmd>Telescope fd cwd=~/.config/nvim<CR>", { | |||||
noremap = true, | |||||
desc = "Edit config file" | |||||
}) |
@ -0,0 +1,74 @@ | |||||
local map = vim.api.nvim_set_keymap | |||||
-- == LSP Pickers == | |||||
map('n', '<Leader>ll', "<Cmd> Telescope <CR>", { | |||||
noremap = true, | |||||
desc = "Open main telescope picket" | |||||
}) | |||||
map('n', '<C-p>', "<Cmd> Telescope commands <CR>", { | |||||
noremap = true, | |||||
desc = "Open main telescope picket" | |||||
}) | |||||
map('n', '<Leader><Leader>', "<Cmd>lua vim.lsp.buf.code_action()<CR>", { | |||||
noremap = true, | |||||
desc = "Resume last pick action" | |||||
}) | |||||
map('n', '<Leader>lf', "<Cmd> lua require('telescope.builtin').find_files()<CR>", { | |||||
noremap = true, | |||||
desc = "Open File" | |||||
}) | |||||
map('n', '<Leader>ld', "<Cmd> lua require('telescope.builtin').lsp_definitions()<CR>", { | |||||
noremap = true, | |||||
desc = "Go to definition" | |||||
}) | |||||
map('n', '<Leader>lr', "<Cmd> lua require('telescope.builtin').lsp_references()<CR>", { | |||||
noremap = true, | |||||
desc = "List to references to word under cursor" | |||||
}) | |||||
map('n', '<Leader>lt', "<Cmd>lua require('telescope.builtin').treesitter()<CR>", { | |||||
noremap = true, | |||||
desc = "List symbols in workspace with treesitter" | |||||
}) | |||||
map('n', '<Leader>lw', "<Cmd>lua require('telescope.builtin').diagnostics()<CR>", { | |||||
noremap = true, | |||||
desc = "List diagnostic items" | |||||
}) | |||||
map('n', '<Leader>lm', "<Cmd>lua require('telescope.builtin').man_pages()<CR>", { | |||||
noremap = true, | |||||
desc = "List view manpage" | |||||
}) | |||||
map('n', '<Leader><Space>', "<Cmd>lua vim.lsp.buf.code_action()<CR>", { | |||||
noremap = true, | |||||
desc = "Pick code action" | |||||
}) | |||||
map("v", "<Leader><Space>", "<Cmd>'<,'>lua vim.lsp.buf.code_action()<CR>", { | |||||
noremap = true, | |||||
desc = "Pick code action for selection" | |||||
}) | |||||
map('n', '<Leader>ls', "<Cmd>lua require('telescope.builtin').live_grep()<CR>", { | |||||
noremap = true, | |||||
desc = "Live search" | |||||
}) | |||||
-- == Misc Keybinds == | |||||
map('n', '<Leader>b', "<Cmd>lua require('telescope.builtin').buffers()<CR>", { | |||||
noremap = true, | |||||
desc = "List and pick buffers" | |||||
}) | |||||
map('n', '<Leader>S', "<Cmd>Telescope persisted<CR>", { | |||||
noremap = true, | |||||
desc = "Select a persisted session" | |||||
}) |
@ -0,0 +1,25 @@ | |||||
local map = vim.api.nvim_set_keymap | |||||
map('n', '<C-t>', "<Cmd>ToggleTerm direction=horizontal<CR>", { | |||||
noremap = true, | |||||
desc = "Create terminal split" | |||||
}) | |||||
map('n', '<C-s>', "<Cmd>ToggleTerm direction=float<CR>", { | |||||
noremap = true, | |||||
desc = "Toggle terminal floating" | |||||
}) | |||||
local trim_spaces = true | |||||
vim.keymap.set("v", "<Leader>s", function() | |||||
require("toggleterm").send_lines_to_terminal("visual_selection", trim_spaces, { args = vim.v.count }) | |||||
end) | |||||
vim.api.nvim_create_autocmd("TermOpen", { | |||||
pattern = "term://*", | |||||
callback = function() | |||||
vim.keymap.set('t', '<esc>', [[<C-\><C-n>]], opts) | |||||
end, | |||||
}) |
@ -0,0 +1,53 @@ | |||||
-- === Initialize LSP Servers === | |||||
-- For a list of LSP Servers and documentation: | |||||
-- https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md | |||||
local lspconfig = require'lspconfig' | |||||
local capabilities = require('cmp_nvim_lsp').default_capabilities() | |||||
local configs = require("config.lsp").lspconfigs | |||||
local on_attach = require("config.lsp").lsp_onattach | |||||
local utils = require("utils") | |||||
capabilities.textDocument.completion.completionItem.snippetSupport = true | |||||
capabilities.textDocument.foldingRange = { | |||||
dynamicRegistration = false, | |||||
lineFoldingOnly = true | |||||
} | |||||
-- LSP diagnostics | |||||
vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, { | |||||
underline = true, | |||||
signs = true, | |||||
virtual_text = false, | |||||
severity_sort = true, | |||||
}) | |||||
local signs = { | |||||
Error = " ", | |||||
Warning = " ", | |||||
Hint = " ", | |||||
Information = " " | |||||
} | |||||
for type, icon in pairs(signs) do | |||||
local hl = "LspDiagnosticsSign" .. type | |||||
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" }) | |||||
end | |||||
-- LSP diagnostics | |||||
vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, { | |||||
underline = true, | |||||
signs = true, | |||||
virtual_text = true, | |||||
severity_sort = true, | |||||
}) | |||||
for k, v in pairs(configs) do | |||||
lspconfig[k].setup( | |||||
utils.mergeTables(v, { | |||||
on_attach = on_attach, | |||||
capabilities = capabilities | |||||
})) | |||||
end | |||||
vim.api.nvim_exec_autocmds("FileType", {}) |
@ -0,0 +1,311 @@ | |||||
return { | |||||
{ | |||||
"catppuccin/nvim", | |||||
name = "catppuccin", | |||||
priority = 1000, | |||||
opts = require("config.plugin.catppuccin"), | |||||
}, | |||||
{ | |||||
"goolord/alpha-nvim", | |||||
cond = vim.g.vscode == nil, | |||||
dependencies = { | |||||
"nvim-tree/nvim-web-devicons", | |||||
"nvim-telescope/telescope.nvim", | |||||
}, | |||||
event = "VimEnter", | |||||
config = require("config.plugin.alpha"), | |||||
}, | |||||
{ | |||||
"romgrk/barbar.nvim", | |||||
dependencies = { | |||||
"lewis6991/gitsigns.nvim", -- OPTIONAL: for git status | |||||
"nvim-tree/nvim-web-devicons", -- OPTIONAL: for file icons | |||||
}, | |||||
init = function() | |||||
vim.g.barbar_auto_setup = false | |||||
end, | |||||
opts = {}, | |||||
version = "^1.0.0", -- optional: only update when a new 1.x version is released | |||||
}, | |||||
{ | |||||
"nvim-lualine/lualine.nvim", | |||||
dependencies = { | |||||
"catppuccin/nvim", | |||||
"nvim-tree/nvim-web-devicons", | |||||
'AndreM222/copilot-lualine', | |||||
"zbirenbaum/copilot.lua", | |||||
}, | |||||
config = require("config.plugin.lualine"), | |||||
}, | |||||
{ | |||||
"utilyre/barbecue.nvim", | |||||
name = "barbecue", | |||||
version = "*", | |||||
dependencies = { | |||||
"SmiteshP/nvim-navic", | |||||
"nvim-tree/nvim-web-devicons", -- optional dependency | |||||
}, | |||||
opts = {}, | |||||
}, | |||||
{ | |||||
"lewis6991/gitsigns.nvim", | |||||
opts = {}, | |||||
}, | |||||
{ | |||||
"lukas-reineke/headlines.nvim", | |||||
dependencies = "nvim-treesitter/nvim-treesitter", | |||||
opts = {}, | |||||
}, | |||||
{ | |||||
"ThePrimeagen/harpoon", | |||||
branch = "harpoon2", | |||||
dependencies = { | |||||
"nvim-lua/plenary.nvim", | |||||
}, | |||||
config = require("config.plugin.harpoon2"), | |||||
}, | |||||
{ | |||||
"nvim-tree/nvim-tree.lua", | |||||
version = "*", | |||||
lazy = false, | |||||
dependencies = { | |||||
"romgrk/barbar.nvim", | |||||
"nvim-tree/nvim-web-devicons", | |||||
}, | |||||
config = require("config.plugin.nvim-tree"), | |||||
}, | |||||
{ | |||||
"nvim-neotest/neotest", | |||||
dependencies = { | |||||
"nvim-lua/plenary.nvim", | |||||
"antoinemadec/FixCursorHold.nvim", | |||||
"nvim-treesitter/nvim-treesitter", | |||||
}, | |||||
}, | |||||
{ | |||||
"folke/which-key.nvim", | |||||
event = "VeryLazy", | |||||
init = function() | |||||
vim.o.timeout = true | |||||
vim.o.timeoutlen = 300 | |||||
end, | |||||
config = function() | |||||
local settings = require("config.plugin.whichkey") | |||||
require("which-key").setup(settings.opts) | |||||
require("which-key").register(settings.register) | |||||
end, | |||||
}, | |||||
{ | |||||
"folke/zen-mode.nvim", | |||||
opts = {}, | |||||
}, | |||||
{ | |||||
"gauteh/vim-cppman", | |||||
}, | |||||
{ | |||||
"lervag/vimtex", | |||||
}, | |||||
{ | |||||
"christoomey/vim-tmux-navigator", | |||||
}, | |||||
{ | |||||
"echasnovski/mini.nvim", | |||||
version = '*', | |||||
config = require("config.plugin.mini") | |||||
}, | |||||
{ | |||||
"tpope/vim-surround", | |||||
}, | |||||
{ | |||||
"jose-elias-alvarez/null-ls.nvim", | |||||
config = require("config.plugin.null-ls"), | |||||
}, | |||||
{ | |||||
"williamboman/mason.nvim", | |||||
config = true, | |||||
dependencies = { | |||||
"neovim/nvim-lspconfig", | |||||
}, | |||||
}, | |||||
{ | |||||
"neovim/nvim-lspconfig", | |||||
dependencies = { | |||||
"folke/neodev.nvim" | |||||
} | |||||
}, | |||||
{ | |||||
"williamboman/mason-lspconfig.nvim", | |||||
opts = { | |||||
ensure_installed = require("config.lsp").mason_servers | |||||
}, | |||||
dependencies = { | |||||
"folke/neodev.nvim" | |||||
} | |||||
}, | |||||
{ | |||||
"nvim-treesitter/nvim-treesitter", | |||||
dependencies = { | |||||
"neovim/nvim-lspconfig", | |||||
}, | |||||
event = { "BufRead", "BufWinEnter", "BufNewFile" }, | |||||
opts = require("config.plugin.treesitter"), | |||||
}, | |||||
{ | |||||
"NeogitOrg/neogit", | |||||
dependencies = { | |||||
"nvim-lua/plenary.nvim", | |||||
"sindrets/diffview.nvim", | |||||
"nvim-telescope/telescope.nvim", | |||||
}, | |||||
config = true, | |||||
}, | |||||
{ | |||||
"nvim-telescope/telescope.nvim", | |||||
tag = "0.1.5", | |||||
dependencies = { | |||||
"nvim-lua/plenary.nvim", | |||||
"nvim-telescope/telescope-ui-select.nvim", | |||||
"rmagatti/session-lens", | |||||
}, | |||||
config = function() | |||||
local telescope = require("telescope") | |||||
local config = require("config.plugin.telescope") | |||||
for _, ext in ipairs(config.extensions_list) do | |||||
telescope.load_extension(ext) | |||||
end | |||||
telescope.setup(config) | |||||
end, | |||||
}, | |||||
{ | |||||
"folke/noice.nvim", | |||||
event = "VeryLazy", | |||||
opts = require("config.plugin.noice"), | |||||
dependencies = { | |||||
"MunifTanjim/nui.nvim", | |||||
"rcarriga/nvim-notify", | |||||
}, | |||||
}, | |||||
{ | |||||
"neomutt/neomutt.vim", | |||||
}, | |||||
{ | |||||
"stevearc/aerial.nvim", | |||||
dependencies = { | |||||
"nvim-treesitter/nvim-treesitter", | |||||
"nvim-tree/nvim-web-devicons", | |||||
}, | |||||
config = require("config.plugin.aerial") | |||||
}, | |||||
{ | |||||
"dcampos/nvim-snippy", | |||||
dependencies = { | |||||
"honza/vim-snippets", | |||||
}, | |||||
opts = {}, | |||||
}, | |||||
{ | |||||
"kevinhwang91/nvim-ufo", | |||||
dependencies = { | |||||
"kevinhwang91/promise-async", | |||||
"neovim/nvim-lspconfig", | |||||
}, | |||||
opts = require("config.plugin.nvim-ufo"), | |||||
}, | |||||
{ | |||||
"rest-nvim/rest.nvim", | |||||
dependencies = { { "nvim-lua/plenary.nvim" } }, | |||||
config = function() | |||||
require("rest-nvim").setup({}) | |||||
end, | |||||
}, | |||||
{ | |||||
"zbirenbaum/copilot.lua", | |||||
cmd = "Copilot", | |||||
event = "InsertEnter", | |||||
config = require("config.plugin.copilot") | |||||
}, | |||||
{ | |||||
"zbirenbaum/copilot-cmp", | |||||
dependencies = { | |||||
"zbirenbaum/copilot.lua", | |||||
}, | |||||
config = true, | |||||
}, | |||||
{ | |||||
"hrsh7th/nvim-cmp", | |||||
config = require("config.plugin.nvim-cmp"), | |||||
dependencies = { | |||||
"onsails/lspkind.nvim", | |||||
"hrsh7th/cmp-nvim-lsp", | |||||
"hrsh7th/cmp-nvim-lua", | |||||
"hrsh7th/cmp-buffer", | |||||
"hrsh7th/cmp-path", | |||||
"hrsh7th/cmp-cmdline", | |||||
"hrsh7th/cmp-nvim-lsp-signature-help", | |||||
"dcampos/cmp-snippy", | |||||
"micangl/cmp-vimtex", | |||||
"dcampos/nvim-snippy", | |||||
}, | |||||
}, | |||||
{ | |||||
"lukas-reineke/indent-blankline.nvim", | |||||
main = "ibl", | |||||
opts = require("config.plugin.ibl"), | |||||
}, | |||||
{ | |||||
"akinsho/toggleterm.nvim", | |||||
version = "*", | |||||
config = true, | |||||
}, | |||||
{ | |||||
"folke/neodev.nvim", | |||||
opts = require("config.plugin.neodev") | |||||
}, | |||||
{ | |||||
"rcarriga/nvim-dap-ui", | |||||
dependencies = { | |||||
"pocco81/dap-buddy.nvim", | |||||
"mfussenegger/nvim-dap", | |||||
}, | |||||
opts = {} | |||||
}, | |||||
{ | |||||
"luckasRanarison/nvim-devdocs", | |||||
dependencies = { | |||||
"nvim-lua/plenary.nvim", | |||||
"nvim-telescope/telescope.nvim", | |||||
"nvim-treesitter/nvim-treesitter", | |||||
}, | |||||
config = require("config.plugin.nvim-devdocs") | |||||
}, | |||||
{ | |||||
'rmagatti/auto-session', | |||||
config = require("config.plugin.auto-session") | |||||
}, | |||||
{ | |||||
'rmagatti/session-lens', | |||||
dependencies = { | |||||
'rmagatti/auto-session', | |||||
'nvim-telescope/telescope.nvim' | |||||
}, | |||||
opts = {} | |||||
}, | |||||
{ | |||||
"RRethy/vim-illuminate", | |||||
}, | |||||
{ | |||||
"petertriho/nvim-scrollbar", | |||||
opts = {} | |||||
}, | |||||
{ | |||||
"kevinhwang91/nvim-hlslens", | |||||
config = function() | |||||
require("scrollbar.handlers.search").setup({ | |||||
override_lens = function() end, | |||||
}) | |||||
end, | |||||
} | |||||
} |
@ -0,0 +1,109 @@ | |||||
local M = {} | |||||
M.simple_einstein = { | |||||
[["Everything should be made as simple as possible, but not simpler."]], | |||||
[[ -- Albert Einstein]] | |||||
} | |||||
M.honesty = { | |||||
[[Honesty pays, but it doesn't seem to pay enough to suit some people.]], | |||||
[[ -- F. M. Hubbard]], | |||||
} | |||||
M.autonomy = { | |||||
[[Cult of Aloneness: ]], | |||||
[[ The need for autonomy at all costs, usually at the expense of ]], | |||||
[[long-term relationships. Often brought about by overly high ]], | |||||
[[expectations of others. ]], | |||||
[[ -- Douglas Coupland, "Generation X: Tales for an Accelerated ]], | |||||
[[ Culture" ]], | |||||
} | |||||
M.evil = { | |||||
[[No evil can happen to a good man. ]], | |||||
[[ -- Plato ]], | |||||
} | |||||
M.violence = { | |||||
[[Vulcans do not approve of violence. ]], | |||||
[[ -- Spock, "Journey to Babel", stardate 3842.4 ]], | |||||
} | |||||
M.fortune_cookie = { | |||||
[[ *** ]], | |||||
[[ ******* ]], | |||||
[[ ********* ]], | |||||
[[ ****** Confucious say: "Is stuffy inside fortune cookie." ]], | |||||
[[ ******* ]], | |||||
[[ *** ]], | |||||
} | |||||
M.god = { | |||||
[[God was satisfied with his own work, and that is fatal. ]], | |||||
[[ -- Samuel Butler ]], | |||||
} | |||||
M.maintenance = { | |||||
[[no maintenance: ]], | |||||
[[ Impossible to fix. ]], | |||||
} | |||||
M.coordinates = { | |||||
[[It is not that polar co-ordinates are complicated, it is simply ]], | |||||
[[that cartesian co-ordinates are simpler than they have a right to be. ]], | |||||
[[ -- Kleppner & Kolenhow, "An Introduction to Mechanics" ]], | |||||
} | |||||
M.byte = { | |||||
[[I have not yet begun to byte! ]], | |||||
} | |||||
M.fanatic = { | |||||
[[A fanatic is a person who can't change his mind and won't change the subject. ]], | |||||
[[ -- Winston Churchill ]], | |||||
} | |||||
M.lovelace = { | |||||
[[The Analytical Engine weaves Algebraical patterns just as the Jacquard ]], | |||||
[[loom weaves flowers and leaves. ]], | |||||
[[ -- Ada Augusta, Countess of Lovelace, the first programmer ]], | |||||
} | |||||
M.dopeler = { | |||||
[[Dopeler effect: ]], | |||||
[[ The tendency of stupid ideas to seem smarter when they come at you ]], | |||||
[[rapidly. ]], | |||||
} | |||||
M.change = { | |||||
[[Subject to change without notice. ]], | |||||
} | |||||
M.doubt = { | |||||
[[Doubt is not a pleasant condition, but certainty is absurd. ]], | |||||
[[ -- Voltaire ]], | |||||
} | |||||
M.guest = { | |||||
[[Nobody can be as agreeable as an uninvited guest. ]], | |||||
} | |||||
M.perl = { | |||||
[[Of course, I reserve the right to make wholly stupid changes to Perl ]], | |||||
[[if I think they improve the language. :-) ]], | |||||
[[ -- Larry Wall in <199704251604.JAA27300@wall.org> ]], | |||||
} | |||||
return M |
@ -0,0 +1,62 @@ | |||||
local M = {} | |||||
-- create colour gradient from hex values | |||||
M.create_gradient = function(start, finish, steps) | |||||
local r1, g1, b1 = | |||||
tonumber("0x" .. start:sub(2, 3)), tonumber("0x" .. start:sub(4, 5)), tonumber("0x" .. start:sub(6, 7)) | |||||
local r2, g2, b2 = | |||||
tonumber("0x" .. finish:sub(2, 3)), tonumber("0x" .. finish:sub(4, 5)), tonumber("0x" .. finish:sub(6, 7)) | |||||
local r_step = (r2 - r1) / steps | |||||
local g_step = (g2 - g1) / steps | |||||
local b_step = (b2 - b1) / steps | |||||
local gradient = {} | |||||
for i = 1, steps do | |||||
local r = math.floor(r1 + r_step * i) | |||||
local g = math.floor(g1 + g_step * i) | |||||
local b = math.floor(b1 + b_step * i) | |||||
table.insert(gradient, string.format("#%02x%02x%02x", r, g, b)) | |||||
end | |||||
return gradient | |||||
end | |||||
M.mergeTables = function(t1, t2) | |||||
for k, v in pairs(t2) do | |||||
t1[k] = v | |||||
end | |||||
return t1 | |||||
end | |||||
M.getTableKeys = function(tbl) | |||||
local keys = {} | |||||
for key in pairs(tbl) do | |||||
table.insert(keys, key) | |||||
end | |||||
return keys | |||||
end | |||||
-- string padding | |||||
M.pad_string = function(str, len, align) | |||||
local str_len = #str | |||||
if str_len >= len then | |||||
return str | |||||
end | |||||
local pad_len = len - str_len | |||||
local pad = string.rep(" ", pad_len) | |||||
if align == "left" then | |||||
return str .. pad | |||||
elseif align == "right" then | |||||
return pad .. str | |||||
elseif align == "center" then | |||||
local left_pad = math.floor(pad_len / 2) | |||||
local right_pad = pad_len - left_pad | |||||
return string.rep(" ", left_pad) .. str .. string.rep(" ", right_pad) | |||||
end | |||||
end | |||||
return M |
@ -1 +0,0 @@ | |||||
nnoremap <leader>gl :YcmCompleter GoToDeclaration<CR> |
@ -1,138 +0,0 @@ | |||||
" Use tab for trigger completion with characters ahead and navigate. | |||||
" NOTE: Use command ':verbose imap <tab>' to make sure tab is not mapped by | |||||
" other plugin before putting this into your config. | |||||
inoremap <silent><expr> <TAB> | |||||
\ pumvisible() ? "\<C-n>" : | |||||
\ <SID>check_back_space() ? "\<TAB>" : | |||||
\ coc#refresh() | |||||
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>" | |||||
function! s:check_back_space() abort | |||||
let col = col('.') - 1 | |||||
return !col || getline('.')[col - 1] =~# '\s' | |||||
endfunction | |||||
" Use <c-space> to trigger completion. | |||||
if has('nvim') | |||||
inoremap <silent><expr> <c-space> coc#refresh() | |||||
else | |||||
inoremap <silent><expr> <c-@> coc#refresh() | |||||
endif | |||||
" Make <CR> auto-select the first completion item and notify coc.nvim to | |||||
" format on enter, <cr> could be remapped by other vim plugin | |||||
inoremap <silent><expr> <cr> pumvisible() ? coc#_select_confirm() : "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>" | |||||
" Use `[g` and `]g` to navigate diagnostics | |||||
" Use `:CocDiagnostics` to get all diagnostics of current buffer in location list. | |||||
nmap <silent> [g <Plug>(coc-diagnostic-prev) | |||||
nmap <silent> ]g <Plug>(coc-diagnostic-next) | |||||
" Coc Prettier | |||||
vmap <leader>f <Plug>(coc-format-selected) | |||||
nmap <leader>f <Plug>(coc-format-selected) | |||||
" GoTo code navigation. | |||||
nmap <silent> gd <Plug>(coc-definition) | |||||
nmap <silent> gy <Plug>(coc-type-definition) | |||||
nmap <silent> gi <Plug>(coc-implementation) | |||||
nmap <silent> gr <Plug>(coc-references) | |||||
" Use K to show documentation in preview window. | |||||
nnoremap <silent> K :call <SID>show_documentation()<CR> | |||||
function! s:show_documentation() | |||||
if (index(['vim','help'], &filetype) >= 0) | |||||
execute 'h '.expand('<cword>') | |||||
elseif (coc#rpc#ready()) | |||||
call CocActionAsync('doHover') | |||||
else | |||||
execute '!' . &keywordprg . " " . expand('<cword>') | |||||
endif | |||||
endfunction | |||||
" Highlight the symbol and its references when holding the cursor. | |||||
autocmd CursorHold * silent call CocActionAsync('highlight') | |||||
" Symbol renaming. | |||||
nmap <leader>rn <Plug>(coc-rename) | |||||
" Formatting selected code. | |||||
xmap <leader>f <Plug>(coc-format-selected) | |||||
nmap <leader>f <Plug>(coc-format-selected) | |||||
augroup mygroup | |||||
autocmd! | |||||
" Setup formatexpr specified filetype(s). | |||||
autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected') | |||||
" Update signature help on jump placeholder. | |||||
autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp') | |||||
augroup end | |||||
" Applying codeAction to the selected region. | |||||
" Example: `<leader>aap` for current paragraph | |||||
xmap <leader>a <Plug>(coc-codeaction-selected) | |||||
nmap <leader>a <Plug>(coc-codeaction-selected) | |||||
" Remap keys for applying codeAction to the current buffer. | |||||
nmap <leader>ac <Plug>(coc-codeaction) | |||||
" Apply AutoFix to problem on the current line. | |||||
nmap <leader>qf <Plug>(coc-fix-current) | |||||
" Map function and class text objects | |||||
" NOTE: Requires 'textDocument.documentSymbol' support from the language server. | |||||
xmap if <Plug>(coc-funcobj-i) | |||||
omap if <Plug>(coc-funcobj-i) | |||||
xmap af <Plug>(coc-funcobj-a) | |||||
omap af <Plug>(coc-funcobj-a) | |||||
xmap ic <Plug>(coc-classobj-i) | |||||
omap ic <Plug>(coc-classobj-i) | |||||
xmap ac <Plug>(coc-classobj-a) | |||||
omap ac <Plug>(coc-classobj-a) | |||||
" Remap <C-f> and <C-b> for scroll float windows/popups. | |||||
if has('nvim-0.4.0') || has('patch-8.2.0750') | |||||
nnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>" | |||||
nnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>" | |||||
inoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1)\<cr>" : "\<Right>" | |||||
inoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0)\<cr>" : "\<Left>" | |||||
vnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>" | |||||
vnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>" | |||||
endif | |||||
" Use CTRL-S for selections ranges. | |||||
" Requires 'textDocument/selectionRange' support of language server. | |||||
nmap <silent> <C-s> <Plug>(coc-range-select) | |||||
xmap <silent> <C-s> <Plug>(coc-range-select) | |||||
" Add `:Format` command to format current buffer. | |||||
command! -nargs=0 Format :call CocAction('format') | |||||
" Add `:Fold` command to fold current buffer. | |||||
command! -nargs=? Fold :call CocAction('fold', <f-args>) | |||||
" Add `:OR` command for organize imports of the current buffer. | |||||
command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organizeImport') | |||||
" Add (Neo)Vim's native statusline support. | |||||
" NOTE: Please see `:h coc-status` for integrations with external plugins that | |||||
" provide custom statusline: lightline.vim, vim-airline. | |||||
set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')} | |||||
" Mappings for CoCList | |||||
" Show all diagnostics. | |||||
nnoremap <silent><nowait> <space>a :<C-u>CocList diagnostics<cr> | |||||
" Manage extensions. | |||||
nnoremap <silent><nowait> <space>e :<C-u>CocList extensions<cr> | |||||
" Show commands. | |||||
nnoremap <silent><nowait> <space>c :<C-u>CocList commands<cr> | |||||
" Find symbol of current document. | |||||
nnoremap <silent><nowait> <space>o :<C-u>CocList outline<cr> | |||||
" Search workspace symbols. | |||||
nnoremap <silent><nowait> <space>s :<C-u>CocList -I symbols<cr> | |||||
" Do default action for next item. | |||||
nnoremap <silent><nowait> <space>j :<C-u>CocNext<CR> | |||||
" Do default action for previous item. | |||||
nnoremap <silent><nowait> <space>k :<C-u>CocPrev<CR> | |||||
" Resume latest coc list. | |||||
nnoremap <silent><nowait> <space>p :<C-u>CocListResume<CR> |
@ -1,10 +0,0 @@ | |||||
" Use ripgrep if available | |||||
if executable('rg') | |||||
set grepprg=rg\ --color=never | |||||
let g:ctrlp_prompt_mappings = { | |||||
\ 'AcceptSelection("e")': [], | |||||
\ 'AcceptSelection("t")': ['<cr>'], | |||||
\ } | |||||
let g:ctrlp_user_command = 'rg %s --files --color=never --glob ""' | |||||
let g:ctrlp_use_caching = 1 | |||||
endif |
@ -1,33 +0,0 @@ | |||||
set showtabline=2 | |||||
set guioptions-=e | |||||
let g:lightline#bufferline#show_number = 2 | |||||
let g:lightline#bufferline#shorten_path = 0 | |||||
let g:lightline#bufferline#unnamed = '[No Name]' | |||||
let g:lightline#bufferline#enable_nerdfont = 1 | |||||
let g:lightline#bufferline#modified = ' *' | |||||
let g:lightline#bufferline#read_only = ' ' | |||||
" Movement bindings | |||||
nmap <Leader>1 <Plug>lightline#bufferline#go(1) | |||||
nmap <Leader>2 <Plug>lightline#bufferline#go(2) | |||||
nmap <Leader>3 <Plug>lightline#bufferline#go(3) | |||||
nmap <Leader>4 <Plug>lightline#bufferline#go(4) | |||||
nmap <Leader>5 <Plug>lightline#bufferline#go(5) | |||||
nmap <Leader>6 <Plug>lightline#bufferline#go(6) | |||||
nmap <Leader>7 <Plug>lightline#bufferline#go(7) | |||||
nmap <Leader>8 <Plug>lightline#bufferline#go(8) | |||||
nmap <Leader>9 <Plug>lightline#bufferline#go(9) | |||||
nmap <Leader>0 <Plug>lightline#bufferline#go(10) | |||||
" Deletion Bindings | |||||
nmap <Leader>c1 <Plug>lightline#bufferline#delete(1) | |||||
nmap <Leader>c2 <Plug>lightline#bufferline#delete(2) | |||||
nmap <Leader>c3 <Plug>lightline#bufferline#delete(3) | |||||
nmap <Leader>c4 <Plug>lightline#bufferline#delete(4) | |||||
nmap <Leader>c5 <Plug>lightline#bufferline#delete(5) | |||||
nmap <Leader>c6 <Plug>lightline#bufferline#delete(6) | |||||
nmap <Leader>c7 <Plug>lightline#bufferline#delete(7) | |||||
nmap <Leader>c8 <Plug>lightline#bufferline#delete(8) | |||||
nmap <Leader>c9 <Plug>lightline#bufferline#delete(9) | |||||
nmap <Leader>c0 <Plug>lightline#bufferline#delete(10) |
@ -1,53 +0,0 @@ | |||||
let g:lightline = { | |||||
\ 'colorscheme': 'material_vim', | |||||
\ 'active': { | |||||
\ 'right': [ [ 'lineinfo' ], [ 'percent', 'wordcount' ], [ 'fileformat', 'fileencoding', 'filetype' ] ], | |||||
\ 'left': [ [ 'mode', 'paste' ], [ 'readonly', 'filename', 'modified' ] ], | |||||
\ }, | |||||
\ 'component_function': { | |||||
\ 'wordcount': 'WordCount', | |||||
\ }, | |||||
\ 'tabline': { | |||||
\ 'left': [ ['buffers'] ], | |||||
\ 'right': [ ['close'] ], | |||||
\ }, | |||||
\ 'component_expand': { | |||||
\ 'buffers': 'lightline#bufferline#buffers', | |||||
\ }, | |||||
\ 'component_type': { | |||||
\ 'buffers': 'tabsel', | |||||
\ } | |||||
\ } | |||||
function! WordCount() | |||||
let currentmode = mode() | |||||
if !exists("g:lastmode_wc") | |||||
let g:lastmode_wc = currentmode | |||||
endif | |||||
" if we modify file, open a new buffer, be in visual ever, or switch modes | |||||
" since last run, we recompute. | |||||
if &modified || !exists("b:wordcount") || currentmode =~? '\c.*v' || currentmode != g:lastmode_wc | |||||
let g:lastmode_wc = currentmode | |||||
let l:old_position = getpos('.') | |||||
let l:old_status = v:statusmsg | |||||
execute "silent normal g\<c-g>" | |||||
if v:statusmsg == "--No lines in buffer--" | |||||
let b:wordcount = 0 | |||||
else | |||||
let s:split_wc = split(v:statusmsg) | |||||
if index(s:split_wc, "Selected") < 0 | |||||
let b:wordcount = str2nr(s:split_wc[11]) | |||||
else | |||||
let b:wordcount = str2nr(s:split_wc[5]) | |||||
endif | |||||
let v:statusmsg = l:old_status | |||||
endif | |||||
call setpos('.', l:old_position) | |||||
return b:wordcount | |||||
else | |||||
return b:wordcount | |||||
endif | |||||
endfunction | |||||
let g:lightline#trailing_whitespace#indicator = '' |
@ -1,9 +0,0 @@ | |||||
let g:NERDCreateDefaultMappings = 1 | |||||
let g:NERDSpaceDelims = 1 | |||||
let g:NERDCompactSexyComs = 1 | |||||
let g:NERDDefaultAlign = 'left' | |||||
let g:NERDAltDelims_java = 1 | |||||
let g:NERDCustomDelimiters = { 'c': { 'left': '/**','right': '*/' } } | |||||
let g:NERDCommentEmptyLines = 1 | |||||
let g:NERDTrimTrailingWhitespace = 1 | |||||
let g:NERDToggleCheckAllLines = 1 |
@ -1,4 +0,0 @@ | |||||
" Toggle nerdtree with F10 | |||||
map <F10> :NERDTreeToggle<CR> | |||||
" Current file in nerdtree | |||||
map <F9> :NERDTreeFind<CR> |
@ -1,59 +0,0 @@ | |||||
call plug#begin('~/.local/share/vim/plugged') | |||||
" Look & Feel | |||||
Plug 'kaicataldo/material.vim' | |||||
Plug 'itchyny/lightline.vim' | |||||
Plug 'mengelbrecht/lightline-bufferline' | |||||
Plug 'lambdalisue/nerdfont.vim' | |||||
" Addons | |||||
Plug 'scrooloose/nerdtree' | |||||
Plug 'airblade/vim-gitgutter' | |||||
Plug 'tpope/vim-surround' | |||||
Plug 'jremmen/vim-ripgrep' | |||||
Plug 'blarghmatey/split-expander' | |||||
Plug 'sheerun/vim-polyglot' | |||||
Plug 'neoclide/coc.nvim', {'branch': 'release'} | |||||
Plug 'junegunn/goyo.vim' | |||||
Plug 'vim-scripts/indentpython.vim' | |||||
Plug 'preservim/nerdcommenter' | |||||
Plug 'mileszs/ack.vim' | |||||
Plug 'yegappan/taglist' | |||||
"Plug 'puremourning/vimspector' | |||||
Plug 'lervag/vimtex' | |||||
Plug 'gu-fan/riv.vim' | |||||
Plug 'isene/hyperlist.vim' | |||||
Plug 'neomutt/neomutt.vim' | |||||
Plug 'VebbNix/lf-vim' | |||||
" Tmux integration | |||||
Plug 'benmills/vimux' | |||||
Plug 'christoomey/vim-tmux-navigator' | |||||
" Neuron | |||||
Plug 'oberblastmeister/neuron.nvim', { 'branch' : 'unstable' } | |||||
Plug 'nvim-lua/popup.nvim' | |||||
Plug 'iamcco/markdown-preview.nvim', { 'do': { -> mkdp#util#install() }, 'for': ['markdown', 'vim-plug']} | |||||
" File system navigation | |||||
Plug 'nvim-lua/plenary.nvim' | |||||
Plug 'nvim-telescope/telescope.nvim' | |||||
" OCS Yank PLugin for use with Blink Shell | |||||
Plug 'ojroques/vim-oscyank' | |||||
" Syntax highlighting | |||||
Plug 'joelbeedle/pseudo-syntax' | |||||
Plug 'rhysd/vim-wasm' | |||||
Plug 'elzr/vim-json' | |||||
Plug 'tpope/vim-markdown' | |||||
Plug 'pangloss/vim-javascript' | |||||
Plug 'leafgarland/typescript-vim' | |||||
Plug 'vim-scripts/cool.vim' | |||||
Plug 'justinmk/vim-syntax-extra' | |||||
Plug 'arrufat/vala.vim' | |||||
Plug 'Shirk/vim-gas' | |||||
call plug#end() |
@ -1,9 +0,0 @@ | |||||
let g:better_whitespace_enabled=0 | |||||
let g:better_whitespace_ctermcolor='LightRed' | |||||
let g:better_whitespace_guicolor='LightRed' | |||||
let g:better_whitespace_operator='_s' | |||||
let g:strip_whitespace_on_save=1 | |||||
let g:strip_max_file_size=1000 | |||||
let g:strip_whitespace_confirm=0 | |||||
let g:better_whitespace_filetypes_blacklist=['md', 'markdown'] |
@ -1,3 +0,0 @@ | |||||
" bind K to search word under cursor | |||||
nnoremap ,K :Rg <C-R><C-W><CR> | |||||
cnoreabbrev <expr> Ag ((getcmdtype() is# ':' && getcmdline() is# 'Ag')?('Rg'):('Ag')) " Map Ag to Rg as well |
@ -1,7 +0,0 @@ | |||||
let test#strategy = "vimux" | |||||
let test#runners = {} | |||||
nmap <silent> <leader>s :TestNearest<CR> | |||||
nmap <silent> <leader>t :TestFile<CR> | |||||
nmap <silent> <leader>a :TestSuite<CR> | |||||
nmap <silent> <leader>l :TestLast<CR> |
@ -1,9 +0,0 @@ | |||||
function! RunCommand() | |||||
call inputsave() | |||||
let replacement = input('Enter Command: ') | |||||
call inputrestore() | |||||
execute 'call VimuxRunCommand("'.replacement.'")' | |||||
endfunction | |||||
nnoremap <F5> :call RunCommand()<CR> | |||||
nnoremap <F6> :VimuxRunLastCommand<CR> |
@ -0,0 +1,4 @@ | |||||
[ColorScheme] | |||||
active_colors=#ffcdd6f4, #ff1e1e2e, #ffa6adc8, #ff9399b2, #ff45475a, #ff6c7086, #ffcdd6f4, #ffcdd6f4, #ffcdd6f4, #ff1e1e2e, #ff181825, #ff7f849c, #ff89b4fa, #ff1e1e2e, #ff89b4fa, #fff38ba8, #ff1e1e2e, #ffcdd6f4, #ff11111b, #ffcdd6f4, #807f849c | |||||
disabled_colors=#ffa6adc8, #ff1e1e2e, #ffa6adc8, #ff9399b2, #ff45475a, #ff6c7086, #ffa6adc8, #ffa6adc8, #ffa6adc8, #ff1e1e2e, #ff11111b, #ff7f849c, #ff89b4fa, #ff45475a, #ff89b4fa, #fff38ba8, #ff1e1e2e, #ffcdd6f4, #ff11111b, #ffcdd6f4, #807f849c | |||||
inactive_colors=#ffcdd6f4, #ff1e1e2e, #ffa6adc8, #ff9399b2, #ff45475a, #ff6c7086, #ffcdd6f4, #ffcdd6f4, #ffcdd6f4, #ff1e1e2e, #ff181825, #ff7f849c, #ff89b4fa, #ffa6adc8, #ff89b4fa, #fff38ba8, #ff1e1e2e, #ffcdd6f4, #ff11111b, #ffcdd6f4, #807f849c |
@ -1,565 +0,0 @@ | |||||
" Vim Color File | |||||
" Name: material.vim | |||||
" Maintainer: https://github.com/kaicataldo/material.vim | |||||
" License: The MIT License (MIT) | |||||
" === Configuration === | |||||
" Clear any other set colors | |||||
highlight clear | |||||
if exists('syntax_on') | |||||
syntax reset | |||||
endif | |||||
let g:colors_name = 'material' | |||||
let g:material_theme_style = get(g:, 'material_theme_style', 'default') | |||||
let g:material_terminal_italics = get(g:, 'material_terminal_italics', 0) | |||||
" For backwards compatibility | |||||
if (g:material_theme_style == 'dark') | |||||
let g:material_theme_style = 'darker' | |||||
endif | |||||
" === Functions === | |||||
function! s:SetHighlight(group, fg, bg, attr) | |||||
let l:attr = a:attr | |||||
if !g:material_terminal_italics && l:attr == 'italic' | |||||
let l:attr = '' | |||||
endif | |||||
if empty(l:attr) | |||||
let l:attr = 'none' | |||||
endif | |||||
if !empty(a:fg) | |||||
exec 'hi ' . a:group . ' guifg=' . a:fg.gui . ' ctermfg=' . a:fg.cterm | |||||
endif | |||||
if !empty(a:bg) | |||||
exec 'hi ' . a:group . ' guibg=' . a:bg.gui . ' ctermbg=' . a:bg.cterm | |||||
endif | |||||
if !empty(l:attr) | |||||
exec 'hi ' . a:group . ' gui=' . l:attr . ' cterm=' . l:attr | |||||
endif | |||||
endfun | |||||
" === Color Definitions === | |||||
" Default colors | |||||
set background=dark | |||||
let s:bg = { 'gui': '#263238', 'cterm': 'none' } | |||||
let s:fg = { 'gui': '#eeffff', 'cterm': 231 } | |||||
let s:invisibles = { 'gui': '#65738e', 'cterm': 66 } | |||||
let s:comments = { 'gui': '#546e7a', 'cterm': 145 } | |||||
let s:caret = { 'gui': '#ffcc00', 'cterm': 220 } | |||||
let s:selection = { 'gui': '#2c3b41', 'cterm': 239 } | |||||
let s:guides = { 'gui': '#37474f', 'cterm': 17 } | |||||
let s:line_numbers = { 'gui': '#37474f', 'cterm': 145 } | |||||
let s:line_highlight = { 'gui': '#1a2327', 'cterm': 235 } | |||||
let s:white = { 'gui': '#ffffff', 'cterm': 231 } | |||||
let s:black = { 'gui': '#000000', 'cterm': 232 } | |||||
let s:red = { 'gui': '#ff5370', 'cterm': 203 } | |||||
let s:orange = { 'gui': '#f78c6c', 'cterm': 209 } | |||||
let s:yellow = { 'gui': '#ffcb6b', 'cterm': 11 } | |||||
let s:green = { 'gui': '#c3e88d', 'cterm': 2 } " 186 –– almost perfect match | |||||
let s:cyan = { 'gui': '#89ddff', 'cterm': 117 } | |||||
let s:blue = { 'gui': '#82aaff', 'cterm': 111 } | |||||
let s:paleblue = { 'gui': '#b2ccd6', 'cterm': 152 } | |||||
let s:purple = { 'gui': '#c792ea', 'cterm': 176 } | |||||
let s:brown = { 'gui': '#c17e70', 'cterm': 137 } | |||||
let s:pink = { 'gui': '#f07178', 'cterm': 204 } | |||||
let s:violet = { 'gui': '#bb80b3', 'cterm': 139 } | |||||
" Theme-specific color overrides | |||||
if g:material_theme_style == 'palenight' || g:material_theme_style == 'palenight-community' | |||||
let s:bg = { 'gui': '#292d3e', 'cterm': 'none' } | |||||
let s:fg = { 'gui': '#a6accd', 'cterm': 146 } | |||||
let s:invisibles = { 'gui': '#4e5579', 'cterm': 60 } | |||||
let s:comments = { 'gui': '#676e95', 'cterm': 60 } | |||||
let s:selection = { 'gui': '#343b51', 'cterm': 60 } | |||||
let s:guides = { 'gui': '#4e5579', 'cterm': 60 } | |||||
let s:line_numbers = { 'gui': '#3a3f58', 'cterm': 60 } | |||||
let s:line_highlight = { 'gui': '#1c1f2b', 'cterm': 234 } | |||||
elseif g:material_theme_style == 'darker' || g:material_theme_style == 'darker-community' | |||||
let s:bg = { 'gui': '#212121', 'cterm': 'none' } | |||||
let s:fg = { 'gui': '#eeffff', 'cterm': 231 } | |||||
let s:invisibles = { 'gui': '#65737e', 'cterm': 66 } | |||||
let s:comments = { 'gui': '#545454', 'cterm': 59 } | |||||
let s:selection = { 'gui': '#2c2c2c', 'cterm': 237 } | |||||
let s:guides = { 'gui': '#424242', 'cterm': 0 } | |||||
let s:line_numbers = { 'gui': '#424242', 'cterm': 0 } | |||||
let s:line_highlight = { 'gui': '#171717', 'cterm': 0 } | |||||
elseif g:material_theme_style == 'ocean' || g:material_theme_style == 'ocean-community' | |||||
let s:bg = { 'gui': '#0f111a', 'cterm': 'none' } | |||||
let s:fg = { 'gui': '#8f93a2', 'cterm': 103 } | |||||
let s:invisibles = { 'gui': '#80869e', 'cterm': 103 } | |||||
let s:comments = { 'gui': '#464b5d', 'cterm': 60 } | |||||
let s:selection = { 'gui': '#1f2233', 'cterm': 60 } | |||||
let s:guides = { 'gui': '#3b3f51', 'cterm': 17 } | |||||
let s:line_numbers = { 'gui': '#3b3f51', 'cterm': 60 } | |||||
let s:line_highlight = { 'gui': '#0a0c12', 'cterm': 0 } | |||||
elseif g:material_theme_style == 'lighter' || g:material_theme_style == 'lighter-community' | |||||
set background=light | |||||
let s:bg = { 'gui': '#fafafa', 'cterm': 'none' } | |||||
let s:fg = { 'gui': '#90a4ae', 'cterm': 109 } | |||||
let s:invisibles = { 'gui': '#e7eaec', 'cterm': 189 } | |||||
let s:comments = { 'gui': '#90a4ae', 'cterm': 109 } | |||||
let s:caret = { 'gui': '#272727', 'cterm': 0 } | |||||
let s:selection = { 'gui': '#ebf4f3', 'cterm': 254 } | |||||
let s:guides = { 'gui': '#b0bec5', 'cterm': 146 } | |||||
let s:line_numbers = { 'gui': '#cfd8dc', 'cterm': 188 } | |||||
let s:line_highlight = { 'gui': '#ecf0f1', 'cterm': 253 } | |||||
let s:white = { 'gui': '#ffffff', 'cterm': 231 } | |||||
let s:black = { 'gui': '#000000', 'cterm': 0 } | |||||
let s:red = { 'gui': '#e53935', 'cterm': 160 } | |||||
let s:orange = { 'gui': '#f76d47', 'cterm': 202 } | |||||
let s:yellow = { 'gui': '#ffb62c', 'cterm': 214 } | |||||
let s:green = { 'gui': '#91b859', 'cterm': 107 } | |||||
let s:cyan = { 'gui': '#39adb5', 'cterm': 37 } | |||||
let s:blue = { 'gui': '#6182b8', 'cterm': 67 } | |||||
let s:paleblue = { 'gui': '#8796b0', 'cterm': 103 } | |||||
let s:purple = { 'gui': '#7c4dff', 'cterm': 99 } | |||||
let s:brown = { 'gui': '#c17e70', 'cterm': 137 } | |||||
let s:pink = { 'gui': '#ff5370', 'cterm': 203 } | |||||
let s:violet = { 'gui': '#945eb8', 'cterm': 97 } | |||||
endif | |||||
" Defined globally so that the Airline theme has access | |||||
let g:material_colorscheme_map = {} | |||||
let g:material_colorscheme_map.bg = s:bg | |||||
let g:material_colorscheme_map.fg = s:fg | |||||
let g:material_colorscheme_map.invisibles = s:invisibles | |||||
let g:material_colorscheme_map.comments = s:comments | |||||
let g:material_colorscheme_map.caret = s:caret | |||||
let g:material_colorscheme_map.selection = s:selection | |||||
let g:material_colorscheme_map.guides = s:guides | |||||
let g:material_colorscheme_map.line_numbers = s:line_numbers | |||||
let g:material_colorscheme_map.line_highlight = s:line_highlight | |||||
let g:material_colorscheme_map.white = s:white | |||||
let g:material_colorscheme_map.black = s:black | |||||
let g:material_colorscheme_map.red = s:red | |||||
let g:material_colorscheme_map.orange = s:orange | |||||
let g:material_colorscheme_map.yellow = s:yellow | |||||
let g:material_colorscheme_map.green = s:green | |||||
let g:material_colorscheme_map.cyan = s:cyan | |||||
let g:material_colorscheme_map.blue = s:blue | |||||
let g:material_colorscheme_map.paleblue = s:paleblue | |||||
let g:material_colorscheme_map.purple = s:purple | |||||
let g:material_colorscheme_map.brown = s:brown | |||||
let g:material_colorscheme_map.pink = s:pink | |||||
let g:material_colorscheme_map.violet = s:violet | |||||
" === Highlights === | |||||
" Vim Editor | |||||
call s:SetHighlight('ColorColumn', '', s:invisibles, '') | |||||
call s:SetHighlight('Cursor', s:bg, s:caret, '') | |||||
call s:SetHighlight('CursorColumn', '', s:line_highlight, '') | |||||
call s:SetHighlight('CursorLine', '', s:line_highlight, '') | |||||
call s:SetHighlight('CursorLineNr', s:comments, '', '') | |||||
call s:SetHighlight('Directory', s:blue, '', '') | |||||
call s:SetHighlight('DiffAdd', s:green, s:bg, '') | |||||
call s:SetHighlight('DiffDelete', s:red, s:bg, '') | |||||
call s:SetHighlight('DiffChange', s:yellow, s:bg, '') | |||||
call s:SetHighlight('DiffText', s:orange, s:bg, '') | |||||
call s:SetHighlight('ErrorMsg', s:bg, s:red, 'bold') | |||||
call s:SetHighlight('FoldColumn', s:line_numbers, s:bg, '') | |||||
call s:SetHighlight('Folded', s:brown, s:bg, 'bold') | |||||
call s:SetHighlight('LineNr', s:line_numbers, '', '') | |||||
call s:SetHighlight('MatchParen', s:comments, s:cyan, 'bold') | |||||
call s:SetHighlight('ModeMsg', s:green, '', '') | |||||
call s:SetHighlight('MoreMsg', s:green, '', '') | |||||
call s:SetHighlight('NonText', s:comments, '', '') | |||||
call s:SetHighlight('Normal', s:fg, s:bg, '') | |||||
call s:SetHighlight('Pmenu', s:fg, s:selection, '') | |||||
call s:SetHighlight('PmenuSel', s:bg, s:cyan, '') | |||||
call s:SetHighlight('PmenuSbar', '', s:selection, '') | |||||
call s:SetHighlight('PmenuThumb', '', s:comments, '') | |||||
call s:SetHighlight('Question', s:blue, '', '') | |||||
call s:SetHighlight('IncSearch', s:white, s:comments, 'none') | |||||
call s:SetHighlight('Search', s:white, s:comments, 'none') | |||||
call s:SetHighlight('SignColumn', s:fg, s:bg, '') | |||||
call s:SetHighlight('SpecialKey', s:comments, '', '') | |||||
call s:SetHighlight('SpellCap', s:blue, '', 'undercurl') | |||||
call s:SetHighlight('SpellBad', s:red, '', 'undercurl') | |||||
call s:SetHighlight('StatusLine', s:fg, s:selection, '') | |||||
call s:SetHighlight('StatusLineNC', s:comments, s:selection, '') | |||||
call s:SetHighlight('StatusLineTerm', s:bg, s:green, '') | |||||
call s:SetHighlight('StatusLineTermNC', s:bg, s:green, '') | |||||
call s:SetHighlight('TabLine', s:fg, s:line_numbers, '') | |||||
call s:SetHighlight('TabLineFill', s:fg, s:selection, '') | |||||
call s:SetHighlight('TabLineSel', s:bg, s:cyan, '') | |||||
call s:SetHighlight('Title', s:green, '', '') | |||||
call s:SetHighlight('VertSplit', s:comments, '', '') | |||||
call s:SetHighlight('Visual', s:fg, s:selection, '') | |||||
call s:SetHighlight('WarningMsg', s:red, '', '') | |||||
call s:SetHighlight('WildMenu', s:bg, s:cyan, '') | |||||
" Syntax | |||||
call s:SetHighlight('Comment', s:comments, '', 'italic') | |||||
call s:SetHighlight('Conceal', s:brown, s:bg, '') | |||||
call s:SetHighlight('Constant', s:orange, '', '') | |||||
call s:SetHighlight('String', s:green, '', '') | |||||
call s:SetHighlight('Character', s:green, '', '') | |||||
call s:SetHighlight('Identifier', s:red, '', '') | |||||
call s:SetHighlight('Function', s:blue, '', '') | |||||
call s:SetHighlight('Statement', s:purple, '', '') | |||||
call s:SetHighlight('Operator', s:cyan, '', '') | |||||
call s:SetHighlight('PreProc', s:cyan, '', '') | |||||
call s:SetHighlight('Include', s:blue, '', '') | |||||
call s:SetHighlight('Define', s:purple, '', '') | |||||
call s:SetHighlight('Macro', s:purple, '', '') | |||||
call s:SetHighlight('Type', s:yellow, '', '') | |||||
call s:SetHighlight('Structure', s:cyan, '', '') | |||||
call s:SetHighlight('Special', s:violet, '', '') | |||||
call s:SetHighlight('Underlined', s:blue, '', '') | |||||
call s:SetHighlight('Error', s:bg, s:red, '') | |||||
call s:SetHighlight('Todo', s:orange, s:bg, 'italic') | |||||
" Legacy groups for official git.vim and diff.vim syntax | |||||
hi! link diffFile DiffAdd | |||||
hi! link diffNewFile DiffDelete | |||||
hi! link diffAdded DiffAdd | |||||
hi! link diffChanged DiffChange | |||||
hi! link diffLine DiffChange | |||||
hi! link diffRemoved DiffDelete | |||||
" Git Commit Messages | |||||
call s:SetHighlight('gitcommitHeader', s:purple, '', '') | |||||
call s:SetHighlight('gitcommitUnmerged', s:green, '', '') | |||||
call s:SetHighlight('gitcommitSelectedFile', s:green, '', '') | |||||
call s:SetHighlight('gitcommitDiscardedFile', s:red, '', '') | |||||
call s:SetHighlight('gitcommitUnmergedFile', s:yellow, '', '') | |||||
call s:SetHighlight('gitcommitSelectedType', s:green, '', '') | |||||
call s:SetHighlight('gitcommitSummary', s:blue, '', '') | |||||
call s:SetHighlight('gitcommitDiscardedType', s:red, '', '') | |||||
hi link gitcommitNoBranch gitcommitBranch | |||||
hi link gitcommitUntracked gitcommitComment | |||||
hi link gitcommitDiscarded gitcommitComment | |||||
hi link gitcommitSelected gitcommitComment | |||||
hi link gitcommitDiscardedArrow gitcommitDiscardedFile | |||||
hi link gitcommitSelectedArrow gitcommitSelectedFile | |||||
hi link gitcommitUnmergedArrow gitcommitUnmergedFile | |||||
" Javascript | |||||
call s:SetHighlight('javaScriptBraces', s:fg, '', '') | |||||
call s:SetHighlight('javaScriptNull', s:orange, '', '') | |||||
call s:SetHighlight('javaScriptIdentifier', s:purple, '', '') | |||||
call s:SetHighlight('javaScriptNumber', s:orange, '', '') | |||||
call s:SetHighlight('javaScriptRequire', s:cyan, '', '') | |||||
call s:SetHighlight('javaScriptReserved', s:purple, '', '') | |||||
" pangloss/vim-javascript | |||||
if g:material_theme_style !~ '-community$' | |||||
call s:SetHighlight('jsArrowFunction', s:purple, '', '') | |||||
call s:SetHighlight('jsAsyncKeyword', s:purple, '', '') | |||||
call s:SetHighlight('jsBooleanTrue', s:orange, '', '') | |||||
call s:SetHighlight('jsBooleanFalse', s:orange, '', '') | |||||
call s:SetHighlight('jsBrackets', s:pink, '', '') | |||||
call s:SetHighlight('jsCatch', s:cyan, '', 'italic') | |||||
call s:SetHighlight('jsClassBraces', s:cyan, '', '') | |||||
call s:SetHighlight('jsClassDefinition', s:yellow, '', '') | |||||
call s:SetHighlight('jsClassFuncName', s:pink, '', '') | |||||
call s:SetHighlight('jsClassProperty', s:pink, '', '') | |||||
call s:SetHighlight('jsClassKeyword', s:purple, '', '') | |||||
call s:SetHighlight('jsConditional', s:cyan, '', 'italic') | |||||
call s:SetHighlight('jsDocParam', s:green, '', '') | |||||
call s:SetHighlight('jsDocTags', s:cyan, '', '') | |||||
call s:SetHighlight('jsDot', s:cyan, '', '') | |||||
call s:SetHighlight('jsException', s:cyan, '', 'italic') | |||||
call s:SetHighlight('jsExceptions', s:yellow, '', '') | |||||
call s:SetHighlight('jsExport', s:cyan, '', 'italic') | |||||
call s:SetHighlight('jsExportDefault', s:cyan, '', 'italic') | |||||
call s:SetHighlight('jsExtendsKeyword', s:purple, '', '') | |||||
call s:SetHighlight('jsFinally', s:cyan, '', 'italic') | |||||
call s:SetHighlight('jsFinallyBraces', s:cyan, '', '') | |||||
call s:SetHighlight('jsFlowArgumentDef', s:yellow, '', '') | |||||
call s:SetHighlight('jsForAwait', s:cyan, '', 'italic') | |||||
call s:SetHighlight('jsFrom', s:cyan, '', 'italic') | |||||
call s:SetHighlight('jsFuncBraces', s:cyan, '', '') | |||||
call s:SetHighlight('jsFuncCall', s:blue, '', '') | |||||
call s:SetHighlight('jsFuncParens', s:cyan, '', '') | |||||
call s:SetHighlight('jsFunction', s:purple, '', '') | |||||
call s:SetHighlight('jsFunctionKey', s:pink, '', '') | |||||
call s:SetHighlight('jsGlobalObjects', s:yellow, '', '') | |||||
call s:SetHighlight('jsGlobalNodeObjects', s:yellow, '', '') | |||||
call s:SetHighlight('jsIfElseBraces', s:cyan, '', '') | |||||
call s:SetHighlight('jsImport', s:cyan, '', 'italic') | |||||
call s:SetHighlight('jsModuleAs', s:cyan, '', 'italic') | |||||
call s:SetHighlight('jsModuleBraces', s:cyan, '', '') | |||||
call s:SetHighlight('jsNull', s:cyan, '', '') | |||||
call s:SetHighlight('jsNoise', s:cyan, '', '') | |||||
call s:SetHighlight('jsObjectBraces', s:cyan, '', '') | |||||
call s:SetHighlight('jsObjectColon', s:cyan, '', '') | |||||
call s:SetHighlight('jsObjectKey', s:pink, '', '') | |||||
call s:SetHighlight('jsObjectSeparator', s:cyan, '', '') | |||||
call s:SetHighlight('jsParens', s:pink, '', '') | |||||
call s:SetHighlight('jsRepeat', s:cyan, '', 'italic') | |||||
call s:SetHighlight('jsReturn', s:cyan, '', 'italic') | |||||
call s:SetHighlight('jsStorageClass', s:purple, '', '') | |||||
call s:SetHighlight('jsTemplateBraces', s:cyan, '', '') | |||||
call s:SetHighlight('jsTemplateExpression', s:fg, '', '') | |||||
call s:SetHighlight('jsTemplateString', s:green, '', '') | |||||
call s:SetHighlight('jsThis', s:cyan, '', 'italic') | |||||
call s:SetHighlight('jsTry', s:cyan, '', 'italic') | |||||
call s:SetHighlight('jsTryCatchBraces', s:cyan, '', '') | |||||
call s:SetHighlight('jsUndefined', s:cyan, '', '') | |||||
else | |||||
call s:SetHighlight('jsArrowFunction', s:purple, '', '') | |||||
call s:SetHighlight('jsAsyncKeyword', s:purple, '', '') | |||||
call s:SetHighlight('jsExtendsKeyword', s:purple, '', '') | |||||
call s:SetHighlight('jsClassKeyword', s:purple, '', '') | |||||
call s:SetHighlight('jsDocParam', s:green, '', '') | |||||
call s:SetHighlight('jsDocTags', s:cyan, '', '') | |||||
call s:SetHighlight('jsForAwait', s:purple, '', '') | |||||
call s:SetHighlight('jsFlowArgumentDef', s:yellow, '', '') | |||||
call s:SetHighlight('jsFrom', s:purple, '', '') | |||||
call s:SetHighlight('jsImport', s:purple, '', '') | |||||
call s:SetHighlight('jsExport', s:purple, '', '') | |||||
call s:SetHighlight('jsExportDefault', s:purple, '', '') | |||||
call s:SetHighlight('jsFuncCall', s:blue, '', '') | |||||
call s:SetHighlight('jsFunction', s:purple, '', '') | |||||
call s:SetHighlight('jsGlobalObjects', s:yellow, '', '') | |||||
call s:SetHighlight('jsGlobalNodeObjects', s:yellow, '', '') | |||||
call s:SetHighlight('jsModuleAs', s:purple, '', '') | |||||
call s:SetHighlight('jsNull', s:orange, '', '') | |||||
call s:SetHighlight('jsStorageClass', s:purple, '', '') | |||||
call s:SetHighlight('jsTemplateBraces', s:red, '', '') | |||||
call s:SetHighlight('jsTemplateExpression', s:red, '', '') | |||||
call s:SetHighlight('jsThis', s:red, '', '') | |||||
call s:SetHighlight('jsUndefined', s:orange, '', '') | |||||
endif | |||||
" MaxMEllon/vim-jsx-pretty | |||||
call s:SetHighlight('jsxTag', s:cyan, '', '') | |||||
call s:SetHighlight('jsxTagName', s:pink, '', '') | |||||
call s:SetHighlight('jsxComponentName', s:yellow, '', '') | |||||
call s:SetHighlight('jsxCloseTag', s:cyan, '', '') | |||||
call s:SetHighlight('jsxEscapeJs', s:fg, '', '') | |||||
call s:SetHighlight('jsxCloseString', s:cyan, '', '') | |||||
call s:SetHighlight('jsxAttrib', s:purple, '', 'italic') | |||||
call s:SetHighlight('jsxString', s:green, '', '') | |||||
call s:SetHighlight('jsxEqual', s:purple, '', '') | |||||
call s:SetHighlight('jsxDot', s:cyan, '', '') | |||||
call s:SetHighlight('jsxSpreadOperator', s:purple, '', '') | |||||
call s:SetHighlight('jsxBraces', s:cyan, '', '') | |||||
call s:SetHighlight('jsxNamespace', s:cyan, '', '') | |||||
" JSON | |||||
call s:SetHighlight('jsonBraces', s:fg, '', '') | |||||
" CSS | |||||
call s:SetHighlight('cssAttrComma', s:fg, '', '') | |||||
call s:SetHighlight('cssPseudoClassId', s:yellow, '', '') | |||||
call s:SetHighlight('cssBraces', s:fg, '', '') | |||||
call s:SetHighlight('cssClassName', s:yellow, '', '') | |||||
call s:SetHighlight('cssClassNameDot', s:yellow, '', '') | |||||
call s:SetHighlight('cssFunctionName', s:blue, '', '') | |||||
call s:SetHighlight('cssImportant', s:cyan, '', '') | |||||
call s:SetHighlight('cssIncludeKeyword', s:purple, '', '') | |||||
call s:SetHighlight('cssTagName', s:red, '', '') | |||||
call s:SetHighlight('cssMediaType', s:orange, '', '') | |||||
call s:SetHighlight('cssProp', s:fg, '', '') | |||||
call s:SetHighlight('cssSelectorOp', s:cyan, '', '') | |||||
call s:SetHighlight('cssSelectorOp2', s:cyan, '', '') | |||||
" Sass | |||||
call s:SetHighlight('sassAmpersand', s:red, '', '') | |||||
call s:SetHighlight('sassClassChar', s:yellow, '', '') | |||||
call s:SetHighlight('sassMixinName', s:blue, '', '') | |||||
call s:SetHighlight('sassVariable', s:purple, '', '') | |||||
" Less | |||||
call s:SetHighlight('lessAmpersand', s:red, '', '') | |||||
call s:SetHighlight('lessClassChar', s:yellow, '', '') | |||||
call s:SetHighlight('lessCssAttribute', s:fg, '', '') | |||||
call s:SetHighlight('lessFunction', s:blue, '', '') | |||||
call s:SetHighlight('lessVariable', s:purple, '', '') | |||||
" HTML | |||||
call s:SetHighlight('htmlTagName', s:pink, '', '') | |||||
call s:SetHighlight('htmlEndTag', s:cyan, '', '') | |||||
call s:SetHighlight('htmlTag', s:cyan, '', '') | |||||
call s:SetHighlight('htmlSpecialTagName', s:yellow, '', '') | |||||
call s:SetHighlight('htmlArg', s:purple, '', 'italic') | |||||
call s:SetHighlight('htmlTitle', s:fg, '', '') | |||||
call s:SetHighlight('htmlLink', s:fg, '', '') | |||||
"" Consistency with plasticboy/vim-markdown | |||||
call s:SetHighlight('htmlBold', s:pink, '', 'bold') | |||||
call s:SetHighlight('htmlH1', s:yellow, '', '') | |||||
call s:SetHighlight('htmlH2', s:yellow, '', '') | |||||
call s:SetHighlight('htmlH3', s:yellow, '', '') | |||||
call s:SetHighlight('htmlH4', s:yellow, '', '') | |||||
call s:SetHighlight('htmlH5', s:yellow, '', '') | |||||
call s:SetHighlight('htmlH6', s:yellow, '', '') | |||||
call s:SetHighlight('htmlItalic', s:pink, '', 'italic') | |||||
" XML | |||||
call s:SetHighlight('xmlAttrib', s:purple, '', 'italic') | |||||
call s:SetHighlight('xmlEndTag', s:cyan, '', '') | |||||
call s:SetHighlight('xmlTag', s:cyan, '', '') | |||||
call s:SetHighlight('xmlTagName', s:pink, '', '') | |||||
" Golang | |||||
call s:SetHighlight('goFunctionCall', s:blue, '', '') | |||||
call s:SetHighlight('goReceiverType', s:green, '', '') | |||||
call s:SetHighlight('goParamName', s:orange, '', '') | |||||
call s:SetHighlight('goParamType', s:green, '', '') | |||||
call s:SetHighlight('goTypeDecl', s:purple, '', '') | |||||
call s:SetHighlight('goTypeName', s:yellow, '', '') | |||||
call s:SetHighlight('goBuiltins', s:red, '', '') | |||||
call s:SetHighlight('goType', s:purple, '', '') | |||||
call s:SetHighlight('goSignedInts', s:purple, '', '') | |||||
call s:SetHighlight('goUnsignedInts', s:purple, '', '') | |||||
call s:SetHighlight('goFloats', s:purple, '', '') | |||||
call s:SetHighlight('goComplexes', s:purple, '', '') | |||||
" Ruby | |||||
call s:SetHighlight('rubyInterpolation', s:cyan, '', '') | |||||
call s:SetHighlight('rubyInterpolationDelimiter', s:violet, '', '') | |||||
call s:SetHighlight('rubyRegexp', s:cyan, '', '') | |||||
call s:SetHighlight('rubyRegexpDelimiter', s:violet, '', '') | |||||
call s:SetHighlight('rubyStringDelimiter', s:green, '', '') | |||||
" Rust | |||||
call s:SetHighlight('CocRustTypeHint', s:invisibles, '', '') | |||||
call s:SetHighlight('CocRustChainingHint', s:invisibles, '', '') | |||||
" TeX | |||||
call s:SetHighlight('texBeginEndName', s:blue, '', '') | |||||
call s:SetHighlight('texMathMatcher', s:blue, '', '') | |||||
call s:SetHighlight('texCite', s:green, '', '') | |||||
call s:SetHighlight('texRefZone', s:green, '', '') | |||||
call s:SetHighlight('texInputFile', s:green, '', '') | |||||
call s:SetHighlight('texMath', s:orange, '', '') | |||||
call s:SetHighlight('texMathOper', s:yellow, '', '') | |||||
" Markdown | |||||
if g:material_theme_style !~ '-community$' | |||||
call s:SetHighlight('markdownBold', s:pink, '', 'bold') | |||||
call s:SetHighlight('markdownBoldDelimiter', s:cyan, '', '') | |||||
call s:SetHighlight('markdownCode', s:paleblue, '', '') | |||||
call s:SetHighlight('markdownCodeDelimiter', s:green, '', '') | |||||
call s:SetHighlight('markdownHeadingDelimiter', s:cyan, '', '') | |||||
call s:SetHighlight('markdownH1', s:yellow, '', '') | |||||
call s:SetHighlight('markdownH2', s:yellow, '', '') | |||||
call s:SetHighlight('markdownH3', s:yellow, '', '') | |||||
call s:SetHighlight('markdownH4', s:yellow, '', '') | |||||
call s:SetHighlight('markdownH5', s:yellow, '', '') | |||||
call s:SetHighlight('markdownH6', s:yellow, '', '') | |||||
call s:SetHighlight('markdownItalic', s:pink, '', 'italic') | |||||
call s:SetHighlight('markdownItalicDelimiter', s:cyan, '', '') | |||||
call s:SetHighlight('markdownLinkDelimiter', s:cyan, '', '') | |||||
call s:SetHighlight('markdownLinkText', s:green, '', '') | |||||
call s:SetHighlight('markdownLinkTextDelimiter', s:cyan, '', '') | |||||
call s:SetHighlight('markdownListMarker', s:cyan, '', '') | |||||
call s:SetHighlight('markdownUrl', s:pink, '', 'underline') | |||||
call s:SetHighlight('markdownUrlTitleDelimiter', s:green, '', '') | |||||
else | |||||
call s:SetHighlight('markdownBold', s:yellow, '', 'bold') | |||||
call s:SetHighlight('markdownCode', s:cyan, '', '') | |||||
call s:SetHighlight('markdownCodeBlock', s:cyan, '', '') | |||||
call s:SetHighlight('markdownCodeDelimiter', s:cyan, '', '') | |||||
call s:SetHighlight('markdownHeadingDelimiter', s:green, '', '') | |||||
call s:SetHighlight('markdownHeadingRule', s:comments, '', '') | |||||
call s:SetHighlight('markdownId', s:purple, '', '') | |||||
call s:SetHighlight('markdownItalic', s:blue, '', 'italic') | |||||
call s:SetHighlight('markdownListMarker', s:orange, '', '') | |||||
call s:SetHighlight('markdownOrderedListMarker', s:orange, '', '') | |||||
call s:SetHighlight('markdownRule', s:comments, '', '') | |||||
call s:SetHighlight('markdownUrl', s:purple, '', '') | |||||
call s:SetHighlight('markdownUrlTitleDelimiter', s:yellow, '', '') | |||||
endif | |||||
" plasticboy/vim-markdown | |||||
if g:material_theme_style !~ '-community$' | |||||
call s:SetHighlight('mkdBold', s:cyan, '', '') | |||||
call s:SetHighlight('mkdCodeStart', s:green, '', '') | |||||
call s:SetHighlight('mkdCodeDelimiter', s:cyan, '', '') | |||||
call s:SetHighlight('mkdDelimiter', s:cyan, '', '') | |||||
call s:SetHighlight('mkdHeading', s:cyan, '', '') | |||||
call s:SetHighlight('mkdItalic', s:cyan, '', '') | |||||
call s:SetHighlight('mkdLink', s:green, '', '') | |||||
call s:SetHighlight('mkdListItem', s:cyan, '', '') | |||||
call s:SetHighlight('mkdURL', s:pink, '', 'underline') | |||||
endif | |||||
" vimwiki/vimwiki | |||||
if g:material_theme_style !~ '-community$' | |||||
call s:SetHighlight('VimwikiBold', s:pink, '', 'bold') | |||||
call s:SetHighlight('VimwikiBoldChar', s:cyan, '', 'bold') | |||||
call s:SetHighlight('VimwikiDelText', s:pink, '', 'strikethrough') | |||||
call s:SetHighlight('VimwikiDelTextChar', s:cyan, '', '') | |||||
call s:SetHighlight('VimwikiCode', s:green, '', '') | |||||
call s:SetHighlight('VimwikiCodeChar', s:cyan, '', '') | |||||
call s:SetHighlight('VimwikiHeader1', s:yellow, '', '') | |||||
call s:SetHighlight('VimwikiHeader2', s:yellow, '', '') | |||||
call s:SetHighlight('VimwikiHeader3', s:yellow, '', '') | |||||
call s:SetHighlight('VimwikiHeader4', s:yellow, '', '') | |||||
call s:SetHighlight('VimwikiHeader5', s:yellow, '', '') | |||||
call s:SetHighlight('VimwikiHeader6', s:yellow, '', '') | |||||
call s:SetHighlight('VimwikiHeaderChar', s:cyan, '', '') | |||||
call s:SetHighlight('VimwikiImage', s:cyan, '', '') | |||||
call s:SetHighlight('VimwikiItalic', s:pink, '', 'italic') | |||||
call s:SetHighlight('VimwikiItalicChar', s:cyan, '', '') | |||||
call s:SetHighlight('VimwikiLink', s:green, '', 'underline') | |||||
call s:SetHighlight('VimwikiListTodo', s:cyan, '', '') | |||||
call s:SetHighlight('VimwikiPre', s:green, '', '') | |||||
call s:SetHighlight('VimwikiWebLink1', s:green, '', 'underline') | |||||
endif | |||||
" vim-gitgutter | |||||
call s:SetHighlight('GitGutterAdd', s:green, '', '') | |||||
call s:SetHighlight('GitGutterChange', s:yellow, '', '') | |||||
call s:SetHighlight('GitGutterChangeDelete', s:orange, '', '') | |||||
call s:SetHighlight('GitGutterDelete', s:red, '', '') | |||||
" vim-signify | |||||
hi link SignifySignAdd GitGutterAdd | |||||
hi link SignifySignChange GitGutterChange | |||||
hi link SignifySignDelete GitGutterDelete | |||||
" vim-better-whitespace | |||||
call s:SetHighlight('ExtraWhitespace', '', s:red, '') | |||||
" NERDTree | |||||
if has('nvim') | |||||
call s:SetHighlight('NERDTreeFile', s:fg, '', '') | |||||
endif | |||||
" coc.nvim | |||||
call s:SetHighlight('CocMarkdownLink', s:purple, '', '') | |||||
call s:SetHighlight('CocErrorSign', s:red, '', '') | |||||
call s:SetHighlight('CocWarningSign', s:orange, '', '') | |||||
call s:SetHighlight('CocHintSign', s:yellow, '', '') | |||||
call s:SetHighlight('CocInfoSign', s:green, '', '') | |||||
" Neovim terminal colors | |||||
if has('nvim') | |||||
let g:terminal_color_background = s:bg.gui | |||||
let g:terminal_color_foreground = s:fg.gui | |||||
let g:terminal_color_0 = s:comments.gui | |||||
let g:terminal_color_1 = s:red.gui | |||||
let g:terminal_color_2 = s:green.gui | |||||
let g:terminal_color_3 = s:yellow.gui | |||||
let g:terminal_color_4 = s:blue.gui | |||||
let g:terminal_color_5 = s:purple.gui | |||||
let g:terminal_color_6 = s:cyan.gui | |||||
let g:terminal_color_7 = s:white.gui | |||||
let g:terminal_color_8 = g:terminal_color_0 | |||||
let g:terminal_color_9 = g:terminal_color_1 | |||||
let g:terminal_color_10 = g:terminal_color_2 | |||||
let g:terminal_color_11 = g:terminal_color_3 | |||||
let g:terminal_color_12 = g:terminal_color_4 | |||||
let g:terminal_color_13 = g:terminal_color_5 | |||||
let g:terminal_color_14 = g:terminal_color_6 | |||||
let g:terminal_color_15 = g:terminal_color_7 | |||||
endif | |||||
@ -1,240 +0,0 @@ | |||||
"" __ _______ _____ _____ | |||||
"" \ \ / / ____| ____|_ _| | |||||
"" \ V /| _| | _| | | | |||||
"" | | | |___| |___ | | | |||||
"" |_| |_____|_____| |_| | |||||
"" Yeet's vim configuration | |||||
" XDG Base Directory Specification | |||||
set runtimepath^=$XDG_CONFIG_HOME/vim | |||||
set runtimepath+=$XDG_DATA_HOME/vim | |||||
set runtimepath+=$XDG_CONFIG_HOME/vim/after | |||||
set packpath^=$XDG_DATA_HOME/vim,$XDG_CONFIG_HOME/vim | |||||
set packpath+=$XDG_CONFIG_HOME/vim/after,$XDG_DATA_HOME/vim/after | |||||
let g:netrw_home = $XDG_DATA_HOME."/vim" | |||||
call mkdir($XDG_DATA_HOME."/vim/spell", 'p') | |||||
set viewdir=$XDG_DATA_HOME/vim/view | call mkdir(&viewdir, 'p') | |||||
set backupdir=$XDG_CACHE_HOME/vim/backup | call mkdir(&backupdir, 'p') | |||||
set directory=$XDG_CACHE_HOME/vim/swap | call mkdir(&directory, 'p') | |||||
set undodir=$XDG_CACHE_HOME/vim/undo | call mkdir(&undodir, 'p') | |||||
let s:MRU_File = $XDG_CACHE_HOME."/vim/mru" | |||||
if !has('nvim') | set viminfofile=$XDG_CACHE_HOME/vim/viminfo | endif | |||||
" Set leader | |||||
let mapleader = "," | |||||
" Leader Mappings | |||||
nnoremap <Leader>c :w! \| !compiler "<c-r>%"<CR> | |||||
map <Leader>w :update<CR> | |||||
map <Leader>q :qall<CR> | |||||
map <Leader>gs :Gstatus<CR> | |||||
" map Q to gq for line formatting cuz Q is useless | |||||
nnoremap Q gq | |||||
" Recently edited files | |||||
map <Leader>h :History<CR> | |||||
" CtrlP use FZF (faster!) | |||||
nnoremap <C-p> :Telescope find_files<cr> | |||||
" ,b Buffers | |||||
nnoremap <Leader>b :Buffers<CR> | |||||
" ,u urlview | |||||
noremap <Leader>u :w<Home>silent <End> !urlview<CR> | |||||
" System clipboard copy | |||||
nnoremap <Leader>y "+y | |||||
nnoremap <Leader>p "+p | |||||
vnoremap <Leader>y "+y | |||||
vnoremap <Leader>p "+p | |||||
nnoremap <Leader>Y "+Y | |||||
nnoremap <Leader>P "+P | |||||
vnoremap <Leader>d "+d | |||||
nnoremap <Leader>D "+D | |||||
if has('nvim') | |||||
source ~/.config/nvim/plugin/plugins.vim | |||||
endif | |||||
syntax on | |||||
filetype plugin on | |||||
set autoread " Auto reload changed files | |||||
set wildmenu " Tab autocomplete in command mode | |||||
set backspace=indent,eol,start " http://vi.stackexchange.com/a/2163 | |||||
set laststatus=2 " Show status line on startup | |||||
set splitright " Open new splits to the right | |||||
set splitbelow " Open new splits to the bottom | |||||
set lazyredraw " Reduce the redraw frequency | |||||
set ttyfast " Send more characters in fast terminals | |||||
set nowrap " Don't wrap long lines | |||||
set listchars=extends:→ " Show arrow if line continues rightwards | |||||
set listchars+=precedes:← " Show arrow if line continues leftwards | |||||
set nobackup nowritebackup noswapfile " Turn off backup files | |||||
set noerrorbells novisualbell " Turn off visual and audible bells | |||||
set expandtab shiftwidth=2 tabstop=2 " Two spaces for tabs everywhere | |||||
set history=500 | |||||
set hidden " Save buffers automatically | |||||
set ignorecase smartcase " Search queries intelligently set case | |||||
set incsearch " Show search results as you type | |||||
set timeoutlen=1000 ttimeoutlen=0 " Remove timeout when hitting escape | |||||
set showcmd " Show size of visual selection | |||||
set cmdheight=2 | |||||
set t_Co=256 | |||||
noh | |||||
" set clipboard=unnamedplus | |||||
set shortmess+=c | |||||
set updatetime=300 | |||||
if has("patch-8.1.1564") | |||||
" Recently vim can merge signcolumn and number column into one | |||||
set signcolumn=number | |||||
else | |||||
set signcolumn=yes | |||||
endif | |||||
" Persistent undo | |||||
set undodir=~/.local/share/vim/undo/ | |||||
set undofile | |||||
set undolevels=1000 | |||||
set undoreload=10000 | |||||
" Ignored files/directories from autocomplete (and CtrlP) | |||||
set wildignore+=*/tmp/* | |||||
set wildignore+=*.so | |||||
set wildignore+=*.zip | |||||
set wildignore+=*/vendor/bundle/* | |||||
set wildignore+=*/node_modules/ | |||||
" Enable autocompletion: | |||||
set wildmode=longest,list,full | |||||
" Disables automatic commenting on newline: | |||||
autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o | |||||
vnoremap . :normal .<CR> | |||||
map <leader>f :Goyo \| set linebreak<CR> | |||||
map <leader>o :setlocal spell! spelllang=en_us<CR> | |||||
set splitbelow splitright | |||||
map <leader>s :!clear && shellcheck -x %<CR> | |||||
cnoremap w!! execute 'silent! write !sudo tee % >/dev/null' <bar> edit! | |||||
"------------------------------------------------------------------------------- | |||||
" Interface | |||||
"------------------------------------------------------------------------------- | |||||
set number " Enable line numbers | |||||
set scrolloff=5 " Leave 5 lines of buffer when scrolling | |||||
set sidescrolloff=10 " Leave 10 characters of horizontal buffer when scrolling | |||||
"------------------------------------------------------------------------------- | |||||
" Colors & Formatting | |||||
"------------------------------------------------------------------------------- | |||||
let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum" | |||||
let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum" | |||||
if (has("termguicolors")) | |||||
set termguicolors | |||||
endif | |||||
let g:material_theme_style='ocean-community' | |||||
set background=dark | |||||
try | |||||
colorscheme material | |||||
catch /^Vim\%((\a\+)\)\=:E185/ | |||||
colorscheme default | |||||
endtry | |||||
" Showcase comments in italics | |||||
highlight Comment cterm=italic gui=italic | |||||
" Easy tab navigation | |||||
nnoremap <C-Left> :tabprevious<CR> | |||||
nnoremap <C-Right> :tabnext<CR> | |||||
" Find/replace | |||||
vnoremap <C-r> "hy:%s/<C-r>h//g<left><left><left> | |||||
" DON'T USE ARROWS NORMIE | |||||
nnoremap <C-c> :echoe "Use Esc"<CR> | |||||
nnoremap <Left> :echoe "Use h"<CR> | |||||
nnoremap <Right> :echoe "Use l"<CR> | |||||
nnoremap <Up> :echoe "Use k"<CR> | |||||
nnoremap <Down> :echoe "Use j"<CR> | |||||
" Split resize | |||||
nnoremap <silent> <Leader>+ :exe "resize " . (winheight(0) * 3/2)<CR> | |||||
nnoremap <silent> <Leader>- :exe "resize " . (winheight(0) * 2/3)<CR> | |||||
" Make vim obey transparency | |||||
hi! Normal ctermbg=NONE guibg=NONE | |||||
hi! NonText ctermbg=NONE guibg=NONE | |||||
"------------------------------------------------------------------------------- | |||||
" Neovim-specific configurations | |||||
if has('nvim') | |||||
let $NVIM_TUI_ENABLE_TRUE_COLOR=1 | |||||
set termguicolors | |||||
" Fix vim-tmux-navigator <C-h> https://git.io/viGRU | |||||
nmap <BS> <C-W>h | |||||
" Fix vim-tmux-navigator <C-h> https://git.io/vS5QH | |||||
nmap <BS> :<C-u>TmuxNavigateLeft<CR> | |||||
" The following require plugins to be loaded so they should only be set in neovim | |||||
let g:vimtex_view_general_viewer = 'zathura' | |||||
" Syntastic max file size for python | |||||
let g:syntastic_python_pylint_post_args="--max-line-length=120" | |||||
" Widths fot several plugins | |||||
let g:goyo_width = 120 " Goyo | |||||
let g:Tlist_WinWidth = 40 " Tlist | |||||
lua <<EOF | |||||
require'neuron'.setup { | |||||
virtual_titles = true, | |||||
mappings = true, | |||||
run = nil, -- function to run when in neuron dir | |||||
neuron_dir = "~/Projects/Neocortex", -- the directory of all of your notes, expanded by default (currently supports only one directory for notes, find a way to detect neuron.dhall to use any directory) | |||||
leader = "gz", -- the leader key to for all mappings, remember with 'go zettel' | |||||
} | |||||
EOF | |||||
endif | |||||
" Don't clear clipboard on exit | |||||
autocmd VimLeave * call system("xsel -ib", getreg('+')) | |||||
" Useful for GDB debugging | |||||
packadd termdebug | |||||
" File Specific Settings | |||||
if has("autocmd") | |||||
" Use skeleton files | |||||
augroup templates | |||||
autocmd BufNewFile *.* silent! execute '0r ~/.config/vim/templates/skeleton.'.expand("<afile>:e") | |||||
autocmd BufNewFile * %substitute#\[:VIM_EVAL:\]\(.\{-\}\)\[:END_EVAL:\]#\=eval(submatch(1))#ge | |||||
augroup END | |||||
autocmd BufWinLeave *.tex !texclear %:p " Run texclear on exit | |||||
autocmd BufRead calcurse-note.* :set filetype=markdown " Use markdown for calcurse notes | |||||
endif | |||||
@ -0,0 +1,35 @@ | |||||
#!/bin/sh | |||||
function menu { | |||||
dmenu -i -l 20 $@ | |||||
} | |||||
function refresh { | |||||
echo "refresh" | |||||
} | |||||
current=$(hamster current) | |||||
# choose an action | |||||
if [ "No activity" = "$current" ]; then | |||||
action="start" | |||||
else | |||||
action=$(echo -e -n "start\nstop $current" | menu -p Action) | |||||
fi | |||||
[ -z "$action" ] && exit 1 | |||||
case "$action" in | |||||
start) | |||||
activity=$(hamster activities | menu -p Start) | |||||
[ -z "$activity" ] && exit 1 | |||||
hamster start $activity | |||||
notify-send "Started $activity" | |||||
refresh | |||||
;; | |||||
stop*) | |||||
hamster stop | |||||
notify-send "Stopped $current" | |||||
refresh | |||||
;; | |||||
esac |
@ -0,0 +1,22 @@ | |||||
#!/bin/sh | |||||
if [ ! -d "$XDG_CONFIG_HOME/sessions" ]; then | |||||
mkdir -p "$XDG_CONFIG_HOME/sessions" | |||||
fi | |||||
list="" | |||||
for i in $(ls -1 "$XDG_CONFIG_HOME/sessions/"); do | |||||
list="${list}${i} : $(head -n 1 "$XDG_CONFIG_HOME/sessions/$i" | sed 's/# //g')\n" | |||||
done | |||||
selection=$(printf "$list" | dmenu -l 4 | sed 's/ :.*//g') | |||||
echo "$selection" | |||||
if [ ! -f "$XDG_CONFIG_HOME/sessions/$selection" ]; then | |||||
touch "$XDG_CONFIG_HOME/sessions/$selection" | |||||
st -c vim -n vim -e "$EDITOR" "$XDG_CONFIG_HOME/sessions/$selection" | |||||
else | |||||
bash "$XDG_CONFIG_HOME/sessions/$selection" | |||||
fi | |||||
@ -0,0 +1,23 @@ | |||||
#!/bin/sh | |||||
if [ ! -f $XDG_RUNTIME_DIR/timer ] || [ -z $(cat $XDG_RUNTIME_DIR/timer) ]; then | |||||
duration="$(printf "" | dmenu -p "Please enter duration:")" | |||||
[ -z "$duration" ] && exit 1 | |||||
timestamp="$(date -d "$duration" '+%s')" | |||||
[ -z "$timestamp" ] && notify-send -a "Timer utility" "Time format not recognized" && exit 1 | |||||
printf "$timestamp" > $XDG_RUNTIME_DIR/timer | |||||
else | |||||
operation=$(printf "Cancel" | dmenu -p "Please select action:") | |||||
case $operation in | |||||
Cancel) | |||||
echo "" > $XDG_RUNTIME_DIR/timer | |||||
;; | |||||
esac | |||||
fi | |||||
kill -64 $(pidof dwmblocks) |
@ -0,0 +1,39 @@ | |||||
#!/bin/sh | |||||
read -r -d '' MENU << EOM | |||||
Arch Wiki | Open an entry from the Arch Wiki (offline) | dmenu-ambient | |||||
Bluetooth | Manage bluetooth and bluetooth devices | dmenu-bluetooth | |||||
Read Books | Connect to calibre-web and read a book | dmenu-books | |||||
Edit Config | Select and edit configuration files in your dotfiles | dmenu-edit | |||||
Kill Process | Kill a process that is bothering you | dmenu-killall | |||||
Mobile Device | Manage your mobile device through mconnect | dmenu-mconnect | |||||
Record Screen | Record your screen, voice or anything | dmenu-record | |||||
Mount Storage Devices | Manage connected detachable storage devices | dmenu-udevil | |||||
Unmount Storage Devices | Manage connected detachable storage devices | dmenu-udevil -u | |||||
Word Count | Count the words, letters and lines in any string | dmenu-wc | |||||
Grab Color | Grab any color on your screen | grabcolor | |||||
Sync Mail | Synchronize your mail | mailsync | |||||
Toggle Trackpad | Enable/Disable your trackpad | toggle_trackpad.sh | |||||
Sync Nextcloud | Synchronize with your nextcloud instance | nextcloud-sync | |||||
Network Settings | Manage network settings using connman | connman_dmenu | |||||
Backup | Backup your system | backup | |||||
Ambient Sounds | Play ambient sounds | dmenu-ambient | |||||
Insert Emoji | Insert an emoji or glyph | dmenu-emoji | |||||
Create Timer | Create or manage a timer | dmenu-timer | |||||
Watch Youtube | Search and watch a youtube video | ytfzf_dmenu | |||||
EOM | |||||
selection=$(printf "$MENU" | column -s '|' -t | dmenu -p "Select a tool" -l 7) | |||||
[ -z "$selection" ] && exit | |||||
cmd=$(echo "$selection" | sed 's/\s\{2,\}/\n/g' | tail -n 1) | |||||
bash -c "$cmd" | |||||
@ -1,73 +0,0 @@ | |||||
#!/bin/sh | |||||
itemcache="${XDG_DATA_HOME:-$HOME/.cache}/wallabag-dmenu" | |||||
DMENU=${DMENU:-dmenu} | |||||
usage() { | |||||
cat <<-EOF | |||||
usage: dmenu-wallabag [-lah] | |||||
-l List Entries | |||||
-s Select Menu | |||||
-a Add an entry | |||||
-h Print help | |||||
EOF | |||||
} | |||||
update_items(){ | |||||
[ "$(date -r "$itemcache" "+%d-%m-%Y %H")" = "$(date '+%d-%m-%Y') %H" ] || | |||||
wallabag list | head -n -1 | tail -n +2 > $itemcache | |||||
} | |||||
list_entries() { | |||||
update_items | |||||
items="$(cat $itemcache)" | |||||
selection=$(echo -e "$items\n~SYNC~" | dmenu -l 10 -p "Choose an article:") | |||||
if [ "$selection" = "~SYNC~" ]; then | |||||
wallabag list | head -n -1 | tail -n +2 > $itemcache | |||||
items="$(cat $itemcache)" | |||||
selection=$(echo "$items" | dmenu -l 10 -p "Choose an article:") | |||||
fi | |||||
if [ "$selection" = "" ]; then | |||||
exit | |||||
fi | |||||
selection=$(echo "$selection" | cut -d" " -f1) | |||||
wallabag update --read $selection | |||||
wallabag open $selection | |||||
wallabag list | head -n -1 | tail -n +2 > $itemcache | |||||
} | |||||
add_entry() { | |||||
url=$(echo -n "" | dmenu -p "Enter URL:") | |||||
if [ "$url" = "" ]; then | |||||
exit | |||||
fi | |||||
wallabag add $url | |||||
wallabag list | head -n -1 | tail -n +2 > $itemcache | |||||
} | |||||
select_mode() { | |||||
menu="Read\nAdd" | |||||
action=$(echo -e "$menu" | dmenu -p "Select action: ") | |||||
if [ "$action" = "" ]; then | |||||
return | |||||
fi | |||||
if [ "$action" = "Read" ];then | |||||
list_entries | |||||
else | |||||
add_entry | |||||
fi | |||||
} | |||||
while getopts ':lahs' opt; do | |||||
case "$opt" in | |||||
l) list_entries ;; | |||||
s) select_mode;; | |||||
a) add_entry ;; | |||||
h) usage && exit;; | |||||
/?) echo "Unrecognized command: $OPTARG";; | |||||
esac | |||||
done | |||||