Как сделать подсветку в коде?


Подсветка кода — важная часть написания и чтения кода. Правильная подсветка синтаксиса делает код более легким для чтения и понимания. Она также облегчает обнаружение ошибок и багов. Существует несколько различных способов выделения кода в зависимости от того, на каком языке вы работаете и какие инструменты используете.

Зачем использовать подсветку синтаксиса

Использование подсветки синтаксиса имеет несколько ключевых преимуществ:

  • Читаемость — цветовое кодирование элементов упрощает визуальный анализ кода.
  • Понимание — выделение показывает семантическое значение и роль каждого элемента кода.
  • Обнаружение ошибок — многие IDE используют выделение для указания потенциальных ошибок и проблем.
  • Фокус — привлекает внимание к важным конструкциям, таким как ключевые слова и литералы.
  • Последовательность — устанавливает единые соглашения о стиле для всех кодовых баз.
  • Доступность — высококонтрастные цвета могут помочь людям с нарушениями зрения.

Без подсветки синтаксиса код выглядит как плотная стена обычного текста. Это затрудняет различение ключевых слов, строк, комментариев и других конструкций с первого взгляда. Подсветка синтаксиса цветом кодирует эти элементы, поэтому их назначение становится сразу понятным.

Давайте рассмотрим простой пример:

<?php $name = "Джон"; echo "Привет $name!"; ?> 

Ключевые слова PHP выделены зеленым цветом, переменные — синим, а строковые значения — красным. Такое цветовое кодирование позволяет сразу распознать роль каждого элемента.

Подсветка синтаксиса настолько важна для читаемости кода, что встроена в каждый крупный редактор кода и IDE. В следующих разделах будет рассмотрено, как настроить подсветку синтаксиса.

Подсветка в текстовых редакторах

Большинство продвинутых текстовых редакторов, таких как Sublime Text, Visual Studio Code, Atom и Brackets, имеют встроенную подсветку синтаксиса для многих языков. Цвета и стиль подсветки обычно также настраиваются.

Например, в Sublime вы можете выбрать режимы подсветки синтаксиса в правом нижнем углу:

Цветовую схему также можно изменить через меню «Настройки» > «Цветовая схема».

Для корректной работы подсветки синтаксиса для всех расширений файлов в вашем проекте может потребоваться некоторая настройка. Например, вам может потребоваться установить синтаксис для файлов .vue на Vue в VS Code.

Большинство редакторов используют TextMate или подключаются к компиляторам, таким как Babel, для подсветки синтаксиса. Также доступны для загрузки обширные пакеты синтаксиса.

Подсветка в IDE

Специализированные IDE, такие как PyCharm, IntelliJ, Xcode, Android Studio и Visual Studio, имеют очень надежную встроенную подсветку синтаксиса для соответствующих языков.

Например, вот некоторый код Java в IntelliJ:

Эти IDE позволяют настраивать цветовую схему, настраивать цвета для каждого элемента синтаксиса и выбирать темы, такие как Darcula, для темного внешнего вида.

IDE могут предоставлять более продвинутые функции подсветки, такие как:

  • Семантическая подсветка — отдельные цвета для классов, методов, параметров и т. д.
  • Подсветка ошибок — яркое подчеркивание ошибок и предупреждений.
  • Соответствие скобок — окрашивание парных скобок для простого сопоставления.

Итак, подсветка синтаксиса IDE как правило, более настраиваемый и продвинутый по сравнению с текстовыми редакторами.

Подсветка языка в Интернете

В Интернете подсветка синтаксиса выполняется с помощью HTML, CSS и JavaScript вместо собственного редактора. Вот некоторые популярные способы подсветки кода в Интернете:

  • Prism — легкий настраиваемый подсветчик.
  • Highlight.js — автоматически определяет языки.
  • Google Prettify — используется продуктами Google.

Вот пример использования Prism для подсветки синтаксиса HTML:

Эти библиотеки включают темы и поддерживают автоматическое определение языка. Они обычно используются для подсветки примеров кода на сайтах документации и в блогах.

Динамическая подсветка

Некоторые редакторы, такие как Jupyter Notebook, допускают динамическую подсветку синтаксиса, которая изменяется по мере редактирования кода. Это делается с помощью живого рендеринга, а не простого окрашивания текста.

Например:

Это позволяет подсвечивать код даже до того, как он будет синтаксически завершен, например, показывая ошибки из-за пропущенных скобок.

Динамическая подсветка синтаксиса обеспечивает интерактивный элемент и захватывающий опыт при кодировании и прототипировании. Популярные реализации включают:

  • Jupyter Notebook — для Python и других ядер.
  • Observable — среда блокнота JavaScript.
  • LightTable — для Clojure, Python и других языков.

Эти «живые» IDE обновляют подсветку по мере ввода текста без необходимости сохранения файла. Это помогает немедленно выявлять проблемы с синтаксисом.

Подсветка Babel

Babel — популярный транспилятор для нового синтаксиса JavaScript. Правила подсветки определяются с помощью плагинов Babel.

Например, для подсветки синтаксиса JSX React:

npm install --save-dev babel-plugin-syntax-jsx 

Это научит редактор обрабатывать синтаксис JSX, даже если он не является допустимым ванильным JavaScript.

Другие плагины Babel доступны для предлагаемых функций ESNext, таких как async/await, свойства класса, декораторы и т. д. Это позволяет использовать новый синтаксис с правильной подсветкой даже до того, как браузеры полностью поддержат новые функции.

Пользовательская подсветка

Большинство текстовых редакторов допускают некоторый уровень пользовательской подсветки синтаксиса с использованием грамматики на основе регулярных выражений.

Например, Sublime Text использует формат .sublime-syntax:

%YAML 1.2 --- # Подсветка языка для пользовательского имени DSL: MyLanguage область: source.mylang переменные: идентификатор: 'w+' контексты: main: - соответствие: {% область: punctuation.section.embedded.begin.mylang - соответствие: {%s*(for) захваты: 1: keyword.control.for.mylang - соответствие: ' область: punctuation.section.embedded.end.mylang 

Это позволяет создавать подсветку для собственных внутренних языков и доменно-специфичных языков.

Пользовательскую подсветку также можно добавлять с помощью плагинов протокола языкового сервера, директив компилятора или путем построения поверх существующего подсветчика. Это требует больше усилий по разработке, но позволяет глубоко настраивать цвета синтаксиса.

Заключение

Вот несколько основных выводов:

  • Подсветка синтаксиса улучшает читаемость и понимание кода.
  • Текстовые редакторы обеспечивают базовую подсветку с настраиваемыми цветами.
  • IDE имеют более продвинутые функции подсветки и интеллект.
  • Веб-подсветка синтаксиса использует HTML, CSS, JavaScript.
  • Динамические подсветки, такие как Jupyter, обновляются по мере ввода текста.
  • Плагины Babel могут добавлять поддержку нового синтаксиса.
  • Полностью настраиваемая подсветка возможна с помощью определений грамматики.

Правильная подсветка синтаксиса помогает сделать код более доступным и понятным как для автора, так и для читателей. Визуальные подсказки помогают в разборе и понимании кода. Подсветка синтаксиса встроена в каждый крупный редактор кода, чтобы обеспечить эти преимущества. Хотя когда-то они были грубыми и ограниченными, современные маркеры настраиваются, интуитивно понятны и сочетают визуальный стиль с семантическим пониманием. Подсветка синтаксиса стала незаменимым инструментом для любого разработчика программного обеспечения.