diff options
| -rw-r--r-- | .github/ISSUE_TEMPLATE/general-issue-form.yaml | 2 | ||||
| -rw-r--r-- | .github/workflows/install.yaml | 33 | ||||
| -rw-r--r-- | lua/lvim/config/defaults.lua | 2 | ||||
| -rw-r--r-- | lua/lvim/core/commands.lua | 6 | ||||
| -rw-r--r-- | lua/lvim/core/comment.lua | 7 | ||||
| -rw-r--r-- | lua/lvim/core/log.lua | 28 | ||||
| -rw-r--r-- | lua/lvim/core/telescope/custom-finders.lua | 50 | ||||
| -rw-r--r-- | lua/lvim/core/terminal.lua | 21 | ||||
| -rw-r--r-- | lua/lvim/lsp/config.lua | 30 | ||||
| -rw-r--r-- | lua/lvim/lsp/init.lua | 48 | ||||
| -rw-r--r-- | lua/lvim/lsp/providers/jsonls.lua | 7 | ||||
| -rw-r--r-- | lua/lvim/lsp/templates.lua | 10 | ||||
| -rw-r--r-- | lua/lvim/lsp/utils.lua | 53 | ||||
| -rw-r--r-- | lua/lvim/plugin-loader.lua | 1 | ||||
| -rw-r--r-- | lua/lvim/plugins.lua | 2 | ||||
| -rw-r--r-- | lua/lvim/utils/git.lua | 34 | ||||
| -rw-r--r-- | snapshots/default.json | 52 | ||||
| -rw-r--r-- | tests/lvim/helpers.lua | 18 | ||||
| -rw-r--r-- | utils/installer/config.example.lua | 16 | ||||
| -rw-r--r-- | utils/installer/config_win.example.lua | 16 | ||||
| -rwxr-xr-x | utils/installer/install-neovim-from-release | 4 | ||||
| -rwxr-xr-x | utils/installer/install.sh | 5 | 
22 files changed, 263 insertions, 182 deletions
| diff --git a/.github/ISSUE_TEMPLATE/general-issue-form.yaml b/.github/ISSUE_TEMPLATE/general-issue-form.yaml index be1dce81..ea8c9cba 100644 --- a/.github/ISSUE_TEMPLATE/general-issue-form.yaml +++ b/.github/ISSUE_TEMPLATE/general-issue-form.yaml @@ -33,7 +33,7 @@ body:    - type: input      id: nvim-version      attributes: -      label: Neovim version (>= 0.7) +      label: Neovim version (>= 0.7.2)        description: "Output of `nvim --version`"        placeholder: |          NVIM v0.8.0-dev+199-g2875d45e7 diff --git a/.github/workflows/install.yaml b/.github/workflows/install.yaml index 51336ed9..e21607ab 100644 --- a/.github/workflows/install.yaml +++ b/.github/workflows/install.yaml @@ -6,6 +6,7 @@ on:        - "master"        - "rolling"      paths: +      - '.github/workflows/**'        - 'lua/**'        - 'snapshots/**'        - 'tests/**' @@ -13,33 +14,53 @@ on:  jobs:    unixish: -    name: ${{ matrix.os }} ${{ matrix.runner }} +    name: ${{ matrix.os }} ${{ matrix.runner }} (${{ matrix.neovim }})      strategy:        fail-fast: false        matrix:          include: -          - runner: ubuntu-20.04 +          - runner: ubuntu-latest              os: linux -          - runner: macos-10.15 +            neovim: v0.7.0 +          - runner: macos-latest              os: osx +            neovim: v0.7.0 +          - runner: ubuntu-22.04 +            os: linux +            neovim: nightly +          - runner: macos-12 +            os: osx +            neovim: nightly      runs-on: ${{ matrix.runner }}      steps:        - uses: actions/checkout@v2 -      - name: Install neovim binary +      - name: Install neovim binary from release +        env: +          RELEASE_VER: ${{ matrix.neovim }}          run: |            echo "$HOME/.local/bin" >> $GITHUB_PATH            bash ./utils/installer/install-neovim-from-release        - name: Install LunarVim          timeout-minutes: 4 +        env: +          LV_BRANCH: ${{ github.head_ref || github.ref_name }} +          LV_REMOTE: ${{ github.event.pull_request.head.repo.full_name || github.repository }} +          LUNARVIM_LOG_LEVEL: "debug"          run: | -          ./utils/installer/install.sh --local --no-install-dependencies +          export PATH="$HOME/.local/bin:$PATH" + +          installer_url="https://raw.githubusercontent.com/${LV_REMOTE}/${LV_BRANCH}/utils/installer/install.sh" +          curl -LSsO "$installer_url" +          bash ./install.sh --no-install-dependencies        - name: Run unit-tests          # NOTE: make sure to adjust the timeout if you start adding a lot of tests          timeout-minutes: 4 -        run: make test +        run: | +          nvim --version +          make test    windows:      name: "windows-latest" diff --git a/lua/lvim/config/defaults.lua b/lua/lvim/config/defaults.lua index 7bccc895..7546644f 100644 --- a/lua/lvim/config/defaults.lua +++ b/lua/lvim/config/defaults.lua @@ -8,7 +8,7 @@ return {      ---@usage timeout number timeout in ms for the format request (Default: 1000)      timeout = 1000,      ---@usage filter func to select client -    filter = require("lvim.lsp.handlers").format_filter, +    filter = require("lvim.lsp.utils").format_filter,    },    keys = {}, diff --git a/lua/lvim/core/commands.lua b/lua/lvim/core/commands.lua index 80c5bb03..65f01355 100644 --- a/lua/lvim/core/commands.lua +++ b/lua/lvim/core/commands.lua @@ -65,6 +65,12 @@ M.defaults = {        print(require("lvim.utils.git").get_lvim_version())      end,    }, +  { +    name = "LvimOpenlog", +    fn = function() +      vim.fn.execute("edit " .. require("lvim.core.log").get_path()) +    end, +  },  }  function M.load(collection) diff --git a/lua/lvim/core/comment.lua b/lua/lvim/core/comment.lua index 0b454074..86a2091a 100644 --- a/lua/lvim/core/comment.lua +++ b/lua/lvim/core/comment.lua @@ -26,9 +26,12 @@ function M.config()        ---operator-pending mapping        ---Includes `gcc`, `gcb`, `gc[count]{motion}` and `gb[count]{motion}`        basic = true, -      ---extended mapping +      ---Extra mapping +      ---Includes `gco`, `gcO`, `gcA` +      extra = true, +      ---Extended mapping        ---Includes `g>`, `g<`, `g>[count]{motion}` and `g<[count]{motion}` -      extra = false, +      extended = false,      },      ---LHS of line and block comment toggle mapping in NORMAL/VISUAL mode diff --git a/lua/lvim/core/log.lua b/lua/lvim/core/log.lua index 49c70f83..48891139 100644 --- a/lua/lvim/core/log.lua +++ b/lua/lvim/core/log.lua @@ -12,17 +12,27 @@ vim.tbl_add_reverse_lookup(Log.levels)  local notify_opts = {}  function Log:set_level(level) -  -- package.loaded["lvim.core.log"] = nil -  local log_level = Log.levels[level:upper()] -  local status_ok, logger = pcall(require("structlog").get_logger, "lvim") -  if status_ok then -    for _, s in ipairs(logger.sinks) do -      s.level = log_level +  local logger_ok, _ = xpcall(function() +    local log_level = Log.levels[level:upper()] +    local structlog = require "structlog" +    if structlog then +      local logger = structlog.get_logger "lvim" +      for _, s in ipairs(logger.sinks) do +        s.level = log_level +      end      end +  end, debug.traceback) +  if not logger_ok then +    Log:debug("Unable to set logger's level: " .. debug.traceback())    end -  package.loaded["packer.log"] = nil -  require("packer.log").new { level = lvim.log.level } +  local packer_ok, _ = xpcall(function() +    package.loaded["packer.log"] = nil +    require("packer.log").new { level = lvim.log.level } +  end, debug.traceback) +  if not packer_ok then +    Log:debug("Unable to set packer's log level: " .. debug.traceback()) +  end  end  function Log:init() @@ -36,7 +46,7 @@ function Log:init()      lvim = {        sinks = {          structlog.sinks.Console(log_level, { -          async = false, +          async = true,            processors = {              structlog.processors.Namer(),              structlog.processors.StackWriter({ "line", "file" }, { max_parents = 0, stack_level = 2 }), diff --git a/lua/lvim/core/telescope/custom-finders.lua b/lua/lvim/core/telescope/custom-finders.lua index b0ee1c07..69428a44 100644 --- a/lua/lvim/core/telescope/custom-finders.lua +++ b/lua/lvim/core/telescope/custom-finders.lua @@ -55,33 +55,35 @@ function M.view_lunarvim_changelog()    }    opts.entry_maker = make_entry.gen_from_git_commits(opts) -  pickers.new(opts, { -    prompt_title = "~ LunarVim Changelog ~", +  pickers +    .new(opts, { +      prompt_title = "~ LunarVim Changelog ~", -    finder = finders.new_oneshot_job( -      vim.tbl_flatten { -        "git", -        "log", -        "--pretty=oneline", -        "--abbrev-commit", +      finder = finders.new_oneshot_job( +        vim.tbl_flatten { +          "git", +          "log", +          "--pretty=oneline", +          "--abbrev-commit", +        }, +        opts +      ), +      previewer = { +        previewers.git_commit_diff_as_was.new(opts),        }, -      opts -    ), -    previewer = { -      previewers.git_commit_diff_as_was.new(opts), -    }, -    --TODO: consider opening a diff view when pressing enter -    attach_mappings = function(_, map) -      map("i", "<enter>", copy_to_clipboard_action) -      map("n", "<enter>", copy_to_clipboard_action) -      map("i", "<esc>", actions._close) -      map("n", "<esc>", actions._close) -      map("n", "q", actions._close) -      return true -    end, -    sorter = sorters.generic_sorter, -  }):find() +      --TODO: consider opening a diff view when pressing enter +      attach_mappings = function(_, map) +        map("i", "<enter>", copy_to_clipboard_action) +        map("n", "<enter>", copy_to_clipboard_action) +        map("i", "<esc>", actions._close) +        map("n", "<esc>", actions._close) +        map("n", "q", actions._close) +        return true +      end, +      sorter = sorters.generic_sorter, +    }) +    :find()  end  -- Smartly opens either git_files or find_files, depending on whether the working directory is diff --git a/lua/lvim/core/terminal.lua b/lua/lvim/core/terminal.lua index 6c190dd5..6f543d06 100644 --- a/lua/lvim/core/terminal.lua +++ b/lua/lvim/core/terminal.lua @@ -41,7 +41,6 @@ M.config = function()      -- lvim.builtin.terminal.execs[#lvim.builtin.terminal.execs+1] = {"gdb", "tg", "GNU Debugger"}      execs = {        { "lazygit", "<leader>gg", "LazyGit", "float" }, -      { "lazygit", "<c-\\><c-g>", "LazyGit", "float" },      },    }  end @@ -76,23 +75,9 @@ M.add_exec = function(opts)      return    end -  local exec_func = string.format( -    "<cmd>lua require('lvim.core.terminal')._exec_toggle({ cmd = '%s', count = %d, direction = '%s'})<CR>", -    opts.cmd, -    opts.count, -    opts.direction -  ) - -  require("lvim.keymappings").load { -    normal_mode = { [opts.keymap] = exec_func }, -    term_mode = { [opts.keymap] = exec_func }, -  } - -  local wk_status_ok, wk = pcall(require, "which-key") -  if not wk_status_ok then -    return -  end -  wk.register({ [opts.keymap] = { opts.label } }, { mode = "n" }) +  vim.keymap.set({ "n", "t" }, opts.keymap, function() +    M._exec_toggle { cmd = opts.cmd, count = opts.count, direction = opts.direction } +  end, { desc = opts.label, noremap = true, silent = true })  end  M._exec_toggle = function(opts) diff --git a/lua/lvim/lsp/config.lua b/lua/lvim/lsp/config.lua index 1f84c4e2..e3cd503b 100644 --- a/lua/lvim/lsp/config.lua +++ b/lua/lvim/lsp/config.lua @@ -39,6 +39,8 @@ local skipped_servers = {  local skipped_filetypes = { "markdown", "rst", "plaintext" } +local join_paths = require("lvim.utils").join_paths +  return {    templates_dir = join_paths(get_runtime_dir(), "site", "after", "ftplugin"),    diagnostics = { @@ -119,6 +121,34 @@ return {      insert_mode = {},      visual_mode = {},    }, +  buffer_options = { +    --- enable completion triggered by <c-x><c-o> +    omnifunc = "v:lua.vim.lsp.omnifunc", +    --- use gq for formatting +    formatexpr = "v:lua.vim.lsp.formatexpr(#{timeout_ms:500})", +  }, +  ---@usage list of settings of nvim-lsp-installer +  installer = { +    setup = { +      ensure_installed = {}, +      ui = { +        icons = { +          server_installed = "✓", +          server_pending = "", +          server_uninstalled = "✗", +        }, +      }, +    }, +  }, +  nlsp_settings = { +    setup = { +      config_home = join_paths(get_config_dir(), "lsp-settings"), +      -- set to false to overwrite schemastore.nvim +      append_default_schemas = true, +      ignored_servers = {}, +      loader = "json", +    }, +  },    null_ls = {      setup = {},      config = {}, diff --git a/lua/lvim/lsp/init.lua b/lua/lvim/lsp/init.lua index 2f3258c9..53b4f248 100644 --- a/lua/lvim/lsp/init.lua +++ b/lua/lvim/lsp/init.lua @@ -3,6 +3,12 @@ local Log = require "lvim.core.log"  local utils = require "lvim.utils"  local autocmds = require "lvim.core.autocmds" +local function add_lsp_buffer_options(bufnr) +  for k, v in pairs(lvim.lsp.buffer_options) do +    vim.api.nvim_buf_set_option(bufnr, k, v) +  end +end +  local function add_lsp_buffer_keybindings(bufnr)    local mappings = {      normal_mode = "n", @@ -10,21 +16,10 @@ local function add_lsp_buffer_keybindings(bufnr)      visual_mode = "v",    } -  if lvim.builtin.which_key.active then -    -- Remap using which_key -    local status_ok, wk = pcall(require, "which-key") -    if not status_ok then -      return -    end -    for mode_name, mode_char in pairs(mappings) do -      wk.register(lvim.lsp.buffer_mappings[mode_name], { mode = mode_char, buffer = bufnr }) -    end -  else -    -- Remap using nvim api -    for mode_name, mode_char in pairs(mappings) do -      for key, remap in pairs(lvim.lsp.buffer_mappings[mode_name]) do -        vim.api.nvim_buf_set_keymap(bufnr, mode_char, key, remap[1], { noremap = true, silent = true }) -      end +  for mode_name, mode_char in pairs(mappings) do +    for key, remap in pairs(lvim.lsp.buffer_mappings[mode_name]) do +      local opts = { buffer = bufnr, desc = remap[2], noremap = true, silent = true } +      vim.keymap.set(mode_char, key, remap[1], opts)      end    end  end @@ -78,14 +73,7 @@ function M.common_on_attach(client, bufnr)      lu.setup_codelens_refresh(client, bufnr)    end    add_lsp_buffer_keybindings(bufnr) -end - -local function bootstrap_nlsp(opts) -  opts = opts or {} -  local lsp_settings_status_ok, lsp_settings = pcall(require, "nlspsettings") -  if lsp_settings_status_ok then -    lsp_settings.setup(opts) -  end +  add_lsp_buffer_options(bufnr)  end  function M.get_common_opts() @@ -117,15 +105,13 @@ function M.setup()      require("lvim.lsp.templates").generate_templates()    end -  bootstrap_nlsp { -    config_home = utils.join_paths(get_config_dir(), "lsp-settings"), -    append_default_schemas = true, -  } +  pcall(function() +    require("nlspsettings").setup(lvim.lsp.nlsp_settings.setup) +  end) -  require("nvim-lsp-installer").setup { -    -- use the default nvim_data_dir, since the server binaries are independent -    install_root_dir = utils.join_paths(vim.call("stdpath", "data"), "lsp_servers"), -  } +  pcall(function() +    require("nvim-lsp-installer").setup(lvim.lsp.installer.setup) +  end)    require("lvim.lsp.null-ls").setup() diff --git a/lua/lvim/lsp/providers/jsonls.lua b/lua/lvim/lsp/providers/jsonls.lua index 528c72a0..76aea25f 100644 --- a/lua/lvim/lsp/providers/jsonls.lua +++ b/lua/lvim/lsp/providers/jsonls.lua @@ -1,12 +1,7 @@ -local full_schemas = vim.tbl_deep_extend( -  "force", -  require("schemastore").json.schemas(), -  require("nlspsettings.jsonls").get_default_schemas() -)  local opts = {    settings = {      json = { -      schemas = full_schemas, +      schemas = require("schemastore").json.schemas(),      },    },    setup = { diff --git a/lua/lvim/lsp/templates.lua b/lua/lvim/lsp/templates.lua index 09f82430..578362a7 100644 --- a/lua/lvim/lsp/templates.lua +++ b/lua/lvim/lsp/templates.lua @@ -17,12 +17,20 @@ end  local skipped_filetypes = lvim.lsp.automatic_configuration.skipped_filetypes  local skipped_servers = lvim.lsp.automatic_configuration.skipped_servers +local ensure_installed_servers = lvim.lsp.installer.setup.ensure_installed + +---Check if we should skip generating an ftplugin file based on the server_name +---@param server_name string name of a valid language server +local function should_skip(server_name) +  -- ensure_installed_servers should take priority over skipped_servers +  return vim.tbl_contains(skipped_servers, server_name) and not vim.tbl_contains(ensure_installed_servers, 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) -  if vim.tbl_contains(skipped_servers, server_name) then +  if should_skip(server_name) then      return    end diff --git a/lua/lvim/lsp/utils.lua b/lua/lvim/lsp/utils.lua index d0e36241..fa1ac6d9 100644 --- a/lua/lvim/lsp/utils.lua +++ b/lua/lvim/lsp/utils.lua @@ -130,45 +130,46 @@ function M.setup_codelens_refresh(client, bufnr)  end  ---filter passed to vim.lsp.buf.format ----gives higher priority to null-ls ----@param clients table clients attached to a buffer ----@return table chosen clients -function M.format_filter(clients) -  return vim.tbl_filter(function(client) -    local status_ok, formatting_supported = pcall(function() -      return client.supports_method "textDocument/formatting" -    end) -    -- give higher prio to null-ls -    if status_ok and formatting_supported and client.name == "null-ls" then -      return "null-ls" -    else -      return status_ok and formatting_supported and client.name -    end -  end, clients) +---always selects null-ls if it's available and caches the value per buffer +---@param client table client attached to a buffer +---@return boolean if client matches +function M.format_filter(client) +  local filetype = vim.bo.filetype +  local n = require "null-ls" +  local s = require "null-ls.sources" +  local method = n.methods.FORMATTING +  local avalable_formatters = s.get_available(filetype, method) + +  if #avalable_formatters > 0 then +    return client.name == "null-ls" +  elseif client.supports_method "textDocument/formatting" then +    return true +  else +    return false +  end  end  ---Provide vim.lsp.buf.format for nvim <0.8  ---@param opts table  function M.format(opts) -  opts = opts or { filter = M.format_filter } +  opts = opts or {} +  opts.filter = opts.filter or M.format_filter    if vim.lsp.buf.format then      return vim.lsp.buf.format(opts)    end    local bufnr = opts.bufnr or vim.api.nvim_get_current_buf() -  local clients = vim.lsp.buf_get_clients(bufnr) + +  ---@type table|nil +  local clients = vim.lsp.get_active_clients { +    id = opts.id, +    bufnr = bufnr, +    name = opts.name, +  }    if opts.filter then -    clients = opts.filter(clients) -  elseif opts.id then -    clients = vim.tbl_filter(function(client) -      return client.id == opts.id -    end, clients) -  elseif opts.name then -    clients = vim.tbl_filter(function(client) -      return client.name == opts.name -    end, clients) +    clients = vim.tbl_filter(opts.filter, clients)    end    clients = vim.tbl_filter(function(client) diff --git a/lua/lvim/plugin-loader.lua b/lua/lvim/plugin-loader.lua index aa275da2..c10fe75e 100644 --- a/lua/lvim/plugin-loader.lua +++ b/lua/lvim/plugin-loader.lua @@ -20,6 +20,7 @@ function plugin_loader.init(opts)      package_root = opts.package_root or join_paths(vim.fn.stdpath "data", "site", "pack"),      compile_path = compile_path,      snapshot_path = snapshot_path, +    max_jobs = 40,      log = { level = "warn" },      git = {        clone_timeout = 300, diff --git a/lua/lvim/plugins.lua b/lua/lvim/plugins.lua index dd40b967..fec91bc9 100644 --- a/lua/lvim/plugins.lua +++ b/lua/lvim/plugins.lua @@ -12,6 +12,7 @@ local core_plugins = {    },    {      "lunarvim/onedarker.nvim", +    branch = "freeze",      config = function()        pcall(function()          if lvim and lvim.colorscheme == "onedarker" then @@ -37,6 +38,7 @@ local core_plugins = {    -- Telescope    {      "nvim-telescope/telescope.nvim", +    branch = "0.1.x",      config = function()        require("lvim.core.telescope").setup()      end, diff --git a/lua/lvim/utils/git.lua b/lua/lvim/utils/git.lua index 81b1faf4..99c178f3 100644 --- a/lua/lvim/utils/git.lua +++ b/lua/lvim/utils/git.lua @@ -13,16 +13,14 @@ local function git_cmd(opts)    opts.cwd = opts.cwd or get_lvim_base_dir()    local stderr = {} -  local stdout, ret = Job -    :new({ -      command = "git", -      args = opts.args, -      cwd = opts.cwd, -      on_stderr = function(_, data) -        table.insert(stderr, data) -      end, -    }) -    :sync() +  local stdout, ret = Job:new({ +    command = "git", +    args = opts.args, +    cwd = opts.cwd, +    on_stderr = function(_, data) +      table.insert(stderr, data) +    end, +  }):sync()    if not vim.tbl_isempty(stderr) then      Log:debug(stderr) @@ -32,20 +30,20 @@ local function git_cmd(opts)      Log:debug(stdout)    end -  return ret, stdout +  return ret, stdout, stderr  end  local function safe_deep_fetch() -  local ret, result = git_cmd { args = { "rev-parse", "--is-shallow-repository" } } +  local ret, result, error = git_cmd { args = { "rev-parse", "--is-shallow-repository" } }    if ret ~= 0 then -    Log:error "Git fetch failed! Check the log for further information" +    Log:error(vim.inspect(error))      return    end    -- git fetch --unshallow will cause an error on a a complete clone    local fetch_mode = result[1] == "true" and "--unshallow" or "--all"    ret = git_cmd { args = { "fetch", fetch_mode } }    if ret ~= 0 then -    Log:error "Git fetch failed! Check the log for further information" +    Log:error("Git fetch failed! Please pull the changes manually in " .. get_lvim_base_dir())      return    end    return true @@ -55,12 +53,12 @@ end  function M.update_base_lvim()    Log:info "Checking for updates" -  local ret = git_cmd { args = { "fetch" } } -  if ret ~= 0 then -    Log:error "Update failed! Check the log for further information" +  if not safe_deep_fetch() then      return    end +  local ret +    ret = git_cmd { args = { "diff", "--quiet", "@{upstream}" } }    if ret == 0 then      Log:info "LunarVim is already up-to-date" @@ -69,7 +67,7 @@ function M.update_base_lvim()    ret = git_cmd { args = { "merge", "--ff-only", "--progress" } }    if ret ~= 0 then -    Log:error "Update failed! Please pull the changes manually instead." +    Log:error("Update failed! Please pull the changes manually in " .. get_lvim_base_dir())      return    end diff --git a/snapshots/default.json b/snapshots/default.json index 533ff25e..564e26b3 100644 --- a/snapshots/default.json +++ b/snapshots/default.json @@ -1,27 +1,27 @@  {    "Comment.nvim": { -    "commit": "3c69bab" +    "commit": "2e0572c"    },    "FixCursorHold.nvim": { -    "commit": "1bfb32e" +    "commit": "5aa5ff1"    },    "LuaSnip": { -    "commit": "79b2019" +    "commit": "be3083b"    },    "alpha-nvim": { -    "commit": "ef27a59" +    "commit": "14974c3"    },    "bufferline.nvim": { -    "commit": "c78b3ec" +    "commit": "d7b775a"    },    "cmp-buffer": { -    "commit": "12463cf" +    "commit": "62fc67a"    },    "cmp-nvim-lsp": {      "commit": "affe808"    },    "cmp-path": { -    "commit": "466b6b8" +    "commit": "981baf9"    },    "cmp_luasnip": {      "commit": "a9de941" @@ -30,61 +30,61 @@      "commit": "bbda2b0"    },    "friendly-snippets": { -    "commit": "d27a83a" +    "commit": "40c306b"    },    "gitsigns.nvim": { -    "commit": "c18e016" +    "commit": "bb6c3bf"    },    "lua-dev.nvim": {      "commit": "54149d1"    },    "lualine.nvim": { -    "commit": "3362b28" +    "commit": "8d956c1"    },    "nlsp-settings.nvim": { -    "commit": "62d72bc" +    "commit": "6c4e1a4"    },    "null-ls.nvim": { -    "commit": "ff40739" +    "commit": "9c396ab"    },    "nvim-autopairs": { -    "commit": "fa6876f" +    "commit": "972a797"    },    "nvim-cmp": { -    "commit": "df6734a" +    "commit": "c4dcb12"    },    "nvim-dap": { -    "commit": "014ebd5" +    "commit": "c0f43f4"    },    "nvim-lsp-installer": { -    "commit": "2408a0f" +    "commit": "45571e1"    },    "nvim-lspconfig": { -    "commit": "10c3934" +    "commit": "3479473"    },    "nvim-notify": { -    "commit": "8960269" +    "commit": "74ba257"    },    "nvim-tree.lua": { -    "commit": "bdb6d4a" +    "commit": "08ab346"    },    "nvim-treesitter": { -    "commit": "518e275" +    "commit": "07b7221"    },    "nvim-ts-context-commentstring": {      "commit": "8834375"    },    "nvim-web-devicons": { -    "commit": "8d2c533" +    "commit": "2d02a56"    },    "onedarker.nvim": {      "commit": "b00dd21"    },    "packer.nvim": { -    "commit": "00ec5ad" +    "commit": "494fd59"    },    "plenary.nvim": { -    "commit": "968a4b9" +    "commit": "986ad71"    },    "popup.nvim": {      "commit": "b7404d3" @@ -93,7 +93,7 @@      "commit": "541115e"    },    "schemastore.nvim": { -    "commit": "a32911d" +    "commit": "fbc7c71"    },    "structlog.nvim": {      "commit": "232a8e2" @@ -102,10 +102,10 @@      "commit": "6a33ece"    },    "telescope.nvim": { -    "commit": "d96eaa9" +    "commit": "273ccff"    },    "toggleterm.nvim": { -    "commit": "aaeed9e" +    "commit": "9db6f98"    },    "which-key.nvim": {      "commit": "f03a259" diff --git a/tests/lvim/helpers.lua b/tests/lvim/helpers.lua index 2d8477de..0ce1a57b 100644 --- a/tests/lvim/helpers.lua +++ b/tests/lvim/helpers.lua @@ -3,16 +3,14 @@ local M = {}  function M.search_file(file, args)    local Job = require "plenary.job"    local stderr = {} -  local stdout, ret = Job -    :new({ -      command = "grep", -      args = { args, file }, -      cwd = get_cache_dir(), -      on_stderr = function(_, data) -        table.insert(stderr, data) -      end, -    }) -    :sync() +  local stdout, ret = Job:new({ +    command = "grep", +    args = { args, file }, +    cwd = get_cache_dir(), +    on_stderr = function(_, data) +      table.insert(stderr, data) +    end, +  }):sync()    return ret, stdout, stderr  end diff --git a/utils/installer/config.example.lua b/utils/installer/config.example.lua index 1bcff7f0..036b8ec2 100644 --- a/utils/installer/config.example.lua +++ b/utils/installer/config.example.lua @@ -84,6 +84,20 @@ lvim.builtin.treesitter.highlight.enabled = true  -- 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 = { +--     "sumeko_lua", +--     "jsonls", +-- } +-- -- change UI setting of `LspInstallInfo` +-- -- see <https://github.com/williamboman/nvim-lsp-installer#default-configuration> +-- 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.automatic_servers_installation = false @@ -94,7 +108,7 @@ lvim.builtin.treesitter.highlight.enabled = true  -- 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 skiipped for the current filetype +-- ---`:LvimInfo` lists which server(s) are skipped for the current filetype  -- vim.tbl_map(function(server)  --   return server ~= "emmet_ls"  -- end, lvim.lsp.automatic_configuration.skipped_servers) diff --git a/utils/installer/config_win.example.lua b/utils/installer/config_win.example.lua index 011ca0da..cb110664 100644 --- a/utils/installer/config_win.example.lua +++ b/utils/installer/config_win.example.lua @@ -99,6 +99,20 @@ lvim.builtin.treesitter.highlight.enabled = true  -- 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 = { +--     "sumeko_lua", +--     "jsonls", +-- } +-- -- change UI setting of `LspInstallInfo` +-- -- see <https://github.com/williamboman/nvim-lsp-installer#default-configuration> +-- 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.automatic_servers_installation = false @@ -109,7 +123,7 @@ lvim.builtin.treesitter.highlight.enabled = true  -- 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 skiipped for the current filetype +-- ---`:LvimInfo` lists which server(s) are skipped for the current filetype  -- vim.tbl_map(function(server)  --   return server ~= "emmet_ls"  -- end, lvim.lsp.automatic_configuration.skipped_servers) diff --git a/utils/installer/install-neovim-from-release b/utils/installer/install-neovim-from-release index 08f27149..076ac46d 100755 --- a/utils/installer/install-neovim-from-release +++ b/utils/installer/install-neovim-from-release @@ -72,6 +72,10 @@ function install_neovim() {    pushd "$DOWNLOAD_DIR"    tar -xzf "$DOWNLOAD_DIR/$ARCHIVE_NAME.tar.gz"    popd +  if [ ! -d "$DOWNLOAD_DIR/$RELEASE_NAME" ]; then +    # fallback to archive name +    RELEASE_NAME="$ARCHIVE_NAME" +  fi    # https://dev.to/ackshaey/macos-vs-linux-the-cp-command-will-trip-you-up-2p00    cp -r "$DOWNLOAD_DIR/$RELEASE_NAME/." "$LV_INSTALL_PREFIX"    echo "Installation complete!" diff --git a/utils/installer/install.sh b/utils/installer/install.sh index ec675e6d..dc342d12 100755 --- a/utils/installer/install.sh +++ b/utils/installer/install.sh @@ -15,6 +15,8 @@ declare -r LUNARVIM_CONFIG_DIR="${LUNARVIM_CONFIG_DIR:-"$XDG_CONFIG_HOME/lvim"}"  declare -r LUNARVIM_CACHE_DIR="${LUNARVIM_CACHE_DIR:-"$XDG_CACHE_HOME/lvim"}"  declare -r LUNARVIM_BASE_DIR="${LUNARVIM_BASE_DIR:-"$LUNARVIM_RUNTIME_DIR/lvim"}" +declare -r LUNARVIM_LOG_LEVEL="${LUNARVIM_LOG_LEVEL:-warn}" +  declare BASEDIR  BASEDIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"  BASEDIR="$(dirname -- "$(dirname -- "$BASEDIR")")" @@ -209,7 +211,7 @@ function check_neovim_min_version() {  function verify_core_plugins() {    msg "Verifying core plugins"    if ! bash "$LUNARVIM_BASE_DIR/utils/ci/verify_plugins.sh"; then -    echo "[ERROR]: Unable to verify plugins, makde sure to manually run ':PackerSync' when starting lvim for the first time." +    echo "[ERROR]: Unable to verify plugins, make sure to manually run ':PackerSync' when starting lvim for the first time."      exit 1    fi    echo "Verification complete!" @@ -423,6 +425,7 @@ function setup_lvim() {    echo "Preparing Packer setup"    "$INSTALL_PREFIX/bin/lvim" --headless \ +    -c "lua require('lvim.core.log'):set_level([[$LUNARVIM_LOG_LEVEL]])" \      -c 'autocmd User PackerComplete quitall' \      -c 'PackerSync' | 
