From 1a3a9fb8768ef16468bd824080a0a4ee638e70b0 Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Mon, 19 Sep 2022 21:29:18 +0530 Subject: [PATCH] Added edit handler for attribute values --- .../lsp/xml/edits/AttrValueEditHandler.kt | 32 +++++++++++++++++++ .../completion/IXmlCompletionProvider.kt | 4 ++- 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 lsp/xml/src/main/java/com/itsaky/androidide/lsp/xml/edits/AttrValueEditHandler.kt diff --git a/lsp/xml/src/main/java/com/itsaky/androidide/lsp/xml/edits/AttrValueEditHandler.kt b/lsp/xml/src/main/java/com/itsaky/androidide/lsp/xml/edits/AttrValueEditHandler.kt new file mode 100644 index 000000000..7ec7b7777 --- /dev/null +++ b/lsp/xml/src/main/java/com/itsaky/androidide/lsp/xml/edits/AttrValueEditHandler.kt @@ -0,0 +1,32 @@ +/* + * This file is part of AndroidIDE. + * + * AndroidIDE is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AndroidIDE is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with AndroidIDE. If not, see . + */ + +package com.itsaky.androidide.lsp.xml.edits + +import com.itsaky.androidide.lsp.edits.DefaultEditHandler + +/** + * Handles insertion of attribute values. + * + * @author Akash Yadav + */ +class AttrValueEditHandler : QualifiedValueEditHandler() { + + override fun isPartialPart(c: Char): Boolean { + return super.isPartialPart(c) || c in charArrayOf('@', '.', ':', '/') + } +} \ No newline at end of file diff --git a/lsp/xml/src/main/java/com/itsaky/androidide/lsp/xml/providers/completion/IXmlCompletionProvider.kt b/lsp/xml/src/main/java/com/itsaky/androidide/lsp/xml/providers/completion/IXmlCompletionProvider.kt index 7d8ab3d18..faf1efec0 100644 --- a/lsp/xml/src/main/java/com/itsaky/androidide/lsp/xml/providers/completion/IXmlCompletionProvider.kt +++ b/lsp/xml/src/main/java/com/itsaky/androidide/lsp/xml/providers/completion/IXmlCompletionProvider.kt @@ -34,6 +34,7 @@ import com.itsaky.androidide.lsp.models.CompletionResult import com.itsaky.androidide.lsp.models.InsertTextFormat.PLAIN_TEXT import com.itsaky.androidide.lsp.models.InsertTextFormat.SNIPPET import com.itsaky.androidide.lsp.models.MatchLevel +import com.itsaky.androidide.lsp.xml.edits.AttrValueEditHandler import com.itsaky.androidide.lsp.xml.edits.QualifiedValueEditHandler import com.itsaky.androidide.lsp.xml.edits.TagEditHandler import com.itsaky.androidide.lsp.xml.utils.XmlUtils.NodeType @@ -216,7 +217,8 @@ abstract class IXmlCompletionProvider(private val provider: ICompletionProvider) this.overrideTypeText = type.uppercase() this.sortText = if (pck == ResourceTableRegistry.PCK_ANDROID) "zzz$text" else text this.insertText = text - this.editHandler = QualifiedValueEditHandler() + this.insertTextFormat = PLAIN_TEXT + this.editHandler = AttrValueEditHandler() this.matchLevel = matchLevel } }