остановить форматирование кода путем изменения AST в Eclipse CDT - PullRequest
0 голосов
/ 30 октября 2018

Я редактирую треску прагматично, редактируя AST в Eclipse CDT, ставя после выполнения рефакторинга с использованием метода Change # execute, я нашел код для форматирования, пример здесь, я просто приведу вызов функции как void

//Old code
Publish(Author_id, Content);

//New code
(void) Publish(
                Author_id,
                Content);

Как видите, метод был отформатирован в 3 строки, как остановить это действие ?

Мой пример кода, который делает рефакторинг

            INodeFactory factory = ast.getASTNodeFactory();     
            IASTNode newNode = rewriter.createLiteralNode("( void )"+selectedNode.getRawSignature());
            rewriter.replace(selectedNode, newNode, null);
            Change change = rewriter.rewriteAST();
            change = change.perform(new NullProgressMonitor());

1 Ответ

0 голосов
/ 31 октября 2018

Я полагаю, у вас есть два варианта:

  1. Настройте встроенный форматер CDT для форматирования кода так, как вам нравится. В этом случае, основываясь на появлении «Нового кода», похоже, что в строке Wrapping -> Function calls -> Arguments -> Line wrapping policy установлен один из параметров «Обтекать все элементы». Вы можете изменить его на то, что вам больше нравится.

  2. Реализуйте точку расширения org.eclipse.cdt.core.CodeFormatter, чтобы обеспечить альтернативный форматер, который ведет себя не так, как стандартный кодировщик кода (например, он может ничего не делать).

    ОБНОВЛЕНИЕ : Я не знаю, где найти пример этого, но, если вы знакомы с реализацией точек расширения Eclipse в целом, вот ссылка для этого один. Шаги будут:

    1. Напишите класс, который расширяет org.eclipse.cdt.core.formatter.CodeFormatter и реализует метод format()
    2. Добавьте <extension ...> тег к вашему плагину plugin.xml, ссылающийся на ваш класс
...