View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0001879 | Far Manager | Plugins API.Editor | public | 2011-09-14 14:35 | 2015-12-07 13:34 |
Reporter | Maximus | Assigned To | vskirdin | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Product Version | 3.0 | ||||
Fixed in Version | 3.0 | ||||
Summary | 0001879: Фар игнорирует заданное плагином отсутствие EOL | ||||
Description | Плагин сказал "EOL не нужен". Зачем фар пишет дефолтный после каждой строки? | ||||
Tags | No tags attached. | ||||
Build | 2660 | ||||
|
Eol.diff (506 bytes)
Index: fileedit.cpp =================================================================== --- fileedit.cpp (revision 6691) +++ fileedit.cpp (working copy) @@ -1960,7 +1960,8 @@ CurPtr->GetBinaryString(&SaveStr,&EndSeq,Length); - if (!*EndSeq && CurPtr->m_next) + // ���� ������ ������ - EOL �� �����, ���� ��� ��� ����? + if (!*EndSeq && CurPtr->m_next && (*CurPtr->GetEOL())) EndSeq=*m_editor->GlobalEOL ? m_editor->GlobalEOL:DOS_EOL_fmt; if (TextFormat && *EndSeq) |
|
EOL.110925.diff (3,307 bytes)
Index: editor.cpp =================================================================== --- editor.cpp (revision 6730) +++ editor.cpp (working copy) @@ -1664,6 +1664,7 @@ CurLine->GetSelection(SelStart,SelEnd); CurLine->m_next->GetSelection(NextSelStart,NextSelEnd); const wchar_t *Str; + const wchar_t *NextEOL = CurLine->m_next->GetEOL(); int NextLength; CurLine->m_next->GetBinaryString(&Str,nullptr,NextLength); CurLine->InsertBinaryString(Str,NextLength); @@ -1671,9 +1672,9 @@ CurLine->SetCurPos(CurPos); DeleteString(CurLine->m_next,NumLine+1,TRUE,NumLine+1); - if (!NextLength) - CurLine->SetEOL(L""); + CurLine->SetEOL(NextEOL); + if (NextSelStart!=-1) { if (SelStart==-1) @@ -3273,8 +3274,6 @@ ���� �� �� ��������� ��� ���� ������, �� ������ ��� ���� ������ � ��� ����� DOS_EOL_fmt � ��������� ��� ����. */ - if (!*EndSeq) - CurLine->SetEOL(*GlobalEOL?GlobalEOL:DOS_EOL_fmt); CurPos=CurLine->GetCurPos(); CurLine->GetSelection(SelStart,SelEnd); @@ -3355,7 +3354,7 @@ AddUndoData(UNDO_BEGIN); AddUndoData(UNDO_EDIT,CurLine->GetStringAddr(),CurLine->GetEOL(),NumLine, CurLine->GetCurPos(),CurLine->GetLength()); - AddUndoData(UNDO_INSSTR,nullptr,EndList==CurLine?L"":GlobalEOL,NumLine+1,0); // EOL? - CurLine->GetEOL() GlobalEOL "" + AddUndoData(UNDO_INSSTR,nullptr,CurLine->GetEOL(),NumLine+1,0); // EOL? - CurLine->GetEOL() GlobalEOL "" AddUndoData(UNDO_END); wchar_t *NewCurLineStr = (wchar_t *) xf_malloc((CurPos+1)*sizeof(wchar_t)); @@ -3373,15 +3372,24 @@ } CurLine->SetBinaryString(NewCurLineStr,StrSize); - CurLine->SetEOL(EndSeq); xf_free(NewCurLineStr); } else { NewString->SetString(L""); - AddUndoData(UNDO_INSSTR,nullptr,L"",NumLine+1,0);// EOL? - CurLine->GetEOL() GlobalEOL "" + AddUndoData(UNDO_INSSTR,nullptr,CurLine->GetEOL(),NumLine+1,0);// EOL? - CurLine->GetEOL() GlobalEOL "" } + if (EndSeq && *EndSeq) + { + CurLine->SetEOL(EndSeq); + } + else + { + CurLine->SetEOL(*GlobalEOL?GlobalEOL:DOS_EOL_fmt); + NewString->SetEOL(EndSeq); + } + if (VBlockStart && NumLine<VBlockY+VBlockSizeY) { if (NumLine<VBlockY) Index: edit.cpp =================================================================== --- edit.cpp (revision 6730) +++ edit.cpp (working copy) @@ -347,12 +347,12 @@ if (Mask && *Mask) RefreshStrByMask(); - wchar_t *OutStrTmp=(wchar_t *)xf_malloc((EditLength+1)*sizeof(wchar_t)); + wchar_t *OutStrTmp=(wchar_t *)xf_malloc((EditLength+2)*sizeof(wchar_t)); if (!OutStrTmp) return; - wchar_t *OutStr=(wchar_t *)xf_malloc((EditLength+1)*sizeof(wchar_t)); + wchar_t *OutStr=(wchar_t *)xf_malloc((EditLength+2)*sizeof(wchar_t)); if (!OutStr) { @@ -411,6 +411,13 @@ if (Flags.Check(FEDITLINE_PASSWORDMODE)) wmemset(OutStr,L'*',OutStrLength); } + + if (Flags.Check(FEDITLINE_SHOWWHITESPACE) && Flags.Check(FEDITLINE_EDITORMODE) && (OutStrLength < EditLength)) + { + const wchar_t* EndSeq = GetEOL(); + if (EndSeq && *EndSeq) + OutStr[OutStrLength++]=L'\xB6'; //L'\x266A'; + } OutStr[OutStrLength]=0; SetColor(Color); |
|
Довесок. Исправления перевода и удаления строк. |
|
Ээээ, хотелось бы знать, фартим принципиально не хочет добавлять данный патч в транк, или он потерялся? Если просто потерялся - обновление доложу, а нет - ну и нафиг. |
|
потерялся - докладывай |
|
ok, вечером будет |
|
Eol.120502.diff (4,145 bytes)
Index: editor.cpp =================================================================== --- editor.cpp (revision 7991) +++ editor.cpp (working copy) @@ -1662,6 +1662,7 @@ CurLine->GetSelection(SelStart,SelEnd); CurLine->m_next->GetSelection(NextSelStart,NextSelEnd); const wchar_t *Str; + const wchar_t *NextEOL = CurLine->m_next->GetEOL(); int NextLength; CurLine->m_next->GetBinaryString(&Str,nullptr,NextLength); CurLine->InsertBinaryString(Str,NextLength); @@ -1669,8 +1670,7 @@ CurLine->SetCurPos(CurPos); DeleteString(CurLine->m_next,NumLine+1,TRUE,NumLine+1); - if (!NextLength) - CurLine->SetEOL(L""); + CurLine->SetEOL(NextEOL); if (NextSelStart!=-1) { @@ -3270,12 +3270,6 @@ const wchar_t *EndSeq; CurLine->GetBinaryString(&CurLineStr,&EndSeq,Length); - /* $ 13.01.2002 IS - ���� �� �� ��������� ��� ���� ������, �� ������ ��� ���� ������ - � ��� ����� DOS_EOL_fmt � ��������� ��� ����. - */ - if (!*EndSeq) - CurLine->SetEOL(*GlobalEOL?GlobalEOL:DOS_EOL_fmt); CurPos=CurLine->GetCurPos(); CurLine->GetSelection(SelStart,SelEnd); @@ -3356,7 +3350,7 @@ AddUndoData(UNDO_BEGIN); AddUndoData(UNDO_EDIT,CurLine->GetStringAddr(),CurLine->GetEOL(),NumLine, CurLine->GetCurPos(),CurLine->GetLength()); - AddUndoData(UNDO_INSSTR,nullptr,EndList==CurLine?L"":GlobalEOL,NumLine+1,0); // EOL? - CurLine->GetEOL() GlobalEOL "" + AddUndoData(UNDO_INSSTR,nullptr,CurLine->GetEOL(),NumLine+1,0); AddUndoData(UNDO_END); wchar_t *NewCurLineStr = (wchar_t *) xf_malloc((CurPos+1)*sizeof(wchar_t)); @@ -3374,15 +3368,25 @@ } CurLine->SetBinaryString(NewCurLineStr,StrSize); - CurLine->SetEOL(EndSeq); xf_free(NewCurLineStr); Change(ECTYPE_CHANGED,NumLine); } else { NewString->SetString(L""); - AddUndoData(UNDO_INSSTR,nullptr,L"",NumLine+1,0);// EOL? - CurLine->GetEOL() GlobalEOL "" + AddUndoData(UNDO_INSSTR,nullptr,CurLine->GetEOL(),NumLine+1,0); } + + if (EndSeq && *EndSeq) + { + CurLine->SetEOL(EndSeq); + } + else + { + CurLine->SetEOL(*GlobalEOL?GlobalEOL:DOS_EOL_fmt); + NewString->SetEOL(EndSeq); + } + Change(ECTYPE_CHANGED,NumLine+1); if (VBlockStart && NumLine<VBlockY+VBlockSizeY) @@ -4118,10 +4122,24 @@ CurLine->Select(StartPos,-1); StartPos=0; EdOpt.AutoIndent=FALSE; + Edit *PrevLine=CurLine; ProcessKey(KEY_ENTER); + _ASSERTE(PrevLine!=CurLine); + wchar_t ClipEol[4] = {ClipText[I]}; + if (ClipText[I]==L'\r' && ClipText[I+1]==L'\n') + { + ClipEol[1]=L'\n'; + if (ClipText[I+2]==L'\n') + ClipEol[2]=L'\n'; // \r\n\n + } + PrevLine->SetEOL(ClipEol); if (ClipText[I]==L'\r' && ClipText[I+1]==L'\n') + { I++; + if (ClipText[I+1]==L'\n') + I++; // \r\n\n + } I++; } @@ -4213,6 +4231,7 @@ size_t TotalChars = DataSize; int StartSel, EndSel; + const wchar_t* Eol; for (Edit *Ptr = BlockStart; Ptr; Ptr = Ptr->m_next) { Ptr->GetSelection(StartSel, EndSel); @@ -4221,7 +4240,9 @@ if (EndSel == -1) { TotalChars += Ptr->GetLength() - StartSel; - TotalChars += 2; // CRLF + Eol = Ptr->GetEOL(); + TotalChars += wcslen(Eol); // CRLF/CRCRLF/... + } else TotalChars += EndSel - StartSel; @@ -4266,8 +4287,13 @@ if (EndSel == -1) { - wcscpy(CopyData + DataSize, DOS_EOL_fmt); - DataSize += 2; + Eol = Ptr->GetEOL(); + if (*Eol) + { + wcscpy(CopyData + DataSize, Eol); + DataSize += wcslen(Eol); + } + } } Index: fileedit.cpp =================================================================== --- fileedit.cpp (revision 7991) +++ fileedit.cpp (working copy) @@ -1972,7 +1972,7 @@ CurPtr->GetBinaryString(&SaveStr,&EndSeq,Length); - if (!*EndSeq && CurPtr->m_next) + if (!*EndSeq && CurPtr->m_next && (*CurPtr->GetEOL())) EndSeq=*m_editor->GlobalEOL ? m_editor->GlobalEOL:DOS_EOL_fmt; if (TextFormat && *EndSeq) |
|
DropModified.diff (740 bytes)
Index: editor.cpp =================================================================== --- editor.cpp (revision 7991) +++ editor.cpp (working copy) @@ -6190,6 +6190,11 @@ return FALSE; } + case ECTL_DROPMODIFEDFLAG: + { + Flags.Clear(FEDITOR_MODIFIED); + return TRUE; + } } return FALSE; Index: plugin.hpp =================================================================== --- plugin.hpp (revision 7991) +++ plugin.hpp (working copy) @@ -1499,6 +1499,7 @@ ECTL_UNDOREDO = 32, ECTL_GETFILENAME = 33, ECTL_DELCOLOR = 34, + ECTL_DROPMODIFEDFLAG = 35, #ifdef FAR_USE_INTERNALS ECTL_SERVICEREGION, #endif // END FAR_USE_INTERNALS |
|
Eol.120502.diff - сводный, вроде ничего не забыл ) DropModified.diff - нужен, чтобы после "прозрачного заворота" строк в редакторе не появлялся признак модифицирован (если его раньше не было). |
|
Господа, в морг такие костыли. Сворачивание строк надо делать только на уровне отрисовки редактора. |
|
2 патча применять, да? если да, то по последнему для ECTL_DROPMODIFEDFLAG давай патч под Писание. |
|
> Господа, в морг такие костыли. Это про DropModified.diff? |
|
Да. |
|
build 2658 |
|
ansi.diff (645 bytes)
Index: PluginA.cpp =================================================================== --- PluginA.cpp (revision 7991) +++ PluginA.cpp (working copy) @@ -4653,7 +4653,8 @@ newss.StringNumber=oldss->StringNumber; UINT CodePage=GetEditorCodePageA(); newss.StringText=(oldss->StringText)?AnsiToUnicodeBin(oldss->StringText, oldss->StringLength,CodePage):nullptr; - newss.StringEOL=(oldss->StringEOL)?AnsiToUnicode(oldss->StringEOL,CodePage):nullptr; + newss.StringEOL=(oldss->StringEOL && *oldss->StringEOL)?AnsiToUnicode(oldss->StringEOL,CodePage):nullptr; + newss.StringLength=oldss->StringLength; } |
|
про анси плагины забыл. чтобы они работали "как раньше". |
|
build 2660 |
|
ok |
Date Modified | Username | Field | Change |
---|---|---|---|
2011-09-14 14:35 | Maximus | New Issue | |
2011-09-14 14:35 | Maximus | File Added: Eol.diff | |
2011-09-26 06:43 | Maximus | File Added: EOL.110925.diff | |
2011-09-26 06:44 | Maximus | Note Added: 0007740 | |
2012-04-16 19:12 | Maximus | Note Added: 0008913 | |
2012-05-02 06:37 | vskirdin | Note Added: 0009085 | |
2012-05-02 06:44 | Maximus | Note Added: 0009086 | |
2012-05-03 07:12 | Maximus | File Added: Eol.120502.diff | |
2012-05-03 07:17 | Maximus | File Added: DropModified.diff | |
2012-05-03 07:20 | Maximus | Note Added: 0009097 | |
2012-05-03 07:40 | DrKnS | Note Added: 0009099 | |
2012-05-03 08:08 | vskirdin | Note Added: 0009100 | |
2012-05-03 08:22 | vskirdin | Note Added: 0009101 | |
2012-05-03 10:01 | DrKnS | Note Added: 0009102 | |
2012-05-03 11:23 | vskirdin | Note Added: 0009103 | |
2012-05-03 11:23 | vskirdin | Assigned To | => vskirdin |
2012-05-03 11:23 | vskirdin | Status | new => feedback |
2012-05-03 13:46 | Maximus | File Added: ansi.diff | |
2012-05-03 13:48 | Maximus | Note Added: 0009104 | |
2012-05-03 13:48 | Maximus | Status | feedback => assigned |
2012-05-04 11:15 | vskirdin | Note Added: 0009107 | |
2012-05-04 11:15 | vskirdin | Status | assigned => feedback |
2012-05-11 07:18 | Maximus | Note Added: 0009141 | |
2012-05-11 07:18 | Maximus | Status | feedback => assigned |
2012-05-11 07:18 | Maximus | Status | assigned => resolved |
2012-05-11 07:21 | vskirdin | Build | => 2660 |
2012-05-11 07:21 | vskirdin | Status | resolved => closed |
2012-05-11 07:21 | vskirdin | Resolution | open => fixed |
2012-05-11 07:21 | vskirdin | Fixed in Version | => 3.0 |
2012-11-03 23:39 | shmuel | Relationship added | related to 0002183 |
2015-12-07 13:34 | shmuel | Relationship added | related to 0003129 |