PostfixCodeCompletion plugin for FlashDevelop/HaxeDevelop
The basic idea is to prevent caret jumps backwards while typing code. Kind of surround templates on steroids baked with code completion.
- Last release FlashDevelop.
- Haxe 3.2.1 or higher - for Haxe projects.
Download the latest release. Open the .fdz file with FlashDevelop.
Available templates for Haxe:
.if– checks boolean expression to be trueif (expr).else– checks boolean expression to be falseif (!expr).null– checks nullable expression to be nullif (expr == null).notnull– checks expression to be non-nullif (expr != null).not– negates value of inner boolean expression!expr.foreach– iterates over collectionfor(it in expr).for– forArray,Vector,Iterator,IterableandStringsurrounds with loopfor (i in 0...expr.length).for– for Numeric surrounds with loopfor (i in 0...expr).var– initialize new variable with expressionvar x = expr;.new– produces instantiation expression for typenew T().par– surrounds outer expression with parentheses(expr).return– returns value from method/propertyreturn expr;.while– uses expression as loop conditionwhile (expr).dowhile– uses expression as loop conditiondo{...} while(expr);.sel– selects expression in editor.trace– surrounds expression withtrace(expr);
Available templates for AS3:
.constructor– surrounds with expressionObject(expr)['constructor'].if– checks boolean expression to be trueif (expr).else– checks boolean expression to be falseif (!expr).null– checks nullable expression to be nullif (expr == null).notnull– checks expression to be non-nullif (expr != null).not– negates value of inner boolean expression!expr.foreach– iterates over collectionforeach (var x in expr).forin– forObjectsurrounds with loopfor (var key:String in expr).forin– forDictionarysurrounds with loopfor (var key:Object in expr).for– forArray,VectorandStringsurrounds with loopfor (var i:int = 0; i < expr.length; i++).for– for Numeric surrounds with loopfor (var i:int = 0; i < expr; i++).forr– forArray,VectorandStringreverse loopfor (var i:int = expr.length - 1; i >= 0; i--).forr– for Numeric reverse loopfor (var i:int = expr; i >= 0; i--).var– initialize new variable with expressionvar x = expr;.const– initialize new variable with expressionconst x = expr;.new– produces instantiation expression for typenew T().par– surrounds outer expression with parentheses(expr).return– returns value from method/propertyreturn expr;.while– uses expression as loop conditionwhile (expr).dowhile– uses expression as loop conditiondo{...} while(expr);.sel– selects expression in editor.trace– surrounds expression withtrace(expr);
Сниппеты для постфиксного автокомплита представляют из себя улучшенный вид стандартных сниппетов и распологаются в FlashDevelop\Snippets\Language\postfixgenerators, также в настройках плагина можно подключить пользовательские директории.
$(PCCMember)– любая единица кода$(PCCBoolean)– логическое$(PCCNullable)– единица кода, которая может принимать значение null$(PCCCollection)– коллекция элементов, расположенных в памяти непосредственно друг за другом$(PCCHash)–Object|Dictionary|etc for as3,Map|etc - haxe$(PCCNumber)– Numeric$(PCCString)–String- http://www.flashdevelop.org/wikidocs/index.php?title=Arguments
Маркеры можно использовать вместе используя разделитель |, например сниппет if($(PCCBoolean|PCCNullable)$(EntryPoint)) будет работать как для логических так и для любых единиц кода, которые могут принимать значени null.
Кроме этого сниппеты поддерживают условия, для которых использутся разделитель #pcc:PCCМаркер или #pcc:T, например сниппет:
#pcc:PCCCollection
for (var $(ItmUniqueVar):int = 0; $(ItmUniqueVar) < $(PCCCollection).length; $(ItmUniqueVar)++) $(CSLB){
$(EntryPoint)
}
#pcc:PCCNumber
for (var $(ItmUniqueVar):int = 0; $(ItmUniqueVar) < $(PCCNumber); $(ItmUniqueVar)++) $(CSLB){
$(EntryPoint)
}
#pcc:flash.display.DisplayObjectContainer
for (var $(ItmUniqueVar):int = $(flash.display.DisplayObjectContainer).numChildren; $(ItmUniqueVar) >= 0; $(ItmUniqueVar)--) $(CSLB){
$(EntryPoint)
}
развернется в код
- для массива:
for (var i:int = 0; i < expr.length; i++) {
|
}- для числовых:
for (var i:int = 0; i < expr; i++) {
|
}- для
flash.display.DisplayObjectContainerи наследников:
for (var i:int = expr.numChildren; i >= 0; i--) {
|
}