diff --git a/app-text/ltex-ls/Manifest b/app-text/ltex-ls/Manifest
new file mode 100644
index 0000000..9e7b861
--- /dev/null
+++ b/app-text/ltex-ls/Manifest
@@ -0,0 +1,6 @@
+AUX languagetool.desktop 191 BLAKE2B 726e670645f78c3ea11c788a6440116753d66cf9886155ffa0f9cfad7deab000891276526aea17bae4977472c5d154837fb779de6abdb9cbe47148ce6ff96fe7 SHA512 d54542d4e742e83a7514857a11756f66966a9714f0f7b781aabd635b14cfa4f4d2b0fc1f98b2148af92e469fe877ffb61995c2abe5f59678174eae1d9c3dcbfe
+AUX languagetool.initd 473 BLAKE2B 74f55cfaf5b6c2e2fa166533c031408dc7e2e2b1882e6e09227af38e500f12481a551e8cec166620c73e671f00063cb63cc9dda500355110ff048d806dfa2d77 SHA512 fb9ab4fa28df1f43791995557fc4568ee79f7af7991481d295c28739c975c6648999676ea078ee852dc3dc9f49fbb9945c9dc571c385dd4db3d69ca5bf501623
+AUX logo.svg 2824 BLAKE2B 7653478b44ebd3dc80691849751745aba14a652d1ffaf52ef27910a52fae15b39c9ef0224795f698b1ac6f95a3e677ee46603b29261dff0d50d9eedba5e09de5 SHA512 501e3dee99f762556774f42829a9e450fc412271a7ade87f17ffb211929d24564ea3385b2bfc1c261e46d4b0b3562be62903b111ecd1c7dacb97c3c8ffb0d6d5
+DIST ltex-ls-16.0.0.tar.gz 243227042 BLAKE2B 94b3705e03a5fb6bdf127738d7f539bd28c21e225fb8ddf428a97dd12cbbaa5e7abb440341f3456495a631a32f8d5df070e98159450d53aecef82e3ecb6e22d4 SHA512 660a9763706ef9402c34b05cc7d1f977a848d9b1fb6f268ad5d4f1fca995df7e1cf82724b616a2efe016ca9880c6d7d07cb21132515c04343ab24642d0f73e0d
+EBUILD ltex-ls-16.0.0.ebuild 2677 BLAKE2B 8bfeaa417d2f3a1bdfeade147f42a615451cfbe6ef86092a4e4af3e908876fe1f9683e023acb646dd35befba8758e905a8650b488da4db703ae567771949bde1 SHA512 249f01de15e2ddfe15cb35935e46fc508a01a9243c9c70c487c9e9364f8bfa2f386b4747a415f201e853bf040e906fe5eba7a37446bc50c45e1a402ee322fdb9
+MISC metadata.xml 341 BLAKE2B 079fcdfbb5074cf8f1eb5ae2ebc4c20e4047b8b4f5303e6c30756b87988584c93943d5064d1902deddae2729ea5bb06a4814075b46b05c9f717a49c004052f57 SHA512 f7143d9495597a9a51043c9bc6bdb66e6644982621c1e1802d2ad297a2398d2084c7147eb107f2b67c6ab5c68d53a8f0188bf10c8efc70ef0af102f483afd658
diff --git a/app-text/ltex-ls/files/languagetool.desktop b/app-text/ltex-ls/files/languagetool.desktop
new file mode 100644
index 0000000..fb65a04
--- /dev/null
+++ b/app-text/ltex-ls/files/languagetool.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Name=LanguageTool
+Exec=languagetool-gui
+Type=Application
+Terminal=false
+GenericName=LanguageTool
+Comment=LanguageTool
+StartupNotify=false
+Icon=languagetool
+Categories=Office;
diff --git a/app-text/ltex-ls/files/languagetool.initd b/app-text/ltex-ls/files/languagetool.initd
new file mode 100644
index 0000000..30a72a9
--- /dev/null
+++ b/app-text/ltex-ls/files/languagetool.initd
@@ -0,0 +1,19 @@
+#!/sbin/openrc-run
+# Distributed under the terms of the GNU General Public License v2
+
+depend() {
+ after modules
+}
+
+start() {
+ ebegin "Starting languagetool [server]"
+ start-stop-daemon --start --background --exec /bin/bash /usr/bin/languagetool-server \
+ --config "/etc/languagetool.cfg" --allow-origin "*" --port 8081
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping languagetool [server]"
+ start-stop-daemon --stop --exec /bin/bash /usr/bin/languagetool-server
+ eend $?
+}
diff --git a/app-text/ltex-ls/files/logo.svg b/app-text/ltex-ls/files/logo.svg
new file mode 100644
index 0000000..3bc5b67
--- /dev/null
+++ b/app-text/ltex-ls/files/logo.svg
@@ -0,0 +1,14 @@
+
diff --git a/app-text/ltex-ls/ltex-ls-16.0.0.ebuild b/app-text/ltex-ls/ltex-ls-16.0.0.ebuild
new file mode 100644
index 0000000..de35807
--- /dev/null
+++ b/app-text/ltex-ls/ltex-ls-16.0.0.ebuild
@@ -0,0 +1,94 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+inherit java-pkg-2
+
+DESCRIPTION="LSP language server for LanguageTool supporting LaTeX, Markdown, and others"
+HOMEPAGE="https://valentjn.github.io/ltex/"
+SRC_URI="https://github.com/valentjn/ltex-ls/releases/download/${PV}/${P}.tar.gz"
+
+LICENSE="MPL-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+CP_DEPEND="
+ dev-java/slf4j-api:0
+ dev-java/slf4j-nop:0
+ dev-java/guava:0
+ dev-java/icu4j:0
+ dev-java/jansi:2
+ dev-java/commons-lang:3.6
+ dev-java/commons-logging:0
+ dev-java/commons-text:0
+ dev-java/jackson-core:0
+ dev-java/jackson-annotations:2
+ dev-java/jackson-databind:0
+ dev-java/jaxb-api:2
+ dev-java/jaxb-runtime:4
+ dev-java/picocli:0
+ dev-java/protobuf-java:0
+ dev-java/stax2-api:0
+ dev-java/woodstox-core:0
+ dev-java/json:0
+ dev-java/j2objc-annotations:0
+ dev-java/istack-commons-runtime:0
+ dev-java/hamcrest-core:1.3
+ dev-java/failureaccess:0
+ dev-java/error-prone-annotations:0
+ dev-java/checker-framework-qual:0
+ dev-java/animal-sniffer-annotations:0
+ dev-java/fastinfoset:0
+"
+
+RDEPEND="
+ >=virtual/jre-1.8
+ ${CP_DEPEND}
+"
+
+src_prepare() {
+ default
+
+ rm lib/{slf4j,guava,icu4j,junit,hamcrest-core,FastInfoset,animal-sniffer-annotations}*.jar || die
+ # rm lib/jansi*.jar || die # somewhy removing it causes ltex-ls to stop produce colors/boldness ascii-sequences
+ rm lib/checker-qual-*.jar || die # may cuse breakages. Needs testing.
+ rm lib/{commons-{lang3,text,logging},error_prone_annotations,failureaccess,istack-commons-runtime}*.jar || die
+ rm lib/{j2objc-annotations,jackson,jaxb-api,json,picocli,protobuf-java,stax2-api,woodstox-core}*.jar || die
+
+ mv lib/"${P/x-l/xl}".jar lib/"${PN}".jar || die
+
+ java-pkg-2_src_prepare
+}
+
+src_compile() { :; }
+
+_gen-cp() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ local atom
+ local pat="/(([[:alnum:]+_-]+)-[0-9]+(\.[0-9]+)*[a-z]?(_[[:alnum:]]+)*(-r[0-9]*)?|[[:alnum:]+_-]+):([[:alnum:]+_.-]+)"
+ for atom in ${CP_DEPEND}; do
+ if [[ ${atom} =~ ${pat} ]]; then
+ atom=${BASH_REMATCH[2]:-${BASH_REMATCH[1]}}
+ [[ ${BASH_REMATCH[6]} != 0 ]] && atom+=-${BASH_REMATCH[6]}
+ local regex="(^|\s|,)${atom}($|\s|,)"
+ [[ ${!1} =~ ${regex} ]] || declare -g ${1}+=${!1:+,}${atom}
+ else
+ die "Invalid CP_DEPEND atom ${atom}, ensure a SLOT is included"
+ fi
+ done
+}
+
+src_install() {
+ java-pkg_dojar lib/*.jar
+
+ java-pkg_dolauncher ${PN} --main org.bsplines.ltexls.LtexLanguageServerLauncher
+ # java-pkg_dolauncher ${PN}-cli --main org.bsplines.lspcli.LspCliLauncher
+ # TODO: integrate with json from bin/
+
+ dodoc ACKNOWLEDGMENTS.md README.md
+
+ unset MY_DEPEND
+ _gen-cp MY_DEPEND
+ java-pkg_register-dependency "${MY_DEPEND}"
+}
diff --git a/app-text/ltex-ls/metadata.xml b/app-text/ltex-ls/metadata.xml
new file mode 100644
index 0000000..52eae3d
--- /dev/null
+++ b/app-text/ltex-ls/metadata.xml
@@ -0,0 +1,11 @@
+
+
+
+
+ vim@gentoo.org
+ Gentoo Vim Project
+
+
+ valentjn/ltex-ls
+
+
diff --git a/metadata/md5-cache/app-text/ltex-ls-16.0.0 b/metadata/md5-cache/app-text/ltex-ls-16.0.0
new file mode 100644
index 0000000..192a873
--- /dev/null
+++ b/metadata/md5-cache/app-text/ltex-ls-16.0.0
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install preinst prepare setup
+DEPEND=>=dev-java/java-config-2.2.0-r3
+DESCRIPTION=LSP language server for LanguageTool supporting LaTeX, Markdown, and others
+EAPI=8
+HOMEPAGE=https://valentjn.github.io/ltex/
+INHERIT=java-pkg-2
+KEYWORDS=~amd64 ~x86
+LICENSE=MPL-2.0
+RDEPEND=>=virtual/jre-1.8 dev-java/slf4j-api:0 dev-java/slf4j-nop:0 dev-java/guava:0 dev-java/icu4j:0 dev-java/jansi:2 dev-java/commons-lang:3.6 dev-java/commons-logging:0 dev-java/commons-text:0 dev-java/jackson-core:0 dev-java/jackson-annotations:2 dev-java/jackson-databind:0 dev-java/jaxb-api:2 dev-java/jaxb-runtime:4 dev-java/picocli:0 dev-java/protobuf-java:0 dev-java/stax2-api:0 dev-java/woodstox-core:0 dev-java/json:0 dev-java/j2objc-annotations:0 dev-java/istack-commons-runtime:0 dev-java/hamcrest-core:1.3 dev-java/failureaccess:0 dev-java/error-prone-annotations:0 dev-java/checker-framework-qual:0 dev-java/animal-sniffer-annotations:0 dev-java/fastinfoset:0 >=dev-java/java-config-2.2.0-r3
+SLOT=0
+SRC_URI=https://github.com/valentjn/ltex-ls/releases/download/16.0.0/ltex-ls-16.0.0.tar.gz
+_eclasses_=java-utils-2 e2cdf66cd9c826ccda532772976d342d java-pkg-2 38fd81c7880666a00a638ca8deb64d72
+_md5_=249dfdf0afde7a877639743dee1612da