当前位置: 首页 > news >正文

emacs-若干语言 lsp 配置备注 - liyan

rust

这里使用 rust-analyzer 作为 rust 的语言服务器,在安装 rust-mode后,通过绑定语言服务器信息,即可在打开由 cargo 创建的工程时,顺利进入 lsp-mode。需要关注的是,在非cargo创建的项目中,笔者的lsp-mode使用体验很差,甚至缺少代码补充、语法提示等功能。可能是rust-analyzer主要是针对cargo项目进行的设置,也可能是笔者设置的问题。

;; config for rust-lsp for emacs
;; rls install address: https://github.com/rust-lang-nursery/rls
(unless (package-installed-p 'rust-mode)(w-install 'rust-mode))
(add-to-list 'auto-mode-alist '("\.rs\'" . rust-mode))
(add-hook 'rust-mode-hook 'lsp)
(unless (package-installed-p 'rustic)(w-install 'rustic))
(unless (package-installed-p 'cargo)(w-install 'cargo))
(use-package rustic) ; lsp-compatible rust mode
(add-hook 'rust-mode-hook 'rustic-mode)
(add-hook 'rustic-mode-hook(lambda ()(setq rustic-lsp-server 'rust-analyzer) ; not rls(setq lsp-rust-analyzer-server-command '("/opt/homebrew/bin/rust-analyzer"));(setq rustic-format-on-save t) ; has annoying bug move point to other buffer bug(setq rustic-indent-offset 4)(setq rustic-match-angle-brackets nil);; thought this would be better, was wrong.;(setq rustic-compile-display-method 'popwin:display-buffer-1) ; display if possible in popup-win))
(use-package cargo)
(setq lsp-rust-server 'rust-analyzer)

golang

golang作为谷歌的亲儿子,是拥有官方维护的语言服务器的。而且gopls的使用体验非常好,完全不逊色与目前用户较多的golandvscode。配合dlv-mode使用,在调试上笔者认为能够更加的贴合unix风格,也更加方便。

;; Go - lsp-mode
;; Set up before-save hooks to format buffer and add/delete imports.
;; go install github.com/golang/tools/cmd/gopls
;;(require 'lsp-mode)
(setq lsp-ui-mode nil)
(defun lsp-go-install-save-hooks ()(add-hook 'before-save-hook #'lsp-format-buffer t t)(add-hook 'before-save-hook #'lsp-organize-imports t t))
(add-hook 'go-mode-hook #'lsp-go-install-save-hooks);; Start LSP Mode and YASnippet mode
(add-hook 'go-mode-hook #'lsp-deferred)
(add-hook 'go-mode-hook #'yas-minor-mode)

python

python的语言服务器,笔者目前使用的是lsp-python-ms进行配置的。这个插件解决了很多python lsp的问题(实际上,在碰到这个插件之前,笔者一度要放弃安装python lsp)。由于python是解释型语言,对象的成员都较为灵活,一般编码阶段很难确认对象的成员及其确切的类型。所以在pylsp使用过程中,往往会碰到无法有效提示的情况。满足一般提示需求吧。

;;; set env for python
;; copied from
;; https://gitee.com/nutora-emacs/lsp-python-ms
;; python lsp-server use python-lsp-server
;; install as: pip3 install python-lsp-server
(ensure-package-installed 'lsp-python-ms)
(require 'lsp-python-ms)
(setq lsp-python-ms-auto-install-server t)
(add-hook 'python-mode-hook #'lsp)

c/c++

实际上,笔者很喜欢c/c++的语言服务器,简单、方便,安装时无比的顺畅。完全符合笔者对c语言简单、强大、靠谱的印象。

;; set up lsp-mode for c/c++
;; brew install llvm
;; https://clangd.llvm.org/installation
(unless (package-installed-p 'eglot)(w-install 'eglot))
(require 'eglot)
(add-to-list 'eglot-server-programs '((c++-mode c-mode) "clangd"))
(add-hook 'c-mode-hook 'eglot-ensure)
(add-hook 'c++-mode-hook 'eglot-ensure)

使用的一点备注

这里唠叨一点

lsp 的管理单位是文件目录

这里对于golangrust尤为明显。在使用emacs打开一个关联了有效语言服务器的文件时,底部会提示为当前文件选择一个工作目录。尤其是,当路径A已经设为工作目录时,再将A/B设为工作目录,A/B的打开状态是会出现异常的。所以尽量保持每个工作目录的独特。
这里附上一些emacs lsp-mode中笔者常用的函数:

指令 说明
lsp-workspace-folders-remove 将工作目录移除
lsp-workspace-folders-add 添加工作目录
lsp-workspace-restart 重启工作目录

其他备注

当安装了一个语言的lsp服务及对应的emacs客户端配置时,如果打开对应语言的文件发现lsp没有生效,且打开toggle-debug-on-error设置开启也没有发现任何报错,笔者建议重启emacs。似乎emacs热加载功能往往不会如人所愿。

参考文献

emacs lsp mode
及其他网络文献

http://www.jsqmd.com/news/417092/

相关文章:

  • Linux sed 命令
  • 【面板数据】更新-省级产业结构高级化及合理化数据-含代码(2000-2024年)
  • AgentRun 实践指南:Agent 的宝藏工具——All-In-One Sandbox
  • Emacs 字符操作快捷键 - liyan
  • 全国艺术留学推荐,看看满足条件后哪个学校和中介通过率更高 - mypinpai
  • win10 安装ffmpeg
  • 浙江杭泰产品质量与种类情况,在多地服务的费用贵吗 - 工业推荐榜
  • Gemini 3.1 Flash Image (Nano Banana 2) API 评测:从参数到落地,我替你踩了坑 - 147API
  • 2026年化工生产用氨水采购指南:脱硫/电子级/食品级氨水专业供应商推荐 - 品牌推荐官
  • 岱宇国际在上海的口碑排名,看看其技术实力、品牌知名度和用户体验 - myqiye
  • 分析2026年宁德性价比高的全屋定制,生产厂合作案例多的排名 - 工业品牌热点
  • Rust枚举OptionT
  • 2026年GEO营销风向标:国内领先的GEO整合营销服务商排名及TOP 3选型指南 - 资讯焦点
  • 2026年最新喷胶厂商实力排行榜:基于环保性能与市场口碑的五大公司权威推荐榜单 - 十大品牌榜
  • 2026年全国聚丙烯纤维厂家权威榜单 靠谱优质实力强 抗裂增强适配多工程场景 - 深度智识库
  • 暑期亲子草原游,呼和浩特哪家旅行社有牧民体验?手把手教你选对呼和浩特亲子草原游,3步识别真动手、真牧户、真安全 - 资讯焦点
  • project管理工具哪个好?2026年project管理工具推荐与排名,解决定制化与安全痛点 - 十大品牌推荐
  • 2026实验室排风厂家五大推荐:迅领实验室领衔,打造安全高效实验环境 - 深度智识库
  • js--28
  • project管理软件哪个好?2026年project管理软件推荐与排名,解决复杂项目与效能度量核心痛点 - 十大品牌推荐
  • 计算机毕业设计springboot高校学生社团管理系统 基于SpringBoot框架的大学生社团活动管理平台设计与实现 高校学生组织数字化运营系统——以社团管理为核心的信息化解决方案
  • 2026清洁度分析仪源头厂家最新排名,西恩士这些企业值得关注 - 工业干货社
  • 聚焦2026国内诚信的间歇式智适应动力模块生产商,压力有关型动力模块/分布式动力模块,间歇式智适应动力模块供应商推荐 - 品牌推荐师
  • 2026年2月广信区门窗店推荐,门窗隔热条材质优劣解析 - 品牌鉴赏师
  • FastAPI + Ollama 实战:搭一个能查天气的AI助手
  • 跨组织协同如何选型?2026年project管理工具推荐与评价,聚焦集成与扩展痛点 - 十大品牌推荐
  • 2026年project管理软件哪个好?全面评测与推荐,针对成本效益与合规痛点 - 十大品牌推荐
  • 新佳源环保可靠吗,在泰州为企业提供环保服务有哪些优势 - 工业推荐榜
  • 讲讲河北唐道网络科技有限公司的核心竞争力是什么,产品价格贵不贵 - 工业设备
  • 别再让延迟毁了你的兄弟情!安利一款零门槛、低延迟的硬核神器:狠狠滴游戏联机