我有一个Perl脚本,它会查找一堆日志文件,寻找"有趣"的行,对于一些有趣的定义.它生成一个HTML文件,该文件由一个表组成,该表的列是时间戳,文件名/亚麻布参考和"有趣"位.我喜欢做的是让文件名/ linenum成为一个实际的链接,在emacs中将光标放在该行号上.
emacsclientw会允许这样的事情(例如emacsclientw +60 foo.log),但我不知道要构建哪种URL/URI会让FireFox调用emacsclientw.原始HTML文件将是本地的,因此没有问题.
我应该以这种方式定义自己的MIME类型和钩子吗?
Firefox版本是3.5,我正在运行Windows,以防任何重要事项.谢谢!
转到about:config
firefox中的页面.添加一个新字符串:
network.protocol-handler.app.emacs
value:脚本的路径,该脚本在没有协议的情况下解析url(之后是什么emacs://
),然后使用正确的参数调用emacsclient.
您不能只放置emacsclient的路径,因为协议之后的所有内容都作为一个arg传递给可执行文件,因此您+60 foo.log
将成为以这种方式命名的新文件.
但你可以很容易地想象一下像是emacs:///path/to/your/file/LINENUM
有一个小脚本删除最终的/和号码,并用号码和文件调用emacsclient :-)
编辑:我可以在bash中做到这一点,如果你想但我不知道如何使用Windows"shell"或其他任何名称.
EDIT2:我错了什么,协议是在arg字符串中传递给的!这是我刚刚为我制作的一个小bash脚本,BTW感谢你的想法:-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 $?
我network.protocol-handler.app.emacs
在我的iceweasel(firefox)中/home/p4bl0/bin/ffemacsclient
.它工作得很好!
是的,我的笔记本电脑的名字是romuald ^^.