我有一个 Perl 脚本,它可以在一堆日志文件中寻找“有趣”的行,以获得一些有趣的定义。它生成一个 HTML 文件,该文件由一个表组成,该表的列是时间戳、文件名/行号引用和“有趣”位。我想做的是让文件名/行号成为一个实际链接,它将在 emacs 中将光标定位在该行号上来调出该文件。
emacsclientw 将允许这样的事情(例如 emacsclientw +60 foo.log),但我不知道要构造什么样的 URL/URI 让 FireFox 调用 emacsclientw。原始 HTML 文件将在本地,因此没有问题。
我应该定义自己的 MIME 类型并以这种方式 Hook 吗?
Firefox 版本是 3.5,我运行的是 Windows,以防万一。谢谢!
最佳答案
在 firefox 中转到 about:config
页面。添加一个新字符串:
network.protocol-handler.app.emacs
值:脚本的路径,该脚本解析没有协议(protocol)的 url(emacs://
之后的内容),然后使用适当的参数调用 emacsclient。
您不能只放置 emacsclient 的路径,因为协议(protocol)之后的所有内容都作为一个参数传递给可执行文件,因此您的 +60 foo.log
将是一个以这种方式命名的新文件。
但是您可以很容易地想象像 emacs:///path/to/your/file/LINENUM
这样的东西,并有一个小脚本可以删除最后的/和数字,并使用数字和调用 emacsclient文件:-)
编辑:如果你愿意,我可以在 bash 中做到这一点,但我不知道如何使用 Windows“shell”或任何它被调用的东西来做到这一点。
EDIT2:我错了,协议(protocol)在 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 $?
我的 iceweasel (firefox) 中的 network.protocol-handler.app.emacs
是 /home/p4bl0/bin/ffemacsclient
。它工作得很好!
是的,我的笔记本电脑的名字是 romuald ^^。
关于html - 如何配置 firefox 在某些链接上运行 emacsclientw?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1401776/