Я ищу многоязычный редактор исходного кода/улучшитель/симпатичный принтер. Установка и управление отдельным инструментом для каждого языка требует много времени.
Он должен поддерживать
Он должен работать в Linux, и я хотел бы избежать онлайн-решений и программного обеспечения с закрытым исходным кодом.
Наиболее независимое от языка решение, которое я нашел до сих пор, — это clang-format, который поддерживает C/C++, Java, JavaScript, Objective-C и Protobuf .
В качестве альтернативы, GNU source-highlight и Pygments утверждают, что поддерживают множество языков, но мне не ясно, могут ли они также переформатировать исходный код, который они обрабатывают, и распечатать его в формате stdout
.
Например, я пробовал:
source-highlight --lang-def=nohilite.lang --output=STDOUT -i test.c
и он просто выводит исходный файл, окруженный некоторыми тегами HTML.
Вы можете взглянуть на CodeMirror 2 , который соответствует 90%-95% ваших требований и может быть расширен, чтобы соответствовать остальным :
Надеюсь, если вы добавите дополнительные языки, вы вернете их обратно в проект.
Обратите внимание, что pygments — это средство подсветки кода, а не инструмент переформатирования, он не предназначен для этого.
Пакет python pygments при установке с:
pip install -U pygments
или в Linux:
sudo pip install -U pygments
Добавляет команду pygmentize
, которая может выводить в html или на терминал с поддержкой цвета , тестируя файл python, со стилем вывода по умолчанию и автоопределением:
Python и пигменты:
Проверка моей установленной версии на наличие поддерживаемых лексеров дает более 300 поддерживаемых языков и/или вариантов, которых должно быть достаточно для большинства людей:
Pygments version 2.1.3, (c) 2006-2015 by Georg Brandl.
;
в строке и фигурными скобками в неправильных местах?pygmentize
, как было предложено, но, похоже source-highlight
, код не переформатируется, а просто добавляется выделение цветом (пробовал с файлами исходного кода C и Python).Наше семейство форматировщиков исходного кода охватывает широкий спектр языков. Они основаны на точном (специфическом для диалекта) анализе исходного языка в AST и регенерации кода из AST. Этот вид переформатирования никогда не нарушает переформатированный код с точки зрения компиляции или функциональности. (Существуют форматтеры для взлома строк, которые могут сломать ваш код; они выглядят великолепно, пока вы не обнаружите, что отлаживаете отформатированный код, который раньше работал).
Переформатирование обрабатывает «выровненную по левому краю Java с плохо размещенным {}» (и аналоги для других языков), как это предлагается в качестве разумного требования в комментарии к одному из других ответов.
Они обязательно строятся как отдельные объекты, потому что
Как это отвечает «требованиям» OP:
Поскольку эти средства форматирования являются продуктами моей компании, не воспринимайте мой ответ как рекомендацию. Я просто документирую их существование.
директор
Томас Веллер
Ира Бакстер
Стив Барнс