⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jedittextarea.java

📁 Linux下面最好用的程序、文本编辑工具之一。
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
	 * @since jEdit 4.2pre1	 */	public void moveCaretPosition(int newCaret, int scrollMode)	{		if(newCaret < 0 || newCaret > buffer.getLength())		{			throw new IllegalArgumentException("caret out of bounds: "				+ newCaret);		}		if(match != null)		{			if(caretLine < match.startLine)				invalidateLineRange(caretLine,match.endLine);			else				invalidateLineRange(match.startLine,caretLine);			match = null;		}		if(caret == newCaret)		{			if(scrollMode == NORMAL_SCROLL)				finishCaretUpdate(false,false);			else if(scrollMode == ELECTRIC_SCROLL)				finishCaretUpdate(true,false);		}		else		{			int newCaretLine = getLineOfOffset(newCaret);			magicCaret = -1;			if(caretLine == newCaretLine)			{				if(caretScreenLine != -1)					invalidateScreenLineRange(caretScreenLine,caretScreenLine);			}			else			{				int newCaretScreenLine = chunkCache.getScreenLineOfOffset(newCaretLine,					newCaret - buffer.getLineStartOffset(newCaretLine));				if(caretScreenLine == -1)					invalidateScreenLineRange(newCaretScreenLine,newCaretScreenLine);				else					invalidateScreenLineRange(caretScreenLine,newCaretScreenLine);				caretScreenLine = newCaretScreenLine;			}			caret = newCaret;			caretLine = newCaretLine;			if(scrollMode == NORMAL_SCROLL)				finishCaretUpdate(false,true);			else if(scrollMode == ELECTRIC_SCROLL)				finishCaretUpdate(true,true);		}	} //}}}	//{{{ getCaretPosition() method	/**	 * Returns a zero-based index of the caret position.	 */	public int getCaretPosition()	{		return caret;	} //}}}	//{{{ getCaretLine() method	/**	 * Returns the line number containing the caret.	 */	public int getCaretLine()	{		return caretLine;	} //}}}	//{{{ getMagicCaretPosition() method	/**	 * Returns an internal position used to keep the caret in one	 * column while moving around lines of varying lengths.	 * @since jEdit 4.2pre1	 */	public int getMagicCaretPosition()	{		if(magicCaret == -1)		{			magicCaret = chunkCache.subregionOffsetToX(				caretLine,caret - getLineStartOffset(caretLine));		}		return magicCaret;	} //}}}	//{{{ setMagicCaretPosition() method	/**	 * Sets the `magic' caret position. This can be used to preserve	 * the column position when moving up and down lines.	 * @param magicCaret The magic caret position	 * @since jEdit 4.2pre1	 */	public void setMagicCaretPosition(int magicCaret)	{		this.magicCaret = magicCaret;	} //}}}	//{{{ addCaretListener() method	/**	 * Adds a caret change listener to this text area.	 * @param listener The listener	 */	public final void addCaretListener(CaretListener listener)	{		listenerList.add(CaretListener.class,listener);	} //}}}	//{{{ removeCaretListener() method	/**	 * Removes a caret change listener from this text area.	 * @param listener The listener	 */	public final void removeCaretListener(CaretListener listener)	{		listenerList.remove(CaretListener.class,listener);	} //}}}	//{{{ goToNextBracket() method	/**	 * Moves the caret to the next closing bracket.	 * @since jEdit 2.7pre2.	 */	public void goToNextBracket(boolean select)	{		int newCaret = -1;		if(caret != buffer.getLength())		{			String text = getText(caret,buffer.getLength()				- caret - 1);loop:			for(int i = 0; i < text.length(); i++)			{				switch(text.charAt(i))				{				case ')': case ']': case '}':					newCaret = caret + i + 1;					break loop;				}			}		}		if(newCaret == -1)			getToolkit().beep();		else		{			if(select)				extendSelection(caret,newCaret);			else if(!multi)				selectNone();			moveCaretPosition(newCaret);		}	} //}}}	//{{{ goToNextCharacter() method	/**	 * Moves the caret to the next character.	 * @since jEdit 2.7pre2.	 */	public void goToNextCharacter(boolean select)	{		Selection s = getSelectionAtOffset(caret);		if(!select && s instanceof Selection.Range)		{			if(multi)			{				if(caret != s.end)				{					moveCaretPosition(s.end);					return;				}			}			else			{				setCaretPosition(s.end);				return;			}		}		int extraStartVirt, extraEndVirt;		if(s instanceof Selection.Rect)		{			extraStartVirt = ((Selection.Rect)s).extraStartVirt;			extraEndVirt = ((Selection.Rect)s).extraEndVirt;		}		else		{			extraStartVirt = 0;			extraEndVirt = 0;		}		int newCaret = caret;		if(caret == buffer.getLength())		{			if(select && (rectangularSelectionMode || s instanceof Selection.Rect))			{				if(s != null && caret == s.start)					extraStartVirt++;				else					extraEndVirt++;			}			else			{				getToolkit().beep();				return;			}		}		else if(caret == getLineEndOffset(caretLine) - 1)		{			if(select && (rectangularSelectionMode || s instanceof Selection.Rect))			{				if(s != null && caret == s.start)					extraStartVirt++;				else					extraEndVirt++;			}			else			{				int line = displayManager.getNextVisibleLine(caretLine);				if(line == -1)				{					getToolkit().beep();					return;				}				else					newCaret = getLineStartOffset(line);			}		}		else			newCaret = caret + 1;		if(select)			extendSelection(caret,newCaret,extraStartVirt,extraEndVirt);		else if(!multi)			selectNone();		moveCaretPosition(newCaret);	} //}}}	//{{{ goToNextLine() method	/**	 * Move the caret to the next line.	 * @since jEdit 2.7pre2	 */	public void goToNextLine(boolean select)	{		Selection s = getSelectionAtOffset(caret);		boolean rectSelect = (s == null ? rectangularSelectionMode			: s instanceof Selection.Rect);		int magic = getMagicCaretPosition();		int newCaret = chunkCache.getBelowPosition(caretLine,			caret - buffer.getLineStartOffset(caretLine),magic + 1,			rectSelect && select);		if(newCaret == -1)		{			int end = getLineEndOffset(caretLine) - 1;			if(caret == end)			{				getToolkit().beep();				return;			}			else				newCaret = end;		}		if(select)		{			RectParams params = getRectParams(caret,newCaret);			int extraStartVirt;			int extraEndVirt;			if(params == null)			{				extraStartVirt = 0;				extraEndVirt = 0;			}			else			{				extraStartVirt = params.extraStartVirt;				extraEndVirt = params.extraEndVirt;				newCaret = params.newCaret;			}			extendSelection(caret,newCaret,extraStartVirt,extraEndVirt);		}		else if(!multi)			selectNone();		moveCaretPosition(newCaret);		setMagicCaretPosition(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)	{		scrollToCaret(false);		int magic = getMagicCaretPosition();		if(caretLine < displayManager.getFirstVisibleLine())		{			caretLine = displayManager.getNextVisibleLine(				caretLine);		}		int newCaret;		if(getFirstLine() + getVisibleLines() >= displayManager			.getScrollLineCount())		{			int lastVisibleLine = displayManager				.getLastVisibleLine();			newCaret = getLineEndOffset(lastVisibleLine) - 1;		}		else		{			int caretScreenLine = getScreenLineOfOffset(caret);			scrollDownPage();			newCaret = xToScreenLineOffset(caretScreenLine,				magic,true);		}		if(select)			extendSelection(caret,newCaret);		else if(!multi)			selectNone();		moveCaretPosition(newCaret,false);		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(!displayManager.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.eatWhitespace" 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.	 * @since jEdit 4.1pre5	 */	public void goToNextWord(boolean select, boolean eatWhitespace)	{		int lineStart = getLineStartOffset(caretLine);		int newCaret = caret - lineStart;		String lineText = getLineText(caretLine);		if(newCaret == lineText.length())		{			int nextLine = displayManager.getNextVisibleLine(caretLine);			if(nextLine == -1)			{				getToolkit().beep();				return;			}			newCaret = getLineStartOffset(nextLine);		}		else		{			String noWordSep = buffer.getStringProperty("noWordSep");			newCaret = TextUtilities.findWordEnd(lineText,				newCaret + 1,noWordSep,true,eatWhitespace);			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)	{		Selection s = getSelectionAtOffset(caret);		if(!select && s instanceof Selection.Range)		{			if(multi)			{				if(caret != s.start)				{					moveCaretPosition(s.start);					return;				}			}			else			{				setCaretPosition(s.start);				return;			}		}		int extraStartVirt = 0;		int extraEndVirt = 0;		int newCaret = caret;		if(select && caret == getLineEndOffset(caretLine) - 1)		{			if(s instanceof Selection.Rect)			{				extraStartVirt = ((Selection.Rect)s).extraStartVirt;				extraEndVirt = ((Selection.Rect)s).extraEndVirt;				if(caret == s.start)				{					if(extraStartVirt == 0)						newCaret = caret - 1;					else						extraStartVirt--;				}				else				{					if(extraEndVirt == 0)						newCaret = caret - 1;					else					

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -