From 816fa3e4144066bc67afc7833d4260b950075bd8 Mon Sep 17 00:00:00 2001 From: zeltop Date: Fri, 3 Mar 2023 23:12:14 +0100 Subject: [PATCH] Add GDScript language Adds GDScript language support, autocomplete file, functionlist, default and dark themes. Fix #13329, close #13335 --- .../Test/FunctionList/gdscript/unitTest | 108 ++ .../gdscript/unitTest.expected.result | 1 + PowerEditor/installer/APIs/gdscript.xml | 1129 +++++++++++++++++ .../installer/filesForTesting/overrideMap.xml | 1 + .../installer/functionList/gdscript.xml | 40 + .../installer/functionList/overrideMap.xml | 1 + .../installer/nsisInclude/autoCompletion.nsh | 9 + .../installer/nsisInclude/functionList.nsh | 9 + .../installer/themes/DarkModeDefault.xml | 19 + .../MISC/PluginsManager/Notepad_plus_msgs.h | 2 +- PowerEditor/src/Notepad_plus.cpp | 2 + PowerEditor/src/Notepad_plus.rc | 7 +- PowerEditor/src/NppCommands.cpp | 1 + PowerEditor/src/Parameters.cpp | 3 + .../ScintillaComponent/ScintillaEditView.cpp | 4 + .../ScintillaComponent/ScintillaEditView.h | 9 +- PowerEditor/src/langs.model.xml | 4 + PowerEditor/src/menuCmdID.h | 1 + PowerEditor/src/stylers.model.xml | 19 + 19 files changed, 1366 insertions(+), 3 deletions(-) create mode 100644 PowerEditor/Test/FunctionList/gdscript/unitTest create mode 100644 PowerEditor/Test/FunctionList/gdscript/unitTest.expected.result create mode 100644 PowerEditor/installer/APIs/gdscript.xml create mode 100644 PowerEditor/installer/functionList/gdscript.xml diff --git a/PowerEditor/Test/FunctionList/gdscript/unitTest b/PowerEditor/Test/FunctionList/gdscript/unitTest new file mode 100644 index 000000000..6af32b94e --- /dev/null +++ b/PowerEditor/Test/FunctionList/gdscript/unitTest @@ -0,0 +1,108 @@ + +# Everything after "#" is a comment. +# A file is a class! + +# (optional) class definition: +class_name MyClass + +# Inheritance: +extends BaseClass + +# Member variables. +var a = 5 +var s = "Hello" +var arr = [1, 2, 3] +var dict = {"key": "value", 2: 3} +var other_dict = {key = "value", other_key = 2} +var typed_var: int +var inferred_type := "String" + + +var ss = ''' +func invalid_single_quote(): + pass +''' + +var sd = """ +func invalid_func_double_quote(): + pass +""" + +# Constants. +const ANSWER = 42 +const THE_NAME = "Charly" + +# Enums. +enum {UNIT_NEUTRAL, UNIT_ENEMY, UNIT_ALLY} +enum Named {THING_1, THING_2, ANOTHER_THING = -1} + +# Built-in vector types. +var v2 = Vector2(1, 2) +var v3 = Vector3(1, 2, 3) + + +# Functions. +func my_func(arg1 : int = sin(1), arg2 : String = "") -> void: + return + +func some_function(param1, param2, param3): + if param1 < local_const: + print(param1) + elif param2 > 5: + print(param2) + else: + print("Fail!") + + for i in range(20): + print(i) + + while param2 != 0: + param2 -= 1 + + match param3: + 3: + print("param3 is 3!") + _: + print("param3 is not 3!") + + var local_var = param1 + 3 + return local_var + + +# Functions override functions with the same name on the base/super class. +# If you still want to call them, use "super": +func something(p1, p2): + super(p1, p2) + + +# It's also possible to call another function in the super class: +func other_something(p1, p2): + super.something(p1, p2) + + +# Inner class +class Something: + var a = 10 + + func inner_function(): + return + + func my_func(arg1 : int = sin(1), arg2 : String = "") -> void: + return + + +# Inner class with inheritance +class fish extends Node2D: + + func _init(): + _randomize() + + func _randomize(): + randomize() + _size = rand_range(0.75,2.0) + +# Constructor +func _init(): + print("Constructed!") + var lv = Something.new() + print(lv.a) diff --git a/PowerEditor/Test/FunctionList/gdscript/unitTest.expected.result b/PowerEditor/Test/FunctionList/gdscript/unitTest.expected.result new file mode 100644 index 000000000..05d75a800 --- /dev/null +++ b/PowerEditor/Test/FunctionList/gdscript/unitTest.expected.result @@ -0,0 +1 @@ +{"leaves":["my_func(arg1 : int = sin(1), arg2 : String = \"\") -> void","some_function(param1, param2, param3)","something(p1, p2)","other_something(p1, p2)","_init()"],"nodes":[{"leaves":["inner_function()","my_func(arg1 : int = sin(1), arg2 : String = \"\") -> void"],"name":"Something"},{"leaves":["_init()","_randomize()"],"name":"fish"}],"root":"unitTest"} \ No newline at end of file diff --git a/PowerEditor/installer/APIs/gdscript.xml b/PowerEditor/installer/APIs/gdscript.xml new file mode 100644 index 000000000..025b99b2e --- /dev/null +++ b/PowerEditor/installer/APIs/gdscript.xml @@ -0,0 +1,1129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PowerEditor/installer/filesForTesting/overrideMap.xml b/PowerEditor/installer/filesForTesting/overrideMap.xml index f00c96439..7225b5fc9 100644 --- a/PowerEditor/installer/filesForTesting/overrideMap.xml +++ b/PowerEditor/installer/filesForTesting/overrideMap.xml @@ -96,6 +96,7 @@ + If you create your own parse rule of supported languages (above) for your specific need, you can copy it without modifying the original one, and make it point to your rule. diff --git a/PowerEditor/installer/functionList/gdscript.xml b/PowerEditor/installer/functionList/gdscript.xml new file mode 100644 index 000000000..b1f8ce987 --- /dev/null +++ b/PowerEditor/installer/functionList/gdscript.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/PowerEditor/installer/functionList/overrideMap.xml b/PowerEditor/installer/functionList/overrideMap.xml index 8c6a997e3..ce035ebc4 100644 --- a/PowerEditor/installer/functionList/overrideMap.xml +++ b/PowerEditor/installer/functionList/overrideMap.xml @@ -96,6 +96,7 @@ + If you create your own parse rule of supported languages (above) for your specific need, you can copy it without modifying the original one, and make it point to your rule. diff --git a/PowerEditor/installer/nsisInclude/autoCompletion.nsh b/PowerEditor/installer/nsisInclude/autoCompletion.nsh index 094c3a671..6eadc55ac 100644 --- a/PowerEditor/installer/nsisInclude/autoCompletion.nsh +++ b/PowerEditor/installer/nsisInclude/autoCompletion.nsh @@ -158,6 +158,11 @@ SectionGroup "Auto-completion Files" autoCompletionComponent File ".\APIs\powershell.xml" ${MementoSectionEnd} + ${MementoSection} "GDScript" GDScript + SetOutPath "$INSTDIR\autoCompletion" + File ".\APIs\gdscript.xml" + ${MementoSectionEnd} + SectionGroupEnd @@ -276,5 +281,9 @@ SectionGroup un.autoCompletionComponent Delete "$INSTDIR\autoCompletion\powershell.xml" SectionEnd + Section un.GDScript + Delete "$INSTDIR\autoCompletion\gdscript.xml" + SectionEnd + SectionGroupEnd diff --git a/PowerEditor/installer/nsisInclude/functionList.nsh b/PowerEditor/installer/nsisInclude/functionList.nsh index 9c642bd7d..6502ccc9f 100644 --- a/PowerEditor/installer/nsisInclude/functionList.nsh +++ b/PowerEditor/installer/nsisInclude/functionList.nsh @@ -187,6 +187,11 @@ SectionGroup "Function List Files" functionListComponent SetOutPath "$INSTDIR\functionList" File ".\functionList\pascal.xml" ${MementoSectionEnd} + + ${MementoSection} "GDScript" GDScript + SetOutPath "$INSTDIR\functionList" + File ".\functionList\gdscript.xml" + ${MementoSectionEnd} ${MementoSection} "NppExecScript" NppExecScript SetOutPath "$INSTDIR\functionList" @@ -343,6 +348,10 @@ SectionGroup un.functionListComponent Delete "$INSTDIR\functionList\pascal.xml" SectionEnd + Section un.GDScript + Delete "$INSTDIR\functionList\gdscript.xml" + SectionEnd + Section un.NppExecScript Delete "$INSTDIR\functionList\nppexec.xml" SectionEnd diff --git a/PowerEditor/installer/themes/DarkModeDefault.xml b/PowerEditor/installer/themes/DarkModeDefault.xml index 8ae515090..97980af7f 100644 --- a/PowerEditor/installer/themes/DarkModeDefault.xml +++ b/PowerEditor/installer/themes/DarkModeDefault.xml @@ -33,6 +33,25 @@ License: GPL2 + + + + + + + + + + + + + + + + + + + diff --git a/PowerEditor/src/MISC/PluginsManager/Notepad_plus_msgs.h b/PowerEditor/src/MISC/PluginsManager/Notepad_plus_msgs.h index adabe92a3..3a546f414 100644 --- a/PowerEditor/src/MISC/PluginsManager/Notepad_plus_msgs.h +++ b/PowerEditor/src/MISC/PluginsManager/Notepad_plus_msgs.h @@ -33,7 +33,7 @@ enum LangType {L_TEXT, L_PHP , L_C, L_CPP, L_CS, L_OBJC, L_JAVA, L_RC,\ L_CSOUND, L_ERLANG, L_ESCRIPT, L_FORTH, L_LATEX, \ L_MMIXAL, L_NIM, L_NNCRONTAB, L_OSCRIPT, L_REBOL, \ L_REGISTRY, L_RUST, L_SPICE, L_TXT2TAGS, L_VISUALPROLOG,\ - L_TYPESCRIPT, L_JSON5, L_MSSQL,\ + L_TYPESCRIPT, L_JSON5, L_MSSQL, L_GDSCRIPT,\ // Don't use L_JS, use L_JAVASCRIPT instead // The end of enumated language type, so it should be always at the end L_EXTERNAL}; diff --git a/PowerEditor/src/Notepad_plus.cpp b/PowerEditor/src/Notepad_plus.cpp index 4695d47ed..5316a9452 100644 --- a/PowerEditor/src/Notepad_plus.cpp +++ b/PowerEditor/src/Notepad_plus.cpp @@ -3725,6 +3725,8 @@ LangType Notepad_plus::menuID2LangType(int cmdID) return L_VISUALPROLOG; case IDM_LANG_TYPESCRIPT: return L_TYPESCRIPT; + case IDM_LANG_GDSCRIPT: + return L_GDSCRIPT; case IDM_LANG_USER: return L_USER; default: diff --git a/PowerEditor/src/Notepad_plus.rc b/PowerEditor/src/Notepad_plus.rc index d19e3c0dd..0a54d3d83 100644 --- a/PowerEditor/src/Notepad_plus.rc +++ b/PowerEditor/src/Notepad_plus.rc @@ -926,6 +926,7 @@ BEGIN MENUITEM "Fortran (free form)", IDM_LANG_FORTRAN MENUITEM "Fortran (fixed form)", IDM_LANG_FORTRAN_77 MENUITEM "Freebasic", IDM_LANG_FREEBASIC + MENUITEM "GDScript", IDM_LANG_GDSCRIPT MENUITEM "Gui4Cli", IDM_LANG_GUI4CLI MENUITEM "Haskell", IDM_LANG_HASKELL MENUITEM "HTML", IDM_LANG_HTML @@ -1039,7 +1040,11 @@ BEGIN MENUITEM "Fortran (fixed form)", IDM_LANG_FORTRAN_77 MENUITEM "Freebasic", IDM_LANG_FREEBASIC END - MENUITEM "Gui4Cli", IDM_LANG_GUI4CLI + POPUP "G" + BEGIN + MENUITEM "GDScript", IDM_LANG_GDSCRIPT + MENUITEM "Gui4Cli", IDM_LANG_GUI4CLI + END POPUP "H" BEGIN MENUITEM "Haskell", IDM_LANG_HASKELL diff --git a/PowerEditor/src/NppCommands.cpp b/PowerEditor/src/NppCommands.cpp index 3159a40ee..c092183c2 100644 --- a/PowerEditor/src/NppCommands.cpp +++ b/PowerEditor/src/NppCommands.cpp @@ -3548,6 +3548,7 @@ void Notepad_plus::command(int id) case IDM_LANG_TXT2TAGS : case IDM_LANG_VISUALPROLOG: case IDM_LANG_TYPESCRIPT: + case IDM_LANG_GDSCRIPT: case IDM_LANG_USER : { setLanguage(menuID2LangType(id)); diff --git a/PowerEditor/src/Parameters.cpp b/PowerEditor/src/Parameters.cpp index 991433a8b..f3910e473 100644 --- a/PowerEditor/src/Parameters.cpp +++ b/PowerEditor/src/Parameters.cpp @@ -7765,6 +7765,9 @@ int NppParameters::langTypeToCommandID(LangType lt) const case L_TYPESCRIPT: id = IDM_LANG_TYPESCRIPT; break; + case L_GDSCRIPT: + id = IDM_LANG_GDSCRIPT; break; + case L_SEARCHRESULT : id = -1; break; diff --git a/PowerEditor/src/ScintillaComponent/ScintillaEditView.cpp b/PowerEditor/src/ScintillaComponent/ScintillaEditView.cpp index 7aaa04c7c..f5d2bc018 100644 --- a/PowerEditor/src/ScintillaComponent/ScintillaEditView.cpp +++ b/PowerEditor/src/ScintillaComponent/ScintillaEditView.cpp @@ -154,6 +154,7 @@ LanguageNameInfo ScintillaEditView::_langNameInfoArray[L_EXTERNAL + 1] = { {TEXT("typescript"), TEXT("TypeScript"), TEXT("TypeScript file"), L_TYPESCRIPT, "cpp"}, {TEXT("json5"), TEXT("json5"), TEXT("JSON5 file"), L_JSON5, "json"}, {TEXT("mssql"), TEXT("mssql"), TEXT("Microsoft Transact-SQL (SQL Server) file"), L_MSSQL, "mssql"}, + {TEXT("gdscript"), TEXT("GDScript"), TEXT("GDScript file"), L_GDSCRIPT, "gdscript"}, {TEXT("ext"), TEXT("External"), TEXT("External"), L_EXTERNAL, "null"} }; @@ -1810,6 +1811,9 @@ void ScintillaEditView::defineDocType(LangType typeDoc) case L_TYPESCRIPT: setTypeScriptLexer(); break; + case L_GDSCRIPT: + setGDScriptLexer(); break; + case L_TEXT : default : if (typeDoc >= L_EXTERNAL && typeDoc < NppParameters::getInstance().L_END) diff --git a/PowerEditor/src/ScintillaComponent/ScintillaEditView.h b/PowerEditor/src/ScintillaComponent/ScintillaEditView.h index 7d820a2ec..edec00c72 100644 --- a/PowerEditor/src/ScintillaComponent/ScintillaEditView.h +++ b/PowerEditor/src/ScintillaComponent/ScintillaEditView.h @@ -649,7 +649,8 @@ public: bool isPythonStyleIndentation(LangType typeDoc) const{ return (typeDoc == L_PYTHON || typeDoc == L_COFFEESCRIPT || typeDoc == L_HASKELL ||\ typeDoc == L_C || typeDoc == L_CPP || typeDoc == L_OBJC || typeDoc == L_CS || typeDoc == L_JAVA ||\ - typeDoc == L_PHP || typeDoc == L_JS || typeDoc == L_JAVASCRIPT || typeDoc == L_MAKEFILE || typeDoc == L_ASN1); + typeDoc == L_PHP || typeDoc == L_JS || typeDoc == L_JAVASCRIPT || typeDoc == L_MAKEFILE ||\ + typeDoc == L_ASN1 || typeDoc == L_GDSCRIPT); }; void defineDocType(LangType typeDoc); //setup stylers for active document @@ -795,6 +796,12 @@ protected: setLexer(L_PYTHON, LIST_0 | LIST_1); execute(SCI_SETPROPERTY, reinterpret_cast("fold.quotes.python"), reinterpret_cast("1")); }; + + void setGDScriptLexer() { + setLexer(L_GDSCRIPT, LIST_0 | LIST_1); + execute(SCI_SETPROPERTY, reinterpret_cast("lexer.gdscript.keywords2.no.sub.identifiers"), reinterpret_cast("1")); + execute(SCI_SETPROPERTY, reinterpret_cast("lexer.gdscript.whinge.level"), reinterpret_cast("1")); + }; void setBatchLexer() { setLexer(L_BATCH, LIST_0); diff --git a/PowerEditor/src/langs.model.xml b/PowerEditor/src/langs.model.xml index e5478b824..5a2db80be 100644 --- a/PowerEditor/src/langs.model.xml +++ b/PowerEditor/src/langs.model.xml @@ -319,6 +319,10 @@ and as assert async await break class continue def del elif else except finally for from global if import in is lambda nonlocal not or pass raise return try while with yield ArithmeticError AssertionError AttributeError BaseException BlockingIOError BrokenPipeError BufferError BytesWarning ChildProcessError ConnectionAbortedError ConnectionError ConnectionRefusedError ConnectionResetError DeprecationWarning EOFError Ellipsis EnvironmentError Exception False FileExistsError FileNotFoundError FloatingPointError FutureWarning GeneratorExit IOError ImportError ImportWarning IndentationError IndexError InterruptedError IsADirectoryError KeyError KeyboardInterrupt LookupError MemoryError ModuleNotFoundError NameError None NotADirectoryError NotImplemented NotImplementedError OSError OverflowError PendingDeprecationWarning PermissionError ProcessLookupError RecursionError ReferenceError ResourceWarning RuntimeError RuntimeWarning StopAsyncIteration StopIteration SyntaxError SyntaxWarning SystemError SystemExit TabError TimeoutError True TypeError UnboundLocalError UnicodeDecodeError UnicodeEncodeError UnicodeError UnicodeTranslateError UnicodeWarning UserWarning ValueError Warning WindowsError ZeroDivisionError abs all any ascii bin bool breakpoint bytearray bytes callable chr classmethod compile complex copyright credits delattr dict dir divmod enumerate eval exec exit filter float format frozenset getattr globals hasattr hash help hex id input int isinstance issubclass iter len license list locals map max memoryview min next object oct open ord pow print property quit range repr reversed round set setattr slice sorted staticmethod str sum super tuple type vars zip + + if elif else for while match break continue pass return class class_name extends is in as self signal func const enum var breakpoint preload await yield assert void PI TAU INF NAN + Color8 ColorN abs acos asin assert atan atan2 bytes2var cartesian2polar ceil char clamp convert cos cosh db2linear decimals dectime deep_equal deg2rad dict2inst ease exp floor fmod fposmod funcref get_stack hash inst2dict instance_from_id inverse_lerp is_equal_approx is_inf is_instance_valid is_nan is_zero_approx len lerp lerp_angle linear2db load log max min move_toward nearest_po2 ord parse_json polar2cartesian posmod pow preload print print_debug print_stack printerr printraw prints printt push_error push_warning rad2deg rand_range rand_seed randf randi randomize range range_lerp round seed sign sin sinh smoothstep sqrt step_decimals stepify str str2var tan tanh to_json type_exists typeof validate_json var2bytes var2str weakref wrapf wrapi yield AudioServer CameraServer ClassDB DisplayServer Engine EngineDebugger GDExtensionManager Geometry2D Geometry3D GodotSharp IP Input InputMap JavaClassWrapper JavaScriptBridge Marshalls NavigationMeshGenerator NavigationServer2D NavigationServer3D OS Performance PhysicsServer2D PhysicsServer2DManager PhysicsServer3D PhysicsServer3DManager ProjectSettings RenderingServer ResourceLoader ResourceSaver ResourceUID TextServerManager ThemeDB Time TranslationServer WorkerThreadPool XRServer AABB AcceptDialog AESContext AnimatedSprite AnimatedSprite3D AnimatedTexture Animation AnimationNode AnimationNodeAdd2 AnimationNodeAdd3 AnimationNodeAnimation AnimationNodeBlend2 AnimationNodeBlend3 AnimationNodeBlendSpace1D AnimationNodeBlendSpace2D AnimationNodeBlendTree AnimationNodeOneShot AnimationNodeOutput AnimationNodeStateMachine AnimationNodeStateMachinePlayback AnimationNodeStateMachineTransition AnimationNodeTimeScale AnimationNodeTimeSeek AnimationNodeTransition AnimationPlayer AnimationRootNode AnimationTrackEditPlugin AnimationTree AnimationTreePlayer Area Area2D Array ArrayMesh ARVRAnchor ARVRCamera ARVRController ARVRInterface ARVRInterfaceGDNative ARVROrigin ARVRPositionalTracker ARVRServer AspectRatioContainer AStar AStar2D AtlasTexture AudioBusLayout AudioEffect AudioEffectAmplify AudioEffectBandLimitFilter AudioEffectBandPassFilter AudioEffectCapture AudioEffectChorus AudioEffectCompressor AudioEffectDelay AudioEffectDistortion AudioEffectEQ AudioEffectEQ10 AudioEffectEQ21 AudioEffectEQ6 AudioEffectFilter AudioEffectHighPassFilter AudioEffectHighShelfFilter AudioEffectInstance AudioEffectLimiter AudioEffectLowPassFilter AudioEffectLowShelfFilter AudioEffectNotchFilter AudioEffectPanner AudioEffectPhaser AudioEffectPitchShift AudioEffectRecord AudioEffectReverb AudioEffectSpectrumAnalyzer AudioEffectSpectrumAnalyzerInstance AudioEffectStereoEnhance AudioServer AudioStream AudioStreamGenerator AudioStreamGeneratorPlayback AudioStreamMicrophone AudioStreamMP3 AudioStreamOGGVorbis AudioStreamPlayback AudioStreamPlaybackResampled AudioStreamPlayer AudioStreamPlayer2D AudioStreamPlayer3D AudioStreamRandomPitch AudioStreamSample BackBufferCopy BakedLightmap BakedLightmapData BaseButton Basis BitMap BitmapFont Bone2D BoneAttachment bool BoxContainer BoxShape Button ButtonGroup CallbackTweener Camera Camera2D CameraFeed CameraServer CameraTexture CanvasItem CanvasItemMaterial CanvasLayer CanvasModulate CapsuleMesh CapsuleShape CapsuleShape2D CenterContainer CharFXTransform CheckBox CheckButton CircleShape2D ClassDB ClippedCamera CollisionObject CollisionObject2D CollisionPolygon CollisionPolygon2D CollisionShape CollisionShape2D Color ColorPicker ColorPickerButton ColorRect ConcavePolygonShape ConcavePolygonShape2D ConeTwistJoint ConfigFile ConfirmationDialog Container Control ConvexPolygonShape ConvexPolygonShape2D CPUParticles CPUParticles2D Crypto CryptoKey CSGBox CSGCombiner CSGCylinder CSGMesh CSGPolygon CSGPrimitive CSGShape CSGSphere CSGTorus CSharpScript CubeMap CubeMesh CullInstance Curve Curve2D Curve3D CurveTexture CylinderMesh CylinderShape DampedSpringJoint2D Dictionary DirectionalLight Directory DTLSServer DynamicFont DynamicFontData EditorExportPlugin EditorFeatureProfile EditorFileDialog EditorFileSystem EditorFileSystemDirectory EditorImportPlugin EditorInspector EditorInspectorPlugin EditorInterface EditorPlugin EditorProperty EditorResourceConversionPlugin EditorResourcePicker EditorResourcePreview EditorResourcePreviewGenerator EditorSceneImporter EditorSceneImporterFBX EditorSceneImporterGLTF EditorScenePostImport EditorScript EditorScriptPicker EditorSelection EditorSettings EditorSpatialGizmo EditorSpatialGizmoPlugin EditorSpinSlider EditorVCSInterface EncodedObjectAsID Engine Environment Expression ExternalTexture File FileDialog FileSystemDock float FlowContainer Font FuncRef GDNative GDNativeLibrary GDScript GDScriptFunctionState Generic6DOFJoint Geometry GeometryInstance GIProbe GIProbeData GLTFAccessor GLTFAnimation GLTFBufferView GLTFCamera GLTFDocument GLTFLight GLTFMesh GLTFNode GLTFSkeleton GLTFSkin GLTFSpecGloss GLTFState GLTFTexture GodotSharp Gradient GradientTexture GradientTexture2D GraphEdit GraphNode GridContainer GridMap GrooveJoint2D HashingContext HBoxContainer HeightMapShape HFlowContainer HingeJoint HMACContext HScrollBar HSeparator HSlider HSplitContainer HTTPClient HTTPRequest Image ImageTexture ImmediateGeometry Input InputEvent InputEventAction InputEventGesture InputEventJoypadButton InputEventJoypadMotion InputEventKey InputEventMagnifyGesture InputEventMIDI InputEventMouse InputEventMouseButton InputEventMouseMotion InputEventPanGesture InputEventScreenDrag InputEventScreenTouch InputEventWithModifiers InputMap InstancePlaceholder int InterpolatedCamera IntervalTweener IP ItemList JavaClass JavaClassWrapper JavaScript JavaScriptObject JNISingleton Joint Joint2D JSON JSONParseResult JSONRPC KinematicBody KinematicBody2D KinematicCollision KinematicCollision2D Label Label3D LargeTexture Light Light2D LightOccluder2D Line2D LineEdit LineShape2D LinkButton Listener Listener2D MainLoop MarginContainer Marshalls Material MenuButton Mesh MeshDataTool MeshInstance MeshInstance2D MeshLibrary MeshTexture MethodTweener MobileVRInterface MultiMesh MultiMeshInstance MultiMeshInstance2D MultiplayerAPI MultiplayerPeerGDNative Mutex NativeScript Navigation Navigation2D Navigation2DServer NavigationAgent NavigationAgent2D NavigationMesh NavigationMeshGenerator NavigationMeshInstance NavigationObstacle NavigationObstacle2D NavigationPolygon NavigationPolygonInstance NavigationServer NetworkedMultiplayerCustom NetworkedMultiplayerENet NetworkedMultiplayerPeer NinePatchRect Node Node2D NodePath NoiseTexture Object Occluder OccluderPolygon2D OccluderShape OccluderShapePolygon OccluderShapeSphere OmniLight OpenSimplexNoise OptionButton OS PackedDataContainer PackedDataContainerRef PackedScene PackedSceneGLTF PacketPeer PacketPeerDTLS PacketPeerGDNative PacketPeerStream PacketPeerUDP Panel PanelContainer PanoramaSky ParallaxBackground ParallaxLayer Particles Particles2D ParticlesMaterial Path Path2D PathFollow PathFollow2D PCKPacker Performance PHashTranslation PhysicalBone Physics2DDirectBodyState Physics2DDirectSpaceState Physics2DServer Physics2DShapeQueryParameters Physics2DTestMotionResult PhysicsBody PhysicsBody2D PhysicsDirectBodyState PhysicsDirectSpaceState PhysicsMaterial PhysicsServer PhysicsShapeQueryParameters PhysicsTestMotionResult PinJoint PinJoint2D Plane PlaneMesh PlaneShape PluginScript PointMesh Polygon2D PolygonPathFinder PoolByteArray PoolColorArray PoolIntArray PoolRealArray PoolStringArray PoolVector2Array PoolVector3Array Popup PopupDialog PopupMenu PopupPanel Portal Position2D Position3D PrimitiveMesh PrismMesh ProceduralSky ProgressBar ProjectSettings PropertyTweener ProximityGroup ProxyTexture QuadMesh Quat RandomNumberGenerator Range RayCast RayCast2D RayShape RayShape2D Rect2 RectangleShape2D Reference ReferenceRect ReflectionProbe RegEx RegExMatch RemoteTransform RemoteTransform2D Resource ResourceFormatLoader ResourceFormatSaver ResourceImporter ResourceInteractiveLoader ResourceLoader ResourcePreloader ResourceSaver RichTextEffect RichTextLabel RID RigidBody RigidBody2D Room RoomGroup RoomManager RootMotionView SceneState SceneTree SceneTreeTimer SceneTreeTween Script ScriptCreateDialog ScriptEditor ScrollBar ScrollContainer SegmentShape2D Semaphore Separator Shader ShaderMaterial Shape Shape2D ShapeCast ShapeCast2D ShortCut Skeleton Skeleton2D SkeletonIK Skin SkinReference Sky Slider SliderJoint SoftBody Spatial SpatialGizmo SpatialMaterial SpatialVelocityTracker SphereMesh SphereShape SpinBox SplitContainer SpotLight SpringArm Sprite Sprite3D SpriteBase3D SpriteFrames StaticBody StaticBody2D StreamPeer StreamPeerBuffer StreamPeerGDNative StreamPeerSSL StreamPeerTCP StreamTexture String StyleBox StyleBoxEmpty StyleBoxFlat StyleBoxLine StyleBoxTexture SurfaceTool TabContainer Tabs TCP_Server TextEdit TextFile TextMesh Texture Texture3D TextureArray TextureButton TextureLayered TextureProgress TextureRect Theme Thread TileMap TileSet Time Timer ToolButton TorusMesh TouchScreenButton Transform Transform2D Translation TranslationServer Tree TreeItem TriangleMesh Tween Tweener UDPServer UndoRedo UPNP UPNPDevice Variant VBoxContainer Vector2 Vector3 VehicleBody VehicleWheel VFlowContainer VideoPlayer VideoStream VideoStreamGDNative VideoStreamTheora VideoStreamWebm Viewport ViewportContainer ViewportTexture VisibilityEnabler VisibilityEnabler2D VisibilityNotifier VisibilityNotifier2D VisualInstance VisualScript VisualScriptBasicTypeConstant VisualScriptBuiltinFunc VisualScriptClassConstant VisualScriptComment VisualScriptComposeArray VisualScriptCondition VisualScriptConstant VisualScriptConstructor VisualScriptCustomNode VisualScriptDeconstruct VisualScriptEditor VisualScriptEmitSignal VisualScriptEngineSingleton VisualScriptExpression VisualScriptFunction VisualScriptFunctionCall VisualScriptFunctionState VisualScriptGlobalConstant VisualScriptIndexGet VisualScriptIndexSet VisualScriptInputAction VisualScriptIterator VisualScriptLists VisualScriptLocalVar VisualScriptLocalVarSet VisualScriptMathConstant VisualScriptNode VisualScriptOperator VisualScriptPreload VisualScriptPropertyGet VisualScriptPropertySet VisualScriptResourcePath VisualScriptReturn VisualScriptSceneNode VisualScriptSceneTree VisualScriptSelect VisualScriptSelf VisualScriptSequence VisualScriptSubCall VisualScriptSwitch VisualScriptTypeCast VisualScriptVariableGet VisualScriptVariableSet VisualScriptWhile VisualScriptYield VisualScriptYieldSignal VisualServer VisualShader VisualShaderNode VisualShaderNodeBooleanConstant VisualShaderNodeBooleanUniform VisualShaderNodeColorConstant VisualShaderNodeColorFunc VisualShaderNodeColorOp VisualShaderNodeColorUniform VisualShaderNodeCompare VisualShaderNodeCubeMap VisualShaderNodeCubeMapUniform VisualShaderNodeCustom VisualShaderNodeDeterminant VisualShaderNodeDotProduct VisualShaderNodeExpression VisualShaderNodeFaceForward VisualShaderNodeFresnel VisualShaderNodeGlobalExpression VisualShaderNodeGroupBase VisualShaderNodeIf VisualShaderNodeInput VisualShaderNodeIs VisualShaderNodeOuterProduct VisualShaderNodeOutput VisualShaderNodeScalarClamp VisualShaderNodeScalarConstant VisualShaderNodeScalarDerivativeFunc VisualShaderNodeScalarFunc VisualShaderNodeScalarInterp VisualShaderNodeScalarOp VisualShaderNodeScalarSmoothStep VisualShaderNodeScalarSwitch VisualShaderNodeScalarUniform VisualShaderNodeSwitch VisualShaderNodeTexture VisualShaderNodeTextureUniform VisualShaderNodeTextureUniformTriplanar VisualShaderNodeTransformCompose VisualShaderNodeTransformConstant VisualShaderNodeTransformDecompose VisualShaderNodeTransformFunc VisualShaderNodeTransformMult VisualShaderNodeTransformUniform VisualShaderNodeTransformVecMult VisualShaderNodeUniform VisualShaderNodeUniformRef VisualShaderNodeVec3Constant VisualShaderNodeVec3Uniform VisualShaderNodeVectorClamp VisualShaderNodeVectorCompose VisualShaderNodeVectorDecompose VisualShaderNodeVectorDerivativeFunc VisualShaderNodeVectorDistance VisualShaderNodeVectorFunc VisualShaderNodeVectorInterp VisualShaderNodeVectorLen VisualShaderNodeVectorOp VisualShaderNodeVectorRefract VisualShaderNodeVectorScalarMix VisualShaderNodeVectorScalarSmoothStep VisualShaderNodeVectorScalarStep VisualShaderNodeVectorSmoothStep VScrollBar VSeparator VSlider VSplitContainer WeakRef WebRTCDataChannel WebRTCDataChannelGDNative WebRTCMultiplayer WebRTCPeerConnection WebRTCPeerConnectionGDNative WebSocketClient WebSocketMultiplayerPeer WebSocketPeer WebSocketServer WebXRInterface WindowDialog World World2D WorldEnvironment X509Certificate XMLParser YSort + if else repeat while function for in next break TRUE FALSE NULL NA Inf NaN abbreviate abline abs acf acos acosh addmargins aggregate agrep alarm alias alist all anova any aov aperm append apply approx approxfun apropos ar args arima array arrows asin asinh assign assocplot atan atanh attach attr attributes autoload autoloader ave axis backsolve barplot basename beta bindtextdomain binomial biplot bitmap bmp body box boxplot bquote break browser builtins bxp by bzfile c call cancor capabilities casefold cat category cbind ccf ceiling character charmatch chartr chol choose chull citation class close cm cmdscale codes coef coefficients col colnames colors colorspaces colours comment complex confint conflicts contour contrasts contributors convolve cophenetic coplot cor cos cosh cov covratio cpgram crossprod cummax cummin cumprod cumsum curve cut cutree cycle data dataentry date dbeta dbinom dcauchy dchisq de debug debugger decompose delay deltat demo dendrapply density deparse deriv det detach determinant deviance dexp df dfbeta dfbetas dffits dgamma dgeom dget dhyper diag diff diffinv difftime digamma dim dimnames dir dirname dist dlnorm dlogis dmultinom dnbinom dnorm dotchart double dpois dput drop dsignrank dt dump dunif duplicated dweibull dwilcox eapply ecdf edit effects eigen emacs embed end environment eval evalq example exists exp expression factanal factor factorial family fft fifo file filter find fitted fivenum fix floor flush for force formals format formula forwardsolve fourfoldplot frame frequency ftable function gamma gaussian gc gcinfo gctorture get getenv geterrmessage gettext gettextf getwd gl glm globalenv gray grep grey grid gsub gzcon gzfile hat hatvalues hcl hclust head heatmap help hist history hsv httpclient iconv iconvlist identical identify if ifelse image influence inherits integer integrate interaction interactive intersect invisible isoreg jitter jpeg julian kappa kernapply kernel kmeans knots kronecker ksmooth labels lag lapply layout lbeta lchoose lcm legend length letters levels lfactorial lgamma library licence license line lines list lm load loadhistory loadings local locator loess log logb logical loglin lowess ls lsfit machine mad mahalanobis makepredictcall manova mapply match matlines matplot matpoints matrix max mean median medpolish menu merge message methods mget min missing mode monthplot months mosaicplot mtext mvfft names napredict naprint naresid nargs nchar ncol next nextn ngettext nlevels nlm nls noquote nrow numeric objects offset open optim optimise optimize options order ordered outer pacf page pairlist pairs palette par parse paste pbeta pbinom pbirthday pcauchy pchisq pdf pentagamma person persp pexp pf pgamma pgeom phyper pi pico pictex pie piechart pipe plclust plnorm plogis plot pmatch pmax pmin pnbinom png pnorm points poisson poly polygon polym polyroot postscript power ppoints ppois ppr prcomp predict preplot pretty princomp print prmatrix prod profile profiler proj promax prompt provide psigamma psignrank pt ptukey punif pweibull pwilcox q qbeta qbinom qbirthday qcauchy qchisq qexp qf qgamma qgeom qhyper qlnorm qlogis qnbinom qnorm qpois qqline qqnorm qqplot qr qsignrank qt qtukey quantile quarters quasi quasibinomial quasipoisson quit qunif quote qweibull qwilcox rainbow range rank raw rbeta rbind rbinom rcauchy rchisq readline real recover rect reformulate regexpr relevel remove reorder rep repeat replace replicate replications require reshape resid residuals restart return rev rexp rf rgamma rgb rgeom rhyper rle rlnorm rlogis rm rmultinom rnbinom rnorm round row rownames rowsum rpois rsignrank rstandard rstudent rt rug runif runmed rweibull rwilcox sample sapply save savehistory scale scan screen screeplot sd search searchpaths seek segments seq sequence serialize setdiff setequal setwd shell sign signif sin single sinh sink smooth solve sort source spectrum spline splinefun split sprintf sqrt stack stars start stderr stdin stdout stem step stepfun stl stop stopifnot str strftime strheight stripchart strptime strsplit strtrim structure strwidth strwrap sub subset substitute substr substring sum summary sunflowerplot supsmu svd sweep switch symbols symnum system t table tabulate tail tan tanh tapply tempdir tempfile termplot terms tetragamma text time title toeplitz tolower topenv toupper trace traceback transform trigamma trunc truncate try ts tsdiag tsp typeof unclass undebug union unique uniroot unix unlink unlist unname unserialize unsplit unstack untrace unz update upgrade url var varimax vcov vector version vi vignette warning warnings weekdays weights which while window windows with write wsbrowser xedit xemacs xfig xinch xor xtabs xyinch yinch zapsmall diff --git a/PowerEditor/src/menuCmdID.h b/PowerEditor/src/menuCmdID.h index b06541e89..74d42fd55 100644 --- a/PowerEditor/src/menuCmdID.h +++ b/PowerEditor/src/menuCmdID.h @@ -539,6 +539,7 @@ #define IDM_LANG_TYPESCRIPT (IDM_LANG + 84) #define IDM_LANG_JSON5 (IDM_LANG + 85) #define IDM_LANG_MSSQL (IDM_LANG + 86) + #define IDM_LANG_GDSCRIPT (IDM_LANG + 87) #define IDM_LANG_EXTERNAL (IDM_LANG + 165) #define IDM_LANG_EXTERNAL_LIMIT (IDM_LANG + 179) diff --git a/PowerEditor/src/stylers.model.xml b/PowerEditor/src/stylers.model.xml index cce00247f..3f983dfa2 100644 --- a/PowerEditor/src/stylers.model.xml +++ b/PowerEditor/src/stylers.model.xml @@ -1321,6 +1321,25 @@ + + + + + + + + + + + + + + + + + + +