Language Server and Debug Adapter for use with the UnrealEngine-Angelscript plugin from https://angelscript.hazelight.se
After building or downloading the Unreal Editor version with Angelscript enabled from the github page linked above, start the editor and use visual studio code to open the 'Script' folder created in your project directory. Your 'Script' folder must be set as the root/opened folder for the extension to function.
The unreal-angelscript extension automatically makes a connection to the running Unreal Editor instance for most of its functionality. If the editor is not running, certain features will not be available.
The extension will try to complete your angelscript code as you type it using normal visual studio code language server features.
When saving a file the unreal editor automatically compiles and reloads it, sending any errors to the visual code extension. Errors will be highlighted in the code display and in the problems window.
You can start debugging from the Debug sidebar or by pressing F5. While debug mode is active, breakpoints can be set in angelscript files and the unreal editor will automatically break and stop execution when they are reached.
Hitting 'Stop' on the debug toolbar will not close the unreal editor, it merely stops the debug connection, causing breakpoints to be ignored.
When the debug connection is active, any exceptions that occur during angelscript execution will automatically cause the editor and visual studio code to pause execution and show the exception.
The default visual studio code 'Go to Definition' (F12) is implemented for angelscript symbols. A separate command is added to the right click menu (default shortcut: Alt+G), named 'Go to Symbol'. This command functions identically to 'Go to Definition' for angelscript symbols.
If you have the Unreal Editor open as well as Visual Studio proper showing the C++ source code for unreal, the extension will try to use its unreal editor connection to browse your Visual Studio to the right place, similar to double clicking a C++ class or function in blueprints.
This uses the standard unreal source navigation system, which is only implemented for classes and functions.
The 'Add Import To' (default shortcut: Shift+Alt+I) command from the right click menu will try to automatically add an import statement to the top of the file to import the type that the command was run on.
The 'Quick Open Import' (default shortcut: Ctrl+E or Ctrl+P) command from the right click menu will try to open the quick open navigation with the import statement.
This extension acts as a full language server for angelscript code. This includes semantic highlighting, signature help, reference search, rename symbol and a number of helpful code actions and quickfixes.
Some of these features require an active connection to the unreal editor.
There are more types of semantic symbols generated by the extension than there are colors specified by most color themes.
The default visual studio code color theme will display all variables in blue, for example, regardless of whether the variable is a member, parameter or local.
You can add a snippet to your .vscode/settings.json
inside your project folder
to add extra colors to make these differences more visible.
For example, to add extra colors to the default vscode dark theme:
"editor.tokenColorCustomizations": {
"[Default Dark+]": {
"textMateRules": [
{
"scope": "support.type.component.angelscript",
"settings": {
"foreground": "#4ec962"
}
},
{
"scope": "support.type.actor.angelscript",
"settings": {
"foreground": "#2eb0c9"
}
},
{
"scope": "variable.parameter.angelscript",
"settings": {
"foreground": "#ffe5d9"
}
},
{
"scope": "variable.other.local.angelscript",
"settings": {
"foreground": "#e8ffed"
}
},
{
"scope": "variable.other.global.angelscript",
"settings": {
"foreground": "#b99cfe"
}
},
{
"scope": "variable.other.global.accessor.angelscript",
"settings": {
"foreground": "#b99cfe"
}
},
{
"scope": "entity.name.function.angelscript",
"settings": {
"foreground": "#b99cfe"
}
},
{
"scope": "invalid.unimported.angelscript",
"settings": {
"foreground": "#ff9000"
}
},
]
}
}