Wraplish 是一个在 Unicode 与英文之间加上空格的 Emacs 插件, 类似于 pangu-spacing 的效果。
主要的区别是 Wraplish 使用 Python 多线程技术来分析 Emacs 的文本, 避免 Elisp 代码分析大文本时产生过多的 GC 对象卡住 Emacs。
原理
Wraplish 的原理如下:
- 每次编辑 Buffer 内容后, Elisp 端发送 Diff 序列到 Wraplish 的 Python 进程
- Python 端根据 Diff 序列重建 Buffer 的内容, 并分析出需要插入空格的位置列表返回 Emacs
- Emacs 再根据空格位置列表, 找到对应的位置, 从后向前填充空格
安装
- 安装 Emacs 28 及以上版本
- 安装 Python 依赖:
pip3 install epc sexpdata six
- 用
git clone
下载此仓库, 并替换下面配置中的 load-path 路径 - 把下面代码加入到你的配置文件 ~/.emacs 中:
(add-to-list 'load-path "<path-to-wraplish>")
(require 'wraplish)
(dolist (hook (list
'markdown-mode-hook
))
(add-hook hook
#'(lambda ()
(wraplish-mode 1)
)))
反馈问题
关于一些常用问题, 请先阅读 Wiki
请用命令 emacs -q
并只添加 Wraplish 配置做一个对比测试, 如果 emacs -q
可以正常工作, 请检查你个人的配置文件。
如果emacs -q
环境下问题依旧, 请到这里反馈, 并附带 *wraplish*
窗口的内容给我们提交 issue, 那里面有很多线索可以帮助我们排查问题。 。
-
如果你遇到崩溃的问题, 请用下面的方式来收集崩溃信息:
- 先安装 gdb 并打开选项
(setq wraplish-enable-debug t)
- 使用命令
wraplish-restart-process
重启 WRAPLISH 进程 - 在下次崩溃时发送
*wraplish*
的内容
- 先安装 gdb 并打开选项
-
如果你遇到其他问题, 请用下面的方式来收集信息
- 打开选项
(setq wraplish-enable-log t)
- 使用命令
wraplish-restart-process
重启 WRAPLISH 进程 - 发送
*wraplish*
中的内容
- 打开选项