microsoft / microsoft/TypeScript

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

Đang mở
#64,235 0 bình luận 0 reaction 1 người được giao Xem trên GitHub

@gabritto đang làm issue này rồi.

Từ ngày 10/9/2026.

Domain: LS: Outlining Experimentation Needed Suggestion
Ngôn ngữ chính
Go
Star
111k
Fork
14.3k
Merge trung bình
2 ngày 4 giờ
Pull request đã merge (30 ngày)
132

Mô tả

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   | } <EOF>

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

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.