From 20ea02478ee6967ccbfd1fb5a2af4f5cc1ec6d85 Mon Sep 17 00:00:00 2001 From: Julian Valentin Date: Sun, 4 Jul 2021 07:58:24 +0200 Subject: [PATCH] Make LatexCommandSignature check for end of string Fixes valentjn/vscode-ltex#341. --- CHANGELOG.md | 1 + .../bsplines/ltexls/parsing/latex/LatexCommandSignature.java | 2 ++ .../ltexls/parsing/latex/LatexAnnotatedTextBuilderTest.java | 3 +++ 3 files changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e4819486..9a67b67b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ ## 12.2.1 (upcoming) +- Fix error when checking LATEX documents ending with specific commands (fixes [vscode-ltex#341](https://github.com/valentjn/vscode-ltex/issues/341)) - Fix name of Portuguese babel language names, add support for Brazilian Portuguese babel language names (fixes [#72](https://github.com/valentjn/ltex-ls/issues/72)) ## 12.2.0 (June 5, 2021) diff --git a/ltexls/src/main/java/org/bsplines/ltexls/parsing/latex/LatexCommandSignature.java b/ltexls/src/main/java/org/bsplines/ltexls/parsing/latex/LatexCommandSignature.java index 7b9fe4dd..92aa8667 100644 --- a/ltexls/src/main/java/org/bsplines/ltexls/parsing/latex/LatexCommandSignature.java +++ b/ltexls/src/main/java/org/bsplines/ltexls/parsing/latex/LatexCommandSignature.java @@ -104,12 +104,14 @@ public LatexCommandSignature(String commandPrototype, Action action, } private static String matchPatternFromPosition(String code, int fromPos, Pattern pattern) { + if (fromPos >= code.length()) return ""; Matcher matcher = pattern.matcher(code.substring(fromPos)); return (matcher.find() ? matcher.group() : ""); } public static String matchArgumentFromPosition( String code, int fromPos, ArgumentType argumentType) { + if (fromPos >= code.length()) return ""; int pos = fromPos; char openChar = '\0'; diff --git a/ltexls/src/test/java/org/bsplines/ltexls/parsing/latex/LatexAnnotatedTextBuilderTest.java b/ltexls/src/test/java/org/bsplines/ltexls/parsing/latex/LatexAnnotatedTextBuilderTest.java index ae679640..697807cd 100644 --- a/ltexls/src/test/java/org/bsplines/ltexls/parsing/latex/LatexAnnotatedTextBuilderTest.java +++ b/ltexls/src/test/java/org/bsplines/ltexls/parsing/latex/LatexAnnotatedTextBuilderTest.java @@ -131,6 +131,9 @@ public void testTextMode() { "This is a test: Dummy0, Dummy1, Dummy2. " + "Dummies shows that this should be plural. " + "Dummies proves another error. "); + assertPlainText( + "\\cites{test}", + "Dummies"); assertPlainText( "This is a test, \\egc an actual test \\eg{} test.\n" + "This is a test, \\iec an actual test \\ie{} test.\n",