diff --git a/editor/src/main/java/com/itsaky/androidide/editor/adapters/CompletionListAdapter.kt b/editor/src/main/java/com/itsaky/androidide/editor/adapters/CompletionListAdapter.kt index 5316950a7..9a9a37b22 100755 --- a/editor/src/main/java/com/itsaky/androidide/editor/adapters/CompletionListAdapter.kt +++ b/editor/src/main/java/com/itsaky/androidide/editor/adapters/CompletionListAdapter.kt @@ -74,7 +74,7 @@ class CompletionListAdapter : EditorCompletionAdapter() { convertView?.let { LayoutCompletionItemBinding.bind(it) } ?: LayoutCompletionItemBinding.inflate(LayoutInflater.from(context), parent, false) val item = getItem(position) as LspCompletionItem - val label = item.getLabel() + val label = item.ideLabel val desc = item.detail var type: String? = item.completionKind.toString() val header = if (type!!.isEmpty()) "O" else type[0].toString() diff --git a/editor/src/main/java/com/itsaky/androidide/editor/language/groovy/GroovyAutoComplete.java b/editor/src/main/java/com/itsaky/androidide/editor/language/groovy/GroovyAutoComplete.java index d117aa23e..e15119ae7 100755 --- a/editor/src/main/java/com/itsaky/androidide/editor/language/groovy/GroovyAutoComplete.java +++ b/editor/src/main/java/com/itsaky/androidide/editor/language/groovy/GroovyAutoComplete.java @@ -383,7 +383,7 @@ public class GroovyAutoComplete { private CompletionItem createCompletionItem(String itemLabel) { CompletionItem item = new CompletionItem(); - item.setLabel(itemLabel); + item.setIdeLabel(itemLabel); item.setDetail(""); item.setInsertText(itemLabel); item.setIdeSortText("0" + itemLabel); diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/providers/completion/IJavaCompletionProvider.kt b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/providers/completion/IJavaCompletionProvider.kt index 26d20f8bb..1fe458b49 100644 --- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/providers/completion/IJavaCompletionProvider.kt +++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/providers/completion/IJavaCompletionProvider.kt @@ -151,7 +151,7 @@ abstract class IJavaCompletionProvider( abortIfCancelled() abortCompletionIfCancelled() val item = JavaCompletionItem() - item.setLabel(keyword) + item.ideLabel = keyword item.completionKind = KEYWORD item.detail = "keyword" item.ideSortText = keyword @@ -170,10 +170,10 @@ abstract class IJavaCompletionProvider( abortCompletionIfCancelled() val first = overloads[0] val item = JavaCompletionItem() - item.setLabel(first.simpleName.toString()) + item.ideLabel = first.simpleName.toString() item.completionKind = CompletionItemKind.METHOD item.detail = printMethodDetail(first) - item.ideSortText = item.label.toString() + item.ideSortText = item.ideLabel item.matchLevel = matchLevel item.overrideTypeText = EditHelper.printType(first.returnType) val data = data(task, first, overloads.size) @@ -221,11 +221,11 @@ abstract class IJavaCompletionProvider( abortIfCancelled() abortCompletionIfCancelled() val item = JavaCompletionItem() - item.setLabel(element.simpleName.toString()) + item.ideLabel = element.simpleName.toString() item.completionKind = kind(element) item.detail = element.toString() item.data = data(task, element, 1) - item.ideSortText = item.label.toString() + item.ideSortText = item.ideLabel item.matchLevel = matchLevel if (element is VariableElement) { @@ -251,10 +251,10 @@ abstract class IJavaCompletionProvider( abortIfCancelled() abortCompletionIfCancelled() val item = JavaCompletionItem() - item.setLabel(simpleName(className).toString()) + item.ideLabel = simpleName(className).toString() item.completionKind = CompletionItemKind.CLASS item.detail = packageName(className).toString() - item.ideSortText = item.label.toString() + item.ideSortText = item.ideLabel item.matchLevel = matchLevel item.data = ClassCompletionData(className) @@ -284,7 +284,7 @@ abstract class IJavaCompletionProvider( packageName = " " } return JavaCompletionItem().apply { - setLabel(simpleName) + this.ideLabel = simpleName this.detail = packageName this.insertText = simpleName this.completionKind = MODULE @@ -300,7 +300,7 @@ abstract class IJavaCompletionProvider( indent: Int ): CompletionItem { return JavaCompletionItem().apply { - this.label = snippet.prefix + this.ideLabel = snippet.prefix this.detail = snippet.description this.completionKind = CompletionItemKind.SNIPPET this.matchLevel = matchLevel diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/providers/completion/ScopeCompletionProvider.kt b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/providers/completion/ScopeCompletionProvider.kt index 268f1f3b1..4a5a917aa 100644 --- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/providers/completion/ScopeCompletionProvider.kt +++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/providers/completion/ScopeCompletionProvider.kt @@ -169,10 +169,10 @@ class ScopeCompletionProvider( abortCompletionIfCancelled() val item = JavaCompletionItem() - item.setLabel(methodSpec.name) + item.ideLabel = methodSpec.name item.completionKind = com.itsaky.androidide.lsp.models.CompletionItemKind.METHOD item.detail = method.returnType.toString() + " " + method - item.ideSortText = item.label.toString() + item.ideSortText = item.ideLabel item.insertText = insertText item.insertTextFormat = SNIPPET item.snippetDescription = describeSnippet(partial) diff --git a/lsp/java/src/test/java/com/itsaky/androidide/lsp/java/providers/JavaCompletionProviderTest.kt b/lsp/java/src/test/java/com/itsaky/androidide/lsp/java/providers/JavaCompletionProviderTest.kt index e6f7d7777..70510ec5a 100644 --- a/lsp/java/src/test/java/com/itsaky/androidide/lsp/java/providers/JavaCompletionProviderTest.kt +++ b/lsp/java/src/test/java/com/itsaky/androidide/lsp/java/providers/JavaCompletionProviderTest.kt @@ -89,6 +89,6 @@ class JavaCompletionProviderTest { .complete( CompletionParams(pos, JavaLSPTest.file!!, ICancelChecker.NOOP).apply { prefix = "" }) .items - .map { it.label } + .map { it.ideLabel } } } diff --git a/lsp/models/src/main/java/com/itsaky/androidide/lsp/models/CompletionItemComparator.java b/lsp/models/src/main/java/com/itsaky/androidide/lsp/models/CompletionItemComparator.java index 418d779da..3ea4f1f1a 100644 --- a/lsp/models/src/main/java/com/itsaky/androidide/lsp/models/CompletionItemComparator.java +++ b/lsp/models/src/main/java/com/itsaky/androidide/lsp/models/CompletionItemComparator.java @@ -26,7 +26,7 @@ class CompletionItemComparator { static int compare(CompletionItem one, CompletionItem two) { return Comparator.comparing(item -> ((CompletionItem) item).getMatchLevel().ordinal()) .thenComparing(item -> ((CompletionItem) item).getIdeSortText()) - .thenComparing(item -> ((CompletionItem) item).label) + .thenComparing(item -> ((CompletionItem) item).getIdeLabel()) .compare(one, two); } } diff --git a/lsp/models/src/main/java/com/itsaky/androidide/lsp/models/Completions.kt b/lsp/models/src/main/java/com/itsaky/androidide/lsp/models/Completions.kt index dd3062b56..dc64ee579 100644 --- a/lsp/models/src/main/java/com/itsaky/androidide/lsp/models/Completions.kt +++ b/lsp/models/src/main/java/com/itsaky/androidide/lsp/models/Completions.kt @@ -92,7 +92,7 @@ open class CompletionResult(items: Collection) { ): CompletionResult { val newItems = src.items.toMutableList() newItems.forEach(map) - newItems.removeIf { !it.label.startsWith(partial) } + newItems.removeIf { !it.ideLabel.startsWith(partial) } return CompletionResult(newItems) } } @@ -121,7 +121,7 @@ open class CompletionResult(items: Collection) { } open class CompletionItem( - @JvmField var label: String, + var ideLabel: String, var detail: String, insertText: String?, insertTextFormat: InsertTextFormat?, @@ -133,12 +133,12 @@ open class CompletionItem( var data: ICompletionData?, var editHandler: IEditHandler = DefaultEditHandler() ) : - io.github.rosemoe.sora.lang.completion.CompletionItem(label, detail), Comparable { + io.github.rosemoe.sora.lang.completion.CompletionItem(ideLabel, detail), Comparable { var ideSortText: String? = sortText get() { if (field == null) { - return label.toString() + return ideLabel } return field @@ -147,7 +147,7 @@ open class CompletionItem( var insertText: String = insertText ?: "" get() { if (field.isEmpty()) { - return this.label.toString() + return this.ideLabel } return field @@ -208,12 +208,6 @@ open class CompletionItem( } } - fun setLabel(label: String) { - this.label = label - } - - fun getLabel(): String = this.label as String - override fun performCompletion(editor: CodeEditor, text: Content, position: CharPosition) { editHandler.performEdits(this, editor, text, position.line, position.column, position.index) } @@ -230,7 +224,7 @@ open class CompletionItem( if (this === other) return true if (other !is CompletionItem) return false - if (label != other.label) return false + if (ideLabel != other.ideLabel) return false if (detail != other.detail) return false if (command != other.command) return false if (completionKind != other.completionKind) return false @@ -248,7 +242,7 @@ open class CompletionItem( } override fun hashCode(): Int { - var result = label.hashCode() + var result = ideLabel.hashCode() result = 31 * result + detail.hashCode() result = 31 * result + (command?.hashCode() ?: 0) result = 31 * result + completionKind.hashCode() @@ -265,7 +259,7 @@ open class CompletionItem( } override fun toString(): String { - return "CompletionItem(label='$label', detail='$detail', command=$command, kind=$completionKind, matchLevel=$matchLevel, additionalTextEdits=$additionalTextEdits, data=$data, sortText=$ideSortText, insertText='$insertText', insertTextFormat=$insertTextFormat, editHandler=$editHandler, additionalEditHandler=$additionalEditHandler, overrideTypeText=$overrideTypeText)" + return "CompletionItem(label='$ideLabel', detail='$detail', command=$command, kind=$completionKind, matchLevel=$matchLevel, additionalTextEdits=$additionalTextEdits, data=$data, sortText=$ideSortText, insertText='$insertText', insertTextFormat=$insertTextFormat, editHandler=$editHandler, additionalEditHandler=$additionalEditHandler, overrideTypeText=$overrideTypeText)" } } 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 7af5ee66f..82ea92eaa 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 @@ -143,9 +143,9 @@ abstract class IXmlCompletionProvider(private val provider: ICompletionProvider) isPlatformWidget: Boolean = false ): CompletionItem = CompletionItem().apply { - this.label = simpleName + this.ideLabel = simpleName this.detail = qualifiedName - this.ideSortText = label.toString() + this.ideSortText = ideLabel this.insertText = if (isPlatformWidget) simpleName else qualifiedName this.insertTextFormat = PLAIN_TEXT this.editHandler = TagEditHandler() @@ -178,13 +178,13 @@ abstract class IXmlCompletionProvider(private val provider: ICompletionProvider) val title = "$prefix${attr.name.entry!!}" val insertText = if (hasNamespace) attr.name.entry!! else title - this.label = title + this.ideLabel = title this.completionKind = FIELD this.detail = "From package '$resPkg'" this.insertText = "$insertText=\"$0\"" this.insertTextFormat = SNIPPET this.snippetDescription = describeSnippet(partial) - this.ideSortText = label.toString() + this.ideSortText = ideLabel this.matchLevel = matchLevel this.command = Command("Trigger completion request", Command.TRIGGER_COMPLETION) } @@ -215,7 +215,7 @@ abstract class IXmlCompletionProvider(private val provider: ICompletionProvider) val text = sb.toString() return CompletionItem().apply { - this.label = text + this.ideLabel = text this.detail = "From package '$pck'" this.completionKind = VALUE this.overrideTypeText = type.uppercase() @@ -240,7 +240,7 @@ abstract class IXmlCompletionProvider(private val provider: ICompletionProvider) matchLevel: MatchLevel ): CompletionItem { return CompletionItem().apply { - this.label = name + this.ideLabel = name this.detail = if (pck.isBlank()) "" else "From package '$pck'" this.completionKind = VALUE this.ideSortText = "000$name" diff --git a/lsp/xml/src/test/java/com/itsaky/androidide/lsp/xml/CompletionHelper.kt b/lsp/xml/src/test/java/com/itsaky/androidide/lsp/xml/CompletionHelper.kt index a17f98ace..09ab9b973 100644 --- a/lsp/xml/src/test/java/com/itsaky/androidide/lsp/xml/CompletionHelper.kt +++ b/lsp/xml/src/test/java/com/itsaky/androidide/lsp/xml/CompletionHelper.kt @@ -26,6 +26,6 @@ import com.itsaky.androidide.lsp.models.CompletionItem interface CompletionHelper { fun complete( - transform: (CompletionItem) -> CharSequence = { it.label } + transform: (CompletionItem) -> CharSequence = { it.ideLabel } ): Pair> } diff --git a/lsp/xml/src/test/java/com/itsaky/androidide/lsp/xml/CompletionHelperImpl.kt b/lsp/xml/src/test/java/com/itsaky/androidide/lsp/xml/CompletionHelperImpl.kt index 578f56291..f0d556051 100644 --- a/lsp/xml/src/test/java/com/itsaky/androidide/lsp/xml/CompletionHelperImpl.kt +++ b/lsp/xml/src/test/java/com/itsaky/androidide/lsp/xml/CompletionHelperImpl.kt @@ -29,7 +29,7 @@ class CompletionHelperImpl : CompletionHelper { val result = server.complete(createCompletionParams) result.isIncomplete to result.items - .filter { it.label != null } + .filter { it.ideLabel.isNotBlank() } .map { transform(it) } .filter { it.isNotBlank() } .toList() diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/utils/ValueCompletionProvider.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/utils/ValueCompletionProvider.kt index 34347a5e9..fe40c57e2 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/utils/ValueCompletionProvider.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/utils/ValueCompletionProvider.kt @@ -101,7 +101,7 @@ internal class ValueCompletionProvider( if (result.isIncomplete) "(incomplete)" else "", ) - onComplete(result.items.mapNotNull { it.label?.toString() }) + onComplete(result.items.map { it.ideLabel }) } } }