Подсветка синтаксиса Intellij javascript и php в одном файле

#php #javascript #intellij-idea

#php #javascript #intellij-идея

Вопрос:

У меня есть файл JavaScript, в котором должны быть некоторые теги PHP. Что-то вроде этого:

 var chart = {
  init: function() {
    ...
    drawChart(this.data);
    ...
  },

  data: <?php echo $this->data ?>
}
 

Очевидно, что результат представляет собой чистый файл JavaScript, и функционально он работает нормально. Однако IntelliJ неправильно выделяет код. Если я назову файл с расширением .js, он начнет показывать ошибки, как только он пересекается с тегом PHP. Если я назову файл с расширением .php, он не покажет никаких синтаксических ошибок, но не выделит ни один из JavaScript, только PHP.

Я знаю, что он способен это сделать, потому что я могу назвать файл с расширением .php и окружить весь код <script> тегами, и все будет правильно выделено. К сожалению, это нарушило бы работу моего приложения.

Кто-нибудь знает способ, которым я могу заставить подсветку работать для обоих языков без script тегов?

Комментарии:

1. Это потому, что файл .js традиционно не анализируется PHP на веб-сервере. Предполагается, что это чистый javascript. Кроме того, на самом деле нет такого понятия, как «php-скрипт» — есть просто файлы, в которые встроен один или несколько блоков кода PHP. ЛЮБОЙ файл может быть файлом php, если блоки <?php and ?> не используются для других целей.

2. Не уверен насчет IntelliJ IDEA, но большинство редакторов предполагают, что не PHP-код в PHP-скрипте — это HTML. Хотя это часто безопасное предположение, было бы здорово, если бы это не было жестко запрограммированным вариантом.

3. Включен ли у вас IntelliLang. Вы пробовали намерение «внедрить язык»?

4. Я изучил намерение «Внедрить язык», но все, что я видел, похоже, указывает на то, что это работает только для строковых литералов. Я хочу вывести то, что будет выглядеть как жестко закодированный массив javascript из php, а не строку javascript.

5. это: confluence.jetbrains.com/display/PhpStorm /…