Wed, 11 Mar 2015 18:32:27 +0100
Updated Pygments to 2.0.2.
4172
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | """ |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
3 | pygments.lexers.textedit |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | ~~~~~~~~~~~~~~~~~~~~~~~~ |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | Lexers for languages related to text processing. |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | :copyright: Copyright 2006-2014 by the Pygments team, see AUTHORS. |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | :license: BSD, see LICENSE for details. |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | """ |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | import re |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | from bisect import bisect |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | from pygments.lexer import RegexLexer, include, default, bygroups, using, this |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | from pygments.token import Text, Comment, Operator, Keyword, Name, String, \ |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | Number, Punctuation |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | from pygments.lexers.python import PythonLexer |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | __all__ = ['AwkLexer', 'VimLexer'] |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | class AwkLexer(RegexLexer): |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | """ |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | For Awk scripts. |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | .. versionadded:: 1.5 |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | """ |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | name = 'Awk' |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | aliases = ['awk', 'gawk', 'mawk', 'nawk'] |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | filenames = ['*.awk'] |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | mimetypes = ['application/x-awk'] |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | tokens = { |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | 'commentsandwhitespace': [ |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | (r'\s+', Text), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | (r'#.*$', Comment.Single) |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | ], |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | 'slashstartsregex': [ |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | include('commentsandwhitespace'), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | (r'/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/' |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | r'\B', String.Regex, '#pop'), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | (r'(?=/)', Text, ('#pop', 'badregex')), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | default('#pop') |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | ], |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | 'badregex': [ |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | (r'\n', Text, '#pop') |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | ], |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | 'root': [ |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | (r'^(?=\s|/)', Text, 'slashstartsregex'), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | include('commentsandwhitespace'), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | (r'\+\+|--|\|\||&&|in\b|\$|!?~|' |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | r'(\*\*|[-<>+*%\^/!=|])=?', Operator, 'slashstartsregex'), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | (r'[{(\[;,]', Punctuation, 'slashstartsregex'), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | (r'[})\].]', Punctuation), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | (r'(break|continue|do|while|exit|for|if|else|' |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | r'return)\b', Keyword, 'slashstartsregex'), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | (r'function\b', Keyword.Declaration, 'slashstartsregex'), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | (r'(atan2|cos|exp|int|log|rand|sin|sqrt|srand|gensub|gsub|index|' |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | r'length|match|split|sprintf|sub|substr|tolower|toupper|close|' |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | r'fflush|getline|next|nextfile|print|printf|strftime|systime|' |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | r'delete|system)\b', Keyword.Reserved), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | (r'(ARGC|ARGIND|ARGV|BEGIN|CONVFMT|ENVIRON|END|ERRNO|FIELDWIDTHS|' |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | r'FILENAME|FNR|FS|IGNORECASE|NF|NR|OFMT|OFS|ORFS|RLENGTH|RS|' |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | r'RSTART|RT|SUBSEP)\b', Name.Builtin), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | (r'[$a-zA-Z_]\w*', Name.Other), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | (r'0x[0-9a-fA-F]+', Number.Hex), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | (r'[0-9]+', Number.Integer), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | (r'"(\\\\|\\"|[^"])*"', String.Double), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | (r"'(\\\\|\\'|[^'])*'", String.Single), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | ] |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | } |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | class VimLexer(RegexLexer): |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | """ |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | Lexer for VimL script files. |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | .. versionadded:: 0.8 |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | """ |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | name = 'VimL' |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | aliases = ['vim'] |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | filenames = ['*.vim', '.vimrc', '.exrc', '.gvimrc', |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | '_vimrc', '_exrc', '_gvimrc', 'vimrc', 'gvimrc'] |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | mimetypes = ['text/x-vim'] |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | flags = re.MULTILINE |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | _python = r'py(?:t(?:h(?:o(?:n)?)?)?)?' |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | tokens = { |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | 'root': [ |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | (r'^([ \t:]*)(' + _python + r')([ \t]*)(<<)([ \t]*)(.*)((?:\n|.)*)(\6)', |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | bygroups(using(this), Keyword, Text, Operator, Text, Text, |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | using(PythonLexer), Text)), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | (r'^([ \t:]*)(' + _python + r')([ \t])(.*)', |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | bygroups(using(this), Keyword, Text, using(PythonLexer))), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | (r'^\s*".*', Comment), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | (r'[ \t]+', Text), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | # TODO: regexes can have other delims |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | (r'/(\\\\|\\/|[^\n/])*/', String.Regex), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | (r'"(\\\\|\\"|[^\n"])*"', String.Double), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | (r"'(''|[^\n'])*'", String.Single), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | # Who decided that doublequote was a good comment character?? |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | (r'(?<=\s)"[^\-:.%#=*].*', Comment), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | (r'-?\d+', Number), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | (r'#[0-9a-f]{6}', Number.Hex), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | (r'^:', Punctuation), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | (r'[()<>+=!|,~-]', Punctuation), # Inexact list. Looks decent. |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | (r'\b(let|if|else|endif|elseif|fun|function|endfunction)\b', |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | Keyword), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | (r'\b(NONE|bold|italic|underline|dark|light)\b', Name.Builtin), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | (r'\b\w+\b', Name.Other), # These are postprocessed below |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | (r'.', Text), |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | ], |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | } |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | def __init__(self, **options): |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | from pygments.lexers._vim_builtins import command, option, auto |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | self._cmd = command |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | self._opt = option |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | self._aut = auto |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | RegexLexer.__init__(self, **options) |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131 | def is_in(self, w, mapping): |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132 | r""" |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | It's kind of difficult to decide if something might be a keyword |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | in VimL because it allows you to abbreviate them. In fact, |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | 'ab[breviate]' is a good example. :ab, :abbre, or :abbreviate are |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | valid ways to call it so rather than making really awful regexps |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | like:: |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | \bab(?:b(?:r(?:e(?:v(?:i(?:a(?:t(?:e)?)?)?)?)?)?)?)?\b |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
140 | |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | we match `\b\w+\b` and then call is_in() on those tokens. See |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142 | `scripts/get_vimkw.py` for how the lists are extracted. |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | """ |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | p = bisect(mapping, (w,)) |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145 | if p > 0: |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | if mapping[p-1][0] == w[:len(mapping[p-1][0])] and \ |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | mapping[p-1][1][:len(w)] == w: |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | return True |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149 | if p < len(mapping): |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | return mapping[p][0] == w[:len(mapping[p][0])] and \ |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151 | mapping[p][1][:len(w)] == w |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | return False |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153 | |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154 | def get_tokens_unprocessed(self, text): |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
155 | # TODO: builtins are only subsequent tokens on lines |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | # and 'keywords' only happen at the beginning except |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157 | # for :au ones |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
158 | for index, token, value in \ |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159 | RegexLexer.get_tokens_unprocessed(self, text): |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | if token is Name.Other: |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
161 | if self.is_in(value, self._cmd): |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
162 | yield index, Keyword, value |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163 | elif self.is_in(value, self._opt) or \ |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164 | self.is_in(value, self._aut): |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165 | yield index, Name.Builtin, value |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
166 | else: |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | yield index, Text, value |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | else: |
4f20dba37ab6
Updated Pygments to 2.0.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | yield index, token, value |