microsoft / microsoft/TypeScript

Include terminating line in folding ranges when last token has no trailing non-trivia

オープン
#64,235 コメント 0 件 リアクション 0 件 担当者 1 名 @gabritto が担当を希望しています GitHub で見る
Domain: LS: Outlining Experimentation Needed Suggestion
主要言語
Go
スター
111k
フォーク
14.3k
平均マージ
2日 4時間
マージ済み PR(30日)
132

説明

With https://github.com/microsoft/typescript-go/pull/2772 (b81c7e9afd7f1e0b2ec2ac1fd581e09fe00df1af), we added support for `lineFoldingOnly` clients by consistently backing off a line; however, having a trailing `}` for every outlining span feels kind of unnecessary.

https://github.com/microsoft/vscode/issues/3352 has a lot of feedback, so maybe we can find a compromise. We discussed this a bit at #334371.

Instead of always backing off at these brace characters, maybe we should determine whether the terminating line has any non-trivia.

In other words...

### `else` on line following `}`:

```
A-START | if (Math.random()) {
|
A-END | }
B-START | else if (Math.random()) {
|
B-END | }
```

### `else` on same line as `}`:

```
A-START | if (Math.random()) {
A-END |
B-START | } else if (Math.random()) {
|
B-END | }
```

### Statement on same line as `}`

```
A-START | if (Math.random()) {
A-END |
| } /*strange, but valid*/ console.log("hi there what're you doin' on this line?")
```

### Contents on lines following `}`

```
A-START | if (Math.random()) {
|
A-END | }
| /* Normal - this is totally normal code! That is why I am saying so! */
| console.log("Hello world!");
```

### Empty statement on same line as `}`

This one is odd, and maybe even undesirable - but I anticipate the implementation will be cleaner without any special-cases.

```
A-START | if (Math.random()) {
A-END |
| };
```

### Comment on same line as `}`

```
A-START | if (Math.random()) {
|
A-END | } // finally out of that `if`
```

### End-of-file is on the same line as `}`

```
A-START | if (Math.random()) {
|
A-END | }
```

Should ensure that we have a test where EOF is on the same line and it works fine.

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。