correct backspace and completion preview interaction

This commit is contained in:
peter
2012-12-27 11:45:17 +01:00
parent 43746d0483
commit 297b17c365
2 changed files with 11 additions and 8 deletions
@@ -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() {
@@ -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();