2.4 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 mods.
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 theprefixset 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 thefromis resolved in theprefixscope 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;
};
}
quote_attr and unquote_attr
Rewrite between attribute names and double quoted strings
{ foo = bar; }
<=>
{ "foo" = bar; }
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"; }
rewrite_string_to_indented and rewrite_indented_to_string
Rewrite between double quoted strings and indented strings
"foo\nbar\n"
=>
''
foo
bar
''
rewrite_uri_to_string
Rewrite URI literals to double quoted strings
https://nixos.org
=>
"https://nixos.org"