Skip to content

synic/refactorex

 
 

Repository files navigation

RefactorEx

RefactorEx is a powerful Visual Studio Code extension that simplifies and accelerates code refactoring for Elixir projects. It introduces intuitive code actions to help you refactor Elixir code efficiently and confidently.

With RefactorEx, you can perform common refactorings like extracting functions, renaming variables, and more — all within a few clicks.

Example

Available refactorings

Scope Refactoring Target
alias Expand aliases selection
alias Extract alias selection
alias Inline alias selection
alias Merge aliases selection
alias Sort nested aliases line
constant Extract constant selection
constant Inline constant selection
constant Rename constant selection
function Expand anonymous function selection
function Extract anonymous function selection
function Extract function selection
function Collapse anonymous function selection
function Inline function selection
function Rename function selection
function Underscore unused args line
function Use keyword syntax line
function Use regular syntax line
guard Extract guard selection
guard Inline guard selection
guard Rename guard selection
if else Use keyword syntax line
if else Use regular syntax line
pipeline Introduce IO.inspect selection
pipeline Introduce pipe line
pipeline Remove IO.inspect line
pipeline Remove pipe line
variable Extract variable selection
variable Inline variable selection
variable Rename variable selection

How to use each refactoring

Alias: expand aliases

Description Expand nested aliases to their full names
Target Selection of nested alias, group of nested aliases or alias with nesting
Inverse of Merge aliases
Read more Catalog of Elixir refactorings
Example Example

▲ top


Alias: extract alias

Description Extract the module full name into an alias and use it
Target Selection of module full name
Inverse of Inline alias
Example Example

▲ top


Alias: inline alias

Description Replace the alias usage by the module full name
Target Selection of alias usage
Inverse of Extract alias
Notes 1. alias must be declared on the same module
2. alias declaration will not be removed
Example Example

▲ top


Alias: merge aliases

Description Merge the group of aliases into a nested alias
Target Selection of two or more mergeable aliases
Inverse of Expand aliases
Example Example

▲ top


Alias: sort nested aliases

Description Sort all nested aliases alphabetically
Target Line of alias with unsorted nested aliases
Example Example

▲ top


Constant: extract constant

Description Extract a piece of code into a constant
Target Selection of any code without variables
Inverse of Inline constant
Read more Catalog of Elixir refactorings
Example Example

▲ top


Constant: inline constant

Description Replace a constant usage by its value
Target Selection of constant
Inverse of Extract constant
Notes 1. constant must be declared on the same module
2. constant declaration will not be removed
Example Example

▲ top


Constant: rename constant

Description Replace the name of constant in all its usages
Target Selection of (or cursor over) constant
Read more Catalog of Elixir refactorings
Example Example

▲ top


Function: collapse anonymous function

Description Collapse a fn function into a & function
Target Selection of fn function
Inverse of Expand anonymous function
Example Example

▲ top


Function: extract anonymous function

Description Extract a & or fn function into a function
Target Selection of & or fn function
Inverse of Inline function
Read more Catalog of Elixir refactorings
Example Example

▲ top


Function: expand anonymous function

Description Expand a & function into a fn function
Target Selection of & function
Inverse of Collapse anonymous function
Example Example

▲ top


Function: extract function

Description Extract a piece of code into a function
Target Selection of any code
Inverse of Inline function
Read more Catalog of Elixir refactorings
Example Example

▲ top


Function: inline function

Description Replace a function call by its body
Target Selection of function call
Inverse of Extract anonymous function, Extract function
Read more Catalog of Elixir refactorings
Notes 1. function must be defined on the same module
2. function definition will not be removed
Example Example

▲ top


Function: rename function

Description Replace the name of function in all its calls
Target Selection of (or cursor over) function name
Read more Catalog of Elixir refactorings
Notes ⚠️ Renaming a public function only affects the current file
Example Example

▲ top


Function: underscore unused args

Description Places a _ in front of args not used
Target Line of function definition with unused args
Example Example

▲ top


Function: use keyword syntax

Description Rewrite the function using keyword syntax
Target Line of function definition using regular syntax
Inverse of Use regular syntax
Notes function body must have a single statement
Example Example

▲ top


Function: use regular syntax

Description Rewrite the function using regular syntax
Target Line of function definition using keyword syntax
Inverse of Use keyword syntax
Example Example

▲ top


Guard: extract guard

Description Extract a when statement into a guard
Target Selection of when statement or part of one
Inverse of Inline guard
Example Example

▲ top


Guard: inline guard

Description Replace a guard call by its when statement
Target Selection of guard call
Inverse of Extract guard
Notes 1. guard must be defined on the same module
2. guard definition will not be removed
Example Example

▲ top


Guard: rename guard

Description Replace the name of guard in all its calls
Target Selection of (or cursor over) guard name
Read more Catalog of Elixir refactorings
Notes ⚠️ Renaming a public guard only affects the current file
Example Example

▲ top


If else: use keyword syntax

Description Rewrite the if else using keyword syntax
Target Line of if using regular syntax
Inverse of Use regular syntax
Notes Clauses must have a single statement
Example Example

▲ top


If else: use regular syntax

Description Rewrite the if else using regular syntax
Target Line of if using keyword syntax
Inverse of Use keyword syntax
Example Example

▲ top


Pipeline: introduce IO.inspect

Description Pipe a piece of code into an IO.inspect
Target Selection of any code
Inverse of Remove IO.inspect
Example Example

▲ top


Pipeline: introduce pipe

Description Pipe the first arg into function call or case condition
Target Line of function call or case condition
Inverse of Remove pipe
Example Example

▲ top


Pipeline: remove IO.inspect

Description Remove IO.inspect call
Target Line of IO.inspect call
Inverse of Introduce IO.inspect
Example Example

▲ top


Pipeline: remove pipe

Description Remove |> from function call or case condition
Target Line of pipe (|>)
Inverse of Introduce pipe
Read more Catalog of Elixir refactorings
Example Example

▲ top


Variable: extract variable

Description Extract a piece of code into a variable
Target Selection of any code
Inverse of Inline variable
Read more Catalog of Elixir refactorings
Example Example

▲ top


Variable: inline variable

Description Replace all usages of variable by its value
Target Selection of variable declaration or assignment
Inverse of Extract variable
Read more Catalog of Elixir refactorings
Example Example

▲ top


Variable: rename variable

Description Replace the name of variable in all its usages
Target Selection of (or cursor over) variable assignment
Read more Catalog of Elixir refactorings
Example Example

▲ top


About

A VS Code extension for fast and reliable Elixir code refactoring.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Elixir 97.8%
  • TypeScript 2.1%
  • Shell 0.1%