>タイトル: Re11: インデント表示機能追加のご相談
>発言者: げんた
>>なんか,折り返し2行目以降は半角は1文字,全角は3文字でカウントされているみたい.
>1.3.1.3→1.3.1.4の間で入ったみたいです.
こんな感じで直ります。
diff -rc E:\サクラエディタ\ssrc_2002-10-03_org\sakura_core/CEditView.cpp E:\サクラエディタ\ssrc_2002-10-03\sakura_core/CEditView.cpp
*** E:\サクラエディタ\ssrc_2002-10-03_org\sakura_core/CEditView.cpp Tue Oct 01 17:33:40 2002
--- E:\サクラエディタ\ssrc_2002-10-03\sakura_core/CEditView.cpp Fri Oct 04 02:08:00 2002
***************
*** 5722,5742 ****
int nPosX, nPosY;
if( m_pcEditDoc->GetDocumentAttribute().m_bL
ineNumIsCRLF ){ /* 行番号の表示 FALSE=折り返し単位/TRUE=改行単位 */
if (pcLayout && pcLayout->m_nOffset){
! char* pLine = pcLayout->m_pCDocLine->GetPtr();
! int nLineLen = m_nCaretPosX_PHY; // - pcLayout->m_nOffset;
! nPosX = 0;
! int i;
! for( i = 0; i < nLineLen; ++i ){
! int nCharChars = CMemory::MemCharNext( (const char *)pLine, nLineLen, (const char *)&pLine[i] ) - (const char *)&pLine[i];
! if ( nCharChars == 1 && pLine[i] == TAB ){
! // Sep. 23, 2002 genta LayoutMgrの値を使う
! nPosX += m_pcEditDoc->m_cLayoutMgr.GetActualTabSpace( nPosX );
! }
! else {
! nPosX += nCharChars;
}
}
! nPosX ++; // 補正
}
else {
nPosX = m_nCaretPosX + 1;
--- 5722,5736 ----
int nPosX, nPosY;
if( m_pcEditDoc->GetDocumentAttribute().m_bL
ineNumIsCRLF ){ /* 行番号の表示 FALSE=折り返し単位/TRUE=改行単位 */
if (pcLayout && pcLayout->m_nOffset){
! CMemoryIterator<CDocLine> it( pcLayout->m_pCDocLine, m_pcEditDoc->m_cLayoutMgr.GetTabSpace() );
! for( it.first(); !it.end(); ){
! it.scanNext();
! if ( it.getIndex() + it.getIndexDelta() > m_nCaretPosX_PHY ){
! break;
}
+ it.addDelta();
}
! nPosX = it.getColumn() + 1;
}
else {
nPosX = m_nCaretPosX + 1;