mirror of
https://github.com/oxalica/nil.git
synced 2024-11-23 03:57:06 +03:00
1.9 KiB
1.9 KiB
Code actions
Code actions are applicable code transformations.
- In coc.nvim, they can be triggered on cursor position via
<Plug>(coc-codeaction-cursor)
, which by default binds to<leader>ac
.
- In VSCode, they can be triggered by clicking the lightbulb 💡 icon at the beginning of the cursor line.
Here is the list of all implemented code actions, sorted by their mod
name in code
crates/ide/src/ide/assists
.
Currently documentations below are simply copied from doc-comments of their mod
s.
add_to_top_level_lambda_param
Add an undefined name to the top-level lambda.
{ foo }: foo + bar
=>
{ foo, bar }: foo + bar
convert_to_inherit
Convert path = value;
into inherit key;
.
This covers,
prefix.key = key;
=>prefix = { inherit key; };
Here theprefix
set mut not berec
. The code before is actually an infinite recursion while the code after is not.prefix.key = from.key;
=>prefix = [rec] { inherit (from) key; };
Since thefrom
is resolved in theprefix
scope thus it is allowed to have recursive references (but may not be infinite recursion).
flatten_attrset
Flatten binding with Attrset RHS into multiple bindings of outer level. FIXME: Indentations are not reformated well.
{
foo = {
bar = 1;
baz = 2;
};
}
=>
{
foo.bar = 1;
foo.baz = 2;
}
pack_bindings
Pack multiple bindings with the same prefix into nested one. FIXME: Indentations are not reformated well.
{
foo.bar = 1;
foo.baz = 2;
}
=>
{
foo = {
bar = 1;
baz = 2;
};
}
remove_empty_inherit
Remove empty inherit;
or inherit (...);
.
{ foo = "bar"; inherit; }
=>
{ foo = "bar"; }
remove_empty_let_in
Remove empty let in ...
.
let in { foo = "bar"; }
=>
{ foo = "bar"; }