Bzr 和 Launchpad 技巧:Firefox 插件
如果你使用 bazaar 工作,你肯定见过它的 URI。完整的列表可以在 bzr help urlspec 中找到。虽然我通常只使用其中的一部分,例如 bzr+ssh://bazaar.launchpad.net/~maria-captains/maria/5.2-serg/ 和 http://bazaar.launchpad.net/%2Bbranch/mysql-server/5.5/。
此外,我经常使用 Launchpad 别名,例如 lp:~maria-captains/maria/5.3-serg/、lp:maria/5.3 和 lp:869001。
最后,还有一些我们在 MySQL 中使用过的常用缩写,以及一些我们在 MariaDB 中使用的缩写,例如 bug#12345 和 wl#90。
令人烦恼的是,当我想要查找 wl#90 时,我需要记住它对应于 http://askmonty.org/worklog/?tid=90,然后在浏览器地址栏中输入后者。而对于我的浏览器来说,lp:869001 是 https://bugs.launchpad.net/bugs/869001。类似地,上面提到的每个其他 URL 都有一个对浏览器友好的“邪恶双胞胎”。它之所以邪恶,是因为我必须记住它!
现在,Firefox 在一定程度上试图提供帮助。它支持所谓的**关键词**——书签的短别名。为 https://bugs.launchpad.net/bugs/%s 创建一个书签,并在“关键词”字段中输入 lp。现在你可以在地址栏中输入 lp 869001(带空格),Firefox 就会将其展开为完整的 URL https://bugs.launchpad.net/bugs/869001。相当方便。我已经使用了几年了。但仍然令我烦恼的是,我必须手动重写缩写,添加空格,删除冒号等等。最后,它烦恼到让我编写了一个 Firefox 插件!
让我来介绍 **LocationMorph**——一个可以根据用户指定的正则表达式任意重写地址栏文本的插件。我通过首选项对话框配置了它,使其使用以下规则集:
^bzr+ssh://bazaar.launchpad.net/ → http://code.launchpad.net/ ^lp:(d+)$ → https://bugs.launchpad.net/bugs/$1 ^lp → http://code.launchpad.net/ ^wl#(d+)$ → http://askmonty.org/worklog/?tid=$1 ^bug#(d+)$ → http://bugs.mysql.com/bug.php?id=$1
现在,我可以简单地将一个 bzr URI、一个 Launchpad 别名或我们内部的电子邮件(或 bzr info)中的缩写直接复制粘贴到浏览器中,它会直接理解并显示我想要的页面。啊,完美…
太棒了!我喜欢首选项中的测试选项。
我唯一能想到的改进是可下载的规则集
访问某个网站并下载一个文件,其中列出了一些特定于该网站的规则。
这也可以使用自动更新机制。当然,如果实现不当,可能会导致安全风险。
谢谢!
是的,我考虑过这一点,但当时我认为它不会与数百种不同的规则以及需要更新的规则集一起使用。AdBlock 确实是这样做的,但我想象不出为什么会有人需要那么多 URL 重写规则。
但我可能错了 :)
那样的话,我会考虑实现规则集。
谢谢你更新到当前的 Firefox 版本。在它(和 LocationMorph)与 FF 4 不兼容之前,我曾使用过 lp:URI。
是的,lp:URI 是我解决这个问题的首次尝试。它使用了不同的方法,无法扩展来处理其他 URI 模式。现在我已经完全放弃了 lp:URI,转而使用 LocationMorph。
你可以在 Firefox 中将 bug 定义为一个关键词,直接跳转到某个 bug,无需插件。在线搜索字符串“firefox keyword”可以找到大量教程。
创建一个新的快捷方式。
名称:bug(或其他任何内容)
位置:http://bugs.mysql.com/%s
关键词:bug
保存。
现在你可以输入 **bug 12345**,然后你会被带到那个 bug 页面。你可以对你给出的其他例子应用相同的技术。
简单的关键词还不够?试试 Javascript。另一种带有提示的 bug 快捷方式,你可以用它作为 URI:
javascript:bug=prompt(‘要打开的 Bug’,”);if(bug){location.href=’http://bugs.mysql.com/’+bug;}else{void(null)}
你可以使用 Javascript 的 replace 方法根据需要修改字符串,使用简单的字符串匹配或正则表达式。
必需的声明:我是 Oracle 的员工,但我的言论不代表 Oracle 的官方立场,仅代表我个人意见。如需获取公司官方观点,请联系 Oracle 媒体联系人。
没读就回复了,是吧?
我在文章中描述了 Firefox 关键词,并解释了为什么它们不够用。
尽管在关键词中使用 Javascript 是一种有趣的技术(我使用关键词和书签工具,但从未想过将它们结合起来),但我怀疑它能否解决问题。
关键在于将缩写直接粘贴到浏览器中(我通常只需在电子邮件中选中 bug 引用,然后在浏览器窗口的某个位置点击鼠标中键),无需进一步编辑或回答任何问题。
我喜欢这个插件,但正如 James 所写,Firefox 已经支持关键词。你的扩展可以做更多事情,但这些例子(除了第一个)并没有真正展示出来。例如,我可以用你的扩展做到这一点:
^route ([^ ]*) ([^ ]*) => http://maps.google.com/maps?saddr=$1&daddr=$2
如果这个扩展在从命令行调用 firefox 打开新标签页时也能工作就好了。现在似乎不行。它会将其解释为一个不完整的 file:// URL。匹配它试图加载的 URL 类型仍然需要我点击地址栏并按回车键。如果这个功能能够实现,我就可以配置我的终端在 firefox 中打开更多的 URL 方案,例如 bzr+ssh://。
命令行支持——这是个好主意,我会研究一下。
谢谢!