@Override public boolean validate(IDocument document, int offset, DocumentEvent event) { String[] strs = PySelection.getActivationTokenAndQual(document, offset, false); // System.out.println("validating:"+strs[0]+" - "+strs[1]); // when we end with a '.', we should start a new completion (and not stay in the old one). if (strs[1].length() == 0 && (strs[0].length() == 0 || strs[0].endsWith("."))) { // System.out.println(false); return false; } String qualifier = strs[1]; final boolean useSubstringMatchInCodeCompletion = PyCodeCompletionPreferencesPage.getUseSubstringMatchInCodeCompletion(); String displayString = getDisplayString(); boolean ret = PyCodeCompletionUtils.acceptName( useSubstringMatchInCodeCompletion, displayString, qualifier); return ret; }
@Override public StyledString getStyledDisplayString( IDocument document, int offset, BoldStylerProvider boldStylerProvider) { // Extension enabled with enableColoredLabels(true); on PyContentAssistant. String[] strs = PySelection.getActivationTokenAndQual(document, offset, false); if (strs[1].length() == 0 && (strs[0].length() == 0 || strs[0].endsWith("."))) { StyledString styledString = new StyledString(getDisplayString()); return styledString; } String qualifier = strs[1]; final boolean useSubstringMatchInCodeCompletion = PyCodeCompletionPreferencesPage.getUseSubstringMatchInCodeCompletion(); String original = getDisplayString(); // Qualifier is everything after " - ". int index = original.indexOf(" - "); String strBeforeQualifier; if (index != -1) { strBeforeQualifier = original.substring(0, index); } else { strBeforeQualifier = original; } StyledString styledString = new StyledString(); if (useSubstringMatchInCodeCompletion) { int i = strBeforeQualifier.toLowerCase().indexOf(qualifier.toLowerCase()); if (i < 0) { styledString.append(strBeforeQualifier); } else { styledString.append(strBeforeQualifier.substring(0, i)); styledString.append( strBeforeQualifier.substring(i, i + qualifier.length()), boldStylerProvider.getBoldStyler()); styledString.append( strBeforeQualifier.substring(i + qualifier.length(), strBeforeQualifier.length())); } } else { styledString.append(strBeforeQualifier); } if (styledString.length() < original.length()) { styledString.append(original.substring(styledString.length()), StyledString.QUALIFIER_STYLER); } return styledString; }