/** * Copyright (c) 2009-2011, The HATS Consortium. All rights reserved. * This file is licensed under the terms of the Modified BSD License. */ package org.absmodels.abs.plugin.editor; import org.eclipse.jface.text.*; import org.eclipse.jface.text.rules.DefaultDamagerRepairer; import org.eclipse.jface.text.rules.ITokenScanner; import static org.absmodels.abs.plugin.util.Constants.*; public class ABSDamagerRepairer extends DefaultDamagerRepairer { public ABSDamagerRepairer(ITokenScanner scanner) { super(scanner); } @Override public IRegion getDamageRegion(ITypedRegion partition, DocumentEvent e, boolean documentPartitioningChanged) { if (!documentPartitioningChanged) { IDocument doc = e.getDocument(); if(PARTITION_MULTI_LINE_COMMENT.equals(partition.getType())){ try{ int startline = doc.getLineOfOffset(partition.getOffset()); int endline = doc.getLineOfOffset(partition.getOffset() + partition.getLength()); int start = doc.getLineOffset(startline); int end = doc.getLineOffset(endline) + doc.getLineLength(endline); return new Region(start, end - start); } catch (BadLocationException ex){ return partition; } } else{ return super.getDamageRegion(partition, e, documentPartitioningChanged); } } return partition; } }