2013-04-28 92 views
9

我无法逆向工程Aquamacs来提取NSSpellChecker的使用/功能。我希望将这些使用/功能从源代码中整合到Emacs的裸骨架中。我找到了看似相关的文件 - ns-win.el; flyspell.el;和ispell.el - 但是,仅仅将这些文件从Aquamacs替换为Emacs并不能启用运行OSX原生的拼写检查程序的弹出式菜单。我错过了一个或多个拼图 - 我打开了所有的Aquamacs * .gz文件,并在所有这些文件中搜索了几个关键字,但是我还没有发现任何其他文件看起来像他们与此功能有关。该功能由Aquamacs before启用,它的site-start.el启动。OSX - 配置Emacs以使用NSSpellChecker

我学会了如何使用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和相关文件的构建脚本,以构建自定义应用程序。另外,创建一个混合也是可能的,但也带有它自己的问题,因为当从Finder.app打开一个文件时,Aquamacs可执行文件被硬编码为特殊文件,如one-frame-one-buffer-mode;当从Finder.app打开一个文件时, ns-application-activated需要设置为忽略;包括init.el文件中的版本ID以正确地清除错误消息;简单的菜单选项,适用于Aquamacs以节省选项;和其他一些显而易见的问题。总之,混合动力是可行的,但颈部疼痛。我确实有一个混合工作,但我相信我将不得不做更多的调整,因为我发现需要处理的更多Aquamacs定制(由可执行文件创建)。现在发布任何类型的答案为时尚早。构建脚本修改似乎是最好的解决方案,但需要很多时间才能正确修改它,以便创建一个可隔离NSSpellChecker功能的自定义构建。编辑4:我有一个NSSpellChecker的工作版本,它是Aquamacs24的自定义版本的可执行文件(省略了几乎所有的Aquamacs,除了拼写检查器)以及emacs-trunk最新版本的Emacs24(夜间版本)。我在等待接收一些技术支持,使用终端下载最新的Aquamacs24分支与git,因为我有一些问题与终端复制ZIP版本。这非常详细,我想在发布答案之前简化流程,并且我希望事先彻底测试它。

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

回答

6

补丁(下文)通过@lawlist从Aquamacs的选择部分创建的:

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

要启用本地拼写检查在OSX在香草/通用版本的Emacs,需要在构建之前修补C源代码,还需要修改一些lisp文件。该补丁太大,无法在stackexchange.com上发布答案。

以下步骤假定必要的工具已经安装上OSX建立和补丁等 - 例如,git的,最近的automakeautoconf版本的Xcode等


EMACS -25 BRANCH - 2016年11月1日

下面的补丁和最小测试是在emacs的25支内置执行作为提交日期为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

;;执行硬复位成功后,在终端的消息会说:“现在头以5043e0a修复文档‘EUDC选项文件’

从终端类型: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


适用于master分支为2016年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的主分支变化几次的每一天。]

从终端类型:git reset --hard 76fb19b359dec8556dc66dbac3ad3d333feea3c3

;;成功执行硬复位后,终端中的消息将会显示:“HEAD现在位于76fb19b * lisp/wid-edit.el(链接):删除:跟踪链接属性(错误#22434)

从终端输入:git apply nsspellchecker.diff

+0

是否有任何努力使其成为主线Emacs的配置选项? – tripleee 2016-06-02 04:11:03

+0

@tripleee - 我不确定Richard M. Stallman,John Wiegley或Eli Zaretskii是否有兴趣拥有OSX特有的功能。我的猜测是,他们不会,但是,约翰使用OSX - 所以他*可能*有兴趣。毫无疑问,RMS将坚持让David Swelt(用于C源代码修改)和Nathaniel Cunningham(ispell.el/flyspell.el)等人签署文件,让他们的贡献成为Emacs的官方部分,他们即使许可证是GNU,也可能不愿意这样做。此外,“Aquamacs”接受捐赠。 。 。 – lawlist 2016-06-02 04:21:09