diff --git a/platform/lang-impl/src/com/intellij/codeInsight/navigation/DocPreviewUtil.java b/platform/lang-impl/src/com/intellij/codeInsight/navigation/DocPreviewUtil.java index 2b951b765701..77994a63d9ae 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/navigation/DocPreviewUtil.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/navigation/DocPreviewUtil.java @@ -44,6 +44,11 @@ public class DocPreviewUtil { private static final Comparator REPLACEMENTS_COMPARATOR = new Comparator() { @Override public int compare(@NotNull String o1, @NotNull String o2) { + String shortName1 = extractShortName(o1); + String shortName2 = extractShortName(o2); + if (!shortName1.equals(shortName2)) { + return shortName1.compareTo(shortName2); + } if (o1.endsWith(o2)) { return -1; } @@ -54,6 +59,11 @@ public class DocPreviewUtil { return o1.compareTo(o2); } } + + private String extractShortName(@NotNull String s) { + int i = s.lastIndexOf('.'); + return i > 0 && i < s.length() - 1 ? s.substring(i + 1) : s; + } }; private DocPreviewUtil() { @@ -79,6 +89,17 @@ public class DocPreviewUtil { // Build links info. Map links = new HashMap(); process(fullText, new LinksCollector(links)); + + // Add short names. + Map toAdd = new HashMap(); + for (Map.Entry entry : links.entrySet()) { + String key = entry.getKey(); + int i = key.lastIndexOf('.'); + if (i > 0 && i < key.length() - 1) { + toAdd.put(key.substring(i + 1), entry.getValue()); + } + } + links.putAll(toAdd); if (qName != null) { links.put(qName, DocumentationManager.PSI_ELEMENT_PROTOCOL + qName); }