本文整理汇总了Java中com.intellij.openapi.editor.event.DocumentEvent.getNewLength方法的典型用法代码示例。如果您正苦于以下问题:Java DocumentEvent.getNewLength方法的具体用法?Java DocumentEvent.getNewLength怎么用?Java DocumentEvent.getNewLength使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类com.intellij.openapi.editor.event.DocumentEvent
的用法示例。
在下文中一共展示了DocumentEvent.getNewLength方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: documentChanged
import com.intellij.openapi.editor.event.DocumentEvent; //导入方法依赖的package包/类
@Override
public final void documentChanged(@NotNull DocumentEvent e) {
int oldStart = intervalStart();
int oldEnd = intervalEnd();
int docLength = myDocument.getTextLength();
if (!isValid()) {
LOG.error("Invalid range marker "+ (isGreedyToLeft() ? "[" : "(") + oldStart + ", " + oldEnd + (isGreedyToRight() ? "]" : ")") +
". Event = " + e + ". Doc length=" + docLength + "; "+getClass());
return;
}
if (intervalStart() > intervalEnd() || intervalStart() < 0 || intervalEnd() > docLength - e.getNewLength() + e.getOldLength()) {
LOG.error("RangeMarker" + (isGreedyToLeft() ? "[" : "(") + oldStart + ", " + oldEnd + (isGreedyToRight() ? "]" : ")") +
" is invalid before update. Event = " + e + ". Doc length=" + docLength + "; "+getClass());
invalidate(e);
return;
}
changedUpdateImpl(e);
if (isValid() && (intervalStart() > intervalEnd() || intervalStart() < 0 || intervalEnd() > docLength)) {
LOG.error("Update failed. Event = " + e + ". " +
"old doc length=" + docLength + "; real doc length = "+myDocument.getTextLength()+
"; "+getClass()+"." +
" After update: '"+this+"'");
invalidate(e);
}
}
示例2: processIfOnePoint
import com.intellij.openapi.editor.event.DocumentEvent; //导入方法依赖的package包/类
@Nullable
private static ProperTextRange processIfOnePoint(@NotNull DocumentEvent e, int intervalStart, int intervalEnd, boolean greedyRight) {
int offset = e.getOffset();
int oldLength = e.getOldLength();
int oldEnd = offset + oldLength;
if (offset < intervalStart && intervalStart < oldEnd) {
return null;
}
if (offset == intervalStart && oldLength == 0 && greedyRight) {
return new ProperTextRange(intervalStart, intervalEnd + e.getNewLength());
}
if (intervalStart > oldEnd || intervalStart == oldEnd && oldLength > 0) {
return new ProperTextRange(intervalStart + e.getNewLength() - oldLength, intervalEnd + e.getNewLength() - oldLength);
}
return new ProperTextRange(intervalStart, intervalEnd);
}
示例3: fixRanges
import com.intellij.openapi.editor.event.DocumentEvent; //导入方法依赖的package包/类
@NotNull
private int[] fixRanges(@NotNull DocumentEvent e, int line1, int line2) {
CharSequence document = myDocument.getCharsSequence();
int offset = e.getOffset();
if (e.getOldLength() == 0 && e.getNewLength() != 0) {
if (StringUtil.endsWithChar(e.getNewFragment(), '\n') && isNewline(offset - 1, document)) {
return new int[]{line1, line2 - 1};
}
if (StringUtil.startsWithChar(e.getNewFragment(), '\n') && isNewline(offset + e.getNewLength(), document)) {
return new int[]{line1 + 1, line2};
}
}
if (e.getOldLength() != 0 && e.getNewLength() == 0) {
if (StringUtil.endsWithChar(e.getOldFragment(), '\n') && isNewline(offset - 1, document)) {
return new int[]{line1, line2 - 1};
}
if (StringUtil.startsWithChar(e.getOldFragment(), '\n') && isNewline(offset + e.getNewLength(), document)) {
return new int[]{line1 + 1, line2};
}
}
return new int[]{line1, line2};
}
示例4: documentChanged
import com.intellij.openapi.editor.event.DocumentEvent; //导入方法依赖的package包/类
@Override
public void documentChanged(DocumentEvent event) {
DocumentEx document = getDocument();
if (document.isInBulkUpdate()) {
return;
}
if (document.getTextLength() > 0) {
addLineSeparatorPainterIfNeed();
int startDocLine = document.getLineNumber(event.getOffset());
int endDocLine = document.getLineNumber(event.getOffset() + event.getNewLength());
if (event.getOldLength() > event.getNewLength() || startDocLine != endDocLine || StringUtil.indexOf(event.getOldFragment(), '\n') != -1) {
updateGutterSize(startDocLine, endDocLine);
}
}
else if (event.getOldLength() > 0) {
documentCleared();
}
}
示例5: isPasteEvent
import com.intellij.openapi.editor.event.DocumentEvent; //导入方法依赖的package包/类
private boolean isPasteEvent(DocumentEvent documentEvent) {
if (ClipboardService.getClipBoard() == null) {
return false;
}
return (documentEvent.getNewLength() > 2)
&& ClipboardService.getClipBoard()
.trim()
.equals(documentEvent.getNewFragment().toString().trim());
}
示例6: canPaintImmediately
import com.intellij.openapi.editor.event.DocumentEvent; //导入方法依赖的package包/类
private boolean canPaintImmediately(@NotNull DocumentEvent e) {
return getDocument() instanceof DocumentImpl &&
!isInplaceRenamerActive() &&
StringUtil.indexOf(e.getOldFragment(), '\n') == -1 &&
StringUtil.indexOf(e.getNewFragment(), '\n') == -1 &&
!(e.getNewLength() == 1 && DOCUMENT_CHARS_TO_SKIP.contains(e.getNewFragment().charAt(0)));
}
示例7: translateOffset
import com.intellij.openapi.editor.event.DocumentEvent; //导入方法依赖的package包/类
@Nullable
private static Integer translateOffset(int offset, DocumentEvent event) {
if (event.getOffset() < offset && offset < event.getOffset() + event.getNewLength()) {
if (event.getOldLength() == 0) {
return event.getOffset();
}
return null;
}
return offset <= event.getOffset() ? offset : offset - event.getNewLength() + event.getOldLength();
}
示例8: updateChanges
import com.intellij.openapi.editor.event.DocumentEvent; //导入方法依赖的package包/类
/**
* Updates current object's state on the basis of the given event assuming that there are no stored change ranges that
* start after offset denoted by the given event.
*
* @param event event for just occurred document change
* @param oldText our main idea is to merge all changes in order to have aggregated change against original document. So, there is
* a possible case that subsequent change affects text inserted by the previous one. We don't want to reflect that
* at aggregated change as it didn't appear in initial document. Hence, we have a mutable symbols buffer that holds
* symbols from initial document affected by the given change
*/
private void updateChanges(DocumentEvent event, StringBuilder oldText) {
int i = findIndex(event.getOffset());
int endOffset = event.getOffset() + event.getNewLength();
TextChangeImpl change = new TextChangeImpl(oldText, event.getOffset(), endOffset);
if (i < 0) {
myChanges.add(change);
}
else {
myChanges.add(i, change);
}
}
示例9: isRemoveEvent
import com.intellij.openapi.editor.event.DocumentEvent; //导入方法依赖的package包/类
private boolean isRemoveEvent(DocumentEvent documentEvent) {
return (documentEvent.getOldLength() > 0 && documentEvent.getNewLength() == 0);
}
示例10: documentChanged
import com.intellij.openapi.editor.event.DocumentEvent; //导入方法依赖的package包/类
public void documentChanged(DocumentEvent event) {
if (event.getOldLength() != event.getNewLength()) myPanel.invalidateDiff();
requestRediff();
}
示例11: documentChanged
import com.intellij.openapi.editor.event.DocumentEvent; //导入方法依赖的package包/类
@Override
public void documentChanged(DocumentEvent e) {
myTextLength += e.getNewLength() - e.getOldLength();
}
示例12: applyChange
import com.intellij.openapi.editor.event.DocumentEvent; //导入方法依赖的package包/类
@Nullable
static ProperTextRange applyChange(@NotNull DocumentEvent e, int intervalStart, int intervalEnd, boolean isGreedyToLeft, boolean isGreedyToRight) {
if (intervalStart == intervalEnd) {
return processIfOnePoint(e, intervalStart, intervalEnd, isGreedyToRight);
}
final int offset = e.getOffset();
final int oldLength = e.getOldLength();
final int newLength = e.getNewLength();
// changes after the end.
if (intervalEnd < offset) {
return new ProperTextRange(intervalStart, intervalEnd);
}
if (!isGreedyToRight && intervalEnd == offset) {
// handle replaceString that was minimized and resulted in insertString at the range end
if (e instanceof DocumentEventImpl && oldLength == 0 && ((DocumentEventImpl)e).getInitialStartOffset() < offset) {
return new ProperTextRange(intervalStart, intervalEnd + newLength);
}
return new ProperTextRange(intervalStart, intervalEnd);
}
// changes before start
if (intervalStart > offset + oldLength) {
return new ProperTextRange(intervalStart + newLength - oldLength, intervalEnd + newLength - oldLength);
}
if (!isGreedyToLeft && intervalStart == offset + oldLength) {
// handle replaceString that was minimized and resulted in insertString at the range start
if (e instanceof DocumentEventImpl && oldLength == 0 && ((DocumentEventImpl)e).getInitialStartOffset() + ((DocumentEventImpl)e).getInitialOldLength() > offset) {
return new ProperTextRange(intervalStart - oldLength, intervalEnd + newLength - oldLength);
}
return new ProperTextRange(intervalStart + newLength - oldLength, intervalEnd + newLength - oldLength);
}
// Changes inside marker's area. Expand/collapse.
if (intervalStart <= offset && intervalEnd >= offset + oldLength) {
return new ProperTextRange(intervalStart, intervalEnd + newLength - oldLength);
}
// At this point we either have (myStart xor myEnd inside changed area) or whole area changed.
// Replacing prefix or suffix...
if (intervalStart >= offset && intervalStart <= offset + oldLength && intervalEnd > offset + oldLength) {
return new ProperTextRange(offset + newLength, intervalEnd + newLength - oldLength);
}
if (intervalEnd >= offset && intervalEnd <= offset + oldLength && intervalStart < offset) {
return new ProperTextRange(intervalStart, offset);
}
return null;
}
示例13: IncrementalCacheUpdateEvent
import com.intellij.openapi.editor.event.DocumentEvent; //导入方法依赖的package包/类
/**
* Creates new <code>IncrementalCacheUpdateEvent</code> object on the basis on the given event object that describes
* document change that caused cache update.
* <p/>
* This constructor is assumed to be used <b>before</b> the document change, {@link #updateAfterDocumentChange(Document)}
* should be called <b>'after'</b> document change to complete object creation.
*
* @param event object that describes document change that caused cache update
*/
IncrementalCacheUpdateEvent(@NotNull DocumentEvent event, @NotNull CachingSoftWrapDataMapper mapper, @NotNull EditorImpl editor) {
this(event.getDocument(), event.getOffset(), event.getOffset() + event.getOldLength(), event.getOffset() + event.getNewLength(), mapper, editor);
}