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

📄 cedtviewedit.cpp

📁 Crimson编辑器的英文版,完成从韩文版变成英文版的移植,并且附带可执行文件和注册表文件,无需原先的安装包,是改写编辑器的最理想选择.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	INT nLstX = GetLastIdxX( rString );

	if( nIdxX < nLstX ) {
		INT nEndX = GetNextWordIdxX(rLine, nIdxX);
		DeleteString(nIdxX, nIdxY, nEndX-nIdxX);
	} else if( nIdxY < GetLastIdxY() ) {
		if( nIdxX > nLstX ) {
			CString szInsert(' ', nIdxX - nLstX);
			InsertString(nLstX, nIdxY, szInsert);
		}
		JoinLines(nIdxX, nIdxY);
	}

	SetCaretPosY( GetPosYFromIdxY( nIdxX, nIdxY, ! m_bColumnMode ) );
	CFormatedString & rLne2 = GetLineFromPosY( m_nCaretPosY );
	SetCaretPosX( GetPosXFromIdxX( rLne2, nIdxX, ! m_bColumnMode ) );
}

void CCedtView::ActionDeletePrevWord()
{
	INT nIdxY = GetIdxYFromPosY( m_nCaretPosY );
	CFormatedString & rLine = GetLineFromPosY( m_nCaretPosY );
	INT nIdxX = GetIdxXFromPosX( rLine, m_nCaretPosX, ! m_bColumnMode );

	CAnalyzedString & rString = GetLineFromIdxY( nIdxY );
	INT nLstX = GetLastIdxX( rString );

	if( nIdxX > nLstX ) {
		nIdxX = GetTrailingBlankIdxX( rString );
		if( nIdxX < nLstX ) DeleteString(nIdxX, nIdxY, nLstX-nIdxX);
	} else if( nIdxX > 0 ) {
		INT nBegX = GetPrevWordIdxX(rLine, nIdxX-1);
		DeleteString(nBegX, nIdxY, nIdxX-nBegX); nIdxX = nBegX;
	} else if( nIdxY > 0 ) {
		CAnalyzedString & rStrn2 = GetLineFromIdxY( nIdxY-1 );
		nIdxY = nIdxY - 1; nIdxX = GetLastIdxX( rStrn2 );
		JoinLines(nIdxX, nIdxY);
	}

	SetCaretPosY( GetPosYFromIdxY( nIdxX, nIdxY, ! m_bColumnMode ) );
	CFormatedString & rLne2 = GetLineFromPosY( m_nCaretPosY );
	SetCaretPosX( GetPosXFromIdxX( rLne2, nIdxX, ! m_bColumnMode ) );
}

void CCedtView::ActionDeleteToEndOfLine()
{
	INT nIdxY = GetIdxYFromPosY( m_nCaretPosY );
	CFormatedString & rLine = GetLineFromPosY( m_nCaretPosY );
	INT nIdxX = GetIdxXFromPosX( rLine, m_nCaretPosX, ! m_bColumnMode );

	CAnalyzedString & rString = GetLineFromIdxY( nIdxY );
	INT nLstX = GetLastIdxX( rString );

	if( nIdxX < nLstX ) {
		DeleteString(nIdxX, nIdxY, nLstX-nIdxX);
	} else if( nIdxY < GetLastIdxY() ) {
		if( nIdxX > nLstX ) {
			CString szInsert(' ', nIdxX - nLstX);
			InsertString(nLstX, nIdxY, szInsert);
		}
		JoinLines(nIdxX, nIdxY);
	}

	SetCaretPosY( GetPosYFromIdxY( nIdxX, nIdxY, ! m_bColumnMode ) );
	CFormatedString & rLne2 = GetLineFromPosY( m_nCaretPosY );
	SetCaretPosX( GetPosXFromIdxX( rLne2, nIdxX, ! m_bColumnMode ) );
}

