# Assists
+Cursor position or selection is signified by `┃` character.
+
+
## `add_derive`
Adds a new `#[derive()]` clause to a struct or enum.
// BEFORE
struct Point {
x: u32,
- y: u32,<|>
+ y: u32,┃
}
// AFTER
```rust
// BEFORE
fn main() {
- let x<|> = 92;
+ let x┃ = 92;
}
// AFTER
```rust
// BEFORE
struct Ctx<T: Clone> {
- data: T,<|>
+ data: T,┃
}
// AFTER
impl T for () {
Type X = ();
- fn foo(&self) {}<|>
+ fn foo(&self) {}┃
}
fn bar(&self) {}
}
-impl T for () {<|>
+impl T for () {┃
}
```rust
// BEFORE
fn main() {
- if x != 4 ||<|> !y {}
+ if x != 4 ||┃ !y {}
}
// AFTER
```rust
// BEFORE
-fn<|> frobnicate() {}
+┃fn frobnicate() {}
// AFTER
pub(crate) fn frobnicate() {}
```rust
// BEFORE
fn main() {
- <|>if cond {
+ ┃if cond {
foo();
bar();
}
fn handle(action: Action) {
match action {
- <|>
+ ┃
}
}
```rust
// BEFORE
fn main() {
- let _ = 90 +<|> 2;
+ let _ = 90 +┃ 2;
}
// AFTER
```rust
// BEFORE
fn main() {
- ((1, 2),<|> (3, 4));
+ ((1, 2),┃ (3, 4));
}
// AFTER
```rust
// BEFORE
fn main() {
- let x<|> = 1 + 2;
+ let x┃ = 1 + 2;
x * 4;
}
```rust
// BEFORE
fn main() {
- <|>(1 + 2)<|> * 4;
+ ┃(1 + 2)┃ * 4;
}
// AFTER
}
fn generate_docs(assists: &[Assist], mode: Mode) -> Result<()> {
- let mut buf = String::from("# Assists\n");
+ let mut buf = String::from(
+ "# Assists\n\nCursor position or selection is signified by `┃` character.\n\n",
+ );
for assist in assists {
+ let before = assist.before.replace("<|>", "┃"); // Unicode pseudo-graphics bar
+ let after = assist.after.replace("<|>", "┃");
let docs = format!(
"
## `{}`
{}
```
",
- assist.id, assist.doc, assist.before, assist.after
+ assist.id, assist.doc, before, after
);
buf.push_str(&docs);
}