JDT로 일부 클래스를 생성 중입니다. Ctrl + Shift + F (소스> 포맷)를 선택하지 않고 열린 편집기에서 누른 것처럼 전체 ICompilationUnit을 포맷하고 싶습니다.JDT로 프로그래밍 방식으로 소스 코드 서식 지정
프로그래밍 방식으로 소스 코드를 형식화하기위한 JDT의 API에 대한 모든 포인터는 높이 평가됩니다.
추가 : 이렇게 시도했지만 코드는 변경되지 않았습니다. 내가 무슨 짓을하는거야?
private void formatUnitSourceCode(ICompilationUnit targetUnit, IProgressMonitor monitor) throws JavaModelException {
CodeFormatter formatter = ToolFactory.createCodeFormatter(null);
TextEdit formatEdit = formatter.format(CodeFormatter.K_COMPILATION_UNIT, targetUnit.getSource(), 0, targetUnit.getSource().length(), 0, null);
targetUnit.applyTextEdit(formatEdit, monitor);
}
이 도움이 파일을 자바 소스의 형식을 다음과 같은 방법을 사용하지만, 모든 해결 우아하게 넣은 사람은 아니다 :
서식 자체는 다음과 같이 이루어집니다 원하는 형식의 I. e. 많은 매개 변수로 긴 메소드 선언을 수동으로 중단해야합니다. –
매우 흥미로운 문제. 나는 네가하는 일을보고, 나는 나의 대답을 편집했다. 감사. – Ryan
안녕하세요. Ryan, 위의 코드를 변경하여'CodeFormatter.K_UNKNOWN'을 사용했지만 위의 코드는 작동하지 않았습니다. 그런 다음'targetUnit.applyTextEdit' ('ICompilationUnit'의 내부 'IDocument'에'apply()'를 호출 한 후'targetUnit.getSource()'를 확인했습니다. 이상하게도 변경 사항이 적용된 것처럼 보입니다. 그러나 파일에는 적용되지 않습니다. 이 버그입니까, 아니면 뭔가 빠졌습니까? –