Merge lp:~gcrosswhite/leo-editor/fix-haskell-support into lp:leo-editor/old-trunk

Proposed by Gregory Crosswhite
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
Reviewer Review Type Date Requested Status
Ville M. Vainio Approve
Review via email: mp+7828@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Gregory Crosswhite (gcrosswhite) wrote :

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.

Revision history for this message
Ville M. Vainio (villemvainio) wrote :

Seems non-disruptive enough

review: Approve
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.tangleCommands.scanAllDirectives:
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

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
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=",+-=&lt;&gt;/?^&amp;*" />
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">&lt;=</SEQ>
429+ <SEQ TYPE="OPERATOR">&gt;=</SEQ>
430+ <SEQ TYPE="OPERATOR">&gt;</SEQ>
431+ <SEQ TYPE="OPERATOR">&lt;</SEQ>
432+ <SEQ TYPE="OPERATOR">&amp;</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>

Subscribers

People subscribed via source and target branches

to status/vote changes: