Skip to content

Commit

Permalink
Make it possible to transform the text copied with "Copy Right/Left" …
Browse files Browse the repository at this point in the history
…using a plugin. (#2238)
  • Loading branch information
sdottaka authored Mar 7, 2024
1 parent 87d2159 commit d480ce7
Show file tree
Hide file tree
Showing 53 changed files with 356 additions and 45 deletions.
24 changes: 0 additions & 24 deletions Src/DiffTextBuffer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -561,30 +561,6 @@ int CDiffTextBuffer::SaveToFile (const String& pszFileName,
return SAVE_FAILED;
}

/// Replace line (removing any eol, and only including one if in strText)
void CDiffTextBuffer::ReplaceFullLines(CDiffTextBuffer& dbuf, CDiffTextBuffer& sbuf, CCrystalTextView * pSource, int nLineBegin, int nLineEnd, int nAction /*=CE_ACTION_UNKNOWN*/)
{
String strText;
if (nLineBegin != nLineEnd || sbuf.GetLineLength(nLineEnd) > 0)
sbuf.GetTextWithoutEmptys(nLineBegin, 0, nLineEnd, sbuf.GetLineLength(nLineEnd), strText);
strText += sbuf.GetLineEol(nLineEnd);

if (nLineBegin != nLineEnd || dbuf.GetFullLineLength(nLineEnd) > 0)
{
int nLineEndSource = nLineEnd < dbuf.GetLineCount() ? nLineEnd : dbuf.GetLineCount();
if (nLineEnd+1 < GetLineCount())
dbuf.DeleteText(pSource, nLineBegin, 0, nLineEndSource + 1, 0, nAction);
else
dbuf.DeleteText(pSource, nLineBegin, 0, nLineEndSource, dbuf.GetLineLength(nLineEndSource), nAction);
}

if (size_t cchText = strText.length())
{
int endl,endc;
dbuf.InsertText(pSource, nLineBegin, 0, strText.c_str(), cchText, endl, endc, nAction);
}
}

bool CDiffTextBuffer::curUndoGroup()
{
return (m_aUndoBuf.size() != 0 && m_aUndoBuf[0].m_dwFlags&UNDO_BEGINGROUP);
Expand Down
1 change: 0 additions & 1 deletion Src/DiffTextBuffer.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@ public :
int nActionType = CE_ACTION_UNKNOWN,
std::vector<uint32_t> *paSavedRevisionNumbers = nullptr) override;
bool curUndoGroup();
void ReplaceFullLines(CDiffTextBuffer& dbuf, CDiffTextBuffer& sbuf, CCrystalTextView * pSource, int nLineBegin, int nLineEnd, int nAction =CE_ACTION_UNKNOWN);

int LoadFromFile(const tchar_t* pszFileName, PackingInfo& infoUnpacker,
const tchar_t* filteredFilenames, bool & readOnly, CRLFSTYLE nCrlfStyle,
Expand Down
13 changes: 10 additions & 3 deletions Src/FileTransform.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -791,7 +791,7 @@ CreatePluginMenuInfos(const String& filteredFilenames, const std::vector<std::ws
std::vector<std::tuple<String, String, unsigned, PluginInfo *>> suggestedPlugins;
std::map<String, std::vector<std::tuple<String, String, unsigned, PluginInfo *>>> allPlugins;
std::map<String, int> captions;
unsigned id = baseId;
unsigned id = baseId + 2;
bool addedNoneAutomatic = false;
static PluginInfo noPlugin;
static PluginInfo autoPlugin;
Expand All @@ -811,8 +811,8 @@ CreatePluginMenuInfos(const String& filteredFilenames, const std::vector<std::ws
{
String process = _T("");
allPlugins.insert_or_assign(process, std::vector<std::tuple<String, String, unsigned, PluginInfo *>>());
allPlugins[process].emplace_back(_("<None>"), _T(""), id++, &noPlugin);
allPlugins[process].emplace_back(_("<Automatic>"), _T("<Automatic>"), id++, &autoPlugin);
allPlugins[process].emplace_back(_("<None>"), _T(""), baseId, &noPlugin);
allPlugins[process].emplace_back(_("<Automatic>"), _T("<Automatic>"), baseId + 1, &autoPlugin);
addedNoneAutomatic = true;
}
const auto menuCaption = plugin->GetExtendedPropertyValue(_T("MenuCaption"));
Expand All @@ -833,6 +833,13 @@ CreatePluginMenuInfos(const String& filteredFilenames, const std::vector<std::ws
}
else
{
if (!addedNoneAutomatic)
{
String process = _T("");
allPlugins.insert_or_assign(process, std::vector<std::tuple<String, String, unsigned, PluginInfo *>>());
allPlugins[process].emplace_back(_("<None>"), _T(""), baseId, &noPlugin);
addedNoneAutomatic = true;
}
LPDISPATCH piScript = plugin->m_lpDispatch;
std::vector<String> scriptNamesArray;
std::vector<int> scriptIdsArray;
Expand Down
1 change: 1 addition & 0 deletions Src/HexMergeDoc.h
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ class CHexMergeDoc : public CDocument, public IMergeDoc
PackingInfo* GetUnpacker() { return &m_infoUnpacker; };
void SetUnpacker(const PackingInfo* infoUnpacker) override { if (infoUnpacker) m_infoUnpacker = *infoUnpacker; };
const PrediffingInfo* GetPrediffer() const override { return nullptr; };
const EditorScriptInfo* GetEditorScript() const override { return nullptr; };
int GetFileCount() const override { return m_filePaths.GetSize(); }
String GetPath(int pane) const override { return m_filePaths[pane]; }
bool GetReadOnly(int pane) const override;
Expand Down
2 changes: 2 additions & 0 deletions Src/IMergeDoc.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
struct IDirDoc;
class PackingInfo;
class PrediffingInfo;
class EditorScriptInfo;

struct IMergeDoc : public IMDITab
{
Expand All @@ -25,6 +26,7 @@ struct IMergeDoc : public IMDITab
virtual const PackingInfo *GetUnpacker() const = 0;
virtual void SetUnpacker(const PackingInfo *infoUnpacker) = 0;
virtual const PrediffingInfo *GetPrediffer() const = 0;
virtual const EditorScriptInfo *GetEditorScript() const = 0;
virtual int GetFileCount() const = 0;
virtual String GetPath(int pane) const = 0;
virtual String GetDescription(int pane) const = 0;
Expand Down
1 change: 1 addition & 0 deletions Src/ImgMergeFrm.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ class CImgMergeFrame : public CMergeFrameCommon,public IMergeDoc
const PackingInfo* GetUnpacker() const override { return &m_infoUnpacker; };
void SetUnpacker(const PackingInfo* infoUnpacker) override { if (infoUnpacker) m_infoUnpacker = *infoUnpacker; };
const PrediffingInfo* GetPrediffer() const override { return nullptr; };
const EditorScriptInfo* GetEditorScript() const override { return nullptr; };
int GetFileCount() const override { return m_filePaths.GetSize(); }
String GetPath(int pane) const override { return m_filePaths[pane]; }
bool GetReadOnly(int pane) const override { return m_bRO[pane]; }
Expand Down
10 changes: 7 additions & 3 deletions Src/MainFrm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -702,7 +702,7 @@ void CMainFrame::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu)

CMainFrame::AppendPluginMenus(pMenu, filteredFilenames, FileTransform::UnpackerEventNames, true, ID_UNPACKERS_FIRST);
}
else if (topMenuId == ID_NO_EDIT_SCRIPTS)
else if (topMenuId == ID_NO_EDIT_SCRIPTS || topMenuId == ID_NO_EDIT_SCRIPTS_FOR_COPYING)
{
CMenu* pMenu = pPopupMenu;
ASSERT(pMenu != nullptr);
Expand All @@ -712,13 +712,14 @@ void CMainFrame::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu)
while (i--)
pMenu->DeleteMenu(0, MF_BYPOSITION);

CMainFrame::AppendPluginMenus(pMenu, filteredFilenames, FileTransform::EditorScriptEventNames, false, ID_SCRIPT_FIRST);
CMainFrame::AppendPluginMenus(pMenu, filteredFilenames, FileTransform::EditorScriptEventNames, false,
topMenuId == ID_NO_EDIT_SCRIPTS ? ID_SCRIPT_FIRST : ID_SCRIPT_FOR_COPYING_FIRST);
}
else if (topMenuId == ID_PLUGINS_LIST)
{
for (int j = 0; j < 2; j++)
{
CMenu* pMenu = pPopupMenu->GetSubMenu((j == 0) ? 8 : (pPopupMenu->GetMenuItemCount() - 4));
CMenu* pMenu = pPopupMenu->GetSubMenu((j == 0) ? 8 : (pPopupMenu->GetMenuItemCount() - 5));
ASSERT(pMenu != nullptr);

// empty the menu
Expand Down Expand Up @@ -3121,6 +3122,9 @@ void CMainFrame::OnUpdatePluginName(CCmdUI* pCmdUI)
const PrediffingInfo* infoPrediffer = pMergeDoc->GetPrediffer();
if (infoPrediffer && !infoPrediffer->GetPluginPipeline().empty())
pluginNames += infoPrediffer->GetPluginPipeline() + _T("&");
const EditorScriptInfo* infoEditorScript = pMergeDoc->GetEditorScript();
if (infoEditorScript && !infoEditorScript->GetPluginPipeline().empty())
pluginNames += infoEditorScript->GetPluginPipeline() + _T("&");
pCmdUI->SetText(pluginNames.substr(0, pluginNames.length() - 1).c_str());
}
else
Expand Down
8 changes: 8 additions & 0 deletions Src/Merge.rc
Original file line number Diff line number Diff line change
Expand Up @@ -810,6 +810,14 @@ BEGIN
MENUITEM "< Empty >", ID_NO_EDIT_SCRIPTS
END
MENUITEM "&Transform with editor script...", ID_TRANSFORM_WITH_SCRIPT
POPUP "Scripts for &copying"
BEGIN
POPUP "&Scripts"
BEGIN
MENUITEM "< Empty >", ID_NO_EDIT_SCRIPTS_FOR_COPYING
END
MENUITEM "Select &editor script...", ID_SELECT_EDITOR_SCRIPT_FOR_COPYING
END
MENUITEM SEPARATOR
MENUITEM "&Reload plugins", ID_RELOAD_PLUGINS
END
Expand Down
30 changes: 30 additions & 0 deletions Src/MergeDoc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,9 @@ BEGIN_MESSAGE_MAP(CMergeDoc, CDocument)
ON_COMMAND_RANGE(ID_PREDIFFERS_FIRST, ID_PREDIFFERS_LAST, OnPrediffer)
ON_UPDATE_COMMAND_UI(ID_NO_PREDIFFER, OnUpdatePrediffer)
ON_UPDATE_COMMAND_UI_RANGE(ID_PREDIFFERS_FIRST, ID_PREDIFFERS_LAST, OnUpdatePrediffer)
ON_COMMAND_RANGE(ID_SCRIPT_FOR_COPYING_FIRST, ID_SCRIPT_FOR_COPYING_LAST, OnScriptsForCopying)
ON_UPDATE_COMMAND_UI_RANGE(ID_SCRIPT_FOR_COPYING_FIRST, ID_SCRIPT_FOR_COPYING_LAST, OnUpdateScriptsForCopying)
ON_COMMAND(ID_SELECT_EDITOR_SCRIPT_FOR_COPYING, OnSelectEditorScriptForCopying)
// Encoding Error dialog
ON_BN_CLICKED(IDC_FILEENCODING, OnBnClickedFileEncoding)
ON_BN_CLICKED(IDC_PLUGIN, OnBnClickedPlugin)
Expand Down Expand Up @@ -146,7 +149,9 @@ CMergeDoc::CMergeDoc()
, m_pView{nullptr}
, m_bAutomaticRescan(false)
, m_CurrentPredifferID(0)
, m_CurrentEditorScriptID(ID_SCRIPT_FOR_COPYING_NONE)
, m_bChangedSchemeManually(false)
, m_editorScriptInfo(_T(""))
{
DIFFOPTIONS options = {0};

Expand Down Expand Up @@ -3026,6 +3031,31 @@ void CMergeDoc::SetPredifferByMenu(UINT nID)
SetPrediffer(&prediffer);
}

void CMergeDoc::OnScriptsForCopying(UINT nID)
{
m_CurrentEditorScriptID = nID;
m_editorScriptInfo.SetPluginPipeline(
CMainFrame::GetPluginPipelineByMenuId(nID, FileTransform::EditorScriptEventNames, ID_SCRIPT_FOR_COPYING_FIRST));
}

void CMergeDoc::OnUpdateScriptsForCopying(CCmdUI* pCmdUI)
{
pCmdUI->Enable(true);
pCmdUI->SetRadio(pCmdUI->m_nID == static_cast<UINT>(m_CurrentEditorScriptID));
}

void CMergeDoc::OnSelectEditorScriptForCopying()
{
// let the user choose a handler
CSelectPluginDlg dlg(m_editorScriptInfo.GetPluginPipeline(),
strutils::join(m_filePaths.begin(), m_filePaths.end(), _T("|")),
CSelectPluginDlg::PluginType::EditorScript, false);
if (dlg.DoModal() != IDOK)
return;
m_editorScriptInfo.SetPluginPipeline(dlg.GetPluginPipeline());
m_CurrentEditorScriptID = 0;
}

void CMergeDoc::OnBnClickedFileEncoding()
{
if (m_pEncodingErrorBar == nullptr || GetParentFrame() == nullptr)
Expand Down
11 changes: 10 additions & 1 deletion Src/MergeDoc.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
#include "TempFile.h"
#include "PathContext.h"
#include "FileLoadResult.h"
#include "FileTransform.h"
#include <vector>
#include <map>
#include <memory>
Expand Down Expand Up @@ -175,6 +176,8 @@ class CMergeDoc : public CDocument, public IMergeDoc
bool CharacterListCopy(int srcPane, int dstPane, int activePane, int nDiff, const CEPoint& ptStart, const CEPoint& ptEnd, bool bGroupWithPrevious = false, bool bUpdateView = true);
bool ListCopy(int srcPane, int dstPane, int nDiff = -1, bool bGroupWithPrevious = false, bool bUpdateView = true);
std::tuple<CEPoint, CEPoint, CEPoint, CEPoint> GetCharacterRange(int srcPane, int dstPane, int activePane, int nDiff, const CEPoint& ptStart, const CEPoint& ptEnd);
bool TransformText(String& text);
void ReplaceFullLines(CDiffTextBuffer& dbuf, CDiffTextBuffer& sbuf, CCrystalTextView* pSource, int nLineBegin, int nLineEnd, int nAction = CE_ACTION_UNKNOWN);
bool TrySaveAs(String& strPath, int &nLastErrorCode, String & sError,
int nBuffer, PackingInfo& infoTempUnpacker);
bool DoSave(const tchar_t* szPath, bool &bSaveSuccess, int nBuffer);
Expand All @@ -189,6 +192,7 @@ class CMergeDoc : public CDocument, public IMergeDoc
void SetPrediffer(const PrediffingInfo * infoPrediffer);
void GetPrediffer(PrediffingInfo * infoPrediffer) const;
const PrediffingInfo *GetPrediffer() const override;
const EditorScriptInfo* GetEditorScript() const override { return &m_editorScriptInfo; };
void AddMergeViews(CMergeEditSplitterView* pMergeEditSplitterView, CMergeEditView* pView[3]);
void RemoveMergeViews(CMergeEditSplitterView* pMergeEditSplitterView);
void SetLocationView(CLocationView *pLocationView) { m_pLocationView = pLocationView; }
Expand Down Expand Up @@ -390,8 +394,10 @@ class CMergeDoc : public CDocument, public IMergeDoc
bool m_bAutomaticRescan;
/// active prediffer ID : helper to check the radio button
int m_CurrentPredifferID;
int m_CurrentEditorScriptID;
bool m_bChangedSchemeManually; /**< `true` if the syntax highlighting scheme is changed manually */
String m_sCurrentHeaderTitle[3];
EditorScriptInfo m_editorScriptInfo;

// friend access
friend class RescanSuppress;
Expand Down Expand Up @@ -442,7 +448,10 @@ class CMergeDoc : public CDocument, public IMergeDoc
afx_msg void OnUpdateSwapContext(CCmdUI* pCmdUI);
afx_msg void OnRefresh();
afx_msg void OnUpdatePrediffer(CCmdUI* pCmdUI);
afx_msg void OnPrediffer(UINT nID );
afx_msg void OnPrediffer(UINT nID);
afx_msg void OnScriptsForCopying(UINT nID);
afx_msg void OnUpdateScriptsForCopying(CCmdUI* pCmdUI);
afx_msg void OnSelectEditorScriptForCopying();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:
Expand Down
51 changes: 45 additions & 6 deletions Src/MergeDocDiffCopy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -429,6 +429,44 @@ bool CMergeDoc::SanityCheckDiff(const DIFFRANGE& dr) const
return true;
}

bool CMergeDoc::TransformText(String& text)
{
if (m_editorScriptInfo.GetPluginPipeline().empty())
return false;
const auto pwndActiveWindow = GetActiveMergeView();
if (!pwndActiveWindow)
return false;
const int nActivePane = pwndActiveWindow->m_nThisPane;
bool bChanged = false;
m_editorScriptInfo.TransformText(text, { m_filePaths[nActivePane] }, bChanged);
return bChanged;
}

/// Replace line (removing any eol, and only including one if in strText)
void CMergeDoc::ReplaceFullLines(CDiffTextBuffer& dbuf, CDiffTextBuffer& sbuf, CCrystalTextView * pSource, int nLineBegin, int nLineEnd, int nAction /*=CE_ACTION_UNKNOWN*/)
{
String strText;
if (nLineBegin != nLineEnd || sbuf.GetLineLength(nLineEnd) > 0)
sbuf.GetTextWithoutEmptys(nLineBegin, 0, nLineEnd, sbuf.GetLineLength(nLineEnd), strText);
strText += sbuf.GetLineEol(nLineEnd);

if (nLineBegin != nLineEnd || dbuf.GetFullLineLength(nLineEnd) > 0)
{
int nLineEndSource = nLineEnd < dbuf.GetLineCount() ? nLineEnd : dbuf.GetLineCount();
if (nLineEnd+1 < dbuf.GetLineCount())
dbuf.DeleteText(pSource, nLineBegin, 0, nLineEndSource + 1, 0, nAction);
else
dbuf.DeleteText(pSource, nLineBegin, 0, nLineEndSource, dbuf.GetLineLength(nLineEndSource), nAction);
}

TransformText(strText);
if (size_t cchText = strText.length())
{
int endl,endc;
dbuf.InsertText(pSource, nLineBegin, 0, strText.c_str(), cchText, endl, endc, nAction);
}
}

/**
* @brief Copy selected (=current) difference from from side to side.
* @param [in] srcPane Source side from which diff is copied
Expand Down Expand Up @@ -531,7 +569,7 @@ bool CMergeDoc::ListCopy(int srcPane, int dstPane, int nDiff /* = -1*/,
if (cd_dbegin <= limit)
{
// text exists on left side, so just replace
dbuf.ReplaceFullLines(dbuf, sbuf, pSource, cd_dbegin, limit, CE_ACTION_MERGE);
ReplaceFullLines(dbuf, sbuf, pSource, cd_dbegin, limit, CE_ACTION_MERGE);
dbuf.FlushUndoGroup(pSource);
dbuf.BeginUndoGroup(true);
}
Expand Down Expand Up @@ -624,7 +662,7 @@ bool CMergeDoc::LineListCopy(int srcPane, int dstPane, int nDiff, int firstLine,
if (cd_dbegin <= limit)
{
// text exists on left side, so just replace
dbuf.ReplaceFullLines(dbuf, sbuf, pSource, cd_dbegin, limit, CE_ACTION_MERGE);
ReplaceFullLines(dbuf, sbuf, pSource, cd_dbegin, limit, CE_ACTION_MERGE);
dbuf.FlushUndoGroup(pSource);
dbuf.BeginUndoGroup(true);
}
Expand Down Expand Up @@ -744,6 +782,7 @@ bool CMergeDoc::InlineDiffListCopy(int srcPane, int dstPane, int nDiff, int firs

dbuf.DeleteText(pSource, ptDstStart.y, ptDstStart.x, ptDstEnd.y, ptDstEnd.x, CE_ACTION_MERGE);

TransformText(dstText);
int endl, endc;
dbuf.InsertText(pSource, ptDstStart.y, ptDstStart.x, dstText.c_str(), dstText.length(), endl, endc, CE_ACTION_MERGE);

Expand Down Expand Up @@ -1002,15 +1041,15 @@ bool CMergeDoc::CharacterListCopy(int srcPane, int dstPane, int activePane, int
auto [ptSrcStart, ptSrcEnd, ptDstStart, ptDstEnd] =
GetCharacterRange(srcPane, dstPane, activePane, nDiff, ptStart, ptEnd);

String dstText, srcText;
dbuf.GetTextWithoutEmptys(ptDstStart.y, ptDstStart.x, ptDstEnd.y, ptDstEnd.x, dstText);
sbuf.GetTextWithoutEmptys(ptSrcStart.y, ptSrcStart.x, ptSrcEnd.y, ptSrcEnd.x, srcText);
String text;
sbuf.GetTextWithoutEmptys(ptSrcStart.y, ptSrcStart.x, ptSrcEnd.y, ptSrcEnd.x, text);

if (ptDstStart != ptDstEnd)
dbuf.DeleteText(pSource, ptDstStart.y, ptDstStart.x, ptDstEnd.y, ptDstEnd.x, CE_ACTION_MERGE);

TransformText(text);
int endl, endc;
dbuf.InsertText(pSource, ptDstStart.y, ptDstStart.x, srcText.c_str(), srcText.length(), endl, endc, CE_ACTION_MERGE);
dbuf.InsertText(pSource, ptDstStart.y, ptDstStart.x, text.c_str(), text.length(), endl, endc, CE_ACTION_MERGE);

dbuf.FlushUndoGroup(pSource);

Expand Down
2 changes: 1 addition & 1 deletion Src/MergeEditView.h
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,7 @@ class CMergeEditView : public CGhostTextView
afx_msg void OnUpdateGotoMovedLineMR(CCmdUI* pCmdUI);
afx_msg void OnShellMenu();
afx_msg void OnUpdateShellMenu(CCmdUI* pCmdUI);
afx_msg void OnScripts(UINT nID );
afx_msg void OnScripts(UINT nID);
afx_msg void OnTransformWithScript();
afx_msg void OnHScroll (UINT nSBCode, UINT nPos, CScrollBar * pScrollBar);
afx_msg void OnVScroll (UINT nSBCode, UINT nPos, CScrollBar * pScrollBar);
Expand Down
9 changes: 8 additions & 1 deletion Src/SelectPluginDlg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,13 @@ void CSelectPluginDlg::prepareListbox()
item.pszText = const_cast<tchar_t*>(automaticPlugin->m_name.c_str());
m_cboPluginName.InsertItem(&item);
}
else
{
COMBOBOXEXITEM item{CBEIF_TEXT};
item.iItem = nameCount++;
item.pszText = const_cast<tchar_t*>(noPlugin->m_name.c_str());
m_cboPluginName.InsertItem(&item);
}

std::list<String> processTypes;
for (const auto& [processType, pluginList] : m_Plugins)
Expand Down Expand Up @@ -276,7 +283,7 @@ void CSelectPluginDlg::OnSelchangeUnpackerName()
PluginInfo* pPlugin = nullptr;
String pluginName;
int i = m_cboPluginName.GetCurSel();
if (m_pluginType != PluginType::EditorScript && i == 0)
if (i == 0)
{
pPlugin = noPlugin.get();
m_strPluginPipeline.clear();
Expand Down
1 change: 1 addition & 0 deletions Src/WebPageDiffFrm.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ class CWebPageDiffFrame : public CMergeFrameCommon,public IMergeDoc
const PackingInfo* GetUnpacker() const override { return &m_infoUnpacker; };
void SetUnpacker(const PackingInfo* infoUnpacker) override { if (infoUnpacker) m_infoUnpacker = *infoUnpacker; };
const PrediffingInfo* GetPrediffer() const override { return nullptr; };
const EditorScriptInfo* GetEditorScript() const override { return nullptr; };
int GetFileCount() const override { return m_filePaths.GetSize(); }
String GetPath(int pane) const override { return m_filePaths[pane]; }
bool GetReadOnly(int pane) const override { return m_bRO[pane]; }
Expand Down
Loading

0 comments on commit d480ce7

Please sign in to comment.