Merge lp:~gcrosswhite/leo-editor/fix-haskell-support into lp:leo-editor/old-trunk
- fix-haskell-support
- Merge into trunk
Status: | Merged |
---|---|
Merged at revision: | not available |
Proposed branch: | lp:~gcrosswhite/leo-editor/fix-haskell-support |
Merge into: | lp:leo-editor/old-trunk |
Diff against target: | None lines |
To merge this branch: | bzr merge lp:~gcrosswhite/leo-editor/fix-haskell-support |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Ville M. Vainio | Approve | ||
Review via email: mp+7828@code.launchpad.net |
Commit message
Description of the change
Gregory Crosswhite (gcrosswhite) wrote : | # |
Ville M. Vainio (villemvainio) wrote : | # |
Seems non-disruptive enough
- 2086. By Edward K. Ream
-
tracing/comment changes
- 2087. By Edward K. Ream
-
recommit after Ville's scriptFile location changes. Revised the comments in the disabled setting node.
- 2088. By Edward K. Ream
-
Added some docs about the new qt colorizer.
Fixed bug in c.tangleCommand
s.scanAllDirect ives:
it now inits self.print_mode properly.Added direct unit tests of scanAllDirectives.
Added unit test of @root output when @silent is in effect.All unit tests pass.
- 2089. By Edward K. Ream
-
recommit after Terry's todo.py update
- 2090. By Edward K. Ream
-
Simplified several aspects of the recoloring logic.
- Moved the restart logic into mainloop.
- Added several new state methods that clarify what is going on.
- Removed the "success" logic at the end of mainloop.
This was misguided: the pattern matchers are responsible for setting/clearing state.
- Removed the hack in clearState that cleared the restart dict.
This was an extremely poor idea: it just creates more confusion.Coloring appears to work for both Python and C.
I am a bit surprised that C works.
All unit tests pass.More work, including possibly theoretical work, will probably be needed to handle delegates.
- 2091. By Edward K. Ream
-
Call configure_tags in jEditColorizer.
__init_ _.
It's called only once per node.Fixed some pylint complaints.
- 2092. By Edward K. Ream
-
fixed some more pylint warnings
- 2093. By Edward K. Ream
-
disable call dot configure_tags
- 2094. By Edward K. Ream
-
Commented out or removed unused code.
This is only the start of a cleaning process.Eliminated the test against sys.platform in onTextChanged as shown below
if w.changingText: ### and not sys.platform.
startswith( 'linux' ): Clearly, the test against sys.platform is evil.
I don't remember why it might have been added.
If it ever gets added back, it must have an explanatory comment.Undo now works, and middle-button paste still works and sticks, on both Ubuntu and Xp.
Preview Diff
1 | === modified file 'leo/core/leoApp.py' | |||
2 | --- leo/core/leoApp.py 2009-06-20 12:45:35 +0000 | |||
3 | +++ leo/core/leoApp.py 2009-06-24 02:11:32 +0000 | |||
4 | @@ -168,7 +168,7 @@ | |||
5 | 168 | "elisp" : "el", | 168 | "elisp" : "el", |
6 | 169 | "forth" : "forth", | 169 | "forth" : "forth", |
7 | 170 | "fortran" : "f", | 170 | "fortran" : "f", |
9 | 171 | "fortran90" : "f", | 171 | "fortran90" : "f90", |
10 | 172 | "html" : "html", | 172 | "html" : "html", |
11 | 173 | "ini" : "ini", | 173 | "ini" : "ini", |
12 | 174 | "java" : "java", | 174 | "java" : "java", |
13 | @@ -212,7 +212,8 @@ | |||
14 | 212 | "css" : "css", | 212 | "css" : "css", |
15 | 213 | "el" : "elisp", | 213 | "el" : "elisp", |
16 | 214 | "forth" : "forth", | 214 | "forth" : "forth", |
18 | 215 | "f" : "fortran90", # or fortran ? | 215 | "f" : "fortran", |
19 | 216 | "f90" : "fortran90", | ||
20 | 216 | "h" : "c", | 217 | "h" : "c", |
21 | 217 | "html" : "html", | 218 | "html" : "html", |
22 | 218 | "ini" : "ini", | 219 | "ini" : "ini", |
23 | @@ -255,7 +256,7 @@ | |||
24 | 255 | 'cfg' : 'none', # Leo 4.5.1 | 256 | 'cfg' : 'none', # Leo 4.5.1 |
25 | 256 | 'cpp' : 'c', | 257 | 'cpp' : 'c', |
26 | 257 | 'el' : 'lisp', | 258 | 'el' : 'lisp', |
28 | 258 | 'f' : 'fortran', | 259 | 'f' : 'fortran90', |
29 | 259 | 'ksh' : 'none', # Leo 4.5.1 | 260 | 'ksh' : 'none', # Leo 4.5.1 |
30 | 260 | 'nw' : 'none', # noweb. | 261 | 'nw' : 'none', # noweb. |
31 | 261 | 'otl' : 'none', # vimoutline. | 262 | 'otl' : 'none', # vimoutline. |
32 | 262 | 263 | ||
33 | === modified file 'leo/modes/catalog' | |||
34 | --- leo/modes/catalog 2008-02-28 08:12:24 +0000 | |||
35 | +++ leo/modes/catalog 2009-06-24 02:11:32 +0000 | |||
36 | @@ -119,6 +119,9 @@ | |||
37 | 119 | <MODE NAME="fortran" FILE="fortran.xml" | 119 | <MODE NAME="fortran" FILE="fortran.xml" |
38 | 120 | FILE_NAME_GLOB="*.{f,for,fort,f77,f90}" /> | 120 | FILE_NAME_GLOB="*.{f,for,fort,f77,f90}" /> |
39 | 121 | 121 | ||
40 | 122 | <MODE NAME="fortran90" FILE="fortran90.xml" | ||
41 | 123 | FILE_NAME_GLOB="*.{f,for,fort,f90}" /> | ||
42 | 124 | |||
43 | 122 | <MODE NAME="foxpro" FILE="foxpro.xml" | 125 | <MODE NAME="foxpro" FILE="foxpro.xml" |
44 | 123 | FILE_NAME_GLOB="*.prg" /> | 126 | FILE_NAME_GLOB="*.prg" /> |
45 | 124 | 127 | ||
46 | 125 | 128 | ||
47 | === added file 'leo/modes/fortran90.py' | |||
48 | --- leo/modes/fortran90.py 1970-01-01 00:00:00 +0000 | |||
49 | +++ leo/modes/fortran90.py 2009-06-24 02:11:32 +0000 | |||
50 | @@ -0,0 +1,341 @@ | |||
51 | 1 | # Leo colorizer control file for fortran90 mode. | ||
52 | 2 | # This file is in the public domain. | ||
53 | 3 | |||
54 | 4 | # Properties for fortran90 mode. | ||
55 | 5 | properties = { | ||
56 | 6 | "blockComment": "!", | ||
57 | 7 | "indentNextLine": "\\s*((if\\s*\\(.*\\)\\s*then|else\\s*|do\\s*)*)", | ||
58 | 8 | "wordBreakChars": ",+-=<>/?^&*", | ||
59 | 9 | } | ||
60 | 10 | |||
61 | 11 | # Attributes dict for fortran90_main ruleset. | ||
62 | 12 | fortran90_main_attributes_dict = { | ||
63 | 13 | "default": "null", | ||
64 | 14 | "digit_re": "", | ||
65 | 15 | "escape": "", | ||
66 | 16 | "highlight_digits": "false", | ||
67 | 17 | "ignore_case": "true", | ||
68 | 18 | "no_word_sep": "", | ||
69 | 19 | } | ||
70 | 20 | |||
71 | 21 | # Dictionary of attributes dictionaries for fortran90 mode. | ||
72 | 22 | attributesDictDict = { | ||
73 | 23 | "fortran90_main": fortran90_main_attributes_dict, | ||
74 | 24 | } | ||
75 | 25 | |||
76 | 26 | # Keywords dict for fortran90_main ruleset. | ||
77 | 27 | fortran90_main_keywords_dict = { | ||
78 | 28 | ".false.": "keyword1", | ||
79 | 29 | ".true.": "keyword1", | ||
80 | 30 | "abs": "keyword1", | ||
81 | 31 | "acos": "keyword1", | ||
82 | 32 | "aimag": "keyword1", | ||
83 | 33 | "aint": "keyword1", | ||
84 | 34 | "allocatable": "keyword1", | ||
85 | 35 | "allocate": "keyword1", | ||
86 | 36 | "allocated": "keyword1", | ||
87 | 37 | "alog": "keyword1", | ||
88 | 38 | "alog10": "keyword1", | ||
89 | 39 | "amax0": "keyword1", | ||
90 | 40 | "amax1": "keyword1", | ||
91 | 41 | "amin0": "keyword1", | ||
92 | 42 | "amin1": "keyword1", | ||
93 | 43 | "amod": "keyword1", | ||
94 | 44 | "anint": "keyword1", | ||
95 | 45 | "asin": "keyword1", | ||
96 | 46 | "atan": "keyword1", | ||
97 | 47 | "atan2": "keyword1", | ||
98 | 48 | "backspace": "keyword1", | ||
99 | 49 | "cabs": "keyword1", | ||
100 | 50 | "call": "keyword1", | ||
101 | 51 | "case": "keyword1", | ||
102 | 52 | "ccos": "keyword1", | ||
103 | 53 | "ceiling": "keyword1", | ||
104 | 54 | "char": "keyword1", | ||
105 | 55 | "character": "keyword1", | ||
106 | 56 | "clog": "keyword1", | ||
107 | 57 | "close": "keyword1", | ||
108 | 58 | "cmplx": "keyword1", | ||
109 | 59 | "complex": "keyword1", | ||
110 | 60 | "conjg": "keyword1", | ||
111 | 61 | "contains": "keyword1", | ||
112 | 62 | "continue": "keyword1", | ||
113 | 63 | "cos": "keyword1", | ||
114 | 64 | "cosh": "keyword1", | ||
115 | 65 | "csin": "keyword1", | ||
116 | 66 | "csqrt": "keyword1", | ||
117 | 67 | "cycle": "keyword1", | ||
118 | 68 | "dabs": "keyword1", | ||
119 | 69 | "dacos": "keyword1", | ||
120 | 70 | "dasin": "keyword1", | ||
121 | 71 | "data": "keyword1", | ||
122 | 72 | "datan": "keyword1", | ||
123 | 73 | "datan2": "keyword1", | ||
124 | 74 | "dble": "keyword1", | ||
125 | 75 | "dcmplx": "keyword1", | ||
126 | 76 | "dcos": "keyword1", | ||
127 | 77 | "dcosh": "keyword1", | ||
128 | 78 | "ddim": "keyword1", | ||
129 | 79 | "deallocate": "keyword1", | ||
130 | 80 | "default": "keyword1", | ||
131 | 81 | "dexp": "keyword1", | ||
132 | 82 | "dfloat": "keyword1", | ||
133 | 83 | "dim": "keyword1", | ||
134 | 84 | "dimension": "keyword1", | ||
135 | 85 | "dint": "keyword1", | ||
136 | 86 | "dlog": "keyword1", | ||
137 | 87 | "dlog10": "keyword1", | ||
138 | 88 | "dmax1": "keyword1", | ||
139 | 89 | "dmin1": "keyword1", | ||
140 | 90 | "dmod": "keyword1", | ||
141 | 91 | "dnint": "keyword1", | ||
142 | 92 | "do": "keyword1", | ||
143 | 93 | "double": "keyword1", | ||
144 | 94 | "dprod": "keyword1", | ||
145 | 95 | "dreal": "keyword1", | ||
146 | 96 | "dsign": "keyword1", | ||
147 | 97 | "dsin": "keyword1", | ||
148 | 98 | "dsinh": "keyword1", | ||
149 | 99 | "dsqrt": "keyword1", | ||
150 | 100 | "dtan": "keyword1", | ||
151 | 101 | "dtanh": "keyword1", | ||
152 | 102 | "else": "keyword1", | ||
153 | 103 | "elseif": "keyword1", | ||
154 | 104 | "elsewhere": "keyword1", | ||
155 | 105 | "end": "keyword1", | ||
156 | 106 | "enddo": "keyword1", | ||
157 | 107 | "endfile": "keyword1", | ||
158 | 108 | "endif": "keyword1", | ||
159 | 109 | "exit": "keyword1", | ||
160 | 110 | "exp": "keyword1", | ||
161 | 111 | "explicit": "keyword1", | ||
162 | 112 | "float": "keyword1", | ||
163 | 113 | "floor": "keyword1", | ||
164 | 114 | "forall": "keyword1", | ||
165 | 115 | "format": "keyword1", | ||
166 | 116 | "function": "keyword1", | ||
167 | 117 | "goto": "keyword1", | ||
168 | 118 | "iabs": "keyword1", | ||
169 | 119 | "ichar": "keyword1", | ||
170 | 120 | "idim": "keyword1", | ||
171 | 121 | "idint": "keyword1", | ||
172 | 122 | "idnint": "keyword1", | ||
173 | 123 | "if": "keyword1", | ||
174 | 124 | "ifix": "keyword1", | ||
175 | 125 | "imag": "keyword1", | ||
176 | 126 | "implicit": "keyword1", | ||
177 | 127 | "include": "keyword1", | ||
178 | 128 | "index": "keyword1", | ||
179 | 129 | "inquire": "keyword1", | ||
180 | 130 | "int": "keyword1", | ||
181 | 131 | "integer": "keyword1", | ||
182 | 132 | "isign": "keyword1", | ||
183 | 133 | "kind": "keyword1", | ||
184 | 134 | "len": "keyword1", | ||
185 | 135 | "lge": "keyword1", | ||
186 | 136 | "lgt": "keyword1", | ||
187 | 137 | "lle": "keyword1", | ||
188 | 138 | "llt": "keyword1", | ||
189 | 139 | "log": "keyword1", | ||
190 | 140 | "log10": "keyword1", | ||
191 | 141 | "logical": "keyword1", | ||
192 | 142 | "max": "keyword1", | ||
193 | 143 | "max0": "keyword1", | ||
194 | 144 | "max1": "keyword1", | ||
195 | 145 | "min": "keyword1", | ||
196 | 146 | "min0": "keyword1", | ||
197 | 147 | "min1": "keyword1", | ||
198 | 148 | "mod": "keyword1", | ||
199 | 149 | "module": "keyword1", | ||
200 | 150 | "modulo": "keyword1", | ||
201 | 151 | "nint": "keyword1", | ||
202 | 152 | "none": "keyword1", | ||
203 | 153 | "open": "keyword1", | ||
204 | 154 | "parameter": "keyword1", | ||
205 | 155 | "pause": "keyword1", | ||
206 | 156 | "precision": "keyword1", | ||
207 | 157 | "print": "keyword1", | ||
208 | 158 | "program": "keyword1", | ||
209 | 159 | "read": "keyword1", | ||
210 | 160 | "real": "keyword1", | ||
211 | 161 | "return": "keyword1", | ||
212 | 162 | "rewind": "keyword1", | ||
213 | 163 | "select": "keyword1", | ||
214 | 164 | "sign": "keyword1", | ||
215 | 165 | "sin": "keyword1", | ||
216 | 166 | "sinh": "keyword1", | ||
217 | 167 | "sngl": "keyword1", | ||
218 | 168 | "sqrt": "keyword1", | ||
219 | 169 | "stop": "keyword1", | ||
220 | 170 | "subroutine": "keyword1", | ||
221 | 171 | "tan": "keyword1", | ||
222 | 172 | "tanh": "keyword1", | ||
223 | 173 | "then": "keyword1", | ||
224 | 174 | "transfer": "keyword1", | ||
225 | 175 | "use": "keyword1", | ||
226 | 176 | "where": "keyword1", | ||
227 | 177 | "while": "keyword1", | ||
228 | 178 | "write": "keyword1", | ||
229 | 179 | "zext": "keyword1", | ||
230 | 180 | } | ||
231 | 181 | |||
232 | 182 | # Dictionary of keywords dictionaries for fortran90 mode. | ||
233 | 183 | keywordsDictDict = { | ||
234 | 184 | "fortran90_main": fortran90_main_keywords_dict, | ||
235 | 185 | } | ||
236 | 186 | |||
237 | 187 | # Rules for fortran90_main ruleset. | ||
238 | 188 | |||
239 | 189 | def fortran90_rule0(colorer, s, i): | ||
240 | 190 | return colorer.match_terminate(s, i, kind="", at_char=132) | ||
241 | 191 | |||
242 | 192 | def fortran90_rule1(colorer, s, i): | ||
243 | 193 | return colorer.match_eol_span(s, i, kind="comment1", seq="!", | ||
244 | 194 | at_line_start=False, at_whitespace_end=False, at_word_start=False, | ||
245 | 195 | delegate="", exclude_match=False) | ||
246 | 196 | |||
247 | 197 | def fortran90_rule2(colorer, s, i): | ||
248 | 198 | return colorer.match_seq(s, i, kind="operator", seq="<=", | ||
249 | 199 | at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="") | ||
250 | 200 | |||
251 | 201 | def fortran90_rule3(colorer, s, i): | ||
252 | 202 | return colorer.match_seq(s, i, kind="operator", seq=">=", | ||
253 | 203 | at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="") | ||
254 | 204 | |||
255 | 205 | def fortran90_rule4(colorer, s, i): | ||
256 | 206 | return colorer.match_seq(s, i, kind="operator", seq=">", | ||
257 | 207 | at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="") | ||
258 | 208 | |||
259 | 209 | def fortran90_rule5(colorer, s, i): | ||
260 | 210 | return colorer.match_seq(s, i, kind="operator", seq="<", | ||
261 | 211 | at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="") | ||
262 | 212 | |||
263 | 213 | def fortran90_rule6(colorer, s, i): | ||
264 | 214 | return colorer.match_seq(s, i, kind="operator", seq="&", | ||
265 | 215 | at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="") | ||
266 | 216 | |||
267 | 217 | def fortran90_rule7(colorer, s, i): | ||
268 | 218 | return colorer.match_seq(s, i, kind="operator", seq="/=", | ||
269 | 219 | at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="") | ||
270 | 220 | |||
271 | 221 | def fortran90_rule8(colorer, s, i): | ||
272 | 222 | return colorer.match_seq(s, i, kind="operator", seq="==", | ||
273 | 223 | at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="") | ||
274 | 224 | |||
275 | 225 | def fortran90_rule9(colorer, s, i): | ||
276 | 226 | return colorer.match_seq(s, i, kind="operator", seq=".lt.", | ||
277 | 227 | at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="") | ||
278 | 228 | |||
279 | 229 | def fortran90_rule10(colorer, s, i): | ||
280 | 230 | return colorer.match_seq(s, i, kind="operator", seq=".gt.", | ||
281 | 231 | at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="") | ||
282 | 232 | |||
283 | 233 | def fortran90_rule11(colorer, s, i): | ||
284 | 234 | return colorer.match_seq(s, i, kind="operator", seq=".eq.", | ||
285 | 235 | at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="") | ||
286 | 236 | |||
287 | 237 | def fortran90_rule12(colorer, s, i): | ||
288 | 238 | return colorer.match_seq(s, i, kind="operator", seq=".ne.", | ||
289 | 239 | at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="") | ||
290 | 240 | |||
291 | 241 | def fortran90_rule13(colorer, s, i): | ||
292 | 242 | return colorer.match_seq(s, i, kind="operator", seq=".le.", | ||
293 | 243 | at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="") | ||
294 | 244 | |||
295 | 245 | def fortran90_rule14(colorer, s, i): | ||
296 | 246 | return colorer.match_seq(s, i, kind="operator", seq=".ge.", | ||
297 | 247 | at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="") | ||
298 | 248 | |||
299 | 249 | def fortran90_rule15(colorer, s, i): | ||
300 | 250 | return colorer.match_seq(s, i, kind="operator", seq=".AND.", | ||
301 | 251 | at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="") | ||
302 | 252 | |||
303 | 253 | def fortran90_rule16(colorer, s, i): | ||
304 | 254 | return colorer.match_seq(s, i, kind="operator", seq=".OR.", | ||
305 | 255 | at_line_start=False, at_whitespace_end=False, at_word_start=False, delegate="") | ||
306 | 256 | |||
307 | 257 | def fortran90_rule17(colorer, s, i): | ||
308 | 258 | return colorer.match_keywords(s, i) | ||
309 | 259 | |||
310 | 260 | # Rules dict for fortran90_main ruleset. | ||
311 | 261 | rulesDict1 = { | ||
312 | 262 | "!": [fortran90_rule1,], | ||
313 | 263 | "&": [fortran90_rule6,], | ||
314 | 264 | ".": [fortran90_rule9,fortran90_rule10,fortran90_rule11,fortran90_rule12,fortran90_rule13,fortran90_rule14,fortran90_rule15,fortran90_rule16,fortran90_rule17,], | ||
315 | 265 | "/": [fortran90_rule7,], | ||
316 | 266 | "0": [fortran90_rule17,], | ||
317 | 267 | "1": [fortran90_rule17,], | ||
318 | 268 | "2": [fortran90_rule17,], | ||
319 | 269 | "3": [fortran90_rule17,], | ||
320 | 270 | "4": [fortran90_rule17,], | ||
321 | 271 | "5": [fortran90_rule17,], | ||
322 | 272 | "6": [fortran90_rule17,], | ||
323 | 273 | "7": [fortran90_rule17,], | ||
324 | 274 | "8": [fortran90_rule17,], | ||
325 | 275 | "9": [fortran90_rule17,], | ||
326 | 276 | "<": [fortran90_rule2,fortran90_rule5,], | ||
327 | 277 | "=": [fortran90_rule8,], | ||
328 | 278 | ">": [fortran90_rule3,fortran90_rule4,], | ||
329 | 279 | "@": [fortran90_rule17,], | ||
330 | 280 | "A": [fortran90_rule17,], | ||
331 | 281 | "B": [fortran90_rule17,], | ||
332 | 282 | "C": [fortran90_rule17,], | ||
333 | 283 | "D": [fortran90_rule17,], | ||
334 | 284 | "E": [fortran90_rule17,], | ||
335 | 285 | "F": [fortran90_rule17,], | ||
336 | 286 | "G": [fortran90_rule17,], | ||
337 | 287 | "H": [fortran90_rule17,], | ||
338 | 288 | "I": [fortran90_rule17,], | ||
339 | 289 | "J": [fortran90_rule17,], | ||
340 | 290 | "K": [fortran90_rule17,], | ||
341 | 291 | "L": [fortran90_rule17,], | ||
342 | 292 | "M": [fortran90_rule17,], | ||
343 | 293 | "N": [fortran90_rule17,], | ||
344 | 294 | "O": [fortran90_rule17,], | ||
345 | 295 | "P": [fortran90_rule17,], | ||
346 | 296 | "Q": [fortran90_rule17,], | ||
347 | 297 | "R": [fortran90_rule17,], | ||
348 | 298 | "S": [fortran90_rule17,], | ||
349 | 299 | "T": [fortran90_rule17,], | ||
350 | 300 | "U": [fortran90_rule17,], | ||
351 | 301 | "V": [fortran90_rule17,], | ||
352 | 302 | "W": [fortran90_rule17,], | ||
353 | 303 | "X": [fortran90_rule17,], | ||
354 | 304 | "Y": [fortran90_rule17,], | ||
355 | 305 | "Z": [fortran90_rule17,], | ||
356 | 306 | "a": [fortran90_rule17,], | ||
357 | 307 | "b": [fortran90_rule17,], | ||
358 | 308 | "c": [fortran90_rule17,], | ||
359 | 309 | "d": [fortran90_rule17,], | ||
360 | 310 | "e": [fortran90_rule17,], | ||
361 | 311 | "f": [fortran90_rule17,], | ||
362 | 312 | "g": [fortran90_rule17,], | ||
363 | 313 | "h": [fortran90_rule17,], | ||
364 | 314 | "i": [fortran90_rule17,], | ||
365 | 315 | "j": [fortran90_rule17,], | ||
366 | 316 | "k": [fortran90_rule17,], | ||
367 | 317 | "l": [fortran90_rule17,], | ||
368 | 318 | "m": [fortran90_rule17,], | ||
369 | 319 | "n": [fortran90_rule17,], | ||
370 | 320 | "o": [fortran90_rule17,], | ||
371 | 321 | "p": [fortran90_rule17,], | ||
372 | 322 | "q": [fortran90_rule17,], | ||
373 | 323 | "r": [fortran90_rule17,], | ||
374 | 324 | "s": [fortran90_rule17,], | ||
375 | 325 | "t": [fortran90_rule17,], | ||
376 | 326 | "u": [fortran90_rule17,], | ||
377 | 327 | "v": [fortran90_rule17,], | ||
378 | 328 | "w": [fortran90_rule17,], | ||
379 | 329 | "x": [fortran90_rule17,], | ||
380 | 330 | "y": [fortran90_rule17,], | ||
381 | 331 | "z": [fortran90_rule17,], | ||
382 | 332 | } | ||
383 | 333 | |||
384 | 334 | # x.rulesDictDict for fortran90 mode. | ||
385 | 335 | rulesDictDict = { | ||
386 | 336 | "fortran90_main": rulesDict1, | ||
387 | 337 | } | ||
388 | 338 | |||
389 | 339 | # Import dict for fortran90 mode. | ||
390 | 340 | importDict = {} | ||
391 | 341 | |||
392 | 0 | 342 | ||
393 | === added file 'leo/modes/fortran90.xml' | |||
394 | --- leo/modes/fortran90.xml 1970-01-01 00:00:00 +0000 | |||
395 | +++ leo/modes/fortran90.xml 2009-06-24 02:11:32 +0000 | |||
396 | @@ -0,0 +1,231 @@ | |||
397 | 1 | <?xml version="1.0"?> | ||
398 | 2 | |||
399 | 3 | <!DOCTYPE MODE SYSTEM "xmode.dtd"> | ||
400 | 4 | <!-- FORTRAN90 edit mode | ||
401 | 5 | Version 1.0 | ||
402 | 6 | June 23, 2009 | ||
403 | 7 | --> | ||
404 | 8 | <!-- This is a mode for FORTRAN 90 source files. In general, this supports | ||
405 | 9 | common features of the F90 specification. This may however contain some | ||
406 | 10 | platform or vendor specific keywords (in paticular COMPAQ(Digital) FORTRAN). | ||
407 | 11 | --> | ||
408 | 12 | <!-- Suggested catalog file entry: | ||
409 | 13 | |||
410 | 14 | <MODE NAME="FORTRAN90" FILE="FORTRAN90.xml" | ||
411 | 15 | FILE_NAME_GLOB="*.{f,for,fort,f90}" /> | ||
412 | 16 | --> | ||
413 | 17 | <MODE> | ||
414 | 18 | <PROPS> | ||
415 | 19 | <PROPERTY NAME="blockComment" VALUE="!" /> | ||
416 | 20 | <PROPERTY NAME="wordBreakChars" VALUE=",+-=<>/?^&*" /> | ||
417 | 21 | <PROPERTY NAME="indentNextLine" | ||
418 | 22 | VALUE="\s*((if\s*\(.*\)\s*then|else\s*|do\s*)*)" /> | ||
419 | 23 | </PROPS> | ||
420 | 24 | |||
421 | 25 | <RULES IGNORE_CASE="TRUE" HIGHLIGHT_DIGITS="FALSE"> | ||
422 | 26 | <!-- In free form, column 132 is the last column parsed. --> | ||
423 | 27 | <TERMINATE AT_CHAR="132" /> | ||
424 | 28 | |||
425 | 29 | <!-- comment --> | ||
426 | 30 | <EOL_SPAN TYPE="COMMENT1">!</EOL_SPAN> | ||
427 | 31 | <!-- Highlighted Operators --> | ||
428 | 32 | <SEQ TYPE="OPERATOR"><=</SEQ> | ||
429 | 33 | <SEQ TYPE="OPERATOR">>=</SEQ> | ||
430 | 34 | <SEQ TYPE="OPERATOR">></SEQ> | ||
431 | 35 | <SEQ TYPE="OPERATOR"><</SEQ> | ||
432 | 36 | <SEQ TYPE="OPERATOR">&</SEQ> | ||
433 | 37 | <SEQ TYPE="OPERATOR">/=</SEQ> | ||
434 | 38 | <SEQ TYPE="OPERATOR">==</SEQ> | ||
435 | 39 | <SEQ TYPE="OPERATOR">.lt.</SEQ> | ||
436 | 40 | <SEQ TYPE="OPERATOR">.gt.</SEQ> | ||
437 | 41 | <SEQ TYPE="OPERATOR">.eq.</SEQ> | ||
438 | 42 | <SEQ TYPE="OPERATOR">.ne.</SEQ> | ||
439 | 43 | <SEQ TYPE="OPERATOR">.le.</SEQ> | ||
440 | 44 | <SEQ TYPE="OPERATOR">.ge.</SEQ> | ||
441 | 45 | <SEQ TYPE="OPERATOR">.AND.</SEQ> | ||
442 | 46 | <SEQ TYPE="OPERATOR">.OR.</SEQ> | ||
443 | 47 | |||
444 | 48 | <KEYWORDS> | ||
445 | 49 | <!-- unclassified keywords --> | ||
446 | 50 | <KEYWORD1>INCLUDE</KEYWORD1> | ||
447 | 51 | <!-- Program units and calling them --> | ||
448 | 52 | <KEYWORD1>PROGRAM</KEYWORD1> | ||
449 | 53 | <KEYWORD1>MODULE</KEYWORD1> | ||
450 | 54 | <KEYWORD1>SUBROUTINE</KEYWORD1> | ||
451 | 55 | <KEYWORD1>FUNCTION</KEYWORD1> | ||
452 | 56 | <KEYWORD1>CONTAINS</KEYWORD1> | ||
453 | 57 | <KEYWORD1>USE</KEYWORD1> | ||
454 | 58 | <KEYWORD1>CALL</KEYWORD1> | ||
455 | 59 | <KEYWORD1>RETURN</KEYWORD1> | ||
456 | 60 | <!-- data types, declaration, and allocation keywords --> | ||
457 | 61 | <KEYWORD1>IMPLICIT</KEYWORD1> | ||
458 | 62 | <KEYWORD1>EXPLICIT</KEYWORD1> | ||
459 | 63 | <KEYWORD1>NONE</KEYWORD1> | ||
460 | 64 | <KEYWORD1>DATA</KEYWORD1> | ||
461 | 65 | <KEYWORD1>PARAMETER</KEYWORD1> | ||
462 | 66 | <KEYWORD1>ALLOCATE</KEYWORD1> | ||
463 | 67 | <KEYWORD1>ALLOCATABLE</KEYWORD1> | ||
464 | 68 | <KEYWORD1>ALLOCATED</KEYWORD1> | ||
465 | 69 | <KEYWORD1>DEALLOCATE</KEYWORD1> | ||
466 | 70 | <KEYWORD1>INTEGER</KEYWORD1> | ||
467 | 71 | <KEYWORD1>REAL</KEYWORD1> | ||
468 | 72 | <KEYWORD1>DOUBLE</KEYWORD1> | ||
469 | 73 | <KEYWORD1>PRECISION</KEYWORD1> | ||
470 | 74 | <KEYWORD1>COMPLEX</KEYWORD1> | ||
471 | 75 | <KEYWORD1>LOGICAL</KEYWORD1> | ||
472 | 76 | <KEYWORD1>CHARACTER</KEYWORD1> | ||
473 | 77 | <KEYWORD1>DIMENSION</KEYWORD1> | ||
474 | 78 | <KEYWORD1>KIND</KEYWORD1> | ||
475 | 79 | <!-- FORTRAN Statements --> | ||
476 | 80 | <KEYWORD1>CASE</KEYWORD1> | ||
477 | 81 | <KEYWORD1>SELECT</KEYWORD1> | ||
478 | 82 | <KEYWORD1>DEFAULT</KEYWORD1> | ||
479 | 83 | <KEYWORD1>CONTINUE</KEYWORD1> | ||
480 | 84 | <KEYWORD1>CYCLE</KEYWORD1> | ||
481 | 85 | <KEYWORD1>DO</KEYWORD1> | ||
482 | 86 | <KEYWORD1>WHILE</KEYWORD1> | ||
483 | 87 | <KEYWORD1>ELSE</KEYWORD1> | ||
484 | 88 | <KEYWORD1>IF</KEYWORD1> | ||
485 | 89 | <KEYWORD1>ELSEIF</KEYWORD1> | ||
486 | 90 | <KEYWORD1>THEN</KEYWORD1> | ||
487 | 91 | <KEYWORD1>ELSEWHERE</KEYWORD1> | ||
488 | 92 | <KEYWORD1>END</KEYWORD1> | ||
489 | 93 | <KEYWORD1>ENDIF</KEYWORD1> | ||
490 | 94 | <KEYWORD1>ENDDO</KEYWORD1> | ||
491 | 95 | <KEYWORD1>FORALL</KEYWORD1> | ||
492 | 96 | <KEYWORD1>WHERE</KEYWORD1> | ||
493 | 97 | <KEYWORD1>EXIT</KEYWORD1> | ||
494 | 98 | <KEYWORD1>GOTO</KEYWORD1> | ||
495 | 99 | <KEYWORD1>PAUSE</KEYWORD1> | ||
496 | 100 | <KEYWORD1>STOP</KEYWORD1> | ||
497 | 101 | <!-- i/o keywords --> | ||
498 | 102 | <KEYWORD1>BACKSPACE</KEYWORD1> | ||
499 | 103 | <KEYWORD1>CLOSE</KEYWORD1> | ||
500 | 104 | <KEYWORD1>ENDFILE</KEYWORD1> | ||
501 | 105 | <KEYWORD1>INQUIRE</KEYWORD1> | ||
502 | 106 | <KEYWORD1>OPEN</KEYWORD1> | ||
503 | 107 | <KEYWORD1>PRINT</KEYWORD1> | ||
504 | 108 | <KEYWORD1>READ</KEYWORD1> | ||
505 | 109 | <KEYWORD1>REWIND</KEYWORD1> | ||
506 | 110 | <KEYWORD1>WRITE</KEYWORD1> | ||
507 | 111 | <KEYWORD1>FORMAT</KEYWORD1> | ||
508 | 112 | <!-- Type conversion and utility functions --> | ||
509 | 113 | <KEYWORD1>AIMAG</KEYWORD1> | ||
510 | 114 | <KEYWORD1>AINT</KEYWORD1> | ||
511 | 115 | <KEYWORD1>AMAX0</KEYWORD1> | ||
512 | 116 | <KEYWORD1>AMIN0</KEYWORD1> | ||
513 | 117 | <KEYWORD1>ANINT</KEYWORD1> | ||
514 | 118 | <KEYWORD1>CEILING</KEYWORD1> | ||
515 | 119 | <KEYWORD1>CMPLX</KEYWORD1> | ||
516 | 120 | <KEYWORD1>CONJG</KEYWORD1> | ||
517 | 121 | <KEYWORD1>DBLE</KEYWORD1> | ||
518 | 122 | <KEYWORD1>DCMPLX</KEYWORD1> | ||
519 | 123 | <KEYWORD1>DFLOAT</KEYWORD1> | ||
520 | 124 | <KEYWORD1>DIM</KEYWORD1> | ||
521 | 125 | <KEYWORD1>DPROD</KEYWORD1> | ||
522 | 126 | <KEYWORD1>FLOAT</KEYWORD1> | ||
523 | 127 | <KEYWORD1>FLOOR</KEYWORD1> | ||
524 | 128 | <KEYWORD1>IFIX</KEYWORD1> | ||
525 | 129 | <KEYWORD1>IMAG</KEYWORD1> | ||
526 | 130 | <KEYWORD1>INT</KEYWORD1> | ||
527 | 131 | <KEYWORD1>LOGICAL</KEYWORD1> | ||
528 | 132 | <KEYWORD1>MODULO</KEYWORD1> | ||
529 | 133 | <KEYWORD1>NINT</KEYWORD1> | ||
530 | 134 | <KEYWORD1>REAL</KEYWORD1> | ||
531 | 135 | <KEYWORD1>SIGN</KEYWORD1> | ||
532 | 136 | <KEYWORD1>SNGL</KEYWORD1> | ||
533 | 137 | <KEYWORD1>TRANSFER</KEYWORD1> | ||
534 | 138 | <KEYWORD1>ZEXT</KEYWORD1> | ||
535 | 139 | <!-- More Functions --> | ||
536 | 140 | <KEYWORD1>ABS</KEYWORD1> | ||
537 | 141 | <KEYWORD1>ACOS</KEYWORD1> | ||
538 | 142 | <KEYWORD1>AIMAG</KEYWORD1> | ||
539 | 143 | <KEYWORD1>AINT</KEYWORD1> | ||
540 | 144 | <KEYWORD1>ALOG</KEYWORD1> | ||
541 | 145 | <KEYWORD1>ALOG10</KEYWORD1> | ||
542 | 146 | <KEYWORD1>AMAX0</KEYWORD1> | ||
543 | 147 | <KEYWORD1>AMAX1</KEYWORD1> | ||
544 | 148 | <KEYWORD1>AMIN0</KEYWORD1> | ||
545 | 149 | <KEYWORD1>AMIN1</KEYWORD1> | ||
546 | 150 | <KEYWORD1>AMOD</KEYWORD1> | ||
547 | 151 | <KEYWORD1>ANINT</KEYWORD1> | ||
548 | 152 | <KEYWORD1>ASIN</KEYWORD1> | ||
549 | 153 | <KEYWORD1>ATAN</KEYWORD1> | ||
550 | 154 | <KEYWORD1>ATAN2</KEYWORD1> | ||
551 | 155 | <KEYWORD1>CABS</KEYWORD1> | ||
552 | 156 | <KEYWORD1>CCOS</KEYWORD1> | ||
553 | 157 | <KEYWORD1>CHAR</KEYWORD1> | ||
554 | 158 | <KEYWORD1>CLOG</KEYWORD1> | ||
555 | 159 | <KEYWORD1>CMPLX</KEYWORD1> | ||
556 | 160 | <KEYWORD1>CONJG</KEYWORD1> | ||
557 | 161 | <KEYWORD1>COS</KEYWORD1> | ||
558 | 162 | <KEYWORD1>COSH</KEYWORD1> | ||
559 | 163 | <KEYWORD1>CSIN</KEYWORD1> | ||
560 | 164 | <KEYWORD1>CSQRT</KEYWORD1> | ||
561 | 165 | <KEYWORD1>DABS</KEYWORD1> | ||
562 | 166 | <KEYWORD1>DACOS</KEYWORD1> | ||
563 | 167 | <KEYWORD1>DASIN</KEYWORD1> | ||
564 | 168 | <KEYWORD1>DATAN</KEYWORD1> | ||
565 | 169 | <KEYWORD1>DATAN2</KEYWORD1> | ||
566 | 170 | <KEYWORD1>DBLE</KEYWORD1> | ||
567 | 171 | <KEYWORD1>DCOS</KEYWORD1> | ||
568 | 172 | <KEYWORD1>DCOSH</KEYWORD1> | ||
569 | 173 | <KEYWORD1>DDIM</KEYWORD1> | ||
570 | 174 | <KEYWORD1>DEXP</KEYWORD1> | ||
571 | 175 | <KEYWORD1>DIM</KEYWORD1> | ||
572 | 176 | <KEYWORD1>DINT</KEYWORD1> | ||
573 | 177 | <KEYWORD1>DLOG</KEYWORD1> | ||
574 | 178 | <KEYWORD1>DLOG10</KEYWORD1> | ||
575 | 179 | <KEYWORD1>DMAX1</KEYWORD1> | ||
576 | 180 | <KEYWORD1>DMIN1</KEYWORD1> | ||
577 | 181 | <KEYWORD1>DMOD</KEYWORD1> | ||
578 | 182 | <KEYWORD1>DNINT</KEYWORD1> | ||
579 | 183 | <KEYWORD1>DPROD</KEYWORD1> | ||
580 | 184 | <KEYWORD1>DREAL</KEYWORD1> | ||
581 | 185 | <KEYWORD1>DSIGN</KEYWORD1> | ||
582 | 186 | <KEYWORD1>DSIN</KEYWORD1> | ||
583 | 187 | <KEYWORD1>DSINH</KEYWORD1> | ||
584 | 188 | <KEYWORD1>DSQRT</KEYWORD1> | ||
585 | 189 | <KEYWORD1>DTAN</KEYWORD1> | ||
586 | 190 | <KEYWORD1>DTANH</KEYWORD1> | ||
587 | 191 | <KEYWORD1>EXP</KEYWORD1> | ||
588 | 192 | <KEYWORD1>FLOAT</KEYWORD1> | ||
589 | 193 | <KEYWORD1>IABS</KEYWORD1> | ||
590 | 194 | <KEYWORD1>ICHAR</KEYWORD1> | ||
591 | 195 | <KEYWORD1>IDIM</KEYWORD1> | ||
592 | 196 | <KEYWORD1>IDINT</KEYWORD1> | ||
593 | 197 | <KEYWORD1>IDNINT</KEYWORD1> | ||
594 | 198 | <KEYWORD1>IFIX</KEYWORD1> | ||
595 | 199 | <KEYWORD1>INDEX</KEYWORD1> | ||
596 | 200 | <KEYWORD1>INT</KEYWORD1> | ||
597 | 201 | <KEYWORD1>ISIGN</KEYWORD1> | ||
598 | 202 | <KEYWORD1>LEN</KEYWORD1> | ||
599 | 203 | <KEYWORD1>LGE</KEYWORD1> | ||
600 | 204 | <KEYWORD1>LGT</KEYWORD1> | ||
601 | 205 | <KEYWORD1>LLE</KEYWORD1> | ||
602 | 206 | <KEYWORD1>LLT</KEYWORD1> | ||
603 | 207 | <KEYWORD1>LOG</KEYWORD1> | ||
604 | 208 | <KEYWORD1>LOG10</KEYWORD1> | ||
605 | 209 | <KEYWORD1>MAX</KEYWORD1> | ||
606 | 210 | <KEYWORD1>MAX0</KEYWORD1> | ||
607 | 211 | <KEYWORD1>MAX1</KEYWORD1> | ||
608 | 212 | <KEYWORD1>MIN</KEYWORD1> | ||
609 | 213 | <KEYWORD1>MIN0</KEYWORD1> | ||
610 | 214 | <KEYWORD1>MIN1</KEYWORD1> | ||
611 | 215 | <KEYWORD1>MOD</KEYWORD1> | ||
612 | 216 | <KEYWORD1>NINT</KEYWORD1> | ||
613 | 217 | <KEYWORD1>REAL</KEYWORD1> | ||
614 | 218 | <KEYWORD1>SIGN</KEYWORD1> | ||
615 | 219 | <KEYWORD1>SIN</KEYWORD1> | ||
616 | 220 | <KEYWORD1>SINH</KEYWORD1> | ||
617 | 221 | <KEYWORD1>SNGL</KEYWORD1> | ||
618 | 222 | <KEYWORD1>SQRT</KEYWORD1> | ||
619 | 223 | <KEYWORD1>TAN</KEYWORD1> | ||
620 | 224 | <KEYWORD1>TANH</KEYWORD1> | ||
621 | 225 | <!-- logical values --> | ||
622 | 226 | <KEYWORD1>.false.</KEYWORD1> | ||
623 | 227 | <KEYWORD1>.true.</KEYWORD1> | ||
624 | 228 | |||
625 | 229 | </KEYWORDS> | ||
626 | 230 | </RULES> | ||
627 | 231 | </MODE> |
At the moment, support for Fortran 90 in Leo is a touch problematic. Although Leo is smart enough to recognize "@language fortran90" and to use "!" for comments instead of "C", there is no corresponding color mode file so that syntax coloring is disabled.
To correct this problem, I have created "fortran90.xml" and "fortran90.py" in leo/modes (the latter being generated from the former using the jEdit2py script), which are essentially just tweaks of the existing "fortran" mode with modified comment characters.
While I was at it, I also modified leoApp.py to make Fortran 90 specifically be associated with .f90 files, and Fortran associated by default to .f files.