void CCedtView::ActionDeleteToBeginOfLine()
{
	INT nIdxY = GetIdxYFromPosY( m_nCaretPosY );
	CFormatedString & rLine = GetLineFromPosY( m_nCaretPosY );
	INT nIdxX = GetIdxXFromPosX( rLine, m_nCaretPosX, ! m_bColumnMode );

	CAnalyzedString & rString = GetLineFromIdxY( nIdxY );
	INT nLstX = GetLastIdxX( rString );

	if( nIdxX > nLstX ) {
		if( nLstX > 0 ) DeleteString(0, nIdxY, nLstX); 
		nIdxX = 0;
	} else if( nIdxX > 0 ) {
		DeleteString(0, nIdxY, nIdxX); 
		nIdxX = 0;
	} else if( nIdxY > 0 ) {
		CAnalyzedString & rStrn2 = GetLineFromIdxY( nIdxY-1 );
		nIdxY = nIdxY - 1; nIdxX = GetLastIdxX( rStrn2 );
		JoinLines(nIdxX, nIdxY);
	}

	SetCaretPosY( GetPosYFromIdxY( nIdxX, nIdxY, ! m_bColumnMode ) );
	CFormatedString & rLne2 = GetLineFromPosY( m_nCaretPosY );
	SetCaretPosX( GetPosXFromIdxX( rLne2, nIdxX, ! m_bColumnMode ) );
}

void CCedtView::ActionDeleteLine()
{
	INT nIdxY = GetIdxYFromPosY( m_nCaretPosY );
	CFormatedString & rLine = GetLineFromPosY( m_nCaretPosY );
	INT nIdxX = GetIdxXFromPosX( rLine, m_nCaretPosX, ! m_bColumnMode );

	CAnalyzedString & rString = GetLineFromIdxY( nIdxY );
	INT nLstX = GetLastIdxX( rString );

	if( nIdxY < GetLastIdxY() )
		DeleteLineSelection(0, nIdxY, 0, nIdxY+1);
	else
		DeleteString(0, nIdxY, nLstX);

	SetCaretPosY( GetPosYFromIdxY( nIdxX, nIdxY, ! m_bColumnMode ) );
	CFormatedString & rLne2 = GetLineFromPosY( m_nCaretPosY );
	SetCaretPosX( GetPosXFromIdxX( rLne2, nIdxX, ! m_bColumnMode ) );
}

void CCedtView::ActionDuplicateLine()
{
	INT nIdxY = GetIdxYFromPosY( m_nCaretPosY );
	CFormatedString & rLine = GetLineFromPosY( m_nCaretPosY );
	INT nIdxX = GetIdxXFromPosX( rLine, m_nCaretPosX, ! m_bColumnMode );

	CAnalyzedString & rString = GetLineFromIdxY( nIdxY );
	INT nLstX = GetLastIdxX( rString );

	SplitLine(nLstX, nIdxY);
	InsertString(0, nIdxY+1, rString);
	nIdxY = nIdxY + 1;

	SetCaretPosY( GetPosYFromIdxY( nIdxX, nIdxY, ! m_bColumnMode ) );
	CFormatedString & rLne2 = GetLineFromPosY( m_nCaretPosY );
	SetCaretPosX( GetPosXFromIdxX( rLne2, nIdxX, ! m_bColumnMode ) );
}

void CCedtView::ActionIndentLine()
{
	INT nIdxY = GetIdxYFromPosY( m_nCaretPosY );
	CFormatedString & rLine = GetLineFromPosY( m_nCaretPosY );
	INT nIdxX = GetIdxXFromPosX( rLine, m_nCaretPosX, ! m_bColumnMode );

	nIdxX = nIdxX + IndentLine(nIdxY);

	SetCaretPosY( GetPosYFromIdxY( nIdxX, nIdxY, ! m_bColumnMode ) );
	CFormatedString & rLne2 = GetLineFromPosY( m_nCaretPosY );
	SetCaretPosX( GetPosXFromIdxX( rLne2, nIdxX, ! m_bColumnMode ) );
}

