fdplugin-postfix-code-completion
fdplugin-postfix-code-completion copied to clipboard
Postfix Code Completion Plugin for FlashDevelop/HaxeDevelop
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.
Minimum Requirements
- Last release FlashDevelop.
- Haxe 3.2.1 or higher - for Haxe projects.
Installation
Download the latest release. Open the .fdz file with FlashDevelop.
Features
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
,Iterable
andString
surrounds 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
– forObject
surrounds with loopfor (var key:String in expr)
-
.forin
– forDictionary
surrounds with loopfor (var key:Object in expr)
-
.for
– forArray
,Vector
andString
surrounds 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
,Vector
andString
reverse 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--) {
|
}