Result (char c, final int prefixLength, final Lookup lookup) { if (!isInXmlContext(lookup)) return null; if (Character.isJavaIdentifierPart(c)) return Result.ADD_TO_PREFIX; switch(c){ case '-': case ':': case '?': return Result.ADD_TO_PREFIX; case '/': if (isWithinTag(lookup)) { if (prefixLength > 0) { return Result.SELECT_ITEM_AND_FINISH_LOOKUP; } XmlAutoPopupHandler.autoPopupXmlLookup(lookup.getProject(), lookup.getEditor()); return Result.HIDE_LOOKUP; } return Result.ADD_TO_PREFIX; case '>': if (prefixLength > 0) { return Result.SELECT_ITEM_AND_FINISH_LOOKUP; } case '\'': case '\"': return Result.SELECT_ITEM_AND_FINISH_LOOKUP; default: return null; } }