From ec43eb537756cea1cd88b9de31101f0bc9a089a5 Mon Sep 17 00:00:00 2001 From: Jeff LANCE Date: Fri, 21 Apr 2023 18:26:53 +0200 Subject: [PATCH] update config --- conf.d/config.lua | 409 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 409 insertions(+) create mode 100644 conf.d/config.lua diff --git a/conf.d/config.lua b/conf.d/config.lua new file mode 100644 index 0000000..d02c406 --- /dev/null +++ b/conf.d/config.lua @@ -0,0 +1,409 @@ +--[[ +lvim is the global options object + +Linters should be +filled in as strings with either +a global executable or a path to +an executable +]] +-- THESE ARE EXAMPLE CONFIGS FEEL FREE TO CHANGE TO WHATEVER YOU WANT + +-- Change general settings +-- + +lvim.log.level = "warn" +lvim.format_on_save.enabled = false +lvim.colorscheme = "onedark_dark" +lvim.background = "dark" +lvim.transparent_window = true +-- to disable icons and use a minimalist setup, uncomment the following +-- lvim.use_icons = false + + + +-- Change keymappings [view all the defaults by pressing Lk] +-- + +-- lvim.keys.normal_mode[""] = ":BufferLineCycleNext" +-- lvim.keys.normal_mode[""] = ":BufferLineCyclePrev" +-- unmap a default keymapping +-- vim.keymap.del("n", "") +-- override a default keymapping +-- lvim.keys.normal_mode[""] = ":q" -- or vim.keymap.set("n", "", ":q" ) + +-- Change Telescope navigation to use j and k for navigation and n and p for history in both input and normal mode. +-- we use protected-mode (pcall) just in case the plugin wasn't loaded yet. +-- local _, actions = pcall(require, "telescope.actions") +-- lvim.builtin.telescope.defaults.mappings = { +-- -- for input mode +-- i = { +-- [""] = actions.move_selection_next, +-- [""] = actions.move_selection_previous, +-- [""] = actions.cycle_history_next, +-- [""] = actions.cycle_history_prev, +-- }, +-- -- for normal mode +-- n = { +-- [""] = actions.move_selection_next, +-- [""] = actions.move_selection_previous, +-- }, +-- } + +-- Use which-key to add extra bindings with the leader-key prefix +-- lvim.builtin.which_key.mappings["P"] = { "Telescope projects", "Projects" } +-- lvim.builtin.which_key.mappings["t"] = { +-- name = "+Trouble", +-- r = { "Trouble lsp_references", "References" }, +-- f = { "Trouble lsp_definitions", "Definitions" }, +-- d = { "Trouble document_diagnostics", "Diagnostics" }, +-- q = { "Trouble quickfix", "QuickFix" }, +-- l = { "Trouble loclist", "LocationList" }, +-- w = { "Trouble workspace_diagnostics", "Workspace Diagnostics" }, +-- } + +-- leader key +lvim.leader = ";" +-- add your own keymapping +lvim.keys.insert_mode[";"] = "" +lvim.keys.normal_mode[""] = ":w" +lvim.keys.normal_mode[""] = "<<" +lvim.keys.normal_mode[""] = ">>" + +lvim.builtin.terminal.open_mapping = "" + +lvim.builtin.which_key.mappings[";"] = {} +lvim.builtin.which_key.mappings["D"] = lvim.builtin.which_key.mappings["d"] +lvim.builtin.which_key.mappings["G"] = lvim.builtin.which_key.mappings["g"] +lvim.builtin.which_key.mappings["P"] = lvim.builtin.which_key.mappings["p"] +lvim.builtin.which_key.mappings["S"] = lvim.builtin.which_key.mappings["s"] +lvim.builtin.which_key.mappings["d"] = { "Alpha", "Dashboard" } +lvim.builtin.which_key.mappings["g"] = {} +lvim.builtin.which_key.mappings["p"] = { "Telescope projects", "Projects" } +lvim.builtin.which_key.mappings["r"] = { "Telescope oldfiles", "Open recent file" } +lvim.builtin.which_key.mappings["s"] = { "echom 'Source file' so %", "Source file" } +lvim.builtin.which_key.mappings["x"] = { ":x", "Save and quit" } +lvim.builtin.which_key.mappings["z"] = { + name = "+Zettel", + c = { "lua require('neuron/cmd').new_edit('/home/jeff/Notes/')", "Create new note" }, + z = { "lua require'neuron/telescope'.find_zettels()", "Find notes" }, + Z = { "lua require'neuron/telescope'.find_zettels {insert = true}", "Insert the found note ID" }, + b = { "lua require'neuron/telescope'.find_backlinks()", "Backlinks of the current note" }, + B = { "lua require'neuron/telescope'.find_backlinks {insert = true}", "As b but insert the found ID" }, + t = { "lua require'neuron/telescope'.find_tags()", "Find all tags and insert" }, + s = { "lua require'neuron'.rib {address = '127.0.0.1:8200', verbose = true}", "Start neuron server" }, + n = { "lua require'neuron'.goto_next_extmark()", "Goto next link" }, + p = { "lua require'neuron'.goto_prev_extmark()", "Goto previous link" }, +} +-- lvim.builtin.which_key.mappings["v"] = { +-- name = "" +-- } + + + +-- Change theme settings +-- + +-- lvim.builtin.theme.options.dim_inactive = true +-- lvim.builtin.theme.options.style = "storm" + +-- TODO: User Config for predefined plugins +-- After changing plugin config exit and reopen LunarVim, Run :PackerInstall :PackerCompile +lvim.builtin.alpha.active = true +lvim.builtin.alpha.mode = "dashboard" +lvim.builtin.terminal.active = true +lvim.builtin.nvimtree.setup.view.side = "left" +lvim.builtin.nvimtree.setup.renderer.icons.show.git = false + +-- if you don't want all the parsers change this to a table of the ones you want +lvim.builtin.treesitter.ensure_installed = { + "bash", + "c", + "javascript", + "json", + "lua", + "python", + "typescript", + "tsx", + "css", + "rust", + "java", + "yaml", +} + +lvim.builtin.treesitter.ignore_install = { "haskell" } +lvim.builtin.treesitter.highlight.enable = true + + + +-- Change generic LSP settings +-- + +-- -- make sure server will always be installed even if the server is in skipped_servers list +-- lvim.lsp.installer.setup.ensure_installed = { +-- "sumneko_lua", +-- "jsonls", +-- } +-- -- change UI setting of `LspInstallInfo` +-- -- see +-- lvim.lsp.installer.setup.ui.check_outdated_servers_on_open = false +-- lvim.lsp.installer.setup.ui.border = "rounded" +-- lvim.lsp.installer.setup.ui.keymaps = { +-- uninstall_server = "d", +-- toggle_server_expand = "o", +-- } + +-- ---@usage disable automatic installation of servers +-- lvim.lsp.installer.setup.automatic_installation = false + +-- ---configure a server manually. !!Requires `:LvimCacheReset` to take effect!! +-- ---see the full default list `:lua print(vim.inspect(lvim.lsp.automatic_configuration.skipped_servers))` +-- vim.list_extend(lvim.lsp.automatic_configuration.skipped_servers, { "pyright" }) +-- local opts = {} -- check the lspconfig documentation for a list of all possible options +-- require("lvim.lsp.manager").setup("pyright", opts) + +-- ---remove a server from the skipped list, e.g. eslint, or emmet_ls. !!Requires `:LvimCacheReset` to take effect!! +-- ---`:LvimInfo` lists which server(s) are skipped for the current filetype +-- lvim.lsp.automatic_configuration.skipped_servers = vim.tbl_filter(function(server) +-- return server ~= "emmet_ls" +-- end, lvim.lsp.automatic_configuration.skipped_servers) + +-- -- you can set a custom on_attach function that will be used for all the language servers +-- -- See +-- lvim.lsp.on_attach_callback = function(client, bufnr) +-- local function buf_set_option(...) +-- vim.api.nvim_buf_set_option(bufnr, ...) +-- end +-- --Enable completion triggered by +-- buf_set_option("omnifunc", "v:lua.vim.lsp.omnifunc") +-- end + +-- -- set a formatter, this will override the language server formatting capabilities (if it exists) +-- local formatters = require "lvim.lsp.null-ls.formatters" +-- formatters.setup { +-- { command = "black", filetypes = { "python" } }, +-- { command = "isort", filetypes = { "python" } }, +-- { +-- -- each formatter accepts a list of options identical to https://github.com/jose-elias-alvarez/null-ls.nvim/blob/main/doc/BUILTINS.md#Configuration +-- command = "prettier", +-- ---@usage arguments to pass to the formatter +-- -- these cannot contain whitespaces, options such as `--line-width 80` become either `{'--line-width', '80'}` or `{'--line-width=80'}` +-- extra_args = { "--print-with", "100" }, +-- ---@usage specify which filetypes to enable. By default a providers will attach to all the filetypes it supports. +-- filetypes = { "typescript", "typescriptreact" }, +-- }, +-- } + +-- -- set additional linters +-- local linters = require "lvim.lsp.null-ls.linters" +-- linters.setup { +-- { command = "flake8", filetypes = { "python" } }, +-- { +-- -- each linter accepts a list of options identical to https://github.com/jose-elias-alvarez/null-ls.nvim/blob/main/doc/BUILTINS.md#Configuration +-- command = "shellcheck", +-- ---@usage arguments to pass to the formatter +-- -- these cannot contain whitespaces, options such as `--line-width 80` become either `{'--line-width', '80'}` or `{'--line-width=80'}` +-- extra_args = { "--severity", "warning" }, +-- }, +-- { +-- command = "codespell", +-- ---@usage specify which filetypes to enable. By default a providers will attach to all the filetypes it supports. +-- filetypes = { "javascript", "python" }, +-- }, +-- } + + + +-- Additional plugins settings +-- + +lvim.plugins = { + -- colorschemes + { + 'Abstract-IDE/Abstract-cs', + }, + { + 'ishan9299/modus-theme-vim', + }, + { + 'NLKNguyen/papercolor-theme', + }, + { + 'olimorris/onedarkpro.nvim', + priority = 1000, + config = function () + require("onedarkpro").setup({ + colors = { + onedark = { + bg = "#000000" -- black + }, + onelight = { + bg = "#FFFFFF" -- white + }, + -- cursorline = "#FF0000", + }, + styles = { + types = "NONE", + methods = "NONE", + numbers = "NONE", + strings = "NONE", + comments = "italic", + keywords = "bold,italic", + constants = "NONE", + functions = "italic", + operators = "NONE", + variables = "NONE", + parameters = "NONE", + conditionals = "italic", + virtual_text = "NONE", + }, + options = { + cursorline = true, + transparency = true, + } + }) + end + }, + -- asyncrun + { + "skywind3000/asyncrun.vim", + }, + -- trouble + { + 'folke/trouble.nvim', + cmd = "TroubleToggle", + }, + -- neuron: note taking + { + 'oberblastmeister/neuron.nvim', + config = function() + require("neuron").setup({ + virtual_titles = true, + mappings = true, + run = nil, + neuron_dir = "~/Notes", + leader = ";z", + }) + end, + }, + -- markdown previewer + { + 'iamcco/markdown-preview.nvim', + run = "cd app && npm install", + ft = "markdown", + config = function() + vim.g.mkdp_auto_start = 1 + end, + }, + -- vim-surround + { + 'tpope/vim-surround', + + -- make sure to change the value of `timeoutlen` if it's not triggering correctly, see https://github.com/tpope/vim-surround/issues/117 + -- setup = function() + -- vim.o.timeoutlen = 500 + -- end + }, + -- colorizer: color highlighter + { + 'norcalli/nvim-colorizer.lua', + config = function() + require("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 + mode = 'background', + }) + end, + }, + -- minimap + { + 'echasnovski/mini.map', + branch = "stable", + config = function() + require('mini.map').setup() + local map = require('mini.map') + map.setup({ + integrations = { + map.gen_integration.builtin_search(), + map.gen_integration.diagnostic({ + error = 'DiagnosticFloatingError', + warn = 'DiagnosticFloatingWarn', + info = 'DiagnosticFloatingInfo', + hint = 'DiagnosticFloatingHint', + }), + }, + symbols = { + encode = map.gen_encode_symbols.dot('4x2'), + }, + window = { + side = 'right', + width = 20, -- set to 1 for a pure scrollbar :) + winblend = 15, + show_integration_count = false, + }, + }) + end + }, + -- telescope-project + { + "nvim-telescope/telescope-project.nvim", + event = "BufWinEnter", + setup = function() + vim.cmd [[packadd telescope.nvim]] + end, + }, +} + + + +-- Autocommands (https://neovim.io/doc/user/autocmd.html) +-- + +-- minimap view +-- lvim.autocommands = { +-- { +-- {"BufEnter", "Filetype"}, +-- { +-- desc = "Open mini.map and exclude some filetypes", +-- pattern = { "*" }, +-- callback = function() +-- local exclude_ft = { +-- "qf", +-- "NvimTree", +-- "toggleterm", +-- "TelescopePrompt", +-- "alpha", +-- "netrw", +-- } + +-- local map = require('mini.map') +-- if vim.tbl_contains(exclude_ft, vim.o.filetype) then +-- vim.b.minimap_disable = true +-- map.close() +-- elseif vim.o.buftype == "" then +-- map.open() +-- end +-- end, +-- }, +-- }, +-- } + +-- wrap mode for json files +vim.api.nvim_create_autocmd("BufEnter", { + pattern = { "*.json", "*.jsonc" }, + -- enable wrap mode for json files only + command = "setlocal wrap", +}) + +-- bash highlight for zsh files +vim.api.nvim_create_autocmd("FileType", { + pattern = "zsh", + callback = function() + -- let treesitter use bash highlight for zsh files as well + require("nvim-treesitter.highlight").attach(0, "bash") + end, +})