Доброго времени. Пишу свой линтер для кастомного языка. Линтер написан на JS, а плагин для IDE общается с ним через командную строку.
Сперва я отправлял в линтер только путь файла, но потом выяснилось чт IDE сохраняет файл не сразу, и то что было в редакторе, не всегда соответствовало тому, что есть в файле.
Я решил отправлять в линтер содержимое файла в момент редактирования из редактора.
Примерно так
import com.intellij.execution.configurations.GeneralCommandLine;
...
GeneralCommandLine commandLine = new GeneralCommandLine();
commandLine.withCharset(StandardCharsets.UTF_8)
.setWorkDirectory(cwd);
commandLine.setExePath(StylusLinterExe);
commandLine.addParameter(file);
if (StringUtils.isNotEmpty(content)) {
commandLine.addParameter("--content");
commandLine.addParameter(content);
}
Это отлично работает на маке, но в widows в параметр content попадает только одна строчка - самая первая.
Нужно как-то экранировать переносы строк.
Дело в том что Java я не силен. Подскажите пожалуйста. На ум пришло только заменить все переносы на какую-то последовательность символов а на js заменить обратно, но это такое себе решение.