Skip to content

Instantly share code, notes, and snippets.

@kitlangton
Last active July 16, 2023 21:33
Show Gist options
  • Save kitlangton/3b8f2063ce2bc72467bc3d86aea91d2f to your computer and use it in GitHub Desktop.
Save kitlangton/3b8f2063ce2bc72467bc3d86aea91d2f to your computer and use it in GitHub Desktop.
IDEA Live Templates
<template name="fr" value="for {&#10; $VARIABLE$ &lt;- $VALUE$&#10;} yield $FINISH$" description="for comprehension" toReformat="false" toShortenFQNames="true">
<variable name="VALUE" expression="" defaultValue="" alwaysStopAt="true" />
<variable name="VARIABLE" expression="" defaultValue="&quot;x&quot;" alwaysStopAt="true" />
<variable name="FINISH" expression="" defaultValue="VARIABLE" alwaysStopAt="true" />
<context>
<option name="SCALA" value="true" />
</context>
</template>
<template name="FR" value="for {&#10; $VARIABLE$ &lt;- $SELECTION$&#10;} yield $FINISH$" description="for comprehension" toReformat="false" toShortenFQNames="true">
<variable name="VARIABLE" expression="" defaultValue="&quot;x&quot;" alwaysStopAt="true" />
<variable name="FINISH" expression="" defaultValue="VARIABLE" alwaysStopAt="true" />
<context>
<option name="SCALA" value="true" />
</context>
</template>
<template name="imc" value="implicit final class $CLASS_NAME$$SUFFIX$(private val self: $TYPE_NAME$) extends AnyVal {&#10;$END$&#10;}" description="Template for extension methods container" toReformat="true" toShortenFQNames="true">
<variable name="TYPE_NAME" expression="" defaultValue="&quot;Any&quot;" alwaysStopAt="true" />
<variable name="SUFFIX" expression="" defaultValue="" alwaysStopAt="true" />
<variable name="CLASS_NAME" expression="scala_implicitValueClassName(TYPE_NAME)" defaultValue="" alwaysStopAt="false" />
<context />
</template>
<template name="st" value="sealed trait $TYPE_NAME$ extends Product with Serializable&#10;&#10;object $CLASS_NAME$ {&#10; $END$&#10;}" description="Template for scala sealed trait" toReformat="true" toShortenFQNames="true">
<variable name="TYPE_NAME" expression="" defaultValue="" alwaysStopAt="true" />
<variable name="CLASS_NAME" expression="substringBefore(scala_implicitValueClassName(TYPE_NAME), &quot;Ops&quot;)" defaultValue="" alwaysStopAt="false" />
<context>
<option name="SCALA_CODE" value="true" />
</context>
</template>
<template name="co" value="case object $NAME$" description="Template for scala case object" toReformat="true" toShortenFQNames="true">
<variable name="NAME" expression="suggestScalaVariableName(&quot;foreach&quot;, FOR)" defaultValue="x" alwaysStopAt="true" />
<context>
<option name="SCALA_CODE" value="true" />
</context>
</template>
<template name="coe" value="case object $NAME$ extends $TRAIT$" description="Template for scala case object extending trait" toReformat="true" toShortenFQNames="true">
<variable name="NAME" expression="suggestScalaVariableName(&quot;foreach&quot;, FOR)" defaultValue="x" alwaysStopAt="true" />
<variable name="TRAIT" expression="substringBefore(className(), &quot;$&quot;)" defaultValue="" alwaysStopAt="true" />
<context>
<option name="SCALA_CODE" value="true" />
</context>
</template>
<template name="cce" value="final case class $NAME$($PARAMS$) extends $TRAIT$" description="Template for scala case class extends" toReformat="true" toShortenFQNames="true">
<variable name="NAME" expression="suggestScalaVariableName(&quot;foreach&quot;, FOR)" defaultValue="x" alwaysStopAt="true" />
<variable name="PARAMS" expression="" defaultValue="" alwaysStopAt="true" />
<variable name="TRAIT" expression="scala_className" defaultValue="" alwaysStopAt="true" />
<context>
<option name="SCALA_CODE" value="true" />
</context>
</template>
<template name="cc" value="final case class $NAME$($PARAMS$)" description="Template for scala case class" toReformat="true" toShortenFQNames="true">
<variable name="NAME" expression="suggestScalaVariableName(&quot;foreach&quot;, FOR)" defaultValue="x" alwaysStopAt="true" />
<variable name="PARAMS" expression="" defaultValue="" alwaysStopAt="true" />
<context>
<option name="SCALA_CODE" value="true" />
</context>
</template>
@kitlangton
Copy link
Author

  1. Copy the XML above
  2. Open Live Templates in IntelliJ Preferences
  3. Select scala
  4. Paste!
    CleanShot 2022-05-12 at 11 44 05@2x

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment