---
title: "Bzr and launchpad tricks: firefox plugin"
publish_date: 2011-01-07
author: "MariaDB"
---

# Bzr and launchpad tricks: firefox plugin

If you work with **bazaar**, you have seen its URIs. You can find the complete list is in the **bzr help urlspec**. Although I commonly use only a subset of that, like **bzr+ [ssh://bazaar.launchpad.net/~maria-captains/maria/5.2-serg/](ssh://bazaar.launchpad.net/~maria-captains/maria/5.2-serg/ "ssh://bazaar.launchpad.net/~maria-captains/maria/5.2-serg/")** and **[http://bazaar.launchpad.net/%2Bbranch/mysql-server/5.5/](http://bazaar.launchpad.net/%2Bbranch/mysql-server/5.5/ "http://bazaar.launchpad.net/%2Bbranch/mysql-server/5.5/")**. In addition I often use [Launchpad](https://launchpad.net/ "Launchpad") aliases, such as **lp:~maria-captains/maria/5.3-serg/**, **lp:maria/5.3**, and **lp:869001**. And finally, there are common abbreviations that we have used in MySQL, and others that we use in MariaDB, for example **bug#12345** and **wl#90**. What’s annoying, I need to remember that **wl#90** corresponds to **[http://askmonty.org/worklog/?tid=90](http://askmonty.org/worklog/?tid=90 "http://askmonty.org/worklog/?tid=90")** and type the latter in the location bar of the browser, when I want to look this task up. And **lp:869001** is, for my browser, **[https://bugs.launchpad.net/bugs/869001](https://bugs.launchpad.net/bugs/869001 "https://bugs.launchpad.net/bugs/869001")**. Similarly, every other URL above, has its browser-friendly evil twin. It’s evil, because I have to remember it! Now, Firefox tries to help, to a certain extent. It supports so-called *keywords* — short aliases for bookmarks. Create a bookmark for **[https://bugs.launchpad.net/bugs/%s](https://bugs.launchpad.net/bugs/%s "https://bugs.launchpad.net/bugs/%s")** and in the *Keyword* field enter **lp**. Now you can type in the location bar **lp 869001** (with a space) and Firefox will expand it into a complete url **[https://bugs.launchpad.net/bugs/869001](https://bugs.launchpad.net/bugs/869001 "https://bugs.launchpad.net/bugs/869001")**. Quite handy. And I’ve used it for a few years. Still it annoyed me, that I had to rewrite the abbreviations manually, put spaces, remove colons, and so on. And at last it annoyed me to a degree where I wrote a Firefox plugin! Let me introduce a **[LocationMorph](https://addons.mozilla.org/ru/firefox/addon/locationmorph/ "LocationMorph")** — a plugin that can arbitrarily rewrite the text in the location bar, according to the user specified regular expression. I have configured it (via a Preference dialog) to use the following set of rules

> | **^bzr+[ssh://bazaar.launchpad.net/](ssh://bazaar.launchpad.net/ "ssh://bazaar.launchpad.net/")** | → | **[http://code.launchpad.net/](http://code.launchpad.net/ "http://code.launchpad.net/")** |
> |---|---|---|
> | **^lp:(d+)$** | → | **[https://bugs.launchpad.net/bugs/](https://bugs.launchpad.net/bugs/ "https://bugs.launchpad.net/bugs/")$1** |
> | **^lp:** | → | **[http://code.launchpad.net/](http://code.launchpad.net/ "http://code.launchpad.net/")** |
> | **^wl#(d+)$** | → | **[http://askmonty.org/worklog/?tid=](http://askmonty.org/worklog/?tid= "http://askmonty.org/worklog/?tid=")$1** |
> | **^bug#(d+)$** | → | **[http://bugs.mysql.com/bug.php?id=](http://bugs.mysql.com/bug.php?id= "http://bugs.mysql.com/bug.php?id=")$1** |

And now I can simply copy and paste a **bzr** URI, or a launchpad alias, or our internal abbreviation from the email (or **bzr info**) directly into the browser, and it understands it directly and shows me the page that I want. Ahh, perfection…