我在对 Aquamacs 进行逆向工程以提取 NSSpellChecker 的用法/功能时遇到问题。我想从源代码将该用途/功能合并到 Emacs 的基本构建中。我找到了看似相关的文件—— ns-win.el
;flyspell.el
; 并且ispell.el
——然而,仅仅将这些文件从 Aquamacs 替换为 Emacs 并不会启用用于运行 OSX 原生拼写检查器的弹出菜单。我缺少一个或多个拼图——我打开了所有 Aquamacs *.gz 文件并在所有这些文件中搜索了一些关键字,但我没有找到任何其他看起来像它们的文件与此功能有关。该功能由 Aquamacs 启用,before
其 site-start.el 已启动。
我已经学会了如何使用 tarball 以及使用 bzr 从源代码构建 Emacs。如果有人知道如何在构建过程中配置 NSSpellChecker,那就太好了。
我在互联网上找不到任何远程描述如何执行此操作的内容。
Aspell 的拼写检查功能让我想起了 80 年代后期的生活。我越来越喜欢带有按钮的弹出菜单来选择拼写检查选项。
这是构建 Aquamacs 的解释的链接,查看构建脚本是我的待办事项列表中的下一个:
http://www.emacswiki.org/cgi-bin/wiki/BuildingAquamacs
编辑 1:构建脚本对 NSSpellChecker 有更多的说明,因此需要查看的其他文件包括: nsterm.m
和nsfns.m
. 我不认为也没有aquamacs-menu.el
必要osxkeys.el
,因为它们是在 site-start.el 之后加载的。它看起来越来越像 NSSpellChecker 在构建过程中与上述文件一起硬编码到应用程序可执行文件中。
编辑2:是的,那是拼图中缺失的一块。应用程序包(即... Aquamacs.app/Contents/MacOS/Aquamacs
)中的 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),以及 Emacs24 的 emacs-trunk 最新构建(夜间构建)。我正在等待获得一些技术支持以使用终端下载带有 git 的 Aquamacs24 的最新分支,因为我在使用终端复制 ZIP 版本时遇到了一些问题。这非常详细,我想在发布答案之前简化流程,并且我想事先对其进行彻底测试。
(来源:lawlist.com)