void CCedtView::ActionUnindentLine()
{
	INT nIdxY = GetIdxYFromPosY( m_nCaretPosY );
	CFormatedString & rLine = GetLineFromPosY( m_nCaretPosY );
	INT nIdxX = GetIdxXFromPosX( rLine, m_nCaretPosX, ! m_bColumnMode );

	nIdxX = nIdxX - UnindentLine(nIdxY);

	SetCaretPosY( GetPosYFromIdxY( nIdxX, nIdxY, ! m_bColumnMode ) );
	CFormatedString & rLne2 = GetLineFromPosY( m_nCaretPosY );
	SetCaretPosX( GetPosXFromIdxX( rLne2, nIdxX, ! m_bColumnMode ) );
}

void CCedtView::ActionMakeCommentLine()
{
	INT nIdxY = GetIdxYFromPosY( m_nCaretPosY );
	CFormatedString & rLine = GetLineFromPosY( m_nCaretPosY );
	INT nIdxX = GetIdxXFromPosX( rLine, m_nCaretPosX, ! m_bColumnMode );

	nIdxX = nIdxX + MakeCommentLine(nIdxY);

	SetCaretPosY( GetPosYFromIdxY( nIdxX, nIdxY, ! m_bColumnMode ) );
	CFormatedString & rLne2 = GetLineFromPosY( m_nCaretPosY );
	SetCaretPosX( GetPosXFromIdxX( rLne2, nIdxX, ! m_bColumnMode ) );
}

void CCedtView::ActionReleaseCommentLine()
{
	INT nIdxY = GetIdxYFromPosY( m_nCaretPosY );
	CFormatedString & rLine = GetLineFromPosY( m_nCaretPosY );
	INT nIdxX = GetIdxXFromPosX( rLine, m_nCaretPosX, ! m_bColumnMode );

	nIdxX = nIdxX - ReleaseCommentLine(nIdxY);

	SetCaretPosY( GetPosYFromIdxY( nIdxX, nIdxY, ! m_bColumnMode ) );
	CFormatedString & rLne2 = GetLineFromPosY( m_nCaretPosY );
	SetCaretPosX( GetPosXFromIdxX( rLne2, nIdxX, ! m_bColumnMode ) );
}

////////////////////////////////////////////////
// BASIC EDITING FUNCTIONS
void CCedtView::InsertChar(INT nIdxX, INT nIdxY, UINT nChar)
{
	CCedtDoc * pDoc = (CCedtDoc *)GetDocument();
	pDoc->InsertChar(nIdxX, nIdxY, nChar);

	pDoc->AnalyzeText(nIdxY, 1);
	pDoc->FormatScreenText(nIdxY, 1);
}

void CCedtView::DeleteChar(INT nIdxX, INT nIdxY)
{
	CCedtDoc * pDoc = (CCedtDoc *)GetDocument();
	pDoc->DeleteChar(nIdxX, nIdxY);

	pDoc->AnalyzeText(nIdxY, 1);
	pDoc->FormatScreenText(nIdxY, 1);
}

void CCedtView::CopyToString(CString & rString, INT nIdxX, INT nIdxY, INT nLength)
{
	CCedtDoc * pDoc = (CCedtDoc *)GetDocument();
	pDoc->CopyToString(rString, nIdxX, nIdxY, nLength);
}

void CCedtView::InsertString(INT nIdxX, INT nIdxY, LPCTSTR lpszString)
{
	CCedtDoc * pDoc = (CCedtDoc *)GetDocument();
	pDoc->InsertString(nIdxX, nIdxY, lpszString);

	pDoc->AnalyzeText(nIdxY, 1);
	pDoc->FormatScreenText(nIdxY, 1);
}

void CCedtView::DeleteString(INT nIdxX, INT nIdxY, INT nLength)
{
	CCedtDoc * pDoc = (CCedtDoc *)GetDocument();
	pDoc->DeleteString(nIdxX, nIdxY, nLength);

	pDoc->AnalyzeText(nIdxY, 1);
	pDoc->FormatScreenText(nIdxY, 1);
}

void CCedtView::SplitLine(INT nIdxX, INT nIdxY)
{
	CCedtDoc * pDoc = (CCedtDoc *)GetDocument();
	pDoc->SplitLine(nIdxX, nIdxY); pDoc->InsertScreenText(nIdxY, 1);

	pDoc->AnalyzeText(nIdxY, 2);
	pDoc->FormatScreenText(nIdxY, 2);
}

