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