Я все еще использую Perl, немного нового кода и поддерживаю старый код.Я использую emacs и cperl-mode.Мне нравится раскраска синтаксиса.
Сначала (много лет назад) я не любил специальную раскраску массивов и хэшей в cperl-mode, но она выросла на мне.До такой степени, что я иногда предпочитаю использовать хеш, а не ссылку на хеш, просто чтобы получить специальную раскраску.Это может звучать не так уж плохо - но если я допускаю, что иногда использую глобальный% hash или $ hash {key}, а не член объекта $ hashref -> {key}, просто чтобы получить раскраску, ну, это плохо.Т.е. раскраска синтаксиса заставляет меня хотеть следовать плохим практикам программирования.
Итак, мой вопрос: есть ли у кого-нибудь код конфигурации emacs / elisp для получения cperl-mode или perl-mode для раскрашивания ссылки на хеш, такой как $ hashref-> {key} в том же самом или похожем на $ hash {key}?
Позвольте мне использовать жирный шрифт, чтобы указать места, которые могут быть окрашены:
- cperl-mode делает это сейчас: $ hash {key}
- что я хотел бы: $ hash -> {key}
Я сделал большую настройкураскраски (граней) в emacs - например, раскраска, чтобы отличить код DEBUG от кода без отладки, TEST от не тестового и т. д. - но мне не удалось получить эту раскраску синтаксиса в режиме cperl-mode.(ПОСЛЕДОВАТЕЛЬНО: Я в итоге получил работоспособность font-lock-add-Keywords, как показано в моем ответе на мой собственный вопрос ниже.)
В приведенном ниже примере вы можете видеть, что $ hashref -> {key} не окрашен, в то время как $ hash {key} есть.
Аналогично для ссылок на массивы и, возможно, для других ссылок.
Я понимаю, что ссылки на раскраски будут применяться только к разыменованиям, таким как $ hashref-> {ключ}, а не для других вещей, таких как $ hashref1 = $ hashref2.Я думаю, что я могу жить с этим.