doom-emacs 搭建 rust 开发环境

2021-01-04 09:21:07 +08:00
 zjsxwc

安装 doom-emacs

我是 manjaro 系统,参考 https://github.com/hlissner/doom-emacs/#install

pacman -S git emacs ripgrep
pacman -S fd
git clone --depth 1 https://github.com/hlissner/doom-emacs ~/.emacs.d
~/.emacs.d/bin/doom install

安装 rls 这个 rust 语言服务器

rustup update
rustup component add rls rust-analysis rust-src

配置 doom-emacs

修改 ~/.doom.d/init.el (参考 https://emacs-lsp.github.io/lsp-mode/page/installation/

;;; 添加中国源
(setq package-archives '(("gnu" . "http://mirrors.ustc.edu.cn/elpa/gnu/")
                         ("melpa" . "http://mirrors.ustc.edu.cn/elpa/melpa/")
                         ("melpa-stable" . "http://mirrors.ustc.edu.cn/elpa/melpa-stable/")
                         ("org" . "http://mirrors.ustc.edu.cn/elpa/org/")))

(doom! :input
...
       :tools
       lsp  ;打开支持 rls 的 lsp 协议的三方包依赖
...
       :lang
       (rust +lsp)  ;对于 rust 语言使用 lsp 协议

更新 doom-emacs 的三方包

~/.emacs.d/bin/doom sync

对 rustic-mode 使用 rust-analyzer 作为 rustic-lsp-server,修改文件~/.doom.d/config.el最后添加一句

(setq rustic-lsp-server 'rust-analyzer)

使用方式

doom-emacs 使用 vim 快捷键编辑单个文件,使用 emacs 快捷键编辑整个项目,还能使用 emacs 庞大的 elisp 插件库。

默认 projectile 是以 git 项目作为当前一整个项目的,但 rustic 会把 rust-src 当作三方依赖,所以可以从我们当前代码跳到标准库代码定义中。

使用 <空格> + c 就可以唤出菜单进行对 rust symbol 语义上跳转,

比如 <空格> + c + d 会跳到 symbol 定义处, <空格> + c + D 会跳到使用 symbol 处(当然这个是我当前的版本快捷键,如果版本更新还是要看菜单显示出的快捷键)。

使用 <空格> + b 就可以唤出菜单进行进行 navigation,比如 <空格> + b + [ 就是回跳上一个页面,<空格> + b + ]就是回跳下一个页面。

使用 <空格> + s 就是全局搜索

使用 <空格> + p 就是项目管理

使用 <ctrl> + x + <ctrl> + c 就是退出 emacs

使用 <alt> + x 就是执行 emacs 三方插件提供的函数

2567 次点击
所在节点    程序员
2 条回复
zjsxwc
2021-01-04 09:45:57 +08:00
缺点还是有的,emacs 对于 rust 的代码补全只限于 symbol 范围提示,
不能和 jb 家的 ide 那样能够智能总结我的编码习惯猜出我要写什么变量名,

smallsneaker
2021-08-01 13:32:46 +08:00
awesome, thanks!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/741365

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX