Подсветка синтаксиса для Java
-
13-09-2019 - |
Вопрос
Как вы знаете, для PHP существует подсветка синтаксиса, которая называется Геши который поддерживает большое количество языков программирования или форматов кода.
Однако я не смог найти такую библиотеку для Java, которая поддерживала бы языки программирования, которые мне нужны (ADA, ASP, BNF, Bash, Brainfuck, C, C ++, C #, CSS, Cobol, ColdFusion, D, Fortran, Haskell, HTML, INI (Config), Java, JavaScript, Lisp, Make, Objective C, PASCAL, Perl, PHP, PLSQL, Prolog, Python, Ruby, Scheme, SQL, VB.NET , Verilog, VHDL, Visual Basic, XML.)
Знаете ли вы один или я должен предпочесть неэффективный способ, который извлекает выделенный код с удаленного PHP-сервера через http-транзакцию?Есть какие-нибудь идеи?
Спасибо.
Решение
Два взаимосвязанных вопроса:
Какие библиотеки выделения кода существуют для Java? Где я могу найти библиотеку подсветки синтаксиса для Java?
И одна библиотека, которую я нашел: http://colorer.sourceforge.net/
Другие советы
Взгляните на Джиглигер или Синтаксический пакет jEdit.Все упомянутые языки не поддерживаются "из коробки".Однако у вас есть исходники, так что, я думаю, должна быть возможность добавить языковую поддержку.
Не прямой ответ, но, если подсветка синтаксиса на стороне клиента является опцией, Синтаксис более высокий библиотека от Alex Gorbatchev - это потрясающая библиотека javascript, поддерживающая множество языки и является весьма расширяемый.
Вы могли бы использовать Пигменты через Jython.Это будет не так быстро, как решение Java, но намного быстрее, чем взаимодействие с удаленным сервером.
Исключая это, вы могли бы запустить Geshi локально и передавать исходный код через него, что также обошлось бы без обхода HTTP.
Кажется, что можно запустить Геши из Java: GeSHi4J Геши4j похоже, это оболочка, которая запускает библиотеку PHP на JVM.
Существует порт prettify.js для Java: java-приукрасить.
Его можно использовать для создания HTML (вычисляемого на Java), как я обсуждал здесь:Используйте анализатор java-prettify для создания HTML
джедай это текстовый редактор с поддержкой подсветки синтаксиса для более чем 170 языков с помощью "режимов".Это также позволяет вам указывать свои собственные синтаксисы.Вы можете использовать компонент StandaloneTextArea в своем собственном приложении следующим образом:
- Источник извлечения (например:jedit4.3source.tar.bz2 для d:\source\jedit )
Используйте ant для копирования всех файлов текстовой области в ..\текстовая область, например:
D:\Source\jedit\jEdit > муравьиная подготовка-текстовая область
Однако в нем отсутствует файл BufferUndoListener.java .Скопируйте это вручную, выполнив
D:\Source\jedit\jEdit > копировать org\gjt\sp\jedit\buffer\BufferUndoListener.java ..\текстовая область\src\org\gjt\sp\jedit\buffer\
В Eclipse создайте Java-проект из существующего исходного кода в каталоге D:\Source\jedit extarea
- Перейдите в org.gjt.sp.jedit.textarea.StandaloneTextArea.java
- Измените строку
mode.setProperty("file","modes/xml.xml");
Для
mode.setProperty("file","src/modes/xml.xml");
- Беги.Скопируйте и вставьте XML-файл в редактор и посмотрите, работает ли подсветка синтаксиса.
Вот пара хайлайтеров, которые работают действительно хорошо::
Оба они просты в реализации на стороне клиента и поддерживают широкий спектр языков.У них также есть большой выбор css-тем, которые делают код похожим на ваш любимый редактор.