summaryrefslogtreecommitdiff
path: root/.config
diff options
context:
space:
mode:
Diffstat (limited to '.config')
-rw-r--r--.config/nvim/README.md35
-rw-r--r--.config/nvim/config.lua8
-rw-r--r--.config/nvim/init.lua33
-rw-r--r--.config/nvim/lua/config/defaults.lua (renamed from .config/nvim/lua/default-config.lua)280
-rw-r--r--.config/nvim/lua/config/init.lua36
-rw-r--r--.config/nvim/lua/config/settings.lua (renamed from .config/nvim/lua/settings.lua)4
-rw-r--r--.config/nvim/lua/core/autocmds.lua3
-rw-r--r--.config/nvim/lua/core/autopairs.lua98
-rw-r--r--.config/nvim/lua/core/bufferline.lua5
-rw-r--r--.config/nvim/lua/core/builtins/init.lua29
-rw-r--r--.config/nvim/lua/core/commands.lua1
-rw-r--r--.config/nvim/lua/core/comment.lua31
-rw-r--r--.config/nvim/lua/core/compe.lua29
-rw-r--r--.config/nvim/lua/core/dap.lua30
-rw-r--r--.config/nvim/lua/core/dashboard.lua39
-rw-r--r--.config/nvim/lua/core/galaxyline.lua311
-rw-r--r--.config/nvim/lua/core/gitsigns.lua1
-rw-r--r--.config/nvim/lua/core/log.lua8
-rw-r--r--.config/nvim/lua/core/lspinstall.lua19
-rw-r--r--.config/nvim/lua/core/lualine/colors.lua19
-rw-r--r--.config/nvim/lua/core/lualine/components.lua180
-rw-r--r--.config/nvim/lua/core/lualine/conditions.lua17
-rw-r--r--.config/nvim/lua/core/lualine/init.lua47
-rw-r--r--.config/nvim/lua/core/lualine/styles.lua186
-rw-r--r--.config/nvim/lua/core/lualine/utils.lua27
-rw-r--r--.config/nvim/lua/core/nvimtree.lua95
-rw-r--r--.config/nvim/lua/core/project.lua51
-rw-r--r--.config/nvim/lua/core/status_colors.lua19
-rw-r--r--.config/nvim/lua/core/telescope.lua32
-rw-r--r--.config/nvim/lua/core/terminal.lua24
-rw-r--r--.config/nvim/lua/core/treesitter.lua7
-rw-r--r--.config/nvim/lua/core/which-key.lua59
-rw-r--r--.config/nvim/lua/dark/highlights.lua6
-rw-r--r--.config/nvim/lua/interface/popup.lua62
-rw-r--r--.config/nvim/lua/interface/text.lua79
-rw-r--r--.config/nvim/lua/keymappings.lua23
-rw-r--r--.config/nvim/lua/lsp/init.lua43
-rw-r--r--.config/nvim/lua/lsp/null-ls/formatters.lua2
-rw-r--r--.config/nvim/lua/lsp/null-ls/linters.lua2
-rw-r--r--.config/nvim/lua/lsp/null-ls/services.lua24
-rw-r--r--.config/nvim/lua/lsp/utils.lua3
-rw-r--r--.config/nvim/lua/plugins.lua113
-rw-r--r--.config/nvim/lua/utils/init.lua13
43 files changed, 1198 insertions, 935 deletions
diff --git a/.config/nvim/README.md b/.config/nvim/README.md
index 91bb34c..3269ca0 100644
--- a/.config/nvim/README.md
+++ b/.config/nvim/README.md
@@ -2,36 +2,5 @@
Most of my config is stolen from https://github.com/ChristianChiarulli/LunarVim
-## Requirements
-Must have neovim >= 0.5
-
-### Programs
-
-```
-ripgrep
-pynvim
-neovim-remote
-```
-
-### EFM server
-Need to install `efm-langserver` for linters and formatters to work.
-
-```
-:LspInstall efm
-
-```
-
-### Formatters and Linters
-*Python*
-```
-black
-flake8
-```
-
-*Lua*
-`luarocks install --server=https://luarocks.org/dev luaformatter`
-
-
-
-TODO:
-- Fix null-ls an all that jazz
+TODO
+ - [ ] compe to cmp
diff --git a/.config/nvim/config.lua b/.config/nvim/config.lua
index 3ecb64f..c0e572a 100644
--- a/.config/nvim/config.lua
+++ b/.config/nvim/config.lua
@@ -13,11 +13,15 @@ options.lsp.diagnostics.virtual_text = false
require("extra.json_schemas").setup()
-- After changing plugin config it is recommended to run :PackerCompile
+options.builtin.compe.active = true
+options.builtin.autopairs.active = false
options.builtin.dashboard.active = true
options.builtin.terminal.active = true
-options.builtin.rooter.active = true
-options.builtin.bufferline.active = false
+options.builtin.telescope.active = true
+options.builtin.bufferline.active = true
options.builtin.nvimtree.active = true
+options.builtin.lualine.active = true
+options.builtin.lualine.style = "clean"
-- Whichkey
options.builtin.which_key.mappings.l.d = { "<cmd>TroubleToggle<cr>", "Diagnostics" }
diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua
index 7c96238..ff6c632 100644
--- a/.config/nvim/init.lua
+++ b/.config/nvim/init.lua
@@ -1,31 +1,12 @@
-local function file_exists(name)
- local f = io.open(name, "r")
- if f ~= nil then
- io.close(f)
- return true
- else
- return false
- end
-end
+-- TODO: we need something like this: vim.opt.packpath = vim.opt.rtp
+vim.cmd [[let &packpath = &runtimepath]]
+-- }}}
-local nvim_path = os.getenv "HOME" .. "/.config/nvim/"
-USER_CONFIG_PATH = nvim_path .. "config.lua"
-local config_exist = file_exists(USER_CONFIG_PATH)
-if not config_exist then
- USER_CONFIG_PATH = nvim_path .. "config.lua"
- print "Rename ~/.config/nvim/config.lua to config.lua"
-end
+local config = require "config"
+config:init()
+config:load()
-require "default-config"
local autocmds = require "core.autocmds"
-require("settings").load_options()
-
-local status_ok, error = pcall(vim.cmd, "luafile " .. USER_CONFIG_PATH)
-if not status_ok then
- print("something is wrong with your " .. USER_CONFIG_PATH)
- print(error)
-end
-require("settings").load_commands()
autocmds.define_augroups(options.autocommands)
local plugins = require "plugins"
@@ -44,7 +25,7 @@ require("lsp").config()
local null_status_ok, null_ls = pcall(require, "null-ls")
if null_status_ok then
null_ls.config {}
- require("lspconfig")["null-ls"].setup {}
+ require("lspconfig")["null-ls"].setup(options.lsp.null_ls.setup)
end
local lsp_settings_status_ok, lsp_settings = pcall(require, "nlspsettings")
diff --git a/.config/nvim/lua/default-config.lua b/.config/nvim/lua/config/defaults.lua
index 6f396ba..82c08a4 100644
--- a/.config/nvim/lua/default-config.lua
+++ b/.config/nvim/lua/config/defaults.lua
@@ -16,23 +16,7 @@ options = {
keys = {},
-- TODO: might remove later
- builtin = {
- lspinstall = {},
- telescope = {},
- compe = {},
- autopairs = {},
- treesitter = {},
- nvimtree = {},
- gitsigns = {},
- which_key = {},
- comment = {},
- galaxyline = {},
- bufferline = {},
- dap = {},
- dashboard = {},
- terminal = {},
- rooter = {},
- },
+ builtin = {},
log = {
---@usage can be { "trace", "debug", "info", "warn", "error", "fatal" },
@@ -53,31 +37,31 @@ options = {
lsp = {
completion = {
item_kind = {
- "  (Text) ",
- "  (Method)",
- "  (Function)",
- "  (Constructor)",
- " ﴲ (Field)",
- "[] (Variable)",
- "  (Class)",
- " ﰮ (Interface)",
- "  (Module)",
- " 襁 (Property)",
- "  (Unit)",
- "  (Value)",
- " 練 (Enum)",
- "  (Keyword)",
- "  (Snippet)",
- "  (Color)",
- "  (File)",
- "  (Reference)",
- "  (Folder)",
- "  (EnumMember)",
- " ﲀ (Constant)",
- " ﳤ (Struct)",
- "  (Event)",
- "  (Operator)",
- "  (TypeParameter)",
+ "  (text) ",
+ "  (method)",
+ "  (function)",
+ "  (constructor)",
+ " ﴲ (field)",
+ "[] (variable)",
+ "  (class)",
+ " ﰮ (interface)",
+ "  (module)",
+ " 襁 (property)",
+ "  (unit)",
+ "  (value)",
+ " 練 (enum)",
+ "  (keyword)",
+ "  (snippet)",
+ "  (color)",
+ "  (file)",
+ "  (reference)",
+ "  (folder)",
+ "  (enummember)",
+ " ﲀ (constant)",
+ " ﳤ (struct)",
+ "  (event)",
+ "  (operator)",
+ "  (typeparameter)",
},
},
diagnostics = {
@@ -102,8 +86,9 @@ options = {
popup_border = "single",
on_attach_callback = nil,
on_init_callback = nil,
- ---@usage query the project directory from the language server and use it to set the CWD
- smart_cwd = true,
+ null_ls = {
+ setup = {},
+ },
},
plugins = {
@@ -114,10 +99,6 @@ options = {
}
local schemas = nil
-local lsp = require "lsp"
-local common_on_attach = lsp.common_on_attach
-local common_capabilities = lsp.common_capabilities()
-local common_on_init = lsp.common_on_init
local status_ok, jsonls_settings = pcall(require, "nlspsettings.jsonls")
if status_ok then
schemas = jsonls_settings.get_default_schemas()
@@ -150,9 +131,6 @@ options.lang = {
provider = "beancount",
setup = {
cmd = { "beancount-langserver" },
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -179,9 +157,6 @@ options.lang = {
"--clang-tidy",
"--clang-tidy-checks=-*,llvm-*,clang-analyzer-*",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -208,9 +183,6 @@ options.lang = {
"--clang-tidy",
"--clang-tidy-checks=-*,llvm-*,clang-analyzer-*",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -226,9 +198,6 @@ options.lang = {
provider = "crystalline",
setup = {
cmd = { "crystalline" },
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -253,9 +222,6 @@ options.lang = {
"--hostPID",
tostring(vim.fn.getpid()),
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -273,9 +239,6 @@ options.lang = {
cmd = {
DATA_PATH .. "/lspinstall/cmake/venv/bin/cmake-language-server",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -287,11 +250,7 @@ options.lang = {
setup = {
cmd = {
DATA_PATH .. "/lspinstall/clojure/clojure-lsp",
- "--stdio",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -316,9 +275,6 @@ options.lang = {
.. "/lspinstall/css/vscode-css/css-language-features/server/dist/node/cssServerMain.js",
"--stdio",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -343,9 +299,6 @@ options.lang = {
.. "/lspinstall/css/vscode-css/css-language-features/server/dist/node/cssServerMain.js",
"--stdio",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -361,9 +314,6 @@ options.lang = {
provider = "serve_d",
setup = {
cmd = { "serve-d" },
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -383,9 +333,6 @@ options.lang = {
"/usr/lib/dart/bin/snapshots/analysis_server.dart.snapshot",
"--lsp",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -399,9 +346,6 @@ options.lang = {
DATA_PATH .. "/lspinstall/dockerfile/node_modules/.bin/docker-langserver",
"--stdio",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -419,9 +363,6 @@ options.lang = {
cmd = {
DATA_PATH .. "/lspinstall/elixir/elixir-ls/language_server.sh",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -439,8 +380,6 @@ options.lang = {
cmd = {
DATA_PATH .. "/lspinstall/elm/node_modules/.bin/elm-language-server",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
-- init_options = {
-- elmAnalyseTrigger = "change",
-- elmFormatPath = DATA_PATH .. "/lspinstall/elm/node_modules/.bin/elm-format",
@@ -464,9 +403,6 @@ options.lang = {
cmd = {
"erlang_ls",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -481,10 +417,18 @@ options.lang = {
linters = {},
lsp = {
provider = "",
+ setup = {},
+ },
+ },
+ fortran = {
+ formatters = {},
+ linters = {},
+ lsp = {
+ provider = "fortls",
setup = {
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
+ cmd = {
+ DATA_PATH .. "/lspinstall/fortran/venv/bin/fortls",
+ },
},
},
},
@@ -510,9 +454,6 @@ options.lang = {
cmd = {
DATA_PATH .. "/lspinstall/go/gopls",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -528,9 +469,6 @@ options.lang = {
"-m",
"stream",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -541,9 +479,6 @@ options.lang = {
provider = "hls",
setup = {
cmd = { DATA_PATH .. "/lspinstall/haskell/hls" },
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -568,9 +503,6 @@ options.lang = {
.. "/lspinstall/html/vscode-html/html-language-features/server/dist/node/htmlServerMain.js",
"--stdio",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -590,9 +522,6 @@ options.lang = {
provider = "jdtls",
setup = {
cmd = { DATA_PATH .. "/lspinstall/java/jdtls.sh" },
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -621,9 +550,6 @@ options.lang = {
.. "/lspinstall/json/vscode-json/json-language-features/server/dist/node/jsonServerMain.js",
"--stdio",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
settings = {
json = {
schemas = schemas,
@@ -658,9 +584,6 @@ options.lang = {
-- vim.fn.expand "~/.config/nvim/lua/lsp/julia/run.jl",
CONFIG_PATH .. "/utils/julia/run.jl",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -673,8 +596,6 @@ options.lang = {
cmd = {
DATA_PATH .. "/lspinstall/kotlin/server/bin/kotlin-language-server",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
root_dir = function(fname)
local util = require "lspconfig/util"
@@ -715,9 +636,6 @@ options.lang = {
"-E",
DATA_PATH .. "/lspinstall/lua/main.lua",
},
- capabilities = common_capabilities,
- on_attach = common_on_attach,
- on_init = common_on_init,
settings = {
Lua = {
runtime = {
@@ -728,15 +646,15 @@ options.lang = {
},
diagnostics = {
-- Get the language server to recognize the `vim` global
- globals = { "vim", "nvim" },
+ globals = { "vim", "lvim" },
},
workspace = {
-- Make the server aware of Neovim runtime files
- -- library = {
- -- [vim.fn.expand "~/.local/share/lunarvim/options/lua"] = true,
- -- [vim.fn.expand "$VIMRUNTIME/lua"] = true,
- -- [vim.fn.expand "$VIMRUNTIME/lua/vim/lsp"] = true,
- --},
+ library = {
+ [vim.fn.expand "~/.local/share/lunarvim/lvim/lua"] = true,
+ [vim.fn.expand "$VIMRUNTIME/lua"] = true,
+ [vim.fn.expand "$VIMRUNTIME/lua/vim/lsp"] = true,
+ },
maxPreload = 100000,
preloadFileSize = 1000,
},
@@ -801,8 +719,6 @@ options.lang = {
DATA_PATH .. "/lspinstall/php/node_modules/.bin/intelephense",
"--stdio",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
filetypes = { "php", "phtml" },
settings = {
intelephense = {
@@ -824,9 +740,6 @@ options.lang = {
DATA_PATH .. "/lspinstall/puppet/puppet-editor-services/puppet-languageserver",
"--stdio",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -855,9 +768,6 @@ options.lang = {
DATA_PATH .. "/lspinstall/typescript/node_modules/.bin/typescript-language-server",
"--stdio",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -885,9 +795,6 @@ options.lang = {
DATA_PATH .. "/lspinstall/typescript/node_modules/.bin/typescript-language-server",
"--stdio",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -910,9 +817,6 @@ options.lang = {
DATA_PATH .. "/lspinstall/python/node_modules/.bin/pyright-langserver",
"--stdio",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -935,9 +839,6 @@ options.lang = {
"-e",
"languageserver::run()",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -956,9 +857,6 @@ options.lang = {
DATA_PATH .. "/lspinstall/ruby/solargraph/solargraph",
"stdio",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
filetypes = { "ruby" },
init_options = {
formatting = true,
@@ -989,9 +887,6 @@ options.lang = {
cmd = {
DATA_PATH .. "/lspinstall/rust/rust-analyzer",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -1005,11 +900,7 @@ options.lang = {
linters = { "" },
lsp = {
provider = "metals",
- setup = {
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
- },
+ setup = {},
},
},
sh = {
@@ -1027,9 +918,6 @@ options.lang = {
DATA_PATH .. "/lspinstall/bash/node_modules/.bin/bash-language-server",
"start",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -1043,9 +931,6 @@ options.lang = {
DATA_PATH .. "/lspinstall/svelte/node_modules/.bin/svelteserver",
"--stdio",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -1064,9 +949,6 @@ options.lang = {
"xcrun",
"sourcekit-lsp",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -1097,9 +979,6 @@ options.lang = {
DATA_PATH .. "/lspinstall/terraform/terraform-ls",
"serve",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -1110,9 +989,6 @@ options.lang = {
provider = "texlab",
setup = {
cmd = { DATA_PATH .. "/lspinstall/latex/texlab" },
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -1140,9 +1016,6 @@ options.lang = {
DATA_PATH .. "/lspinstall/typescript/node_modules/.bin/typescript-language-server",
"--stdio",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -1171,15 +1044,12 @@ options.lang = {
DATA_PATH .. "/lspinstall/typescript/node_modules/.bin/typescript-language-server",
"--stdio",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
vim = {
formatters = {},
- linters = { "" },
+ linters = {},
lsp = {
provider = "vimls",
setup = {
@@ -1187,9 +1057,6 @@ options.lang = {
DATA_PATH .. "/lspinstall/vim/node_modules/.bin/vim-language-server",
"--stdio",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -1215,9 +1082,6 @@ options.lang = {
cmd = {
DATA_PATH .. "/lspinstall/vue/node_modules/.bin/vls",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -1240,9 +1104,6 @@ options.lang = {
DATA_PATH .. "/lspinstall/yaml/node_modules/.bin/yaml-language-server",
"--stdio",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -1255,9 +1116,6 @@ options.lang = {
cmd = {
"zls",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -1272,9 +1130,6 @@ options.lang = {
"localhost",
"6008",
},
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
},
},
},
@@ -1285,24 +1140,29 @@ options.lang = {
provider = "powershell_es",
setup = {
bundle_path = "",
- on_attach = common_on_attach,
- on_init = common_on_init,
- capabilities = common_capabilities,
+ },
+ },
+ },
+ nix = {
+ formatters = {
+ -- {
+ -- exe = "nixfmt",
+ -- args = {},
+ -- },
+ },
+ linters = {},
+ lsp = {
+ provider = "rnix",
+ setup = {
+ cmd = { "rnix-lsp" },
+ filetypes = { "nix" },
+ init_options = {},
+ settings = {},
+ root_dir = function(fname)
+ local util = require "lspconfig/util"
+ return util.root_pattern ".git"(fname) or vim.fn.getcwd()
+ end,
},
},
},
}
-
-require("keymappings").config()
-require("core.which-key").config()
-require "core.status_colors"
-require("core.gitsigns").config()
-require("core.compe").config()
-require("core.dashboard").config()
-require("core.dap").config()
-require("core.terminal").config()
-require("core.telescope").config()
-require("core.treesitter").config()
-require("core.nvimtree").config()
--- require("core.rooter").config()
-require("core.bufferline").config()
diff --git a/.config/nvim/lua/config/init.lua b/.config/nvim/lua/config/init.lua
new file mode 100644
index 0000000..e6d6389
--- /dev/null
+++ b/.config/nvim/lua/config/init.lua
@@ -0,0 +1,36 @@
+local M = {
+ path = string.format("%s/.config/nvim/config.lua", os.getenv "HOME"),
+}
+
+--- Initialize nvim default configuration
+-- Define nvim global variable
+function M:init()
+ local utils = require "utils"
+
+ require "config.defaults"
+
+ local builtins = require "core.builtins"
+ builtins.config(self)
+
+ local settings = require "config.settings"
+ settings.load_options()
+end
+
+--- Override the configuration with a user provided one
+-- @param config_path The path to the configuration overrides
+function M:load(config_path)
+ config_path = config_path or self.path
+ local ok, err = pcall(vim.cmd, "luafile " .. config_path)
+ if not ok then
+ print("Invalid configuration", config_path)
+ print(err)
+ return
+ end
+
+ self.path = config_path
+
+ local settings = require "config.settings"
+ settings.load_commands()
+end
+
+return M
diff --git a/.config/nvim/lua/settings.lua b/.config/nvim/lua/config/settings.lua
index 9295999..82d7f48 100644
--- a/.config/nvim/lua/settings.lua
+++ b/.config/nvim/lua/config/settings.lua
@@ -1,8 +1,6 @@
local M = {}
M.load_options = function()
- local opt = vim.opt
-
local default_options = {
backup = false, -- creates a backup file
clipboard = "unnamedplus", -- allows neovim to access the system clipboard
@@ -51,7 +49,7 @@ M.load_options = function()
--- SETTINGS ---
- opt.shortmess:append "c"
+ vim.opt.shortmess:append "c"
for k, v in pairs(default_options) do
vim.opt[k] = v
diff --git a/.config/nvim/lua/core/autocmds.lua b/.config/nvim/lua/core/autocmds.lua
index 33dea53..036cc80 100644
--- a/.config/nvim/lua/core/autocmds.lua
+++ b/.config/nvim/lua/core/autocmds.lua
@@ -1,4 +1,5 @@
local autocommands = {}
+local config = require "config"
options.autocommands = {
_general_settings = {
@@ -32,7 +33,7 @@ options.autocommands = {
"*",
"setlocal formatoptions-=c formatoptions-=r formatoptions-=o",
},
- { "BufWritePost", USER_CONFIG_PATH, "lua require('utils').reload_config()" },
+ { "BufWritePost", config.path, "lua require('utils').reload_config()" },
{
"FileType",
"qf",
diff --git a/.config/nvim/lua/core/autopairs.lua b/.config/nvim/lua/core/autopairs.lua
index afd6e28..f8bdfd1 100644
--- a/.config/nvim/lua/core/autopairs.lua
+++ b/.config/nvim/lua/core/autopairs.lua
@@ -1,53 +1,69 @@
--- if not package.loaded['nvim-autopairs'] then
--- return
--- end
-local Log = require "core.log"
-local status_ok, _ = pcall(require, "nvim-autopairs")
-if not status_ok then
- Log:get_default().error "Failed to load autopairs"
- return
+local M = {}
+
+function M.config()
+ options.builtin.autopairs = {
+ active = true,
+ on_config_done = nil,
+ ---@usage map <CR> on insert mode
+ map_cr = true,
+ ---@usage auto insert after select function or method item
+ -- NOTE: This should be wrapped into a function so that it is re-evaluated when opening new files
+ map_complete = vim.bo.filetype ~= "tex",
+ ---@usage check treesitter
+ check_ts = true,
+ ts_config = {
+ lua = { "string" },
+ javascript = { "template_string" },
+ java = false,
+ },
+ }
end
-local npairs = require "nvim-autopairs"
-local Rule = require "nvim-autopairs.rule"
--- skip it, if you use another global object
-_G.MUtils = {}
+M.setup = function()
+ -- skip it, if you use another global object
+ _G.MUtils = {}
+ local autopairs = require "nvim-autopairs"
+ local Rule = require "nvim-autopairs.rule"
-vim.g.completion_confirm_key = ""
-MUtils.completion_confirm = function()
- if vim.fn.pumvisible() ~= 0 then
- if vim.fn.complete_info()["selected"] ~= -1 then
- return vim.fn["compe#confirm"](npairs.esc "<cr>")
+ vim.g.completion_confirm_key = ""
+ MUtils.completion_confirm = function()
+ if vim.fn.pumvisible() ~= 0 then
+ if vim.fn.complete_info()["selected"] ~= -1 then
+ return vim.fn["compe#confirm"](autopairs.esc "<cr>")
+ else
+ return autopairs.esc "<cr>"
+ end
else
- return npairs.esc "<cr>"
+ return autopairs.autopairs_cr()
end
- else
- return npairs.autopairs_cr()
end
-end
-if package.loaded["compe"] then
- require("nvim-autopairs.completion.compe").setup {
- map_cr = true, -- map <CR> on insert mode
- map_complete = true, -- it will auto insert `(` after select function or method item
+ if package.loaded["compe"] then
+ require("nvim-autopairs.completion.compe").setup {
+ map_cr = options.builtin.autopairs.map_cr,
+ map_complete = options.builtin.autopairs.map_complete,
+ }
+ end
+
+ autopairs.setup {
+ check_ts = options.builtin.autopairs.check_ts,
+ ts_config = options.builtin.autopairs.ts_config,
}
-end
-npairs.setup {
- check_ts = true,
- ts_config = {
- lua = { "string" }, -- it will not add pair on that treesitter node
- javascript = { "template_string" },
- java = false, -- don't check treesitter on java
- },
-}
+ require("nvim-treesitter.configs").setup { autopairs = { enable = true } }
+
+ local ts_conds = require "nvim-autopairs.ts-conds"
-require("nvim-treesitter.configs").setup { autopairs = { enable = true } }
+ -- TODO: can these rules be safely added from "config.lua" ?
+ -- press % => %% is only inside comment or string
+ autopairs.add_rules {
+ Rule("%", "%", "lua"):with_pair(ts_conds.is_ts_node { "string", "comment" }),
+ Rule("$", "$", "lua"):with_pair(ts_conds.is_not_ts_node { "function" }),
+ }
-local ts_conds = require "nvim-autopairs.ts-conds"
+ if options.builtin.autopairs.on_config_done then
+ options.builtin.autopairs.on_config_done(autopairs)
+ end
+end
--- press % => %% is only inside comment or string
-npairs.add_rules {
- Rule("%", "%", "lua"):with_pair(ts_conds.is_ts_node { "string", "comment" }),
- Rule("$", "$", "lua"):with_pair(ts_conds.is_not_ts_node { "function" }),
-}
+return M
diff --git a/.config/nvim/lua/core/bufferline.lua b/.config/nvim/lua/core/bufferline.lua
index 6306614..68b08ce 100644
--- a/.config/nvim/lua/core/bufferline.lua
+++ b/.config/nvim/lua/core/bufferline.lua
@@ -3,6 +3,7 @@ local M = {}
M.config = function()
options.builtin.bufferline = {
active = true,
+ on_config_done = nil,
keymap = {
normal_mode = {
["<S-l>"] = ":BufferNext<CR>",
@@ -15,6 +16,10 @@ end
M.setup = function()
local keymap = require "keymappings"
keymap.append_to_defaults(options.builtin.bufferline.keymap)
+
+ if options.builtin.bufferline.on_config_done then
+ options.builtin.bufferline.on_config_done()
+ end
end
return M
diff --git a/.config/nvim/lua/core/builtins/init.lua b/.config/nvim/lua/core/builtins/init.lua
new file mode 100644
index 0000000..32f96af
--- /dev/null
+++ b/.config/nvim/lua/core/builtins/init.lua
@@ -0,0 +1,29 @@
+local M = {}
+
+local builtins = {
+ "keymappings",
+ "core.which-key",
+ "core.gitsigns",
+ "core.compe",
+ "core.dashboard",
+ "core.dap",
+ "core.terminal",
+ "core.telescope",
+ "core.treesitter",
+ "core.nvimtree",
+ "core.project",
+ "core.bufferline",
+ "core.autopairs",
+ "core.comment",
+ "core.lspinstall",
+ "core.lualine",
+}
+
+function M.config(config)
+ for _, builtin_path in ipairs(builtins) do
+ local builtin = require(builtin_path)
+ builtin.config(config)
+ end
+end
+
+return M
diff --git a/.config/nvim/lua/core/commands.lua b/.config/nvim/lua/core/commands.lua
index c42b385..403194e 100644
--- a/.config/nvim/lua/core/commands.lua
+++ b/.config/nvim/lua/core/commands.lua
@@ -10,6 +10,7 @@ M.defaults = {
endif
endfunction
]],
+ [[command! LvimInfo lua require('core.info').toggle_popup(vim.bo.filetype)]],
}
M.load = function(commands)
diff --git a/.config/nvim/lua/core/comment.lua b/.config/nvim/lua/core/comment.lua
new file mode 100644
index 0000000..a97018d
--- /dev/null
+++ b/.config/nvim/lua/core/comment.lua
@@ -0,0 +1,31 @@
+local M = {}
+
+function M.config()
+ options.builtin.comment = {
+ active = true,
+ on_config_done = nil,
+ -- Linters prefer comment and line to have a space in between markers
+ marker_padding = true,
+ -- should comment out empty or whitespace only lines
+ comment_empty = false,
+ -- Should key mappings be created
+ create_mappings = true,
+ -- Normal mode mapping left hand side
+ line_mapping = "gcc",
+ -- Visual/Operator mapping left hand side
+ operator_mapping = "gc",
+ -- Hook function to call before commenting takes place
+ hook = nil,
+ }
+end
+
+function M.setup()
+ local nvim_comment = require "nvim_comment"
+
+ nvim_comment.setup(options.builtin.comment)
+ if options.builtin.comment.on_config_done then
+ options.builtin.comment.on_config_done(nvim_comment)
+ end
+end
+
+return M
diff --git a/.config/nvim/lua/core/compe.lua b/.config/nvim/lua/core/compe.lua
index 14fba1a..19e49e0 100644
--- a/.config/nvim/lua/core/compe.lua
+++ b/.config/nvim/lua/core/compe.lua
@@ -1,8 +1,9 @@
local M = {}
-local Log = require "core.log"
+
M.config = function()
options.builtin.compe = {
- enabled = true,
+ active = true,
+ on_config_done = nil,
autocomplete = true,
debug = false,
min_length = 1,
@@ -73,11 +74,7 @@ end
M.setup = function()
vim.g.vsnip_snippet_dir = options.vsnip_dir
- local status_ok, compe = pcall(require, "compe")
- if not status_ok then
- Log:get_default().error "Failed to load compe"
- return
- end
+ local compe = require "compe"
compe.setup(options.builtin.compe)
@@ -94,6 +91,17 @@ M.setup = function()
end
end
+ local is_emmet_active = function()
+ local clients = vim.lsp.buf_get_clients()
+
+ for _, client in pairs(clients) do
+ if client.name == "emmet_ls" then
+ return true
+ end
+ end
+ return false
+ end
+
-- Use (s-)tab to:
--- move to prev/next item in completion menuone
--- jump to prev/next snippet's placeholder
@@ -104,8 +112,9 @@ M.setup = function()
return t "<Plug>(vsnip-jump-next)"
elseif check_back_space() then
return t "<Tab>"
+ elseif is_emmet_active() then
+ return vim.fn["compe#complete"]()
else
- -- return vim.fn["compe#complete"]() -- < use this if you want <tab> to always offer completion
return t "<Tab>"
end
end
@@ -127,6 +136,10 @@ M.setup = function()
vim.api.nvim_set_keymap("s", "<Tab>", "v:lua.tab_complete()", { expr = true })
vim.api.nvim_set_keymap("i", "<S-Tab>", "v:lua.s_tab_complete()", { expr = true })
vim.api.nvim_set_keymap("s", "<S-Tab>", "v:lua.s_tab_complete()", { expr = true })
+
+ if options.builtin.compe.on_config_done then
+ options.builtin.compe.on_config_done(compe)
+ end
end
return M
diff --git a/.config/nvim/lua/core/dap.lua b/.config/nvim/lua/core/dap.lua
index a325c7c..6179ea3 100644
--- a/.config/nvim/lua/core/dap.lua
+++ b/.config/nvim/lua/core/dap.lua
@@ -1,8 +1,9 @@
local M = {}
-local Log = require "core.log"
+
M.config = function()
options.builtin.dap = {
active = false,
+ on_config_done = nil,
breakpoint = {
text = "",
texthl = "LspDiagnosticsSignError",
@@ -13,11 +14,7 @@ M.config = function()
end
M.setup = function()
- local status_ok, dap = pcall(require, "dap")
- if not status_ok then
- Log:get_default().error "Failed to load dap"
- return
- end
+ local dap = require "dap"
vim.fn.sign_define("DapBreakpoint", options.builtin.dap.breakpoint)
dap.defaults.fallback.terminal_win_cmd = "50vsplit new"
@@ -38,6 +35,27 @@ M.setup = function()
s = { "<cmd>lua require'dap'.continue()<cr>", "Start" },
q = { "<cmd>lua require'dap'.close()<cr>", "Quit" },
}
+
+ if options.builtin.dap.on_config_done then
+ options.builtin.dap.on_config_done(dap)
+ end
end
+-- TODO put this up there ^^^ call in ftplugin
+
+-- M.dap = function()
+-- if options.plugin.dap.active then
+-- local dap_install = require "dap-install"
+-- dap_install.config("python_dbg", {})
+-- end
+-- end
+--
+-- M.dap = function()
+-- -- gem install readapt ruby-debug-ide
+-- if options.plugin.dap.active then
+-- local dap_install = require "dap-install"
+-- dap_install.config("ruby_vsc_dbg", {})
+-- end
+-- end
+
return M
diff --git a/.config/nvim/lua/core/dashboard.lua b/.config/nvim/lua/core/dashboard.lua
index efbb790..f9eec22 100644
--- a/.config/nvim/lua/core/dashboard.lua
+++ b/.config/nvim/lua/core/dashboard.lua
@@ -1,8 +1,12 @@
local M = {}
-M.config = function()
+
+M.config = function(config)
options.builtin.dashboard = {
active = false,
+ on_config_done = nil,
search_handler = "telescope",
+ disable_at_vim_enter = 0,
+ session_directory = os.getenv "HOME" .. "/.cache/options/sessions",
custom_header = {
" ##############..... ############## ",
" ##############......############## ",
@@ -30,23 +34,27 @@ M.config = function()
command = "Telescope find_files",
},
b = {
+ description = { " Recent Projects " },
+ command = "Telescope projects",
+ },
+ c = {
description = { " Recently Used Files" },
command = "Telescope oldfiles",
},
- c = {
+ d = {
description = { " Find Word " },
command = "Telescope live_grep",
},
- d = {
- description = { " Settings " },
- command = ":e ~/.config/nvim/config.lua",
+ e = {
+ description = { " Configuration " },
+ command = ":e " .. config.path,
},
},
}
end
M.setup = function()
- vim.g.dashboard_disable_at_vimenter = 0
+ vim.g.dashboard_disable_at_vimenter = options.builtin.dashboard.disable_at_vim_enter
vim.g.dashboard_custom_header = options.builtin.dashboard.custom_header
@@ -56,26 +64,17 @@ M.setup = function()
options.builtin.which_key.mappings[";"] = { "<cmd>Dashboard<CR>", "Dashboard" }
- -- f = {
- -- description = { " Neovim Config Files" },
- -- command = "Telescope find_files cwd=" .. CoptionsFIG_PATH,
- -- },
- -- e = {description = {' Marks '}, command = 'Telescope marks'}
+ vim.g.dashboard_session_directory = options.builtin.dashboard.session_directory
- vim.cmd "let g:dashboard_session_directory = $HoptionsE..'/.config/nvim/.sessions'"
- vim.cmd "let packages = len(globpath('~/.local/share/nvim/site/pack/packer/start', '*', 0, 1))"
+ vim.cmd "let packages = len(globpath('~/.local/share/lunarvim/site/pack/packer/start', '*', 0, 1))"
vim.api.nvim_exec(
[[
- let g:dashboard_custom_footer = ['LuaJIT loaded '..packages..' builtins']
+ let g:dashboard_custom_footer = ['LunarVim 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 = optionsdashboard.footer
require("core.autocmds").define_augroups {
_dashboard = {
-- seems to be nobuflisted that makes my stuff disappear will do more testing
@@ -93,6 +92,10 @@ M.setup = function()
{ "FileType", "dashboard", "nnoremap <silent> <buffer> q :q<CR>" },
},
}
+
+ if options.builtin.dashboard.on_config_done then
+ options.builtin.dashboard.on_config_done()
+ end
end
return M
diff --git a/.config/nvim/lua/core/galaxyline.lua b/.config/nvim/lua/core/galaxyline.lua
deleted file mode 100644
index f7fa8c9..0000000
--- a/.config/nvim/lua/core/galaxyline.lua
+++ /dev/null
@@ -1,311 +0,0 @@
--- if not package.loaded['galaxyline'] then
--- return
--- end
-local Log = require "core.log"
-local status_ok, gl = pcall(require, "galaxyline")
-if not status_ok then
- Log:get_default().error "Failed to load galaxyline"
- return
-end
-
--- NOTE: if someone defines colors but doesn't have them then this will break
-local palette_status_ok, colors = pcall(require, options.colorscheme .. ".palette")
-if not palette_status_ok then
- colors = options.builtin.galaxyline.colors
-end
-
-local condition = require "galaxyline.condition"
-local gls = gl.section
-gl.short_line_list = { "NvimTree", "vista", "dbui", "packer" }
-
-table.insert(gls.left, {
- ViMode = {
- provider = function()
- local alias = {
- n = "NORMAL",
- i = "INSERT",
- c = "COMMAND",
- V = "VISUAL",
- [""] = "VISUAL",
- v = "VISUAL",
- R = "REPLACE",
- }
- local alias_mode = alias[vim.fn.mode()]
- if alias_mode == nil then
- alias_mode = vim.fn.mode()
- end
- return alias_mode .. " "
- end,
- separator_highlight = { "NONE", colors.alt_bg },
- highlight = { colors.grey, colors.alt_bg },
- },
-})
-
-vim.fn.getbufvar(0, "ts")
-
-table.insert(gls.left, {
- GitIcon = {
- provider = function()
- return " "
- end,
- condition = condition.check_git_workspace,
- separator = " ",
- separator_highlight = { "NONE", colors.alt_bg },
- highlight = { colors.orange, colors.alt_bg },
- },
-})
-
-table.insert(gls.left, {
- GitBranch = {
- provider = "GitBranch",
- condition = condition.check_git_workspace,
- separator = " ",
- separator_highlight = { "NONE", colors.alt_bg },
- highlight = { colors.grey, colors.alt_bg },
- },
-})
-
-table.insert(gls.left, {
- DiffAdd = {
- provider = "DiffAdd",
- condition = condition.hide_in_width,
- icon = "  ",
- highlight = { colors.green, colors.alt_bg },
- },
-})
-
-table.insert(gls.left, {
- DiffModified = {
- provider = "DiffModified",
- condition = condition.hide_in_width,
- icon = " 柳",
- highlight = { colors.blue, colors.alt_bg },
- },
-})
-
-table.insert(gls.left, {
- DiffRemove = {
- provider = "DiffRemove",
- condition = condition.hide_in_width,
- icon = "  ",
- highlight = { colors.red, colors.alt_bg },
- },
-})
-
-table.insert(gls.left, {
- Filler = {
- provider = function()
- return " "
- end,
- highlight = { colors.grey, colors.alt_bg },
- },
-})
--- get output from shell command
-function os.capture(cmd, raw)
- local f = assert(io.popen(cmd, "r"))
- local s = assert(f:read "*a")
- f:close()
- if raw then
- return s
- end
- s = string.gsub(s, "^%s+", "")
- s = string.gsub(s, "%s+$", "")
- s = string.gsub(s, "[\n\r]+", " ")
- return s
-end
--- cleanup virtual env
-local function env_cleanup(venv)
- if string.find(venv, "/") then
- local final_venv = venv
- for w in venv:gmatch "([^/]+)" do
- final_venv = w
- end
- venv = final_venv
- end
- return venv
-end
-local PythonEnv = function()
- if vim.bo.filetype == "python" then
- local venv = os.getenv "CONDA_DEFAULT_ENV"
- if venv ~= nil then
- return "  (" .. env_cleanup(venv) .. ")"
- end
- venv = os.getenv "VIRTUAL_ENV"
- if venv ~= nil then
- return "  (" .. env_cleanup(venv) .. ")"
- end
- return ""
- end
- return ""
-end
-table.insert(gls.left, {
- VirtualEnv = {
- provider = PythonEnv,
- event = "BufEnter",
- highlight = { colors.green, colors.alt_bg },
- },
-})
-
-table.insert(gls.right, {
- DiagnosticError = {
- provider = "DiagnosticError",
- icon = "  ",
- highlight = { colors.red, colors.alt_bg },
- },
-})
-table.insert(gls.right, {
- DiagnosticWarn = {
- provider = "DiagnosticWarn",
- icon = "  ",
- highlight = { colors.orange, colors.alt_bg },
- },
-})
-
-table.insert(gls.right, {
- DiagnosticInfo = {
- provider = "DiagnosticInfo",
- icon = "  ",
- highlight = { colors.yellow, colors.alt_bg },
- },
-})
-
-table.insert(gls.right, {
- DiagnosticHint = {
- provider = "DiagnosticHint",
- icon = "  ",
- highlight = { colors.blue, colors.alt_bg },
- },
-})
-
-table.insert(gls.right, {
- TreesitterIcon = {
- provider = function()
- if next(vim.treesitter.highlighter.active) ~= nil then
- return " "
- end
- return ""
- end,
- separator = " ",
- separator_highlight = { "NONE", colors.alt_bg },
- highlight = { colors.green, colors.alt_bg },
- },
-})
-
-local function get_attached_provider_name(msg)
- msg = msg or "LSP Inactive"
-
- local buf_clients = vim.lsp.buf_get_clients()
- if next(buf_clients) == nil then
- return msg
- end
-
- local buf_client_names = {}
- for _, client in pairs(buf_clients) do
- if client.name ~= "null-ls" then
- table.insert(buf_client_names, client.name)
- end
- end
-
- local null_ls = require "lsp.null-ls"
- local null_ls_providers = null_ls.list_supported_provider_names(vim.bo.filetype)
- vim.list_extend(buf_client_names, null_ls_providers)
-
- return table.concat(buf_client_names, ", ")
-end
-
-table.insert(gls.right, {
- ShowLspClient = {
- provider = get_attached_provider_name,
- condition = function()
- local tbl = { ["dashboard"] = true, [" "] = true }
- if tbl[vim.bo.filetype] then
- return false
- end
- return true
- end,
- icon = " ",
- highlight = { colors.grey, colors.alt_bg },
- },
-})
-
-table.insert(gls.right, {
- LineInfo = {
- provider = "LineColumn",
- separator = " ",
- separator_highlight = { "NONE", colors.alt_bg },
- highlight = { colors.grey, colors.alt_bg },
- },
-})
-
-table.insert(gls.right, {
- PerCent = {
- provider = "LinePercent",
- separator = " ",
- separator_highlight = { "NONE", colors.alt_bg },
- highlight = { colors.grey, colors.alt_bg },
- },
-})
-
-table.insert(gls.right, {
- Tabstop = {
- provider = function()
- local label = "Spaces: "
- if not vim.api.nvim_buf_get_option(0, "expandtab") then
- label = "Tab size: "
- end
- return label .. vim.api.nvim_buf_get_option(0, "shiftwidth") .. " "
- end,
- condition = condition.hide_in_width,
- separator = " ",
- separator_highlight = { "NONE", colors.alt_bg },
- highlight = { colors.grey, colors.alt_bg },
- },
-})
-
-table.insert(gls.right, {
- BufferType = {
- provider = "FileTypeName",
- condition = condition.hide_in_width,
- separator = " ",
- separator_highlight = { "NONE", colors.alt_bg },
- highlight = { colors.grey, colors.alt_bg },
- },
-})
-
-table.insert(gls.right, {
- FileEncode = {
- provider = "FileEncode",
- condition = condition.hide_in_width,
- separator = " ",
- separator_highlight = { "NONE", colors.alt_bg },
- highlight = { colors.grey, colors.alt_bg },
- },
-})
-
-table.insert(gls.right, {
- Space = {
- provider = function()
- return " "
- end,
- separator = " ",
- separator_highlight = { "NONE", colors.alt_bg },
- highlight = { colors.grey, colors.alt_bg },
- },
-})
-
-table.insert(gls.short_line_left, {
- BufferType = {
- provider = "FileTypeName",
- separator = " ",
- separator_highlight = { "NONE", colors.alt_bg },
- highlight = { colors.alt_bg, colors.alt_bg },
- },
-})
-
-table.insert(gls.short_line_left, {
- SFileName = {
- provider = "SFileName",
- condition = condition.buffer_not_empty,
- highlight = { colors.alt_bg, colors.alt_bg },
- },
-})
diff --git a/.config/nvim/lua/core/gitsigns.lua b/.config/nvim/lua/core/gitsigns.lua
index 0b72689..d9c9187 100644
--- a/.config/nvim/lua/core/gitsigns.lua
+++ b/.config/nvim/lua/core/gitsigns.lua
@@ -1,5 +1,6 @@
local M = {}
local Log = require "core.log"
+
M.config = function()
options.builtin.gitsigns = {
signs = {
diff --git a/.config/nvim/lua/core/log.lua b/.config/nvim/lua/core/log.lua
index e6f7afe..35ba4be 100644
--- a/.config/nvim/lua/core/log.lua
+++ b/.config/nvim/lua/core/log.lua
@@ -10,11 +10,7 @@ function Log:new(opts)
end
local obj = require("plenary.log").new(opts)
- local path = string.format(
- "%s/%s.log",
- vim.api.nvim_call_function("stdpath", { "cache" }),
- opts.plugin
- )
+ local path = string.format("%s/%s.log", vim.api.nvim_call_function("stdpath", { "cache" }), opts.plugin)
obj.get_path = function()
return path
@@ -27,7 +23,7 @@ end
--- based on Plenary.log
---@return log handle
function Log:get_default()
- return Log:new { plugin = "nvim", level = options.log.level }
+ return Log:new { plugin = "lunarvim", level = options.log.level }
end
return Log
diff --git a/.config/nvim/lua/core/lspinstall.lua b/.config/nvim/lua/core/lspinstall.lua
new file mode 100644
index 0000000..79c7502
--- /dev/null
+++ b/.config/nvim/lua/core/lspinstall.lua
@@ -0,0 +1,19 @@
+local M = {}
+
+M.config = function()
+ options.builtin.lspinstall = {
+ active = true,
+ on_config_done = nil,
+ }
+end
+
+M.setup = function()
+ local lspinstall = require "lspinstall"
+ lspinstall.setup()
+
+ if options.builtin.lspinstall.on_config_done then
+ options.builtin.lspinstall.on_config_done(lspinstall)
+ end
+end
+
+return M
diff --git a/.config/nvim/lua/core/lualine/colors.lua b/.config/nvim/lua/core/lualine/colors.lua
new file mode 100644
index 0000000..92e37ce
--- /dev/null
+++ b/.config/nvim/lua/core/lualine/colors.lua
@@ -0,0 +1,19 @@
+local colors = {
+ bg = "#0D0D0D",
+ fg = "#D0D0D0",
+ grey = "#D0D0D0",
+ 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",
+}
+
+return colors
diff --git a/.config/nvim/lua/core/lualine/components.lua b/.config/nvim/lua/core/lualine/components.lua
new file mode 100644
index 0000000..4777392
--- /dev/null
+++ b/.config/nvim/lua/core/lualine/components.lua
@@ -0,0 +1,180 @@
+local conditions = require "core.lualine.conditions"
+local colors = require "core.lualine.colors"
+
+return {
+ mode = {
+ function()
+ local alias = {
+ n = "NORMAL",
+ i = "INSERT",
+ c = "COMMAND",
+ V = "VISUAL",
+ [""] = "VISUAL",
+ v = "VISUAL",
+ R = "REPLACE",
+ }
+ local alias_mode = alias[vim.fn.mode()]
+ if alias_mode == nil then
+ alias_mode = vim.fn.mode()
+ end
+ return alias_mode .. " "
+ -- return " "
+ end,
+ left_padding = 0,
+ right_padding = 0,
+ condition = function()
+ return true
+ end,
+ color = { fg = colors.fg, bg = colors.bg },
+ },
+ branch = {
+ "branch",
+ icon = " ",
+ condition = function()
+ return conditions.hide_in_width() and conditions.check_git_workspace()
+ end,
+ color = { gui = "bold", fg = colors.fg, bg = colors.bg },
+ },
+ filename = {
+ "filename",
+ condition = function()
+ return true
+ end,
+ color = { fg = colors.fg, bg = colors.bg },
+ },
+ diff = {
+ "diff",
+ symbols = { added = "  ", modified = "柳", removed = " " },
+ color_added = { fg = colors.green },
+ color_modified = { fg = colors.yellow },
+ color_removed = { fg = colors.red },
+ condition = conditions.hide_in_width,
+ color = {},
+ },
+ python_env = {
+ function()
+ local utils = require "core.lualine.utils"
+ if vim.bo.filetype == "python" then
+ local venv = os.getenv "CONDA_DEFAULT_ENV"
+ if venv then
+ return string.format("  (%s)", utils.env_cleanup(venv))
+ end
+ venv = os.getenv "VIRTUAL_ENV"
+ if venv then
+ return string.format("  (%s)", utils.env_cleanup(venv))
+ end
+ return ""
+ end
+ return ""
+ end,
+ condition = conditions.hide_in_width,
+ color = { fg = colors.green },
+ },
+ diagnostics = {
+ "diagnostics",
+ sources = { "nvim_lsp" },
+ symbols = { error = " ", warn = " ", info = " ", hint = " " },
+ condition = conditions.hide_in_width,
+ color = {},
+ },
+ treesitter = {
+ function()
+ if next(vim.treesitter.highlighter.active) then
+ return "  "
+ end
+ return ""
+ end,
+ condition = conditions.hide_in_width,
+ color = { fg = colors.green },
+ },
+ lsp = {
+ function(msg)
+ msg = msg or "LSP Inactive"
+ local buf_clients = vim.lsp.buf_get_clients()
+ if next(buf_clients) == nil then
+ return msg
+ end
+ local buf_ft = vim.bo.filetype
+ local buf_client_names = {}
+
+ -- add client
+ local utils = require "lsp.utils"
+ local active_client = utils.get_active_client_by_ft(buf_ft)
+ for _, client in pairs(buf_clients) do
+ if client.name ~= "null-ls" then
+ table.insert(buf_client_names, client.name)
+ end
+ end
+ vim.list_extend(buf_client_names, active_client or {})
+
+ -- add formatter
+ local formatters = require "lsp.null-ls.formatters"
+ local supported_formatters = formatters.list_supported_names(buf_ft)
+ vim.list_extend(buf_client_names, supported_formatters)
+
+ -- add linter
+ local linters = require "lsp.null-ls.linters"
+ local supported_linters = linters.list_supported_names(buf_ft)
+ vim.list_extend(buf_client_names, supported_linters)
+
+ return table.concat(buf_client_names, ", ")
+ end,
+ icon = " ",
+ condition = conditions.hide_in_width,
+ color = { fg = colors.fg, bg = colors.bg },
+ },
+ location = {
+ "location",
+ condition = conditions.hide_in_width,
+ color = { fg = colors.fg, bg = colors.bg },
+ },
+ progress = {
+ "progress",
+ condition = conditions.hide_in_width,
+ color = { fg = colors.fg, bg = colors.bg },
+ },
+ spaces = {
+ function()
+ local label = "Spaces: "
+ if not vim.api.nvim_buf_get_option(0, "expandtab") then
+ label = "Tab size: "
+ end
+ return label .. vim.api.nvim_buf_get_option(0, "shiftwidth") .. " "
+ end,
+ condition = conditions.hide_in_width,
+ color = {},
+ },
+ encoding = {
+ "o:encoding",
+ upper = true,
+ condition = conditions.hide_in_width,
+ color = { fg = colors.fg, bg = colors.bg },
+ },
+ filetype = { "filetype", condition = conditions.hide_in_width, color = {} },
+ scrollbar = {
+ function()
+ local current_line = vim.fn.line "."
+ local total_lines = vim.fn.line "$"
+ local chars = {
+ "__",
+ "▁▁",
+ "▂▂",
+ "▃▃",
+ "▄▄",
+ "▅▅",
+ "▆▆",
+ "▇▇",
+ "██",
+ }
+ local line_ratio = current_line / total_lines
+ local index = math.ceil(line_ratio * #chars)
+ return chars[index]
+ end,
+ left_padding = 0,
+ right_padding = 0,
+ condition = function()
+ return true
+ end,
+ color = { fg = colors.yellow, bg = colors.bg },
+ },
+}
diff --git a/.config/nvim/lua/core/lualine/conditions.lua b/.config/nvim/lua/core/lualine/conditions.lua
new file mode 100644
index 0000000..2d2d81e
--- /dev/null
+++ b/.config/nvim/lua/core/lualine/conditions.lua
@@ -0,0 +1,17 @@
+local window_width_limit = 80
+
+local conditions = {
+ buffer_not_empty = function()
+ return vim.fn.empty(vim.fn.expand "%:t") ~= 1
+ end,
+ hide_in_width = function()
+ return vim.fn.winwidth(0) > window_width_limit
+ end,
+ check_git_workspace = function()
+ local filepath = vim.fn.expand "%:p:h"
+ local gitdir = vim.fn.finddir(".git", filepath .. ";")
+ return gitdir and #gitdir > 0 and #gitdir < #filepath
+ end,
+}
+
+return conditions
diff --git a/.config/nvim/lua/core/lualine/init.lua b/.config/nvim/lua/core/lualine/init.lua
new file mode 100644
index 0000000..7d67559
--- /dev/null
+++ b/.config/nvim/lua/core/lualine/init.lua
@@ -0,0 +1,47 @@
+local M = {}
+M.config = function()
+ options.builtin.lualine = {
+ active = true,
+ style = "options",
+ options = {
+ icons_enabled = nil,
+ component_separators = nil,
+ section_separators = nil,
+ theme = nil,
+ disabled_filetypes = nil,
+ },
+ sections = {
+ lualine_a = nil,
+ lualine_b = nil,
+ lualine_c = nil,
+ lualine_x = nil,
+ lualine_y = nil,
+ lualine_z = nil,
+ },
+ inactive_sections = {
+ lualine_a = nil,
+ lualine_b = nil,
+ lualine_c = nil,
+ lualine_x = nil,
+ lualine_y = nil,
+ lualine_z = nil,
+ },
+ tabline = nil,
+ extensions = nil,
+ on_config_done = nil,
+ }
+end
+
+M.setup = function()
+ require("core.lualine.styles").update()
+ require("core.lualine.utils").validate_theme()
+
+ local lualine = require "lualine"
+ lualine.setup(options.builtin.lualine)
+
+ if options.builtin.lualine.on_config_done then
+ options.builtin.lualine.on_config_done(lualine)
+ end
+end
+
+return M
diff --git a/.config/nvim/lua/core/lualine/styles.lua b/.config/nvim/lua/core/lualine/styles.lua
new file mode 100644
index 0000000..014ba81
--- /dev/null
+++ b/.config/nvim/lua/core/lualine/styles.lua
@@ -0,0 +1,186 @@
+local M = {}
+local components = require "core.lualine.components"
+
+local styles = {
+ lvim = nil,
+ default = nil,
+ none = nil,
+ clean = nil,
+}
+
+styles.clean = {
+ style = "lvim",
+ options = {
+ icons_enabled = true,
+ component_separators = "",
+ section_separators = "",
+ disabled_filetypes = { "dashboard" },
+ },
+ sections = {
+ lualine_a = {
+ components.mode,
+ },
+ lualine_b = {
+ components.branch,
+ components.filename,
+ },
+ lualine_c = {
+ components.diff,
+ components.python_env,
+ },
+ lualine_x = {
+ components.diagnostics,
+ components.treesitter,
+ components.lsp,
+ components.filetype,
+ },
+ lualine_y = {},
+ lualine_z = {
+ components.location,
+ components.progress,
+ components.encoding,
+ },
+ },
+ inactive_sections = {
+ lualine_a = {
+ "filename",
+ },
+ lualine_b = {},
+ lualine_c = {},
+ lualine_x = {},
+ lualine_y = {},
+ lualine_z = {},
+ },
+ tabline = {},
+ extensions = { "nvim-tree" },
+}
+
+styles.none = {
+ style = "none",
+ options = {
+ icons_enabled = true,
+ component_separators = "",
+ section_separators = "",
+ disabled_filetypes = {},
+ },
+ sections = {
+ lualine_a = {},
+ lualine_b = {},
+ lualine_c = {},
+ lualine_x = {},
+ lualine_y = {},
+ lualine_z = {},
+ },
+ inactive_sections = {
+ lualine_a = {},
+ lualine_b = {},
+ lualine_c = {},
+ lualine_x = {},
+ lualine_y = {},
+ lualine_z = {},
+ },
+ tabline = {},
+ extensions = {},
+}
+
+styles.default = {
+ style = "default",
+ options = {
+ icons_enabled = true,
+ component_separators = { "", "" },
+ section_separators = { "", "" },
+ disabled_filetypes = {},
+ },
+ sections = {
+ lualine_a = { "mode" },
+ lualine_b = { "branch" },
+ lualine_c = { "filename" },
+ lualine_x = { "encoding", "fileformat", "filetype" },
+ lualine_y = { "progress" },
+ lualine_z = { "location" },
+ },
+ inactive_sections = {
+ lualine_a = {},
+ lualine_b = {},
+ lualine_c = { "filename" },
+ lualine_x = { "location" },
+ lualine_y = {},
+ lualine_z = {},
+ },
+ tabline = {},
+ extensions = {},
+}
+
+styles.lvim = {
+ style = "lvim",
+ options = {
+ icons_enabled = true,
+ component_separators = "",
+ section_separators = "",
+ disabled_filetypes = { "dashboard" },
+ },
+ sections = {
+ lualine_a = {
+ components.mode,
+ },
+ lualine_b = {
+ components.branch,
+ components.filename,
+ },
+ lualine_c = {
+ components.diff,
+ components.python_env,
+ },
+ lualine_x = {
+ components.diagnostics,
+ components.treesitter,
+ components.lsp,
+ components.filetype,
+ },
+ lualine_y = {},
+ lualine_z = {
+ components.scrollbar,
+ },
+ },
+ inactive_sections = {
+ lualine_a = {
+ "filename",
+ },
+ lualine_b = {},
+ lualine_c = {},
+ lualine_x = {},
+ lualine_y = {},
+ lualine_z = {},
+ },
+ tabline = {},
+ extensions = { "nvim-tree" },
+}
+
+function M.get_style(style)
+ local style_keys = vim.tbl_keys(styles)
+ if not vim.tbl_contains(style_keys, style) then
+ local Log = require "core.log"
+ local logger = Log:get_default()
+ logger.error(
+ "Invalid lualine style",
+ string.format('"%s"', style),
+ "options are: ",
+ string.format('"%s"', table.concat(style_keys, '", "'))
+ )
+ logger.info '"lvim" style is applied.'
+ style = "lvim"
+ end
+
+ return vim.deepcopy(styles[style])
+end
+
+function M.update()
+ local style = M.get_style(options.builtin.lualine.style)
+ if options.builtin.lualine.options.theme == nil then
+ options.builtin.lualine.options.theme = options.colorscheme
+ end
+
+ options.builtin.lualine = vim.tbl_deep_extend("keep", options.builtin.lualine, style)
+end
+
+return M
diff --git a/.config/nvim/lua/core/lualine/utils.lua b/.config/nvim/lua/core/lualine/utils.lua
new file mode 100644
index 0000000..48756a7
--- /dev/null
+++ b/.config/nvim/lua/core/lualine/utils.lua
@@ -0,0 +1,27 @@
+local M = {}
+
+function M.validate_theme()
+ local theme = options.builtin.lualine.options.theme
+ if type(theme) == "table" then
+ return
+ end
+
+ local lualine_loader = require "lualine.utils.loader"
+ local ok = pcall(lualine_loader.load_theme, theme)
+ if not ok then
+ options.builtin.lualine.options.theme = "auto"
+ end
+end
+
+function M.env_cleanup(venv)
+ if string.find(venv, "/") then
+ local final_venv = venv
+ for w in venv:gmatch "([^/]+)" do
+ final_venv = w
+ end
+ venv = final_venv
+ end
+ return venv
+end
+
+return M
diff --git a/.config/nvim/lua/core/nvimtree.lua b/.config/nvim/lua/core/nvimtree.lua
index 376ae56..c640583 100644
--- a/.config/nvim/lua/core/nvimtree.lua
+++ b/.config/nvim/lua/core/nvimtree.lua
@@ -1,8 +1,10 @@
local M = {}
local Log = require "core.log"
---
-M.config = function()
+
+function M.config()
options.builtin.nvimtree = {
+ active = true,
+ on_config_done = nil,
side = "left",
width = 30,
show_icons = {
@@ -46,8 +48,8 @@ M.config = function()
},
}
end
---
-M.setup = function()
+
+function M.setup()
local status_ok, nvim_tree_config = pcall(require, "nvim-tree.config")
if not status_ok then
Log:get_default().error "Failed to load nvim-tree.config"
@@ -59,6 +61,12 @@ M.setup = function()
g["nvim_tree_" .. opt] = val
end
+ -- Implicitly update nvim-tree when project module is active
+ if options.builtin.project.active then
+ vim.g.nvim_tree_update_cwd = 1
+ vim.g.nvim_tree_respect_buf_cwd = 1
+ end
+
local tree_cb = nvim_tree_config.nvim_tree_callback
if not g.nvim_tree_bindings then
@@ -66,67 +74,46 @@ M.setup = function()
{ key = { "l", "<CR>", "o" }, cb = tree_cb "edit" },
{ key = "h", cb = tree_cb "close_node" },
{ key = "v", cb = tree_cb "vsplit" },
-
- { key = "q", cb = ":lua require('core.nvimtree').toggle_tree()<cr>" },
}
end
-end
---
-M.focus_or_close = function()
- local view_status_ok, view = pcall(require, "nvim-tree.view")
- if not view_status_ok then
- return
+
+ options.builtin.which_key.mappings["e"] = { "<cmd>NvimTreeToggle<CR>", "Explorer" }
+
+ local tree_view = require "nvim-tree.view"
+
+ -- Add nvim_tree open callback
+ local open = tree_view.open
+ tree_view.open = function()
+ M.on_open()
+ open()
end
- local a = vim.api
- local curwin = a.nvim_get_current_win()
- local curbuf = a.nvim_win_get_buf(curwin)
- local bufnr = view.View.bufnr
- local winnr = view.get_winnr()
+ vim.cmd "au WinClosed * lua require('core.nvimtree').on_close()"
- if view.win_open() then
- if curwin == winnr and curbuf == bufnr then
- view.close()
- if package.loaded["bufferline.state"] then
- require("bufferline.state").set_offset(0)
- end
- else
- view.focus()
- end
- else
- view.open()
- if
- package.loaded["bufferline.state"] and options.builtin.nvimtree.side == "left"
- then
- require("bufferline.state").set_offset(options.builtin.nvimtree.width + 1, "")
- end
+ if options.builtin.nvimtree.on_config_done then
+ options.builtin.nvimtree.on_config_done(nvim_tree_config)
end
end
---
-M.toggle_tree = function()
- local view_status_ok, view = pcall(require, "nvim-tree.view")
- if not view_status_ok then
- return
+
+function M.on_open()
+ if package.loaded["bufferline.state"] and options.builtin.nvimtree.side == "left" then
+ require("bufferline.state").set_offset(options.builtin.nvimtree.width + 1, "")
end
- if view.win_open() then
- require("nvim-tree").close()
- if package.loaded["bufferline.state"] then
- require("bufferline.state").set_offset(0)
- end
- else
- if
- package.loaded["bufferline.state"] and options.builtin.nvimtree.side == "left"
- then
- require("bufferline.state").set_offset(options.builtin.nvimtree.width + 1, "")
- end
- require("nvim-tree").toggle()
+end
+
+function M.on_close()
+ local buf = tonumber(vim.fn.expand "<abuf>")
+ local ft = vim.api.nvim_buf_get_option(buf, "filetype")
+ if ft == "NvimTree" and package.loaded["bufferline.state"] then
+ require("bufferline.state").set_offset(0)
end
end
---
+
function M.change_tree_dir(dir)
- if vim.g.loaded_tree then
- require("nvim-tree.lib").change_dir(dir)
+ local lib_status_ok, lib = pcall(require, "nvim-tree.lib")
+ if lib_status_ok then
+ lib.change_dir(dir)
end
end
---
+
return M
diff --git a/.config/nvim/lua/core/project.lua b/.config/nvim/lua/core/project.lua
new file mode 100644
index 0000000..c7eacde
--- /dev/null
+++ b/.config/nvim/lua/core/project.lua
@@ -0,0 +1,51 @@
+local M = {}
+
+function M.config()
+ options.builtin.project = {
+ ---@usage set to false to disable project.nvim.
+ --- This is on by default since it's currently the expected behavior.
+ active = true,
+
+ on_config_done = nil,
+
+ ---@usage set to true to disable setting the current-woriking directory
+ --- Manual mode doesn't automatically change your root directory, so you have
+ --- the option to manually do so using `:ProjectRoot` command.
+ manual_mode = false,
+
+ ---@usage Methods of detecting the root directory
+ --- Allowed values: **"lsp"** uses the native neovim lsp
+ --- **"pattern"** uses vim-rooter like glob pattern matching. Here
+ --- order matters: if one is not detected, the other is used as fallback. You
+ --- can also delete or rearangne the detection methods.
+ detection_methods = { "lsp", "pattern" },
+
+ ---@usage patterns used to detect root dir, when **"pattern"** is in detection_methods
+ patterns = { ".git", "_darcs", ".hg", ".bzr", ".svn", "Makefile", "package.json" },
+
+ ---@ Show hidden files in telescope when searching for files in a project
+ show_hidden = false,
+
+ ---@usage When set to false, you will get a message when project.nvim changes your directory.
+ -- When set to false, you will get a message when project.nvim changes your directory.
+ silent_chdir = true,
+
+ ---@usage list of lsp client names to ignore when using **lsp** detection. eg: { "efm", ... }
+ ignore_lsp = {},
+
+ ---@type string
+ ---@usage path to store the project history for use in telescope
+ datapath = CACHE_PATH,
+ }
+end
+
+function M.setup()
+ local project = require "project_nvim"
+
+ project.setup(options.builtin.project)
+ if options.builtin.project.on_config_done then
+ options.builtin.project.on_config_done(project)
+ end
+end
+
+return M
diff --git a/.config/nvim/lua/core/status_colors.lua b/.config/nvim/lua/core/status_colors.lua
deleted file mode 100644
index 71b6277..0000000
--- a/.config/nvim/lua/core/status_colors.lua
+++ /dev/null
@@ -1,19 +0,0 @@
-options.builtin.galaxyline = {
- active = true,
- colors = {
- alt_bg = "#0A0A0A",
- grey = "#D0D0D0",
- 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/.config/nvim/lua/core/telescope.lua b/.config/nvim/lua/core/telescope.lua
index 513665e..d394884 100644
--- a/.config/nvim/lua/core/telescope.lua
+++ b/.config/nvim/lua/core/telescope.lua
@@ -1,13 +1,19 @@
local M = {}
-local Log = require "core.log"
-M.config = function()
+
+function M.config()
+ -- Define this minimal config so that it's available if telescope is not yet available.
+ options.builtin.telescope = {
+ ---@usage disable telescope completely [not recommeded]
+ active = true,
+ on_config_done = nil,
+ }
+
local status_ok, actions = pcall(require, "telescope.actions")
if not status_ok then
return
end
- options.builtin.telescope = {
- active = false,
+ options.builtin.telescope = vim.tbl_extend("force", options.builtin.telescope, {
defaults = {
find_command = {
"rg",
@@ -82,16 +88,20 @@ M.config = function()
override_file_sorter = true,
},
},
- }
+ })
end
-M.setup = function()
- local status_ok, telescope = pcall(require, "telescope")
- if not status_ok then
- Log:get_default().error "Failed to load telescope"
- return
- end
+function M.setup()
+ local telescope = require "telescope"
+
telescope.setup(options.builtin.telescope)
+ if options.builtin.project.active then
+ telescope.load_extension "projects"
+ end
+
+ if options.builtin.telescope.on_config_done then
+ options.builtin.telescope.on_config_done(telescope)
+ end
end
return M
diff --git a/.config/nvim/lua/core/terminal.lua b/.config/nvim/lua/core/terminal.lua
index ff3f95e..80dc9d0 100644
--- a/.config/nvim/lua/core/terminal.lua
+++ b/.config/nvim/lua/core/terminal.lua
@@ -1,9 +1,9 @@
local M = {}
-local Log = require "core.log"
local utils = require "utils"
M.config = function()
options.builtin["terminal"] = {
+ on_config_done = nil,
-- size can be a number or function which is passed the current terminal
size = 20,
-- open_mapping = [[<c-\>]],
@@ -46,20 +46,15 @@ M.config = function()
end
M.setup = function()
- local status_ok, terminal = pcall(require, "toggleterm")
- if not status_ok then
- Log:get_default().error "Failed to load toggleterm"
- print(terminal)
- return
- end
+ local terminal = require "toggleterm"
for _, exec in pairs(options.builtin.terminal.execs) do
require("core.terminal").add_exec(exec[1], exec[2], exec[3])
end
terminal.setup(options.builtin.terminal)
-end
-local function is_installed(exe)
- return vim.fn.executable(exe) == 1
+ if options.builtin.terminal.on_config_done then
+ options.builtin.terminal.on_config_done(terminal)
+ end
end
M.add_exec = function(exec, keymap, name)
@@ -85,12 +80,9 @@ end
M._exec_toggle = function(exec)
local binary = M._split(exec)[1]
- if is_installed(binary) ~= true then
- print(
- "Please install executable "
- .. binary
- .. ". Check documentation for more information"
- )
+ if vim.fn.executable(binary) ~= 1 then
+ local Log = require "core.log"
+ Log:get_default().error("Unable to run executable " .. binary .. ". Please make sure it is installed properly.")
return
end
local Terminal = require("toggleterm.terminal").Terminal
diff --git a/.config/nvim/lua/core/treesitter.lua b/.config/nvim/lua/core/treesitter.lua
index ba70b70..59adda4 100644
--- a/.config/nvim/lua/core/treesitter.lua
+++ b/.config/nvim/lua/core/treesitter.lua
@@ -1,7 +1,10 @@
+
local M = {}
local Log = require "core.log"
+
M.config = function()
options.builtin.treesitter = {
+ on_config_done = nil,
ensure_installed = {}, -- one of "all", "maintained" (parsers with maintainers), or a list of languages
ignore_install = {},
matchup = {
@@ -70,6 +73,10 @@ M.setup = function()
end
treesitter_configs.setup(options.builtin.treesitter)
+
+ if options.builtin.treesitter.on_config_done then
+ options.builtin.treesitter.on_config_done(treesitter_configs)
+ end
end
return M
diff --git a/.config/nvim/lua/core/which-key.lua b/.config/nvim/lua/core/which-key.lua
index 775ea67..7ea86a8 100644
--- a/.config/nvim/lua/core/which-key.lua
+++ b/.config/nvim/lua/core/which-key.lua
@@ -1,8 +1,10 @@
local M = {}
-local Log = require "core.log"
+
M.config = function()
options.builtin.which_key = {
- active = false,
+ ---@usage disable which-key completely [not recommeded]
+ active = true,
+ on_config_done = nil,
setup = {
plugins = {
marks = true, -- shows a list of your marks on ' and `
@@ -66,9 +68,8 @@ M.config = function()
["q"] = { "<cmd>q!<CR>", "Quit" },
["k"] = { "<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" },
- ["n"] = { '<cmd>let @/=""<CR>', "No Highlight" },
+ ["n"] = { "<cmd>nohlsearch<CR>", "No Highlight" },
b = {
name = "Buffers",
j = { "<cmd>BufferPick<cr>", "jump to buffer" },
@@ -156,14 +157,8 @@ M.config = function()
p = {
name = "Peek",
d = { "<cmd>lua require('lsp.peek').Peek('definition')<cr>", "Definition" },
- t = {
- "<cmd>lua require('lsp.peek').Peek('typeDefinition')<cr>",
- "Type Definition",
- },
- i = {
- "<cmd>lua require('lsp.peek').Peek('implementation')<cr>",
- "Implementation",
- },
+ t = { "<cmd>lua require('lsp.peek').Peek('typeDefinition')<cr>", "Type Definition" },
+ i = { "<cmd>lua require('lsp.peek').Peek('implementation')<cr>", "Implementation" },
},
q = { "<cmd>lua vim.lsp.diagnostic.set_loclist()<cr>", "Quickfix" },
r = { "<cmd>lua vim.lsp.buf.rename()<cr>", "Rename" },
@@ -173,18 +168,31 @@ M.config = function()
"Workspace Symbols",
},
},
- I = {
+ i = {
name = "+nvim",
- k = {
- "<cmd>lua require('keymappings').print()<cr>",
- "View nvim's default keymappings",
+ c = {
+ "<cmd>edit ~/.config/nvim/config.lua<cr>",
+ "Edit config.lua",
},
+ k = { "<cmd>lua require('keymappings').print()<cr>", "View LunarVim's default keymappings" },
i = {
"<cmd>lua require('core.info').toggle_popup(vim.bo.filetype)<cr>",
"Toggle nvim Info",
},
+ l = {
+ name = "+logs",
+ D = { "<cmd>edit ~/.cache/nvim/lunarvim.log<cr>", "Open the default logfile" },
+ n = { "<cmd>lua require('core.terminal').toggle_log_view('lsp')<cr>", "view lsp log" },
+ N = { "<cmd>edit ~/.cache/nvim/log<cr>", "Open the Neovim logfile" },
+ l = { "<cmd>lua require('core.terminal').toggle_log_view('nvim')<cr>", "view neovim log" },
+ L = { "<cmd>edit ~/.cache/nvim/lsp.log<cr>", "Open the LSP logfile" },
+ p = {
+ "<cmd>lua require('core.terminal').toggle_log_view('packer.nvim')<cr>",
+ "view packer log",
+ },
+ P = { "<cmd>edit ~/.cache/nvim/packer.nvim.log<cr>", "Open the Packer logfile" },
+ },
},
-
s = {
name = "Search",
b = { "<cmd>Telescope git_branches<cr>", "Checkout branch" },
@@ -211,14 +219,7 @@ M.config = function()
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
- Log:get_default "Failed to load whichkey"
- return
- end
+ local which_key = require "which-key"
which_key.setup(options.builtin.which_key.setup)
@@ -228,10 +229,12 @@ M.setup = function()
local mappings = options.builtin.which_key.mappings
local vmappings = options.builtin.which_key.vmappings
- local wk = require "which-key"
+ which_key.register(mappings, opts)
+ which_key.register(vmappings, vopts)
- wk.register(mappings, opts)
- wk.register(vmappings, vopts)
+ if options.builtin.which_key.on_config_done then
+ options.builtin.which_key.on_config_done(which_key)
+ end
end
return M
diff --git a/.config/nvim/lua/dark/highlights.lua b/.config/nvim/lua/dark/highlights.lua
index a974cae..d24f53f 100644
--- a/.config/nvim/lua/dark/highlights.lua
+++ b/.config/nvim/lua/dark/highlights.lua
@@ -10,8 +10,8 @@ local highlights = {
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 },
+ PmenuSel = { fg = C.blue, bg = C.alt_bg },
+ WildMenu = { fg = C.blue, bg = C.alt_bg },
CursorLineNr = { fg = C.light_gray, style = "bold" },
Comment = { fg = C.blue, style = "italic" },
Folded = { fg = C.accent, bg = C.alt_bg },
@@ -24,7 +24,7 @@ local highlights = {
CursorColumn = { bg = C.alt_bg },
ColorColumn = { bg = C.alt_bg },
NormalFloat = { bg = C.alt_bg },
- Visual = { bg = C.accent },
+ Visual = { bg = C.gray },
VisualNOS = { bg = C.alt_bg },
WarningMsg = { fg = C.error_red, bg = C.bg },
DiffAdd = { fg = C.alt_bg, bg = C.sign_add },
diff --git a/.config/nvim/lua/interface/popup.lua b/.config/nvim/lua/interface/popup.lua
new file mode 100644
index 0000000..b628125
--- /dev/null
+++ b/.config/nvim/lua/interface/popup.lua
@@ -0,0 +1,62 @@
+local Popup = {}
+
+--- Create a new floating window
+-- @param config The configuration passed to vim.api.nvim_open_win
+-- @param win_opts The options registered with vim.api.nvim_win_set_option
+-- @param buf_opts The options registered with vim.api.nvim_buf_set_option
+-- @return A new popup
+function Popup:new(opts)
+ opts = opts or {}
+ opts.layout = opts.layout or {}
+ opts.win_opts = opts.win_opts or {}
+ opts.buf_opts = opts.buf_opts or {}
+
+ Popup.__index = Popup
+
+ local editor_layout = {
+ height = vim.o.lines - vim.o.cmdheight - 2, -- Add margin for status and buffer line
+ width = vim.o.columns,
+ }
+ local popup_layout = {
+ relative = "editor",
+ height = math.floor(editor_layout.height * 0.9),
+ width = math.floor(editor_layout.width * 0.8),
+ style = "minimal",
+ border = "rounded",
+ }
+ popup_layout.row = math.floor((editor_layout.height - popup_layout.height) / 2)
+ popup_layout.col = math.floor((editor_layout.width - popup_layout.width) / 2)
+
+ local obj = {
+ buffer = vim.api.nvim_create_buf(false, true),
+ layout = vim.tbl_deep_extend("force", popup_layout, opts.layout),
+ win_opts = opts.win_opts,
+ buf_opts = opts.buf_opts,
+ }
+
+ setmetatable(obj, Popup)
+
+ return obj
+end
+
+--- Display the popup with the provided content
+-- @param content_provider A function accepting the popup's layout and returning the content to display
+function Popup:display(content_provider)
+ self.win_id = vim.api.nvim_open_win(self.buffer, true, self.layout)
+ vim.lsp.util.close_preview_autocmd({ "BufHidden", "BufLeave" }, self.win_id)
+
+ local lines = content_provider(self.layout)
+ vim.api.nvim_buf_set_lines(self.bufnr, 0, -1, false, lines)
+
+ -- window options
+ for key, value in pairs(self.win_opts) do
+ vim.api.nvim_win_set_option(self.win_id, key, value)
+ end
+
+ -- buffer options
+ for key, value in pairs(self.buf_opts) do
+ vim.api.nvim_buf_set_option(self.buffer, key, value)
+ end
+end
+
+return Popup
diff --git a/.config/nvim/lua/interface/text.lua b/.config/nvim/lua/interface/text.lua
new file mode 100644
index 0000000..f68cc49
--- /dev/null
+++ b/.config/nvim/lua/interface/text.lua
@@ -0,0 +1,79 @@
+local M = {}
+
+local function max_len_line(lines)
+ local max_len = 0
+
+ for _, line in ipairs(lines) do
+ local line_len = line:len()
+ if line_len > max_len then
+ max_len = line_len
+ end
+ end
+
+ return max_len
+end
+
+--- Center align lines relatively to the parent container
+-- @param container The container where lines will be displayed
+-- @param lines The text to align
+-- @param alignment The alignment value, range: [0-1]
+function M.align(container, lines, alignment)
+ local max_len = max_len_line(lines)
+ local indent_amount = math.ceil(math.max(container.width - max_len, 0) * alignment)
+ return M.shift_left(lines, indent_amount)
+end
+
+--- Shift lines by a given amount
+-- @params lines The lines the shift
+-- @param amount The amount of spaces to add
+function M.shift_left(lines, amount)
+ local output = {}
+ local padding = string.rep(" ", amount)
+
+ for _, line in ipairs(lines) do
+ table.insert(output, padding .. line)
+ end
+
+ return output
+end
+
+--- Pretty format tables
+-- @param entries The table to format
+-- @param col_count The number of column to span the table on
+-- @param col_sep The separator between each colummn, default: " "
+function M.format_table(entries, col_count, col_sep)
+ col_sep = col_sep or " "
+
+ local col_rows = math.ceil(vim.tbl_count(entries) / col_count)
+ local cols = {}
+ local count = 0
+
+ for i, entry in ipairs(entries) do
+ if ((i - 1) % col_rows) == 0 then
+ table.insert(cols, {})
+ count = count + 1
+ end
+ table.insert(cols[count], entry)
+ end
+
+ local col_max_len = {}
+ for _, col in ipairs(cols) do
+ table.insert(col_max_len, max_len_line(col))
+ end
+
+ local output = {}
+ for i, col in ipairs(cols) do
+ for j, entry in ipairs(col) do
+ if not output[j] then
+ output[j] = entry
+ else
+ local padding = string.rep(" ", col_max_len[i - 1] - cols[i - 1][j]:len())
+ output[j] = output[j] .. padding .. col_sep .. entry
+ end
+ end
+ end
+
+ return output
+end
+
+return M
diff --git a/.config/nvim/lua/keymappings.lua b/.config/nvim/lua/keymappings.lua
index 60069d8..f7d91d8 100644
--- a/.config/nvim/lua/keymappings.lua
+++ b/.config/nvim/lua/keymappings.lua
@@ -1,4 +1,5 @@
local M = {}
+local Log = require "core.log"
local generic_opts_any = { noremap = true, silent = true }
@@ -7,6 +8,7 @@ local generic_opts = {
normal_mode = generic_opts_any,
visual_mode = generic_opts_any,
visual_block_mode = generic_opts_any,
+ command_mode = generic_opts_any,
term_mode = { silent = true },
}
@@ -81,14 +83,8 @@ function M.config()
["<A-Right>"] = "<C-\\><C-N><C-w>l",
-- navigate tab completion with <c-j> and <c-k>
-- runs conditionally
- ["<C-j>"] = {
- 'pumvisible() ? "\\<C-n>" : "\\<C-j>"',
- { expr = true, noremap = true },
- },
- ["<C-k>"] = {
- 'pumvisible() ? "\\<C-p>" : "\\<C-k>"',
- { expr = true, noremap = true },
- },
+ ["<C-j>"] = { 'pumvisible() ? "\\<C-n>" : "\\<C-j>"', { expr = true, noremap = true } },
+ ["<C-k>"] = { 'pumvisible() ? "\\<C-p>" : "\\<C-k>"', { expr = true, noremap = true } },
},
---@usage change or add keymappings for normal mode
@@ -148,18 +144,13 @@ function M.config()
["<A-j>"] = ":m '>+1<CR>gv-gv",
["<A-k>"] = ":m '<-2<CR>gv-gv",
},
+
---@usage change or add keymappings for command mode
command_mode = {
-- navigate tab completion with <c-j> and <c-k>
-- runs conditionally
- ["<C-j>"] = {
- 'pumvisible() ? "\\<C-n>" : "\\<C-j>"',
- { expr = true, noremap = true },
- },
- ["<C-k>"] = {
- 'pumvisible() ? "\\<C-p>" : "\\<C-k>"',
- { expr = true, noremap = true },
- },
+ ["<C-j>"] = { 'pumvisible() ? "\\<C-n>" : "\\<C-j>"', { expr = true, noremap = true } },
+ ["<C-k>"] = { 'pumvisible() ? "\\<C-p>" : "\\<C-k>"', { expr = true, noremap = true } },
},
}
diff --git a/.config/nvim/lua/lsp/init.lua b/.config/nvim/lua/lsp/init.lua
index 067375f..b693dec 100644
--- a/.config/nvim/lua/lsp/init.lua
+++ b/.config/nvim/lua/lsp/init.lua
@@ -5,10 +5,7 @@ function M.config()
vim.lsp.protocol.CompletionItemKind = options.lsp.completion.item_kind
for _, sign in ipairs(options.lsp.diagnostics.signs.values) do
- vim.fn.sign_define(
- sign.name,
- { texthl = sign.name, text = sign.text, numhl = sign.name }
- )
+ vim.fn.sign_define(sign.name, { texthl = sign.name, text = sign.text, numhl = sign.name })
end
require("lsp.handlers").setup()
@@ -37,7 +34,11 @@ local function lsp_highlight_document(client)
end
local function add_lsp_buffer_keybindings(bufnr)
- local wk = require "which-key"
+ local status_ok, wk = pcall(require, "which-key")
+ if not status_ok then
+ return
+ end
+
local keys = {
["K"] = { "<cmd>lua vim.lsp.buf.hover()<CR>", "Show hover" },
["gd"] = { "<cmd>lua vim.lsp.buf.definition()<CR>", "Goto Definition" },
@@ -54,14 +55,6 @@ local function add_lsp_buffer_keybindings(bufnr)
wk.register(keys, { mode = "n", buffer = bufnr })
end
-local function set_smart_cwd(client)
- local proj_dir = client.config.root_dir
- if options.lsp.smart_cwd and proj_dir ~= "/" then
- vim.api.nvim_set_current_dir(proj_dir)
- require("core.nvimtree").change_tree_dir(proj_dir)
- end
-end
-
function M.common_capabilities()
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities.textDocument.completion.completionItem.snippetSupport = true
@@ -111,18 +104,10 @@ function M.common_on_init(client, bufnr)
end
local formatters = options.lang[vim.bo.filetype].formatters
- if
- not vim.tbl_isempty(formatters)
- and formatters[1]["exe"] ~= nil
- and formatters[1].exe ~= ""
- then
+ if not vim.tbl_isempty(formatters) and formatters[1]["exe"] ~= nil and formatters[1].exe ~= "" then
client.resolved_capabilities.document_formatting = false
Log:get_default().info(
- string.format(
- "Overriding language server [%s] with format provider [%s]",
- client.name,
- formatters[1].exe
- )
+ string.format("Overriding language server [%s] with format provider [%s]", client.name, formatters[1].exe)
)
end
end
@@ -134,7 +119,6 @@ function M.common_on_attach(client, bufnr)
end
lsp_highlight_document(client)
add_lsp_buffer_keybindings(bufnr)
- set_smart_cwd(client)
require("lsp.null-ls").setup(vim.bo.filetype)
end
@@ -154,6 +138,17 @@ function M.setup(lang)
if lsp.provider ~= nil and lsp.provider ~= "" then
local lspconfig = require "lspconfig"
+
+ if not lsp.setup.on_attach then
+ lsp.setup.on_attach = M.common_on_attach
+ end
+ if not lsp.setup.on_init then
+ lsp.setup.on_init = M.common_on_init
+ end
+ if not lsp.setup.capabilities then
+ lsp.setup.capabilities = M.common_capabilities()
+ end
+
lspconfig[lsp.provider].setup(lsp.setup)
end
end
diff --git a/.config/nvim/lua/lsp/null-ls/formatters.lua b/.config/nvim/lua/lsp/null-ls/formatters.lua
index e69c824..cf62615 100644
--- a/.config/nvim/lua/lsp/null-ls/formatters.lua
+++ b/.config/nvim/lua/lsp/null-ls/formatters.lua
@@ -66,7 +66,7 @@ function M.list_configured(formatter_configs)
end
function M.setup(filetype, option)
- if formatters_by_ft[filetype] and not option.force_reload then
+ if not options.lang[filetype] or (formatters_by_ft[filetype] and not option.force_reload) then
return
end
diff --git a/.config/nvim/lua/lsp/null-ls/linters.lua b/.config/nvim/lua/lsp/null-ls/linters.lua
index a0675a7..a4eaa89 100644
--- a/.config/nvim/lua/lsp/null-ls/linters.lua
+++ b/.config/nvim/lua/lsp/null-ls/linters.lua
@@ -66,7 +66,7 @@ function M.list_configured(linter_configs)
end
function M.setup(filetype, option)
- if linters_by_ft[filetype] and not option.force_reload then
+ if not options.lang[filetype] or (linters_by_ft[filetype] and not option.force_reload) then
return
end
diff --git a/.config/nvim/lua/lsp/null-ls/services.lua b/.config/nvim/lua/lsp/null-ls/services.lua
index 80bf66e..a1e3a06 100644
--- a/.config/nvim/lua/lsp/null-ls/services.lua
+++ b/.config/nvim/lua/lsp/null-ls/services.lua
@@ -1,28 +1,20 @@
local M = {}
-local logger = require("core.log"):get_default()
-
local function find_root_dir()
- if options.builtin.rooter.active then
- --- use vim-rooter to set root_dir
- vim.cmd "let root_dir = FindRootDirectory()"
- return vim.api.nvim_get_var "root_dir"
- end
-
- -- TODO: Rework this to not make it javascript specific
- --- use LSP to set root_dir
+ local util = require "lspconfig/util"
local lsp_utils = require "lsp.utils"
- local ts_client = lsp_utils.get_active_client_by_ft "typescript"
- if ts_client == nil then
- logger.error "Unable to determine root directory since tsserver didn't start correctly"
- return nil
- end
- return ts_client.config.root_dir
+ local status_ok, ts_client = lsp_utils.is_client_active "typescript"
+ if status_ok then
+ return ts_client.config.root_dir
+ end
+ local dirname = vim.fn.expand "%:p:h"
+ return util.root_pattern "package.json"(dirname)
end
local function from_node_modules(command)
local root_dir = find_root_dir()
+
if not root_dir then
return nil
end
diff --git a/.config/nvim/lua/lsp/utils.lua b/.config/nvim/lua/lsp/utils.lua
index af265de..e024a0c 100644
--- a/.config/nvim/lua/lsp/utils.lua
+++ b/.config/nvim/lua/lsp/utils.lua
@@ -4,12 +4,13 @@ function M.is_client_active(name)
local clients = vim.lsp.get_active_clients()
for _, client in pairs(clients) do
if client.name == name then
- return true
+ return true, client
end
end
return false
end
+-- FIXME: this should return a list instead
function M.get_active_client_by_ft(filetype)
if not options.lang[filetype] or not options.lang[filetype].lsp then
return nil
diff --git a/.config/nvim/lua/plugins.lua b/.config/nvim/lua/plugins.lua
index ded8fe6..4effcb1 100644
--- a/.config/nvim/lua/plugins.lua
+++ b/.config/nvim/lua/plugins.lua
@@ -8,14 +8,12 @@ return {
"kabouzeid/nvim-lspinstall",
event = "VimEnter",
config = function()
- local lspinstall = require "lspinstall"
+ local lspinstall = require "core.lspinstall"
lspinstall.setup()
- if options.builtin.lspinstall.on_config_done then
- options.builtin.lspinstall.on_config_done(lspinstall)
- end
end,
},
+
{ "nvim-lua/popup.nvim" },
{ "nvim-lua/plenary.nvim" },
@@ -24,49 +22,40 @@ return {
"nvim-telescope/telescope.nvim",
config = function()
require("core.telescope").setup()
- if options.builtin.telescope.on_config_done then
- options.builtin.telescope.on_config_done(require "telescope")
- end
end,
+ disable = not options.builtin.telescope.active,
},
- -- Autocomplete
{
- "hrsh7th/nvim-compe",
- -- event = "InsertEnter",
- config = function()
- require("core.compe").setup()
- if options.builtin.compe.on_config_done then
- options.builtin.compe.on_config_done(require "compe")
- end
- end,
+ "hrsh7th/vim-vsnip",
+ -- wants = "friendly-snippets",
+ event = "InsertEnter",
+ disable = not options.builtin.compe.active,
+ },
+ {
+ "rafamadriz/friendly-snippets",
+ event = "InsertCharPre",
+ disable = not options.builtin.compe.active,
},
-- Autopairs
{
"windwp/nvim-autopairs",
-- event = "InsertEnter",
+ after = "nvim-compe",
config = function()
- require "core.autopairs"
- if options.builtin.autopairs.on_config_done then
- options.builtin.autopairs.on_config_done(require "nvim-autopairs")
- end
+ require("core.autopairs").setup()
end,
+ disable = not options.builtin.autopairs.active or not options.builtin.compe.active,
},
- -- Snippets
-
- { "hrsh7th/vim-vsnip", event = "InsertEnter" },
- { "rafamadriz/friendly-snippets", event = "InsertEnter" },
-
-- Treesitter
{
"nvim-treesitter/nvim-treesitter",
+ branch = "0.5-compat",
+ -- run = ":TSUpdate",
config = function()
require("core.treesitter").setup()
- if options.builtin.treesitter.on_config_done then
- options.builtin.treesitter.on_config_done(require "nvim-treesitter.configs")
- end
end,
},
@@ -78,33 +67,27 @@ return {
-- commit = "fd7f60e242205ea9efc9649101c81a07d5f458bb",
config = function()
require("core.nvimtree").setup()
- if options.builtin.nvimtree.on_config_done then
- options.builtin.nvimtree.on_config_done(require "nvim-tree.config")
- end
end,
+ disable = not options.builtin.nvimtree.active,
},
-
{
"lewis6991/gitsigns.nvim",
+
config = function()
require("core.gitsigns").setup()
- if options.builtin.gitsigns.on_config_done then
- options.builtin.gitsigns.on_config_done(require "gitsigns")
- end
end,
event = "BufRead",
+ disable = not options.builtin.gitsigns.active,
},
- -- whichkey
+ -- Whichkey
{
"folke/which-key.nvim",
config = function()
require("core.which-key").setup()
- if options.builtin.which_key.on_config_done then
- options.builtin.which_key.on_config_done(require "which-key")
- end
end,
event = "BufWinEnter",
+ disable = not options.builtin.which_key.active,
},
-- Comments
@@ -112,26 +95,18 @@ return {
"terrortylor/nvim-comment",
event = "BufRead",
config = function()
- local status_ok, nvim_comment = pcall(require, "nvim_comment")
- if not status_ok then
- local Log = require "core.log"
- Log:get_default().error "Failed to load nvim-comment"
- return
- end
- nvim_comment.setup()
- if options.builtin.comment.on_config_done then
- options.builtin.comment.on_config_done(nvim_comment)
- end
+ require("nvim_comment").setup()
end,
+ disable = not options.builtin.comment.active,
},
+ -- project.nvim
{
- "ahmedkhalf/lsp-rooter.nvim",
+ "ahmedkhalf/project.nvim",
config = function()
- if options.builtin.rooter.on_config_done then
- options.builtin.rooter.on_config_done()
- end
+ require("core.project").setup()
end,
+ disable = not options.builtin.project.active,
},
-- Icons
@@ -139,26 +114,22 @@ return {
-- Status Line and Bufferline
{
- "glepnir/galaxyline.nvim",
+ -- "hoob3rt/lualine.nvim",
+ "shadmansaleh/lualine.nvim",
+ -- "Lunarvim/lualine.nvim",
config = function()
- require "core.galaxyline"
- if options.builtin.galaxyline.on_config_done then
- options.builtin.galaxyline.on_config_done(require "galaxyline")
- end
+ require("core.lualine").setup()
end,
- event = "BufWinEnter",
- disable = not options.builtin.galaxyline.active,
+ disable = not options.builtin.lualine.active,
},
{
"romgrk/barbar.nvim",
config = function()
- require "core.bufferline"
- if options.builtin.bufferline.on_config_done then
- options.builtin.bufferline.on_config_done()
- end
+ require("core.bufferline").setup()
end,
event = "BufWinEnter",
+ disable = not options.builtin.bufferline.active,
},
-- Debugging
@@ -167,9 +138,6 @@ return {
-- event = "BufWinEnter",
config = function()
require("core.dap").setup()
- if options.builtin.dap.on_config_done then
- options.builtin.dap.on_config_done(require "dap")
- end
end,
disable = not options.builtin.dap.active,
},
@@ -182,30 +150,23 @@ return {
disable = not options.builtin.dap.active,
},
- -- Builtins, these do not load by default
-
-- Dashboard
{
"ChristianChiarulli/dashboard-nvim",
event = "BufWinEnter",
config = function()
require("core.dashboard").setup()
- if options.builtin.dashboard.on_config_done then
- options.builtin.dashboard.on_config_done(require "dashboard")
- end
end,
disable = not options.builtin.dashboard.active,
},
+ -- Terminal
{
"akinsho/nvim-toggleterm.lua",
event = "BufWinEnter",
config = function()
require("core.terminal").setup()
- if options.builtin.terminal.on_config_done then
- options.builtin.terminal.on_config_done(require "toggleterm")
- end
end,
disable = not options.builtin.terminal.active,
},
-}
+ }
diff --git a/.config/nvim/lua/utils/init.lua b/.config/nvim/lua/utils/init.lua
index 3cea053..65bc6f5 100644
--- a/.config/nvim/lua/utils/init.lua
+++ b/.config/nvim/lua/utils/init.lua
@@ -46,7 +46,7 @@ end
function utils.generate_settings()
-- Opens a file in append mode
- local file = io.open("settings.lua", "w")
+ local file = io.open("lv-settings.lua", "w")
-- sets the default output file as test.lua
io.output(file)
@@ -88,9 +88,12 @@ function utils.toggle_autoformat()
end
function utils.reload_config()
- vim.cmd "source ~/.config/nvim/lua/settings.lua"
- vim.cmd("source " .. USER_CONFIG_PATH)
- require("keymappings").setup()
+ require("core.lualine").config()
+
+ local config = require "config"
+ config:load()
+
+ require("keymappings").setup() -- this should be done before loading the plugins
vim.cmd "source ~/.config/nvim/lua/plugins.lua"
local plugins = require "plugins"
local plugin_loader = require("plugin-loader").init()
@@ -129,3 +132,5 @@ function utils.is_file(filename)
end
return utils
+
+-- TODO: find a new home for these autocommands