📄 jedittextarea.java
字号:
} //}}} //{{{ goToNextCharacter() method /** * Moves the caret to the next character. * @since jEdit 2.7pre2. */ public void goToNextCharacter(boolean select) { if(!select && selection.size() != 0) { Selection s = getSelectionAtOffset(caret); if(s != null) { if(multi) { if(caret != s.end) { moveCaretPosition(s.end); return; } } else { setCaretPosition(s.end); return; } } } if(caret == buffer.getLength()) getToolkit().beep(); int newCaret; if(caret == getLineEndOffset(caretLine) - 1) { int line = foldVisibilityManager.getNextVisibleLine(caretLine); if(line == -1) { getToolkit().beep(); return; } newCaret = getLineStartOffset(line); } else newCaret = caret + 1; if(select) extendSelection(caret,newCaret); else if(!multi) selectNone(); moveCaretPosition(newCaret); } //}}} //{{{ goToNextLine() method /** * Movse the caret to the next line. * @since jEdit 2.7pre2 */ public void goToNextLine(boolean select) { ChunkCache.LineInfo[] lineInfos = chunkCache.getLineInfosForPhysicalLine(caretLine); int caretFromStartOfLine = caret - buffer.getLineStartOffset(caretLine); int subregion = getSubregionOfOffset(caretFromStartOfLine, lineInfos); int magic = this.magicCaret; if(magic == -1) { magic = subregionOffsetToX(lineInfos[subregion], caretFromStartOfLine); } int newCaret; if(subregion != lineInfos.length - 1) { newCaret = buffer.getLineStartOffset(caretLine) + xToSubregionOffset(lineInfos[subregion + 1],magic, true); } else { int nextLine = foldVisibilityManager.getNextVisibleLine(caretLine); if(nextLine == -1) { int end = getLineEndOffset(caretLine) - 1; if(caret == end) { getToolkit().beep(); return; } else newCaret = end; } else { lineInfos = chunkCache.getLineInfosForPhysicalLine(nextLine); newCaret = getLineStartOffset(nextLine) + xToSubregionOffset(lineInfos[0],magic + 1, true); } } if(select) extendSelection(caret,newCaret); else if(!multi) selectNone(); moveCaretPosition(newCaret); this.magicCaret = magic; } //}}} //{{{ goToNextMarker() method /** * Moves the caret to the next marker. * @since jEdit 2.7pre2 */ public void goToNextMarker(boolean select) { Vector markers = buffer.getMarkers(); if(markers.size() == 0) { getToolkit().beep(); return; } Marker marker = null; for(int i = 0; i < markers.size(); i++) { Marker _marker = (Marker)markers.get(i); if(_marker.getPosition() > caret) { marker = _marker; break; } } if(marker == null) marker = (Marker)markers.get(0); if(select) extendSelection(caret,marker.getPosition()); else if(!multi) selectNone(); moveCaretPosition(marker.getPosition()); } //}}} //{{{ goToNextPage() method /** * Moves the caret to the next screenful. * @since jEdit 2.7pre2. */ public void goToNextPage(boolean select) { int lineCount = getVirtualLineCount(); int magic = getMagicCaretPosition(); if(firstLine + visibleLines * 2 >= lineCount - 1) setFirstLine(lineCount - visibleLines); else setFirstLine(firstLine + visibleLines); int newLine = virtualToPhysical(Math.min(lineCount - 1, physicalToVirtual(caretLine) + visibleLines)); int newCaret = getLineStartOffset(newLine) + xToOffset(newLine,magic + 1); if(select) extendSelection(caret,newCaret); else if(!multi) selectNone(); moveCaretPosition(newCaret); setMagicCaretPosition(magic); } //}}} //{{{ goToNextParagraph() method /** * Moves the caret to the start of the next paragraph. * @since jEdit 2.7pre2 */ public void goToNextParagraph(boolean select) { int lineNo = getCaretLine(); int newCaret = getBufferLength(); boolean foundBlank = false;loop: for(int i = lineNo + 1; i < getLineCount(); i++) { if(!foldVisibilityManager.isLineVisible(i)) continue; getLineText(i,lineSegment); for(int j = 0; j < lineSegment.count; j++) { switch(lineSegment.array[lineSegment.offset + j]) { case ' ': case '\t': break; default: if(foundBlank) { newCaret = getLineStartOffset(i); break loop; } else continue loop; } } foundBlank = true; } if(select) extendSelection(caret,newCaret); else if(!multi) selectNone(); moveCaretPosition(newCaret); } //}}} //{{{ goToNextWord() method /** * Moves the caret to the start of the next word. * Note that if the "view.stdNextPrevWord" boolean propery is false, * this method moves the caret to the end of the current word instead. * @since jEdit 2.7pre2 */ public void goToNextWord(boolean select) { goToNextWord(select,false); } //}}} //{{{ goToNextWord() method /** * Moves the caret to the start of the next word. * Note that if the "view.stdNextPrevWord" boolean propery is false, * this method moves the caret to the end of the current word instead. * @since jEdit 4.1pre5 */ public void goToNextWord(boolean select, boolean stdNextPrevWord) { int lineStart = getLineStartOffset(caretLine); int newCaret = caret - lineStart; String lineText = getLineText(caretLine); if(newCaret == lineText.length()) { int nextLine = foldVisibilityManager.getNextVisibleLine(caretLine); if(nextLine == -1) { getToolkit().beep(); return; } newCaret = getLineStartOffset(nextLine); } else { String noWordSep = buffer.getStringProperty("noWordSep"); newCaret = TextUtilities.findWordEnd(lineText,newCaret + 1, noWordSep); if(stdNextPrevWord) { while((newCaret < lineText.length()) && Character.isWhitespace(lineText.charAt(newCaret))) newCaret = TextUtilities.findWordEnd(lineText,newCaret + 1, noWordSep); } newCaret += lineStart; } if(select) extendSelection(caret,newCaret); else if(!multi) selectNone(); moveCaretPosition(newCaret); } //}}} //{{{ goToPrevBracket() method /** * Moves the caret to the previous bracket. * @since jEdit 2.7pre2 */ public void goToPrevBracket(boolean select) { String text = getText(0,caret); int newCaret = -1;loop: for(int i = getCaretPosition() - 1; i >= 0; i--) { switch(text.charAt(i)) { case '(': case '[': case '{': newCaret = i; break loop; } } if(newCaret == -1) getToolkit().beep(); else { if(select) extendSelection(caret,newCaret); else if(!multi) selectNone(); moveCaretPosition(newCaret); } } //}}} //{{{ goToPrevCharacter() method /** * Moves the caret to the previous character. * @since jEdit 2.7pre2. */ public void goToPrevCharacter(boolean select) { if(!select && selection.size() != 0) { Selection s = getSelectionAtOffset(caret); if(s != null) { if(multi) { if(caret != s.start) { moveCaretPosition(s.start); return; } } else { setCaretPosition(s.start); return; } } } int newCaret; if(caret == getLineStartOffset(caretLine)) { int line = foldVisibilityManager.getPrevVisibleLine(caretLine); if(line == -1) { getToolkit().beep(); return; } newCaret = getLineEndOffset(line) - 1; } else newCaret = caret - 1; if(select) extendSelection(caret,newCaret); else if(!multi) selectNone(); moveCaretPosition(newCaret); } //}}} //{{{ goToPrevLine() method /** * Moves the caret to the previous line. * @since jEdit 2.7pre2 */ public void goToPrevLine(boolean select) { ChunkCache.LineInfo[] lineInfos = chunkCache.getLineInfosForPhysicalLine(caretLine); int caretFromStartOfLine = caret - buffer.getLineStartOffset(caretLine); int subregion = getSubregionOfOffset(caretFromStartOfLine, lineInfos); int magic = this.magicCaret; if(magic == -1) { magic = subregionOffsetToX(lineInfos[subregion], caretFromStartOfLine); } int newCaret; if(subregion != 0) { newCaret = buffer.getLineStartOffset(caretLine) + xToSubregionOffset(lineInfos[subregion - 1],magic, true); } else { int prevLine = foldVisibilityManager.getPrevVisibleLine(caretLine); if(prevLine == -1) { int start = getLineStartOffset(caretLine); if(caret == start) { getToolkit().beep(); return; } else newCaret = start; } else { lineInfos = chunkCache.getLineInfosForPhysicalLine(prevLine); newCaret = getLineStartOffset(prevLine) + xToSubregionOffset(lineInfos[ lineInfos.length - 1],magic + 1, true); } } if(select) extendSelection(caret,newCaret); else if(!multi) selectNone(); moveCaretPosition(newCaret); this.magicCaret = magic; } //}}} //{{{ goToPrevMarker() method /** * Moves the caret to the previous marker. * @since jEdit 2.7pre2 */ public void goToPrevMarker(boolean select) { Vector markers = buffer.getMarkers(); if(markers.size() == 0) { getToolkit().beep(); return; } Marker marker = null; for(int i = markers.size() - 1; i >= 0; i--) { Marker _marker = (Marker)markers.elementAt(i); if(_marker.getPosition() < caret) { marker = _marker; break; } } if(marker == null) marker = (Marker)markers.get(markers.size() - 1); if(select) extendSelection(caret,marker.getPosition()); else if(!multi) selectNone(); moveCaretPosition(marker.getPosition()); } //}}} //{{{ goToPrevPage() method /** * Moves the caret to the previous screenful. * @since jEdit 2.7pre2 */ public void goToPrevPage(boolean select) { if(firstLine < visibleLines) setFirstLine(0); else setFirstLine(firstLine - visibleLines); int magic = getMagicCaretPosition(); int newLine = virtualToPhysical(Math.max(0, physicalToVirtual(caretLine) - visibleLines)); int newCaret = getLineStartOffset(newLine) + xToOffset(newLine,magic + 1); if(select) extendSelection(caret,newCaret); else if(!multi) selectNone(); moveCaretPosition(newCaret); setMagicCaretPosition(magic); } //}}} //{{{ goToPrevParagraph() method /** * Moves the caret to the start of the previous paragraph. * @since jEdit 2.7pre2 */ public void goToPrevParagraph(boolean select) { int lineNo = caretLine; int newCaret = 0; boolean foundBlank = false;loop: for(int i = lineNo - 1; i >= 0; i--) { if(!foldVisibilityManager.isLineVisible(i)) continue; getLineText(i,lineSegment); for(int j = 0; j < lineSegment.count; j++) { switch(lineSegment.array[lineSegment.offset + j]) { case ' ': case '\t': break; default: if(foundBlank) { newCaret = getLineEndOffset(i) - 1; break loop; } else continue loop; } } foundBlank = true; } if(select) extendSelection(caret,newCaret); else if(!multi) selectNone(); moveCaretPosition(newCaret); } //}}} //{{{ goToPrevWord() method /** * Moves the caret to the start of the previous word. * Note that if the "view.stdNextPrevWord" boolean propery is false, * this method moves the caret to the start of the current word instead. * @since jEdit 2.7pre2 */ public void goToPrevWord(boolean select) { goToPrevWord(select,false); } //}}} //{{{ goToPrevWord() method /** * Moves the caret to the start of the previous word. * Note that if the "view.stdNextPrevWord" boolean propery is false, * this method moves the caret to the start of the current word instead. * @since jEdit 4.1pre5 */ public void goToPrevWord(boolean select, boolean stdNextPrevWord) { int lineStart = getLineStartOffset(caretLine); int newCaret = caret - lineStart;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -