From d15d54e8010f0afa880a4dd824a672c0be21220f Mon Sep 17 00:00:00 2001 From: Matthias Gugel Date: Sun, 21 Mar 2021 05:50:27 +0100 Subject: [PATCH] Provide placeholder completion cell editor --- .../FilenameTemplateSettingsComponent.kt | 3 + .../PlaceholderCompletionCellEditor.kt | 68 +++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 src/main/kotlin/de/idetools/filename_template/settings/PlaceholderCompletionCellEditor.kt diff --git a/src/main/kotlin/de/idetools/filename_template/settings/FilenameTemplateSettingsComponent.kt b/src/main/kotlin/de/idetools/filename_template/settings/FilenameTemplateSettingsComponent.kt index c2ba42a..5c83fd3 100644 --- a/src/main/kotlin/de/idetools/filename_template/settings/FilenameTemplateSettingsComponent.kt +++ b/src/main/kotlin/de/idetools/filename_template/settings/FilenameTemplateSettingsComponent.kt @@ -26,6 +26,9 @@ class FilenameTemplateSettingsComponent(val filenameTemplates: ArrayList { + override fun handleInsert(context: InsertionContext, lookupElement: LookupElement) { + val text = context.document.text + if (context.tailOffset < text.length && text[context.tailOffset] == '}') { + context.document.replaceString(context.tailOffset - 1, context.tailOffset + 1, "}") + } + if (0 < context.startOffset && text[context.startOffset - 1] == '{') { + context.document.replaceString(context.startOffset - 1, context.startOffset + 1, "{") + } + } + } + + override fun getPrefix(currentTextPrefix: String): String { + if (-1 < currentTextPrefix.indexOf('{')) { + return currentTextPrefix.removeRange(0, currentTextPrefix.lastIndexOf('{')) + } + return currentTextPrefix + } + + override fun addCompletionVariants(text: String, offset: Int, prefix: String, result: CompletionResultSet) { + listOf("|", "0", "DATE", "EPOCH", "HOST", "PROJECT", "USER").forEach { + result.addElement(LookupElementBuilder.create("{${it}}").withInsertHandler(PlaceholderInsertHandler)) + } + } + } +}