summaryrefslogtreecommitdiff
path: root/docs/src/quickstart.txt
blob: 5b8cdfaf1ba4b9af4b7faccbe62df082a3169838 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
.. -*- mode: rst -*-

==========
Quickstart
==========


Pygments comes with a wide range of lexers for modern languages which are all
accessible through the pygments.lexers package. A lexer enables Pygments to
parse the source code into tokens which are passed to a formatter. Currently
formatters exist for HTML, LaTeX and ANSI sequences.


Example
=======

Here is a small example for highlighting Python code:

.. sourcecode:: python

    from pygments import highlight
    from pygments.lexers import PythonLexer
    from pygments.formatters import HtmlFormatter

    code = 'print "Hello World"'
    print highlight(code, PythonLexer(), HtmlFormatter())

which prints something like this:

.. sourcecode:: html

    <div class="highlight">
    <pre><span class="k">print</span> <span class="s">&quot;Hello World&quot;</span></pre>
    </div>


A CSS stylesheet which contains all CSS classes possibly used in the output can be
produced by:

.. sourcecode:: python

    print HtmlFormatter().get_style_defs('.highlight')

The argument is used as an additional CSS selector: the output may look like

.. sourcecode:: css

    .highlight .k { color: #AA22FF; font-weight: bold }
    .highlight .s { color: #BB4444 }
    ...


Options
=======

The `highlight()` function supports a fourth argument called `outfile`, it must be
a file object if given. The formatted output will then be written to this file
instead of being returned as a string.

Lexers and formatters both support options. They are given to them as keyword
arguments either to the class or to the lookup method:

.. sourcecode:: python

    from pygments import highlight
    from pygments.lexers import get_lexer_by_name
    from pygments.formatters import HtmlFormatter

    lexer = get_lexer_by_name("python", stripall=True)
    formatter = HtmlFormatter(linenos=True, cssclass="source")
    result = highlight(code, lexer, formatter)

This makes the lexer strip all leading and trailing whitespace from the input
(`stripall` option), lets the formatter output line numbers (`linenos` option),
and sets the wrapping ``<div>``'s class to ``source`` (instead of
``highlight``).

For an overview of builtin lexers and formatters and their options, visit the
`lexer <lexers.txt>`_ and `formatters <formatters.txt>`_ lists.


Lexer and formatter lookup
==========================

If you want to lookup a built-in lexer by its alias or a filename, you can use
one of the following methods:

.. sourcecode:: pycon

    >>> from pygments.lexers import get_lexer_by_name, get_lexer_for_filename
    >>> get_lexer_by_name('python')
    <pygments.lexers.agile.PythonLexer object at 0xb7bd6d0c>
    >>> get_lexer_for_filename('spam.py')
    <pygments.lexers.agile.PythonLexer object at 0xb7bd6b2c>

The same API is available for formatters: use `get_formatter_by_name` and
`get_formatter_for_filename` from the `pygments.formatters` module
for this purpose.


Command line usage
==================

You can use Pygments from the command line, using the `pygmentize` script::

    $ pygmentize test.py

will highlight the Python file test.py using ANSI escape sequences
(a.k.a. terminal colors) and print the result to standard output.

To output HTML, use the ``-f`` option::

    $ pygmentize -f html -o test.html test.py

to write an HTML-highlighted version of test.py to the file test.html.

The stylesheet can be created with::

    $ pygmentize -S default -f html > style.css

More options and tricks and be found in the `command line referene <cmdline.txt>`_.