OSX - 配置Emacs以使用NSSpellChecker

law*_*ist 9 emacs

我无法对Aquamacs进行逆向工程,以提取NSSpellChecker的使用/功能.我想将这些使用/功能合并到源代码的Emacs的简单构建中.我找到了看似相关的文件 - ns-win.el; flyspell.el; 和ispell.el-然而,简单地从Aquamacs替换这些文件到Emacs的不启用弹出菜单中运行拼写检查是原产于OSX.我错过了一个或多个拼图 - 我打开了所有的Aquamacs*.gz文件并在所有这些文件中搜索了几个关键字,但我还没有找到任何其他文件看起来像他们有与此功能有关.该功能由Aquamacs启用,before其site-start.el已启动.

我已经学会了如何使用tarball从源代码构建Emacs,以及使用bzr.如果有人知道如何在构建过程中配置NSSpellChecker,那就太棒了.

我在互联网上找不到任何远程描述如何执行此操作的内容.

Aspell的拼写检查功能让我想起了80年代后期的生活.我已经喜欢弹出式菜单,其中包含用于选择拼写检查选项的按钮.

以下是构建Aquamacs的解释链接,在我的待办事项列表中查看构建脚本:

http://www.emacswiki.org/cgi-bin/wiki/BuildingAquamacs

编辑1:构建脚本对NSSpellChecker有更多的说法,因此需要查看的其他文件包括: nsterm.mnsfns.m.我认为aquamacs-menu.elosxkeys.el不必要,因为那些在site-start.el之后加载.它看起来越来越像NSSpellChecker在构建过程中硬编码到应用程序可执行文件中,与上面提到的文件一起.

编辑2:是的,这是拼图的缺失部分.应用程序包中的Aquamacs的可执行文件(即... Aquamacs.app/Contents/MacOS/Aquamacs)包含NSSpellChecker的硬编码魔法以及Aquamacs修改版本ns-win.el; flyspell.el; 和ispell.el.

编辑3:此时,一个选项是修改Aquamacs的构建脚本以及构建过程中使用的相关文件,以构建自定义应用程序.或者,创建混合也是可能的,但是它有自己的问题,因为Aquamacs可执行文件是硬编码的,例如one-frame-one-buffer-mode从Finder.app打开文件时的特殊性.switch-to-buffer-in-tab从Finder.app打开文件时; ns-application-activated需要设置为忽略; 包括init.el文件中的版本ID,以正确安静错误消息; 简单的菜单选项,面向Aquamacs节省选项; 以及其他一些显而易见的问题.简而言之,混合动力是可行的,但颈部疼痛.我确实有一个混合工作,但我确定我必须做更多的调整,因为我发现需要处理的更多Aquamacs自定义(由可执行文件创建).现在发布任何类型的答案还为时过早.构建脚本修改似乎是最佳解决方案,但需要大量时间才能正确修改它,以便创建隔离NSSpellChecker功能的自定义构建.

编辑4:我有NSSpellChecker一个工作版本是Aquamacs24的自定义生成的可执行文件(省略几乎所有Aquamacs除了拼写检查器),和Emacs的干线最近Emacs24的版本(每日构建).我正在等待接收一些技术支持使用终端下载Aquamacs24的最新分支与git,因为我有一些问题与终端重复ZIP版本.这个非常详细,我想在发布答案之前简化流程,我想事先彻底测试一下.

NSSpellChecker http://lawlist.com/images/spellchecker.png

law*_*ist 6

补丁(如下所述)由@lawlist从Aquamacs的选定部分创建:

https://github.com/davidswelt/aquamacs-emacs

要在Emacs的vanilla/generic版本中启用OSX上的本机拼写检查,必须在构建之前修补C源代码,并且还需要修改一些lisp文件.这个补丁太大了,无法在stackexchange.com上回复.

以下过程假设已经在OSX上安装了必要的工具来构建和修补等 - 例如,git,automakeautoconfxcode的最新版本等.


EMACS-25分支 - 2016年11月1日:

下面的补丁和最小的测试是在执行的Emacs 25支--with-ns为的提交日期为2016年11月1日: 5043e0a7e06dbf6507a59736e55bdde69d9a2a4e

从终端输入: git clone -b emacs-25 git://git.sv.gnu.org/emacs.git

访问:https: //gist.github.com/lawlist/dfc75240cc06c66f19f48eaa3e570d7c

单击" 下载ZIP "按钮,将压缩的补丁文件保存在计算机上的某个位置.

解压缩刚刚下载的ZIP存档并保存nsspellchecker_emacs25.diff.../emacs上面第一步中克隆的根源代码目录.

从终端cd到根源.../emacs代码目录.

;; 补丁可能会过时,因此这个示例包括硬重置,可以追溯到2016年11月1日.[开发团队仍在对Emacs 25进行某些错误修复,这可能会导致修补程序过时.]

从终端输入: git reset --hard 5043e0a7e06dbf6507a59736e55bdde69d9a2a4e

;; 成功执行硬重置后,终端中的消息将显示:" HEAD现在为5043e0a修复'eudc-options-file'的文档 "

从终端输入: git apply nsspellchecker_emacs25.diff

从终端输入: ./autogen.sh

从终端输入: ./configure --with-ns

从终端输入: make

从终端输入: make install

;; 使用Finder.app,导航到.../emacs/nextstep并尝试新的Emacs.app

;; 打开新的Emacs.app并输入M-x eval-expression RET (require 'flyspell) RET

;; 在*scratch*缓冲区中,键入拼写正确且拼写错误的内容.

;; 输入: M-x ns-start-spellcheckerM-x ispell-buffer

;; 用弹出式拼写检查器玩一点,玩得开心.

;; 自定义单词保存为: ~/Library/Spelling/LocalDictionary


以前的答案适用于master2016年5月29日的分行:

下面的补丁和最小的测试是在执行主分支建成--with-ns为提交日期为2016年5月29日: 76fb19b359dec8556dc66dbac3ad3d333feea3c3

从终端输入: git clone -b master git://git.sv.gnu.org/emacs.git

访问:https: //gist.github.com/lawlist/6a9b281870fcc114ad3c6c1dca121f95

单击" 下载ZIP "按钮,将压缩的补丁文件保存在计算机上的某个位置.

解压缩刚刚下载的ZIP存档并保存nsspellchecker.diff.../emacs上面第一步中克隆的根源代码目录.

从终端cd到根源.../emacs代码目录.

;; 补丁很快就会过时,所以这个例子包括硬重置,可以追溯到2016年5月29日.[我不会更新/维护补丁,因为Emacs master分支每天都会更改几次.]

从终端输入: git reset --hard 76fb19b359dec8556dc66dbac3ad3d333feea3c3

;; 成功执行硬重置后,终端中的消息将显示:" HEAD现在位于76fb19b*lisp/wid-edit.el(链接):删除:follow-link属性(bug#22434) "

从终端输入: git apply nsspellchecker.diff