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.