From 9b528ecf57c58ab282d89f31b4e963662b1ace73 Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Sat, 25 Jun 2022 17:28:16 +0200 Subject: ci: update runners to include nightly neovim (#2756) * ci: update runners to include nightly neovim * ci: run installer from new remote * ci: update path rule to monitor workflows folder --- .github/workflows/install.yaml | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/.github/workflows/install.yaml b/.github/workflows/install.yaml index 51336ed9..7829644d 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,51 @@ 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 - run: | - echo "$HOME/.local/bin" >> $GITHUB_PATH - bash ./utils/installer/install-neovim-from-release + uses: rhysd/action-setup-vim@v1 + with: + neovim: true + version: ${{ matrix.neovim }} - 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 }} 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" -- cgit v1.2.3 From 12f8798bb05038a6269c6e50fe20c53ac47f75e3 Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Sun, 26 Jun 2022 13:53:44 +0200 Subject: fix(installer): always use check shallow clones (#2763) --- .github/workflows/install.yaml | 12 +++++++----- lua/lvim/core/log.lua | 28 +++++++++++++++++++--------- lua/lvim/utils/git.lua | 16 ++++++++-------- utils/installer/install-neovim-from-release | 4 ++++ utils/installer/install.sh | 3 +++ 5 files changed, 41 insertions(+), 22 deletions(-) diff --git a/.github/workflows/install.yaml b/.github/workflows/install.yaml index 7829644d..e21607ab 100644 --- a/.github/workflows/install.yaml +++ b/.github/workflows/install.yaml @@ -35,17 +35,19 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Install neovim binary - uses: rhysd/action-setup-vim@v1 - with: - neovim: true - version: ${{ matrix.neovim }} + - 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: | export PATH="$HOME/.local/bin:$PATH" 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/utils/git.lua b/lua/lvim/utils/git.lua index 81b1faf4..62915458 100644 --- a/lua/lvim/utils/git.lua +++ b/lua/lvim/utils/git.lua @@ -32,20 +32,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 +55,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 +69,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/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..5072bb2f 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")")" @@ -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' -- cgit v1.2.3 From c6431a09c7e6541dba46a7f7e6db7a34d0d00092 Mon Sep 17 00:00:00 2001 From: CPea <42694704+cpea2506@users.noreply.github.com> Date: Sun, 26 Jun 2022 19:08:54 +0700 Subject: feat(lsp): add option to override default `nvim-lsp-installer` settings (#2698) --- lua/lvim/lsp/config.lua | 13 +++++++++++++ lua/lvim/lsp/init.lua | 5 +---- lua/lvim/lsp/templates.lua | 10 +++++++++- utils/installer/config.example.lua | 16 +++++++++++++++- utils/installer/config_win.example.lua | 16 +++++++++++++++- 5 files changed, 53 insertions(+), 7 deletions(-) diff --git a/lua/lvim/lsp/config.lua b/lua/lvim/lsp/config.lua index 1f84c4e2..7dc4c217 100644 --- a/lua/lvim/lsp/config.lua +++ b/lua/lvim/lsp/config.lua @@ -119,6 +119,19 @@ return { insert_mode = {}, visual_mode = {}, }, + ---@usage list of settings of nvim-lsp-installer + installer = { + setup = { + ensure_installed = {}, + ui = { + icons = { + server_installed = "✓", + server_pending = "", + server_uninstalled = "✗", + }, + }, + }, + }, null_ls = { setup = {}, config = {}, diff --git a/lua/lvim/lsp/init.lua b/lua/lvim/lsp/init.lua index 2f3258c9..505c1bc1 100644 --- a/lua/lvim/lsp/init.lua +++ b/lua/lvim/lsp/init.lua @@ -122,10 +122,7 @@ function M.setup() append_default_schemas = true, } - 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"), - } + require("nvim-lsp-installer").setup(lvim.lsp.installer.setup) require("lvim.lsp.null-ls").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/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 +-- 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 +-- 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) -- cgit v1.2.3 From a99894b2c8215c5fa3966fbe9b5096d59bcca8dd Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Mon, 27 Jun 2022 19:18:20 +0200 Subject: feat(lsp): add option to override nlsp-settings (#2769) --- lua/lvim/lsp/config.lua | 11 +++++++++++ lua/lvim/lsp/init.lua | 19 ++++++------------- lua/lvim/lsp/providers/jsonls.lua | 7 +------ 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/lua/lvim/lsp/config.lua b/lua/lvim/lsp/config.lua index 7dc4c217..81a866f0 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 = { @@ -132,6 +134,15 @@ return { }, }, }, + 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 505c1bc1..1b1fb1bd 100644 --- a/lua/lvim/lsp/init.lua +++ b/lua/lvim/lsp/init.lua @@ -80,14 +80,6 @@ function M.common_on_attach(client, bufnr) 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 -end - function M.get_common_opts() return { on_attach = M.common_on_attach, @@ -117,12 +109,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(lvim.lsp.installer.setup) + 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 = { -- cgit v1.2.3 From 4c78e8a3d2af0d3fee7dd09dc0a7b7975023086b Mon Sep 17 00:00:00 2001 From: Felix Marezki Date: Wed, 29 Jun 2022 20:00:58 +0200 Subject: fix dap-install (#2772) --- snapshots/default.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snapshots/default.json b/snapshots/default.json index 533ff25e..2918f9b0 100644 --- a/snapshots/default.json +++ b/snapshots/default.json @@ -27,7 +27,7 @@ "commit": "a9de941" }, "dap-buddy.nvim": { - "commit": "bbda2b0" + "commit": "3679132" }, "friendly-snippets": { "commit": "d27a83a" -- cgit v1.2.3 From 709873702f692a013f059f8f5c5532f0366df35e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Rodr=C3=ADguez=20Rivero?= Date: Sat, 2 Jul 2022 09:23:04 +0200 Subject: feat: add commands to open/edit lvim logs (#2709) --- lua/lvim/core/commands.lua | 6 ++++++ 1 file changed, 6 insertions(+) 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) -- cgit v1.2.3 From efe7eea195e7810069319030dcddc831cdd06ac2 Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Sat, 2 Jul 2022 09:36:11 +0200 Subject: fix(lsp): update format filter for nightly (#2773) --- lua/lvim/lsp/utils.lua | 48 +++++++++++++++++++++++------------------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/lua/lvim/lsp/utils.lua b/lua/lvim/lsp/utils.lua index d0e36241..2a23e501 100644 --- a/lua/lvim/lsp/utils.lua +++ b/lua/lvim/lsp/utils.lua @@ -130,45 +130,43 @@ 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 +---always selects null-ls if it's available and caches the value per buffer +---@param client table client 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) +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_sources = s.get_available(filetype, method) + + if #avalable_sources > 0 then + return client.name == "null-ls" + else + return true + 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) + + 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) -- cgit v1.2.3 From ddc53a231dc439973b1b8034b5dfcb104eab74ce Mon Sep 17 00:00:00 2001 From: Yazeed1s <106896327+Yazeed1s@users.noreply.github.com> Date: Sun, 3 Jul 2022 09:30:28 -0400 Subject: fix: typo in utils/installer/install.sh (#2776) --- utils/installer/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/installer/install.sh b/utils/installer/install.sh index 5072bb2f..dc342d12 100755 --- a/utils/installer/install.sh +++ b/utils/installer/install.sh @@ -211,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!" -- cgit v1.2.3 From 8dca3a915cc30718b3f6392fdfd2ab9c26bf1f60 Mon Sep 17 00:00:00 2001 From: Ben Cooper <63478578+bncpr@users.noreply.github.com> Date: Sun, 3 Jul 2022 20:51:51 +0300 Subject: fix(core.comment): fix default extra mappings (#2768) Comment default config was set with extra = false with a comment suggesting this was for `g>`, `g<`, etc. mappings. However the `extra` argument is for the `gco`, `gcO`, and `gcA` mappings which are enabled by default and, in my opinion are very useful. The extended mappings are still disabled by default. --- lua/lvim/core/comment.lua | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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 -- cgit v1.2.3 From 6d43a7946489764b57d2771fcfba260109ef984b Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Mon, 4 Jul 2022 19:26:33 +0200 Subject: refactor(whichkey): use vim.keymap.set directly (#2786) --- lua/lvim/core/terminal.lua | 21 +++------------------ lua/lvim/lsp/init.lua | 19 ++++--------------- 2 files changed, 7 insertions(+), 33 deletions(-) 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", "gg", "LazyGit", "float" }, - { "lazygit", "", "LazyGit", "float" }, }, } end @@ -76,23 +75,9 @@ M.add_exec = function(opts) return end - local exec_func = string.format( - "lua require('lvim.core.terminal')._exec_toggle({ cmd = '%s', count = %d, direction = '%s'})", - 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/init.lua b/lua/lvim/lsp/init.lua index 1b1fb1bd..4d975963 100644 --- a/lua/lvim/lsp/init.lua +++ b/lua/lvim/lsp/init.lua @@ -10,21 +10,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 -- cgit v1.2.3 From e662039f5e7e623af48ab45db360ea717c482a83 Mon Sep 17 00:00:00 2001 From: rebuilt Date: Mon, 4 Jul 2022 11:29:10 -0700 Subject: Update general-issue-form.yaml Neovim version 0.7.0 is no longer sufficient. We are using features introduced in 0.7.2 Related: https://github.com/LunarVim/LunarVim/issues/2787 --- .github/ISSUE_TEMPLATE/general-issue-form.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 -- cgit v1.2.3 From 48320e5f882a911707c56baf3865f663acb39f08 Mon Sep 17 00:00:00 2001 From: Kai Date: Wed, 6 Jul 2022 15:18:25 +0200 Subject: fix(packer): add max_jobs = 40 (#2781) fixing :PackerSync on large config from being stuck while syncing --- lua/lvim/plugin-loader.lua | 1 + 1 file changed, 1 insertion(+) 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, -- cgit v1.2.3 From 6ab3e8a73920e3d2e02e57f7dd3a1f3d8e54ee63 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 23 Jul 2022 14:16:43 +0200 Subject: chore: bump plugins version (#2723) --- lua/lvim/core/telescope/custom-finders.lua | 50 ++++++++++++++------------- lua/lvim/plugins.lua | 2 ++ lua/lvim/utils/git.lua | 18 +++++----- snapshots/default.json | 54 +++++++++++++++--------------- tests/lvim/helpers.lua | 18 +++++----- 5 files changed, 71 insertions(+), 71 deletions(-) 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", "", copy_to_clipboard_action) - map("n", "", copy_to_clipboard_action) - map("i", "", actions._close) - map("n", "", 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", "", copy_to_clipboard_action) + map("n", "", copy_to_clipboard_action) + map("i", "", actions._close) + map("n", "", 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/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 62915458..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) diff --git a/snapshots/default.json b/snapshots/default.json index 2918f9b0..564e26b3 100644 --- a/snapshots/default.json +++ b/snapshots/default.json @@ -1,90 +1,90 @@ { "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" }, "dap-buddy.nvim": { - "commit": "3679132" + "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 -- cgit v1.2.3 From dec21bbab6cf9102e236806e20273d08f32f8716 Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Sun, 31 Jul 2022 14:27:59 +0200 Subject: feat(lsp): bind formatexpr and omnifunc by default (#2865) --- lua/lvim/config/defaults.lua | 2 +- lua/lvim/lsp/config.lua | 6 ++++++ lua/lvim/lsp/init.lua | 7 +++++++ lua/lvim/lsp/utils.lua | 11 +++++++---- 4 files changed, 21 insertions(+), 5 deletions(-) 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/lsp/config.lua b/lua/lvim/lsp/config.lua index 81a866f0..e3cd503b 100644 --- a/lua/lvim/lsp/config.lua +++ b/lua/lvim/lsp/config.lua @@ -121,6 +121,12 @@ return { insert_mode = {}, visual_mode = {}, }, + buffer_options = { + --- enable completion triggered by + 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 = { diff --git a/lua/lvim/lsp/init.lua b/lua/lvim/lsp/init.lua index 4d975963..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", @@ -67,6 +73,7 @@ function M.common_on_attach(client, bufnr) lu.setup_codelens_refresh(client, bufnr) end add_lsp_buffer_keybindings(bufnr) + add_lsp_buffer_options(bufnr) end function M.get_common_opts() diff --git a/lua/lvim/lsp/utils.lua b/lua/lvim/lsp/utils.lua index 2a23e501..fa1ac6d9 100644 --- a/lua/lvim/lsp/utils.lua +++ b/lua/lvim/lsp/utils.lua @@ -132,18 +132,20 @@ end ---filter passed to vim.lsp.buf.format ---always selects null-ls if it's available and caches the value per buffer ---@param client table client attached to a buffer ----@return table chosen clients +---@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_sources = s.get_available(filetype, method) + local avalable_formatters = s.get_available(filetype, method) - if #avalable_sources > 0 then + if #avalable_formatters > 0 then return client.name == "null-ls" - else + elseif client.supports_method "textDocument/formatting" then return true + else + return false end end @@ -159,6 +161,7 @@ function M.format(opts) local bufnr = opts.bufnr or vim.api.nvim_get_current_buf() + ---@type table|nil local clients = vim.lsp.get_active_clients { id = opts.id, bufnr = bufnr, -- cgit v1.2.3