annotate .cms/lib/codemirror/mode/python/index.html @ 1:1d486627aa1e draft default tip

24.10
author Coffee CMS <info@coffee-cms.ru>
date Sat, 12 Oct 2024 02:51:39 +0000
parents 78edf6b517a0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1 <!doctype html>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
2
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
3 <title>CodeMirror: Python mode</title>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
4 <meta charset="utf-8"/>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
5 <link rel=stylesheet href="../../doc/docs.css">
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
6
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
7 <link rel="stylesheet" href="../../lib/codemirror.css">
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
8 <script src="../../lib/codemirror.js"></script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
9 <script src="../../addon/edit/matchbrackets.js"></script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
10 <script src="python.js"></script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
11 <style>.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
12 <div id=nav>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
13 <a href="https://codemirror.net/5"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png" alt=""></a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
14
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
15 <ul>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
16 <li><a href="../../index.html">Home</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
17 <li><a href="../../doc/manual.html">Manual</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
18 <li><a href="https://github.com/codemirror/codemirror5">Code</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
19 </ul>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
20 <ul>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
21 <li><a href="../index.html">Language modes</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
22 <li><a class=active href="#">Python</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
23 </ul>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
24 </div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
25
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
26 <article>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
27 <h2>Python mode</h2>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
28
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
29 <div><textarea id="code" name="code">
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
30 # Literals
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
31 1234
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
32 0.0e101
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
33 .123
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
34 0b01010011100
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
35 0o01234567
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
36 0x0987654321abcdef
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
37 7
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
38 2147483647
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
39 3L
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
40 79228162514264337593543950336L
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
41 0x100000000L
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
42 79228162514264337593543950336
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
43 0xdeadbeef
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
44 3.14j
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
45 10.j
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
46 10j
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
47 .001j
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
48 1e100j
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
49 3.14e-10j
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
50
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
51
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
52 # String Literals
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
53 'For\''
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
54 "God\""
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
55 """so loved
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
56 the world"""
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
57 '''that he gave
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
58 his only begotten\' '''
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
59 'that whosoever believeth \
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
60 in him'
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
61 ''
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
62
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
63 # Identifiers
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
64 __a__
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
65 a.b
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
66 a.b.c
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
67
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
68 #Unicode identifiers on Python3
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
69 # a = x\ddot
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
70 a⃗ = ẍ
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
71 # a = v\dot
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
72 a⃗ = v̇
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
73
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
74 #F\vec = m \cdot a\vec
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
75 F⃗ = m•a⃗
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
76
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
77 # Operators
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
78 + - * / % & | ^ ~ < >
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
79 == != <= >= <> << >> // **
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
80 and or not in is
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
81
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
82 #infix matrix multiplication operator (PEP 465)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
83 A @ B
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
84
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
85 # Delimiters
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
86 () [] {} , : ` = ; @ . # Note that @ and . require the proper context on Python 2.
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
87 += -= *= /= %= &= |= ^=
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
88 //= >>= <<= **=
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
89
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
90 # Keywords
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
91 as assert break class continue def del elif else except
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
92 finally for from global if import lambda pass raise
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
93 return try while with yield
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
94
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
95 # Python 2 Keywords (otherwise Identifiers)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
96 exec print
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
97
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
98 # Python 3 Keywords (otherwise Identifiers)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
99 nonlocal
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
100
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
101 # Types
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
102 bool classmethod complex dict enumerate float frozenset int list object
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
103 property reversed set slice staticmethod str super tuple type
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
104
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
105 # Python 2 Types (otherwise Identifiers)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
106 basestring buffer file long unicode xrange
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
107
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
108 # Python 3 Types (otherwise Identifiers)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
109 bytearray bytes filter map memoryview open range zip
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
110
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
111 # Some Example code
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
112 import os
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
113 from package import ParentClass
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
114
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
115 @nonsenseDecorator
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
116 def doesNothing():
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
117 pass
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
118
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
119 class ExampleClass(ParentClass):
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
120 @staticmethod
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
121 def example(inputStr):
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
122 a = list(inputStr)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
123 a.reverse()
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
124 return ''.join(a)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
125
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
126 def __init__(self, mixin = 'Hello'):
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
127 self.mixin = mixin
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
128
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
129 # Python 3.6 f-strings (https://www.python.org/dev/peps/pep-0498/)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
130 f'My name is {name}, my age next year is {age+1}, my anniversary is {anniversary:%A, %B %d, %Y}.'
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
131 f'He said his name is {name!r}.'
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
132 f"""He said his name is {name!r}."""
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
133 f'{"quoted string"}'
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
134 f'{{ {4*10} }}'
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
135 f'This is an error }'
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
136 f'This is ok }}'
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
137 fr'x={4*10}\n'
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
138 </textarea></div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
139
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
140
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
141 <h2>Cython mode</h2>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
142
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
143 <div><textarea id="code-cython" name="code-cython">
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
144
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
145 import numpy as np
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
146 cimport cython
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
147 from libc.math cimport sqrt
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
148
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
149 @cython.boundscheck(False)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
150 @cython.wraparound(False)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
151 def pairwise_cython(double[:, ::1] X):
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
152 cdef int M = X.shape[0]
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
153 cdef int N = X.shape[1]
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
154 cdef double tmp, d
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
155 cdef double[:, ::1] D = np.empty((M, M), dtype=np.float64)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
156 for i in range(M):
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
157 for j in range(M):
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
158 d = 0.0
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
159 for k in range(N):
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
160 tmp = X[i, k] - X[j, k]
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
161 d += tmp * tmp
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
162 D[i, j] = sqrt(d)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
163 return np.asarray(D)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
164
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
165 </textarea></div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
166
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
167 <script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
168 var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
169 mode: {name: "python",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
170 version: 3,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
171 singleLineStringErrors: false},
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
172 lineNumbers: true,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
173 indentUnit: 4,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
174 matchBrackets: true
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
175 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
176
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
177 CodeMirror.fromTextArea(document.getElementById("code-cython"), {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
178 mode: {name: "text/x-cython",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
179 version: 2,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
180 singleLineStringErrors: false},
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
181 lineNumbers: true,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
182 indentUnit: 4,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
183 matchBrackets: true
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
184 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
185 </script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
186 <h2>Configuration Options for Python mode:</h2>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
187 <ul>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
188 <li>version - 2/3 - The version of Python to recognize. Default is 3.</li>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
189 <li>singleLineStringErrors - true/false - If you have a single-line string that is not terminated at the end of the line, this will show subsequent lines as errors if true, otherwise it will consider the newline as the end of the string. Default is false.</li>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
190 <li>hangingIndent - int - If you want to write long arguments to a function starting on a new line, how much that line should be indented. Defaults to one normal indentation unit.</li>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
191 </ul>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
192 <h2>Advanced Configuration Options:</h2>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
193 <p>Useful for superset of python syntax like Enthought enaml, IPython magics and questionmark help</p>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
194 <ul>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
195 <li>singleOperators - RegEx - Regular Expression for single operator matching, default : <pre>^[\\+\\-\\*/%&amp;|\\^~&lt;&gt;!]</pre> including <pre>@</pre> on Python 3</li>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
196 <li>singleDelimiters - RegEx - Regular Expression for single delimiter matching, default : <pre>^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]</pre></li>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
197 <li>doubleOperators - RegEx - Regular Expression for double operators matching, default : <pre>^((==)|(!=)|(&lt;=)|(&gt;=)|(&lt;&gt;)|(&lt;&lt;)|(&gt;&gt;)|(//)|(\\*\\*))</pre></li>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
198 <li>doubleDelimiters - RegEx - Regular Expression for double delimiters matching, default : <pre>^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&amp;=)|(\\|=)|(\\^=))</pre></li>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
199 <li>tripleDelimiters - RegEx - Regular Expression for triple delimiters matching, default : <pre>^((//=)|(&gt;&gt;=)|(&lt;&lt;=)|(\\*\\*=))</pre></li>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
200 <li>identifiers - RegEx - Regular Expression for identifier, default : <pre>^[_A-Za-z][_A-Za-z0-9]*</pre> on Python 2 and <pre>^[_A-Za-z\u00A1-\uFFFF][_A-Za-z0-9\u00A1-\uFFFF]*</pre> on Python 3.</li>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
201 <li>extra_keywords - list of string - List of extra words ton consider as keywords</li>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
202 <li>extra_builtins - list of string - List of extra words ton consider as builtins</li>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
203 </ul>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
204
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
205
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
206 <p><strong>MIME types defined:</strong> <code>text/x-python</code> and <code>text/x-cython</code>.</p>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
207 </article>