Commit ac297ba5250f5e25067aeaae6d269b7295b19e05

Michael Schmidt 2020-04-27T22:20:41

Scheme: Added missing special keywords (#2304)

diff --git a/components/prism-scheme.js b/components/prism-scheme.js
index ad5d000..878383f 100644
--- a/components/prism-scheme.js
+++ b/components/prism-scheme.js
@@ -18,7 +18,7 @@ Prism.languages.scheme = {
 		lookbehind: true
 	},
 	'keyword': {
-		pattern: /(\()(?:define(?:-syntax|-library|-values)?|(?:case-)?lambda|let(?:\*|rec)?(?:-values)?|else|if|cond|begin|delay(?:-force)?|parameterize|guard|set!|(?:quasi-)?quote|syntax-rules)(?=[()\s])/,
+		pattern: /(\()(?:define(?:-library|-macro|-syntax|-values)?|defmacro|(?:case-)?lambda|let(?:(?:\*|rec)?(?:-values)?|-syntax|rec-syntax)|else|if|cond|begin|delay(?:-force)?|parameterize|guard|set!|(?:quasi-)?quote|syntax-(?:case|rules))(?=[()\s])/,
 		lookbehind: true
 	},
 	'builtin': {
diff --git a/components/prism-scheme.min.js b/components/prism-scheme.min.js
index 4a2d1fa..b1a8826 100644
--- a/components/prism-scheme.min.js
+++ b/components/prism-scheme.min.js
@@ -1 +1 @@
-Prism.languages.scheme={comment:/;.*/,string:{pattern:/"(?:[^"\\]|\\.)*"/,greedy:!0},symbol:{pattern:/'[^()#'\s]+/,greedy:!0},character:{pattern:/#\\(?:[ux][a-fA-F\d]+|[-a-zA-Z]+|\S)/,greedy:!0,alias:"string"},"lambda-parameter":{pattern:/(\(lambda\s+\()[^()'\s]+/,lookbehind:!0},keyword:{pattern:/(\()(?:define(?:-syntax|-library|-values)?|(?:case-)?lambda|let(?:\*|rec)?(?:-values)?|else|if|cond|begin|delay(?:-force)?|parameterize|guard|set!|(?:quasi-)?quote|syntax-rules)(?=[()\s])/,lookbehind:!0},builtin:{pattern:/(\()(?:(?:cons|car|cdr|list|call-with-current-continuation|call\/cc|append|abs|apply|eval)\b|null\?|pair\?|boolean\?|eof-object\?|char\?|procedure\?|number\?|port\?|string\?|vector\?|symbol\?|bytevector\?)(?=[()\s])/,lookbehind:!0},number:{pattern:/([\s()])(?:(?:#d(?:#[ei])?|#[ei](?:#d)?)?[+-]?(?:(?:\d*\.?\d+(?:[eE][+-]?\d+)?|\d+\/\d+)(?:[+-](?:\d*\.?\d+(?:[eE][+-]?\d+)?|\d+\/\d+)i)?|(?:\d*\.?\d+(?:[eE][+-]?\d+)?|\d+\/\d+)i)|(?:#[box](?:#[ei])?|#[ei](?:#[box])?)[+-]?(?:[\da-fA-F]+(?:\/[\da-fA-F]+)?(?:[+-][\da-fA-F]+(?:\/[\da-fA-F]+)?i)?|[\da-fA-F]+(?:\/[\da-fA-F]+)?i))(?=[\s()]|$)/,lookbehind:!0},boolean:/#[tf]/,operator:{pattern:/(\()(?:[-+*%\/]|[<>]=?|=>?)(?=\s|$)/,lookbehind:!0},function:{pattern:/(\()[^()'\s]+(?=[()\s]|$)/,lookbehind:!0},punctuation:/[()']/};
\ No newline at end of file
+Prism.languages.scheme={comment:/;.*/,string:{pattern:/"(?:[^"\\]|\\.)*"/,greedy:!0},symbol:{pattern:/'[^()#'\s]+/,greedy:!0},character:{pattern:/#\\(?:[ux][a-fA-F\d]+|[-a-zA-Z]+|\S)/,greedy:!0,alias:"string"},"lambda-parameter":{pattern:/(\(lambda\s+\()[^()'\s]+/,lookbehind:!0},keyword:{pattern:/(\()(?:define(?:-library|-macro|-syntax|-values)?|defmacro|(?:case-)?lambda|let(?:(?:\*|rec)?(?:-values)?|-syntax|rec-syntax)|else|if|cond|begin|delay(?:-force)?|parameterize|guard|set!|(?:quasi-)?quote|syntax-(?:case|rules))(?=[()\s])/,lookbehind:!0},builtin:{pattern:/(\()(?:(?:cons|car|cdr|list|call-with-current-continuation|call\/cc|append|abs|apply|eval)\b|null\?|pair\?|boolean\?|eof-object\?|char\?|procedure\?|number\?|port\?|string\?|vector\?|symbol\?|bytevector\?)(?=[()\s])/,lookbehind:!0},number:{pattern:/([\s()])(?:(?:#d(?:#[ei])?|#[ei](?:#d)?)?[+-]?(?:(?:\d*\.?\d+(?:[eE][+-]?\d+)?|\d+\/\d+)(?:[+-](?:\d*\.?\d+(?:[eE][+-]?\d+)?|\d+\/\d+)i)?|(?:\d*\.?\d+(?:[eE][+-]?\d+)?|\d+\/\d+)i)|(?:#[box](?:#[ei])?|#[ei](?:#[box])?)[+-]?(?:[\da-fA-F]+(?:\/[\da-fA-F]+)?(?:[+-][\da-fA-F]+(?:\/[\da-fA-F]+)?i)?|[\da-fA-F]+(?:\/[\da-fA-F]+)?i))(?=[\s()]|$)/,lookbehind:!0},boolean:/#[tf]/,operator:{pattern:/(\()(?:[-+*%\/]|[<>]=?|=>?)(?=\s|$)/,lookbehind:!0},function:{pattern:/(\()[^()'\s]+(?=[()\s]|$)/,lookbehind:!0},punctuation:/[()']/};
\ No newline at end of file
diff --git a/tests/languages/scheme/keyword_feature.test b/tests/languages/scheme/keyword_feature.test
index 1abc828..53085d5 100644
--- a/tests/languages/scheme/keyword_feature.test
+++ b/tests/languages/scheme/keyword_feature.test
@@ -1,7 +1,9 @@
 (define)
-(define-syntax)
 (define-library)
+(define-macro)
+(define-syntax)
 (define-values)
+(defmacro)
 (case-lambda)
 (lambda)
 (let)
@@ -22,14 +24,19 @@
 (quasi-quote)
 (quote)
 (syntax-rules)
+(syntax-case)
+(letrec-syntax)
+(let-syntax)
 
 ----------------------------------------------------
 
 [
 	["punctuation", "("], ["keyword", "define"], ["punctuation", ")"],
-	["punctuation", "("], ["keyword", "define-syntax"], ["punctuation", ")"],
 	["punctuation", "("], ["keyword", "define-library"], ["punctuation", ")"],
+	["punctuation", "("], ["keyword", "define-macro"], ["punctuation", ")"],
+	["punctuation", "("], ["keyword", "define-syntax"], ["punctuation", ")"],
 	["punctuation", "("], ["keyword", "define-values"], ["punctuation", ")"],
+	["punctuation", "("], ["keyword", "defmacro"], ["punctuation", ")"],
 	["punctuation", "("], ["keyword", "case-lambda"], ["punctuation", ")"],
 	["punctuation", "("], ["keyword", "lambda"], ["punctuation", ")"],
 	["punctuation", "("], ["keyword", "let"], ["punctuation", ")"],
@@ -49,7 +56,10 @@
 	["punctuation", "("], ["keyword", "set!"], ["punctuation", ")"],
 	["punctuation", "("], ["keyword", "quasi-quote"], ["punctuation", ")"],
 	["punctuation", "("], ["keyword", "quote"], ["punctuation", ")"],
-	["punctuation", "("], ["keyword", "syntax-rules"], ["punctuation", ")"]
+	["punctuation", "("], ["keyword", "syntax-rules"], ["punctuation", ")"],
+	["punctuation", "("], ["keyword", "syntax-case"], ["punctuation", ")"],
+	["punctuation", "("], ["keyword", "letrec-syntax"], ["punctuation", ")"],
+	["punctuation", "("], ["keyword", "let-syntax"], ["punctuation", ")"]
 ]
 
 ----------------------------------------------------