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

📄 jedittextarea.java

📁 用java 编写的源码开放的文本编辑器。有很多有用的特性
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
	} //}}}	//{{{ 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 + -