[Winmerge-svn] SF.net SVN: winmerge:[6654] trunk
Windows visual diff and merge for files and directories
Brought to you by:
christianlist,
grimmdp
From: <ki...@us...> - 2009-04-13 11:47:33
|
Revision: 6654 http://winmerge.svn.sourceforge.net/winmerge/?rev=6654&view=rev Author: kimmov Date: 2009-04-13 11:47:23 +0000 (Mon, 13 Apr 2009) Log Message: ----------- PATCH: [ 2726531 ] Show XML config files like XML files Submitted by bulklodd Modified Paths: -------------- trunk/Docs/Users/ChangeLog.txt trunk/Src/MergeDoc.cpp trunk/Src/editlib/ccrystaltextview.cpp trunk/Src/editlib/ccrystaltextview.h Modified: trunk/Docs/Users/ChangeLog.txt =================================================================== --- trunk/Docs/Users/ChangeLog.txt 2009-04-12 09:30:35 UTC (rev 6653) +++ trunk/Docs/Users/ChangeLog.txt 2009-04-13 11:47:23 UTC (rev 6654) @@ -8,6 +8,7 @@ color (#2669526) Disable folder compare tree-view by default (#2714968) Allow setting codepage from command line (#2725549) + Improve detecting XML files in file compare (#2726531) Bugfix: Says files are identical after making files different in another application and re-loading them (#2672737) Bugfix: Difference pane didn't show added lines (#2710146) Modified: trunk/Src/MergeDoc.cpp =================================================================== --- trunk/Src/MergeDoc.cpp 2009-04-12 09:30:35 UTC (rev 6653) +++ trunk/Src/MergeDoc.cpp 2009-04-13 11:47:23 UTC (rev 6654) @@ -2315,6 +2315,17 @@ pRightDetail->SetTextType(sextR.c_str()); } + // If textypes of the files aren't recogzined by their extentions, + // try to recognize them using their first lines + if (!bLeftTyped && !bRightTyped) + { + CString sFirstLine; + m_ptBuf[0]->GetLine(0, sFirstLine); + bLeftTyped = pLeft->SetTextTypeByContent(sFirstLine); + m_ptBuf[1]->GetLine(0, sFirstLine); + bRightTyped = pRight->SetTextTypeByContent(sFirstLine); + } + // If other side didn't have recognized texttype, apply recognized // type to unrecognized one. (comparing file.cpp and file.bak applies // cpp file type to .bak file. Modified: trunk/Src/editlib/ccrystaltextview.cpp =================================================================== --- trunk/Src/editlib/ccrystaltextview.cpp 2009-04-12 09:30:35 UTC (rev 6653) +++ trunk/Src/editlib/ccrystaltextview.cpp 2009-04-13 11:47:23 UTC (rev 6654) @@ -6183,6 +6183,19 @@ } } +// Analyze the first line of file to detect its type +// Mainly it works for xml files +bool CCrystalTextView:: +SetTextTypeByContent (LPCTSTR pszContent) +{ + int nLen; + if (::FindStringHelper(pszContent, _T("^\\s*\\<\\?xml\\s+.+?\\?\\>\\s*$"), + FIND_REGEXP, nLen) == 0) + { + return SetTextType(CCrystalTextView::SRC_XML); + } + return false; +} //////////////////////////////////////////////////////////////////////////// #pragma warning ( default : 4100 ) Modified: trunk/Src/editlib/ccrystaltextview.h =================================================================== --- trunk/Src/editlib/ccrystaltextview.h 2009-04-12 09:30:35 UTC (rev 6653) +++ trunk/Src/editlib/ccrystaltextview.h 2009-04-13 11:47:23 UTC (rev 6654) @@ -790,6 +790,7 @@ virtual bool SetTextType (LPCTSTR pszExt); virtual bool SetTextType (CCrystalTextView::TextType enuType); virtual bool SetTextType (CCrystalTextView::TextDefinition *def); + virtual bool SetTextTypeByContent (LPCTSTR pszContent); static void LoadSettings (); static void SaveSettings (); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |