Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 16 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "cod-sense",
"displayName": "CoD-Sense",
"description": "Syntax highlighting for Call of Duty scripts",
"version": "1.0.1",
"version": "1.0.2",
"publisher": "se2dev",
"icon": "images/cod-sense_logo_128x128.png",
"homepage": "https://github.com/SE2Dev/CoD-Sense/blob/development/README.md",
Expand All @@ -29,10 +29,13 @@
"id": "gsc",
"aliases": [
"GSC",
"gsc"
"gsc",
"GSX",
"gsx"
],
"extensions": [
".gsc",
".gsx",
".csc"
],
"configuration": "./gsc.configuration.json"
Expand All @@ -43,6 +46,11 @@
"language": "gsc",
"scopeName": "source.gsc",
"path": "./syntaxes/gsc.tmLanguage"
},
{
"language": "gsx",
"scopeName": "source.gsx",
"path": "./syntaxes/gsx.tmLanguage"
}
],
"configuration": {
Expand Down Expand Up @@ -73,5 +81,10 @@
"tslint": "^5.8.0",
"@types/node": "^7.0.43",
"@types/mocha": "^2.2.42"
},
"__metadata": {
"id": "27c80a99-0ab4-4930-918b-9a3577605e9a",
"publisherId": "695ee91d-a52c-4964-8d62-4c14ba67a819",
"publisherDisplayName": "SE2Dev"
}
}
}
313 changes: 313 additions & 0 deletions syntaxes/gsx.tmLanguage
Original file line number Diff line number Diff line change
@@ -0,0 +1,313 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>fileTypes</key>
<array>
<string>gsx</string>
</array>

<key>name</key>
<string>gsx</string>

<key>scopeName</key>
<string>source.gsx</string>

<key>foldingStartMarker</key>
<string>\{</string>
<key>foldingStopMarker</key>
<string>\}</string>

<key>patterns</key>
<array>
<!-- #include PreProcessor Directive -->
<dict>
<key>begin</key>
<string>^\s*(#include\b)\s*([^;]*);?</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.import.include</string>
</dict>

<key>2</key>
<dict>
<key>name</key>
<string>string.filename.gsx</string>
</dict>
</dict>

<key>end</key>
<string>\s</string>
</dict>

<!-- #using_animtree PreProcessor Directive
behaves slightly differently than #include because of parentheses -->
<dict>
<key>match</key>
<string>#using_animtree\b</string>

<key>name</key>
<string>meta.preprocessor.c</string>
</dict>

<!-- Single Line Comments -->
<dict>
<key>match</key>
<string>//.*</string>

<key>name</key>
<string>comment.line</string>
</dict>

<!-- Block Comments -->
<dict>
<key>begin</key>
<string>/\*</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>comment.begin</string>
</dict>
</dict>
<key>end</key>
<string>\*/</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>comment.end</string>
</dict>
</dict>
<key>name</key>
<string>comment.block.gsx</string>
</dict>

<!-- Developer Script Blocks
string.regexp
punctuation.definition.string
string.other.link -->
<dict>
<key>begin</key>
<string>/#</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>comment.begin</string>
</dict>
</dict>
<key>end</key>
<string>#/</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>comment.end</string>
</dict>
</dict>
<key>name</key>
<string>comment.block.developerscript.gsx</string>
</dict>

<!-- String Literals -->
<dict>
<key>begin</key>
<string>"</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.gsx</string>
</dict>
</dict>
<key>end</key>
<string>(?&lt;!\\)["\n\r]</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.gsx</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.gsx</string>
</dict>

<!-- Numeric Literals -->
<dict>
<key>match</key>
<string>(?&lt;![a-zA-Z]-)(?&lt;![a-zA-Z])\b\d+\.?f?</string>
<key>name</key>
<string>constant.numeric.c</string>
</dict>

<dict>
<key>match</key>
<string>(i*)\b(true|false)\b</string>
<key>name</key>
<string>constant.language.c</string>
</dict>

<!-- Control Statements -->
<dict>
<key>match</key>
<string>\b(if|else|switch|case|break|continue|for|while|return)\b</string>

<key>name</key>
<string>keyword.control.c</string>
</dict>

<!-- Hardcoded Variables -->
<dict>
<key>match</key>
<string>\b(level|player|self)\b</string>

<key>name</key>
<string>support.variable.gsx</string>
</dict>

<dict>
<key>match</key>
<string>\bthread\b</string>

<key>name</key>
<string>support.type.gsx</string>
</dict>

<!-- Functions Declarations -->
<dict>
<key>match</key>
<string>(_?[a-zA-Z\-_]\w*)(?=\s*\(.*\).*)</string>

<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.name.function.c</string>
</dict>
</dict>
</dict>

<dict>
<key>include</key>
<string>#block</string>
</dict>
</array>

<key>repository</key>
<dict>
<!-- Blocks -->
<key>block</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>\{</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.section.block.begin.gsx</string>
</dict>
</dict>
<key>end</key>
<string>\}</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.section.block.end.gsx</string>
</dict>
</dict>

<key>name</key>
<string>meta.block.gsx</string>

<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#block_innards</string>
</dict>

<!-- Needed for nested blocks -->
<dict>
<key>include</key>
<string>$base</string>
</dict>
</array>
</dict>
</array>
</dict>

<key>block_innards</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#function_call</string>
</dict>

<dict>
<key>include</key>
<string>#function_ptr</string>
</dict>

<!-- Handle nested blocks -->
<dict>
<key>include</key>
<string>#block</string>
</dict>
</array>
</dict>

<!-- Function Calls -->
<key>function_call</key>
<dict>
<key>match</key>
<string>(_?[a-zA-Z\-_]\w*)(?=\s*\(.*\).*)</string>

<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.function.any-method.gsx</string>
</dict>
</dict>
</dict>

<!-- Function Pointers -->
<!-- Ex: ::my_func; -->
<key>function_ptr</key>
<dict>
<key>match</key>
<string>::\b(\w+)\b</string>

<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.function.any-method.gsx</string>
</dict>
</dict>
</dict>
</dict>
</dict>
</plist>