3步美化:LspInstall命令,让Neovim包管理颜值飙升

3步美化:LspInstall命令,让Neovim包管理颜值飙升

【免费下载链接】mason-lspconfig.nvim Extension to mason.nvim that makes it easier to use lspconfig with mason.nvim. 【免费下载链接】mason-lspconfig.nvim 项目地址: https://gitcode.com/GitHub_Trending/ma/mason-lspconfig.nvim

你是否也曾被Neovim原生命令行界面的单调输出劝退?当执行:LspInstall安装语言服务器时,密密麻麻的文本堆砌和简陋的选择界面是否让你感到操作体验打折?本文将通过3个实用步骤,教你如何定制mason-lspconfig.nvim的用户界面,让包管理过程既高效又赏心悦目。

核心定制点解析

mason-lspconfig.nvim的:LspInstall命令界面主要由两部分构成:命令执行逻辑和用户交互界面。从lua/mason-lspconfig/api/command.lua源码中可以看到,第38-50行定义了服务器选择界面的核心逻辑,而通知系统则由lua/mason-lspconfig/notify.lua控制。这两个文件是我们美化界面的关键改造目标。

-- 服务器选择界面核心代码(command.lua 38-50行)
return a.promisify(vim.ui.select)(package_names, {
  prompt = ("Please select which server you want to install for language %q:"):format(server_name),
  format_item = function(package_name)
    local lspconfig_name = server_mapping.package_to_lspconfig[package_name]
    if registry.is_installed(package_name) then
      return ("%s (installed)"):format(lspconfig_name)
    else
      return lspconfig_name
    end
  end,
})

步骤1:改造通知系统

默认通知系统仅显示文本信息,我们可以通过自定义notify函数添加图标和色彩。修改lua/mason-lspconfig/notify.lua文件,添加Nerd Font图标和颜色编码:

local TITLE = "mason-lspconfig.nvim"
local icons = {
  info = "",
  warn = "",
  error = "",
  success = ""
}

return function(msg, level)
  level = level or vim.log.levels.INFO
  local icon = icons.info
  local hl = "Normal"
  
  if level == vim.log.levels.WARN then
    icon = icons.warn
    hl = "WarningMsg"
  elseif level == vim.log.levels.ERROR then
    icon = icons.error
    hl = "ErrorMsg"
  elseif level == vim.log.levels.INFO then
    icon = icons.info
    hl = "Directory"
  end
  
  vim.notify(("%s %s"):format(icon, msg), level, {
    title = TITLE,
    highlight = hl
  })
end

步骤2:美化服务器选择界面

默认选择界面缺乏视觉层次,我们可以通过修改lua/mason-lspconfig/api/command.lua中的format_item函数,添加色彩和图标区分已安装与未安装服务器:

format_item = function(package_name)
  local lspconfig_name = server_mapping.package_to_lspconfig[package_name]
  local installed = registry.is_installed(package_name)
  
  if installed then
    -- 已安装服务器:绿色文本+勾选图标
    return " " .. lspconfig_name .. " (已安装)"
  else
    -- 未安装服务器:蓝色文本+下载图标
    return " " .. lspconfig_name
  end
end

步骤3:添加进度展示

为提升安装体验,我们可以添加进度指示器。在lua/mason-lspconfig/api/command.lua的LspInstall函数中(95-109行),添加安装进度通知:

local LspInstall = a.scope(function(servers)
  a.wait(registry.refresh)
  local packages_to_install = parse_packages_to_install(servers)
  
  if #packages_to_install > 0 then
    notify("开始安装 " .. #packages_to_install .. " 个LSP服务器...", vim.log.levels.INFO)
    
    require("mason.api.command").MasonInstall(_.map(function(target)
      -- 安装进度通知
      notify("正在安装: " .. target.package, vim.log.levels.INFO)
      
      if target.version then
        return ("%s@%s"):format(target.package, target.version)
      else
        return target.package
      end
    end, packages_to_install))
    
    notify("所有服务器安装完成!", vim.log.levels.INFO)
    local ui = require "mason.ui"
    ui.set_view "LSP"
  end
end)

效果对比与总结

通过以上三步改造,我们成功实现了:

  • 通知信息图标化与彩色显示
  • 服务器选择界面的视觉区分
  • 安装过程的进度反馈

这些改进使得原本单调的命令行界面变得直观易用。你可以根据个人喜好进一步调整图标样式和颜色方案,打造属于自己的个性化Neovim包管理体验。

提示:所有修改都基于mason-lspconfig.nvim的源码结构,如需恢复默认设置,只需重新拉取官方仓库即可。

希望本文介绍的界面定制技巧能帮助你提升Neovim使用体验。如果觉得有用,不妨点赞收藏,关注获取更多编辑器定制技巧。

【免费下载链接】mason-lspconfig.nvim Extension to mason.nvim that makes it easier to use lspconfig with mason.nvim. 【免费下载链接】mason-lspconfig.nvim 项目地址: https://gitcode.com/GitHub_Trending/ma/mason-lspconfig.nvim

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值