From 297b17c365cb87fda11e23c0c2f540cd7fe8e143 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 27 Dec 2012 11:45:17 +0100 Subject: [PATCH] correct backspace and completion preview interaction --- .../codeInsight/lookup/impl/CompletionPreview.java | 13 ++++++------- .../codeInsight/lookup/impl/LookupImpl.java | 6 +++++- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/CompletionPreview.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/CompletionPreview.java index b3c038591d45..a85e03569af3 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/CompletionPreview.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/CompletionPreview.java @@ -39,12 +39,12 @@ public class CompletionPreview { private final LookupImpl myLookup; private Disposable myUninstaller; - private CompletionPreview(LookupImpl lookup, final String text, final String prefix) { + private CompletionPreview(LookupImpl lookup, final String text, final int prefixLength) { myLookup = lookup; final Editor editor = myLookup.getEditor(); final int caret = editor.getCaretModel().getOffset(); - int previewStart = caret - prefix.length(); + int previewStart = caret - prefixLength; final int previewEnd = previewStart + text.length(); myLookup.performGuardedChange(new Runnable() { @@ -54,7 +54,7 @@ public class CompletionPreview { public void run() { AccessToken token = WriteAction.start(); try { - editor.getDocument().insertString(caret, text.substring(prefix.length())); + editor.getDocument().insertString(caret, text.substring(prefixLength)); } finally { token.finish(); @@ -131,12 +131,11 @@ public class CompletionPreview { } } - String prefix = lookup.itemPattern(item); - if (prefix.length() > text.length()) { + int prefixLength = lookup.getPrefixLength(item); + if (prefixLength > text.length()) { return; } - - new CompletionPreview(lookup, text, prefix); + new CompletionPreview(lookup, text, prefixLength); } public void uninstallPreview() { diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java index c66c9cd2204f..5d0df23ca057 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java @@ -623,7 +623,7 @@ public class LookupImpl extends LightweightHint implements LookupEx, Disposable myFinishing = true; AccessToken token = WriteAction.start(); try { - insertLookupString(item, myOffsets.getPrefixLength(item, this)); + insertLookupString(item, getPrefixLength(item)); } finally { token.finish(); @@ -638,6 +638,10 @@ public class LookupImpl extends LightweightHint implements LookupEx, Disposable fireItemSelected(item, completionChar); } + public int getPrefixLength(LookupElement item) { + return myOffsets.getPrefixLength(item, this); + } + private void insertLookupString(LookupElement item, final int prefix) { Document document = myEditor.getDocument();