Vscode: Странность сворачивания кода с отступом последующих строк

Созданный на 10 апр. 2016  ·  3Комментарии  ·  Источник: microsoft/vscode

  • Версия VSCode: 0.10.11
  • Версия ОС: Mac OS X El Capitan (10.11.4)

Шаги по воспроизведению: я, честно говоря, не уверен, как воспроизвести это, потому что я пробовал, но это не так. Поэтому я просто сделал серию снимков экрана, чтобы вы, ребята, могли понять закономерность. Это не доставляло мне никаких проблем, за исключением того, что казалось странным. Надеюсь, это не повлияет на чей-либо код, но я знаю, что иногда, казалось бы, небольшая проблема может всплыть позже, поэтому я просто хотел помочь вам ее решить, на всякий случай! :)

Проблема: при сворачивании блоков кода (в данном случае строка № 253) тот, что на фотографии, сворачивается, но затем предлагает мне «знак минус», чтобы свернуть несвертываемую строку (№ 273). Кажется, что одна строка пробелов после него (# 274) сжимается, и все. Но это закрывающая скобка.

Гипотеза: поскольку у меня есть блок кода с отступом (начальная строка № 275) под свойством, которое я определяю в строке № 253, я считаю, что он пытается предупредить меня, что я могу его закрыть. Если это так, и если проблема связана с функцией, а не с ошибкой, эта функция очень сбивает с толку / неясна. (см. изображение 4)

Если на самом деле моя гипотеза верна, могу ли я предложить использовать другой значок, чтобы указать возможность сворачивания строк с отступом под объектом (что действительно имеет смысл, но, опять же, неясно в контексте сворачивания блоков кода над ним), поскольку технически сворачивается не инкапсулированный блок кода.

Изображение 1
code folding 1

Изображение 2
code folding 2

Изображение 3
code folding 3

Изображение 4
code folding 4

Отличная IDE и отличные ребята! знак равно

*question

Все 3 Комментарий

Большое спасибо за множество скриншотов. Я думаю, что особенность вашего кода заключается в том, что закрывающая скобка в строке 273 имеет больший отступ, чем код, следующий за строкой 275.
Реализованная в настоящее время стратегия сворачивания учитывает только отступы линий. Область сгиба начинается, когда линия имеет меньший отступ, чем одна или несколько следующих строк, и заканчивается, когда есть линия с таким же или меньшим отступом. Пустые строки игнорируются.
Я предполагаю, что если бы вы увеличили отступ между строками 275 и 416 на единицу, чтобы они были такими же, как в строке 273, вы бы увидели более нормальное поведение. Вы можете это проверить?

Чтобы стать здесь умнее, нам нужно добавить знание языка к стратегии отступов. Например, знание того, что a} - это конец блока, но никогда не начало.
Для этого у нас есть проблема №3422.

завершение, если предположить, что мое предположение было правильным. Прокомментируйте, если нет ...

@aeschli ты прав. Извините за такой поздний ответ по этому поводу! В принципе, мне казалось, что это складывается, основываясь на знании того, что я неявно превращаю эти свойства в подсвойства свойства, определенного в строке 253-273. Я думаю, что он работает так, как ожидалось, исходя из того, что вы сказали, но, безусловно, будет сбивать с толку любого, кто не понимает, что он делает. Честно говоря, он отлично работает, когда я делаю такой отступ для блоков, потому что тогда я могу свернуть подразумеваемый субкод.

Я также согласен с вами, что знание языка тоже может помочь.

Спасибо!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги