ec4j
is an EditorConfig implementation for Java. It provides:
-
A parser for
.editorconfig
files -
An API for querying EditorConfig properties applicable to a given file
-
A model of an
editorconfig
file rich enough to support validation, folding, code completion, etc. of.editorconfig
files 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 indentChar
Prerequisites:
-
Java 8+
-
Optionally Maven 3.6.1+, unless you want to use
./mvnw
ormvnw.bat
delivered by the project -
cmake 2.6+ to run the editorconfig-core-test testsuite (optional).
The most common build with unit tests:
./mvnw clean install
On Windows:
mvnw.bat clean install
A 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
.editorconfig
file -
EditorConfigParser and EditorConfigHandler interface designed to support syntax highlighting, validation, folding, etc. of
.editorconfig
files in IDEs. -
ec4j
is available on Maven Central -
ec4j
performs better against the editorconfig-core test suite:Library
Lib. revision
Tests passed/total on Linux
Tests passed/total on Windows
ec4j
fa51d88
189/189
185/187
editorconfig-core-java
e3e0905
185/189
?
editorconfig-core-test
revision: 0001aa2
-
All code and contributions are under Apache License
-
Issues and Discussions: https://github.com/ec4j/ec4j/issues
-
The
ec4j/ec4j
repository is the reference repository for contributing toec4j
.