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

📄 jedittextarea.java

📁 Java写的文本编辑器
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
			newCaret = getLineStartOffset(line);		}		else			newCaret = caret + 1;		if(select)			extendSelection(caret,newCaret);		else if(!multi)			selectNone();		moveCaretPosition(newCaret);	}	/**	 * Movse the caret to the next line.	 * @since jEdit 2.7pre2	 */	public void goToNextLine(boolean select)	{		int caret = getCaretPosition();		int line = getCaretLine();		int magic = getMagicCaretPosition();		int nextLine = buffer.getNextVisibleLine(line);		if(nextLine == -1)		{			getToolkit().beep();			return;		}		int newCaret = getLineStartOffset(nextLine)			+ xToOffset(nextLine,magic + 1);		if(select)			extendSelection(caret,newCaret);		else if(!multi)			selectNone();		moveCaretPosition(newCaret);		setMagicCaretPosition(magic);	}	/**	 * Moves the caret to the next marker.	 * @since jEdit 2.7pre2	 */	public void goToNextMarker(boolean select)	{		Vector markers = buffer.getMarkers();		Marker marker = null;		for(int i = 0; i < markers.size(); i++)		{			Marker _marker = (Marker)markers.elementAt(i);			if(_marker.getPosition() > caret)			{				marker = _marker;				break;			}		}		if(marker == null)			getToolkit().beep();		else		{			if(select)				extendSelection(caret,marker.getPosition());			else if(!multi)				selectNone();			moveCaretPosition(marker.getPosition());		}	}	/**	 * Moves the caret to the next screenful.	 * @since jEdit 2.7pre2.	 */	public void goToNextPage(boolean select)	{		int lineCount = buffer.getVirtualLineCount();		int magic = getMagicCaretPosition();		if(firstLine + visibleLines * 2 >= lineCount - 1)			setFirstLine(lineCount - visibleLines);		else			setFirstLine(firstLine + visibleLines);		int newLine = buffer.virtualToPhysical(Math.min(lineCount - 1,			buffer.physicalToVirtual(caretLine) + visibleLines));		int newCaret = getLineStartOffset(newLine)			+ xToOffset(newLine,magic + 1);		if(select)			extendSelection(caret,newCaret);		else if(!multi)			selectNone();		moveCaretPosition(newCaret);		setMagicCaretPosition(magic);	}	/**	 * 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(!buffer.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);	}	/**	 * Moves the caret to the start of the next word.	 * @since jEdit 2.7pre2	 */	public void goToNextWord(boolean select)	{		int lineStart = getLineStartOffset(caretLine);		int newCaret = caret - lineStart;		String lineText = getLineText(caretLine);		if(newCaret == lineText.length())		{			int nextLine = buffer.getNextVisibleLine(caretLine);			if(nextLine == -1)			{				getToolkit().beep();				return;			}			newCaret = getLineStartOffset(nextLine);		}		else		{			String noWordSep = (String)buffer.getProperty("noWordSep");			newCaret = TextUtilities.findWordEnd(lineText,newCaret + 1,noWordSep)				+ lineStart;		}		if(select)			extendSelection(caret,newCaret);		else if(!multi)			selectNone();		moveCaretPosition(newCaret);	}	/**	 * 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);		}	}	/**	 * 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 = buffer.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);	}	/**	 * Moves the caret to the previous line.	 * @since jEdit 2.7pre2	 */	public void goToPrevLine(boolean select)	{		int magic = getMagicCaretPosition();		int prevLine = buffer.getPrevVisibleLine(caretLine);		if(prevLine == -1)		{			getToolkit().beep();			return;		}		int newCaret = getLineStartOffset(prevLine) + xToOffset(prevLine,magic + 1);		if(select)			extendSelection(caret,newCaret);		else if(!multi)			selectNone();		moveCaretPosition(newCaret);		setMagicCaretPosition(magic);	}	/**	 * Moves the caret to the previous marker.	 * @since jEdit 2.7pre2	 */	public void goToPrevMarker(boolean select)	{		Vector markers = buffer.getMarkers();		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)			getToolkit().beep();		else		{			if(select)				extendSelection(caret,marker.getPosition());			else if(!multi)				selectNone();			moveCaretPosition(marker.getPosition());		}	}	/**	 * 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 = buffer.virtualToPhysical(Math.max(0,			buffer.physicalToVirtual(caretLine) - visibleLines));		int newCaret = getLineStartOffset(newLine)			+ xToOffset(newLine,magic + 1);		if(select)			extendSelection(caret,newCaret);		else if(!multi)			selectNone();		moveCaretPosition(newCaret);		setMagicCaretPosition(magic);	}	/**	 * 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(!buffer.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);	}	/**	 * Moves the caret to the start of the previous word.	 * @since jEdit 2.7pre2	 */	public void goToPrevWord(boolean select)	{		int lineStart = getLineStartOffset(caretLine);		int newCaret = caret - lineStart;		String lineText = getLineText(caretLine);		if(newCaret == 0)		{			if(lineStart == 0)			{				view.getToolkit().beep();				return;			}			else			{				int prevLine = buffer.getPrevVisibleLine(caretLine);				if(prevLine == -1)				{					getToolkit().beep();					return;				}				newCaret = getLineEndOffset(prevLine) - 1;			}		}		else		{			String noWordSep = (String)buffer.getProperty("noWordSep");			newCaret = TextUtilities.findWordStart(lineText,newCaret - 1,noWordSep)				+ lineStart;		}		if(select)			extendSelection(caret,newCaret);		else if(!multi)			selectNone();		moveCaretPosition(newCaret);	}	/**	 * On subsequent invocations, first moves the caret to the first	 * non-whitespace character of the line, then the beginning of the	 * line, then to the first visible line.	 * @since jEdit 2.7pre2	 */	public void smartHome(boolean select)	{		if(!jEdit.getBooleanProperty("view.homeEnd"))			goToStartOfLine(select);		else		{			switch(view.getInputHandler().getLastActionCount())			{			case 1:				goToStartOfWhiteSpace(select);				break;			case 2:				goToStartOfLine(select);				break;			default: //case 3:				goToFirstVisibleLine(select);				break;			}		}	}	/**	 * On subsequent invocations, first moves the caret to the last	 * non-whitespace character of the line, then the end of the	 * line, then to the last visible line.	 * @since jEdit 2.7pre2	 */	public void smartEnd(boolean select)	{		if(!jEdit.getBooleanProperty("view.homeEnd"))			goToEndOfLine(select);		else		{			switch(view.getInputHandler().getLastActionCount())			{			case 1:				goToEndOfWhiteSpace(select);				break;			case 2:				goToEndOfLine(select);				break;			default: //case 3:				goToLastVisibleLine(select);				break;			}		}	}	/**	 * Moves the caret to the beginning of the current line.	 * @since jEdit 2.7pre2	 */	public void goToStartOfLine(boolean select)	{		// do this here, for weird reasons		Macros.Recorder recorder = view.getMacroRecorder();		if(recorder != null)			recorder.record("textArea.goToStartOfLine(" + select + ");");		int newCaret = getLineStartOffset(getCaretLine());		if(select)			extendSelection(caret,newCaret);		else if(!multi)			selectNone();		moveCaretPosition(newCaret);	}	/**	 * Moves the caret to the end of the current line.	 * @since jEdit 2.7pre2	 */	public void goToEndOfLine(boolean select)	{		// do this here, for weird reasons		Macros.Recorder recorder = view.getMacroRecorder();		if(recorder != null)			recorder.record("textArea.goToEndOfLine(" + select + ");");		int newCaret = getLineEndOffset(getCaretLine()) - 1;		if(select)			extendSelection(caret,newCaret);		else if(!multi)			selectNone();		moveCaretPosition(newCaret);		// so that end followed by up arrow will always put caret at		// the end of the previous line, for example		setMagicCaretPosition(Integer.MAX_VALUE);	}	/**	 * Moves the caret to the first non-whitespace character of the current	 * line.	 * @since jEdit 2.7pre2	 */	public void goToStartOfWhiteSpace(boolean select)	{		// do this here, for weird reasons		Macros.Recorder recorder = view.getMacroRecorder();		if(recorder != null)			recorder.record("textArea.goToStartOfWhiteSpace(" + select + ");");		int firstIndent = MiscUtilities.getLeadingWhiteSpace(getLineText(caretLine));		int firstOfLine = getLineStartOffset(caretLine);		firstIndent = firstOfLine + firstIndent;		if(firstIndent == getLineEndOffset(caretLine) - 1)			firstIndent = firstOfLine;		if(select)			extendSelection(caret,firstIndent);		else if(!multi)			selectNone();		moveCaretPosition(firstIndent);	}	/**	 * Moves the caret to the last non-whitespace character of the current	 * line.	 * @since jEdit 2.7pre2	 */	public void goToEndOfWhiteSpace(boolean select)	{		// do this here, for weird reasons		Macros.Recorder recorder = view.getMacroRecorder();		if(recorder != null)			recorder.record("textArea.goToEndOfWhiteSpace(" + select + ");");		int lastIndent = MiscUtilities.getTrailingWhiteSpace(getLineText(caretLine));		int lastOfLine = getLineEndOffset(caretLine) - 1;		lastIndent = lastOfLine - lastIndent;		if(lastIndent == getLineStartOffset(caretLine))			lastIndent = lastOfLine;		if(select)			extendSelection(caret,lastIndent);		else if(!multi)			selectNone();		moveCaretPosition(lastIndent);	}	/**	 * Moves the caret to the first visible line.	 * @since jEdit 2.7pre2	 */	public void goToFirstVisibleLine(boolean select)	{		// do this here, for weird reasons		Macros.Recorder recorder = view.getMacroRecorder();		if(recorder != null)			recorder.record("textArea.goToFirstVisibleLine(" + select + ");");		int firstVisibleLine = (firstLine <= electricScroll) ? 0 :			firstLine + electricScroll;		if(firstVisibleLine >= getVirtualLineCount())			firstVisibleLine = getVirtualLineCount() - 1;		firstVisibleLine = buffer.virtualToPhysical(firstVisibleLine);		int firstVisible = getLineEndOffset(firstVisibleLine) - 1;		if(select)			extendSelection(caret,firstVisible);		else if(!multi)			selectNone();		moveCaretPosition(firs

⌨️ 快捷键说明

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