/** * Returns null when no match found! Assumes the document has been partitioned via HTML partition * scanner * * @param document * @param offset * @param partitionsToSearch A collection of the string partition names to search for tags. * Optimization to avoid looking in non HTML/XML tags! * @return */ public static IRegion findMatchingTag( IDocument document, int offset, Collection<String> partitionsToSearch) { try { ITypedRegion region = document.getPartition(offset); if (!partitionsToSearch.contains(region.getType())) { return null; } String src = document.get(region.getOffset(), region.getLength()); if (src.startsWith("</")) // $NON-NLS-1$ { return findMatchingOpen(document, region, partitionsToSearch); } // Handle self-closing tags! if (src.endsWith("/>")) // $NON-NLS-1$ { return null; } return findMatchingClose(document, region, partitionsToSearch); } catch (BadLocationException e) { XMLPlugin.logError(e.getMessage(), e); } return null; }