简介
LEM是一个用Common Lisp(SBCL/CCL)实现的编辑器,重度模仿了Emacs的操作习惯。使用 Common Lisp作为扩展语言。
主要卖点是内置了Swank支持(就是Emacs插件Slime使用的live coding backend),对于Common Lisp项目,可以在保留部分Emacs编辑习惯上不进行额外配置进行开发。此外还支持像Nvim一样的前后端分离,而且有用Electron写的前端(beta version),官方目前稳定的只有ncurses的终端前端。
启动
安装LEM需要配置roswell
,我个人不用这东西,因此用官方推荐的docker来体验,运行
docker run --rm -ti -v `pwd`:/app 40ants/lem:latest
启动lem编辑器。
一些截图
- directory-mode(对,高仿dired-mode) & M-x。目前来看,还没有内置ivy/helm这样的功能。
- completion(默认设置补全要按TAB触发,不像company那样就地触发)
- Tetris(传 统 艺 能)
随便玩玩
- rust-mode
除了CL和Scheme以外,还支持OCaml C Diff Rust JS Markdown Nim等语言的高亮,支持LSP,不过我并不是LSP fan所以没有实际测试。
所有内置的mode可以在这里
或者在编辑器里用M-x探索。
个人体感 & 小结
很有趣的尝试,不过完成度不高(比如describe-function
describe-variable
等没有实现,我愿称这两个命令为Emacs之魂)。而且CL社区少人,也没有特别好的前景展望。对CL真爱/对Emacs某些设计痛恨的同学可以考虑折腾一下,这个编辑器可hack程度还是很高的,而且hack起来和Emacs一样简单(在buffer写code然后eval就完事了),基于这个来扩展总比从0写编辑器要强。