kylo252 3 лет назад
Родитель
Сommit
ff9d883f64

+ 1 - 1
Makefile

@@ -1,4 +1,4 @@
-SHELL := /bin/bash
+SHELL := /usr/bin/env bash
 
 install:
 	@echo starting LunarVim installer

+ 6 - 0
README.md

@@ -28,10 +28,16 @@ You can find all the documentation for LunarVim at [lunarvim.org](https://www.lu
 
 Make sure you have the release version of Neovim (0.6.1+).
 
+Linux:
 ```bash
 bash <(curl -s https://raw.githubusercontent.com/lunarvim/lunarvim/master/utils/installer/install.sh)
 ```
 
+Windows (Powershell):
+```powershell
+Invoke-WebRequest https://raw.githubusercontent.com/LunarVim/LunarVim/master/utils/installer/install.ps1 -UseBasicParsing | Invoke-Expression
+```
+
 ## Install Language support
 
 - Enter `:LspInstall` followed by `<TAB>` to see your options for LSP

+ 121 - 0
lua/lvim/core/bufferline.lua

@@ -1,5 +1,38 @@
 local M = {}
 
+local function is_ft(b, ft)
+  return vim.bo[b].filetype == ft
+end
+
+local function diagnostics_indicator(_, _, diagnostics)
+  local result = {}
+  local symbols = { error = "", warning = "", info = "" }
+  for name, count in pairs(diagnostics) do
+    if symbols[name] and count > 0 then
+      table.insert(result, symbols[name] .. count)
+    end
+  end
+  result = table.concat(result, " ")
+  return #result > 0 and result or ""
+end
+
+local function custom_filter(buf, buf_nums)
+  local logs = vim.tbl_filter(function(b)
+    return is_ft(b, "log")
+  end, buf_nums)
+  if vim.tbl_isempty(logs) then
+    return true
+  end
+  local tab_num = vim.fn.tabpagenr()
+  local last_tab = vim.fn.tabpagenr "$"
+  local is_log = is_ft(buf, "log")
+  if last_tab == 1 then
+    return true
+  end
+  -- only show log buffers in secondary tabs
+  return (tab_num == last_tab and is_log) or (tab_num ~= last_tab and not is_log)
+end
+
 M.config = function()
   lvim.builtin.bufferline = {
     active = true,
@@ -7,11 +40,99 @@ M.config = function()
     keymap = {
       normal_mode = {},
     },
+    highlights = {
+      background = {
+        gui = "italic",
+      },
+      buffer_selected = {
+        gui = "bold",
+      },
+    },
+    options = {
+      numbers = "none", -- can be "none" | "ordinal" | "buffer_id" | "both" | function
+      close_command = "bdelete! %d", -- can be a string | function, see "Mouse actions"
+      right_mouse_command = "vert sbuffer %d", -- can be a string | function, see "Mouse actions"
+      left_mouse_command = "buffer %d", -- can be a string | function, see "Mouse actions"
+      middle_mouse_command = nil, -- can be a string | function, see "Mouse actions"
+      -- NOTE: this plugin is designed with this icon in mind,
+      -- and so changing this is NOT recommended, this is intended
+      -- as an escape hatch for people who cannot bear it for whatever reason
+      indicator_icon = "▎",
+      buffer_close_icon = "",
+      modified_icon = "●",
+      close_icon = "",
+      left_trunc_marker = "",
+      right_trunc_marker = "",
+      --- name_formatter can be used to change the buffer's label in the bufferline.
+      --- Please note some names can/will break the
+      --- bufferline so use this at your discretion knowing that it has
+      --- some limitations that will *NOT* be fixed.
+      name_formatter = function(buf) -- buf contains a "name", "path" and "bufnr"
+        -- remove extension from markdown files for example
+        if buf.name:match "%.md" then
+          return vim.fn.fnamemodify(buf.name, ":t:r")
+        end
+      end,
+      max_name_length = 18,
+      max_prefix_length = 15, -- prefix used when a buffer is de-duplicated
+      tab_size = 18,
+      diagnostics = "nvim_lsp",
+      diagnostics_update_in_insert = false,
+      diagnostics_indicator = diagnostics_indicator,
+      -- NOTE: this will be called a lot so don't do any heavy processing here
+      custom_filter = custom_filter,
+      offsets = {
+        {
+          filetype = "undotree",
+          text = "Undotree",
+          highlight = "PanelHeading",
+          padding = 1,
+        },
+        {
+          filetype = "NvimTree",
+          text = "Explorer",
+          highlight = "PanelHeading",
+          padding = 1,
+        },
+        {
+          filetype = "DiffviewFiles",
+          text = "Diff View",
+          highlight = "PanelHeading",
+          padding = 1,
+        },
+        {
+          filetype = "flutterToolsOutline",
+          text = "Flutter Outline",
+          highlight = "PanelHeading",
+        },
+        {
+          filetype = "packer",
+          text = "Packer",
+          highlight = "PanelHeading",
+          padding = 1,
+        },
+      },
+      show_buffer_icons = true, -- disable filetype icons for buffers
+      show_buffer_close_icons = true,
+      show_close_icon = false,
+      show_tab_indicators = true,
+      persist_buffer_sort = true, -- whether or not custom sorted buffers should persist
+      -- can also be a table containing 2 custom separators
+      -- [focused and unfocused]. eg: { '|', '|' }
+      separator_style = "thin",
+      enforce_regular_tabs = false,
+      always_show_bufferline = false,
+      sort_by = "id",
+    },
   }
 end
 
 M.setup = function()
   require("lvim.keymappings").load(lvim.builtin.bufferline.keymap)
+  require("bufferline").setup {
+    options = lvim.builtin.bufferline.options,
+    highlights = lvim.builtin.bufferline.highlights,
+  }
 
   if lvim.builtin.bufferline.on_config_done then
     lvim.builtin.bufferline.on_config_done()

+ 18 - 16
lua/lvim/core/info.lua

@@ -161,22 +161,24 @@ function M.toggle_popup(ft)
   local content_provider = function(popup)
     local content = {}
 
-    for _, section in ipairs {
-      M.banner,
-      { "" },
-      { "" },
-      header,
-      { "" },
-      lsp_info,
-      { "" },
-      override_info,
-      { "" },
-      formatters_info,
-      { "" },
-      linters_info,
-      { "" },
-      code_actions_info,
-    } do
+    for _, section in
+      ipairs {
+        M.banner,
+        { "" },
+        { "" },
+        header,
+        { "" },
+        lsp_info,
+        { "" },
+        override_info,
+        { "" },
+        formatters_info,
+        { "" },
+        linters_info,
+        { "" },
+        code_actions_info,
+      }
+    do
       vim.list_extend(content, section)
     end
 

+ 2 - 2
lua/lvim/core/lualine/components.lua

@@ -35,7 +35,7 @@ return {
   diff = {
     "diff",
     source = diff_source,
-    symbols = { added = "  ", modified = "", removed = " " },
+    symbols = { added = "  ", modified = "", removed = " " },
     diff_color = {
       added = { fg = colors.green },
       modified = { fg = colors.yellow },
@@ -74,7 +74,7 @@ return {
     function()
       local b = vim.api.nvim_get_current_buf()
       if next(vim.treesitter.highlighter.active[b]) then
-        return "  "
+        return ""
       end
       return ""
     end,

+ 0 - 28
lua/lvim/core/nvimtree.lua

@@ -136,34 +136,6 @@ function M.setup()
     }
   end
 
-  local function on_open()
-    if package.loaded["bufferline.state"] and lvim.builtin.nvimtree.setup.view.side == "left" then
-      require("bufferline.state").set_offset(lvim.builtin.nvimtree.setup.view.width + 1, "")
-    end
-  end
-
-  local function on_close()
-    local bufnr = vim.api.nvim_get_current_buf()
-    local ft = vim.api.nvim_buf_get_option(bufnr, "filetype")
-    if ft == "NvimTree" and package.loaded["bufferline.state"] then
-      require("bufferline.state").set_offset(0)
-    end
-  end
-
-  local tree_view = require "nvim-tree.view"
-  local default_open = tree_view.open
-  local default_close = tree_view.close
-
-  tree_view.open = function()
-    on_open()
-    default_open()
-  end
-
-  tree_view.close = function()
-    on_close()
-    default_close()
-  end
-
   if lvim.builtin.nvimtree.on_config_done then
     lvim.builtin.nvimtree.on_config_done(nvim_tree_config)
   end

+ 10 - 10
lua/lvim/core/which-key.lua

@@ -67,30 +67,30 @@ M.config = function()
       ["w"] = { "<cmd>w!<CR>", "Save" },
       ["q"] = { "<cmd>q!<CR>", "Quit" },
       ["/"] = { "<cmd>lua require('Comment.api').toggle_current_linewise()<CR>", "Comment" },
-      ["c"] = { "<cmd>BufferClose!<CR>", "Close Buffer" },
+      ["c"] = { "<cmd>bdelete!<CR>", "Close Buffer" },
       ["f"] = { require("lvim.core.telescope.custom-finders").find_project_files, "Find File" },
       ["h"] = { "<cmd>nohlsearch<CR>", "No Highlight" },
       b = {
         name = "Buffers",
-        j = { "<cmd>BufferPick<cr>", "Jump" },
+        j = { "<cmd>BufferLinePick<cr>", "Jump" },
         f = { "<cmd>Telescope buffers<cr>", "Find" },
-        b = { "<cmd>b#<cr>", "Previous" },
-        w = { "<cmd>BufferWipeout<cr>", "Wipeout" },
+        b = { "<cmd>BufferLineCyclePrev<cr>", "Previous" },
+        -- w = { "<cmd>BufferWipeout<cr>", "Wipeout" }, -- TODO: implement this for bufferline
         e = {
-          "<cmd>BufferCloseAllButCurrent<cr>",
-          "Close all but current",
+          "<cmd>BufferLinePickClose<cr>",
+          "Pick which buffer to close",
         },
-        h = { "<cmd>BufferCloseBuffersLeft<cr>", "Close all to the left" },
+        h = { "<cmd>BufferLineCloseLeft<cr>", "Close all to the left" },
         l = {
-          "<cmd>BufferCloseBuffersRight<cr>",
+          "<cmd>BufferLineCloseRight<cr>",
           "Close all to the right",
         },
         D = {
-          "<cmd>BufferOrderByDirectory<cr>",
+          "<cmd>BufferLineSortByDirectory<cr>",
           "Sort by directory",
         },
         L = {
-          "<cmd>BufferOrderByLanguage<cr>",
+          "<cmd>BufferLineSortByExtension<cr>",
           "Sort by language",
         },
       },

+ 2 - 2
lua/lvim/keymappings.lua

@@ -56,8 +56,8 @@ local defaults = {
     ["<C-Right>"] = ":vertical resize +2<CR>",
 
     -- Tab switch buffer
-    ["<S-l>"] = ":BufferNext<CR>",
-    ["<S-h>"] = ":BufferPrevious<CR>",
+    ["<S-l>"] = ":BufferLineCycleNext<CR>",
+    ["<S-h>"] = ":BufferLineCyclePrev<CR>",
 
     -- Move current line / block with Alt-j/k a la vscode.
     ["<A-j>"] = ":m .+1<CR>==",

+ 5 - 2
lua/lvim/lsp/config.lua

@@ -23,7 +23,7 @@ return {
       prefix = "",
       format = function(d)
         local t = vim.deepcopy(d)
-        local code = d.code or d.user_data.lsp.code
+        local code = d.code or (d.user_data and d.user_data.lsp.code)
         if code then
           t.message = string.format("%s [%s]", t.message, code):gsub("1. ", "")
         end
@@ -84,6 +84,7 @@ return {
     "quick_lint_js",
     "remark_ls",
     "rome",
+    "scry",
     "solang",
     "solidity_ls",
     "sorbet",
@@ -94,7 +95,9 @@ return {
     "stylelint_lsp",
     "tailwindcss",
     "tflint",
-    "volar",
+    "verible",
+    "vuels",
+    "zeta_note",
     "zk",
   },
 }

+ 6 - 180
lua/lvim/lsp/providers/jsonls.lua

@@ -1,186 +1,12 @@
-local default_schemas = nil
-local status_ok, jsonls_settings = pcall(require, "nlspsettings.jsonls")
-if status_ok then
-  default_schemas = jsonls_settings.get_default_schemas()
-end
-
-local schemas = {
-  {
-    description = "TypeScript compiler configuration file",
-    fileMatch = {
-      "tsconfig.json",
-      "tsconfig.*.json",
-    },
-    url = "https://json.schemastore.org/tsconfig.json",
-  },
-  {
-    description = "Lerna config",
-    fileMatch = { "lerna.json" },
-    url = "https://json.schemastore.org/lerna.json",
-  },
-  {
-    description = "Babel configuration",
-    fileMatch = {
-      ".babelrc.json",
-      ".babelrc",
-      "babel.config.json",
-    },
-    url = "https://json.schemastore.org/babelrc.json",
-  },
-  {
-    description = "ESLint config",
-    fileMatch = {
-      ".eslintrc.json",
-      ".eslintrc",
-    },
-    url = "https://json.schemastore.org/eslintrc.json",
-  },
-  {
-    description = "Bucklescript config",
-    fileMatch = { "bsconfig.json" },
-    url = "https://raw.githubusercontent.com/rescript-lang/rescript-compiler/8.2.0/docs/docson/build-schema.json",
-  },
-  {
-    description = "Prettier config",
-    fileMatch = {
-      ".prettierrc",
-      ".prettierrc.json",
-      "prettier.config.json",
-    },
-    url = "https://json.schemastore.org/prettierrc",
-  },
-  {
-    description = "Vercel Now config",
-    fileMatch = { "now.json" },
-    url = "https://json.schemastore.org/now",
-  },
-  {
-    description = "Stylelint config",
-    fileMatch = {
-      ".stylelintrc",
-      ".stylelintrc.json",
-      "stylelint.config.json",
-    },
-    url = "https://json.schemastore.org/stylelintrc",
-  },
-  {
-    description = "A JSON schema for the ASP.NET LaunchSettings.json files",
-    fileMatch = { "launchsettings.json" },
-    url = "https://json.schemastore.org/launchsettings.json",
-  },
-  {
-    description = "Schema for CMake Presets",
-    fileMatch = {
-      "CMakePresets.json",
-      "CMakeUserPresets.json",
-    },
-    url = "https://raw.githubusercontent.com/Kitware/CMake/master/Help/manual/presets/schema.json",
-  },
-  {
-    description = "Configuration file as an alternative for configuring your repository in the settings page.",
-    fileMatch = {
-      ".codeclimate.json",
-    },
-    url = "https://json.schemastore.org/codeclimate.json",
-  },
-  {
-    description = "LLVM compilation database",
-    fileMatch = {
-      "compile_commands.json",
-    },
-    url = "https://json.schemastore.org/compile-commands.json",
-  },
-  {
-    description = "Config file for Command Task Runner",
-    fileMatch = {
-      "commands.json",
-    },
-    url = "https://json.schemastore.org/commands.json",
-  },
-  {
-    description = "AWS CloudFormation provides a common language for you to describe and provision all the infrastructure resources in your cloud environment.",
-    fileMatch = {
-      "*.cf.json",
-      "cloudformation.json",
-    },
-    url = "https://raw.githubusercontent.com/awslabs/goformation/v5.2.9/schema/cloudformation.schema.json",
-  },
-  {
-    description = "The AWS Serverless Application Model (AWS SAM, previously known as Project Flourish) extends AWS CloudFormation to provide a simplified way of defining the Amazon API Gateway APIs, AWS Lambda functions, and Amazon DynamoDB tables needed by your serverless application.",
-    fileMatch = {
-      "serverless.template",
-      "*.sam.json",
-      "sam.json",
-    },
-    url = "https://raw.githubusercontent.com/awslabs/goformation/v5.2.9/schema/sam.schema.json",
-  },
-  {
-    description = "Json schema for properties json file for a GitHub Workflow template",
-    fileMatch = {
-      ".github/workflow-templates/**.properties.json",
-    },
-    url = "https://json.schemastore.org/github-workflow-template-properties.json",
-  },
-  {
-    description = "golangci-lint configuration file",
-    fileMatch = {
-      ".golangci.toml",
-      ".golangci.json",
-    },
-    url = "https://json.schemastore.org/golangci-lint.json",
-  },
-  {
-    description = "JSON schema for the JSON Feed format",
-    fileMatch = {
-      "feed.json",
-    },
-    url = "https://json.schemastore.org/feed.json",
-    versions = {
-      ["1"] = "https://json.schemastore.org/feed-1.json",
-      ["1.1"] = "https://json.schemastore.org/feed.json",
-    },
-  },
-  {
-    description = "Packer template JSON configuration",
-    fileMatch = {
-      "packer.json",
-    },
-    url = "https://json.schemastore.org/packer.json",
-  },
-  {
-    description = "NPM configuration file",
-    fileMatch = {
-      "package.json",
-    },
-    url = "https://json.schemastore.org/package.json",
-  },
-  {
-    description = "JSON schema for Visual Studio component configuration files",
-    fileMatch = {
-      "*.vsconfig",
-    },
-    url = "https://json.schemastore.org/vsconfig.json",
-  },
-  {
-    description = "Resume json",
-    fileMatch = { "resume.json" },
-    url = "https://raw.githubusercontent.com/jsonresume/resume-schema/v1.0.0/schema.json",
-  },
-}
-
-local function extend(tab1, tab2)
-  for _, value in ipairs(tab2) do
-    table.insert(tab1, value)
-  end
-  return tab1
-end
-
-local extended_schemas = extend(schemas, default_schemas)
-
+local full_schemas = vim.tbl_deep_extend(
+  "force",
+  require("schemastore").json.schemas(),
+  require("nlspsettings.jsonls").get_default_schemas()
+)
 local opts = {
   settings = {
     json = {
-      schemas = extended_schemas,
+      schemas = full_schemas,
     },
   },
   setup = {

+ 31 - 24
lua/lvim/plugins.lua

@@ -1,38 +1,39 @@
 local commit = {
-  barbar = "6e638309efcad2f308eb9c5eaccf6f62b794bbab",
+  bufferline = "7451dfc97d28e6783dbeb1cdcff12619a9323c98",
   cmp_buffer = "f83773e2f433a923997c5faad7ea689ec24d1785",
   cmp_luasnip = "d6f837f4e8fe48eeae288e638691b91b97d1737f",
   cmp_nvim_lsp = "ebdfc204afb87f15ce3d3d3f5df0b8181443b5ba",
-  cmp_path = "c5230cb439df9547294678d0f1c1465ad7989e5f",
-  comment = "90df2f87c0b17193d073d1f72cea2e528e5b162d",
-  dapinstall = "568d946a99edb6780912cb39ca68c368516cd853",
+  cmp_path = "466b6b8270f7ba89abd59f402c73f63c7331ff6e",
+  comment = "af51a8af6b213336345f36fc7aba65f9c3316696",
+  dapinstall = "24923c3819a450a772bb8f675926d530e829665f",
   dashboard_nvim = "d82ddae95fd4dc4c3b7bbe87f09b1840fbf20ecb",
   fixcursorhold = "0e4e22d21975da60b0fd2d302285b3b603f9f71e",
-  friendly_snippets = "a8efb538f4be58b4f4586bc964f9f10496c05e31",
-  gitsigns = "f43cee333fdfeb27aae86bab73a38c5885d5c7f4",
+  friendly_snippets = "2e575549910571ff5abb6b02178c69ad760a4e00",
+  gitsigns = "e2b2730254df7648c79794555978f10fceb4b163",
   lua_dev = "a0ee77789d9948adce64d98700cc90cecaef88d5",
-  lualine = "70691ae350fdbe1f15758e3b8e2973742a7967a9",
-  luasnip = "0222ee63c9e4b80e6000d064f8efd8edcc6d0c48",
-  nlsp_settings = "3a3942b5d1da30e3ca0dc431aada3191c5952054",
-  null_ls = "0adceda4fb3fdd25ff015e68ebe176268b12bb2c",
+  lualine = "98dc2dd3a2a07c251bcbd43048157aa56f901402",
+  luasnip = "5a6a1503fc6b005737fc823e1cb90ce86249c2a0",
+  nlsp_settings = "35f8082ae5c14d621ae6e5b973ca148eaaf34c9f",
+  null_ls = "b1dbbc3807fcb82d6f562145debe6321610bef98",
   nvim_autopairs = "97e454ce9b1371373105716d196c1017394bc947",
-  nvim_cmp = "7cb14b0c0f926e3cd5ac4d2e19634f82534c9d3c",
-  nvim_dap = "c9a58267524f560112ecb6faa36ab2b5bc2f78a3",
-  nvim_lsp_installer = "cc34adb58de9e5a42af730c97ec04fc500bb5e63",
-  nvim_lspconfig = "ea29110765cb42e842dc8372c793a6173d89b0c4",
-  nvim_notify = "15f52efacd169ea26b0f4070451d3ea53f98cd5a",
-  nvim_tree = "0a2f6b0b6ba558a88c77a6b262af647760e6eca8",
-  nvim_treesitter = "9e90866bcea3e392126c4eb90fde56b1c0b56b69",
+  nvim_cmp = "a7fea2ca9f29869c75c3e2ccb683e7740868ba8b",
+  nvim_dap = "ee39d5d570d07161e16eb73054c295c6561eb2b4",
+  nvim_lsp_installer = "8c32ee62b8a08f3a3d66d87a83b59bb37d57a388",
+  nvim_lspconfig = "2008c5cebf2b84c5e5f8a566480b022ab2e7ebab",
+  nvim_notify = "2edf33d0eb3c358716d4474d6081d361c80f7aa3",
+  nvim_tree = "7a19c3e747f8953ed50c2f97a7d070f7a86190e8",
+  nvim_treesitter = "b1ef4033222fa86cbe5c6a0abf70098f157546d4",
   nvim_ts_context_commentstring = "097df33c9ef5bbd3828105e4bee99965b758dc3f",
-  nvim_web_devicons = "634e26818f2bea9161b7efa76735746838971824",
-  packer = "7182f0ddbca2dd6f6723633a84d47f4d26518191",
-  plenary = "563d9f6d083f0514548f2ac4ad1888326d0a1c66",
+  nvim_web_devicons = "e3294f687626b40754bb40ac2d636d166098b2fb",
+  packer = "e5c8c01374350b4fcfd56da2afc87434c51b3972",
+  plenary = "e86dc9b11241ff69ece50c15a5cdd49d20d4c27c",
   popup = "b7404d35d5d3548a82149238289fa71f7f6de4ac",
   project = "cef52b8da07648b750d7f1e8fb93f12cb9482988",
+  schemastore = "a678baca09b8458b4c8695c259c88a0d8eb8acb9",
   structlog = "6f1403a192791ff1fa7ac845a73de9e860f781f1",
-  telescope = "0011b1148d3975600f5a9f0be8058cdaac4e30d9",
+  telescope = "f262e7d56d37625613c5de0df5a933cccacf13c5",
   telescope_fzf_native = "b8662b076175e75e6497c59f3e2799b879d7b954",
-  toggleterm = "f23866b8fbb0703be4e15d50c814ffe496242a67",
+  toggleterm = "d2ceb2ca3268d09db3033b133c0ee4642e07f059",
   which_key = "28d2bd129575b5e9ebddd88506601290bb2bb221",
 }
 
@@ -223,8 +224,8 @@ return {
   },
 
   {
-    "romgrk/barbar.nvim",
-    commit = commit.barbar,
+    "akinsho/bufferline.nvim",
+    commit = commit.bufferline,
     config = function()
       require("lvim.core.bufferline").setup()
     end,
@@ -272,4 +273,10 @@ return {
     end,
     disable = not lvim.builtin.terminal.active,
   },
+
+  -- SchemaStore
+  {
+    "b0o/schemastore.nvim",
+    commit = commit.schemastore,
+  },
 }

+ 1 - 1
lua/lvim/utils/git.lua

@@ -89,7 +89,7 @@ end
 ---Get the current Lunarvim development branch
 ---@return string|nil
 function M.get_lvim_branch()
-  local ret, branch = git_cmd { args = { "branch", "--show-current" } }
+  local ret, branch = git_cmd { args = { "rev-parse", "--abbrev-ref", "HEAD" } }
   if ret ~= 0 or (not branch or branch[1] == "") then
     Log:error "Unable to retrieve the name of the current branch. Check the log for further information"
     return

+ 7 - 4
utils/installer/install.ps1

@@ -1,3 +1,4 @@
+#Requires -Version 7.1
 $ErrorActionPreference = "Stop" # exit when command fails
 
 # set script variables
@@ -139,9 +140,10 @@ function check_system_deps() {
 }
 
 function install_nodejs_deps() {
+    $dep = "node"
     try {
-        check_system_dep "node"
-        Invoke-Command npm install -g neovim tree-sitter-cli -ErrorAction Break
+        check_system_dep "$dep"
+        Invoke-Command -ScriptBlock { npm install --global neovim tree-sitter-cli } -ErrorAction Break
     }
     catch {
         print_missing_dep_msg "$dep"
@@ -149,9 +151,10 @@ function install_nodejs_deps() {
 }
 
 function install_python_deps() {
+    $dep = "pip"
     try {
-        check_system_dep "pip"
-        Invoke-Command python -m pip install --user pynvim -ErrorAction Break
+        check_system_dep "$dep"
+        Invoke-Command -ScriptBlock { python -m pip install --user pynvim } -ErrorAction Break
     }
     catch {
         print_missing_dep_msg "$dep"