如何配置 Firefox 在某些链接上运行 emacsclientw?

2024-05-01

我有一个 Perl 脚本,它会在一堆日志文件中查找“有趣”的行,以获取一些有趣的定义。它生成一个 HTML 文件,其中包含一个表,该表的列是时间戳、文件名/行号引用和“有趣”位。我想做的是让文件名/行号成为一个实际的链接,它将在 emacs 中打开该文件,并将光标定位在该行号上。

emacsclientw 将允许这样的事情(例如 emacsclientw +60 foo.log),但我不知道要构造什么样的 URL/URI 才能让 FireFox 调用 emacsclientw。原始 HTML 文件将是本地的,因此没有问题。

我应该以这种方式定义自己的 MIME 类型和挂钩吗?

Firefox 版本是 3.5,我运行的是 Windows,以防万一。谢谢!


Go to about:config火狐浏览器中的页面。添加一个新字符串:

network.protocol-handler.app.emacs

value: 解析没有协议的 url 的脚本的路径(后面是什么emacs://),然后使用正确的参数调用 emacsclient。

您不能只放置 emacsclient 的路径,因为协议之后的所有内容都会作为一个参数传递给可执行文件,因此您的+60 foo.log将是一个以这种方式命名的新文件。

但你很容易想象类似的事情emacs:///path/to/your/file/LINENUM并有一个小脚本,删除最后的 / 和数字,并使用数字和文件调用 emacsclient :-)

编辑:如果你愿意,我可以在 bash 中执行此操作,但我不知道如何使用 Windows“shell”或任何名称来执行此操作。

编辑2:我错了,协议在arg字符串中传递给! 这是我刚刚为我制作的一个小 bash 脚本,顺便说一句,谢谢你的想法:-D

#!/bin/bash
ARG=${1##emacs://}
LINE=${ARG##*/}
FILE=${ARG%/*}
if wmctrl -l | grep emacs@romuald &>/dev/null; then # if there's already an emacs frame
  ARG="" # then just open the file in the existing emacs frame
else
  ARG="-c" # else create a new frame
fi
emacsclient $ARG -n +$LINE "$FILE"
exit $?

and my network.protocol-handler.app.emacs在我的iceweasel(火狐)中是/home/p4bl0/bin/ffemacsclient。效果很好!

是的,我的笔记本电脑的名字是 romuald ^^。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何配置 Firefox 在某些链接上运行 emacsclientw? 的相关文章

随机推荐