Emacs IDE

Table of Contents

1 项目管理

使用 projectile 管理项目,非常方便。svn/git 项目会认为是一个 projectile,而且 ignore 的文件和目录也会自动过滤。 你也可以手动添加 .projectile 标识。

leading 键我映射成了 C-c p<f8> 。比较常用的有:

p 切换项目
f 从项目中打开文件
b 在项目 buffer 中切换
i 使缓存失效,在项目有很多文件变更时执行一次,重建缓存

2 编程

2.1 LSP 使用

语言的开发环境配置一直很费时间,我记得以前刚配置 C/C++ 的开发环境时,折腾了一个月左右时间才找到一个相对比较 满意的开发环境(折腾完之后使用起来可真爽啊): xcscope + etags + c++-mode

写 Python 的时候也折腾了长时间的缩进问题。 Go 就更不用说了···,Go 工具链很完整,但由于 Go 的版本升级很快,工具链根本跟不上, gocode 已经迁移了三次地址了。

后来看到了 LSP(Language Server Protocol) 项目,感觉这个项目才是终极解法:插件化,C/S 模式。 目前已经默认支持 Python 和 Go 了,虽然还是有许许多多的 Bug,但比起 2018 年我试的时候已经成熟太多了。有社区的驱动,发展很快。

  1. lsp-workspace-folders-remove 可以移出之前添加的 workspace,但是如果遇到大的目录变更,一个一个的移出很慢。 目前似乎没有提供一次性 remove all 的方法。一个解决办法是删除 lsp 的存储文件(lsp 提供了 lsp-session-file 变量来定义文件路径, 默认在 .emacs.d/.lsp-session-* 路径下,如果没找到也可以在 lsp 源代码中搜索 lsp-session-file)。
  2. 当前 LSP 还不太稳定,遇到各种问题就可以重启是最有效的办法: lsp-workspace-restart

常用快捷键:

M-. 跳转到定义
M-, 返回,与 M-, 一起使用
C-c f 格式化
<f9> s r 重启 lsp workspace
<f9> f r 查找所有引用

2.2 TODO Web 开发

2.3 Go

按照 官方说明 安装 Go,LSP server 用的是 gopls

guru: a tool for answering questions about Go source code.

GO111MODULE=on go get golang.org/x/tools/gopls@latest

2.4 TODO Python

First created: 2020-03-28 20:38:14
Last updated: 2020-05-07 Thu 17:43
Power by Emacs 26.3 (Org mode 9.3.6)