ec4j is an EditorConfig implementation for Java. It provides:
- 
A parser for .editorconfigfiles
- 
An API for querying EditorConfig properties applicable to a given file 
- 
A model of an editorconfigfile rich enough to support validation, folding, code completion, etc. of.editorconfigfiles in editors and IDEs.
Here are some projects that use ec4j:
- 
EditorConfig for Eclipse based on GenericEditor and tm4e. 
Add the following dependency to your project:
<dependency>
  <groupId>org.ec4j.core</groupId>
  <artifactId>ec4j-core</artifactId>
  <version><!-- check the latest on http://central.maven.org/maven2/org/ec4j/core/ec4j-core/ --></version>
</dependency>To parse a single .editorconfig file into an EditorConfig model:
java.nio.file.Path editorConfigFile = Paths.get("path/to/my/.editorconfig");
EditorConfigParser parser = EditorConfigParser.builder().build();
EditorConfigModelHandler handler = new EditorConfigModelHandler(PropertyTypeRegistry.default_(), Version.CURRENT);
parser.parse(Resources.ofPath(editorConfigFile, StandardCharsets.UTF_8), handler, ErrorHandler.THROW_SYNTAX_ERRORS_IGNORE_OTHERS);
EditorConfig editorConfig = handler.getEditorConfig();To query the properties applicable to a file in a source tree:
Cache myCache = ...; // e.g. Caches.permanent()
EditorConfigLoader myLoader = ...; // e.g. EditorConfigLoader.default_()
ResourcePropertiesService propService = ResourcePropertiesService.builder()
        .cache(myCache)
        .loader(myLoader)
        .rootDirectory(ResourcePaths.ofPath(Paths.get("/my/dir"), StandardCharsets.UTF_8))
        .build();
ResourceProperties props = propService.queryProperties(Resources.ofPath(Paths.get("/my/dir1/Class1.java"), StandardCharsets.UTF_8));
IndentStyleValue indentStyleValue = props.getValue(PropertyType.indent_style, IndentStyleValue.space, true);
char indentChar = indentStyleValue.getIndentChar();
// Now you can e.g. check that /my/dir1/Class1.java is indented using indentCharPrerequisites:
- 
Java 7+ 
- 
Optionally Maven 3.5.0+, unless you want to use ./mvnwormvnw.batdelivered by the project
- 
cmake 2.6+ to run the editorconfig-core-test testsuite (optional). 
The most common build with unit tests:
./mvnw clean installOn Windows:
mvnw.bat clean installA build with editorconfig-core-test testsuite:
git submodule init
git submodule update
mvn -Pcore-test clean install && ( cd core && cmake . && ctest . )The authors of ec4j decided to start ec4j because they were unsuccessful with their proposals in
editorconfig-core-java.
Although ec4j is not a fork of editorconfig-core-java it uses a few portions of code from
editorconfig-core-java. Such ones are clearly marked in ec4j 's JavaDoc.
ec4j aims at offering a superset of
editorconfig-core-java 's functionality.
While editorconfig-core-java supports just the basic use case of querying the EditorConfig properties
applicable to a given file, ec4j offers much more in addition to that:
- 
A proper model of an .editorconfigfile
- 
EditorConfigParser and EditorConfigHandler interface designed to support syntax highlighting, validation, folding, etc. of .editorconfigfiles in IDEs.
- 
ec4jis available on Maven Central
- 
ec4jperforms better against the editorconfig-core test suite:Library Lib. revision Tests passed/total on Linux Tests passed/total on Windows ec4jfa51d88 189/189 185/187 editorconfig-core-javae3e0905 185/189 ? editorconfig-core-testrevision: 0001aa2
- 
All code and contributions are under Apache License 
- 
Issues and Discussions: https://github.com/ec4j/ec4j/issues 
- 
The ec4j/ec4jrepository is the reference repository for contributing toec4j.
- 
Continuous integration is performed for each pull request by Travis CI on Linux and by AppVeyor on Windows.