{"id":13761786,"url":"https://github.com/eclipse-lemminx/lemminx","last_synced_at":"2026-01-15T22:19:56.336Z","repository":{"id":37208606,"uuid":"138315669","full_name":"eclipse-lemminx/lemminx","owner":"eclipse-lemminx","description":"XML Language Server","archived":false,"fork":false,"pushed_at":"2025-12-26T23:51:23.000Z","size":15952,"stargazers_count":323,"open_issues_count":245,"forks_count":106,"subscribers_count":15,"default_branch":"main","last_synced_at":"2026-01-13T04:09:44.677Z","etag":null,"topics":["java","language-server-protocol","ls","xml"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"epl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eclipse-lemminx.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-06-22T15:00:18.000Z","updated_at":"2026-01-11T16:34:28.000Z","dependencies_parsed_at":"2023-02-19T11:16:12.972Z","dependency_job_id":"45b9742e-15cc-4c7e-845d-709fd9e81f90","html_url":"https://github.com/eclipse-lemminx/lemminx","commit_stats":null,"previous_names":["angelozerr/lsp4xml","eclipse-lemminx/lemminx","eclipse/lemminx"],"tags_count":50,"template":false,"template_full_name":null,"purl":"pkg:github/eclipse-lemminx/lemminx","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-lemminx%2Flemminx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-lemminx%2Flemminx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-lemminx%2Flemminx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-lemminx%2Flemminx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eclipse-lemminx","download_url":"https://codeload.github.com/eclipse-lemminx/lemminx/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-lemminx%2Flemminx/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28472626,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-15T22:13:38.078Z","status":"ssl_error","status_checked_at":"2026-01-15T22:12:11.737Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","language-server-protocol","ls","xml"],"created_at":"2024-08-03T14:00:28.431Z","updated_at":"2026-01-15T22:19:56.320Z","avatar_url":"https://github.com/eclipse-lemminx.png","language":"Java","funding_links":[],"categories":["Formats"],"sub_categories":[],"readme":"XML Language Server (LemMinX)\n===========================\n[![Maven](https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Frepo.eclipse.org%2Fcontent%2Frepositories%2Flemminx-releases%2Forg%2Feclipse%2Flemminx%2Forg.eclipse.lemminx%2Fmaven-metadata.xml\u0026style=for-the-badge\u0026logo=apachemaven\u0026logoColor=white\u0026color=informational)](https://repo.eclipse.org/content/repositories/lemminx-releases/org/eclipse/lemminx/org.eclipse.lemminx/)\n[![Eclipse Site](https://img.shields.io/badge/Eclipse%20Site-lemminx-informational?logo=eclipse\u0026style=for-the-badge)](https://download.eclipse.org/lemminx/releases/)\n[![Build Status](https://img.shields.io/jenkins/tests?jobUrl=https%3A%2F%2Fci.eclipse.org%2Flemminx%2Fjob%2Flemminx%2Fjob%2Fmain%2F\u0026style=for-the-badge\u0026logo=jenkins\u0026logoColor=white)](https://ci.eclipse.org/lemminx/job/lemminx/job/main/)\n[![CodeQL Status](https://img.shields.io/github/actions/workflow/status/eclipse/lemminx/codeql-analysis.yml?style=for-the-badge\u0026label=codeql\u0026logo=githubactions\u0026logoColor=white)](https://github.com/eclipse/lemminx/actions/workflows/codeql-analysis.yml?query=branch%3Amain)\n[![LICENSE](https://img.shields.io/github/license/eclipse/lemminx?style=for-the-badge\u0026color=informational)](https://github.com/eclipse/lemminx/blob/main/LICENSE)\n\n**LemMinX** is a XML language specific implementation of the [Language Server Protocol](https://github.com/Microsoft/language-server-protocol)\nand can be used with any editor that supports the protocol, to offer good support for the **XML Language**. The server is based on:\n\n * [Eclipse LSP4J](https://github.com/eclipse/lsp4j), the Java binding for the Language Server Protocol.\n * Xerces to manage XML Schema validation, completion and hover\n\nFeatures\n--------------\n\n* [textDocument/codeAction](https://microsoft.github.io/language-server-protocol/specification#textDocument_codeAction).\n* [textDocument/completion](https://microsoft.github.io/language-server-protocol/specification#textDocument_completion).\n* [textDocument/documentHighlight](https://microsoft.github.io/language-server-protocol/specification#textDocument_documentHighlight).\n* [textDocument/documentLink](https://microsoft.github.io/language-server-protocol/specification#textDocument_documentLink).\n* [textDocument/documentSymbol](https://microsoft.github.io/language-server-protocol/specification#textDocument_documentSymbol).\n* [textDocument/foldingRanges](https://microsoft.github.io/language-server-protocol/specification#textDocument_foldingRange).\n* [textDocument/formatting](https://microsoft.github.io/language-server-protocol/specification#textDocument_formatting).\n* [textDocument/hover](https://microsoft.github.io/language-server-protocol/specification#textDocument_hover).\n* [textDocument/rangeFormatting](https://microsoft.github.io/language-server-protocol/specification#textDocument_rangeFormatting)\n* [textDocument/rename](https://microsoft.github.io/language-server-protocol/specification#textDocument_rename).\n\nSee screenshots in the [Features docs](./docs/Features.md).\n\nSee the [changelog](CHANGELOG.md) for the latest release.\n\n\nDemo\n--------------\n\n![XML Language Server Demo](docs/images/XMLLanguageServerDemo.gif)\n\nGet started\n--------------\n* Clone this repository\n* Open the folder in your terminal / command line\n* Run `./mvnw clean verify` (OSX, Linux) or `mvnw.cmd clean verify` (Windows)\n* After successful compilation you can find the resulting `org.eclipse.lemminx-uber.jar` in the folder `org.eclipse.lemminx/target`\n\nDeveloper\n--------------\n\nTo debug the XML LS you can use XMLServerSocketLauncher:\n\n1. Run the XMLServerSocketLauncher in debug mode (e.g. in eclipse)\n2. Connect your client via socket port. Default port is 5008, but you can change it with start argument `--port` in step 1\n\nClient connection example using Theia and TypeScript:\n\n```js\nlet socketPort = '5008'\nconsole.log(`Connecting via port ${socketPort}`)\nconst socket = new net.Socket()\nconst serverConnection = createSocketConnection(socket,\n    socket, () =\u003e {\n        socket.destroy()\n    });\nthis.forward(clientConnection, serverConnection)\nsocket.connect(socketPort)\n```\n\nGenerating a native binary:\n---------------------------------\nTo generate a native binary:\n- [Install GraalVM](https://www.graalvm.org/docs/getting-started/#install-graalvm),\n  ideally with a tool that allows setting up multiple versions of Java, such as SDKMAN\n- Execute a Maven build that sets the flag `native`: `./mvnw clean package -Dnative -DskipTests`\n  - On Linux, compile with `./mvnw clean package -Dnative -DskipTests -Dgraalvm.static=--static`\n    in order to support distributions that don't use `glibc`, such as Alpine Linux\n- It will generate a native binary in `org.eclipse.lemminx/target/lemminx-{os.name}-{architecture}-{version}`\n\nOS specific instructions:\n- __Linux__:\n  - Make sure that you have installed the static versions of the C++ standard library\n    - For instance, on Fedora Linux, install `glibc-static`, `libstdc++-static`, and `zlib-static`\n- __Windows__:\n  - Make sure to run the Maven wrapper in the \"Native Tools Command Prompt\".\n  This command prompt can be obtained through installing the Windows SDK or Visual Studio, as\n  mentioned in the [GraalVM installation instructions](https://www.graalvm.org/docs/getting-started-with-graalvm/windows/).\n\n`native-image` Development Instructions:\n- Reflection:\n  - If you need to use reflection to access a private field/method, simply register the field/methods that you access in `reflect-config.json`\n  - If you need to parse some JSON using Gson, make sure to register the fields and methods of the class that you are parsing into in `reflect-config.json`\n    - This needs to be done recursively, for all classes that it has member variables of, including `enum`s\n    - Settings are all deserialized, so whenever a setting is added, make sure to register the classes\n  - Manually test the binary and check the logs for reflection errors/NPEs\n\nMaven coordinates:\n------------------\n\nHere are the Maven coordinates for lemminx (replace the `X.Y.Z` version with the [latest release](https://repo.eclipse.org/content/repositories/lemminx-releases)):\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003eorg.eclipse.lemminx\u003c/groupId\u003e\n    \u003cartifactId\u003eorg.eclipse.lemminx\u003c/artifactId\u003e\n    \u003cversion\u003eX.Y.Z\u003c/version\u003e\n    \u003c!-- classifier:uber includes all dependencies --\u003e\n    \u003cclassifier\u003euber\u003c/classifier\u003e\n\u003c/dependency\u003e\n```\n\nfor Gradle:\n```\ncompile(group: 'org.lemminx', name: 'org.eclipse.lemminx', version: 'X.Y.Z', classifier: 'uber')\n```\n\nYou will have to reference the Maven repository hosting the dependency you need. E.g. for Maven, add this repository to your pom.xml or settings.xml :\n```xml\n\u003crepository\u003e\n  \u003cid\u003elemminx-releases\u003c/id\u003e\n  \u003curl\u003ehttps://repo.eclipse.org/content/repositories/lemminx-releases/\u003c/url\u003e\n  \u003csnapshots\u003e\n    \u003cenabled\u003efalse\u003c/enabled\u003e\n  \u003c/snapshots\u003e\n  \u003creleases\u003e\n    \u003cenabled\u003etrue\u003c/enabled\u003e\n  \u003c/releases\u003e\n\u003c/repository\u003e\n```\n\nAnd if you want to consume the SNAPSHOT builds instead:\n```xml\n\u003crepository\u003e\n  \u003cid\u003elemminx-snapshots\u003c/id\u003e\n  \u003curl\u003ehttps://repo.eclipse.org/content/repositories/lemminx-snapshots/\u003c/url\u003e\n  \u003creleases\u003e\n    \u003cenabled\u003efalse\u003c/enabled\u003e\n  \u003c/releases\u003e\n  \u003csnapshots\u003e\n    \u003cenabled\u003etrue\u003c/enabled\u003e\n  \u003c/snapshots\u003e\n\u003c/repository\u003e\n```\n\nVerify 3rd Party Libraries\n----------------------------\n\n_Currently generating the IP Log report requires a Java Runtime Environment (JRE) \u003e= 11._\n\nRun `./mvnw clean verify -Pverify-iplog` to generate a report for the 3rd party libraries used by this project. See the [Eclipse Project Handbook](https://www.eclipse.org/projects/handbook/#ip-license-tool) for further details.\n\n\nClients\n-------\n\nHere are some clients consuming this XML Language Server:\n\n * Eclipse IDE with [Wild Web Developer](https://github.com/eclipse/wildwebdeveloper) and [m2e](https://www.eclipse.org/m2e/)\n * VSCode with [vscode-xml](https://github.com/redhat-developer/vscode-xml)\n * Theia with [theia-xml](https://github.com/theia-ide/theia-xml-extension)\n * [Spring Tools 4](https://github.com/spring-projects/sts4) - re-using the XML parser for Spring-specific analysis and content-assist\n * Vim/Neovim with [coc-xml](https://github.com/fannheyward/coc-xml)\n * Emacs with [lsp-mode](https://github.com/emacs-lsp/lsp-mode)\n\n\nExtensions\n----------\n\nThe XML Language Server can be extended to provide additional validation and assistance. Read the [LemMinX-Extensions docs](./docs/LemMinX-Extensions.md) for more information\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse-lemminx%2Flemminx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feclipse-lemminx%2Flemminx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse-lemminx%2Flemminx/lists"}