Skip to content

Commit aaef57c

Browse files
committed
Updated Skyrim plugin
Added support for completions directly after the 'Return' keyword provided that the function header defines a return type.
1 parent 0f9e7c8 commit aaef57c

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed

README.md

+5
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,11 @@ Single file build system and a batch build variant.
228228
- SKSE mod event names
229229

230230
## **Changelog**
231+
**Version 2.6.7 - 2016/12/12:**
232+
233+
- **Skyrim**
234+
- Added support for completions, which had previously been omitted, directly after the **Return** keyword in functions with a defined return type.
235+
231236
**Version 2.6.6 - 2016/12/11:**
232237

233238
- **Skyrim**

Source/Modules/Skyrim/Plugin.py

+52
Original file line numberDiff line numberDiff line change
@@ -812,6 +812,58 @@ def Completions(self, view, prefix, locations):
812812
elif stat.type == syn.STAT_EXPRESSION:
813813
completions.append(self.completionKeywordAs)
814814
return completions
815+
elif stat.type == syn.STAT_RETURN:
816+
if e.signature.data.type:
817+
for name, obj in e.functions[0].items():
818+
if obj.type == syn.STAT_FUNCTIONDEF:
819+
completions.append(SublimePapyrus.MakeFunctionCompletion(obj, sem, True, "parent", parameters=settingFunctionEventParameters))
820+
elif obj.type == syn.STAT_EVENTDEF:
821+
completions.append(SublimePapyrus.MakeEventCompletion(obj, sem, True, "parent", parameters=settingFunctionEventParameters))
822+
for name, obj in e.functions[1].items():
823+
if obj.type == syn.STAT_FUNCTIONDEF:
824+
completions.append(SublimePapyrus.MakeFunctionCompletion(obj, sem, True, "self", parameters=settingFunctionEventParameters))
825+
elif obj.type == syn.STAT_EVENTDEF:
826+
completions.append(SublimePapyrus.MakeEventCompletion(obj, sem, True, "self", parameters=settingFunctionEventParameters))
827+
for name, obj in e.variables[0].items():
828+
if obj.type == syn.STAT_PROPERTYDEF:
829+
completions.append(SublimePapyrus.MakePropertyCompletion(obj, "parent"))
830+
for name, obj in e.variables[1].items():
831+
if obj.type == syn.STAT_PROPERTYDEF:
832+
completions.append(SublimePapyrus.MakePropertyCompletion(obj, "self"))
833+
elif obj.type == syn.STAT_VARIABLEDEF:
834+
completions.append(SublimePapyrus.MakeVariableCompletion(obj))
835+
for scope in e.variables[2:]:
836+
for name, obj in scope.items():
837+
if obj.type == syn.STAT_VARIABLEDEF:
838+
completions.append(SublimePapyrus.MakeVariableCompletion(obj))
839+
elif obj.type == syn.STAT_PARAMETER:
840+
completions.append(SublimePapyrus.MakeParameterCompletion(obj))
841+
completions.extend(self.GetTypeCompletions(view, False))
842+
completions.append(self.completionKeywordFalse)
843+
completions.append(self.completionKeywordTrue)
844+
completions.append(self.completionKeywordNone)
845+
if not sem.KW_GLOBAL in e.signature.data.flags:
846+
completions.append(self.completionKeywordSelf)
847+
completions.append(self.completionKeywordParent)
848+
849+
# Imported global functions
850+
for imp in e.imports:
851+
functions = self.GetFunctionCompletions(imp, True)
852+
if not functions:
853+
try:
854+
script = sem.GetCachedScript(imp)
855+
if script:
856+
functions = []
857+
impLower = imp.lower()
858+
for name, obj in script.functions.items():
859+
if lex.KW_GLOBAL in obj.data.flags:
860+
functions.append(SublimePapyrus.MakeFunctionCompletion(obj, sem, True, impLower, parameters=settingFunctionEventParameters))
861+
self.SetFunctionCompletions(imp, functions, True)
862+
except:
863+
return
864+
if functions:
865+
completions.extend(functions)
866+
return completions
815867
except Linter.ExpectedTypeError as f:
816868
completions.extend(self.GetTypeCompletions(view, f.baseTypes))
817869
return completions

0 commit comments

Comments
 (0)