diff options
| author | kylo252 <[email protected]> | 2021-10-24 08:37:02 +0200 | 
|---|---|---|
| committer | kylo252 <[email protected]> | 2021-10-24 08:37:02 +0200 | 
| commit | 1f2167df0ea3f837c9c78a0137a888ca05e5e83a (patch) | |
| tree | 6fd46809d7dd4ff7fffae00b257579397de793cd /lua | |
| parent | 30de3736baec9a72134205de91f3388e3ea68bcf (diff) | |
| parent | 3dd60bd3d4165b14844a514d519f3810b8142a02 (diff) | |
Merge remote-tracking branch 'origin/rolling'
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/lvim/config/defaults.lua | 4 | ||||
| -rw-r--r-- | lua/lvim/config/init.lua | 127 | ||||
| -rw-r--r-- | lua/lvim/config/supported_languages.lua | 94 | ||||
| -rw-r--r-- | lua/lvim/core/builtins/init.lua | 1 | ||||
| -rw-r--r-- | lua/lvim/core/log.lua | 81 | ||||
| -rw-r--r-- | lua/lvim/core/lualine/components.lua | 9 | ||||
| -rw-r--r-- | lua/lvim/core/notify.lua | 45 | ||||
| -rw-r--r-- | lua/lvim/lsp/config.lua | 15 | ||||
| -rw-r--r-- | lua/lvim/lsp/manager.lua | 13 | ||||
| -rw-r--r-- | lua/lvim/lsp/templates.lua | 38 | ||||
| -rw-r--r-- | lua/lvim/plugins.lua | 11 | ||||
| -rw-r--r-- | lua/onedarker/Notify.lua | 24 | ||||
| -rw-r--r-- | lua/onedarker/highlights.lua | 2 | ||||
| -rw-r--r-- | lua/onedarker/init.lua | 2 | 
14 files changed, 263 insertions, 203 deletions
| diff --git a/lua/lvim/config/defaults.lua b/lua/lvim/config/defaults.lua index effe1e77..a20e34e1 100644 --- a/lua/lvim/config/defaults.lua +++ b/lua/lvim/config/defaults.lua @@ -28,7 +28,7 @@ return {          float_opts = {},        },      }, -    ---@usage set to false to restore the default behavior of vim.notify -    override_notify = true, +    -- currently disabled due to instabilities +    override_notify = false,    },  } diff --git a/lua/lvim/config/init.lua b/lua/lvim/config/init.lua index c06d28ef..e89cb260 100644 --- a/lua/lvim/config/init.lua +++ b/lua/lvim/config/init.lua @@ -33,120 +33,31 @@ function M:init()    local lvim_lsp_config = require "lvim.lsp.config"    lvim.lsp = vim.deepcopy(lvim_lsp_config) -  local supported_languages = { -    "asm", -    "bash", -    "beancount", -    "bibtex", -    "bicep", -    "c", -    "c_sharp", -    "clojure", -    "cmake", -    "comment", -    "commonlisp", -    "cpp", -    "crystal", -    "cs", -    "css", -    "cuda", -    "d", -    "dart", -    "dockerfile", -    "dot", -    "elixir", -    "elm", -    "emmet", -    "erlang", -    "fennel", -    "fish", -    "fortran", -    "gdscript", -    "glimmer", -    "go", -    "gomod", -    "graphql", -    "haskell", -    "hcl", -    "heex", -    "html", -    "java", -    "javascript", -    "javascriptreact", -    "jsdoc", -    "json", -    "json5", -    "jsonc", -    "julia", -    "kotlin", -    "latex", -    "ledger", -    "less", -    "lua", -    "markdown", -    "nginx", -    "nix", -    "ocaml", -    "ocaml_interface", -    "perl", -    "php", -    "pioasm", -    "ps1", -    "puppet", -    "python", -    "ql", -    "query", -    "r", -    "regex", -    "rst", -    "ruby", -    "rust", -    "scala", -    "scss", -    "sh", -    "solidity", -    "sparql", -    "sql", -    "supercollider", -    "surface", -    "svelte", -    "swift", -    "tailwindcss", -    "terraform", -    "tex", -    "tlaplus", -    "toml", -    "tsx", -    "turtle", -    "typescript", -    "typescriptreact", -    "verilog", -    "vim", -    "vue", -    "yaml", -    "yang", -    "zig", -  } - +  local supported_languages = require "lvim.config.supported_languages"    require("lvim.lsp.manager").init_defaults(supported_languages)  end -local function deprecation_notice() -  local in_headless = #vim.api.nvim_list_uis() == 0 -  if in_headless then -    return +local function handle_deprecated_settings() +  local function deprecation_notice(setting) +    local in_headless = #vim.api.nvim_list_uis() == 0 +    if in_headless then +      return +    end + +    local msg = string.format( +      "Deprecation notice: [%s] setting is no longer supported. See https://github.com/LunarVim/LunarVim#breaking-changes", +      setting +    ) +    vim.schedule(function() +      vim.notify(msg, vim.log.levels.WARN) +    end)    end +  ---lvim.lang.FOO.lsp    for lang, entry in pairs(lvim.lang) do -    local deprecated_config = entry["lvim.lsp"] or {} +    local deprecated_config = entry["lsp"] or {}      if not vim.tbl_isempty(deprecated_config) then -      local msg = string.format( -        "Deprecation notice: [lvim.lang.%s.lsp] setting is no longer supported. See https://github.com/LunarVim/LunarVim#breaking-changes", -        lang -      ) -      vim.schedule(function() -        vim.notify(msg, vim.log.levels.WARN) -      end) +      deprecation_notice(string.format("lvim.lang.%s.lsp", lang))      end    end  end @@ -165,7 +76,7 @@ function M:load(config_path)      end    end -  deprecation_notice() +  handle_deprecated_settings()    autocmds.define_augroups(lvim.autocommands) diff --git a/lua/lvim/config/supported_languages.lua b/lua/lvim/config/supported_languages.lua new file mode 100644 index 00000000..db28df12 --- /dev/null +++ b/lua/lvim/config/supported_languages.lua @@ -0,0 +1,94 @@ +return { +  "asm", +  "bash", +  "beancount", +  "bibtex", +  "bicep", +  "c", +  "c_sharp", +  "clojure", +  "cmake", +  "comment", +  "commonlisp", +  "cpp", +  "crystal", +  "cs", +  "css", +  "cuda", +  "d", +  "dart", +  "dockerfile", +  "dot", +  "elixir", +  "elm", +  "emmet", +  "erlang", +  "fennel", +  "fish", +  "fortran", +  "gdscript", +  "glimmer", +  "go", +  "gomod", +  "graphql", +  "haskell", +  "hcl", +  "heex", +  "html", +  "java", +  "javascript", +  "javascriptreact", +  "jsdoc", +  "json", +  "json5", +  "jsonc", +  "julia", +  "kotlin", +  "latex", +  "ledger", +  "less", +  "lua", +  "markdown", +  "nginx", +  "nix", +  "ocaml", +  "ocaml_interface", +  "perl", +  "php", +  "pioasm", +  "ps1", +  "puppet", +  "python", +  "ql", +  "query", +  "r", +  "regex", +  "rst", +  "ruby", +  "rust", +  "scala", +  "scss", +  "sh", +  "solidity", +  "sparql", +  "sql", +  "supercollider", +  "surface", +  "svelte", +  "swift", +  "tailwindcss", +  "terraform", +  "tex", +  "tlaplus", +  "toml", +  "tsx", +  "turtle", +  "typescript", +  "typescriptreact", +  "verilog", +  "vim", +  "vue", +  "yaml", +  "yang", +  "zig", +} diff --git a/lua/lvim/core/builtins/init.lua b/lua/lvim/core/builtins/init.lua index 8f83072e..315deed3 100644 --- a/lua/lvim/core/builtins/init.lua +++ b/lua/lvim/core/builtins/init.lua @@ -15,6 +15,7 @@ local builtins = {    "lvim.core.bufferline",    "lvim.core.autopairs",    "lvim.core.comment", +  "lvim.core.notify",    "lvim.core.lualine",  } diff --git a/lua/lvim/core/log.lua b/lua/lvim/core/log.lua index 9ddc641f..9950af28 100644 --- a/lua/lvim/core/log.lua +++ b/lua/lvim/core/log.lua @@ -18,22 +18,22 @@ function Log:init()      return nil    end -  local nvim_notify_params = {} -  local nvim_notify_params_injecter = function(_, entry) -    for key, value in pairs(nvim_notify_params) do -      entry[key] = value +  local notify_handler = require "lvim.core.notify" + +  ---Check if notify is available +  ---@return boolean +  local is_notify_available = function() +    local in_headless = #vim.api.nvim_list_uis() == 0 +    --We can't rely on lvim.builtin.notify.active since this can be used before the config loader +    local has_notify_plugin = pcall(require, "notify") +    if not in_headless and has_notify_plugin then +      return true      end -    return entry +    return false    end -  local nvim_notify_default_namer = function(logger, entry) -    entry["title"] = logger.name -    return entry -  end - -  nvim_notify_params_injecter(nil, {})    local log_level = Log.levels[(lvim.log.level):upper() or "WARN"] -  structlog.configure { +  local lvim_log = {      lvim = {        sinks = {          structlog.sinks.Console(log_level, { @@ -49,25 +49,6 @@ function Log:init()              { level = structlog.formatters.FormatColorizer.color_level() }            ),          }), -        structlog.sinks.NvimNotify(Log.levels.INFO, { -          processors = { -            nvim_notify_default_namer, -            nvim_notify_params_injecter, -          }, -          formatter = structlog.formatters.Format( -- -            "%s", -            { "msg" }, -            { blacklist_all = true } -          ), -          params_map = { -            icon = "icon", -            keep = "keep", -            on_open = "on_open", -            on_close = "on_close", -            timeout = "timeout", -            title = "title", -          }, -        }),          structlog.sinks.File(Log.levels.TRACE, logfile, {            processors = {              structlog.processors.Namer(), @@ -83,15 +64,37 @@ function Log:init()      },    } +  if is_notify_available() then +    table.insert( +      lvim_log.lvim.sinks, +      structlog.sinks.NvimNotify(Log.levels.INFO, { +        processors = { +          notify_handler.default_namer, +          notify_handler.params_injecter, +        }, +        formatter = structlog.formatters.Format( -- +          "%s", +          { "msg" }, +          { blacklist_all = true } +        ), +        params_map = { +          icon = "icon", +          keep = "keep", +          on_open = "on_open", +          on_close = "on_close", +          timeout = "timeout", +          title = "title", +        }, +      }) +    ) +  end + +  structlog.configure(lvim_log) +    local logger = structlog.get_logger "lvim"    if lvim.log.override_notify then -    -- Overwrite vim.notify to use the logger -    vim.notify = function(msg, vim_log_level, opts) -      nvim_notify_params = opts or {} -      -- https://github.com/neovim/neovim/blob/685cf398130c61c158401b992a1893c2405cd7d2/runtime/lua/vim/lsp/log.lua#L5 -      logger:log(vim_log_level + 1, msg) -    end +    logger:log(Log.levels.INFO, "Ignoring request to override vim.notify with structlog due to instabilities")    end    return logger @@ -102,7 +105,7 @@ end  ---@param level string [same as vim.log.log_levels]  function Log:add_entry(level, msg, event)    if self.__handle then -    self.__handle:log(level, msg, event) +    self.__handle:log(level, vim.inspect(msg), event)      return    end @@ -112,7 +115,7 @@ function Log:add_entry(level, msg, event)    end    self.__handle = logger -  self.__handle:log(level, msg, event) +  self.__handle:log(level, vim.inspect(msg), event)  end  ---Retrieves the path of the logfile diff --git a/lua/lvim/core/lualine/components.lua b/lua/lvim/core/lualine/components.lua index b10fdad9..9366df56 100644 --- a/lua/lvim/core/lualine/components.lua +++ b/lua/lvim/core/lualine/components.lua @@ -122,11 +122,14 @@ return {    progress = { "progress", cond = conditions.hide_in_width, color = {} },    spaces = {      function() -      local label = "Spaces: "        if not vim.api.nvim_buf_get_option(0, "expandtab") then -        label = "Tab size: " +        return "Tab size: " .. vim.api.nvim_buf_get_option(0, "tabstop") .. " "        end -      return label .. vim.api.nvim_buf_get_option(0, "shiftwidth") .. " " +      local size = vim.api.nvim_buf_get_option(0, "shiftwidth") +      if size == 0 then +        size = vim.api.nvim_buf_get_option(0, "tabstop") +      end +      return "Spaces: " .. size .. " "      end,      cond = conditions.hide_in_width,      color = {}, diff --git a/lua/lvim/core/notify.lua b/lua/lvim/core/notify.lua new file mode 100644 index 00000000..5339357b --- /dev/null +++ b/lua/lvim/core/notify.lua @@ -0,0 +1,45 @@ +local M = {} + +function M.config() +  local pallete = require "onedarker.palette" + +  lvim.builtin.notify = { +    active = false, +    on_config_done = nil, +    -- TODO: update after https://github.com/rcarriga/nvim-notify/pull/24 +    opts = { +      ---@usage Animation style one of { "fade", "slide", "fade_in_slide_out", "static" } +      stages = "slide", + +      ---@usage timeout for notifications in ms, default 5000 +      timeout = 5000, + +      ---@usage highlight behind the window for stages that change opacity +      background_colour = pallete.fg, + +      ---@usage Icons for the different levels +      icons = { +        ERROR = "", +        WARN = "", +        INFO = "", +        DEBUG = "", +        TRACE = "✎", +      }, +    }, +  } +end + +M.params_injecter = function(_, entry) +  -- FIXME: this is currently getting ignored or is not passed correctly +  for key, value in pairs(lvim.builtin.notify.opts) do +    entry[key] = value +  end +  return entry +end + +M.default_namer = function(logger, entry) +  entry["title"] = logger.name +  return entry +end + +return M diff --git a/lua/lvim/lsp/config.lua b/lua/lvim/lsp/config.lua index 30336cc2..96430631 100644 --- a/lua/lvim/lsp/config.lua +++ b/lua/lvim/lsp/config.lua @@ -15,7 +15,6 @@ return {      underline = true,      severity_sort = true,    }, -  override = {},    document_highlight = true,    code_lens_refresh = true,    popup_border = "single", @@ -42,4 +41,18 @@ return {    null_ls = {      setup = {},    }, +  override = { +    "angularls", +    "ansiblels", +    "denols", +    "ember", +    "jedi_language_server", +    "pylsp", +    "rome", +    "sqlls", +    "sqls", +    "stylelint_lsp", +    "tailwindcss", +    "volar", +  },  } diff --git a/lua/lvim/lsp/manager.lua b/lua/lvim/lsp/manager.lua index 678a08af..0b11c175 100644 --- a/lua/lvim/lsp/manager.lua +++ b/lua/lvim/lsp/manager.lua @@ -1,7 +1,7 @@  local M = {}  local Log = require "lvim.core.log" -local lsp_utils = require "lvim.lsp.utils" +local lvim_lsp_utils = require "lvim.lsp.utils"  function M.init_defaults(languages)    for _, entry in ipairs(languages) do @@ -15,15 +15,6 @@ function M.init_defaults(languages)    end  end -local function is_overridden(server) -  local overrides = lvim.lsp.override -  if type(overrides) == "table" then -    if vim.tbl_contains(overrides, server) then -      return true -    end -  end -end -  ---Resolve the configuration for a server based on both common and user configuration  ---@param name string  ---@param user_config table [optional] @@ -54,7 +45,7 @@ end  function M.setup(server_name, user_config)    vim.validate { name = { server_name, "string" } } -  if lsp_utils.is_client_active(server_name) or is_overridden(server_name) then +  if lvim_lsp_utils.is_client_active(server_name) then      return    end diff --git a/lua/lvim/lsp/templates.lua b/lua/lvim/lsp/templates.lua index e0741b1b..3478f4fb 100644 --- a/lua/lvim/lsp/templates.lua +++ b/lua/lvim/lsp/templates.lua @@ -2,7 +2,7 @@ local M = {}  local Log = require "lvim.core.log"  local utils = require "lvim.utils" -local get_supported_filetypes = require("lvim.lsp.utils").get_supported_filetypes +local lvim_lsp_utils = require "lvim.lsp.utils"  local ftplugin_dir = lvim.lsp.templates_dir @@ -15,48 +15,20 @@ function M.remove_template_files()    end  end ----Checks if a server is ignored by default because of a conflict ----Only TSServer is enabled by default for the javascript-family ----@param server_name string -function M.is_ignored(server_name, filetypes) -  --TODO: this is easy to be made configurable once stable -  filetypes = filetypes or get_supported_filetypes(server_name) - -  if vim.tbl_contains(filetypes, "javascript") then -    if server_name == "tsserver" then -      return false -    else -      return true -    end -  end - -  local blacklist = { -    "jedi_language_server", -    "pylsp", -    "sqlls", -    "sqls", -    "angularls", -    "ansiblels", -  } -  return vim.tbl_contains(blacklist, server_name) -end -  ---Generates an ftplugin file based on the server_name in the selected directory  ---@param server_name string name of a valid language server, e.g. pyright, gopls, tsserver, etc.  ---@param dir string the full path to the desired directory  function M.generate_ftplugin(server_name, dir) -  -- we need to go through lspconfig to get the corresponding filetypes currently -  local filetypes = get_supported_filetypes(server_name) or {} -  if not filetypes then +  if vim.tbl_contains(lvim.lsp.override, server_name) then      return    end -  if M.is_ignored(server_name, filetypes) then +  -- we need to go through lspconfig to get the corresponding filetypes currently +  local filetypes = lvim_lsp_utils.get_supported_filetypes(server_name) or {} +  if not filetypes then      return    end -  -- print("got associated filetypes: " .. vim.inspect(filetypes)) -    for _, filetype in ipairs(filetypes) do      local filename = join_paths(dir, filetype .. ".lua")      local setup_cmd = string.format([[require("lvim.lsp.manager").setup(%q)]], server_name) diff --git a/lua/lvim/plugins.lua b/lua/lvim/plugins.lua index 616b2fa0..c50e74d8 100644 --- a/lua/lvim/plugins.lua +++ b/lua/lvim/plugins.lua @@ -8,7 +8,10 @@ return {    {      "williamboman/nvim-lsp-installer",    }, -  { "rcarriga/nvim-notify" }, +  { +    "rcarriga/nvim-notify", +    disable = not lvim.builtin.notify.active, +  },    { "Tastyep/structlog.nvim" },    { "nvim-lua/popup.nvim" }, @@ -96,10 +99,8 @@ return {    },    -- Whichkey -  -- TODO: change back to folke/which-key.nvim after folke got back    { -    "abzcoding/which-key.nvim", -    branch = "fix/neovim-6-position", +    "folke/which-key.nvim",      config = function()        require("lvim.core.which-key").setup()      end, @@ -132,7 +133,7 @@ return {    -- Status Line and Bufferline    {      -- "hoob3rt/lualine.nvim", -    "shadmansaleh/lualine.nvim", +    "nvim-lualine/lualine.nvim",      -- "Lunarvim/lualine.nvim",      config = function()        require("lvim.core.lualine").setup() diff --git a/lua/onedarker/Notify.lua b/lua/onedarker/Notify.lua new file mode 100644 index 00000000..4eebc00e --- /dev/null +++ b/lua/onedarker/Notify.lua @@ -0,0 +1,24 @@ +local Notify = { +  NotifyERRORBorder = { fg = C.error_red }, +  NotifyWARNBorder = { fg = C.warning_orange }, +  NotifyINFOBorder = { fg = C.green }, +  NotifyDEBUGBorder = { fg = C.purple_test }, +  NotifyTRACEBorder = { fg = C.purple }, +  NotifyERRORIcon = { fg = C.error_red }, +  NotifyWARNIcon = { fg = C.warning_orange }, +  NotifyINFOIcon = { fg = C.green }, +  NotifyDEBUGIcon = { fg = C.purple_test }, +  NotifyTRACEIcon = { fg = C.purple }, +  NotifyERRORTitle = { fg = C.error_red }, +  NotifyWARNTitle = { fg = C.warning_orange }, +  NotifyINFOTitle = { fg = C.green }, +  NotifyDEBUGTitle = { fg = C.purple_test }, +  NotifyTRACETitle = { fg = C.purple }, +  NotifyERRORBody = { fg = C.fg }, +  NotifyWARNBody = { fg = C.fg }, +  NotifyINFOBody = { fg = C.fg }, +  NotifyDEBUGBody = { fg = C.fg }, +  NotifyTRACEBody = { fg = C.fg }, +} + +return Notify diff --git a/lua/onedarker/highlights.lua b/lua/onedarker/highlights.lua index 28e7c07f..2869977c 100644 --- a/lua/onedarker/highlights.lua +++ b/lua/onedarker/highlights.lua @@ -42,7 +42,7 @@ local highlights = {    CursorIM = { fg = C.cursor_fg, bg = C.cursor_bg },    TermCursor = { fg = C.cursor_fg, bg = C.cursor_bg },    TermCursorNC = { fg = C.cursor_fg, bg = C.cursor_bg }, -  Conceal = { fg = C.accent }, +  Conceal = { fg = C.accent, bg = Config.transparent_background and "NONE" or C.bg },    Directory = { fg = C.blue },    SpecialKey = { fg = C.blue, style = "bold" },    Title = { fg = C.blue, style = "bold" }, diff --git a/lua/onedarker/init.lua b/lua/onedarker/init.lua index 73043ac3..dec56afa 100644 --- a/lua/onedarker/init.lua +++ b/lua/onedarker/init.lua @@ -13,6 +13,7 @@ local highlights = require "onedarker.highlights"  local Treesitter = require "onedarker.Treesitter"  local markdown = require "onedarker.markdown"  local Whichkey = require "onedarker.Whichkey" +local Notify = require "onedarker.Notify"  local Git = require "onedarker.Git"  local LSP = require "onedarker.LSP"  local diff = require "onedarker.diff" @@ -22,6 +23,7 @@ local skeletons = {    Treesitter,    markdown,    Whichkey, +  Notify,    Git,    LSP,    diff, | 
