summaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua')
-rw-r--r--lua/core/autopairs.lua (renamed from lua/lv-autopairs/init.lua)0
-rw-r--r--lua/core/bufferline.lua (renamed from lua/lv-barbar/init.lua)5
-rw-r--r--lua/core/compe.lua (renamed from lua/lv-compe/init.lua)27
-rw-r--r--lua/core/dap.lua41
-rw-r--r--lua/core/dashboard.lua100
-rw-r--r--lua/core/floatterm.lua (renamed from lua/lv-floatterm/init.lua)35
-rw-r--r--lua/core/formatter.lua60
-rw-r--r--lua/core/galaxyline.lua (renamed from lua/lv-galaxyline/init.lua)110
-rw-r--r--lua/core/gitsigns.lua (renamed from lua/lv-gitsigns/init.lua)16
-rw-r--r--lua/core/nvimtree.lua (renamed from lua/lv-nvimtree/init.lua)4
-rw-r--r--lua/core/status_colors.lua19
-rw-r--r--lua/core/telescope.lua96
-rw-r--r--lua/core/treesitter.lua187
-rw-r--r--lua/core/which-key.lua195
-rw-r--r--lua/core/zen.lua34
-rw-r--r--lua/default-config.lua262
-rw-r--r--lua/keymappings.lua147
-rw-r--r--lua/lsp/angular-ls.lua2
-rw-r--r--lua/lsp/emmet-ls.lua2
-rw-r--r--lua/lsp/init.lua72
-rw-r--r--lua/lsp/svelte-ls.lua2
-rw-r--r--lua/lsp/tailwindcss-ls.lua2
-rw-r--r--lua/lsp/ts-fmt-lint.lua38
-rw-r--r--lua/lsp/tsserver-ls.lua26
-rw-r--r--lua/lv-colorizer/init.lua14
-rw-r--r--lua/lv-dap/init.lua29
-rw-r--r--lua/lv-dashboard/init.lua70
-rw-r--r--lua/lv-lspinstall/init.lua27
-rw-r--r--lua/lv-neoformat/init.lua23
-rw-r--r--lua/lv-symbols-outline/init.lua15
-rw-r--r--lua/lv-telescope/init.lua90
-rw-r--r--lua/lv-themes/spacegray.lua373
-rw-r--r--lua/lv-treesitter/init.lua146
-rw-r--r--lua/lv-utils/init.lua19
-rw-r--r--lua/lv-vimtex/init.lua25
-rw-r--r--lua/lv-which-key/init.lua251
-rw-r--r--lua/lv-zen/config.lua21
-rw-r--r--lua/lv-zen/init.lua10
-rw-r--r--lua/plugins.lua278
-rw-r--r--lua/settings.lua82
-rw-r--r--lua/spacegray/Git.lua10
-rw-r--r--lua/spacegray/LSP.lua92
-rw-r--r--lua/spacegray/Treesitter.lua56
-rw-r--r--lua/spacegray/Whichkey.lua9
-rw-r--r--lua/spacegray/config.lua23
-rw-r--r--lua/spacegray/highlights.lua99
-rw-r--r--lua/spacegray/init.lua26
-rw-r--r--lua/spacegray/markdown.lua27
-rw-r--r--lua/spacegray/palette.lua33
-rw-r--r--lua/spacegray/util.lua22
50 files changed, 1714 insertions, 1638 deletions
diff --git a/lua/lv-autopairs/init.lua b/lua/core/autopairs.lua
index b8dad5f3..b8dad5f3 100644
--- a/lua/lv-autopairs/init.lua
+++ b/lua/core/autopairs.lua
diff --git a/lua/lv-barbar/init.lua b/lua/core/bufferline.lua
index 2b5cf97d..d4e4b4fe 100644
--- a/lua/lv-barbar/init.lua
+++ b/lua/core/bufferline.lua
@@ -1,10 +1,9 @@
-vim.api.nvim_set_keymap("n", "<TAB>", ":BufferNext<CR>", { noremap = true, silent = true })
-vim.api.nvim_set_keymap("n", "<S-TAB>", ":BufferPrevious<CR>", { noremap = true, silent = true })
vim.api.nvim_set_keymap("n", "<S-x>", ":BufferClose<CR>", { noremap = true, silent = true })
vim.api.nvim_set_keymap("n", "<S-l>", ":BufferNext<CR>", { noremap = true, silent = true })
vim.api.nvim_set_keymap("n", "<S-h>", ":BufferPrevious<CR>", { noremap = true, silent = true })
+vim.api.nvim_set_keymap("n", "<leader>c", ":BufferClose<CR>", { noremap = true, silent = true })
-O.user_which_key["b"] = {
+O.plugin.which_key.mappings["b"] = {
name = "Buffers",
j = { "<cmd>BufferPick<cr>", "jump to buffer" },
f = { "<cmd>Telescope buffers<cr>", "Find buffer" },
diff --git a/lua/lv-compe/init.lua b/lua/core/compe.lua
index f42e8ad3..c8152ad1 100644
--- a/lua/lv-compe/init.lua
+++ b/lua/core/compe.lua
@@ -1,14 +1,7 @@
---if not package.loaded['compe'] then
--- return
--- end
-
local M = {}
-
-vim.g.vsnip_snippet_dir = O.vnsip_dir
-
M.config = function()
- local opt = {
- enabled = O.auto_complete,
+ O.completion = {
+ enabled = true,
autocomplete = true,
debug = false,
min_length = 1,
@@ -27,24 +20,28 @@ M.config = function()
calc = { kind = "  (Calc)" },
vsnip = { kind = "  (Snippet)" },
nvim_lsp = { kind = "  (LSP)" },
- -- nvim_lua = {kind = "  "},
nvim_lua = false,
spell = { kind = "  (Spell)" },
tags = false,
- -- vim_dadbod_completion = true,
- -- snippets_nvim = {kind = "  "},
- -- ultisnips = {kind = "  "},
- -- treesitter = {kind = "  "},
+ vim_dadbod_completion = false,
+ snippets_nvim = false,
+ ultisnips = false,
+ treesitter = false,
emoji = { kind = " ﲃ (Emoji)", filetypes = { "markdown", "text" } },
-- for emoji press : (idk if that in compe tho)
},
}
+end
+
+M.setup = function()
+ vim.g.vsnip_snippet_dir = O.vsnip_dir
+
local status_ok, compe = pcall(require, "compe")
if not status_ok then
return
end
- compe.setup(opt)
+ compe.setup(O.completion)
local t = function(str)
return vim.api.nvim_replace_termcodes(str, true, true, true)
diff --git a/lua/core/dap.lua b/lua/core/dap.lua
new file mode 100644
index 00000000..bc76e221
--- /dev/null
+++ b/lua/core/dap.lua
@@ -0,0 +1,41 @@
+local M = {}
+M.config = function()
+ O.plugin.dap = {
+ active = false,
+ breakpoint = {
+ text = "",
+ texthl = "LspDiagnosticsSignError",
+ linehl = "",
+ numhl = "",
+ },
+ }
+end
+
+M.setup = function()
+ local status_ok, dap = pcall(require, "dap")
+ if not status_ok then
+ return
+ end
+
+ vim.fn.sign_define("DapBreakpoint", O.plugin.dap.breakpoint)
+ dap.defaults.fallback.terminal_win_cmd = "50vsplit new"
+
+ O.user_which_key["d"] = {
+ name = "Debug",
+ t = { "<cmd>lua require'dap'.toggle_breakpoint()<cr>", "Toggle Breakpoint" },
+ b = { "<cmd>lua require'dap'.step_back()<cr>", "Step Back" },
+ c = { "<cmd>lua require'dap'.continue()<cr>", "Continue" },
+ C = { "<cmd>lua require'dap'.run_to_cursor()<cr>", "Run To Cursor" },
+ d = { "<cmd>lua require'dap'.disconnect()<cr>", "Disconnect" },
+ g = { "<cmd>lua require'dap'.session()<cr>", "Get Session" },
+ i = { "<cmd>lua require'dap'.step_into()<cr>", "Step Into" },
+ o = { "<cmd>lua require'dap'.step_over()<cr>", "Step Over" },
+ u = { "<cmd>lua require'dap'.step_out()<cr>", "Step Out" },
+ p = { "<cmd>lua require'dap'.pause.toggle()<cr>", "Pause" },
+ r = { "<cmd>lua require'dap'.repl.toggle()<cr>", "Toggle Repl" },
+ s = { "<cmd>lua require'dap'.continue()<cr>", "Start" },
+ q = { "<cmd>lua require'dap'.stop()<cr>", "Quit" },
+ }
+end
+
+return M
diff --git a/lua/core/dashboard.lua b/lua/core/dashboard.lua
new file mode 100644
index 00000000..e58b6f06
--- /dev/null
+++ b/lua/core/dashboard.lua
@@ -0,0 +1,100 @@
+local M = {}
+M.config = function()
+ O.plugin.dashboard = {
+ active = false,
+ search_handler = "telescope",
+ custom_header = {
+ "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
+ "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣤⣶⣾⠿⠿⠟⠛⠛⠛⠛⠿⠿⣿⣷⣤⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
+ " ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣾⡿⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠿⣷⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
+ "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣤⡿⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⢿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
+ "⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠒⠂⠉⠉⠉⠉⢩⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
+ "⠀⠀⠀⠀⠀⠀⠀⠀⠸⡀⠀⠀⠀⠀⠀⢰⣿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
+ "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⠠⡀⠀⠀⢀⣾⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
+ "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠢⢀⣸⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
+ "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡧⢄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
+ "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡇⠀⠈⠁⠒⠤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
+ "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣇⠀⠀⠀⠀⠀⠀⠉⠢⠤⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⡟⠈⠑⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
+ "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠑⠒⠤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⡇⠀⠀⢀⣣⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
+ "⠀⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠀⠀⠒⠢⠤⠄⣀⣀⠀⠀⠀⢠⣿⡟⠀⠀⠀⣺⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
+ "⠀⣿⠇⠀⠀⠀⠀⠀⣤⡄⠀⠀⢠⣤⡄⠀⢨⣭⣠⣤⣤⣤⡀⠀⠀⢀⣤⣤⣤⣤⡄⠀⠀⠀⣤⣄⣤⣤⣤⠀⠀⣿⣯⠉⠉⣿⡟⠀⠈⢩⣭⣤⣤⠀⠀⠀⠀⣠⣤⣤⣤⣄⣤⣤",
+ "⢠⣿⠀⠀⠀⠀⠀⠀⣿⠃⠀⠀⣸⣿⠁⠀⣿⣿⠉⠀⠈⣿⡇⠀⠀⠛⠋⠀⠀⢹⣿⠀⠀⠀⣿⠏⠀⠸⠿⠃⠀⣿⣿⠀⣰⡟⠀⠀⠀⠀⠀⢸⣿⠀⠀⠀⠀⣿⡟⢸⣿⡇⢀⣿",
+ "⣸⡇⠀⠀⠀⠀⠀⢸⣿⠀⠀⠀⣿⡟⠀⢠⣿⡇⠀⠀⢰⣿⡇⠀⣰⣾⠟⠛⠛⣻⡇⠀⠀⢸⡿⠀⠀⠀⠀⠀⠀⢻⣿⢰⣿⠀⠀⠀⠀⠀⠀⣾⡇⠀⠀⠀⢸⣿⠇⢸⣿⠀⢸⡏",
+ "⣿⣧⣤⣤⣤⡄⠀⠘⣿⣤⣤⡤⣿⠇⠀⢸⣿⠁⠀⠀⣼⣿⠀⠀⢿⣿⣤⣤⠔⣿⠃⠀⠀⣾⡇⠀⠀⠀⠀⠀⠀⢸⣿⣿⠋⠀⠀⠀⢠⣤⣤⣿⣥⣤⡄⠀⣼⣿⠀⣸⡏⠀⣿⠃",
+ "⠉⠉⠉⠉⠉⠁⠀⠀⠈⠉⠉⠀⠉⠀⠀⠈⠉⠀⠀⠀⠉⠉⠀⠀⠀⠉⠉⠁⠈⠉⠀⠀⠀⠉⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠀⠀⠀⠀⠈⠉⠉⠉⠉⠉⠁⠀⠉⠁⠀⠉⠁⠀⠉⠀",
+ },
+
+ custom_section = {
+ a = {
+ description = { " Find File " },
+ command = "Telescope find_files",
+ },
+ b = {
+ description = { " Recently Used Files" },
+ command = "Telescope oldfiles",
+ },
+ -- c = {
+ -- description = { " Load Last Session " },
+ -- command = "SessionLoad",
+ -- },
+ c = {
+ description = { " Find Word " },
+ command = "Telescope live_grep",
+ },
+ d = {
+ description = { " Settings " },
+ command = ":e " .. CONFIG_PATH .. "/lv-config.lua",
+ },
+ },
+
+ footer = { "chrisatmachine.com" },
+ }
+end
+
+M.setup = function()
+ vim.g.dashboard_disable_at_vimenter = 0
+
+ vim.g.dashboard_custom_header = O.plugin.dashboard.custom_header
+
+ vim.g.dashboard_default_executive = O.plugin.dashboard.search_handler
+
+ vim.g.dashboard_custom_section = O.plugin.dashboard.custom_section
+
+ -- f = {
+ -- description = { " Neovim Config Files" },
+ -- command = "Telescope find_files cwd=" .. CONFIG_PATH,
+ -- },
+ -- e = {description = {' Marks '}, command = 'Telescope marks'}
+ vim.cmd "let g:dashboard_session_directory = $HOME..'/.config/nvim/.sessions'"
+ vim.cmd "let packages = len(globpath('~/.local/share/nvim/site/pack/packer/start', '*', 0, 1))"
+
+ vim.api.nvim_exec(
+ [[
+ let g:dashboard_custom_footer = ['LuaJIT loaded '..packages..' plugins']
+]],
+ false
+ )
+
+ -- file_browser = {description = {' File Browser'}, command = 'Telescope find_files'},
+
+ -- vim.g.dashboard_session_directory = CACHE_PATH..'/session'
+ -- vim.g.dashboard_custom_footer = O.dashboard.footer
+ require("lv-utils").define_augroups {
+ _dashboard = {
+ -- seems to be nobuflisted that makes my stuff disapear will do more testing
+ {
+ "FileType",
+ "dashboard",
+ "setlocal nocursorline noswapfile synmaxcol& signcolumn=no norelativenumber nocursorcolumn nospell nolist nonumber bufhidden=wipe colorcolumn= foldcolumn=0 matchpairs= ",
+ },
+ {
+ "FileType",
+ "dashboard",
+ "set showtabline=0 | autocmd BufLeave <buffer> set showtabline=2",
+ },
+ { "FileType", "dashboard", "nnoremap <silent> <buffer> q :q<CR>" },
+ },
+ }
+end
+
+return M
diff --git a/lua/lv-floatterm/init.lua b/lua/core/floatterm.lua
index 94696db4..3d7e0e6e 100644
--- a/lua/lv-floatterm/init.lua
+++ b/lua/core/floatterm.lua
@@ -1,31 +1,30 @@
local M = {}
-
M.config = function()
- local status_ok, fterm = pcall(require, "FTerm")
- if not status_ok then
- return
- end
-
- fterm.setup {
+ O.plugin.floatterm = {
+ active = false,
dimensions = {
- height = 0.8,
- width = 0.8,
+ height = 0.9,
+ width = 0.9,
x = 0.5,
- y = 0.5,
+ y = 0.3,
},
border = "single", -- or 'double'
}
+end
+
+M.setup = function()
+ local status_ok, fterm = pcall(require, "FTerm")
+ if not status_ok then
+ return
+ end
+
+ fterm.setup(O.plugin.floatterm)
-- Create LazyGit Terminal
local term = require "FTerm.terminal"
local lazy = term:new():setup {
cmd = "lazygit",
- dimensions = {
- height = 0.9,
- width = 0.9,
- x = 0.5,
- y = 0.3,
- },
+ dimensions = O.plugin.floatterm.dimensions,
}
local function is_installed(exe)
@@ -54,7 +53,11 @@ M.config = function()
-- ]],
-- false
-- )
+
+ O.plugin.which_key.mappings["gg"] = "LazyGit"
vim.api.nvim_set_keymap("n", "<A-i>", "<CMD>lua require('FTerm').toggle()<CR>", { noremap = true, silent = true })
+ vim.api.nvim_set_keymap("n", "<leader>gg", "<CMD>lua _G.__fterm_lazygit()<CR>", { noremap = true, silent = true })
+
vim.api.nvim_set_keymap(
"t",
"<A-i>",
diff --git a/lua/core/formatter.lua b/lua/core/formatter.lua
new file mode 100644
index 00000000..05de74ab
--- /dev/null
+++ b/lua/core/formatter.lua
@@ -0,0 +1,60 @@
+-- autoformat
+if O.format_on_save then
+ require("lv-utils").define_augroups {
+ autoformat = {
+ {
+ "BufWritePost",
+ "*",
+ ":silent FormatWrite",
+ },
+ },
+ }
+end
+
+-- -- check if formatter has been defined for the language or not
+-- local function formatter_exists(lang_formatter)
+-- if lang_formatter == nil then
+-- return false
+-- end
+-- if lang_formatter.exe == nil or lang_formatter.args == nil then
+-- return false
+-- end
+-- return true
+-- end
+
+-- returns default formatter for given language
+-- local function formatter_return(lang_formatter)
+-- return {
+-- exe = lang_formatter.exe,
+-- args = lang_formatter.args,
+-- stdin = not (lang_formatter.stdin ~= nil),
+-- }
+-- end
+
+-- fill a table like this -> {rust: {exe:"sth",args:{"a","b"},stdin=true},go: {}...}
+-- local formatter_filetypes = {}
+-- for k, v in pairs(O.lang) do
+-- if formatter_exists(v.formatter) then
+-- local keys = v.filetypes
+-- if keys == nil then
+-- keys = { k }
+-- end
+-- for _, l in pairs(keys) do
+-- formatter_filetypes[l] = {
+-- function()
+-- return formatter_return(v.formatter)
+-- end,
+-- }
+-- end
+-- end
+-- end
+local status_ok, formatter = pcall(require, "formatter")
+if not status_ok then
+ return
+end
+
+if not O.format_on_save then
+ vim.cmd [[if exists('#autoformat#BufWritePost')
+ :autocmd! autoformat
+ endif]]
+end
diff --git a/lua/lv-galaxyline/init.lua b/lua/core/galaxyline.lua
index c7a8fa55..281202a8 100644
--- a/lua/lv-galaxyline/init.lua
+++ b/lua/core/galaxyline.lua
@@ -5,28 +5,12 @@ local status_ok, gl = pcall(require, "galaxyline")
if not status_ok then
return
end
--- get my theme in galaxyline repo
--- local colors = require('galaxyline.theme').default
-local colors = {
- bg = "#2E2E2E",
- -- bg = '#292D38',
- yellow = "#DCDCAA",
- dark_yellow = "#D7BA7D",
- cyan = "#4EC9B0",
- green = "#608B4E",
- light_green = "#B5CEA8",
- string_orange = "#CE9178",
- orange = "#FF8800",
- purple = "#C586C0",
- magenta = "#D16D9E",
- grey = "#858585",
- blue = "#569CD6",
- vivid_blue = "#4FC1FF",
- light_blue = "#9CDCFE",
- red = "#D16969",
- error_red = "#F44747",
- info_yellow = "#FFCC66",
-}
+
+-- NOTE: if someone defines colors but doesn't have them then this will break
+local palette_status_ok, colors = pcall(require, O.colorscheme .. ".palette")
+if not palette_status_ok then
+ colors = O.plugin.galaxyline.colors
+end
local condition = require "galaxyline.condition"
local gls = gl.section
@@ -61,8 +45,8 @@ table.insert(gls.left, {
vim.api.nvim_command("hi GalaxyViMode guifg=" .. mode_color[vim.fn.mode()])
return "▊"
end,
- separator_highlight = "StatusLineSeparator",
- highlight = "StatusLineNC",
+ separator_highlight = { "NONE", colors.alt_bg },
+ highlight = { "NONE", colors.alt_bg },
},
})
-- print(vim.fn.getbufvar(0, 'ts'))
@@ -75,8 +59,8 @@ table.insert(gls.left, {
end,
condition = condition.check_git_workspace,
separator = " ",
- separator_highlight = "StatusLineSeparator",
- highlight = "StatusLineGit",
+ separator_highlight = { "NONE", colors.alt_bg },
+ highlight = { colors.orange, colors.alt_bg },
},
})
@@ -85,8 +69,8 @@ table.insert(gls.left, {
provider = "GitBranch",
condition = condition.check_git_workspace,
separator = " ",
- separator_highlight = "StatusLineSeparator",
- highlight = "StatusLineNC",
+ separator_highlight = { "NONE", colors.alt_bg },
+ highlight = { colors.grey, colors.alt_bg },
},
})
@@ -95,7 +79,7 @@ table.insert(gls.left, {
provider = "DiffAdd",
condition = condition.hide_in_width,
icon = "  ",
- highlight = "StatusLineGitAdd",
+ highlight = { colors.green, colors.alt_bg },
},
})
@@ -104,7 +88,7 @@ table.insert(gls.left, {
provider = "DiffModified",
condition = condition.hide_in_width,
icon = " 柳",
- highlight = "StatusLineGitChange",
+ highlight = { colors.blue, colors.alt_bg },
},
})
@@ -113,7 +97,7 @@ table.insert(gls.left, {
provider = "DiffRemove",
condition = condition.hide_in_width,
icon = "  ",
- highlight = "StatusLineGitDelete",
+ highlight = { colors.red, colors.alt_bg },
},
})
@@ -122,7 +106,7 @@ table.insert(gls.left, {
provider = function()
return " "
end,
- highlight = "StatusLineGitDelete",
+ highlight = { colors.grey, colors.alt_bg },
},
})
-- get output from shell command
@@ -153,7 +137,7 @@ local PythonEnv = function()
if vim.bo.filetype == "python" then
local venv = os.getenv "CONDA_DEFAULT_ENV"
if venv ~= nil then
- return "🅒 (" .. env_cleanup(venv) .. ")"
+ return "  (" .. env_cleanup(venv) .. ")"
end
venv = os.getenv "VIRTUAL_ENV"
if venv ~= nil then
@@ -166,8 +150,8 @@ end
table.insert(gls.left, {
VirtualEnv = {
provider = PythonEnv,
- highlight = "StatusLineTreeSitter",
event = "BufEnter",
+ highlight = { colors.green, colors.alt_bg },
},
})
@@ -175,15 +159,14 @@ table.insert(gls.right, {
DiagnosticError = {
provider = "DiagnosticError",
icon = "  ",
- highlight = "StatusLineLspDiagnosticsError",
+ highlight = { colors.red, colors.alt_bg },
},
})
table.insert(gls.right, {
DiagnosticWarn = {
provider = "DiagnosticWarn",
icon = "  ",
-
- highlight = "StatusLineLspDiagnosticsWarning",
+ highlight = { colors.orange, colors.alt_bg },
},
})
@@ -191,8 +174,7 @@ table.insert(gls.right, {
DiagnosticInfo = {
provider = "DiagnosticInfo",
icon = "  ",
-
- highlight = "StatusLineLspDiagnosticsInformation",
+ highlight = { colors.yellow, colors.alt_bg },
},
})
@@ -200,8 +182,7 @@ table.insert(gls.right, {
DiagnosticHint = {
provider = "DiagnosticHint",
icon = "  ",
-
- highlight = "StatusLineLspDiagnosticsHint",
+ highlight = { colors.blue, colors.alt_bg },
},
})
@@ -214,8 +195,8 @@ table.insert(gls.right, {
return ""
end,
separator = " ",
- separator_highlight = "StatusLineSeparator",
- highlight = "StatusLineTreeSitter",
+ separator_highlight = { "NONE", colors.alt_bg },
+ highlight = { colors.green, colors.alt_bg },
},
})
@@ -229,13 +210,15 @@ local get_lsp_client = function(msg)
local lsps = ""
for _, client in ipairs(clients) do
local filetypes = client.config.filetypes
- if filetypes and vim.fn.index(filetypes, buf_ft) ~= 1 then
+ if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then
-- print(client.name)
if lsps == "" then
-- print("first", lsps)
lsps = client.name
else
- lsps = lsps .. ", " .. client.name
+ if not string.find(lsps, client.name) then
+ lsps = lsps .. ", " .. client.name
+ end
-- print("more", lsps)
end
end
@@ -257,8 +240,8 @@ table.insert(gls.right, {
end
return true
end,
- icon = " ",
- highlight = "StatusLineNC",
+ icon = " ",
+ highlight = { colors.grey, colors.alt_bg },
},
})
@@ -266,8 +249,8 @@ table.insert(gls.right, {
LineInfo = {
provider = "LineColumn",
separator = " ",
- separator_highlight = "StatusLineSeparator",
- highlight = "StatusLineNC",
+ separator_highlight = { "NONE", colors.alt_bg },
+ highlight = { colors.grey, colors.alt_bg },
},
})
@@ -275,8 +258,8 @@ table.insert(gls.right, {
PerCent = {
provider = "LinePercent",
separator = " ",
- separator_highlight = "StatusLineSeparator",
- highlight = "StatusLineNC",
+ separator_highlight = { "NONE", colors.alt_bg },
+ highlight = { colors.grey, colors.alt_bg },
},
})
@@ -287,8 +270,8 @@ table.insert(gls.right, {
end,
condition = condition.hide_in_width,
separator = " ",
- separator_highlight = "StatusLineSeparator",
- highlight = "StatusLineNC",
+ separator_highlight = { "NONE", colors.alt_bg },
+ highlight = { colors.grey, colors.alt_bg },
},
})
@@ -297,8 +280,8 @@ table.insert(gls.right, {
provider = "FileTypeName",
condition = condition.hide_in_width,
separator = " ",
- separator_highlight = "StatusLineSeparator",
- highlight = "StatusLineNC",
+ separator_highlight = { "NONE", colors.alt_bg },
+ highlight = { colors.grey, colors.alt_bg },
},
})
@@ -307,8 +290,8 @@ table.insert(gls.right, {
provider = "FileEncode",
condition = condition.hide_in_width,
separator = " ",
- separator_highlight = "StatusLineSeparator",
- highlight = "StatusLineNC",
+ separator_highlight = { "NONE", colors.alt_bg },
+ highlight = { colors.grey, colors.alt_bg },
},
})
@@ -318,8 +301,8 @@ table.insert(gls.right, {
return " "
end,
separator = " ",
- separator_highlight = "StatusLineSeparator",
- highlight = "StatusLineNC",
+ separator_highlight = { "NONE", colors.alt_bg },
+ highlight = { colors.grey, colors.alt_bg },
},
})
@@ -327,8 +310,8 @@ table.insert(gls.short_line_left, {
BufferType = {
provider = "FileTypeName",
separator = " ",
- separator_highlight = "StatusLineSeparator",
- highlight = "StatusLineNC",
+ separator_highlight = { "NONE", colors.alt_bg },
+ highlight = { colors.grey, colors.alt_bg },
},
})
@@ -336,9 +319,8 @@ table.insert(gls.short_line_left, {
SFileName = {
provider = "SFileName",
condition = condition.buffer_not_empty,
-
- highlight = "StatusLineNC",
+ highlight = { colors.grey, colors.alt_bg },
},
})
---table.insert(gls.short_line_right[1] = {BufferIcon = {provider = 'BufferIcon', highlight = {colors.grey, colors.bg}}})
+--table.insert(gls.short_line_right[1] = {BufferIcon = {provider = 'BufferIcon', highlight = {colors.grey, colors.alt_bg}}})
diff --git a/lua/lv-gitsigns/init.lua b/lua/core/gitsigns.lua
index 920c3120..bc310ad6 100644
--- a/lua/lv-gitsigns/init.lua
+++ b/lua/core/gitsigns.lua
@@ -1,13 +1,7 @@
local M = {}
-
M.config = function()
- local status_ok, gitsigns = pcall(require, "gitsigns")
- if not status_ok then
- return
- end
- gitsigns.setup {
+ O.plugin.gitsigns = {
signs = {
- -- TODO add hl to colorscheme
add = {
hl = "GitSignsAdd",
text = "▎",
@@ -54,4 +48,12 @@ M.config = function()
}
end
+M.setup = function()
+ local status_ok, gitsigns = pcall(require, "gitsigns")
+ if not status_ok then
+ return
+ end
+ gitsigns.setup(O.plugin.gitsigns)
+end
+
return M
diff --git a/lua/lv-nvimtree/init.lua b/lua/core/nvimtree.lua
index 97cfe033..cb3eacea 100644
--- a/lua/lv-nvimtree/init.lua
+++ b/lua/core/nvimtree.lua
@@ -8,7 +8,7 @@ if not status_ok then
return
end
--
-M.config = function()
+M.setup = function()
local g = vim.g
vim.o.termguicolors = true
@@ -17,7 +17,7 @@ M.config = function()
g.nvim_tree_width = 30
g.nvim_tree_ignore = { ".git", "node_modules", ".cache" }
g.nvim_tree_auto_open = 1
- g.nvim_tree_auto_close = 0
+ g.nvim_tree_auto_close = 1
g.nvim_tree_quit_on_open = 0
g.nvim_tree_follow = 1
g.nvim_tree_indent_markers = 1
diff --git a/lua/core/status_colors.lua b/lua/core/status_colors.lua
new file mode 100644
index 00000000..ddb4aa98
--- /dev/null
+++ b/lua/core/status_colors.lua
@@ -0,0 +1,19 @@
+O.plugin.galaxyline = {
+ active = true,
+ colors = {
+ alt_bg = "#2E2E2E",
+ grey = "#858585",
+ blue = "#569CD6",
+ green = "#608B4E",
+ yellow = "#DCDCAA",
+ orange = "#FF8800",
+ purple = "#C586C0",
+ magenta = "#D16D9E",
+ cyan = "#4EC9B0",
+ red = "#D16969",
+ error_red = "#F44747",
+ warning_orange = "#FF8800",
+ info_yellow = "#FFCC66",
+ hint_blue = "#9CDCFE",
+ },
+}
diff --git a/lua/core/telescope.lua b/lua/core/telescope.lua
new file mode 100644
index 00000000..5a067d67
--- /dev/null
+++ b/lua/core/telescope.lua
@@ -0,0 +1,96 @@
+local M = {}
+M.config = function()
+ local status_ok, actions = pcall(require, "telescope.actions")
+ if not status_ok then
+ return
+ end
+
+ O.plugin.telescope = {
+ active = false,
+ defaults = {
+ find_command = {
+ "rg",
+ "--no-heading",
+ "--with-filename",
+ "--line-number",
+ "--column",
+ "--smart-case",
+ },
+ prompt_prefix = " ",
+ selection_caret = " ",
+ entry_prefix = " ",
+ initial_mode = "insert",
+ selection_strategy = "reset",
+ sorting_strategy = "descending",
+ layout_strategy = "horizontal",
+ layout_config = {
+ width = 0.75,
+ prompt_position = "bottom",
+ preview_cutoff = 120,
+ horizontal = { mirror = false },
+ vertical = { mirror = false },
+ },
+ file_sorter = require("telescope.sorters").get_fzy_sorter,
+ file_ignore_patterns = {},
+ generic_sorter = require("telescope.sorters").get_generic_fuzzy_sorter,
+ path_display = { "shorten" },
+ winblend = 0,
+ border = {},
+ borderchars = { "─", "│", "─", "│", "╭", "╮", "╯", "╰" },
+ color_devicons = true,
+ use_less = true,
+ set_env = { ["COLORTERM"] = "truecolor" }, -- default = nil,
+ file_previewer = require("telescope.previewers").vim_buffer_cat.new,
+ grep_previewer = require("telescope.previewers").vim_buffer_vimgrep.new,
+ qflist_previewer = require("telescope.previewers").vim_buffer_qflist.new,
+
+ -- Developer configurations: Not meant for general override
+ -- buffer_previewer_maker = require("telescope.previewers").buffer_previewer_maker,
+ mappings = {
+ i = {
+ ["<C-n>"] = actions.cycle_history_next,
+ ["<C-p>"] = actions.cycle_history_prev,
+ ["<C-c>"] = actions.close,
+ ["<C-j>"] = actions.move_selection_next,
+ ["<C-k>"] = actions.move_selection_previous,
+ ["<C-q>"] = actions.smart_send_to_qflist + actions.open_qflist,
+ ["<CR>"] = actions.select_default + actions.center,
+ -- To disable a keymap, put [map] = false
+ -- So, to not map "<C-n>", just put
+ -- ["<c-t>"] = trouble.open_with_trouble,
+ -- ["<c-x>"] = false,
+ -- ["<esc>"] = actions.close,
+ -- Otherwise, just set the mapping to the function that you want it to be.
+ -- ["<C-i>"] = actions.select_horizontal,
+ -- Add up multiple actions
+ -- You can perform as many actions in a row as you like
+ -- ["<CR>"] = actions.select_default + actions.center + my_cool_custom_action,
+ },
+ n = {
+ ["<C-j>"] = actions.move_selection_next,
+ ["<C-k>"] = actions.move_selection_previous,
+ ["<C-q>"] = actions.smart_send_to_qflist + actions.open_qflist,
+ -- ["<c-t>"] = trouble.open_with_trouble,
+ -- ["<C-i>"] = my_cool_custom_action,
+ },
+ },
+ },
+ extensions = {
+ fzy_native = {
+ override_generic_sorter = false,
+ override_file_sorter = true,
+ },
+ },
+ }
+end
+
+M.setup = function()
+ local status_ok, telescope = pcall(require, "telescope")
+ if not status_ok then
+ return
+ end
+ telescope.setup(O.plugin.telescope)
+ vim.api.nvim_set_keymap("n", "<Leader>f", ":Telescope find_files<CR>", { noremap = true, silent = true })
+end
+
+return M
diff --git a/lua/core/treesitter.lua b/lua/core/treesitter.lua
new file mode 100644
index 00000000..2b7a2d54
--- /dev/null
+++ b/lua/core/treesitter.lua
@@ -0,0 +1,187 @@
+local M = {}
+M.config = function()
+ O.treesitter = {
+ ensure_installed = {}, -- one of "all", "maintained" (parsers with maintainers), or a list of languages
+ ignore_install = {},
+ matchup = {
+ enable = false, -- mandatory, false will disable the whole extension
+ -- disable = { "c", "ruby" }, -- optional, list of language that will be disabled
+ },
+ highlight = {
+ enable = true, -- false will disable the whole extension
+ additional_vim_regex_highlighting = true,
+ disable = { "latex" },
+ },
+ context_commentstring = {
+ enable = false,
+ config = { css = "// %s" },
+ },
+ -- indent = {enable = true, disable = {"python", "html", "javascript"}},
+ -- TODO seems to be broken
+ indent = { enable = { "javascriptreact" } },
+ autotag = { enable = false },
+ textobjects = {
+ swap = {
+ enable = false,
+ -- swap_next = textobj_swap_keymaps,
+ },
+ -- move = textobj_move_keymaps,
+ select = {
+ enable = false,
+ -- keymaps = textobj_sel_keymaps,
+ },
+ },
+ textsubjects = {
+ enable = false,
+ keymaps = { ["."] = "textsubjects-smart", [";"] = "textsubjects-big" },
+ },
+ playground = {
+ enable = false,
+ disable = {},
+ updatetime = 25, -- Debounced time for highlighting nodes in the playground from source code
+ persist_queries = false, -- Whether the query persists across vim sessions
+ keybindings = {
+ toggle_query_editor = "o",
+ toggle_hl_groups = "i",
+ toggle_injected_languages = "t",
+ toggle_anonymous_nodes = "a",
+ toggle_language_display = "I",
+ focus_language = "f",
+ unfocus_language = "F",
+ update = "R",
+ goto_node = "<cr>",
+ show_help = "?",
+ },
+ },
+ rainbow = {
+ enable = false,
+ extended_mode = true, -- Highlight also non-parentheses delimiters, boolean or table: lang -> boolean
+ max_file_lines = 1000, -- Do not enable for files with more than 1000 lines, int
+ },
+ }
+
+ -- -- TODO refactor treesitter
+ -- -- @usage pass a table with your desired languages
+ -- treesitter = {
+ -- ensure_installed = "all",
+ -- ignore_install = { "haskell" },
+ -- highlight = { enabled = true },
+ -- -- The below are for treesitter-textobjects plugin
+ -- textobj_prefixes = {
+ -- goto_next = "]", -- Go to next
+ -- goto_previous = "[", -- Go to previous
+ -- inner = "i", -- Select inside
+ -- outer = "a", -- Selct around
+ -- swap = "<leader>a", -- Swap with next
+ -- },
+ -- textobj_suffixes = {
+ -- -- Start and End respectively for the goto keys
+ -- -- for other keys it only uses the first
+ -- ["function"] = { "f", "F" },
+ -- ["class"] = { "m", "M" },
+ -- ["parameter"] = { "a", "A" },
+ -- ["block"] = { "k", "K" },
+ -- ["conditional"] = { "i", "I" },
+ -- ["call"] = { "c", "C" },
+ -- ["loop"] = { "l", "L" },
+ -- ["statement"] = { "s", "S" },
+ -- ["comment"] = { "/", "?" },
+ -- },
+ -- -- The below is for treesitter hint textobjects plugin
+ -- hint_labels = { "h", "j", "f", "d", "n", "v", "s", "l", "a" },
+ -- },
+end
+
+M.setup = function()
+ -- TODO: refacor this whole file and treesitter in general
+ -- if not package.loaded['nvim-treesitter'] then return end
+ --
+ -- Custom parsers
+ -- local parser_config = require("nvim-treesitter.parsers").get_parser_configs()
+ -- parser_config.make = {
+ -- install_info = {
+ -- url = "https://github.com/alemuller/tree-sitter-make", -- local path or git repo
+ -- files = {"src/parser.c"},
+ -- requires_generate_from_grammar = true
+ -- }
+ -- }
+ -- parser_config.just = {
+ -- install_info = {
+ -- url = "~/dev/tree-sitter-just", -- local path or git repo
+ -- files = {"src/parser.c"}
+ -- }
+ -- -- filetype = "just", -- if filetype does not agrees with parser name
+ -- -- used_by = {"bar", "baz"} -- additional filetypes that use this parser
+ -- }
+ -- Custom text objects
+ -- local textobj_prefixes = O.treesitter.textobj_prefixes
+ -- local textobj_suffixes = O.treesitter.textobj_suffixes
+ -- local textobj_sel_keymaps = {}
+ -- local textobj_swap_keymaps = {}
+ -- local textobj_move_keymaps = {
+ -- enable = O.plugin.ts_textobjects,
+ -- set_jumps = true, -- whether to set jumps in the jumplist
+ -- goto_next_start = {},
+ -- goto_next_end = {},
+ -- goto_previous_start = {},
+ -- goto_previous_end = {},
+ -- }
+ -- for obj, suffix in pairs(textobj_suffixes) do
+ -- if textobj_prefixes["goto_next"] ~= nil then
+ -- textobj_move_keymaps["goto_next_start"][textobj_prefixes["goto_next"] .. suffix[1]] = "@" .. obj .. ".outer"
+ -- textobj_move_keymaps["goto_next_end"][textobj_prefixes["goto_next"] .. suffix[2]] = "@" .. obj .. ".outer"
+ -- end
+ -- if textobj_prefixes["goto_previous"] ~= nil then
+ -- textobj_move_keymaps["goto_previous_start"][textobj_prefixes["goto_previous"] .. suffix[2]] = "@" .. obj .. ".outer"
+ -- textobj_move_keymaps["goto_previous_end"][textobj_prefixes["goto_previous"] .. suffix[1]] = "@" .. obj .. ".outer"
+ -- end
+ --
+ -- if textobj_prefixes["inner"] ~= nil then
+ -- textobj_sel_keymaps[textobj_prefixes["inner"] .. suffix[1]] = "@" .. obj .. ".inner"
+ -- end
+ -- if textobj_prefixes["outer"] ~= nil then
+ -- textobj_sel_keymaps[textobj_prefixes["outer"] .. suffix[1]] = "@" .. obj .. ".outer"
+ -- end
+ --
+ -- if textobj_prefixes["swap"] ~= nil then
+ -- textobj_swap_keymaps[textobj_prefixes["swap"] .. suffix[1]] = "@" .. obj .. ".outer"
+ -- end
+ -- end
+ -- vim.g.ts_hint_textobject_keys = O.treesitter.hint_labels -- Requires https://github.com/mfussenegger/nvim-ts-hint-textobject/pull/2
+ --
+ -- -- Add which key menu entries
+ -- local status, wk = pcall(require, "which-key")
+ -- if status then
+ -- local normal = {
+ -- mode = "n", -- Normal mode
+ -- }
+ -- local operators = {
+ -- mode = "o", -- Operator mode
+ -- }
+ -- wk.register(textobj_sel_keymaps, operators)
+ -- wk.register({
+ -- ["m"] = "Hint Objects",
+ -- ["."] = "Textsubject",
+ -- [";"] = "Textsubject-big",
+ -- }, operators)
+ -- wk.register(textobj_swap_keymaps, normal)
+ -- wk.register({
+ -- [textobj_prefixes["swap"]] = "Swap",
+ -- -- [textobj_prefixes["goto_next"]] = "Jump [",
+ -- -- [textobj_prefixes["goto_previous"]] = "Jump ]"
+ -- }, normal)
+ -- wk.register(textobj_move_keymaps["goto_next_start"], normal)
+ -- wk.register(textobj_move_keymaps["goto_next_end"], normal)
+ -- wk.register(textobj_move_keymaps["goto_previous_start"], normal)
+ -- wk.register(textobj_move_keymaps["goto_previous_end"], normal)
+ -- end
+
+ local status_ok, treesitter_configs = pcall(require, "nvim-treesitter.configs")
+ if not status_ok then
+ return
+ end
+
+ treesitter_configs.setup(O.treesitter)
+end
+
+return M
diff --git a/lua/core/which-key.lua b/lua/core/which-key.lua
new file mode 100644
index 00000000..c3255705
--- /dev/null
+++ b/lua/core/which-key.lua
@@ -0,0 +1,195 @@
+local M = {}
+M.config = function()
+ O.plugin.which_key = {
+ active = false,
+ setup = {
+ plugins = {
+ marks = true, -- shows a list of your marks on ' and `
+ registers = true, -- shows your registers on " in NORMAL or <C-r> in INSERT mode
+ -- the presets plugin, adds help for a bunch of default keybindings in Neovim
+ -- No actual key bindings are created
+ presets = {
+ operators = false, -- adds help for operators like d, y, ...
+ motions = false, -- adds help for motions
+ text_objects = false, -- help for text objects triggered after entering an operator
+ windows = true, -- default bindings on <c-w>
+ nav = true, -- misc bindings to work with windows
+ z = true, -- bindings for folds, spelling and others prefixed with z
+ g = true, -- bindings for prefixed with g
+ },
+ spelling = { enabled = true, suggestions = 20 }, -- use which-key for spelling hints
+ },
+ icons = {
+ breadcrumb = "»", -- symbol used in the command line area that shows your active key combo
+ separator = "➜", -- symbol used between a key and it's label
+ group = "+", -- symbol prepended to a group
+ },
+ window = {
+ border = "single", -- none, single, double, shadow
+ position = "bottom", -- bottom, top
+ margin = { 1, 0, 1, 0 }, -- extra window margin [top, right, bottom, left]
+ padding = { 2, 2, 2, 2 }, -- extra window padding [top, right, bottom, left]
+ },
+ layout = {
+ height = { min = 4, max = 25 }, -- min and max height of the columns
+ width = { min = 20, max = 50 }, -- min and max width of the columns
+ spacing = 3, -- spacing between columns
+ },
+ hidden = { "<silent>", "<cmd>", "<Cmd>", "<CR>", "call", "lua", "^:", "^ " }, -- hide mapping boilerplate
+ show_help = true, -- show help message on the command line when the popup is visible
+ },
+
+ opts = {
+ mode = "n", -- NORMAL mode
+ prefix = "<leader>",
+ buffer = nil, -- Global mappings. Specify a buffer number for buffer local mappings
+ silent = true, -- use `silent` when creating keymaps
+ noremap = true, -- use `noremap` when creating keymaps
+ nowait = true, -- use `nowait` when creating keymaps
+ },
+ vopts = {
+ mode = "v", -- VISUAL mode
+ prefix = "<leader>",
+ buffer = nil, -- Global mappings. Specify a buffer number for buffer local mappings
+ silent = true, -- use `silent` when creating keymaps
+ noremap = true, -- use `noremap` when creating keymaps
+ nowait = true, -- use `nowait` when creating keymaps
+ },
+ -- NOTE: Prefer using : over <cmd> as the latter avoids going back in normal-mode.
+ -- see https://neovim.io/doc/user/map.html#:map-cmd
+ vmappings = {
+ ["/"] = { ":CommentToggle<CR>", "Comment" },
+ },
+ mappings = {
+ ["w"] = { "<cmd>w!<CR>", "Save" },
+ ["q"] = { "<cmd>q!<CR>", "Quit" },
+ ["/"] = { "<cmd>CommentToggle<CR>", "Comment" },
+ ["c"] = { "<cmd>BufferClose<CR>", "Close Buffer" },
+ ["e"] = { "<cmd>lua require'core.nvimtree'.toggle_tree()<CR>", "Explorer" },
+ ["f"] = { "<cmd>Telescope find_files<CR>", "Find File" },
+ ["h"] = { '<cmd>let @/=""<CR>', "No Highlight" },
+ [";"] = { "<cmd>Dashboard<CR>", "Dashboard" },
+ p = {
+ name = "Packer",
+ c = { "<cmd>PackerCompile<cr>", "Compile" },
+ i = { "<cmd>PackerInstall<cr>", "Install" },
+ r = { "<cmd>lua require('lv-utils').reload_lv_config()<cr>", "Reload" },
+ s = { "<cmd>PackerSync<cr>", "Sync" },
+ u = { "<cmd>PackerUpdate<cr>", "Update" },
+ },
+
+ -- " Available Debug Adapters:
+ -- " https://microsoft.github.io/debug-adapter-protocol/implementors/adapters/
+ -- " Adapter configuration and installation instructions:
+ -- " https://github.com/mfussenegger/nvim-dap/wiki/Debug-Adapter-installation
+ -- " Debug Adapter protocol:
+ -- " https://microsoft.github.io/debug-adapter-protocol/
+ -- " Debugging
+ g = {
+ name = "Git",
+ j = { "<cmd>lua require 'gitsigns'.next_hunk()<cr>", "Next Hunk" },
+ k = { "<cmd>lua require 'gitsigns'.prev_hunk()<cr>", "Prev Hunk" },
+ l = { "<cmd>lua require 'gitsigns'.blame_line()<cr>", "Blame" },
+ p = { "<cmd>lua require 'gitsigns'.preview_hunk()<cr>", "Preview Hunk" },
+ r = { "<cmd>lua require 'gitsigns'.reset_hunk()<cr>", "Reset Hunk" },
+ R = { "<cmd>lua require 'gitsigns'.reset_buffer()<cr>", "Reset Buffer" },
+ s = { "<cmd>lua require 'gitsigns'.stage_hunk()<cr>", "Stage Hunk" },
+ u = {
+ "<cmd>lua require 'gitsigns'.undo_stage_hunk()<cr>",
+ "Undo Stage Hunk",
+ },
+ o = { "<cmd>Telescope git_status<cr>", "Open changed file" },
+ b = { "<cmd>Telescope git_branches<cr>", "Checkout branch" },
+ c = { "<cmd>Telescope git_commits<cr>", "Checkout commit" },
+ C = {
+ "<cmd>Telescope git_bcommits<cr>",
+ "Checkout commit(for current file)",
+ },
+ },
+
+ l = {
+ name = "LSP",
+ a = { "<cmd>lua vim.lsp.buf.code_action()<cr>", "Code Action" },
+ d = {
+ "<cmd>Telescope lsp_document_diagnostics<cr>",
+ "Document Diagnostics",
+ },
+ w = {
+ "<cmd>Telescope lsp_workspace_diagnostics<cr>",
+ "Workspace Diagnostics",
+ },
+ f = { "<cmd>silent FormatWrite<cr>", "Format" },
+ i = { "<cmd>LspInfo<cr>", "Info" },
+ j = {
+ "<cmd>lua vim.lsp.diagnostic.goto_next({popup_opts = {border = O.lsp.popup_border}})<cr>",
+ "Next Diagnostic",
+ },
+ k = {
+ "<cmd>lua vim.lsp.diagnostic.goto_prev({popup_opts = {border = O.lsp.popup_border}})<cr>",
+ "Prev Diagnostic",
+ },
+ q = { "<cmd>Telescope quickfix<cr>", "Quickfix" },
+ r = { "<cmd>lua vim.lsp.buf.rename()<cr>", "Rename" },
+ s = { "<cmd> Telescope lsp_document_symbols<cr>", "Document Symbols" },
+ S = {
+ "<cmd>Telescope lsp_dynamic_workspace_symbols<cr>",
+ "Workspace Symbols",
+ },
+ },
+
+ s = {
+ name = "Search",
+ b = { "<cmd>Telescope git_branches<cr>", "Checkout branch" },
+ c = { "<cmd>Telescope colorscheme<cr>", "Colorscheme" },
+ f = { "<cmd>Telescope find_files<cr>", "Find File" },
+ h = { "<cmd>Telescope help_tags<cr>", "Find Help" },
+ M = { "<cmd>Telescope man_pages<cr>", "Man Pages" },
+ r = { "<cmd>Telescope oldfiles<cr>", "Open Recent File" },
+ R = { "<cmd>Telescope registers<cr>", "Registers" },
+ t = { "<cmd>Telescope live_grep<cr>", "Text" },
+ k = { "<cmd>Telescope keymaps<cr>", "Keymaps" },
+ C = { "<cmd>Telescope commands<cr>", "Commands" },
+ },
+ T = {
+ name = "Treesitter",
+ i = { ":TSConfigInfo<cr>", "Info" },
+ },
+ },
+ }
+end
+
+M.setup = function()
+ -- if not package.loaded['which-key'] then
+ -- return
+ -- end
+ local status_ok, which_key = pcall(require, "which-key")
+ if not status_ok then
+ return
+ end
+
+ which_key.setup(O.plugin.which_key.setup)
+
+ local opts = O.plugin.which_key.opts
+ local vopts = O.plugin.which_key.vopts
+
+ local mappings = O.plugin.which_key.mappings
+ local vmappings = O.plugin.which_key.vmappings
+
+ -- if O.plugin.ts_playground.active then
+ -- vim.api.nvim_set_keymap("n", "<leader>Th", ":TSHighlightCapturesUnderCursor<CR>", { noremap = true, silent = true })
+ -- mappings[""] = "Highlight Capture"
+ -- end
+
+ if O.plugin.zen.active then
+ vim.api.nvim_set_keymap("n", "<leader>z", ":ZenMode<CR>", { noremap = true, silent = true })
+ mappings["z"] = "Zen"
+ end
+
+ local wk = require "which-key"
+
+ wk.register(mappings, opts)
+ wk.register(vmappings, vopts)
+ wk.register(O.user_which_key, opts)
+end
+
+return M
diff --git a/lua/core/zen.lua b/lua/core/zen.lua
new file mode 100644
index 00000000..99a5d769
--- /dev/null
+++ b/lua/core/zen.lua
@@ -0,0 +1,34 @@
+local M = {}
+M.config = function()
+ O.plugin["zen"] = {
+ window = {
+ backdrop = 1,
+ height = 0.85, -- height of the Zen window
+ options = {
+ signcolumn = "no", -- disable signcolumn
+ number = false, -- disable number column
+ relativenumber = false, -- disable relative numbers
+ -- cursorline = false, -- disable cursorline
+ -- cursorcolumn = false, -- disable cursor column
+ -- foldcolumn = "0", -- disable fold column
+ -- list = false, -- disable whitespace characters
+ },
+ },
+ plugins = {
+ gitsigns = { enabled = false }, -- disables git signs
+ -- your configuration comes here
+ -- or leave it empty to use the default settings
+ -- refer to the configuration section below
+ },
+ }
+end
+
+M.setup = function()
+ local status_ok, zen_mode = pcall(require, "zen-mode")
+ if not status_ok then
+ return
+ end
+ zen_mode.setup(O.plugin.zen)
+end
+
+return M
diff --git a/lua/default-config.lua b/lua/default-config.lua
index 317886cc..b10c9590 100644
--- a/lua/default-config.lua
+++ b/lua/default-config.lua
@@ -5,97 +5,70 @@ TERMINAL = vim.fn.expand "$TERMINAL"
USER = vim.fn.expand "$USER"
O = {
- format_on_save = true,
- auto_close_tree = 0,
- auto_complete = true,
- colorcolumn = "99999", -- fixes indentline for now
+ leader_key = "space",
colorscheme = "spacegray",
- clipboard = "unnamedplus",
- hidden_files = true,
- wrap_lines = false,
- spell = false,
- spelllang = "en",
- number = true,
- relative_number = false,
- number_width = 4,
- shift_width = 2,
- tab_stop = 2,
- cmdheight = 2,
- cursorline = true,
- shell = "bash",
- scrolloff = 0,
- timeoutlen = 100,
- nvim_tree_disable_netrw = 0,
- ignore_case = true,
- smart_case = true,
- lushmode = false,
- hl_search = false,
- document_highlight = true,
+ line_wrap_cursor_movement = true,
transparent_window = false,
- leader_key = "space",
- vnsip_dir = vim.fn.stdpath "config" .. "/snippets",
+ format_on_save = true,
+ vsnip_dir = vim.fn.stdpath "config" .. "/snippets",
- -- @usage pass a table with your desired languages
- treesitter = {
- ensure_installed = "all",
- ignore_install = { "haskell" },
- highlight = { enabled = true },
- -- The below are for treesitter-textobjects plugin
- textobj_prefixes = {
- goto_next = "]", -- Go to next
- goto_previous = "[", -- Go to previous
- inner = "i", -- Select inside
- outer = "a", -- Selct around
- swap = "<leader>a", -- Swap with next
- },
- textobj_suffixes = {
- -- Start and End respectively for the goto keys
- -- for other keys it only uses the first
- ["function"] = { "f", "F" },
- ["class"] = { "m", "M" },
- ["parameter"] = { "a", "A" },
- ["block"] = { "k", "K" },
- ["conditional"] = { "i", "I" },
- ["call"] = { "c", "C" },
- ["loop"] = { "l", "L" },
- ["statement"] = { "s", "S" },
- ["comment"] = { "/", "?" },
- },
- -- The below is for treesitter hint textobjects plugin
- hint_labels = { "h", "j", "f", "d", "n", "v", "s", "l", "a" },
+ default_options = {
+ backup = false, -- creates a backup file
+ clipboard = "unnamedplus", -- allows neovim to access the system clipboard
+ cmdheight = 2, -- more space in the neovim command line for displaying messages
+ colorcolumn = "99999", -- fixes indentline for now
+ completeopt = { "menuone", "noselect" },
+ conceallevel = 0, -- so that `` is visible in markdown files
+ fileencoding = "utf-8", -- the encoding written to a file
+ guifont = "monospace:h17", -- the font used in graphical neovim applications
+ hidden = true, -- required to keep multiple buffers and open multiple buffers
+ hlsearch = false, -- highlight all matches on previous search pattern
+ ignorecase = true, -- ignore case in search patterns
+ mouse = "a", -- allow the mouse to be used in neovim
+ pumheight = 10, -- pop up menu height
+ showmode = false, -- we don't need to see things like -- INSERT -- anymore
+ showtabline = 2, -- always show tabs
+ smartcase = true, -- smart case
+ smartindent = true, -- make indenting smarter again
+ splitbelow = true, -- force all horizontal splits to go below current window
+ splitright = true, -- force all vertical splits to go to the right of current window
+ swapfile = false, -- creates a swapfile
+ termguicolors = true, -- set term gui colors (most terminals support this)
+ timeoutlen = 100, -- time to wait for a mapped sequence to complete (in milliseconds)
+ title = true, -- set the title of window to the value of the titlestring
+ -- opt.titlestring = "%<%F%=%l/%L - nvim" -- what the title of the window will be set to
+ undodir = CACHE_PATH .. "/undo", -- set an undo directory
+ undofile = true, -- enable persisten undo
+ updatetime = 300, -- faster completion
+ writebackup = false, -- if a file is being edited by another program (or was written to file while editing with another program), it is not allowed to be edited
+ expandtab = true, -- convert tabs to spaces
+ shiftwidth = 2, -- the number of spaces inserted for each indentation
+ tabstop = 2, -- insert 2 spaces for a tab
+ cursorline = true, -- highlight the current line
+ number = true, -- set numbered lines
+ relativenumber = false, -- set relative numbered lines
+ numberwidth = 4, -- set number column width to 2 {default 4}
+ signcolumn = "yes", -- always show the sign column, otherwise it would shift the text each time
+ wrap = false, -- display lines as one long line
+ spell = false,
+ spelllang = "en",
+ scrolloff = 8, -- is one of my fav
},
+ plugin = {},
+
+ -- TODO: refactor for tree
+ auto_close_tree = 0,
+ nvim_tree_disable_netrw = 0,
+
lsp = {
+ document_highlight = true,
popup_border = "single",
},
- database = { save_location = "~/.config/nvcode_db", auto_execute = 1 },
-
- plugin = {
- -- Builtins
- dashboard = { active = false },
- colorizer = { active = false },
- -- zen = { active = false },
- ts_playground = { active = false },
- ts_context_commentstring = { active = false },
- ts_hintobjects = { active = false },
- ts_autotag = { active = false },
- ts_rainbow = { active = false },
- ts_textobjects = { active = false },
- ts_textsubjects = { active = false },
- telescope_fzy = { active = false },
- telescope_project = { active = false },
- indent_line = { active = false },
- symbol_outline = { active = false },
- debug = { active = false },
- dap_install = { active = false },
- lush = { active = false },
- diffview = { active = false },
- floatterm = { active = false },
- trouble = { active = false },
- sanegx = { active = false },
- },
+ database = { save_location = "~/.config/lunarvim_db", auto_execute = 1 },
+ -- TODO: just using mappings (leader mappings)
user_which_key = {},
user_plugins = {
@@ -106,8 +79,18 @@ O = {
{ "FileType", "qf", "set nobuflisted" },
},
+ formatters = {
+ filetype = {},
+ },
+
+ -- TODO move all of this into lang specific files, only require when using
lang = {
- cmake = {},
+ cmake = {
+ formatter = {
+ exe = "clang-format",
+ args = {},
+ },
+ },
clang = {
diagnostics = {
virtual_text = { spacing = 0, prefix = "" },
@@ -116,25 +99,43 @@ O = {
},
cross_file_rename = true,
header_insertion = "never",
+ filetypes = { "c", "cpp", "objc" },
+ formatter = {
+ exe = "clang-format",
+ args = {},
+ },
},
css = {
virtual_text = true,
},
dart = {
sdk_path = "/usr/lib/dart/bin/snapshots/analysis_server.dart.snapshot",
+ formatter = {
+ exe = "dart",
+ args = { "format" },
+ },
},
docker = {},
efm = {},
elm = {},
- emmet = { active = true },
+ emmet = { active = false },
elixir = {},
graphql = {},
- go = {},
+ go = {
+ formatter = {
+ exe = "gofmt",
+ args = {},
+ },
+ },
html = {},
java = {
java_tools = {
active = false,
},
+ formatter = {
+ exe = "prettier",
+ args = { "--stdin-filepath", vim.api.nvim_buf_get_name(0), "--single-quote" },
+ },
},
json = {
diagnostics = {
@@ -142,15 +143,27 @@ O = {
signs = true,
underline = true,
},
+ formatter = {
+ exe = "python",
+ args = { "-m", "json.tool" },
+ },
},
kotlin = {},
- latex = {},
+ latex = {
+ auto_save = false,
+ ignore_errors = {},
+ },
lua = {
diagnostics = {
virtual_text = { spacing = 0, prefix = "" },
signs = true,
underline = true,
},
+ formatter = {
+ exe = "stylua",
+ args = {},
+ stdin = false,
+ },
},
php = {
format = {
@@ -167,8 +180,14 @@ O = {
underline = true,
},
filetypes = { "php", "phtml" },
+ formatter = {
+ exe = "phpcbf",
+ args = { "--standard=PSR12", vim.api.nvim_buf_get_name(0) },
+ stdin = false,
+ },
},
python = {
+ -- @usage can be flake8 or yapf
linter = "",
isort = false,
diagnostics = {
@@ -181,6 +200,10 @@ O = {
auto_search_paths = true,
use_library_code_types = true,
},
+ formatter = {
+ exe = "yapf",
+ args = {},
+ },
},
ruby = {
diagnostics = {
@@ -189,6 +212,10 @@ O = {
underline = true,
},
filetypes = { "rb", "erb", "rakefile", "ruby" },
+ formatter = {
+ exe = "rufo",
+ args = { "-x" },
+ },
},
rust = {
rust_tools = {
@@ -196,6 +223,11 @@ O = {
parameter_hints_prefix = "<-",
other_hints_prefix = "=>", -- prefix for all the other hints (type, chaining)
},
+ -- @usage can be clippy
+ formatter = {
+ exe = "rustfmt",
+ args = { "--emit=stdout", "--edition=2018" },
+ },
linter = "",
diagnostics = {
virtual_text = { spacing = 0, prefix = "" },
@@ -212,6 +244,11 @@ O = {
signs = true,
underline = true,
},
+ formatter = {
+ exe = "shfmt",
+ args = { "-w" },
+ stdin = false,
+ },
},
svelte = {},
tailwindcss = {
@@ -226,44 +263,43 @@ O = {
"typescriptreact",
},
},
- terraform = {},
+ terraform = {
+ formatter = {
+ exe = "terraform",
+ args = { "fmt" },
+ stdin = false,
+ },
+ },
tsserver = {
- -- @usage can be 'eslint'
+ -- @usage can be 'eslint' or 'eslint_d'
linter = "",
diagnostics = {
virtual_text = { spacing = 0, prefix = "" },
signs = true,
underline = true,
},
+ formatter = {
+ exe = "prettier",
+ args = { "--stdin-filepath", vim.api.nvim_buf_get_name(0), "--single-quote" },
+ },
},
vim = {},
- yaml = {},
- },
-
- dashboard = {
-
- custom_header = {
- "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
- "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣤⣶⣾⠿⠿⠟⠛⠛⠛⠛⠿⠿⣿⣷⣤⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
- " ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣾⡿⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠿⣷⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
- "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣤⡿⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⢿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
- "⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠒⠂⠉⠉⠉⠉⢩⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
- "⠀⠀⠀⠀⠀⠀⠀⠀⠸⡀⠀⠀⠀⠀⠀⢰⣿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
- "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⠠⡀⠀⠀⢀⣾⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
- "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠢⢀⣸⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
- "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡧⢄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
- "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡇⠀⠈⠁⠒⠤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
- "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣇⠀⠀⠀⠀⠀⠀⠉⠢⠤⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⡟⠈⠑⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
- "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠑⠒⠤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⡇⠀⠀⢀⣣⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
- "⠀⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠀⠀⠒⠢⠤⠄⣀⣀⠀⠀⠀⢠⣿⡟⠀⠀⠀⣺⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
- "⠀⣿⠇⠀⠀⠀⠀⠀⣤⡄⠀⠀⢠⣤⡄⠀⢨⣭⣠⣤⣤⣤⡀⠀⠀⢀⣤⣤⣤⣤⡄⠀⠀⠀⣤⣄⣤⣤⣤⠀⠀⣿⣯⠉⠉⣿⡟⠀⠈⢩⣭⣤⣤⠀⠀⠀⠀⣠⣤⣤⣤⣄⣤⣤",
- "⢠⣿⠀⠀⠀⠀⠀⠀⣿⠃⠀⠀⣸⣿⠁⠀⣿⣿⠉⠀⠈⣿⡇⠀⠀⠛⠋⠀⠀⢹⣿⠀⠀⠀⣿⠏⠀⠸⠿⠃⠀⣿⣿⠀⣰⡟⠀⠀⠀⠀⠀⢸⣿⠀⠀⠀⠀⣿⡟⢸⣿⡇⢀⣿",
- "⣸⡇⠀⠀⠀⠀⠀⢸⣿⠀⠀⠀⣿⡟⠀⢠⣿⡇⠀⠀⢰⣿⡇⠀⣰⣾⠟⠛⠛⣻⡇⠀⠀⢸⡿⠀⠀⠀⠀⠀⠀⢻⣿⢰⣿⠀⠀⠀⠀⠀⠀⣾⡇⠀⠀⠀⢸⣿⠇⢸⣿⠀⢸⡏",
- "⣿⣧⣤⣤⣤⡄⠀⠘⣿⣤⣤⡤⣿⠇⠀⢸⣿⠁⠀⠀⣼⣿⠀⠀⢿⣿⣤⣤⠔⣿⠃⠀⠀⣾⡇⠀⠀⠀⠀⠀⠀⢸⣿⣿⠋⠀⠀⠀⢠⣤⣤⣿⣥⣤⡄⠀⣼⣿⠀⣸⡏⠀⣿⠃",
- "⠉⠉⠉⠉⠉⠁⠀⠀⠈⠉⠉⠀⠉⠀⠀⠈⠉⠀⠀⠀⠉⠉⠀⠀⠀⠉⠉⠁⠈⠉⠀⠀⠀⠉⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠀⠀⠀⠀⠈⠉⠉⠉⠉⠉⠁⠀⠉⠁⠀⠉⠁⠀⠉⠀",
+ yaml = {
+ formatter = {
+ exe = "prettier",
+ args = { "--stdin-filepath", vim.api.nvim_buf_get_name(0), "--single-quote" },
+ },
},
- footer = { "chrisatmachine.com" },
},
}
-require "lv-zen.config"
+require "core.status_colors"
+require("core.gitsigns").config()
+require("core.compe").config()
+require("core.dashboard").config()
+require("core.dap").config()
+require("core.floatterm").config()
+require("core.zen").config()
+require("core.telescope").config()
+require("core.treesitter").config()
+require("core.which-key").config()
diff --git a/lua/keymappings.lua b/lua/keymappings.lua
index c2701ac1..fed362aa 100644
--- a/lua/keymappings.lua
+++ b/lua/keymappings.lua
@@ -1,83 +1,106 @@
--- better window movement
-vim.api.nvim_set_keymap("n", "<C-h>", "<C-w>h", { silent = true })
-vim.api.nvim_set_keymap("n", "<C-j>", "<C-w>j", { silent = true })
-vim.api.nvim_set_keymap("n", "<C-k>", "<C-w>k", { silent = true })
-vim.api.nvim_set_keymap("n", "<C-l>", "<C-w>l", { silent = true })
+local function register_mappings(mappings, default_options)
+ for mode, mode_mappings in pairs(mappings) do
+ for _, mapping in pairs(mode_mappings) do
+ local options = #mapping == 3 and table.remove(mapping) or default_options
+ local prefix, cmd = unpack(mapping)
+ pcall(vim.api.nvim_set_keymap, mode, prefix, cmd, options)
+ end
+ end
+end
--- Terminal window navigation
-vim.api.nvim_set_keymap("t", "<C-h>", "<C-\\><C-N><C-w>h", { silent = true, noremap = true })
-vim.api.nvim_set_keymap("t", "<C-j>", "<C-\\><C-N><C-w>j", { silent = true, noremap = true })
-vim.api.nvim_set_keymap("t", "<C-k>", "<C-\\><C-N><C-w>k", { silent = true, noremap = true })
-vim.api.nvim_set_keymap("t", "<C-l>", "<C-\\><C-N><C-w>l", { silent = true, noremap = true })
-vim.api.nvim_set_keymap("i", "<C-h>", "<C-\\><C-N><C-w>h", { silent = true, noremap = true })
-vim.api.nvim_set_keymap("i", "<C-j>", "<C-\\><C-N><C-w>j", { silent = true, noremap = true })
-vim.api.nvim_set_keymap("i", "<C-k>", "<C-\\><C-N><C-w>k", { silent = true, noremap = true })
-vim.api.nvim_set_keymap("i", "<C-l>", "<C-\\><C-N><C-w>l", { silent = true, noremap = true })
-vim.api.nvim_set_keymap("t", "<Esc>", "<C-\\><C-n>", { silent = true, noremap = true })
+local mappings = {
+ i = { -- Insert mode
+ -- I hate escape
+ { "jk", "<ESC>" },
+ { "kj", "<ESC>" },
+ { "jj", "<ESC>" },
--- TODO fix this
--- resize with arrows
-if vim.fn.has "mac" == 1 then
- vim.api.nvim_set_keymap("n", "<A-Up>", ":resize -2<CR>", { silent = true })
- vim.api.nvim_set_keymap("n", "<A-Down>", ":resize +2<CR>", { silent = true })
- vim.api.nvim_set_keymap("n", "<A-Left>", ":vertical resize -2<CR>", { silent = true })
- vim.api.nvim_set_keymap("n", "<A-Right>", ":vertical resize +2<CR>", { silent = true })
-else
- vim.api.nvim_set_keymap("n", "<C-Up>", ":resize -2<CR>", { silent = true })
- vim.api.nvim_set_keymap("n", "<C-Down>", ":resize +2<CR>", { silent = true })
- vim.api.nvim_set_keymap("n", "<C-Left>", ":vertical resize -2<CR>", { silent = true })
- vim.api.nvim_set_keymap("n", "<C-Right>", ":vertical resize +2<CR>", { silent = true })
-end
+ -- Move current line / block with Alt-j/k ala vscode.
+ { "<A-j>", "<Esc>:m .+1<CR>==gi" },
+ { "<A-k>", "<Esc>:m .-2<CR>==gi" },
+
+ -- Terminal window navigation
+ { "<C-h>", "<C-\\><C-N><C-w>h" },
+ { "<C-j>", "<C-\\><C-N><C-w>j" },
+ { "<C-k>", "<C-\\><C-N><C-w>k" },
+ { "<C-l>", "<C-\\><C-N><C-w>l" },
+ },
+ n = { -- Normal mode
+ -- Better window movement
+ { "<C-h>", "<C-w>h", { silent = true } },
+ { "<C-j>", "<C-w>j", { silent = true } },
+ { "<C-k>", "<C-w>k", { silent = true } },
+ { "<C-l>", "<C-w>l", { silent = true } },
+
+ -- Resize with arrows
+ { "<C-Up>", ":resize -2<CR>", { silent = true } },
+ { "<C-Down>", ":resize +2<CR>", { silent = true } },
+ { "<C-Left>", ":vertical resize -2<CR>", { silent = true } },
+ { "<C-Right>", ":vertical resize +2<CR>", { silent = true } },
+
+ -- Tab switch buffer
+ -- { "<TAB>", ":bnext<CR>" },
+ -- { "<S-TAB>", ":bprevious<CR>" },
--- better indenting
-vim.api.nvim_set_keymap("v", "<", "<gv", { noremap = true, silent = true })
-vim.api.nvim_set_keymap("v", ">", ">gv", { noremap = true, silent = true })
+ -- Move current line / block with Alt-j/k a la vscode.
+ { "<A-j>", ":m .+1<CR>==" },
+ { "<A-k>", ":m .-2<CR>==" },
--- I hate escape
-vim.api.nvim_set_keymap("i", "jk", "<ESC>", { noremap = true, silent = true })
-vim.api.nvim_set_keymap("i", "kj", "<ESC>", { noremap = true, silent = true })
-vim.api.nvim_set_keymap("i", "jj", "<ESC>", { noremap = true, silent = true })
+ -- QuickFix
+ { "]q", ":cnext<CR>" },
+ { "[q", ":cprev<CR>" },
--- Tab switch buffer
-vim.api.nvim_set_keymap("n", "<TAB>", ":bnext<CR>", { noremap = true, silent = true })
-vim.api.nvim_set_keymap("n", "<S-TAB>", ":bprevious<CR>", { noremap = true, silent = true })
+ -- {'<C-TAB>', 'compe#complete()', {noremap = true, silent = true, expr = true}},
+ },
+ t = { -- Terminal mode
+ -- Terminal window navigation
+ { "<C-h>", "<C-\\><C-N><C-w>h" },
+ { "<C-j>", "<C-\\><C-N><C-w>j" },
+ { "<C-k>", "<C-\\><C-N><C-w>k" },
+ { "<C-l>", "<C-\\><C-N><C-w>l" },
+ },
+ v = { -- Visual/Select mode
+ -- Better indenting
+ { "<", "<gv" },
+ { ">", ">gv" },
--- Move selected line / block of text in visual mode
-vim.api.nvim_set_keymap("x", "K", ":move '<-2<CR>gv-gv", { noremap = true, silent = true })
-vim.api.nvim_set_keymap("x", "J", ":move '>+1<CR>gv-gv", { noremap = true, silent = true })
+ -- { "p", '"0p', { silent = true } },
+ -- { "P", '"0P', { silent = true } },
+ },
+ x = { -- Visual mode
+ -- Move selected line / block of text in visual mode
+ { "K", ":move '<-2<CR>gv-gv" },
+ { "J", ":move '>+1<CR>gv-gv" },
--- Move current line / block with Alt-j/k ala vscode.
-vim.api.nvim_set_keymap("n", "<A-j>", ":m .+1<CR>==", { noremap = true, silent = true })
-vim.api.nvim_set_keymap("n", "<A-k>", ":m .-2<CR>==", { noremap = true, silent = true })
-vim.api.nvim_set_keymap("i", "<A-j>", "<Esc>:m .+1<CR>==gi", { noremap = true, silent = true })
-vim.api.nvim_set_keymap("i", "<A-k>", "<Esc>:m .-2<CR>==gi", { noremap = true, silent = true })
-vim.api.nvim_set_keymap("x", "<A-j>", ":m '>+1<CR>gv-gv", { noremap = true, silent = true })
-vim.api.nvim_set_keymap("x", "<A-k>", ":m '<-2<CR>gv-gv", { noremap = true, silent = true })
+ -- Move current line / block with Alt-j/k ala vscode.
+ { "<A-j>", ":m '>+1<CR>gv-gv" },
+ { "<A-k>", ":m '<-2<CR>gv-gv" },
+ },
+ [""] = {
+ -- Toggle the QuickFix window
+ { "<C-q>", ":call QuickFixToggle()<CR>" },
+ },
+}
--- QuickFix
-vim.api.nvim_set_keymap("n", "]q", ":cnext<CR>", { noremap = true, silent = true })
-vim.api.nvim_set_keymap("n", "[q", ":cprev<CR>", { noremap = true, silent = true })
+-- TODO: fix this
+if vim.fn.has "mac" == 1 then
+ mappings["n"][5][1] = "<A-Up>"
+ mappings["n"][6][1] = "<A-Down>"
+ mappings["n"][7][1] = "<A-Left>"
+ mappings["n"][8][1] = "<A-Right>"
+end
+
+register_mappings(mappings, { silent = true, noremap = true })
--- Better nav for omnicomplete
vim.cmd 'inoremap <expr> <c-j> ("\\<C-n>")'
vim.cmd 'inoremap <expr> <c-k> ("\\<C-p>")'
-vim.cmd 'vnoremap p "0p'
-vim.cmd 'vnoremap P "0P'
--- vim.api.nvim_set_keymap('v', 'p', '"0p', {silent = true})
--- vim.api.nvim_set_keymap('v', 'P', '"0P', {silent = true})
-
-- vim.cmd('inoremap <expr> <TAB> (\"\\<C-n>\")')
-- vim.cmd('inoremap <expr> <S-TAB> (\"\\<C-p>\")')
--- vim.api.nvim_set_keymap('i', '<C-TAB>', 'compe#complete()', {noremap = true, silent = true, expr = true})
-
-- vim.cmd([[
-- map p <Plug>(miniyank-autoput)
-- map P <Plug>(miniyank-autoPut)
-- map <leader>n <Plug>(miniyank-cycle)
-- map <leader>N <Plug>(miniyank-cycleback)
-- ]])
-
--- Toggle the QuickFix window
-vim.api.nvim_set_keymap("", "<C-q>", ":call QuickFixToggle()<CR>", { noremap = true, silent = true })
diff --git a/lua/lsp/angular-ls.lua b/lua/lsp/angular-ls.lua
index e1363731..818faf38 100644
--- a/lua/lsp/angular-ls.lua
+++ b/lua/lsp/angular-ls.lua
@@ -1,4 +1,4 @@
--- TODO find correct root filetype
+-- TODO: find correct root filetype
-- :LspInstall angular
require("lspconfig").angularls.setup {
cmd = { DATA_PATH .. "/lspinstall/angular/node_modules/@angular/language-server/bin/ngserver", "--stdio" },
diff --git a/lua/lsp/emmet-ls.lua b/lua/lsp/emmet-ls.lua
index a671ff88..e38747ac 100644
--- a/lua/lsp/emmet-ls.lua
+++ b/lua/lsp/emmet-ls.lua
@@ -10,7 +10,7 @@ capabilities.textDocument.completion.completionItem.snippetSupport = true
configs.emmet_ls = {
default_config = {
cmd = { "emmet-ls", "--stdio" },
- filetypes = { "html", "css", "javascript", "typescript" },
+ filetypes = { "html", "css", "javascript", "typescript", "vue" },
root_dir = function()
return vim.loop.cwd()
end,
diff --git a/lua/lsp/init.lua b/lua/lsp/init.lua
index 096ceabf..01f82737 100644
--- a/lua/lsp/init.lua
+++ b/lua/lsp/init.lua
@@ -1,4 +1,4 @@
--- TODO figure out why this don't work
+-- TODO: figure out why this don't work
vim.fn.sign_define(
"LspDiagnosticsSignError",
{ texthl = "LspDiagnosticsSignError", text = "", numhl = "LspDiagnosticsSignError" }
@@ -20,6 +20,7 @@ vim.cmd "nnoremap <silent> gd <cmd>lua vim.lsp.buf.definition()<CR>"
vim.cmd "nnoremap <silent> gD <cmd>lua vim.lsp.buf.declaration()<CR>"
vim.cmd "nnoremap <silent> gr <cmd>lua vim.lsp.buf.references()<CR>"
vim.cmd "nnoremap <silent> gi <cmd>lua vim.lsp.buf.implementation()<CR>"
+vim.cmd "nnoremap <silent> gp <cmd>lua require'lsp'.PeekDefinition()<CR>"
vim.cmd "nnoremap <silent> K :lua vim.lsp.buf.hover()<CR>"
-- vim.cmd('nnoremap <silent> <C-k> <cmd>lua vim.lsp.buf.signature_help()<CR>')
vim.cmd "nnoremap <silent> <C-p> :lua vim.lsp.diagnostic.goto_prev({popup_opts = {border = O.lsp.popup_border}})<CR>"
@@ -103,7 +104,72 @@ local function documentHighlight(client, bufnr)
end
local lsp_config = {}
-if O.document_highlight then
+-- Taken from https://www.reddit.com/r/neovim/comments/gyb077/nvimlsp_peek_defination_javascript_ttserver/
+function lsp_config.preview_location(location, context, before_context)
+ -- location may be LocationLink or Location (more useful for the former)
+ context = context or 15
+ before_context = before_context or 0
+ local uri = location.targetUri or location.uri
+ if uri == nil then
+ return
+ end
+ local bufnr = vim.uri_to_bufnr(uri)
+ if not vim.api.nvim_buf_is_loaded(bufnr) then
+ vim.fn.bufload(bufnr)
+ end
+
+ local range = location.targetRange or location.range
+ local contents = vim.api.nvim_buf_get_lines(
+ bufnr,
+ range.start.line - before_context,
+ range["end"].line + 1 + context,
+ false
+ )
+ local filetype = vim.api.nvim_buf_get_option(bufnr, "filetype")
+ return vim.lsp.util.open_floating_preview(contents, filetype, { border = O.lsp.popup_border })
+end
+
+function lsp_config.preview_location_callback(_, method, result)
+ local context = 15
+ if result == nil or vim.tbl_isempty(result) then
+ print("No location found: " .. method)
+ return nil
+ end
+ if vim.tbl_islist(result) then
+ lsp_config.floating_buf, lsp_config.floating_win = lsp_config.preview_location(result[1], context)
+ else
+ lsp_config.floating_buf, lsp_config.floating_win = lsp_config.preview_location(result, context)
+ end
+end
+
+function lsp_config.PeekDefinition()
+ if vim.tbl_contains(vim.api.nvim_list_wins(), lsp_config.floating_win) then
+ vim.api.nvim_set_current_win(lsp_config.floating_win)
+ else
+ local params = vim.lsp.util.make_position_params()
+ return vim.lsp.buf_request(0, "textDocument/definition", params, lsp_config.preview_location_callback)
+ end
+end
+
+function lsp_config.PeekTypeDefinition()
+ if vim.tbl_contains(vim.api.nvim_list_wins(), lsp_config.floating_win) then
+ vim.api.nvim_set_current_win(lsp_config.floating_win)
+ else
+ local params = vim.lsp.util.make_position_params()
+ return vim.lsp.buf_request(0, "textDocument/typeDefinition", params, lsp_config.preview_location_callback)
+ end
+end
+
+function lsp_config.PeekImplementation()
+ if vim.tbl_contains(vim.api.nvim_list_wins(), lsp_config.floating_win) then
+ vim.api.nvim_set_current_win(lsp_config.floating_win)
+ else
+ local params = vim.lsp.util.make_position_params()
+ return vim.lsp.buf_request(0, "textDocument/implementation", params, lsp_config.preview_location_callback)
+ end
+end
+
+if O.lsp.document_highlight then
function lsp_config.common_on_attach(client, bufnr)
documentHighlight(client, bufnr)
end
@@ -131,7 +197,7 @@ function lsp_config.tsserver_on_attach(client, bufnr)
-- formatting
enable_formatting = O.lang.tsserver.autoformat,
- formatter = O.lang.tsserver.formatter,
+ formatter = O.lang.tsserver.formatter.exe,
formatter_config_fallback = nil,
-- parentheses completion
diff --git a/lua/lsp/svelte-ls.lua b/lua/lsp/svelte-ls.lua
index 9d7b8973..e5ddb3b3 100644
--- a/lua/lsp/svelte-ls.lua
+++ b/lua/lsp/svelte-ls.lua
@@ -1,4 +1,4 @@
--- TODO what is a svelte filetype
+-- TODO: what is a svelte filetype
require("lspconfig").svelte.setup {
cmd = { DATA_PATH .. "/lspinstall/svelte/node_modules/.bin/svelteserver", "--stdio" },
on_attach = require("lsp").common_on_attach,
diff --git a/lua/lsp/tailwindcss-ls.lua b/lua/lsp/tailwindcss-ls.lua
index 4c90ebd0..38c1e7cc 100644
--- a/lua/lsp/tailwindcss-ls.lua
+++ b/lua/lsp/tailwindcss-ls.lua
@@ -1,4 +1,4 @@
--- TODO what is a tailwindcss filetype
+-- TODO: what is a tailwindcss filetype
local lspconfig = require "lspconfig"
lspconfig.tailwindcss.setup {
diff --git a/lua/lsp/ts-fmt-lint.lua b/lua/lsp/ts-fmt-lint.lua
index 8a6c366c..a73b817e 100644
--- a/lua/lsp/ts-fmt-lint.lua
+++ b/lua/lsp/ts-fmt-lint.lua
@@ -5,30 +5,42 @@ local M = {}
M.setup = function()
local tsserver_args = {}
- local prettier = {
- formatCommand = "prettier --stdin-filepath ${INPUT}",
- formatStdin = true,
- }
-
- if vim.fn.glob "node_modules/.bin/prettier" ~= "" then
- prettier = {
- formatCommand = "./node_modules/.bin/prettier --stdin-filepath ${INPUT}",
+ if O.lang.tsserver.linter == "eslint" or O.lang.tsserver.linter == "eslint_d" then
+ local eslint = {
+ lintCommand = O.lang.tsserver.linter .. " -f unix --stdin --stdin-filename {INPUT}",
+ lintStdin = true,
+ lintFormats = { "%f:%l:%c: %m" },
+ lintIgnoreExitCode = true,
+ formatCommand = O.lang.tsserver.linter .. " --fix-to-stdout --stdin --stdin-filename=${INPUT}",
formatStdin = true,
}
+ table.insert(tsserver_args, eslint)
end
require("lspconfig").efm.setup {
-- init_options = {initializationOptions},
cmd = { DATA_PATH .. "/lspinstall/efm/efm-langserver" },
init_options = { documentFormatting = true, codeAction = false },
- filetypes = { "html", "css", "yaml", "vue", "javascript", "javascriptreact", "typescript", "typescriptreact" },
+ root_dir = require("lspconfig").util.root_pattern(".git/", "package.json"),
+ filetypes = {
+ "vue",
+ "javascript",
+ "javascriptreact",
+ "typescript",
+ "typescriptreact",
+ "javascript.jsx",
+ "typescript.tsx",
+ },
settings = {
rootMarkers = { ".git/", "package.json" },
languages = {
- html = { prettier },
- css = { prettier },
- json = { prettier },
- yaml = { prettier },
+ vue = tsserver_args,
+ javascript = tsserver_args,
+ javascriptreact = tsserver_args,
+ ["javascript.jsx"] = tsserver_args,
+ typescript = tsserver_args,
+ ["typescript.tsx"] = tsserver_args,
+ typescriptreact = tsserver_args,
},
},
}
diff --git a/lua/lsp/tsserver-ls.lua b/lua/lsp/tsserver-ls.lua
index d7c4ec3c..8ed801e8 100644
--- a/lua/lsp/tsserver-ls.lua
+++ b/lua/lsp/tsserver-ls.lua
@@ -1,3 +1,29 @@
+vim.cmd "let proj = FindRootDirectory()"
+local root_dir = vim.api.nvim_get_var "proj"
+
+-- use the global prettier if you didn't find the local one
+local prettier_instance = root_dir .. "/node_modules/.bin/prettier"
+if vim.fn.executable(prettier_instance) ~= 1 then
+ prettier_instance = O.lang.tsserver.formatter.exe
+end
+
+O.formatters.filetype["javascriptreact"] = {
+ function()
+ return {
+ exe = prettier_instance,
+ -- TODO: allow user to override this
+ args = { "--stdin-filepath", vim.api.nvim_buf_get_name(0), "--single-quote" },
+ stdin = true,
+ }
+ end,
+}
+O.formatters.filetype["javascript"] = O.formatters.filetype["javascriptreact"]
+
+require("formatter.config").set_defaults {
+ logging = false,
+ filetype = O.formatters.filetype,
+}
+
if require("lv-utils").check_lsp_client_active "tsserver" then
return
end
diff --git a/lua/lv-colorizer/init.lua b/lua/lv-colorizer/init.lua
deleted file mode 100644
index abe2f728..00000000
--- a/lua/lv-colorizer/init.lua
+++ /dev/null
@@ -1,14 +0,0 @@
-local status_ok, colorizer = pcall(require, "colorizer")
-if not status_ok then
- return
-end
-colorizer.setup({ "*" }, {
- RGB = true, -- #RGB hex codes
- RRGGBB = true, -- #RRGGBB hex codes
- RRGGBBAA = true, -- #RRGGBBAA hex codes
- rgb_fn = true, -- CSS rgb() and rgba() functions
- hsl_fn = true, -- CSS hsl() and hsla() functions
- css = true, -- Enable all CSS features: rgb_fn, hsl_fn, names, RGB, RRGGBB
- css_fn = true, -- Enable all CSS *functions*: rgb_fn, hsl_fn
-})
--- names = true; -- "Name" codes like Blue
diff --git a/lua/lv-dap/init.lua b/lua/lv-dap/init.lua
deleted file mode 100644
index f3312bbb..00000000
--- a/lua/lv-dap/init.lua
+++ /dev/null
@@ -1,29 +0,0 @@
-local status_ok, dap = pcall(require, "dap")
-if not status_ok then
- return
-end
--- require "dap"
-vim.fn.sign_define("DapBreakpoint", {
- text = "",
- texthl = "LspDiagnosticsSignError",
- linehl = "",
- numhl = "",
-})
-dap.defaults.fallback.terminal_win_cmd = "50vsplit new"
-
-O.user_which_key["d"] = {
- name = "Debug",
- t = { "<cmd>lua require'dap'.toggle_breakpoint()<cr>", "Toggle Breakpoint" },
- b = { "<cmd>lua require'dap'.step_back()<cr>", "Step Back" },
- c = { "<cmd>lua require'dap'.continue()<cr>", "Continue" },
- C = { "<cmd>lua require'dap'.run_to_cursor()<cr>", "Run To Cursor" },
- d = { "<cmd>lua require'dap'.disconnect()<cr>", "Disconnect" },
- g = { "<cmd>lua require'dap'.session()<cr>", "Get Session" },
- i = { "<cmd>lua require'dap'.step_into()<cr>", "Step Into" },
- o = { "<cmd>lua require'dap'.step_over()<cr>", "Step Over" },
- u = { "<cmd>lua require'dap'.step_out()<cr>", "Step Out" },
- p = { "<cmd>lua require'dap'.pause.toggle()<cr>", "Pause" },
- r = { "<cmd>lua require'dap'.repl.toggle()<cr>", "Toggle Repl" },
- s = { "<cmd>lua require'dap'.continue()<cr>", "Start" },
- q = { "<cmd>lua require'dap'.stop()<cr>", "Quit" },
-}
diff --git a/lua/lv-dashboard/init.lua b/lua/lv-dashboard/init.lua
deleted file mode 100644
index 7e6fc060..00000000
--- a/lua/lv-dashboard/init.lua
+++ /dev/null
@@ -1,70 +0,0 @@
-local M = {}
-
-M.config = function()
- vim.g.dashboard_disable_at_vimenter = 0
-
- vim.g.dashboard_custom_header = O.dashboard.custom_header
-
- vim.g.dashboard_default_executive = "telescope"
-
- vim.g.dashboard_custom_section = {
- a = {
- description = { " Find File " },
- command = "Telescope find_files",
- },
- b = {
- description = { " Recently Used Files" },
- command = "Telescope oldfiles",
- },
- -- c = {
- -- description = { " Load Last Session " },
- -- command = "SessionLoad",
- -- },
- c = {
- description = { " Find Word " },
- command = "Telescope live_grep",
- },
- d = {
- description = { " Settings " },
- command = ":e " .. CONFIG_PATH .. "/lv-config.lua",
- },
- -- f = {
- -- description = { " Neovim Config Files" },
- -- command = "Telescope find_files cwd=" .. CONFIG_PATH,
- -- },
- -- e = {description = {' Marks '}, command = 'Telescope marks'}
- }
- vim.cmd "let g:dashboard_session_directory = $HOME..'/.config/nvim/.sessions'"
- vim.cmd "let packages = len(globpath('~/.local/share/nvim/site/pack/packer/start', '*', 0, 1))"
-
- vim.api.nvim_exec(
- [[
- let g:dashboard_custom_footer = ['LuaJIT loaded '..packages..' plugins']
-]],
- false
- )
-
- -- file_browser = {description = {' File Browser'}, command = 'Telescope find_files'},
-
- -- vim.g.dashboard_session_directory = CACHE_PATH..'/session'
- -- vim.g.dashboard_custom_footer = O.dashboard.footer
-end
-
-require("lv-utils").define_augroups {
- _dashboard = {
- -- seems to be nobuflisted that makes my stuff disapear will do more testing
- {
- "FileType",
- "dashboard",
- "setlocal nocursorline noswapfile synmaxcol& signcolumn=no norelativenumber nocursorcolumn nospell nolist nonumber bufhidden=wipe colorcolumn= foldcolumn=0 matchpairs= ",
- },
- {
- "FileType",
- "dashboard",
- "set showtabline=0 | autocmd BufLeave <buffer> set showtabline=2",
- },
- { "FileType", "dashboard", "nnoremap <silent> <buffer> q :q<CR>" },
- },
-}
-
-return M
diff --git a/lua/lv-lspinstall/init.lua b/lua/lv-lspinstall/init.lua
deleted file mode 100644
index f6796fe3..00000000
--- a/lua/lv-lspinstall/init.lua
+++ /dev/null
@@ -1,27 +0,0 @@
--- 1. get the config for this server from nvim-lspconfig and adjust the cmd path.
--- relative paths are allowed, lspinstall automatically adjusts the cmd and cmd_cwd for us!
--- local config = require("lspconfig").jdtls.document_config
--- require("lspconfig/configs").jdtls = nil -- important, unset the loaded config again
--- config.default_config.cmd[1] = "./node_modules/.bin/bash-language-server"
-
--- 2. extend the config with an install_script and (optionally) uninstall_script
--- require'lspinstall/servers'.jdtls = vim.tbl_extend('error', config, {
--- -- lspinstall will automatically create/delete the install directory for every server
--- install_script = [[
--- git clone https://github.com/eclipse/eclipse.jdt.ls.git
--- cd eclipse.jdt.ls
--- ./mvnw clean verify
--- ]],
--- uninstall_script = nil -- can be omitted
--- })
-
--- require'lspinstall/servers'.kotlin = vim.tbl_extend('error', config, {
--- install_script = [[
--- git clone https://github.com/fwcd/kotlin-language-server.git language-server
--- cd language-server
--- ./gradlew :server:installDist
--- ]],
--- uninstall_script = nil -- can be omitted
--- })
-
-require("lspinstall").setup()
diff --git a/lua/lv-neoformat/init.lua b/lua/lv-neoformat/init.lua
deleted file mode 100644
index 4dbaad23..00000000
--- a/lua/lv-neoformat/init.lua
+++ /dev/null
@@ -1,23 +0,0 @@
--- autoformat
-if O.format_on_save then
- require("lv-utils").define_augroups {
- autoformat = {
- {
- "BufWritePre",
- "*",
- [[try | undojoin | Neoformat | catch /^Vim\%((\a\+)\)\=:E790/ | finally | silent Neoformat | endtry]],
- },
- },
- }
-end
-
-vim.g.neoformat_run_all_formatters = 0
-
-vim.g.neoformat_enabled_python = { "autopep8", "yapf", "docformatter" }
-vim.g.neoformat_enabled_javascript = { "prettier" }
-
-if not O.format_on_save then
- vim.cmd [[if exists('#autoformat#BufWritePre')
- :autocmd! autoformat
- endif]]
-end
diff --git a/lua/lv-symbols-outline/init.lua b/lua/lv-symbols-outline/init.lua
deleted file mode 100644
index f15b5dfb..00000000
--- a/lua/lv-symbols-outline/init.lua
+++ /dev/null
@@ -1,15 +0,0 @@
-vim.g.symbols_outline = {
- highlight_hovered_item = true,
- show_guides = true,
- auto_preview = true,
- position = "right",
- keymaps = {
- close = "<Esc>",
- goto_location = "<Cr>",
- focus_location = "o",
- hover_symbol = "<C-space>",
- rename_symbol = "r",
- code_actions = "a",
- },
- lsp_blacklist = {},
-}
diff --git a/lua/lv-telescope/init.lua b/lua/lv-telescope/init.lua
deleted file mode 100644
index 39c7b951..00000000
--- a/lua/lv-telescope/init.lua
+++ /dev/null
@@ -1,90 +0,0 @@
-local status_ok, telescope = pcall(require, "telescope")
-if not status_ok then
- return
-end
-local actions = require "telescope.actions"
--- if O.plugin.trouble.active then
--- local trouble = require("trouble.providers.telescope")
--- end
--- Global remapping
-------------------------------
--- '--color=never',
-telescope.setup {
- defaults = {
- find_command = {
- "rg",
- "--no-heading",
- "--with-filename",
- "--line-number",
- "--column",
- "--smart-case",
- },
- prompt_prefix = " ",
- selection_caret = " ",
- entry_prefix = " ",
- initial_mode = "insert",
- selection_strategy = "reset",
- sorting_strategy = "descending",
- layout_strategy = "horizontal",
- layout_config = {
- width = 0.75,
- prompt_position = "bottom",
- preview_cutoff = 120,
- horizontal = { mirror = false },
- vertical = { mirror = false },
- },
- file_sorter = require("telescope.sorters").get_fzy_sorter,
- file_ignore_patterns = {},
- generic_sorter = require("telescope.sorters").get_generic_fuzzy_sorter,
- path_display = { "shorten" },
- winblend = 0,
- border = {},
- borderchars = { "─", "│", "─", "│", "╭", "╮", "╯", "╰" },
- color_devicons = true,
- use_less = true,
- set_env = { ["COLORTERM"] = "truecolor" }, -- default = nil,
- file_previewer = require("telescope.previewers").vim_buffer_cat.new,
- grep_previewer = require("telescope.previewers").vim_buffer_vimgrep.new,
- qflist_previewer = require("telescope.previewers").vim_buffer_qflist.new,
-
- -- Developer configurations: Not meant for general override
- buffer_previewer_maker = require("telescope.previewers").buffer_previewer_maker,
- mappings = {
- i = {
- ["<C-c>"] = actions.close,
- ["<C-j>"] = actions.move_selection_next,
- ["<C-k>"] = actions.move_selection_previous,
- -- ["<c-t>"] = trouble.open_with_trouble,
- ["<C-q>"] = actions.smart_send_to_qflist + actions.open_qflist,
- -- To disable a keymap, put [map] = false
- -- So, to not map "<C-n>", just put
- -- ["<c-x>"] = false,
- -- ["<esc>"] = actions.close,
-
- -- Otherwise, just set the mapping to the function that you want it to be.
- -- ["<C-i>"] = actions.select_horizontal,
-
- -- Add up multiple actions
- ["<CR>"] = actions.select_default + actions.center,
-
- -- You can perform as many actions in a row as you like
- -- ["<CR>"] = actions.select_default + actions.center + my_cool_custom_action,
- },
- n = {
- ["<C-j>"] = actions.move_selection_next,
- ["<C-k>"] = actions.move_selection_previous,
- -- ["<c-t>"] = trouble.open_with_trouble,
- ["<C-q>"] = actions.smart_send_to_qflist + actions.open_qflist,
- -- ["<C-i>"] = my_cool_custom_action,
- },
- },
- },
- extensions = {
- fzy_native = {
- override_generic_sorter = false,
- override_file_sorter = true,
- },
- },
-}
-
--- require'telescope'.load_extension('project')
diff --git a/lua/lv-themes/spacegray.lua b/lua/lv-themes/spacegray.lua
deleted file mode 100644
index 0bb695c0..00000000
--- a/lua/lv-themes/spacegray.lua
+++ /dev/null
@@ -1,373 +0,0 @@
-local lush = require "lush"
-local hsl = lush.hsl
-
-local theme = lush(function()
- local c = {
- bg = hsl "#212121",
- bg1 = hsl "#2a2a2a",
- -- bg2 = hsl("#3a3a3a"),
- bg2 = hsl "#383d45",
-
- white = hsl "#c8c9d1",
-
- gray = hsl "#858585",
- light_gray = hsl "#c8c9c1",
-
- error_red = hsl "#F44747",
- warning_orange = hsl "#ff8800",
- info_yellow = hsl "#ffcc66",
- hint_blue = hsl "#4fc1ff",
-
- red = hsl "#b04b57",
-
- blue = hsl "#5486c0",
- gray_blue = hsl "#66899d",
-
- -- yellow = hsl("#ffcb6b"),
- yellow = hsl "#eeba5a",
-
- -- orange = hsl("#c98a75"),
- orange = hsl "#c6735a",
-
- green = hsl "#87b379",
- light_green = hsl "#b2d77c",
-
- -- aqua = hsl("#46b1d0"),
- aqua = hsl "#65a7c5",
-
- purple = hsl "#bf83c1",
- pale_purple = hsl "#7199ee",
-
- sign_add = hsl "#587C0C",
- sign_change = hsl "#0C7D9D",
- sign_delete = hsl "#94151B",
-
- test = hsl "#ff00ff",
- }
- return {
- Normal { bg = c.bg, fg = c.white, gui = "NONE" }, -- used for the columns set with 'colorcolumn'
- SignColumn { Normal },
- ModeMsg { Normal },
- MsgArea { Normal },
- MsgSeparator { Normal },
- SpellBad { bg = "NONE", fg = c.white, gui = "underline", sp = c.red },
- SpellCap { bg = "NONE", fg = c.white, gui = "underline", sp = c.yellow },
- SpellLocal { bg = "NONE", fg = c.white, gui = "underline", sp = c.green },
- SpellRare { bg = "NONE", fg = c.white, gui = "underline", sp = c.blue },
- NormalNC { Normal },
- Pmenu { bg = c.bg2, fg = c.white, gui = "NONE" },
- PmenuSel { bg = c.gray_blue, fg = c.bg1.da(5), gui = "NONE" },
- WildMenu { PmenuSel }, -- Non Defaults
- CursorLineNr { bg = "NONE", fg = c.light_gray, gui = "bold" },
- Comment { bg = "NONE", fg = c.gray, gui = "italic" }, -- any comment
- Folded { bg = c.bg1, fg = c.gray, gui = "NONE" },
- FoldColumn { Normal, fg = c.gray, gui = "NONE" },
- LineNr { bg = "NONE", fg = c.gray, gui = "NONE" },
- FloatBorder { bg = c.bg1, fg = c.gray, gui = "NONE" },
- Whitespace { bg = "NONE", fg = c.gray.da(35), gui = "NONE" },
- VertSplit { bg = "NONE", fg = c.bg2, gui = "NONE" },
- CursorLine { bg = c.bg1, fg = "NONE", gui = "NONE" },
- CursorColumn { CursorLine },
- ColorColumn { CursorLine },
- NormalFloat { bg = c.bg2.da(30), fg = "NONE", gui = "NONE" },
- Visual { bg = c.bg2.da(25), fg = "NONE", gui = "NONE" },
- VisualNOS { Visual },
- WarningMsg { bg = "NONE", fg = c.red, gui = "NONE" },
- DiffText { bg = "NONE", fg = "NONE", gui = "NONE" },
- DiffAdd { bg = c.sign_add, fg = "NONE", gui = "NONE" },
- DiffChange { bg = c.sign_change, fg = "NONE", gui = "NONE" },
- DiffDelete { bg = c.sign_delete, fg = "NONE", gui = "NONE" },
- QuickFixLine { CursorLine },
- PmenuSbar { bg = c.bg2.li(15), fg = "NONE", gui = "NONE" },
- PmenuThumb { bg = c.white, fg = "NONE", gui = "NONE" },
- MatchParen { CursorLine, fg = "NONE", gui = "NONE" },
- Cursor { fg = "NONE", bg = "NONE", gui = "reverse" },
- lCursor { Cursor },
- CursorIM { Cursor },
- TermCursor { Cursor },
- TermCursorNC { Cursor },
- Conceal { bg = "NONE", fg = c.blue, gui = "NONE" },
- Directory { bg = "NONE", fg = c.blue, gui = "NONE" },
- SpecialKey { bg = "NONE", fg = c.blue, gui = "bold" },
- Title { bg = "NONE", fg = c.blue, gui = "bold" },
- ErrorMsg { bg = "NONE", fg = c.error_red, gui = "NONE" },
- Search { bg = c.gray_blue, fg = c.white },
- IncSearch { Search },
- Substitute { Search },
- MoreMsg { bg = "NONE", fg = c.aqua, gui = "NONE" },
- Question { MoreMsg },
- EndOfBuffer { bg = "NONE", fg = c.bg, gui = "NONE" },
- NonText { EndOfBuffer },
-
- String { fg = c.green },
- Character { fg = c.light_green },
- Constant { fg = c.orange },
- Number { fg = c.red },
- Boolean { fg = c.red },
- Float { fg = c.red },
-
- Identifier { fg = c.white },
- Function { fg = c.yellow },
- Operator { fg = c.gray_blue },
-
- Type { fg = c.purple },
- StorageClass { Type },
- Structure { Type },
- Typedef { Type },
-
- Keyword { fg = c.blue },
- Statement { Keyword },
- Conditional { Keyword },
- Repeat { Keyword },
- Label { Keyword },
- Exception { Keyword },
-
- Include { Keyword },
- PreProc { fg = c.aqua },
- Define { PreProc },
- Macro { PreProc },
- PreCondit { PreProc },
-
- Special { fg = c.orange },
- SpecialChar { Character },
- Tag { fg = c.pale_purple },
- Debug { fg = c.red },
- Delimiter { fg = c.white.da(25) },
- SpecialComment { fg = c.gray },
- Underlined { fg = "NONE", gui = "underline" },
- Bold { fg = "NONE", gui = "bold" },
- Italic { fg = "NONE", gui = "italic" },
-
- -- Todo
- -- ("Ignore", below, may be invisible...)
- Ignore { fg = c.white },
- Todo { bg = "NONE", fg = c.red, gui = "bold" },
- Error { fg = c.error_red },
-
- -- Treesitter
- TSComment { Comment }, -- comment blocks.
- luaTSConstructor { bg = "NONE", fg = c.white.da(25) }, -- override Lua curly braces
- TSAnnotation { bg = "NONE", fg = c.aqua }, -- For C++/Dart attributes, annotations that can be attached to the code to denote some kind of meta information.
- TSAttribute { bg = "NONE", fg = c.aqua }, -- (unstable) TODO: docs
- TSConstructor { Type }, -- For constructor calls and definitions: `{ }` in Lua, and Java constructors.
- TSType { Type }, -- types.
- TSTypeBuiltin { Type }, -- builtin types.
- TSConditional { Conditional }, -- keywords related to conditionnals.
- TSException { Exception }, -- exception related keywords.
- TSInclude { Include }, -- includes: `#include` in C, `use` or `extern crate` in Rust, or `require` in Lua.
- TSKeyword { Keyword }, -- keywords that don't fall in previous categories.
- TSKeywordFunction { Keyword }, -- keywords used to define a fuction.
- TSLabel { Label }, -- labels: `label:` in C and `:label:` in Lua.
- TSNamespace { bg = "NONE", fg = c.blue }, -- For identifiers referring to modules and namespaces.
- TSRepeat { Repeat }, -- keywords related to loops.
- TSConstant { Constant }, -- constants
- TSConstBuiltin { Constant }, -- constant that are built in the language: `nil` in Lua.
- TSFloat { Float }, -- floats.
- TSNumber { Number }, -- all numbers
- TSBoolean { Boolean }, -- booleans.
- TSCharacter { Character }, -- characters.
- TSError { bg = "NONE", fg = "NONE" }, -- For syntax/parser errors.
- TSFunction { Function }, -- function (calls and definitions).
- TSFuncBuiltin { Function }, -- builtin functions: `table.insert` in Lua.
- TSMethod { Function }, -- method calls and definitions.
- TSConstMacro { Macro }, -- constants that are defined by macros: `NULL` in C.
- TSFuncMacro { Macro }, -- macro defined fuctions (calls and definitions): each `macro_rules` in Rust.
- TSVariableBuiltin { bg = "NONE", fg = c.aqua }, -- Variable names that are defined by the languages, like `this` or `self`.
- TSProperty { fg = c.aqua },
- TSOperator { Operator }, -- any operator: `+`, but also `->` and `*` in C.
- TSVariable { bg = "NONE", fg = c.white }, -- Any variable name that does not have another highlight.
- TSField { bg = "NONE", fg = c.white }, -- For fields.
- TSParameter { TSField }, -- parameters of a function.
- TSParameterReference { TSParameter }, -- references to parameters of a function.
- TSSymbol { Identifier }, -- identifiers referring to symbols or atoms.
- TSText { fg = c.white }, -- strings considered text in a markup language.
- TSPunctDelimiter { Delimiter }, -- delimiters ie: `.`
- TSTagDelimiter { Delimiter }, -- Tag delimiter like `<` `>` `/`
- TSPunctBracket { Delimiter }, -- brackets and parens.
- TSPunctSpecial { Delimiter }, -- special punctutation that does not fall in the catagories before.
- TSString { String }, -- strings.
- TSStringRegex { TSString }, -- regexes.
- TSStringEscape { Character }, -- escape characters within a string.
- TSWarning { Todo }, -- Variable names that are defined by the languages, like `this` or `self`.
- TSTag { Tag }, -- Tags like html tag names.
- TSEmphasis { gui = "italic" }, -- text to be represented with emphasis.
- TSUnderline { gui = "underline" }, -- text to be represented with an underline.
- TSStrike { gui = "strikethrough" }, -- strikethrough text.
- TSTitle { Title }, -- Text that is part of a title.
- TSLiteral { String }, -- Literal text.
- TSURI { fg = c.aqua }, -- Any URI like a link or email.
- -- TSNone { }, -- TODO: docs
-
- -- These groups are for the native LSP client. Some other LSP clients may
- -- use these groups, or use their own. Consult your LSP client's
- -- documentation.
-
- LspDiagnosticsDefaultError { bg = "NONE", fg = c.error_red, gui = "NONE" },
- LspDiagnosticsDefaultWarning { bg = "NONE", fg = c.warning_orange, gui = "NONE" },
- LspDiagnosticsDefaultInformation { bg = "NONE", fg = c.info_yellow, gui = "NONE" },
- LspDiagnosticsDefaultHint { bg = "NONE", fg = c.hint_blue, gui = "NONE" },
-
- LspDiagnosticsVirtualTextError { LspDiagnosticsDefaultError },
- LspDiagnosticsVirtualTextWarning { LspDiagnosticsDefaultWarning },
- LspDiagnosticsVirtualTextInformation { LspDiagnosticsDefaultInformation },
- LspDiagnosticsVirtualTextHint { LspDiagnosticsDefaultHint },
-
- LspDiagnosticsFloatingError { fg = c.error_red, gui = "NONE" },
- LspDiagnosticsFloatingWarning { fg = c.warning_orange, gui = "NONE" },
- LspDiagnosticsFloatingInformation { fg = c.info_yellow, gui = "NONE" },
- LspDiagnosticsFloatingHint { fg = c.hint_blue, gui = "NONE" },
-
- LspDiagnosticsSignError { fg = c.error_red, gui = "NONE" },
- LspDiagnosticsSignWarning { fg = c.warning_orange, gui = "NONE" },
- LspDiagnosticsSignInformation { fg = c.info_yellow, gui = "NONE" },
- LspDiagnosticsSignHint { fg = c.hint_blue, gui = "NONE" }, -- Tree-Sitter
-
- LspDiagnosticsError { LspDiagnosticsSignError },
- LspDiagnosticsWarning { LspDiagnosticsSignWarning },
- LspDiagnosticsInformation { LspDiagnosticsSignInformation },
- LspDiagnosticsHint { LspDiagnosticsSignHint },
-
- -- LspReferenceText {bg = c.bg1, fg = "NONE", gui = "underline"},
- -- LspReferenceRead {bg = c.bg1, fg = "NONE", gui = "underline"},
- -- LspReferenceWrite {bg = c.bg1, fg = "NONE", gui = "underline"},
-
- LspDiagnosticsUnderlineError { fg = "NONE", gui = "underline", sp = c.red },
- LspDiagnosticsUnderlineWarning { fg = "NONE", gui = "underline", sp = c.yellow },
- LspDiagnosticsUnderlineInformation { fg = "NONE", gui = "underline", sp = c.blue },
- LspDiagnosticsUnderlineHint { fg = "NONE", gui = "underline", sp = c.green },
-
- -- gitsigns.nvim
- SignAdd { fg = c.sign_add },
- SignChange { fg = c.sign_change },
- SignDelete { fg = c.sign_delete }, -- Any URI like a link or email.
- GitSignsAdd { fg = c.sign_add },
- GitSignsChange { fg = c.sign_change },
- GitSignsDelete { fg = c.sign_delete },
-
- -- telescope.nvim
- TelescopeSelection { bg = "NONE", fg = c.aqua },
- TelescopeMatching { bg = "NONE", fg = c.red, gui = "bold" },
- TelescopeBorder { bg = c.bg1, fg = c.gray }, -- nvim-tree.lua
-
- -- Nvimtree
- NvimTreeFolderIcon { fg = c.blue },
- NvimTreeIndentMarker { fg = c.gray },
- NvimTreeNormal { fg = c.white.da(10), bg = c.bg1 },
- NvimTreeFolderName { fg = c.blue },
- NvimTreeOpenedFolderName { fg = c.aqua.da(10), gui = "italic" },
- NvimTreeOpenedFile { NvimTreeOpenedFolderName },
- NvimTreeRootFolder { fg = c.blue.da(20) },
- NvimTreeExecFile { fg = c.green },
- NvimTreeImageFile { fg = c.purple },
- NvimTreeSpecialFile { fg = c.aqua },
-
- NvimTreeGitStaged { fg = c.sign_add },
- NvimTreeGitNew { fg = c.sign_add },
- NvimTreeGitDirty { fg = c.sign_add },
- NvimTreeGitRenamed { fg = c.sign_change },
- NvimTreeGitMerge { fg = c.sign_change },
- NvimTreeGitDelete { fg = c.sign_delete },
- NvimTreeVertSplit { fg = c.bg1, bg = c.bg1 },
-
- -- BarBar
- TabLine { bg = c.bg1, fg = c.white, gui = "NONE" },
- TabLineFill { bg = c.bg1, fg = c.white, gui = "NONE" },
- TabLineSel { bg = c.blue, fg = c.bg1, gui = "NONE" },
-
- BufferCurrent { fg = c.fg, bg = c.bg },
- BufferCurrentIndex { fg = c.aqua, bg = c.bg },
- BufferCurrentMod { fg = c.info_yellow, bg = c.bg },
- BufferCurrentSign { fg = c.aqua, bg = c.bg },
- BufferCurrentTarget { fg = c.red, bg = c.bg, gui = "bold" },
-
- BufferVisible { fg = c.fg, bg = c.bg },
- BufferVisibleIndex { fg = c.fg, bg = c.bg },
- BufferVisibleMod { fg = c.info_yellow, bg = c.bg },
- BufferVisibleSign { fg = c.info_yellow, bg = c.bg },
- BufferVisibleTarget { fg = c.red, bg = c.bg, gui = "bold" },
-
- BufferInactive { fg = c.gray, bg = c.bg1 },
- BufferInactiveIndex { fg = c.gray, bg = c.bg1 },
- BufferInactiveMod { fg = c.info_yellow, bg = c.bg1 },
- BufferInactiveSign { fg = c.gray, bg = c.bg1 },
- BufferInactiveTarget { fg = c.red, bg = c.bg1 },
-
- -- some fix for html related stuff
- htmlH1 { Title }, -- markdown stuff
- mkdLink { fg = c.aqua, gui = "underline" },
- mkdLineBreak { bg = "NONE", fg = "NONE", gui = "NONE" },
- mkdHeading { fg = c.white },
- mkdInlineURL { mkdLink },
- mkdUnderline { fg = c.gray },
- markdownUrl { mkdLink },
- markdownCode { fg = c.orange, bg = "NONE" },
- markdownLinkTextDelimiter { Delimiter },
- markdownLinkDelimiter { Delimiter },
- markdownIdDelimiter { Delimiter },
- markdownLinkText { fg = c.aqua },
- markdownItalic { fg = "NONE", gui = "italic" }, -- flutter-tools.nvim
- FlutterWidgetGuides { fg = c.gray.li(10) }, -- statusline
-
- StatusLine { bg = c.bg1, fg = c.white }, -- status line of current window
- StatusLineNC { bg = c.bg1, fg = c.light_gray }, -- status lines of not-current windows Note: if this is equal to "StatusLine" Vim will use "^^^" in the status line of the current window.
- StatusLineSeparator { bg = c.bg1, fg = "NONE" },
- StatusLineGit { bg = c.bg1, fg = c.orange },
- StatusLineGitAdd { bg = c.bg1, fg = c.green },
- StatusLineGitChange { bg = c.bg1, fg = c.blue },
- StatusLineGitDelete { bg = c.bg1, fg = c.red },
- StatusLineLspDiagnosticsError { bg = c.bg1, fg = c.error_red, gui = "NONE" },
- StatusLineLspDiagnosticsWarning { bg = c.bg1, fg = c.warning_orange, gui = "NONE" },
- StatusLineLspDiagnosticsInformation { bg = c.bg1, fg = c.info_yellow, gui = "NONE" },
- StatusLineLspDiagnosticsHint { bg = c.bg1, fg = c.hint_blue, gui = "NONE" },
- StatusLineTreeSitter { bg = c.bg1, fg = c.green },
-
- -- StatusLineMode {bg = c.gray, fg = c.bg, gui = "bold"},
- -- StatusLineDeco {bg = c.bg2, fg = c.yellow},
- -- StatusLineLCol {bg = c.bg2, fg = c.white},
- -- StatusLineLColAlt {bg = c.bg1, fg = c.white},
- -- StatusLineFT {bg = c.bg2, fg = c.white},
- -- StatusLineFTAlt {bg = c.bg2, fg = c.white},
- -- StatusLineGitAlt {bg = c.gray, fg = c.bg},
- -- StatusLineLSP {bg = c.bg1, fg = c.gray.li(25)},
- -- StatusLineFileName {bg = c.bg1, fg = c.white, gui = "bold"},
-
- -- lsp-trouble.nvim
- LspTroubleIndent { fg = c.gray.li(10) }, -- tabline stuff
-
- -- tabline diagnostic
- TabLineError { LspDiagnosticsSignError },
- TabLineWarning { LspDiagnosticsSignWarning },
- TabLineHint { LspDiagnosticsSignHint },
- TabLineInformation { LspDiagnosticsSignInformation }, -- which-key.nvim
-
- WhichKey { fg = c.purple }, -- nvim-compe
- WhichKeySeperator { fg = c.green }, -- nvim-compe
- WhichKeyGroup { fg = c.blue }, -- nvim-compe
- WhichKeyDesc { fg = c.aqua }, -- nvim-compe
- WhichKeyFloat { bg = c.bg1 }, -- nvim-compe
-
- CompeDocumentation { Pmenu, fg = "NONE" }, -- diffview
-
- DiffviewNormal { NvimTreeNormal },
- DiffviewStatusAdded { SignAdd },
- DiffviewStatusModified { SignChange },
- DiffviewStatusRenamed { SignChange },
- DiffviewStatusDeleted { SignDelete },
- DiffviewFilePanelInsertion { SignAdd },
- DiffviewFilePanelDeletion { SignDelete },
- DiffviewVertSplit { fg = c.gray, bg = c.bg },
-
- DashboardHeader { fg = c.blue },
- DashboardCenter { fg = c.purple },
- DashboardFooter { fg = c.aqua },
-
- IndentBlanklineContextChar { fg = c.gray.da(20) },
-
- CodiVirtualText { fg = c.hint_blue },
- }
-end)
-
--- return our parsed theme for extension or use else where.
-return theme
-
--- vi:nowrap
diff --git a/lua/lv-treesitter/init.lua b/lua/lv-treesitter/init.lua
deleted file mode 100644
index 55f45809..00000000
--- a/lua/lv-treesitter/init.lua
+++ /dev/null
@@ -1,146 +0,0 @@
--- TODO refacor this whole file and treesitter in general
--- if not package.loaded['nvim-treesitter'] then return end
---
--- Custom parsers
--- local parser_config = require("nvim-treesitter.parsers").get_parser_configs()
--- parser_config.make = {
--- install_info = {
--- url = "https://github.com/alemuller/tree-sitter-make", -- local path or git repo
--- files = {"src/parser.c"},
--- requires_generate_from_grammar = true
--- }
--- }
--- parser_config.just = {
--- install_info = {
--- url = "~/dev/tree-sitter-just", -- local path or git repo
--- files = {"src/parser.c"}
--- }
--- -- filetype = "just", -- if filetype does not agrees with parser name
--- -- used_by = {"bar", "baz"} -- additional filetypes that use this parser
--- }
--- Custom text objects
-local textobj_prefixes = O.treesitter.textobj_prefixes
-local textobj_suffixes = O.treesitter.textobj_suffixes
-local textobj_sel_keymaps = {}
-local textobj_swap_keymaps = {}
-local textobj_move_keymaps = {
- enable = O.plugin.ts_textobjects,
- set_jumps = true, -- whether to set jumps in the jumplist
- goto_next_start = {},
- goto_next_end = {},
- goto_previous_start = {},
- goto_previous_end = {},
-}
-for obj, suffix in pairs(textobj_suffixes) do
- if textobj_prefixes["goto_next"] ~= nil then
- textobj_move_keymaps["goto_next_start"][textobj_prefixes["goto_next"] .. suffix[1]] = "@" .. obj .. ".outer"
- textobj_move_keymaps["goto_next_end"][textobj_prefixes["goto_next"] .. suffix[2]] = "@" .. obj .. ".outer"
- end
- if textobj_prefixes["goto_previous"] ~= nil then
- textobj_move_keymaps["goto_previous_start"][textobj_prefixes["goto_previous"] .. suffix[2]] = "@" .. obj .. ".outer"
- textobj_move_keymaps["goto_previous_end"][textobj_prefixes["goto_previous"] .. suffix[1]] = "@" .. obj .. ".outer"
- end
-
- if textobj_prefixes["inner"] ~= nil then
- textobj_sel_keymaps[textobj_prefixes["inner"] .. suffix[1]] = "@" .. obj .. ".inner"
- end
- if textobj_prefixes["outer"] ~= nil then
- textobj_sel_keymaps[textobj_prefixes["outer"] .. suffix[1]] = "@" .. obj .. ".outer"
- end
-
- if textobj_prefixes["swap"] ~= nil then
- textobj_swap_keymaps[textobj_prefixes["swap"] .. suffix[1]] = "@" .. obj .. ".outer"
- end
-end
-vim.g.ts_hint_textobject_keys = O.treesitter.hint_labels -- Requires https://github.com/mfussenegger/nvim-ts-hint-textobject/pull/2
-
--- Add which key menu entries
-local status, wk = pcall(require, "which-key")
-if status then
- local normal = {
- mode = "n", -- Normal mode
- }
- local operators = {
- mode = "o", -- Operator mode
- }
- wk.register(textobj_sel_keymaps, operators)
- wk.register({
- ["m"] = "Hint Objects",
- ["."] = "Textsubject",
- [";"] = "Textsubject-big",
- }, operators)
- wk.register(textobj_swap_keymaps, normal)
- wk.register({
- [textobj_prefixes["swap"]] = "Swap",
- -- [textobj_prefixes["goto_next"]] = "Jump [",
- -- [textobj_prefixes["goto_previous"]] = "Jump ]"
- }, normal)
- wk.register(textobj_move_keymaps["goto_next_start"], normal)
- wk.register(textobj_move_keymaps["goto_next_end"], normal)
- wk.register(textobj_move_keymaps["goto_previous_start"], normal)
- wk.register(textobj_move_keymaps["goto_previous_end"], normal)
-end
-local status_ok, treesitter_configs = pcall(require, "nvim-treesitter.configs")
-if not status_ok then
- return
-end
-
-treesitter_configs.setup {
- ensure_installed = O.treesitter.ensure_installed, -- one of "all", "maintained" (parsers with maintainers), or a list of languages
- ignore_install = O.treesitter.ignore_install,
- matchup = {
- enable = true, -- mandatory, false will disable the whole extension
- -- disable = { "c", "ruby" }, -- optional, list of language that will be disabled
- },
- highlight = {
- enable = O.treesitter.highlight.enabled, -- false will disable the whole extension
- additional_vim_regex_highlighting = true,
- disable = { "latex" },
- },
- context_commentstring = {
- enable = O.plugin.ts_context_commentstring.active,
- config = { css = "// %s" },
- },
- -- indent = {enable = true, disable = {"python", "html", "javascript"}},
- -- TODO seems to be broken
- indent = { enable = { "javascriptreact" } },
- autotag = { enable = O.plugin.ts_autotag.active },
- textobjects = {
- swap = {
- enable = O.plugin.ts_textobjects,
- swap_next = textobj_swap_keymaps,
- },
- move = textobj_move_keymaps,
- select = {
- enable = O.plugin.ts_textobjects,
- keymaps = textobj_sel_keymaps,
- },
- },
- textsubjects = {
- enable = O.plugin.ts_textsubjects,
- keymaps = { ["."] = "textsubjects-smart", [";"] = "textsubjects-big" },
- },
- playground = {
- enable = O.plugin.ts_playground.active,
- disable = {},
- updatetime = 25, -- Debounced time for highlighting nodes in the playground from source code
- persist_queries = false, -- Whether the query persists across vim sessions
- keybindings = {
- toggle_query_editor = "o",
- toggle_hl_groups = "i",
- toggle_injected_languages = "t",
- toggle_anonymous_nodes = "a",
- toggle_language_display = "I",
- focus_language = "f",
- unfocus_language = "F",
- update = "R",
- goto_node = "<cr>",
- show_help = "?",
- },
- },
- rainbow = {
- enable = O.plugin.ts_rainbow.active,
- extended_mode = true, -- Highlight also non-parentheses delimiters, boolean or table: lang -> boolean
- max_file_lines = 1000, -- Do not enable for files with more than 1000 lines, int
- },
-}
diff --git a/lua/lv-utils/init.lua b/lua/lv-utils/init.lua
index 6a7d3c88..d2d23cfb 100644
--- a/lua/lv-utils/init.lua
+++ b/lua/lv-utils/init.lua
@@ -3,9 +3,11 @@ local lv_utils = {}
function lv_utils.reload_lv_config()
vim.cmd "source ~/.config/nvim/lv-config.lua"
vim.cmd "source ~/.config/nvim/lua/plugins.lua"
- vim.cmd "source ~/.config/nvim/lua/lv-neoformat/init.lua"
+ vim.cmd "source ~/.config/nvim/lua/settings.lua"
+ vim.cmd "source ~/.config/nvim/lua/core/formatter.lua"
vim.cmd ":PackerCompile"
vim.cmd ":PackerInstall"
+ -- vim.cmd ":PackerClean"
end
function lv_utils.check_lsp_client_active(name)
@@ -40,9 +42,13 @@ function lv_utils.define_augroups(definitions) -- {{{1
end
end
+function lv_utils.unrequire(m)
+ package.loaded[m] = nil
+ _G[m] = nil
+end
+
lv_utils.define_augroups {
- _user_autocommands = O.user_autocommands,
_general_settings = {
{
"TextYankPost",
@@ -55,6 +61,11 @@ lv_utils.define_augroups {
"setlocal formatoptions-=c formatoptions-=r formatoptions-=o",
},
{
+ "BufWinEnter",
+ "dashboard",
+ "setlocal cursorline signcolumn=yes cursorcolumn number",
+ },
+ {
"BufRead",
"*",
"setlocal formatoptions-=c formatoptions-=r formatoptions-=o",
@@ -95,6 +106,7 @@ lv_utils.define_augroups {
-- will cause split windows to be resized evenly if main window is resized
{ "BufWritePost", "plugins.lua", "PackerCompile" },
},
+
-- _fterm_lazygit = {
-- -- will cause esc key to exit lazy git
-- {"TermEnter", "*", "call LazyGitNativation()"}
@@ -106,6 +118,7 @@ lv_utils.define_augroups {
-- {'InsertEnter', '*', 'if &cursorline | let g:ms_cursorlineoff = 1 | setlocal nocursorline | endif'},
-- {'InsertLeave', '*', 'if exists("g:ms_cursorlineoff") | setlocal cursorline | endif'},
-- },
+ _user_autocommands = O.user_autocommands,
}
vim.cmd [[
@@ -120,4 +133,4 @@ endfunction
return lv_utils
--- TODO find a new home for these autocommands
+-- TODO: find a new home for these autocommands
diff --git a/lua/lv-vimtex/init.lua b/lua/lv-vimtex/init.lua
deleted file mode 100644
index 4d7b93bd..00000000
--- a/lua/lv-vimtex/init.lua
+++ /dev/null
@@ -1,25 +0,0 @@
-vim.g.vimtex_compiler_method = "latexmk"
-vim.g.vimtex_view_method = "zathura"
-vim.g.vimtex_fold_enabled = 0
-
-O.user_which_key["L"] = {
- name = "+Latex",
- c = { "<cmd>VimtexCompile<cr>", "Toggle Compilation Mode" },
- f = { "<cmd>call vimtex#fzf#run()<cr>", "Fzf Find" },
- i = { "<cmd>VimtexInfo<cr>", "Project Information" },
- s = { "<cmd>VimtexStop<cr>", "Stop Project Compilation" },
- t = { "<cmd>VimtexTocToggle<cr>", "Toggle Table Of Content" },
- v = { "<cmd>VimtexView<cr>", "View PDF" },
-}
-
--- Compile on initialization, cleanup on quit
-vim.api.nvim_exec(
- [[
- augroup vimtex_event_1
- au!
- au User VimtexEventQuit call vimtex#compiler#clean(0)
- au User VimtexEventInitPost call vimtex#compiler#compile()
- augroup END
- ]],
- false
-)
diff --git a/lua/lv-which-key/init.lua b/lua/lv-which-key/init.lua
deleted file mode 100644
index beaaff42..00000000
--- a/lua/lv-which-key/init.lua
+++ /dev/null
@@ -1,251 +0,0 @@
--- if not package.loaded['which-key'] then
--- return
--- end
-local status_ok, which_key = pcall(require, "which-key")
-if not status_ok then
- return
-end
-
-which_key.setup {
- plugins = {
- marks = true, -- shows a list of your marks on ' and `
- registers = true, -- shows your registers on " in NORMAL or <C-r> in INSERT mode
- -- the presets plugin, adds help for a bunch of default keybindings in Neovim
- -- No actual key bindings are created
- presets = {
- operators = false, -- adds help for operators like d, y, ...
- motions = false, -- adds help for motions
- text_objects = false, -- help for text objects triggered after entering an operator
- windows = true, -- default bindings on <c-w>
- nav = true, -- misc bindings to work with windows
- z = true, -- bindings for folds, spelling and others prefixed with z
- g = true, -- bindings for prefixed with g
- },
- spelling = { enabled = true, suggestions = 20 }, -- use which-key for spelling hints
- },
- icons = {
- breadcrumb = "»", -- symbol used in the command line area that shows your active key combo
- separator = "➜", -- symbol used between a key and it's label
- group = "+", -- symbol prepended to a group
- },
- window = {
- border = "single", -- none, single, double, shadow
- position = "bottom", -- bottom, top
- margin = { 1, 0, 1, 0 }, -- extra window margin [top, right, bottom, left]
- padding = { 2, 2, 2, 2 }, -- extra window padding [top, right, bottom, left]
- },
- layout = {
- height = { min = 4, max = 25 }, -- min and max height of the columns
- width = { min = 20, max = 50 }, -- min and max width of the columns
- spacing = 3, -- spacing between columns
- },
- hidden = { "<silent>", "<cmd>", "<Cmd>", "<CR>", "call", "lua", "^:", "^ " }, -- hide mapping boilerplate
- show_help = true, -- show help message on the command line when the popup is visible
-}
-
--- Set leader
-if O.leader_key == " " or O.leader_key == "space" then
- vim.api.nvim_set_keymap("n", "<Space>", "<NOP>", { noremap = true, silent = true })
- vim.g.mapleader = " "
-else
- vim.api.nvim_set_keymap("n", O.leader_key, "<NOP>", { noremap = true, silent = true })
- vim.g.mapleader = O.leader_key
-end
-
-local opts = {
- mode = "n", -- NORMAL mode
- prefix = "<leader>",
- buffer = nil, -- Global mappings. Specify a buffer number for buffer local mappings
- silent = true, -- use `silent` when creating keymaps
- noremap = true, -- use `noremap` when creating keymaps
- nowait = false, -- use `nowait` when creating keymaps
-}
-
--- no hl
-vim.api.nvim_set_keymap("n", "<Leader>h", ':let @/=""<CR>', { noremap = true, silent = true })
-
--- explorer
-
-vim.api.nvim_set_keymap(
- "n",
- "<Leader>e",
- ":lua require'lv-nvimtree'.toggle_tree()<CR>",
- { noremap = true, silent = true }
-)
-
-vim.api.nvim_set_keymap("n", "<Leader>f", ":Telescope find_files<CR>", { noremap = true, silent = true })
-
--- dashboard
-vim.api.nvim_set_keymap("n", "<Leader>;", ":Dashboard<CR>", { noremap = true, silent = true })
-
--- Comments
-vim.api.nvim_set_keymap("n", "<leader>/", ":CommentToggle<CR>", { noremap = true, silent = true })
-vim.api.nvim_set_keymap("v", "<leader>/", ":CommentToggle<CR>", { noremap = true, silent = true })
-
--- close buffer
-vim.api.nvim_set_keymap("n", "<leader>c", ":BufferClose<CR>", { noremap = true, silent = true })
-
--- Save
-vim.api.nvim_set_keymap("n", "<leader>w", ":w!<CR>", { noremap = true, silent = true })
-
--- Quit
-vim.api.nvim_set_keymap("n", "<leader>q", ":q!<CR>", { noremap = true, silent = true })
-
--- open lv-config
-vim.api.nvim_set_keymap(
- "n",
- "<leader>.",
- ":e " .. CONFIG_PATH .. "/lv-config.lua<CR>",
- { noremap = true, silent = true }
-)
-
-local mappings = {
- ["w"] = "Save",
- ["q"] = "Quit",
- ["."] = "LunarConfig",
- ["/"] = "Comment",
- ["c"] = "Close Buffer",
- ["e"] = "Explorer",
- ["f"] = "Find File",
- ["h"] = "No Highlight",
- [";"] = "Dashboard",
- p = {
- name = "Packer",
- c = { "<cmd>PackerCompile<cr>", "Compile" },
- i = { "<cmd>PackerInstall<cr>", "Install" },
- r = { "<cmd>lua require('lv-utils').reload_lv_config()<cr>", "Reload" },
- s = { "<cmd>PackerSync<cr>", "Sync" },
- u = { "<cmd>PackerUpdate<cr>", "Update" },
- },
-
- -- " Available Debug Adapters:
- -- " https://microsoft.github.io/debug-adapter-protocol/implementors/adapters/
- -- " Adapter configuration and installation instructions:
- -- " https://github.com/mfussenegger/nvim-dap/wiki/Debug-Adapter-installation
- -- " Debug Adapter protocol:
- -- " https://microsoft.github.io/debug-adapter-protocol/
- -- " Debugging
- g = {
- name = "Git",
- j = { "<cmd>lua require 'gitsigns'.next_hunk()<cr>", "Next Hunk" },
- k = { "<cmd>lua require 'gitsigns'.prev_hunk()<cr>", "Prev Hunk" },
- l = { "<cmd>lua require 'gitsigns'.blame_line()<cr>", "Blame" },
- p = { "<cmd>lua require 'gitsigns'.preview_hunk()<cr>", "Preview Hunk" },
- r = { "<cmd>lua require 'gitsigns'.reset_hunk()<cr>", "Reset Hunk" },
- R = { "<cmd>lua require 'gitsigns'.reset_buffer()<cr>", "Reset Buffer" },
- s = { "<cmd>lua require 'gitsigns'.stage_hunk()<cr>", "Stage Hunk" },
- u = {
- "<cmd>lua require 'gitsigns'.undo_stage_hunk()<cr>",
- "Undo Stage Hunk",
- },
- o = { "<cmd>Telescope git_status<cr>", "Open changed file" },
- b = { "<cmd>Telescope git_branches<cr>", "Checkout branch" },
- c = { "<cmd>Telescope git_commits<cr>", "Checkout commit" },
- C = {
- "<cmd>Telescope git_bcommits<cr>",
- "Checkout commit(for current file)",
- },
- },
-
- l = {
- name = "LSP",
- a = { "<cmd>lua vim.lsp.buf.code_action()<cr>", "Code Action" },
- d = {
- "<cmd>Telescope lsp_document_diagnostics<cr>",
- "Document Diagnostics",
- },
- w = {
- "<cmd>Telescope lsp_workspace_diagnostics<cr>",
- "Workspace Diagnostics",
- },
- f = { "<cmd>Neoformat<cr>", "Format" },
- i = { "<cmd>LspInfo<cr>", "Info" },
- j = { "<cmd>lua vim.lsp.diagnostic.goto_next({popup_opts = {border = O.lsp.popup_border}})<cr>", "Next Diagnostic" },
- k = { "<cmd>lua vim.lsp.diagnostic.goto_prev({popup_opts = {border = O.lsp.popup_border}})<cr>", "Prev Diagnostic" },
- q = { "<cmd>Telescope quickfix<cr>", "Quickfix" },
- r = { "<cmd>lua vim.lsp.buf.rename()<cr>", "Rename" },
- s = {
- O.plugin.symbol_outline.active and "<cmd>SymbolsOutline<cr>" or "<cmd> Telescope lsp_document_symbols<cr>",
- "Document Symbols",
- },
- S = {
- "<cmd>Telescope lsp_dynamic_workspace_symbols<cr>",
- "Workspace Symbols",
- },
- },
-
- s = {
- name = "Search",
- b = { "<cmd>Telescope git_branches<cr>", "Checkout branch" },
- c = { "<cmd>Telescope colorscheme<cr>", "Colorscheme" },
- f = { "<cmd>Telescope find_files<cr>", "Find File" },
- h = { "<cmd>Telescope help_tags<cr>", "Find Help" },
- M = { "<cmd>Telescope man_pages<cr>", "Man Pages" },
- r = { "<cmd>Telescope oldfiles<cr>", "Open Recent File" },
- R = { "<cmd>Telescope registers<cr>", "Registers" },
- t = { "<cmd>Telescope live_grep<cr>", "Text" },
- },
- T = {
- name = "Treesitter",
- i = { ":TSConfigInfo<cr>", "Info" },
- },
-}
-
--- if O.plugin.trouble.active then
--- mappings["d"] = {
--- name = "Diagnostics",
--- t = { "<cmd>TroubleToggle<cr>", "trouble" },
--- w = { "<cmd>TroubleToggle lsp_workspace_diagnostics<cr>", "workspace" },
--- d = { "<cmd>TroubleToggle lsp_document_diagnostics<cr>", "document" },
--- q = { "<cmd>TroubleToggle quickfix<cr>", "quickfix" },
--- l = { "<cmd>TroubleToggle loclist<cr>", "loclist" },
--- r = { "<cmd>TroubleToggle lsp_references<cr>", "references" },
--- }
--- end
-
-if O.plugin.symbol_outline.active then
- vim.api.nvim_set_keymap("n", "<leader>o", ":SymbolsOutline<CR>", { noremap = true, silent = true })
- mappings["o"] = "Symbols outline"
-end
-
-if O.plugin.ts_playground.active then
- vim.api.nvim_set_keymap("n", "<leader>Th", ":TSHighlightCapturesUnderCursor<CR>", { noremap = true, silent = true })
- mappings[""] = "Highlight Capture"
-end
-
-if O.plugin.zen.active then
- vim.api.nvim_set_keymap("n", "<leader>z", ":ZenMode<CR>", { noremap = true, silent = true })
- mappings["z"] = "Zen"
-end
-if O.plugin.telescope_project.active then
- -- open projects
- vim.api.nvim_set_keymap(
- "n",
- "<leader>P",
- ":lua require'telescope'.extensions.project.project{}<CR>",
- { noremap = true, silent = true }
- )
- mappings["P"] = "Projects"
-end
-
-if O.lushmode then
- mappings["L"] = {
- name = "+Lush",
- l = { ":Lushify<cr>", "Lushify" },
- x = { ":lua require('lush').export_to_buffer(require('lush_theme.cool_name'))", "Lush Export" },
- t = { ":LushRunTutorial<cr>", "Lush Tutorial" },
- q = { ":LushRunQuickstart<cr>", "Lush Quickstart" },
- }
-end
-
-if O.plugin.floatterm then
- vim.api.nvim_set_keymap("n", "<leader>gg", "<CMD>lua _G.__fterm_lazygit()<CR>", { noremap = true, silent = true })
- mappings["gg"] = "LazyGit"
-end
-
-for k, v in pairs(O.user_which_key) do
- mappings[k] = v
-end
-
-local wk = require "which-key"
-wk.register(mappings, opts)
diff --git a/lua/lv-zen/config.lua b/lua/lv-zen/config.lua
deleted file mode 100644
index ef1e2bc5..00000000
--- a/lua/lv-zen/config.lua
+++ /dev/null
@@ -1,21 +0,0 @@
-O.plugin["zen"] = {
- window = {
- backdrop = 1,
- height = 0.85, -- height of the Zen window
- options = {
- signcolumn = "no", -- disable signcolumn
- number = false, -- disable number column
- relativenumber = false, -- disable relative numbers
- -- cursorline = false, -- disable cursorline
- -- cursorcolumn = false, -- disable cursor column
- -- foldcolumn = "0", -- disable fold column
- -- list = false, -- disable whitespace characters
- },
- },
- plugins = {
- gitsigns = { enabled = false }, -- disables git signs
- -- your configuration comes here
- -- or leave it empty to use the default settings
- -- refer to the configuration section below
- },
-}
diff --git a/lua/lv-zen/init.lua b/lua/lv-zen/init.lua
deleted file mode 100644
index ce48a4b0..00000000
--- a/lua/lv-zen/init.lua
+++ /dev/null
@@ -1,10 +0,0 @@
-local M = {}
-local status_ok, zen_mode = pcall(require, "zen-mode")
-if not status_ok then
- return
-end
-
-M.config = function()
- zen_mode.setup(O.plugin.zen)
-end
-return M
diff --git a/lua/plugins.lua b/lua/plugins.lua
index a9c625ce..129bc91d 100644
--- a/lua/plugins.lua
+++ b/lua/plugins.lua
@@ -14,6 +14,7 @@ if not packer_ok then
end
packer.init {
+ -- package_root = require("packer.util").join_paths(vim.fn.stdpath "data", "lvim", "pack"),
git = { clone_timeout = 300 },
display = {
open_fn = function()
@@ -26,50 +27,74 @@ return require("packer").startup(function(use)
-- Packer can manage itself as an optional plugin
use "wbthomason/packer.nvim"
- -- TODO refactor all of this (for now it works, but yes I know it could be wrapped in a simpler function)
+ -- TODO: refactor all of this (for now it works, but yes I know it could be wrapped in a simpler function)
use { "neovim/nvim-lspconfig" }
- use { "kabouzeid/nvim-lspinstall", event = "VimEnter" }
- -- Telescope
+ use {
+ "kabouzeid/nvim-lspinstall",
+ event = "VimEnter",
+ config = function()
+ require("lspinstall").setup()
+ end,
+ }
+
use { "nvim-lua/popup.nvim" }
use { "nvim-lua/plenary.nvim" }
use { "tjdevries/astronauta.nvim" }
+
+ -- Telescope
use {
"nvim-telescope/telescope.nvim",
- config = [[require('lv-telescope')]],
- --event = "BufEnter",
+ config = [[require('core.telescope').setup()]],
}
-- Autocomplete
use {
"hrsh7th/nvim-compe",
- event = "InsertEnter",
+ -- event = "InsertEnter",
+ config = function()
+ require("core.compe").setup()
+ end,
+ }
+
+ -- Autopairs
+ use {
+ "windwp/nvim-autopairs",
+ -- event = "InsertEnter",
+ after = { "telescope.nvim" },
config = function()
- require("lv-compe").config()
+ require "core.autopairs"
end,
}
+ -- Snippets
+
use { "hrsh7th/vim-vsnip", event = "InsertEnter" }
use { "rafamadriz/friendly-snippets", event = "InsertEnter" }
-- Treesitter
- use { "nvim-treesitter/nvim-treesitter" }
+ use {
+ "nvim-treesitter/nvim-treesitter",
+ config = function()
+ require("core.treesitter").setup()
+ end,
+ }
- -- Neoformat
+ -- Formatter.nvim
use {
- "sbdchd/neoformat",
+ "mhartington/formatter.nvim",
config = function()
- require "lv-neoformat"
+ require "core.formatter"
end,
- event = "BufRead",
}
+ -- NvimTree
use {
"kyazdani42/nvim-tree.lua",
- -- event = "BufEnter",
+ -- event = "BufWinOpen",
-- cmd = "NvimTreeToggle",
commit = "fd7f60e242205ea9efc9649101c81a07d5f458bb",
config = function()
- require("lv-nvimtree").config()
+ require("core.nvimtree").setup()
end,
}
@@ -77,7 +102,7 @@ return require("packer").startup(function(use)
"lewis6991/gitsigns.nvim",
config = function()
- require("lv-gitsigns").config()
+ require("core.gitsigns").setup()
end,
event = "BufRead",
}
@@ -86,25 +111,15 @@ return require("packer").startup(function(use)
use {
"folke/which-key.nvim",
config = function()
- require "lv-which-key"
+ require("core.which-key").setup()
end,
event = "BufWinEnter",
}
- -- Autopairs
- use {
- "windwp/nvim-autopairs",
- event = "InsertEnter",
- after = { "telescope.nvim" },
- config = function()
- require "lv-autopairs"
- end,
- }
-
-- Comments
use {
"terrortylor/nvim-comment",
- event = "BufWinEnter",
+ event = "BufRead",
config = function()
local status_ok, nvim_comment = pcall(require, "nvim_comment")
if not status_ok then
@@ -114,8 +129,13 @@ return require("packer").startup(function(use)
end,
}
- -- Color
- use { "christianchiarulli/nvcode-color-schemes.vim", opt = true }
+ -- vim-rooter
+ use {
+ "airblade/vim-rooter",
+ config = function()
+ vim.g.rooter_silent_chdir = 1
+ end,
+ }
-- Icons
use { "kyazdani42/nvim-web-devicons" }
@@ -124,171 +144,78 @@ return require("packer").startup(function(use)
use {
"glepnir/galaxyline.nvim",
config = function()
- require "lv-galaxyline"
+ require "core.galaxyline"
end,
- -- event = "VimEnter",
+ event = "BufWinEnter",
+ disable = not O.plugin.galaxyline.active,
}
use {
"romgrk/barbar.nvim",
config = function()
- require "lv-barbar"
+ require "core.bufferline"
end,
event = "BufWinEnter",
}
- -- Builtins, these do not load by default
-
- -- Dashboard
- use {
- "ChristianChiarulli/dashboard-nvim",
- event = "BufWinEnter",
- -- cmd = { "Dashboard", "DashboardNewFile", "DashboardJumpMarks" },
- -- config = function()
- -- require("lv-dashboard").config()
- -- end,
- disable = not O.plugin.dashboard.active,
- -- opt = true,
- }
- -- Zen Mode
- use {
- "folke/zen-mode.nvim",
- cmd = "ZenMode",
- -- event = "BufRead",
- config = function()
- require("lv-zen").config()
- end,
- disable = not O.plugin.zen.active,
- }
-
+ -- Debugging
use {
- "norcalli/nvim-colorizer.lua",
- event = "BufWinEnter",
+ "mfussenegger/nvim-dap",
+ -- event = "BufWinEnter",
config = function()
- require "lv-colorizer"
- -- vim.cmd "ColorizerReloadAllBuffers"
+ require("core.dap").setup()
end,
- disable = not O.plugin.colorizer.active,
+ disable = not O.plugin.dap.active,
}
- -- Treesitter playground
- use {
- "nvim-treesitter/playground",
- event = "BufRead",
- disable = not O.plugin.ts_playground.active,
- }
-
- use {
- "lukas-reineke/indent-blankline.nvim",
- event = "BufRead",
- setup = function()
- vim.g.indentLine_enabled = 1
- vim.g.indent_blankline_char = "▏"
-
- vim.g.indent_blankline_filetype_exclude = {
- "help",
- "terminal",
- "dashboard",
- }
- vim.g.indent_blankline_buftype_exclude = { "terminal" }
-
- vim.g.indent_blankline_show_trailing_blankline_indent = false
- vim.g.indent_blankline_show_first_indent_level = true
- end,
- disable = not O.plugin.indent_line.active,
- }
-
- -- comments in context
+ -- Debugger management
use {
- "JoosepAlviste/nvim-ts-context-commentstring",
- event = "BufRead",
- disable = not O.plugin.ts_context_commentstring.active,
+ "Pocco81/DAPInstall.nvim",
+ -- event = "BufWinEnter",
+ -- event = "BufRead",
+ disable = not O.plugin.dap.active,
}
- -- Symbol Outline
- use {
- "simrat39/symbols-outline.nvim",
- cmd = "SymbolsOutline",
- disable = not O.plugin.symbol_outline.active,
- }
- -- diagnostics
- use {
- "folke/trouble.nvim",
- cmd = "TroubleToggle",
- disable = not O.plugin.trouble.active,
- }
+ -- Builtins, these do not load by default
- -- Debugging
+ -- Dashboard
use {
- "mfussenegger/nvim-dap",
+ "ChristianChiarulli/dashboard-nvim",
+ event = "BufWinEnter",
config = function()
- require "lv-dap"
+ require("core.dashboard").setup()
end,
- disable = not O.plugin.debug.active,
+ disable = not O.plugin.dashboard.active,
}
+ -- TODO: remove in favor of akinsho/nvim-toggleterm.lua
-- Floating terminal
use {
"numToStr/FTerm.nvim",
event = "BufWinEnter",
config = function()
- require("lv-floatterm").config()
+ require("core.floatterm").setup()
end,
disable = not O.plugin.floatterm.active,
}
- -- Use fzy for telescope
- use {
- "nvim-telescope/telescope-fzy-native.nvim",
- event = "BufRead",
- disable = not O.plugin.telescope_fzy.active,
- }
-
- -- Use project for telescope
+ -- Zen Mode
use {
- "nvim-telescope/telescope-project.nvim",
+ "folke/zen-mode.nvim",
+ cmd = "ZenMode",
event = "BufRead",
- setup = function()
- vim.cmd [[packadd telescope.nvim]]
+ config = function()
+ require("core.zen").setup()
end,
- disable = not O.plugin.telescope_project.active,
- }
-
- -- Sane gx for netrw_gx bug
- use {
- "felipec/vim-sanegx",
- event = "BufRead",
- disable = not O.plugin.sanegx.active,
- }
-
- -- Diffview
- use {
- "sindrets/diffview.nvim",
- event = "BufRead",
- disable = not O.plugin.diffview.active,
- }
-
- -- Lush Create Color Schemes
- use {
- "rktjmp/lush.nvim",
- -- cmd = {"LushRunQuickstart", "LushRunTutorial", "Lushify"},
- disable = not O.plugin.lush.active,
+ disable = not O.plugin.zen.active,
}
- -- Debugger management
- use {
- "Pocco81/DAPInstall.nvim",
- -- event = "BufRead",
- disable = not O.plugin.dap_install.active,
- }
+ ---------------------------------------------------------------------------------
-- LANGUAGE SPECIFIC GOES HERE
use {
"lervag/vimtex",
ft = "tex",
- config = function()
- require "lv-vimtex"
- end,
}
-- Rust tools
@@ -316,56 +243,11 @@ return require("packer").startup(function(use)
use {
"mfussenegger/nvim-jdtls",
+ -- ft = { "java" },
disable = not O.lang.java.java_tools.active,
}
- -- use {
- -- "jose-elias-alvarez/null-ls.nvim",
- -- ft = {
- -- "javascript",
- -- "javascriptreact",
- -- "javascript.jsx",
- -- "typescript",
- -- "typescriptreact",
- -- "typescript.tsx",
- -- },
- -- config = function()
- -- require("null-ls").setup()
- -- end,
- -- }
-
- -- Pretty parentheses
- use {
- "p00f/nvim-ts-rainbow",
- disable = not O.plugin.ts_rainbow.active,
- }
-
- -- Autotags <div>|</div>
- use {
- "windwp/nvim-ts-autotag",
- event = "InsertEnter",
- disable = not O.plugin.ts_autotag.active,
- }
-
- -- Custom semantic text objects
- use {
- "nvim-treesitter/nvim-treesitter-textobjects",
- disable = not O.plugin.ts_textobjects.active,
- }
-
- -- Smart text objects
- use {
- "RRethy/nvim-treesitter-textsubjects",
- disable = not O.plugin.ts_textsubjects.active,
- }
-
- -- Text objects using hint labels
- use {
- "mfussenegger/nvim-ts-hint-textobject",
- event = "BufRead",
- disable = not O.plugin.ts_hintobjects.active,
- }
-
+ -- Install user plugins
for _, plugin in pairs(O.user_plugins) do
packer.use(plugin)
end
diff --git a/lua/settings.lua b/lua/settings.lua
index cce8d87e..e4ee9e24 100644
--- a/lua/settings.lua
+++ b/lua/settings.lua
@@ -9,52 +9,52 @@ cmd "filetype plugin on"
cmd('let &titleold="' .. TERMINAL .. '"')
cmd "set inccommand=split"
cmd "set iskeyword+=-"
-cmd "set whichwrap+=<,>,[,],h,l"
+
+if O.line_wrap_cursor_movement then
+ cmd "set whichwrap+=<,>,[,],h,l"
+end
+
if O.transparent_window then
cmd "au ColorScheme * hi Normal ctermbg=none guibg=none"
cmd "au ColorScheme * hi SignColumn ctermbg=none guibg=none"
+ cmd "let &fcs='eob: '"
end
--- SETTINGS ---
-opt.backup = false -- creates a backup file
-opt.clipboard = O.clipboard -- allows neovim to access the system clipboard
-opt.cmdheight = O.cmdheight -- more space in the neovim command line for displaying messages
-opt.colorcolumn = O.colorcolumn
-opt.completeopt = { "menuone", "noselect" }
-opt.conceallevel = 0 -- so that `` is visible in markdown files
-opt.fileencoding = "utf-8" -- the encoding written to a file
-opt.guifont = "monospace:h17" -- the font used in graphical neovim applications
-opt.hidden = O.hidden_files -- required to keep multiple buffers and open multiple buffers
-opt.hlsearch = O.hl_search -- highlight all matches on previous search pattern
-opt.ignorecase = O.ignore_case -- ignore case in search patterns
-opt.mouse = "a" -- allow the mouse to be used in neovim
-opt.pumheight = 10 -- pop up menu height
-opt.scrolloff = O.scrolloff -- minimal number of screen lines to keep above and below the cursor
-opt.showmode = false -- we don't need to see things like -- INSERT -- anymore
-opt.showtabline = 2 -- always show tabs
-opt.smartcase = O.smart_case -- smart case
-opt.smartindent = true -- make indenting smarter again
-opt.splitbelow = true -- force all horizontal splits to go below current window
-opt.splitright = true -- force all vertical splits to go to the right of current window
-opt.swapfile = false -- creates a swapfile
-opt.termguicolors = true -- set term gui colors (most terminals support this)
-opt.timeoutlen = O.timeoutlen -- time to wait for a mapped sequence to complete (in milliseconds)
-opt.title = true -- set the title of window to the value of the titlestring
--- opt.titlestring = "%<%F%=%l/%L - nvim" -- what the title of the window will be set to
-opt.undodir = CACHE_PATH .. "/undo" -- set an undo directory
-opt.undofile = true -- enable persisten undo
-opt.updatetime = 300 -- faster completion
-opt.writebackup = false -- if a file is being edited by another program (or was written to file while editing with another program), it is not allowed to be edited
-opt.expandtab = true -- convert tabs to spaces
-opt.shiftwidth = O.shift_width -- the number of spaces inserted for each indentation
opt.shortmess:append "c"
-opt.tabstop = O.tab_stop -- insert 4 spaces for a tab
-opt.cursorline = O.cursorline -- highlight the current line
-opt.number = O.number -- set numbered lines
-opt.relativenumber = O.relative_number -- set relative numbered lines
-opt.numberwidth = O.number_width -- set number column width to 2 {default 4}
-opt.signcolumn = "yes" -- always show the sign column, otherwise it would shift the text each time
-opt.wrap = O.wrap_lines -- display lines as one long line
-opt.spell = O.spell
-opt.spelllang = O.spelllang
+
+local disabled_built_ins = {
+ "netrw",
+ "netrwPlugin",
+ "netrwSettings",
+ "netrwFileHandlers",
+ "gzip",
+ "zip",
+ "zipPlugin",
+ "tar",
+ "tarPlugin", -- 'man',
+ "getscript",
+ "getscriptPlugin",
+ "vimball",
+ "vimballPlugin",
+ "2html_plugin",
+ "logipat",
+ "rrhelper",
+ "spellfile_plugin",
+ -- 'matchit', 'matchparen', 'shada_plugin',
+}
+
+if O.leader_key == " " or O.leader_key == "space" then
+ vim.g.mapleader = ' '
+else
+ vim.g.mapleader = O.leader_key
+end
+
+for _, plugin in pairs(disabled_built_ins) do
+ vim.g["loaded_" .. plugin] = 1
+end
+
+for k, v in pairs(O.default_options) do
+ vim.opt[k] = v
+end
diff --git a/lua/spacegray/Git.lua b/lua/spacegray/Git.lua
new file mode 100644
index 00000000..f1a2ed39
--- /dev/null
+++ b/lua/spacegray/Git.lua
@@ -0,0 +1,10 @@
+local Git = {
+ SignAdd = {fg = C.sign_add, },
+ SignChange = {fg = C.sign_change, },
+ SignDelete = {fg = C.sign_delete, },
+ GitSignsAdd = {fg = C.sign_add, },
+ GitSignsChange = {fg = C.sign_change, },
+ GitSignsDelete = {fg = C.sign_delete, },
+}
+
+return Git \ No newline at end of file
diff --git a/lua/spacegray/LSP.lua b/lua/spacegray/LSP.lua
new file mode 100644
index 00000000..eb674175
--- /dev/null
+++ b/lua/spacegray/LSP.lua
@@ -0,0 +1,92 @@
+local LSP = {
+ LspDiagnosticsDefaultError = {fg = C.error_red, },
+ LspDiagnosticsDefaultWarning = {fg = C.warning_orange, },
+ LspDiagnosticsDefaultInformation = {fg = C.info_yellow, },
+ LspDiagnosticsDefaultHint = {fg = C.hint_blue, },
+ LspDiagnosticsVirtualTextError = {fg = C.error_red, },
+ LspDiagnosticsVirtualTextWarning = {fg = C.warning_orange, },
+ LspDiagnosticsVirtualTextInformation = {fg = C.info_yellow, },
+ LspDiagnosticsVirtualTextHint = {fg = C.hint_blue, },
+ LspDiagnosticsFloatingError = {fg = C.error_red, },
+ LspDiagnosticsFloatingWarning = {fg = C.warning_orange, },
+ LspDiagnosticsFloatingInformation = {fg = C.info_yellow, },
+ LspDiagnosticsFloatingHint = {fg = C.hint_blue, },
+ LspDiagnosticsSignError = {fg = C.error_red, },
+ LspDiagnosticsSignWarning = {fg = C.warning_orange, },
+ LspDiagnosticsSignInformation = {fg = C.info_yellow, },
+ LspDiagnosticsSignHint = {fg = C.hint_blue, },
+ LspDiagnosticsError = {fg = C.error_red, },
+ LspDiagnosticsWarning = {fg = C.warning_orange, },
+ LspDiagnosticsInformation = {fg = C.info_yellow, },
+ LspDiagnosticsHint = {fg = C.hint_blue, },
+ LspDiagnosticsUnderlineError = {fg = C.error_red, },
+ LspDiagnosticsUnderlineWarning = {fg = C.warning_orange, },
+ LspDiagnosticsUnderlineInformation = {fg = C.info_yellow, },
+ LspDiagnosticsUnderlineHint = {fg = C.hint_blue, },
+ QuickScopePrimary = {fg = C.cyan_test, style = "underline", },
+ QuickScopeSecondary = {fg = C.purple_test, style = "underline", },
+ TelescopeSelection = {fg = C.hint_blue, },
+ TelescopeMatching = {fg = C.info_yellow, style = "bold", },
+ TelescopeBorder = {fg = C.cyan, bg = C.bg, },
+ NvimTreeFolderIcon = {fg = C.blue, },
+ NvimTreeIndentMarker = {fg = C.gray, },
+ NvimTreeNormal = {fg = C.light_gray, bg = C.alt_bg, },
+ NvimTreeVertSplit = {fg = C.alt_bg, bg = C.alt_bg, },
+ NvimTreeFolderName = {fg = C.blue, },
+ NvimTreeOpenedFolderName = {fg = C.cyan, style = "italic", },
+ NvimTreeImageFile = {fg = C.purple, },
+ NvimTreeSpecialFile = {fg = C.orange, },
+ NvimTreeGitStaged = {fg = C.sign_add, },
+ NvimTreeGitNew = {fg = C.sign_add, },
+ NvimTreeGitDirty = {fg = C.sign_add, },
+ NvimTreeGitDeleted = {fg = C.sign_delete, },
+ NvimTreeGitMerge = {fg = C.sign_change, },
+ NvimTreeGitRenamed = {fg = C.sign_change, },
+ NvimTreeSymlink = {fg = C.cyan, },
+ NvimTreeRootFolder = {fg = C.fg, style = "bold", },
+ NvimTreeExecFile = {fg = C.green, },
+ BufferCurrent = {fg = C.fg, bg = C.bg, },
+ BufferCurrentIndex = {fg = C.fg, bg = C.bg, },
+ BufferCurrentMod = {fg = C.info_yellow, bg = C.bg, },
+ BufferCurrentSign = {fg = C.hint_blue, bg = C.bg, },
+ BufferCurrentTarget = {fg = C.red, bg = C.bg, style = "bold", },
+ BufferVisible = {fg = C.fg, bg = C.bg, },
+ BufferVisibleIndex = {fg = C.fg, bg = C.bg, },
+ BufferVisibleMod = {fg = C.info_yellow, bg = C.bg, },
+ BufferVisibleSign = {fg = C.hint_blue, bg = C.bg, },
+ BufferVisibleTarget = {fg = C.red, bg = C.bg, style = "bold", },
+ BufferInactive = {fg = C.gray, bg = C.alt_bg, },
+ BufferInactiveIndex = {fg = C.gray, bg = C.alt_bg, },
+ BufferInactiveMod = {fg = C.info_yellow, bg = C.alt_bg, },
+ BufferInactiveSign = {fg = C.gray, bg = C.alt_bg, },
+ BufferInactiveTarget = {fg = C.red, bg = C.alt_bg, style = "bold", },
+ StatusLine = {fg = C.alt_bg, },
+ StatusLineNC = {fg = C.alt_bg, },
+ StatusLineSeparator = {fg = C.alt_bg, },
+ StatusLineTerm = {fg = C.alt_bg, },
+ StatusLineTermNC = {fg = C.alt_bg, },
+ CodiVirtualText = {fg = C.pale_purple, },
+ IndentBlanklineContextChar = {fg = C.accent, },
+ DashboardHeader = {fg = C.blue, },
+ DashboardCenter = {fg = C.purple, },
+ DashboardFooter = {fg = C.cyan, },
+ CompeDocumentation = {bg = C.alt_bg, },
+ DiffViewNormal = {fg = C.gray, bg = C.alt_bg, },
+ DiffviewStatusAdded = {fg = C.sign_add, },
+ DiffviewStatusModified = {fg = C.sign_change, },
+ DiffviewStatusRenamed = {fg = C.sign_change, },
+ DiffviewStatusDeleted = {fg = C.sign_delete, },
+ DiffviewFilePanelInsertion = {fg = C.sign_add, },
+ DiffviewFilePanelDeletion = {fg = C.sign_delete, },
+ DiffviewVertSplit = {bg = C.bg, },
+ diffAdded = {fg = C.sign_add, },
+ diffRemoved = {fg = C.sign_delete, },
+ diffFileId = {fg = C.blue, style = "bold,reverse", },
+ diffFile = {fg = C.alt_bg, },
+ diffNewFile = {fg = C.green, },
+ diffOldFile = {fg = C.red, },
+ debugPc = {bg = C.cyan, },
+ debugBreakpoint = {fg = C.red, style = "reverse", },
+}
+
+return LSP \ No newline at end of file
diff --git a/lua/spacegray/Treesitter.lua b/lua/spacegray/Treesitter.lua
new file mode 100644
index 00000000..95348406
--- /dev/null
+++ b/lua/spacegray/Treesitter.lua
@@ -0,0 +1,56 @@
+local Treesitter = {
+ TSComment = {fg = C.gray, },
+ TSAnnotation = {fg = C.purple, },
+ TSAttribute = {fg = C.cyan, },
+ TSConstructor = {fg = C.purple, },
+ TSType = {fg = C.purple, },
+ TSTypeBuiltin = {fg = C.purple, },
+ TSConditional = {fg = C.blue, },
+ TSException = {fg = C.blue, },
+ TSInclude = {fg = C.blue, },
+ TSKeyword = {fg = C.blue, },
+ TSKeywordFunction = {fg = C.blue, },
+ TSLabel = {fg = C.blue, },
+ TSNamespace = {fg = C.blue, },
+ TSRepeat = {fg = C.blue, },
+ TSConstant = {fg = C.orange, },
+ TSConstBuiltin = {fg = C.orange, },
+ TSFloat = {fg = C.red, },
+ TSNumber = {fg = C.red, },
+ TSBoolean = {fg = C.red, },
+ TSCharacter = {fg = C.light_green, },
+ TSError = {fg = C.error_red, },
+ TSFunction = {fg = C.yellow, },
+ TSFuncBuiltin = {fg = C.yellow, },
+ TSMethod = {fg = C.yellow, },
+ TSConstMacro = {fg = C.cyan, },
+ TSFuncMacro = {fg = C.cyan, },
+ TSVariable = {fg = C.white, },
+ TSVariableBuiltin = {fg = C.cyan, },
+ TSProperty = {fg = C.cyan, },
+ TSOperator = {fg = C.gray_blue, },
+ TSField = {fg = C.white, },
+ TSParameter = {fg = C.white, },
+ TSParameterReference = {fg = C.white, },
+ TSSymbol = {fg = C.white, },
+ TSText = {fg = C.fg, },
+ TSPunctDelimiter = {fg = C.gray, },
+ TSTagDelimiter = {fg = C.gray, },
+ TSPunctBracket = {fg = C.gray, },
+ TSPunctSpecial = {fg = C.gray, },
+ TSString = {fg = C.green, },
+ TSStringRegex = {fg = C.light_green, },
+ TSStringEscape = {fg = C.light_green, },
+ TSTag = {fg = C.blue, },
+ TSEmphasis = {style = "italic", },
+ TSUnderline = {style = "underline", },
+ TSTitle = {fg = C.blue, style = "bold", },
+ TSLiteral = {fg = C.green, },
+ TSURI = {fg = C.cyan, style = "underline", },
+ TSKeywordOperator = {fg = C.blue, },
+ TSStructure = {fg = C.purple_test, },
+ TSStrong = {fg = C.yellow, },
+ TSQueryLinterError = {fg = C.warning_orange, },
+}
+
+return Treesitter \ No newline at end of file
diff --git a/lua/spacegray/Whichkey.lua b/lua/spacegray/Whichkey.lua
new file mode 100644
index 00000000..2c02f11b
--- /dev/null
+++ b/lua/spacegray/Whichkey.lua
@@ -0,0 +1,9 @@
+local Whichkey = {
+ WhichKey = {fg = C.purple, },
+ WhichKeySeperator = {fg = C.green, },
+ WhichKeyGroup = {fg = C.blue, },
+ WhichKeyDesc = {fg = C.cyan, },
+ WhichKeyFloat = {bg = C.alt_bg, },
+}
+
+return Whichkey \ No newline at end of file
diff --git a/lua/spacegray/config.lua b/lua/spacegray/config.lua
new file mode 100644
index 00000000..f9c10951
--- /dev/null
+++ b/lua/spacegray/config.lua
@@ -0,0 +1,23 @@
+local config
+
+vim = vim or { g = {}, o = {} }
+
+local function opt(key, default)
+ if vim.g[key] == nil then
+ return default
+ end
+ if vim.g[key] == 0 then
+ return false
+ end
+ return vim.g[key]
+end
+
+config = {
+ transparent_background = opt("transparent_background", false),
+ italic_comments = opt("italic_keywords", true) and "italic" or "NONE",
+ italic_keywords = opt("italic_keywords", true) and "italic" or "NONE",
+ italic_functions = opt("italic_function", false) and "italic" or "NONE",
+ italic_variables = opt("italic_variables", true) and "italic" or "NONE",
+}
+
+return config \ No newline at end of file
diff --git a/lua/spacegray/highlights.lua b/lua/spacegray/highlights.lua
new file mode 100644
index 00000000..9a20b46d
--- /dev/null
+++ b/lua/spacegray/highlights.lua
@@ -0,0 +1,99 @@
+local highlights = {
+ Normal = {fg = C.fg, bg = Config.transparent_background and "NONE" or C.bg, },
+ SignColumn = {bg = C.bg, },
+ MsgArea = {fg = C.fg, bg = C.bg, },
+ ModeMsg = {fg = C.fg, bg = C.bg, },
+ MsgSeparator = {fg = C.fg, bg = C.bg, },
+ SpellBad = {fg = C.error_red, style = "underline", },
+ SpellCap = {fg = C.yellow, style = "underline", },
+ SpellLocal = {fg = C.green, style = "underline", },
+ SpellRare = {fg = C.purple, style = "underline", },
+ NormalNC = {fg = C.fg, bg = C.bg, },
+ Pmenu = {fg = C.white, bg = C.accent, },
+ PmenuSel = {fg = C.alt_bg, bg = C.blue, },
+ WildMenu = {fg = C.alt_bg, bg = C.blue, },
+ CursorLineNr = {fg = C.light_gray, style = "bold", },
+ Comment = {fg = C.gray, style = "italic", },
+ Folded = {fg = C.accent, bg = C.alt_bg, },
+ FoldColumn = {fg = C.accent, bg = C.alt_bg, },
+ LineNr = {fg = C.gray, },
+ FloatBoder = {fg = C.gray, bg = C.alt_bg, },
+ Whitespace = {fg = C.gray, },
+ VertSplit = {fg = C.bg, bg = C.accent, },
+ CursorLine = {bg = C.alt_bg, },
+ CursorColumn = {bg = C.alt_bg, },
+ ColorColumn = {bg = C.alt_bg, },
+ NormalFloat = {bg = C.alt_bg, },
+ Visual = {bg = C.alt_bg, },
+ VisualNOS = {bg = C.alt_bg, },
+ WarningMsg = {fg = C.error_red, bg = C.bg, },
+ DiffAdd = {fg = C.alt_bg, bg = C.sign_add, },
+ DiffChange = {fg = C.alt_bg, bg = C.sign_change, style = "underline", },
+ DiffDelete = {fg = C.alt_bg, bg = C.sign_delete, },
+ QuickFixLine = {bg = C.accent, },
+ PmenuSbar = {bg = C.alt_bg, },
+ PmenuThumb = {bg = C.white, },
+ MatchWord = {style = "underline", },
+ MatchParen = {fg = C.pale_purple, bg = C.bg, style = "underline", },
+ MatchWordCur = {style = "underline", },
+ MatchParenCur = {style = "underline", },
+ Cursor = {fg = C.cursor_fg, bg = C.cursor_bg, },
+ lCursor = {fg = C.cursor_fg, bg = C.cursor_bg, },
+ CursorIM = {fg = C.cursor_fg, bg = C.cursor_bg, },
+ TermCursor = {fg = C.cursor_fg, bg = C.cursor_bg, },
+ TermCursorNC = {fg = C.cursor_fg, bg = C.cursor_bg, },
+ Conceal = {fg = C.accent, },
+ Directory = {fg = C.blue, },
+ SpecialKey = {fg = C.blue, style = "bold", },
+ Title = {fg = C.blue, style = "bold", },
+ ErrorMsg = {fg = C.error_red, bg = C.bg, style = "bold", },
+ Search = {fg = C.hint_blue, bg = C.alt_bg, },
+ IncSearch = {fg = C.hint_blue, bg = C.alt_bg, },
+ Substitute = {fg = C.alt_bg, bg = C.gray_blue, },
+ MoreMsg = {fg = C.cyan, },
+ Question = {fg = C.cyan, },
+ EndOfBuffer = {fg = C.bg, },
+ NonText = {fg = C.bg, },
+ Variable = {fg = C.white, },
+ String = {fg = C.green, },
+ Character = {fg = C.light_green, },
+ Constant = {fg = C.orange, },
+ Number = {fg = C.red, },
+ Boolean = {fg = C.red, },
+ Float = {fg = C.red, },
+ Identifier = {fg = C.white, },
+ Function = {fg = C.yellow, },
+ Operator = {fg = C.gray_blue, },
+ Type = {fg = C.purple, },
+ StorageClass = {fg = C.purple, },
+ Structure = {fg = C.purple, },
+ Typedef = {fg = C.purple, },
+ Keyword = {fg = C.blue, },
+ Statement = {fg = C.blue, },
+ Conditional = {fg = C.blue, },
+ Repeat = {fg = C.blue, },
+ Label = {fg = C.blue, },
+ Exception = {fg = C.blue, },
+ Include = {fg = C.blue, },
+ PreProc = {fg = C.cyan, },
+ Define = {fg = C.cyan, },
+ Macro = {fg = C.cyan, },
+ PreCondit = {fg = C.cyan, },
+ Special = {fg = C.orange, },
+ SpecialChar = {fg = C.orange, },
+ Tag = {fg = C.blue, },
+ Debug = {fg = C.red, },
+ Delimiter = {fg = C.gray, },
+ SpecialComment = {fg = C.gray, },
+ Underlined = {style = "underline", },
+ Bold = {style = "bold", },
+ Italic = {style = "italic", },
+ Ignore = {fg = C.cyan, bg = C.bg, style = "bold", },
+ Todo = {fg = C.red, bg = C.bg, style = "bold", },
+ Error = {fg = C.error_red, bg = C.bg, style = "bold", },
+ TabLine = {fg = C.white, bg = C.alt_bg, },
+ TabLineSel = {fg = C.white, bg = C.alt_bg, },
+ TabLineFill = {fg = C.white, bg = C.alt_bg, },
+}
+
+return highlights \ No newline at end of file
diff --git a/lua/spacegray/init.lua b/lua/spacegray/init.lua
new file mode 100644
index 00000000..0a8e748e
--- /dev/null
+++ b/lua/spacegray/init.lua
@@ -0,0 +1,26 @@
+vim.api.nvim_command("hi clear")
+if vim.fn.exists("syntax_on") then
+ vim.api.nvim_command("syntax reset")
+end
+vim.o.background = "dark"
+vim.o.termguicolors = true
+vim.g.colors_name = "spacegray"
+
+local util = require("spacegray.util")
+Config = require("spacegray.config")
+C = require("spacegray.palette")
+local highlights = require("spacegray.highlights")
+local Treesitter = require("spacegray.Treesitter")
+local markdown = require("spacegray.markdown")
+local Whichkey = require("spacegray.Whichkey")
+local Git = require("spacegray.Git")
+local LSP = require("spacegray.LSP")
+
+
+local skeletons = {
+ highlights, Treesitter, markdown, Whichkey, Git, LSP
+}
+
+for _, skeleton in ipairs(skeletons) do
+ util.initialise(skeleton)
+end \ No newline at end of file
diff --git a/lua/spacegray/markdown.lua b/lua/spacegray/markdown.lua
new file mode 100644
index 00000000..19863dc8
--- /dev/null
+++ b/lua/spacegray/markdown.lua
@@ -0,0 +1,27 @@
+local markdown = {
+ markdownBlockquote = {fg = C.accent, },
+ markdownBold = {fg = C.yellow, style = "bold", },
+ markdownCode = {fg = C.green, },
+ markdownCodeBlock = {fg = C.green, },
+ markdownCodeDelimiter = {fg = C.green, },
+ markdownH1 = {fg = C.blue, },
+ markdownH2 = {fg = C.blue, },
+ markdownH3 = {fg = C.blue, },
+ markdownH4 = {fg = C.blue, },
+ markdownH5 = {fg = C.blue, },
+ markdownH6 = {fg = C.blue, },
+ markdownHeadingDelimiter = {fg = C.red, },
+ markdownHeadingRule = {fg = C.accent, },
+ markdownId = {fg = C.purple, },
+ markdownIdDeclaration = {fg = C.blue, },
+ markdownIdDelimiter = {fg = C.light_gray, },
+ markdownLinkDelimiter = {fg = C.light_gray, },
+ markdownItalic = {style = "italic", },
+ markdownLinkText = {fg = C.blue, },
+ markdownListMarker = {fg = C.red, },
+ markdownOrderedListMarker = {fg = C.red, },
+ markdownRule = {fg = C.accent, },
+ markdownUrl = {fg = C.cyan, style = "underline", },
+}
+
+return markdown \ No newline at end of file
diff --git a/lua/spacegray/palette.lua b/lua/spacegray/palette.lua
new file mode 100644
index 00000000..49e429e5
--- /dev/null
+++ b/lua/spacegray/palette.lua
@@ -0,0 +1,33 @@
+local colors = {
+ fg = "#c8c9d1",
+ bg = "#212121",
+ alt_bg = "#2a2a2a",
+ accent = "#383d45",
+ white = "#c8c9d1",
+ gray = "#858585",
+ light_gray = "#c8c9c1",
+ blue = "#5486c0",
+ gray_blue = "#66899d",
+ cyan = "#65a7c5",
+ red = "#b04b57",
+ green = "#87b379",
+ light_green = "#b2d77c",
+ yellow = "#eeba5a",
+ orange = "#c6735a",
+ purple = "#bf83c1",
+ pale_purple = "#7199ee",
+ magenta = "#D16D9E",
+ cursor_fg = "#515052",
+ cursor_bg = "#AEAFAD",
+ sign_add = "#587c0c",
+ sign_change = "#0c7d9d",
+ sign_delete = "#94151b",
+ error_red = "#F44747",
+ warning_orange = "#ff8800",
+ info_yellow = "#FFCC66",
+ hint_blue = "#4FC1FF",
+ purple_test = "#ff00ff",
+ cyan_test = "#00ffff",
+}
+
+return colors
diff --git a/lua/spacegray/util.lua b/lua/spacegray/util.lua
new file mode 100644
index 00000000..1cc5a009
--- /dev/null
+++ b/lua/spacegray/util.lua
@@ -0,0 +1,22 @@
+local M = {}
+
+local function highlight(group, properties)
+ local bg = properties.bg == nil and "" or "guibg=" .. properties.bg
+ local fg = properties.fg == nil and "" or "guifg=" .. properties.fg
+ local style = properties.style == nil and "" or "gui=" .. properties.style
+
+ local cmd = table.concat({
+ "highlight", group, bg, fg, style
+ }, " ")
+
+ vim.api.nvim_command(cmd)
+end
+
+
+function M.initialise(skeleton)
+ for group, properties in pairs(skeleton) do
+ highlight(group, properties)
+ end
+end
+
+return M \ No newline at end of file