From 08e9503f842a2b89570cfe7476d935d247a1fb74 Mon Sep 17 00:00:00 2001 From: Slava Pestov <slava@factorcode.org> Date: Fri, 18 Jan 2008 02:39:09 -0500 Subject: [PATCH] XMode fixes --- extra/xmode/README.txt | 3 +++ extra/xmode/catalog/catalog.factor | 22 +++++++++++----------- extra/xmode/marker/context/context.factor | 1 + extra/xmode/marker/marker-tests.factor | 8 ++++++++ extra/xmode/modes/bcel.xml | 2 +- extra/xmode/modes/clips.xml | 2 +- extra/xmode/modes/objective-c.xml | 2 +- extra/xmode/modes/powerdynamo.xml | 16 ++++++++-------- extra/xmode/modes/rview.xml | 2 +- extra/xmode/modes/tthtml.xml | 2 +- 10 files changed, 36 insertions(+), 24 deletions(-) diff --git a/extra/xmode/README.txt b/extra/xmode/README.txt index 57d9f42b22..07d56dd877 100755 --- a/extra/xmode/README.txt +++ b/extra/xmode/README.txt @@ -36,6 +36,9 @@ to depend on: find a mode file which depends on this flaw, please fix it and submit the changes to the jEdit project. +- References to non-existent rule sets in IMPORT tags and DELEGATE + attributes were ignored in jEdit. They raise an error in Factor. + If you wish to contribute a new or improved mode file, please contact the jEdit project. Updated mode files in jEdit will be periodically imported into the Factor source tree. diff --git a/extra/xmode/catalog/catalog.factor b/extra/xmode/catalog/catalog.factor index 6a0efa072e..9c7e6a1ee7 100644 --- a/extra/xmode/catalog/catalog.factor +++ b/extra/xmode/catalog/catalog.factor @@ -42,9 +42,12 @@ MEMO: (load-mode) ( name -- rule-sets ) SYMBOL: rule-sets +: no-such-rule-set ( name -- * ) + "No such rule set: " swap append throw ; + : get-rule-set ( name -- rule-sets rules ) - "::" split1 [ swap (load-mode) ] [ rule-sets get ] if* - tuck at ; + dup "::" split1 [ swap (load-mode) ] [ rule-sets get ] if* + dup -roll at* [ nip ] [ drop no-such-rule-set ] if ; : resolve-delegate ( rule -- ) dup rule-delegate dup string? @@ -68,14 +71,11 @@ SYMBOL: rule-sets : resolve-imports ( ruleset -- ) dup rule-set-imports [ - get-rule-set dup [ - swap rule-sets [ - 2dup import-keywords - import-rules - ] with-variable - ] [ - 3drop - ] if + get-rule-set swap rule-sets [ + dup resolve-delegates + 2dup import-keywords + import-rules + ] with-variable ] with each ; : finalize-rule-set ( ruleset -- ) @@ -99,7 +99,7 @@ SYMBOL: rule-sets (load-mode) dup finalize-mode ; : reset-modes ( -- ) - \ load-mode "memoize" word-prop clear-assoc ; + \ (load-mode) "memoize" word-prop clear-assoc ; : ?glob-matches ( string glob/f -- ? ) dup [ glob-matches? ] [ 2drop f ] if ; diff --git a/extra/xmode/marker/context/context.factor b/extra/xmode/marker/context/context.factor index 8023e1d321..72ac3f2a3f 100644 --- a/extra/xmode/marker/context/context.factor +++ b/extra/xmode/marker/context/context.factor @@ -10,6 +10,7 @@ end ; : <line-context> ( ruleset parent -- line-context ) + over [ "no context" throw ] unless { set-line-context-in-rule-set set-line-context-parent } line-context construct ; diff --git a/extra/xmode/marker/marker-tests.factor b/extra/xmode/marker/marker-tests.factor index b9621a112a..6bcba91c84 100755 --- a/extra/xmode/marker/marker-tests.factor +++ b/extra/xmode/marker/marker-tests.factor @@ -133,3 +133,11 @@ IN: temporary ] [ f "font:75%/1.6em \"Lucida Grande\", \"Lucida Sans Unicode\", verdana, geneva, sans-serif;" "css" load-mode tokenize-line 2drop ] unit-test + +[ + { + T{ token f "<" MARKUP } + T{ token f "aaa" MARKUP } + T{ token f ">" MARKUP } + } +] [ f "<aaa>" "html" load-mode tokenize-line nip ] unit-test diff --git a/extra/xmode/modes/bcel.xml b/extra/xmode/modes/bcel.xml index 19ab3cfd67..628911f431 100644 --- a/extra/xmode/modes/bcel.xml +++ b/extra/xmode/modes/bcel.xml @@ -19,7 +19,7 @@ <SEQ TYPE="COMMENT1">/**/</SEQ> <!-- Javadoc comment --> - <SPAN TYPE="COMMENT3" DELEGATE="JAVADOC"> + <SPAN TYPE="COMMENT3"> <BEGIN>/**</BEGIN> <END>*/</END> </SPAN> diff --git a/extra/xmode/modes/clips.xml b/extra/xmode/modes/clips.xml index ce2efcabab..51d89d05eb 100644 --- a/extra/xmode/modes/clips.xml +++ b/extra/xmode/modes/clips.xml @@ -33,7 +33,7 @@ </SPAN> <!-- List literals --> - <SPAN TYPE="LITERAL2" NO_LINE_BREAK="TRUE" DELEGATE="LIST"> + <SPAN TYPE="LITERAL2" NO_LINE_BREAK="TRUE"> <BEGIN>[</BEGIN> <END>]</END> </SPAN> diff --git a/extra/xmode/modes/objective-c.xml b/extra/xmode/modes/objective-c.xml index c6c52c8211..7496838938 100644 --- a/extra/xmode/modes/objective-c.xml +++ b/extra/xmode/modes/objective-c.xml @@ -89,7 +89,7 @@ <EOL_SPAN_REGEXP HASH_CHAR="elif" TYPE="MARKUP" DELEGATE="c::CONDITION">elif\b</EOL_SPAN_REGEXP> <EOL_SPAN_REGEXP HASH_CHAR="if" TYPE="MARKUP" DELEGATE="c::CONDITION">if\b</EOL_SPAN_REGEXP> - <IMPORT DELEGATE="LEX"/> + <IMPORT DELEGATE="c::LEX"/> <!-- Directives --> <KEYWORDS> diff --git a/extra/xmode/modes/powerdynamo.xml b/extra/xmode/modes/powerdynamo.xml index 7babf3dc74..f5eb29e49c 100644 --- a/extra/xmode/modes/powerdynamo.xml +++ b/extra/xmode/modes/powerdynamo.xml @@ -200,11 +200,11 @@ for the other tags (data, document, etc). more support planned for future. <END>*/</END> </SPAN> - <SPAN TYPE="LITERAL1" DELEGATE="powerdynamo_LITERAL"> + <SPAN TYPE="LITERAL1"> <BEGIN>"</BEGIN> <END>"</END> </SPAN> - <SPAN TYPE="LITERAL1" DELEGATE="powerdynamo_LITERAL"> + <SPAN TYPE="LITERAL1"> <BEGIN>'</BEGIN> <END>'</END> </SPAN> @@ -413,11 +413,11 @@ for the other tags (data, document, etc). more support planned for future. </RULES> <RULES IGNORE_CASE="TRUE" SET="powerdynamo-tag-general"> - <SPAN TYPE="LITERAL1" DELEGATE="powerdynamo_LITERAL"> + <SPAN TYPE="LITERAL1"> <BEGIN>"</BEGIN> <END>"</END> </SPAN> - <SPAN TYPE="LITERAL1" DELEGATE="powerdynamo_LITERAL"> + <SPAN TYPE="LITERAL1"> <BEGIN>'</BEGIN> <END>'</END> </SPAN> @@ -428,11 +428,11 @@ for the other tags (data, document, etc). more support planned for future. </RULES> <RULES IGNORE_CASE="TRUE" SET="powerdynamo-tag-data"> - <SPAN TYPE="LITERAL1" DELEGATE="powerdynamo_LITERAL"> + <SPAN TYPE="LITERAL1"> <BEGIN>"</BEGIN> <END>"</END> </SPAN> - <SPAN TYPE="LITERAL1" DELEGATE="powerdynamo_LITERAL"> + <SPAN TYPE="LITERAL1"> <BEGIN>'</BEGIN> <END>'</END> </SPAN> @@ -444,11 +444,11 @@ for the other tags (data, document, etc). more support planned for future. </RULES> <RULES IGNORE_CASE="TRUE" SET="powerdynamo-tag-document"> - <SPAN TYPE="LITERAL1" DELEGATE="powerdynamo_LITERAL"> + <SPAN TYPE="LITERAL1"> <BEGIN>"</BEGIN> <END>"</END> </SPAN> - <SPAN TYPE="LITERAL1" DELEGATE="powerdynamo_LITERAL"> + <SPAN TYPE="LITERAL1"> <BEGIN>'</BEGIN> <END>'</END> </SPAN> diff --git a/extra/xmode/modes/rview.xml b/extra/xmode/modes/rview.xml index 9747465814..2ca2fdf36a 100644 --- a/extra/xmode/modes/rview.xml +++ b/extra/xmode/modes/rview.xml @@ -23,7 +23,7 @@ <SEQ TYPE="COMMENT1">/**/</SEQ> <!-- Javadoc comment --> - <SPAN TYPE="COMMENT2" DELEGATE="JAVADOC"> + <SPAN TYPE="COMMENT2"> <BEGIN>/**</BEGIN> <END>*/</END> </SPAN> diff --git a/extra/xmode/modes/tthtml.xml b/extra/xmode/modes/tthtml.xml index 24d9667c6c..37bfa2fb17 100644 --- a/extra/xmode/modes/tthtml.xml +++ b/extra/xmode/modes/tthtml.xml @@ -101,7 +101,7 @@ HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="(0x[\p{XDigit}]+[lL]?|[\p{Digit}]+(e[\p{Digit}]*)?[lLdDfF]?)"> - <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE" DELEGATE="VARIABLE"> + <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE"> <BEGIN>${</BEGIN> <END>}</END> </SPAN>