2017-04-26 73 views
0

我想创建生成fa-icons的实时模板。例如未来带有预定义变量列表和添加参数的复杂逻辑的实时模板

<i class="ace-icon fa fa-arrow-right icon-on-right align-top bigger-125"></i> 
<i class="ace-icon fa fa-arrow-left icon-on-left bigger-140"></i> 
<i class="ace-icon fa fa-times icon-on-right"></i> 
<i class="fa fa-bars"></i> 

规则生成是下一个:

  1. 最小生成的模板是<i class="fa fa-$ICON_NAME$"></i>
  2. 需要有能力添加类ace-icon,如果它被添加设置icon-on-[right|left]
  3. 如果$ICON_NAME$fa-arrow-[right|left]并设置ace-icon设置方向部分,因为它设置在icon-on-[right|left]
  4. 有例如在能力可选写aditional的类,如align-top
  5. 如果设置​​在bigger-$SIZE$添加该类否则跳过的$ICON_NAME$
  6. 选项和​​必须预先定义。

假定现场模板

<i class="$ACE_CLASS$ fa fa-$ICON_NAME$ icon-on-$ACE_DIRECTION$ $OPTIONAL_CLASS$ bigger-$SIZE$"></i> 

我的问题:

  1. 如何为$ICON_NAME$$ACE_DIRECTION$和​​设置预先定义的选项列表?
  2. 如果尺寸为空,如何不显示bigger-$SIZE$
  3. 如何检查$ICON_NAME$是否包含$ACE_DIRECTION$并切换?
  4. 如何仅在$ACE_CLASS$为真时才呈现icon-on-$ACE_DIRECTION$bigger-$SIZE$

回答

2

如何设置预先定义的选项列表$ICON_NAME$$ACE_DIRECTION$和​​?

enum(sCompletionString1,sCompletionString2,...) - https://www.jetbrains.com/help/phpstorm/2017.1/live-template-variables.html#predefined_functions


如何不使bigger-$SIZE$如果大小是空的?

不可能 - 实时模板没有conditionsloops

我可以只建议有另一个enum所有bigger-XXX选项,包括空单(基本 - 而不是bigger-$SIZE$$BIGGER-SIZE$)。

2017.2应该有GroovyScript support - 也许你可以再code your own Live Template function或(对于某些文档链接see this link)的东西...


如何检查是否$ICON_NAME$包含$ACE_DIRECTION$并切换呢?

同上:不可能 - 实时模板没有条件。


如何呈现icon-on-$ACE_DIRECTION$bigger-$SIZE$只有$ACE_CLASS$是真的吗?

同上:不可能 - 实时模板没有条件。

您可以创建多个Live Template来覆盖几个不同的场景(当然会有不同的缩写:例如:fai一个案例,fai2另一个案例等)。

+0

我可以从其他人打电话给一个活模板吗?例如'' –

+0

我想你的意思是 - https://youtrack.jetbrains.com/issue/IDEABKL-6414。不可能。您需要首先结束第一个活动模板..因为'[Tab]'键(用于实时模板的最常用的展开键)也是用于在当前模板中从一个变量/占位符导航到另一个变量的关键。尝试分配另一个自定义扩展键(不是'Space','Tab'或'Enter') - 也许它会以这种方式工作。 – LazyOne

+1

@PavloZhukov或者问题是 - “在另一个活模板中引用活动模板并同时扩展它们”?答案是一样的 - 不可能(https://youtrack.jetbrains.com/issue/WI-24014标记为https://youtrack.jetbrains.com/issue/IDEABKL-6414的副本)。 – LazyOne