void CCedtView::JoinLines(INT nIdxX, INT nIdxY)
{
	CCedtDoc * pDoc = (CCedtDoc *)GetDocument();
	pDoc->JoinLines(nIdxX, nIdxY); pDoc->RemoveScreenText(nIdxY+1, 1);

	pDoc->AnalyzeText(nIdxY, 1);
	pDoc->FormatScreenText(nIdxY, 1);
}

INT CCedtView::IndentLine(INT nIdxY)
{
	CCedtDoc * pDoc = (CCedtDoc *)GetDocument();
	INT nLen = pDoc->IndentLine(nIdxY, m_nTabSize, m_bUseSpacesInPlaceOfTab);

	pDoc->AnalyzeText(nIdxY, 1);
	pDoc->FormatScreenText(nIdxY, 1); 

	return nLen;
}

INT CCedtView::UnindentLine(INT nIdxY)
{
	CCedtDoc * pDoc = (CCedtDoc *)GetDocument();
	INT nLen = pDoc->UnindentLine(nIdxY, m_nTabSize);

	pDoc->AnalyzeText(nIdxY, 1);
	pDoc->FormatScreenText(nIdxY, 1);
	
	return nLen;
}

INT CCedtView::MakeCommentLine(INT nIdxY)
{
	CCedtDoc * pDoc = (CCedtDoc *)GetDocument();
	INT nLen = pDoc->MakeCommentLine(nIdxY); if( ! nLen ) return 0;

	pDoc->AnalyzeText(nIdxY, 1);
	pDoc->FormatScreenText(nIdxY, 1);
	
	return nLen;
}

INT CCedtView::ReleaseCommentLine(INT nIdxY)
{
	CCedtDoc * pDoc = (CCedtDoc *)GetDocument();
	INT nLen = pDoc->ReleaseCommentLine(nIdxY); if( ! nLen ) return 0;

	pDoc->AnalyzeText(nIdxY, 1);
	pDoc->FormatScreenText(nIdxY, 1);
	
	return nLen;
}

INT CCedtView::ConvertTabsToSpaces(INT nIdxY)
{
	CCedtDoc * pDoc = (CCedtDoc *)GetDocument();
	INT nTab = pDoc->ConvertTabsToSpaces(nIdxY); if( ! nTab ) return 0;

	pDoc->AnalyzeText(nIdxY, 1);
	pDoc->FormatScreenText(nIdxY, 1); 
	
	return nTab;
}

INT CCedtView::ConvertSpacesToTabs(INT nIdxY)
{
	CCedtDoc * pDoc = (CCedtDoc *)GetDocument();
	INT nTab = pDoc->ConvertSpacesToTabs(nIdxY); if( ! nTab ) return 0;

	pDoc->AnalyzeText(nIdxY, 1);
	pDoc->FormatScreenText(nIdxY, 1);
	
	return nTab;
}

INT CCedtView::LeadingSpacesToTabs(INT nIdxY)
{
	CCedtDoc * pDoc = (CCedtDoc *)GetDocument();
	INT nTab = pDoc->LeadingSpacesToTabs(nIdxY); if( ! nTab ) return 0;

	pDoc->AnalyzeText(nIdxY, 1);
	pDoc->FormatScreenText(nIdxY, 1);
	
	return nTab;
}

INT CCedtView::DeleteLeadingSpaces(INT nIdxY)
{
	CCedtDoc * pDoc = (CCedtDoc *)GetDocument();
	INT nLen = pDoc->DeleteLeadingSpaces(nIdxY); if( ! nLen ) return 0;

	pDoc->AnalyzeText(nIdxY, 1);
	pDoc->FormatScreenText(nIdxY, 1);
	
	return nLen;
}

INT CCedtView::DeleteTrailingSpaces(INT nIdxY)
{
	CCedtDoc * pDoc = (CCedtDoc *)GetDocument();
	INT nLen = pDoc->DeleteTrailingSpaces(nIdxY); if( ! nLen ) return 0;

	pDoc->AnalyzeText(nIdxY, 1);
	pDoc->FormatScreenText(nIdxY, 1);
	
	return nLen;
}



⌨️ 快捷键说明

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