Могу ли я настроить подсветку экранированных символов в строке?
Учитывая простую ошибку, например
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("\"); // note: " is escaped, so this won't compile
}
Это отображается в Arduino IDE 2.0.3 как
и проблему трудно обнаружить.
В средах разработки Jetbrains предусмотрена специальная подсветка экранированных символов, например
что делает проблему более очевидной, поскольку две кавычки имеют разный цвет.
Есть ли шанс, что это можно настроить и в новой среде Arduino IDE 2.0.3?
Потому что в комментариях был задан вопрос: нет, подсветка синтаксиса не выделяет экранированный символ, когда строка завершена. Обратная косая черта и кавычки по-прежнему зеленые.
@Thomas Weller, 👍0
Обсуждение1 ответ
Есть ли шанс, что это можно настроить и в новой среде Arduino IDE 2.0.3?
Да. Вам потребуется включить языковые функции Arduino, предоставляемые языковым сервером. По умолчанию они отключены.
- Нажмите F1,
- Введите
Настройки: Открыть настройки (JSON)
, - Нажмите Ввод,
- Откроется файл
settings.json
.
Добавьте в JSON следующее и сохраните его, если у вас не включено автосохранение:
{
"arduino.language.realTimeDiagnostics": true
}
Мой settings.json
с включенными функциями языка Arduino.
Выберите плату. Вы можете игнорировать выбор порта, если хотите. Языковая функция должна запуститься, и вы увидите ошибку в редакторе.
Дополнительные сведения о расширенных настройках можно найти здесь. .
Спасибо. Несомненно, это очень полезно. Однако цвет сбежавшего символа остается прежним., @Thomas Weller
В IDE JetBrains вы написали Serial.println("\");
, а в IDE Arduino Serial.println("\"); // примечание: " экранировано, поэтому это не будет компилироваться
. Не могли бы вы дополнить свой вопрос о выделении синтаксиса в JetBrains более длинным примером? Спасибо! Я сравнил встроенное расширение C++ в VS Code с Arduino IDE, и они ведут себя одинаково. Ошибка компилятора кажется действительной: _Ожидаемое выражение_ clang (ожидаемое_выражение)
. Я не думаю, что вы сможете настроить [подсветку синтаксиса](https://code.visualstudio.com/api/language -extensions/syntax-highlight-guide) в Arduino IDE., @dankeboy36
Мой VSCode имеет подсветку синтаксиса в строках: https://i.stack.imgur.com/Tq9iS.png Давно им не пользовался, но ИМХО использую его только для Typescript, а не C++, поэтому не думаю, что у меня установлены какие-либо расширения для С++, и он даже спрашивает меня, хочу ли я установить некоторые из них., @Thomas Weller
Мне жаль, что я не мог помочь вам с этим. Этот разговор возможен только в том случае, если мы сравним одни и те же фрагменты кода в разных IDE и редакторах. Я не говорил, что VS Code, Arduino IDE или другие инструменты не могут применять различную окраску синтаксиса к токену регулярного выражения, но ваш первоначальный вариант использования отличается; это чистая ошибка компилятора. Даже встроенная подсветка фрагментов StackOverflow показывает тот же результат, что и Arduino IDE; пожалуйста, посмотрите на свой исходный вопрос и проверьте фрагмент., @dankeboy36
Я сделал еще одну проверку и могу подтвердить ошибку в Arduino IDE, которая не выделяет совпадения с регулярными выражениями. Если ошибок компилятора нет, VS Code правильно выделяет \d
в строке "\d+"
. Arduino IDE 2.0.3 не может этого сделать., @dankeboy36
Еще одно обновление. Подсветка синтаксиса регулярных выражений работает в Arduino IDE как с темами «Светлая (Theia)», так и с «Темной (Theia)», но не с темами Arduino. Действия по воспроизведению. Ваш скетч: void setup() {} void loop() { Serial.println("\d"); }
. \d
не выделен. Откройте настройки с помощью Ctrl
/⌘
+,
. Выберите одну из тем Theia из раскрывающегося списка и закройте диалоговое окно, нажав «ОК». \d
выделено. Если я выберу любую из тем Arduino, это не сработает. Это баг темы., @dankeboy36
Если вы хотите дать дополнительный ответ, я с радостью проголосую и приму его., @Thomas Weller
- Ошибка при загрузке «Произошла фатальная ошибка esptool.py: тайм-аут записи»
- Загрузка данных SPIFFS в Arduino IDE 2.0.0-rc3 (ESP32 & TTGO) - Ubuntu
- Только что установил Arduino 2.0.3 - каков путь Windows к связанным библиотекам?
- Arduino IDE 2.0 Beta не запускается
- Arduino IDE 2.3.2 не запускает новую установку
- Ошибка Chrome-sandbox в Arduino IDE 2.3 в Ubuntu 24.04
- Как сжечь предохранители в Digistump ATTiny85 с помощью Arduino IDE
- Как избавиться от второй вкладки в Arduino IDE 2?
@hcheung
"\"
не является строкой, так как не имеет закрывающей кавычки.\"
— это экранированный символ в строке., @Thomas Weller"\"
- это escape"
без закрытия"
, вы можете получить правильную подсветку синтаксиса, если сделаете"\""
., @hcheungиспользуйте текстовый редактор, который его поддерживает, @jsotola
@jsotola: я работаю с детьми в возрасте 10 лет. Я не могу просто сказать им, чтобы они переключили редактор., @Thomas Weller
@hcheung: Нет, когда строка завершена, она не выделяется: https://i.stack.imgur.com/Dbb6x.png, @Thomas Weller