Caution
The Packaging and Development guide is currently undergoing a major overhaul to bring it up to date. The current state you are seeing now is a preview of this effort.
The current version is unstable (changing URLs can occur at any time) and most content is not in properly reviewed yet. Proceed with caution and be aware of technical inaccuracies.
If you are an experienced packager and would like to contribute, we would love for you to be involved! See our contribution page for details of how to join in.
Launchpad text markup¶
Any textarea input field on Launchpad will process the entered text to recognise certain patterns to enhance the resulting displayed output.
Examples of textareas where the Launchpad text markup is accepted are:
Unlike platforms like GitHub, Launchpad unfortunately only recognises a very limited set of markup patterns when you write comments. The most useful pattern are documented in this article.
Note
Support for a wider range of markup patterns is a very common and old request/wish; take for example LP: #391780.
You can “upvote” (mark yourself as affected) or leave a comment on this bug report to show your support for the feature request.
Reminder: Please stay civil! The Launchpad team has only limited resources.
Referencing Launchpad bugs¶
It is very common to refer to a specific Launchpad bug e.g. to point other people to a bug during a discussion.
Pattern¶
The following pattern is used by Launchpad to detect bug references:
LP: #<LP-Bug-Number>[, #<LP-Bug-Number>]...
This pattern is case invariant, and the amount of blank space can be variable, but if you place blank space anywhere else, the regular expression used by Launchpad might not parse the bug reference correctly.
Note
This pattern is also commonly used outside of Launchpad e.g. on IRC, in source package changelogs or on Discourse.
Examples¶
The following table shows examples how text entered into a text input field will be displayed on Launchpad:
Input |
Result |
Comment |
---|---|---|
LP: #1
|
LP: #1 |
references Launchpad bug with the number 1 |
(LP: #1)
|
(LP: #1) |
a bug reference can be surrounded by brackets |
LP: #1, #2.
|
there can be multiple bug references
separated by a
, |
|
LP:
#1,
#2,
#3,
#4
|
the amount of blank space can be variable and
a new-line will not disrupt this pattern
|
|
lp: #1
|
lp: #1 |
the pattern is case invariant |
(lp: #1)
|
(lp: #1) |
the pattern is case invariant |
lp: #1, #2.
|
the pattern is case invariant |
|
LP #1
|
LP #1 |
the |
LP: #1 , #2
|
LP: #1 , #2 |
|
LP: #1, #2,
#3
|
an empty new-line will interrupt the pattern,
but a trailing
, will not |
Blank spaces¶
Launchpad will:
cut off any blank space to the right,
keep any blank space to the left, and
reduce any blank space between non-blank-space characters to just one (this includes new-line characters as well).
Note
Technically Launchpad passes blank space through and the browser just ignores the blank space.
Warning
Because of the behaviour described above you will have a hard time trying to write a table or long chunks of blank space between two sections.
The following table shows examples how text entered into a text input field will be displayed on Launchpad:
Input |
Result |
---|---|
| Column 1 | Column 2 | Column 3 |
|------------+----------+-------------|
| Example | table | text |
| Example | table | text |
| Example | table | text |
|
| Column 1 | Column 2 | Column 3 |
|------------+----------+-------------|
| Example | table | text |
| Example | table | text |
| Example | table | text |
|
Here are two paragraphs with lots
of blank space between them.
But they're still just two paragraphs
|
Here are two paragraphs with lots of blank space between them.
But they’re still just two paragraphs
|
URI addresses¶
Launchpad can recognise http
, https
, ftp
, sftp
, mailto
,
news
, irc
and jabber
URIs.
Note
tel
, urn
, telnet
, ldap
URI, relative
URLs like example.com
and email addresses like
test@example.com
are NOT recognised.
Examples¶
The following examples show how text entered into a text input field will be displayed on Launchpad:
Input |
http://localhost:8086/example/sample.html
|
Result |
Input |
http://localhost:8086/example/sample.html
|
Result |
Input |
ftp://localhost:8086/example/sample.html
|
Result |
Input |
sftp://localhost:8086/example/sample.html.
|
Result |
Input |
http://localhost:8086/example/sample.html;
|
Result |
Input |
news://localhost:8086/example/sample.html:
|
Result |
Input |
http://localhost:8086/example/sample.html?
|
Result |
Input |
http://localhost:8086/example/sample.html,
|
Result |
Input |
<http://localhost:8086/example/sample.html>
|
Result |
Input |
<http://localhost:8086/example/sample.html>,
|
Result |
Input |
<http://localhost:8086/example/sample.html>.
|
Result |
Input |
<http://localhost:8086/example/sample.html>;
|
Result |
Input |
<http://localhost:8086/example/sample.html>:
|
Result |
Input |
<http://localhost:8086/example/sample.html>?
|
Result |
Input |
(http://localhost:8086/example/sample.html)
|
Result |
Input |
(http://localhost:8086/example/sample.html),
|
Result |
Input |
(http://localhost:8086/example/sample.html).
|
Result |
Input |
(http://localhost:8086/example/sample.html);
|
Result |
Input |
(http://localhost:8086/example/sample.html):
|
Result |
Input |
http://localhost/example/sample.html?a=b&b=a
|
Result |
Input |
http://localhost/example/sample.html?a=b&b=a.
|
Result |
Input |
http://localhost/example/sample.html?a=b&b=a,
|
Result |
Input |
http://localhost/example/sample.html?a=b&b=a;
|
Result |
Input |
http://localhost/example/sample.html?a=b&b=a:
|
Result |
Input |
http://localhost/example/sample.html?a=b&b=a:b;c@d_e%f~g#h,j!k-l+m$n*o'p
|
Result |
http://localhost/example/sample.html?a=b&b=a:b;c@d_e%f~g#h,j!k-l+m$n*o’p |
Input |
http://www.example.com/test/example(parentheses).html
|
Result |
Input |
http://www.example.com/test/example-dash.html
|
Result |
Input |
http://www.example.com/test/example_underscore.html
|
Result |
Input |
http://www.example.com/test/example.period.x.html
|
Result |
Input |
http://www.example.com/test/example!exclamation.html
|
Result |
Input |
http://www.example.com/test/example~tilde.html
|
Result |
Input |
http://www.example.com/test/example*asterisk.html
|
Result |
Input |
irc://chat.freenode.net/launchpad
|
Result |
Input |
irc://chat.freenode.net/%23launchpad,isserver
|
Result |
Input |
mailto:[email protected]
|
Result |
Input |
jabber:[email protected]
|
Result |
Input |
http://localhost/foo?xxx&
|
Result |
Input |
http://localhost?testing=[square-brackets-in-query]
|
Result |
Removal of Ҧ
If the entire comment is encapsulated in “ like this Launchpad will remove the “.
The following table shows an example how text entered into a text input field will be displayed on Launchpad:
Input |
Result |
---|---|
"Content"
|
Content |