Skip to content

Commit 050c76a

Browse files
committed
Updated completions
- Added Find and RFind functions for arrays. - Added return type to description of the GetState function.
1 parent 3e411d8 commit 050c76a

File tree

2 files changed

+28
-19
lines changed

2 files changed

+28
-19
lines changed

Source/Modules/Skyrim/Plugin.py

+25-18
Original file line numberDiff line numberDiff line change
@@ -350,23 +350,26 @@ def Exit():
350350
return Exit()
351351
except Linter.Cancel as e:
352352
scriptName = None
353-
if stat:
354-
if stat.type == self.sem.STAT_EXPRESSION:
355-
scriptName = self.sem.NodeVisitor(stat.data.expression)
356-
elif stat.type == self.sem.STAT_ASSIGNMENT:
357-
scriptName = self.sem.NodeVisitor(stat.data.rightExpression)
358-
elif stat.type == self.sem.STAT_VARIABLEDEF:
359-
scriptName = self.sem.NodeVisitor(stat.data.value)
360-
elif stat.type == self.sem.STAT_IF:
361-
scriptName = self.sem.NodeVisitor(stat.data.expression)
362-
elif stat.type == self.sem.STAT_ELSEIF:
363-
scriptName = self.sem.NodeVisitor(stat.data.expression)
364-
elif stat.type == self.sem.STAT_WHILE:
365-
scriptName = self.sem.NodeVisitor(stat.data.expression)
366-
elif stat.type == self.sem.STAT_RETURN:
367-
scriptName = self.sem.NodeVisitor(stat.data.expression)
368-
elif expr:
369-
scriptName = self.sem.NodeVisitor(expr)
353+
try:
354+
if stat:
355+
if stat.type == self.sem.STAT_EXPRESSION:
356+
scriptName = self.sem.NodeVisitor(stat.data.expression)
357+
elif stat.type == self.sem.STAT_ASSIGNMENT:
358+
scriptName = self.sem.NodeVisitor(stat.data.rightExpression)
359+
elif stat.type == self.sem.STAT_VARIABLEDEF:
360+
scriptName = self.sem.NodeVisitor(stat.data.value)
361+
elif stat.type == self.sem.STAT_IF:
362+
scriptName = self.sem.NodeVisitor(stat.data.expression)
363+
elif stat.type == self.sem.STAT_ELSEIF:
364+
scriptName = self.sem.NodeVisitor(stat.data.expression)
365+
elif stat.type == self.sem.STAT_WHILE:
366+
scriptName = self.sem.NodeVisitor(stat.data.expression)
367+
elif stat.type == self.sem.STAT_RETURN:
368+
scriptName = self.sem.NodeVisitor(stat.data.expression)
369+
elif expr:
370+
scriptName = self.sem.NodeVisitor(expr)
371+
except Linter.SemanticError as e:
372+
return Exit()
370373
if scriptName:
371374
if scriptName == self.sem.KW_SELF:
372375
for scope in e.functions:
@@ -375,6 +378,10 @@ def Exit():
375378
completions.append(SublimePapyrus.MakeFunctionCompletion(obj, self.sem))
376379
elif obj.type == self.sem.STAT_EVENTDEF:
377380
completions.append(SublimePapyrus.MakeEventCompletion(obj, self.sem))
381+
elif "[]" in scriptName:
382+
typ = scriptName[:-2].capitalize()
383+
completions.append(("find\tint func.", "Find(${1:%s akElement}, ${2:Int aiStartIndex = 0})" % typ,))
384+
completions.append(("rfind\tint func.", "RFind(${1:%s akElement}, ${2:Int aiStartIndex = -1})" % typ,))
378385
else:
379386
properties = self.GetPropertyCompletions(scriptName)
380387
functions = self.GetFunctionCompletions(scriptName)
@@ -512,7 +519,7 @@ def GetBaseFunctionBlockCompletions(self):
512519
("return\tstat.", "Return ${1:$SELECTION}",),
513520
("while\twhile-loop", "While(${1:$SELECTION})\n\t${0}\nEndWhile",),
514521
("for\tpseudo for-loop", "Int ${1:iCount} = 0\nWhile(${1:iCount} < ${2:maxSize})\n\t${0}\n\t${1:iCount} += 1\nEndWhile",),
515-
("getstate\tfunc.", "GetState()",),
522+
("getstate\tstring func.", "GetState()",),
516523
("gotostate\tfunc.", "GoToState(${1:String asState})",),
517524
("onbeginstate\tevent", "OnBeginState()",),
518525
("onendstate\tevent", "OnEndState()",),

Source/Modules/Skyrim/Skyrim.sublime-completions

+3-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
"scope": "source.papyrus.skyrim",
33
"completions":
44
[
5-
{"trigger": "getstate\tfunc.", "contents": "GetState()"},
5+
{"trigger": "find\tint func.", "contents": "Find(${1:Type akElement}, ${2:Int aiStartIndex = 0})"},
6+
{"trigger": "rfind\tint func.", "contents": "RFind(${1:Type akElement}, ${2:Int aiStartIndex = -1})"},
7+
{"trigger": "getstate\tstring func.", "contents": "GetState()"},
68
{"trigger": "gotostate\tfunc.", "contents": "GoToState(${1:String asState})"},
79
{"trigger": "onbeginstate\tevent", "contents": "Event OnBeginState()\n\t${0}\nEndEvent"},
810
{"trigger": "onendstate\tevent", "contents": "Event OnEndState()\n\t${0}\nEndEvent"},

0 commit comments

Comments
 (0)