Microsoft/vscode

JavaScript: Improve indentation on insert with trailing newline

Open

#85,781 opened on Nov 28, 2019

View on GitHub
 (2 comments) (0 reactions) (1 assignee)TypeScript (10,221 forks)batch import
editor-autoindenthelp wantedjavascripttree-sitter-autoindent-candidatetypescriptunder-discussion

Repository metrics

Stars
 (74,848 stars)
PR merge metrics
 (Avg merge 11h 43m) (1,000 merged PRs in 30d)

Description

Let's say I have the following JS snippet:

() => {
  a
}

() => {
  b
}

Now select the entire 'a' part, from the start of line 1 to the start of line 4, i.e. including a trailing newline, and insert it at the start of the line now containing 'b'. The result is this:

() => {
  a
}

() => {
  () => {
    a
  }
    b
}

The 'b' is now over-indented because that line received additional indentation at insert. Expected behavior: the 'b' should remain at its original indentation level. I can confirm this behavior at least for JS and JSON files.


The reason I care is that selecting whole lines with the keyboard is the easiest from start to start, so this kind of pasting is very common in my workflow. I often do Ctrl+C, Ctrl+V, Ctrl+V to duplicate lines; with this bug, this will add two additional indentations to the next line, which is potentially unrelated to the copied lines.

Contributor guide