diff --git a/Src/CompareEngines/Wrap_DiffUtils.cpp b/Src/CompareEngines/Wrap_DiffUtils.cpp index 3f3e6250ff4..a0a22e9f009 100644 --- a/Src/CompareEngines/Wrap_DiffUtils.cpp +++ b/Src/CompareEngines/Wrap_DiffUtils.cpp @@ -19,6 +19,7 @@ #include "coretools.h" #include "DiffList.h" #include "DiffWrapper.h" +#include "xdiff_gnudiff_compat.h" #include "unicoder.h" namespace CompareEngines @@ -267,7 +268,17 @@ bool DiffUtils::Diff2Files(struct change ** diffs, int depth, SE_Handler seh; try { - *diffs = diff_2_files(m_inf, depth, bin_status, bMovedBlocks, bin_file); + if (m_pOptions->m_diffAlgorithm != DIFF_ALGORITHM_DEFAULT) + { + const unsigned xdl_flags = make_xdl_flags(*m_pOptions); + *diffs = diff_2_files_xdiff(m_inf, bin_status, bMovedBlocks, bin_file, xdl_flags); + files[0] = m_inf[0]; + files[1] = m_inf[1]; + } + else + { + *diffs = diff_2_files(m_inf, depth, bin_status, bMovedBlocks, bin_file); + } } catch (SE_Exception&) { diff --git a/Src/DiffTextBuffer.cpp b/Src/DiffTextBuffer.cpp index 39562a82057..27310165741 100644 --- a/Src/DiffTextBuffer.cpp +++ b/Src/DiffTextBuffer.cpp @@ -414,7 +414,7 @@ int CDiffTextBuffer::SaveToFile (const String& pszFileName, if (bTempFile) { file.SetUnicoding(ucr::UTF8); - file.SetBom(GetOptionsMgr()->GetInt(OPT_CMP_DIFF_ALGORITHM) == 0); + file.SetBom(true); bOpenSuccess = !!file.OpenCreate(pszFileName); } else diff --git a/Src/DiffWrapper.cpp b/Src/DiffWrapper.cpp index 95517dc7acf..aec9f19d3c5 100644 --- a/Src/DiffWrapper.cpp +++ b/Src/DiffWrapper.cpp @@ -891,8 +891,9 @@ bool CDiffWrapper::Diff2Files(struct change ** diffs, DiffFileData *diffData, { if (m_options.m_diffAlgorithm != DIFF_ALGORITHM_DEFAULT) { - unsigned xdl_flags = make_xdl_flags(m_options); - *diffs = diff_2_files_xdiff(diffData->m_inf, (m_pMovedLines[0] != nullptr), xdl_flags); + const unsigned xdl_flags = make_xdl_flags(m_options); + *diffs = diff_2_files_xdiff(diffData->m_inf, bin_status, + (m_pMovedLines[0] != nullptr), bin_file, xdl_flags); files[0] = diffData->m_inf[0]; files[1] = diffData->m_inf[1]; } diff --git a/Src/Merge.rc b/Src/Merge.rc index 42785b72370..e61ff321fec 100644 --- a/Src/Merge.rc +++ b/Src/Merge.rc @@ -1700,7 +1700,7 @@ BEGIN "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,120,239,10 CONTROL "E&nable moved block detection",IDC_MOVED_BLOCKS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,132,269,10 CONTROL "Align &similar lines",IDC_MATCH_SIMILAR_LINES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,144,269,10 - LTEXT "Diff &algorithm (Experimental):",IDC_STATIC,7,156,269,10 + LTEXT "Diff &algorithm:",IDC_STATIC,7,156,269,10 COMBOBOX IDC_DIFF_ALGORITHM,6,168,270,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP CONTROL "Enable indent &heuristic",IDC_INDENT_HEURISTIC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,186,269,10 CONTROL "Completely unhighlight the ignored differences",IDC_COMPLETELY_BLANK_OUT_IGNORED_DIFFERENCES, diff --git a/Src/xdiff_gnudiff_compat.cpp b/Src/xdiff_gnudiff_compat.cpp index 08d708f542b..5a2a0093f73 100644 --- a/Src/xdiff_gnudiff_compat.cpp +++ b/Src/xdiff_gnudiff_compat.cpp @@ -70,58 +70,7 @@ static int hunk_func(long start_a, long count_a, long start_b, long count_b, voi return 0; } -static void append_equivs(const xdfile_t& xdf, struct file_data& filevec, std::vector& equivs, unsigned xdl_flags) -{ - std::unordered_map> equivs_map; - for (int i = 0; i < static_cast(equivs.size()); ++i) - { - unsigned long ha = equivs[i]->ha; - if (equivs_map.find(ha) != equivs_map.end()) - equivs_map[ha].push_back(i); - else - equivs_map.emplace(ha, std::vector{i}); - } - - for (int i = 0; i < xdf.nrec; ++i) - { - unsigned long ha = xdf.recs[i]->ha; - if (equivs_map.find(ha) != equivs_map.end()) - { - bool found = false; - for (auto j: equivs_map[ha]) - { - if (xdl_recmatch(equivs[j]->ptr, equivs[j]->size, xdf.recs[i]->ptr, xdf.recs[i]->size, xdl_flags)) - { - found = true; - filevec.equivs[i] = j; - equivs_map.emplace(ha, std::vector{j}); - break; - } - } - if (!found) - { - filevec.equivs[i] = static_cast(equivs.size()); - equivs_map[ha].push_back(filevec.equivs[i]); - equivs.push_back(xdf.recs[i]); - } - } - else - { - filevec.equivs[i] = static_cast(equivs.size()); - equivs_map.emplace(ha, std::vector{filevec.equivs[i]}); - equivs.push_back(xdf.recs[i]); - } - } -} - -static int is_missing_newline(const mmfile_t& mmfile) -{ - if (mmfile.size == 0 || mmfile.ptr[mmfile.size - 1] == '\r' || mmfile.ptr[mmfile.size - 1] == '\n') - return 0; - return 1; -} - -struct change * diff_2_files_xdiff (struct file_data filevec[], int bMoved_blocks_flag, unsigned xdl_flags) +struct change * diff_2_files_xdiff (struct file_data filevec[], int* bin_status, int bMoved_blocks_flag, int* bin_file, unsigned xdl_flags) { mmfile_t mmfile1 = { 0 }, mmfile2 = { 0 }; change *script = nullptr; @@ -131,92 +80,121 @@ struct change * diff_2_files_xdiff (struct file_data filevec[], int bMoved_block xdemitconf_t xecfg = { 0 }; xdemitcb_t ecb = { 0 }; - if (!read_mmfile(filevec[0].desc, mmfile1)) - goto abort; - if (!read_mmfile(filevec[1].desc, mmfile2)) - goto abort; - - xpp.flags = xdl_flags; - xecfg.hunk_func = hunk_func; - if (xdl_diff_modified(&mmfile1, &mmfile2, &xpp, &xecfg, &ecb, &xe, &xscr) == 0) + if (read_files(filevec, no_details_flag & ~ignore_some_changes, bin_file)) { - filevec[0].buffer = mmfile1.ptr; - filevec[1].buffer = mmfile2.ptr; - filevec[0].bufsize = mmfile1.size; - filevec[1].bufsize = mmfile2.size; - filevec[0].buffered_chars = mmfile1.size; - filevec[1].buffered_chars = mmfile2.size; - filevec[0].linbuf_base = 0; - filevec[1].linbuf_base = 0; - filevec[0].valid_lines = xe.xdf1.nrec; - filevec[1].valid_lines = xe.xdf2.nrec; - filevec[0].linbuf = static_cast(malloc(sizeof(char *) * (xe.xdf1.nrec + 1))); - if (!filevec[0].linbuf) - goto abort; - filevec[1].linbuf = static_cast(malloc(sizeof(char *) * (xe.xdf2.nrec + 1))); - if (!filevec[1].linbuf) - goto abort; - filevec[0].equivs = static_cast(malloc(sizeof(int) * xe.xdf1.nrec)); - if (!filevec[0].equivs) - goto abort; - filevec[1].equivs = static_cast(malloc(sizeof(int) * xe.xdf2.nrec)); - if (!filevec[1].equivs) - goto abort; - for (int i = 0; i < xe.xdf1.nrec; ++i) - { - filevec[0].linbuf[i] = xe.xdf1.recs[i]->ptr; - filevec[0].equivs[i] = -1; - } - if (xe.xdf1.nrec > 0) - filevec[0].linbuf[xe.xdf1.nrec] = xe.xdf1.recs[xe.xdf1.nrec - 1]->ptr + xe.xdf1.recs[xe.xdf1.nrec - 1]->size; - for (int i = 0; i < xe.xdf2.nrec; ++i) - { - filevec[1].linbuf[i] = xe.xdf2.recs[i]->ptr; - filevec[1].equivs[i] = -1; - } - if (xe.xdf2.nrec > 0) - filevec[1].linbuf[xe.xdf2.nrec] = xe.xdf2.recs[xe.xdf2.nrec - 1]->ptr + xe.xdf2.recs[xe.xdf2.nrec - 1]->size; - filevec[0].missing_newline = is_missing_newline(mmfile1); - filevec[1].missing_newline = is_missing_newline(mmfile2); + int i; + int changes; + // copy from analyze.c + // We can now safely assume to have a pair of Binary files. - change *prev = nullptr; - for (xdchange_t* xcur = xscr; xcur; xcur = xcur->next) + // Are both files Open and Regular (no Pipes, Directories, Devices (e.g. NUL)) + if (filevec[0].desc < 0 || filevec[1].desc < 0 || + !(S_ISREG (filevec[0].stat.st_mode)) || !(S_ISREG (filevec[1].stat.st_mode)) ) + changes = 1; + else + // Files with different lengths must be different. + if (filevec[0].stat.st_size != filevec[1].stat.st_size) + changes = 1; + else + // Identical descriptor implies identical files + if (filevec[0].desc == filevec[1].desc) + changes = 0; + // Scan both files, a buffer at a time, looking for a difference. + else { - change* e = static_cast(malloc(sizeof(change))); - if (!e) - goto abort; - if (!script) - script = e; - e->line0 = xcur->i1; - e->line1 = xcur->i2; - e->deleted = xcur->chg1; - e->inserted = xcur->chg2; - e->match0 = -1; - e->match1 = -1; - e->trivial = static_cast(xcur->ignore); - e->link = nullptr; - e->ignore = 0; - if (prev) - prev->link = e; - prev = e; + // Same-sized buffers for both files were allocated in read_files(). + size_t buffer_size = filevec[0].bufsize; + + for (;;) + { + // Read a buffer's worth from both files. + for (i = 0; i < 2; i++) + while (filevec[i].buffered_chars < buffer_size) + { + int r = _read (filevec[i].desc, + filevec[i].buffer + filevec[i].buffered_chars, + (int)(buffer_size - filevec[i].buffered_chars)); + if (r == 0) + break; + if (r < 0) + pfatal_with_name (filevec[i].name); + filevec[i].buffered_chars += r; + } + + // If the buffers have different number of chars, the files differ. + if (filevec[0].buffered_chars != filevec[1].buffered_chars) + { + changes = 1; + break; + } + + // If we reach end-of-file, the files are the same. + if (filevec[0].buffered_chars==0) // therefore: filevec[1].buffered_chars==0 + { + changes = 0; + break; + } + + // If buffers have different contents, the files are different. + if (memcmp (filevec[0].buffer, + filevec[1].buffer, + filevec[0].buffered_chars) != 0) + { + changes = 1; + break; + } + + // Files appear identical so far... + // Prepare to loop again for the next pair of buffers. + filevec[0].buffered_chars = filevec[1].buffered_chars = 0; + } } + if (bin_status != NULL) + *bin_status = (changes != 0 ? -1 : 1); + } + else + { + mmfile1.ptr = const_cast(filevec[0].prefix_end); + mmfile1.size = static_cast(filevec[0].suffix_begin - filevec[0].prefix_end); + mmfile2.ptr = const_cast(filevec[1].prefix_end); + mmfile2.size = static_cast(filevec[1].suffix_begin - filevec[1].prefix_end); - if (bMoved_blocks_flag) + xpp.flags = xdl_flags; + xecfg.hunk_func = hunk_func; + if (xdl_diff_modified(&mmfile1, &mmfile2, &xpp, &xecfg, &ecb, &xe, &xscr) == 0) { - std::vector equivs; - append_equivs(xe.xdf1, filevec[0], equivs, xdl_flags); - append_equivs(xe.xdf2, filevec[1], equivs, xdl_flags); - moved_block_analysis(&script, filevec); - } + change *prev = nullptr; + for (xdchange_t* xcur = xscr; xcur; xcur = xcur->next) + { + change* e = static_cast(malloc(sizeof(change))); + if (!e) + goto abort; + if (!script) + script = e; + e->line0 = xcur->i1; + e->line1 = xcur->i2; + e->deleted = xcur->chg1; + e->inserted = xcur->chg2; + e->match0 = -1; + e->match1 = -1; + e->trivial = static_cast(xcur->ignore); + e->link = nullptr; + e->ignore = 0; + if (prev) + prev->link = e; + prev = e; + } + + if (bMoved_blocks_flag) + moved_block_analysis(&script, filevec); - xdl_free_script(xscr); - xdl_free_env(&xe); + xdl_free_script(xscr); + xdl_free_env(&xe); + } } return script; abort: - free(mmfile1.ptr); - free(mmfile2.ptr); return nullptr; } diff --git a/Src/xdiff_gnudiff_compat.h b/Src/xdiff_gnudiff_compat.h index 7fe8d3a447d..5dfa542c067 100644 --- a/Src/xdiff_gnudiff_compat.h +++ b/Src/xdiff_gnudiff_compat.h @@ -2,4 +2,4 @@ class DiffutilsOptions; unsigned long make_xdl_flags(const DiffutilsOptions& options); -struct change * diff_2_files_xdiff(struct file_data filevec[], int bMoved_blocks_flag, unsigned xdl_flags); +struct change * diff_2_files_xdiff(struct file_data filevec[], int* bin_status, int bMoved_blocks_flag, int* bin_file, unsigned xdl_flags); diff --git a/Translations/WinMerge/Arabic.po b/Translations/WinMerge/Arabic.po index e9985ff23cf..1232152b19b 100644 --- a/Translations/WinMerge/Arabic.po +++ b/Translations/WinMerge/Arabic.po @@ -1518,8 +1518,8 @@ msgstr "&تفعيل كشف المجموعات التي نقلها" msgid "Align &similar lines" msgstr "" -msgid "Diff &algorithm (Experimental):" -msgstr "خوارزمية المقارنة (تجريبي):" +msgid "Diff &algorithm:" +msgstr "خوارزمية المقارنة:" msgid "Enable indent &heuristic" msgstr "تفعيل الم&سافة البادئة الإرشادية" diff --git a/Translations/WinMerge/Basque.po b/Translations/WinMerge/Basque.po index cf502215fe8..8224b56b0c3 100644 --- a/Translations/WinMerge/Basque.po +++ b/Translations/WinMerge/Basque.po @@ -1857,7 +1857,7 @@ msgstr "Gaitu bloke &mugitu atzematea" msgid "Align &similar lines" msgstr "" -msgid "Diff &algorithm (Experimental):" +msgid "Diff &algorithm:" msgstr "" msgid "Enable indent &heuristic" diff --git a/Translations/WinMerge/Brazilian.po b/Translations/WinMerge/Brazilian.po index 60d895f0dc9..acee918466c 100644 --- a/Translations/WinMerge/Brazilian.po +++ b/Translations/WinMerge/Brazilian.po @@ -1515,8 +1515,8 @@ msgstr "A&tivar a detecção dos blocos movidos" msgid "Align &similar lines" msgstr "Alinhar linhas &semelhantes" -msgid "Diff &algorithm (Experimental):" -msgstr "Algoritmo da &diferenciação (Experimental):" +msgid "Diff &algorithm:" +msgstr "Algoritmo da &diferenciação:" msgid "Enable indent &heuristic" msgstr "Ativar heurística de &recuo" diff --git a/Translations/WinMerge/Bulgarian.po b/Translations/WinMerge/Bulgarian.po index 4e961700454..78e873ada39 100644 --- a/Translations/WinMerge/Bulgarian.po +++ b/Translations/WinMerge/Bulgarian.po @@ -1514,8 +1514,8 @@ msgstr "Разпознаване на преместени па&раграфи" msgid "Align &similar lines" msgstr "Подра&вняване на подобни редове" -msgid "Diff &algorithm (Experimental):" -msgstr "&Алгоритъм за различия (експериментално):" +msgid "Diff &algorithm:" +msgstr "&Алгоритъм за различия:" msgid "Enable indent &heuristic" msgstr "П&редполагане на отстъпа" diff --git a/Translations/WinMerge/Catalan.po b/Translations/WinMerge/Catalan.po index 292c77e90f6..9122ea068dc 100644 --- a/Translations/WinMerge/Catalan.po +++ b/Translations/WinMerge/Catalan.po @@ -1855,8 +1855,8 @@ msgstr "&Habilita detecció de blocs desplaçats" msgid "Align &similar lines" msgstr "Em&parella les línies similars" -msgid "Diff &algorithm (Experimental):" -msgstr "Algoritme de diferenciació (Experimental):" +msgid "Diff &algorithm:" +msgstr "Algoritme de diferenciació:" msgid "Enable indent &heuristic" msgstr "Habilita la heurística de sagnat" diff --git a/Translations/WinMerge/ChineseSimplified.po b/Translations/WinMerge/ChineseSimplified.po index 40f463bd90f..f202bc72f7b 100644 --- a/Translations/WinMerge/ChineseSimplified.po +++ b/Translations/WinMerge/ChineseSimplified.po @@ -1520,8 +1520,8 @@ msgstr "启用块移动检测(&N)" msgid "Align &similar lines" msgstr "对齐相似的行(&S)" -msgid "Diff &algorithm (Experimental):" -msgstr "比较算法 (实验性) (&A):" +msgid "Diff &algorithm:" +msgstr "比较算法(&A):" msgid "Enable indent &heuristic" msgstr "启用启发式缩进(&H)" diff --git a/Translations/WinMerge/ChineseTraditional.po b/Translations/WinMerge/ChineseTraditional.po index c0ff5b2e1b8..b842c4841d2 100644 --- a/Translations/WinMerge/ChineseTraditional.po +++ b/Translations/WinMerge/ChineseTraditional.po @@ -1865,8 +1865,8 @@ msgstr "偵測移位的區塊 (&N)" msgid "Align &similar lines" msgstr "相似行對齊 (&S)" -msgid "Diff &algorithm (Experimental):" -msgstr "實驗性差異演算法 (&A):" +msgid "Diff &algorithm:" +msgstr "差異演算法 (&A):" msgid "Enable indent &heuristic" msgstr "啟用縮排啟發式演算法 (&H)" diff --git a/Translations/WinMerge/Corsican.po b/Translations/WinMerge/Corsican.po index 20518943d05..d50965de365 100644 --- a/Translations/WinMerge/Corsican.po +++ b/Translations/WinMerge/Corsican.po @@ -1519,8 +1519,8 @@ msgstr "Attivà l’avventata di i blocchi &dispiazzati" msgid "Align &similar lines" msgstr "&Alineà e linee simile" -msgid "Diff &algorithm (Experimental):" -msgstr "Cudificazione di sfarenza (esperimentale) :" +msgid "Diff &algorithm:" +msgstr "Cudificazione di sfarenza:" msgid "Enable indent &heuristic" msgstr "Attivà l’indentazione &euristica" diff --git a/Translations/WinMerge/Croatian.po b/Translations/WinMerge/Croatian.po index 7685b4ea8fc..e3435806887 100644 --- a/Translations/WinMerge/Croatian.po +++ b/Translations/WinMerge/Croatian.po @@ -1855,7 +1855,7 @@ msgstr "Omogući &razlikovanje premještenih blokova" msgid "Align &similar lines" msgstr "" -msgid "Diff &algorithm (Experimental):" +msgid "Diff &algorithm:" msgstr "" msgid "Enable indent &heuristic" diff --git a/Translations/WinMerge/Czech.po b/Translations/WinMerge/Czech.po index 1af8ce68c84..189adabbc3c 100644 --- a/Translations/WinMerge/Czech.po +++ b/Translations/WinMerge/Czech.po @@ -1855,7 +1855,7 @@ msgstr "Povolit zjišťování přesunutých &bloků" msgid "Align &similar lines" msgstr "" -msgid "Diff &algorithm (Experimental):" +msgid "Diff &algorithm:" msgstr "" msgid "Enable indent &heuristic" diff --git a/Translations/WinMerge/Danish.po b/Translations/WinMerge/Danish.po index 660097aff15..c75e1a4739f 100644 --- a/Translations/WinMerge/Danish.po +++ b/Translations/WinMerge/Danish.po @@ -1856,7 +1856,7 @@ msgstr "&Aktiver detektion af flyttede blokke" msgid "Align &similar lines" msgstr "" -msgid "Diff &algorithm (Experimental):" +msgid "Diff &algorithm:" msgstr "" msgid "Enable indent &heuristic" diff --git a/Translations/WinMerge/Dutch.po b/Translations/WinMerge/Dutch.po index 081ca2d7b9b..10af8fb7448 100644 --- a/Translations/WinMerge/Dutch.po +++ b/Translations/WinMerge/Dutch.po @@ -1515,8 +1515,8 @@ msgstr "Detectie verplaatste blokken inschakelen" msgid "Align &similar lines" msgstr "Gelijkaardige regels uitlijnen" -msgid "Diff &algorithm (Experimental):" -msgstr "Vergelijkingsalgoritme (experimenteel):" +msgid "Diff &algorithm:" +msgstr "Vergelijkingsalgoritme:" msgid "Enable indent &heuristic" msgstr "Inspringing-heuristiek inschakelen" diff --git a/Translations/WinMerge/English.pot b/Translations/WinMerge/English.pot index 4d21e3d238d..29f7fab42f6 100644 --- a/Translations/WinMerge/English.pot +++ b/Translations/WinMerge/English.pot @@ -1509,7 +1509,7 @@ msgstr "" msgid "Align &similar lines" msgstr "" -msgid "Diff &algorithm (Experimental):" +msgid "Diff &algorithm:" msgstr "" msgid "Enable indent &heuristic" diff --git a/Translations/WinMerge/Finnish.po b/Translations/WinMerge/Finnish.po index 09b941ac631..767195cfeda 100644 --- a/Translations/WinMerge/Finnish.po +++ b/Translations/WinMerge/Finnish.po @@ -1520,8 +1520,8 @@ msgstr "Ota siirretyn lohkon tunnistus käyttöön" msgid "Align &similar lines" msgstr "" -msgid "Diff &algorithm (Experimental):" -msgstr "Ero&algoritmi (kokeellinen):" +msgid "Diff &algorithm:" +msgstr "Ero&algoritmi:" msgid "Enable indent &heuristic" msgstr "Ota käyttöön &heuristinen sisennys" diff --git a/Translations/WinMerge/French.po b/Translations/WinMerge/French.po index 90e7f23b441..6fda08e782d 100644 --- a/Translations/WinMerge/French.po +++ b/Translations/WinMerge/French.po @@ -1863,8 +1863,8 @@ msgstr "&Activer la détection des blocs déplacés" msgid "Align &similar lines" msgstr "Aligner les lignes &similaires" -msgid "Diff &algorithm (Experimental):" -msgstr "&Algorithme Différentiel (expérimental) :" +msgid "Diff &algorithm:" +msgstr "&Algorithme Différentiel:" msgid "Enable indent &heuristic" msgstr "Activer l'indentation &heuristique" diff --git a/Translations/WinMerge/Galician.po b/Translations/WinMerge/Galician.po index 51cb311a308..1c8493868c4 100644 --- a/Translations/WinMerge/Galician.po +++ b/Translations/WinMerge/Galician.po @@ -1516,8 +1516,8 @@ msgstr "Habilitar detecció&n de bloques desprazados" msgid "Align &similar lines" msgstr "Aliñar liñas &similares" -msgid "Diff &algorithm (Experimental):" -msgstr "&Algoritmo de comparación (experimental):" +msgid "Diff &algorithm:" +msgstr "&Algoritmo de comparación:" msgid "Enable indent &heuristic" msgstr "Habilitar a &heurística do sangrado" diff --git a/Translations/WinMerge/German.po b/Translations/WinMerge/German.po index 497bda51d85..da0a436f80e 100644 --- a/Translations/WinMerge/German.po +++ b/Translations/WinMerge/German.po @@ -1859,8 +1859,8 @@ msgstr "Verschobene &Blöcke erkennen" msgid "Align &similar lines" msgstr "&Ähnliche Zeilen ausrichten" -msgid "Diff &algorithm (Experimental):" -msgstr "&Diff-Algorithmus (experimentell):" +msgid "Diff &algorithm:" +msgstr "&Diff-Algorithmus:" msgid "Enable indent &heuristic" msgstr "&Heuristischen Einzug aktivieren" diff --git a/Translations/WinMerge/Greek.po b/Translations/WinMerge/Greek.po index bafc5f28552..472b461b66b 100644 --- a/Translations/WinMerge/Greek.po +++ b/Translations/WinMerge/Greek.po @@ -1854,7 +1854,7 @@ msgstr "Ενεργοποίηση ανι&χνεύσεως μετακινηθέν msgid "Align &similar lines" msgstr "" -msgid "Diff &algorithm (Experimental):" +msgid "Diff &algorithm:" msgstr "" msgid "Enable indent &heuristic" diff --git a/Translations/WinMerge/Hungarian.po b/Translations/WinMerge/Hungarian.po index 9cdb4e49584..aa400330fcc 100644 --- a/Translations/WinMerge/Hungarian.po +++ b/Translations/WinMerge/Hungarian.po @@ -1857,8 +1857,8 @@ msgstr "Mozgatott &blokk észlelés bekapcsolása" msgid "Align &similar lines" msgstr "Hasonló sorok igazítása" -msgid "Diff &algorithm (Experimental):" -msgstr "Különbségkereső algoritmus (kísérleti):" +msgid "Diff &algorithm:" +msgstr "Különbségkereső algoritmus:" msgid "Enable indent &heuristic" msgstr "Heurisztika engedélyezése" diff --git a/Translations/WinMerge/Italian.po b/Translations/WinMerge/Italian.po index aec30682b44..81b6f15c5d9 100644 --- a/Translations/WinMerge/Italian.po +++ b/Translations/WinMerge/Italian.po @@ -1513,8 +1513,8 @@ msgstr "Attiva rilevamento blocc&hi spostati" msgid "Align &similar lines" msgstr "Allinea le righe &simili" -msgid "Diff &algorithm (Experimental):" -msgstr "&Algoritmo differenze (sperimentale):" +msgid "Diff &algorithm:" +msgstr "&Algoritmo differenze:" msgid "Enable indent &heuristic" msgstr "Abilita rientro &euristico" diff --git a/Translations/WinMerge/Japanese.po b/Translations/WinMerge/Japanese.po index 091f14a5f9c..63b50520e98 100644 --- a/Translations/WinMerge/Japanese.po +++ b/Translations/WinMerge/Japanese.po @@ -1518,8 +1518,8 @@ msgstr "移動ブロック検出を有効にする(&N)" msgid "Align &similar lines" msgstr "類似行をマッチさせる(&S)" -msgid "Diff &algorithm (Experimental):" -msgstr "Diff アルゴリズム (実験的機能)(&A):" +msgid "Diff &algorithm:" +msgstr "Diff アルゴリズム(&A):" msgid "Enable indent &heuristic" msgstr "Indent heuristic を有効にする(&H)" diff --git a/Translations/WinMerge/Korean.po b/Translations/WinMerge/Korean.po index fb585a9aaa5..3b34944a3b9 100644 --- a/Translations/WinMerge/Korean.po +++ b/Translations/WinMerge/Korean.po @@ -1864,8 +1864,8 @@ msgstr "이동된 블럭 감지 활성화(&N)" msgid "Align &similar lines" msgstr "유사한 줄 정렬(&S)" -msgid "Diff &algorithm (Experimental):" -msgstr "비교 알고리즘 (실험 기능)(&A)" +msgid "Diff &algorithm:" +msgstr "비교 알고리즘(&A)" msgid "Enable indent &heuristic" msgstr "들여쓰기 휴리스틱 활성화(&H)" diff --git a/Translations/WinMerge/Lithuanian.po b/Translations/WinMerge/Lithuanian.po index d10c2ce26ca..80ab44e058b 100644 --- a/Translations/WinMerge/Lithuanian.po +++ b/Translations/WinMerge/Lithuanian.po @@ -1515,8 +1515,8 @@ msgstr "Įju&ngti perkeltų blokų aptikimą" msgid "Align &similar lines" msgstr "&Sutapdinti panašias eilutes" -msgid "Diff &algorithm (Experimental):" -msgstr "Lyginimo &algoritmas (Bandymai):" +msgid "Diff &algorithm:" +msgstr "Lyginimo &algoritmas:" msgid "Enable indent &heuristic" msgstr "Įgalinti &heuristinę įtrauką" diff --git a/Translations/WinMerge/Norwegian.po b/Translations/WinMerge/Norwegian.po index 180f6d4afdf..2c9f7b6007f 100644 --- a/Translations/WinMerge/Norwegian.po +++ b/Translations/WinMerge/Norwegian.po @@ -1516,7 +1516,7 @@ msgstr "&Aktiver flyttet blokk-oppdagelse" msgid "Align &similar lines" msgstr "" -msgid "Diff &algorithm (Experimental):" +msgid "Diff &algorithm:" msgstr "" msgid "Enable indent &heuristic" diff --git a/Translations/WinMerge/Persian.po b/Translations/WinMerge/Persian.po index 94c0afc344c..747b5765ed8 100644 --- a/Translations/WinMerge/Persian.po +++ b/Translations/WinMerge/Persian.po @@ -1858,7 +1858,7 @@ msgstr "&n فعال کردن تشخيص قطعه جابجا شده " msgid "Align &similar lines" msgstr "" -msgid "Diff &algorithm (Experimental):" +msgid "Diff &algorithm:" msgstr "" msgid "Enable indent &heuristic" diff --git a/Translations/WinMerge/Polish.po b/Translations/WinMerge/Polish.po index 876454f0b71..cee53fe8ad1 100644 --- a/Translations/WinMerge/Polish.po +++ b/Translations/WinMerge/Polish.po @@ -1516,8 +1516,8 @@ msgstr "Włącz wykrywanie przeniesionych bloków" msgid "Align &similar lines" msgstr "Wyrównaj podobne wiersze" -msgid "Diff &algorithm (Experimental):" -msgstr "Algorytm porównywania (eksperymentalny):" +msgid "Diff &algorithm:" +msgstr "Algorytm porównywania:" msgid "Enable indent &heuristic" msgstr "Włącz heurystykę wcięcia" diff --git a/Translations/WinMerge/Portuguese.po b/Translations/WinMerge/Portuguese.po index 07f78d6c785..0aecdcbff17 100644 --- a/Translations/WinMerge/Portuguese.po +++ b/Translations/WinMerge/Portuguese.po @@ -1518,8 +1518,8 @@ msgstr "Ativar deteção de bloco movido" msgid "Align &similar lines" msgstr "Alinhar linhas &semelhantes" -msgid "Diff &algorithm (Experimental):" -msgstr "Diff &algoritmo (Experimental):" +msgid "Diff &algorithm:" +msgstr "Diff &algoritmo:" msgid "Enable indent &heuristic" msgstr "Ativar travessão &heurístico" diff --git a/Translations/WinMerge/Romanian.po b/Translations/WinMerge/Romanian.po index 039c93365af..e6f03558648 100644 --- a/Translations/WinMerge/Romanian.po +++ b/Translations/WinMerge/Romanian.po @@ -1855,7 +1855,7 @@ msgstr "Activea&ză detecţie blocuri mutate" msgid "Align &similar lines" msgstr "" -msgid "Diff &algorithm (Experimental):" +msgid "Diff &algorithm:" msgstr "" msgid "Enable indent &heuristic" diff --git a/Translations/WinMerge/Russian.po b/Translations/WinMerge/Russian.po index 5aebf118b36..51b2af3931d 100644 --- a/Translations/WinMerge/Russian.po +++ b/Translations/WinMerge/Russian.po @@ -1517,8 +1517,8 @@ msgstr "Обнаружение переме&щенных блоков" msgid "Align &similar lines" msgstr "Выровнять по&хожие строки" -msgid "Diff &algorithm (Experimental):" -msgstr "Алгоритм сравнения (эксперимент.):" +msgid "Diff &algorithm:" +msgstr "Алгоритм сравнения:" msgid "Enable indent &heuristic" msgstr "Включать эвристику отступов" diff --git a/Translations/WinMerge/Serbian.po b/Translations/WinMerge/Serbian.po index 29a1ed5ac44..88f228cc0e3 100644 --- a/Translations/WinMerge/Serbian.po +++ b/Translations/WinMerge/Serbian.po @@ -1838,7 +1838,7 @@ msgstr "Омогући откривање премештених група" msgid "Align &similar lines" msgstr "" -msgid "Diff &algorithm (Experimental):" +msgid "Diff &algorithm:" msgstr "" msgid "Enable indent &heuristic" diff --git a/Translations/WinMerge/Sinhala.po b/Translations/WinMerge/Sinhala.po index 684087cbb02..db4199f822a 100644 --- a/Translations/WinMerge/Sinhala.po +++ b/Translations/WinMerge/Sinhala.po @@ -1855,7 +1855,7 @@ msgstr "E&nable moved block detection" msgid "Align &similar lines" msgstr "" -msgid "Diff &algorithm (Experimental):" +msgid "Diff &algorithm:" msgstr "" msgid "Enable indent &heuristic" diff --git a/Translations/WinMerge/Slovak.po b/Translations/WinMerge/Slovak.po index 795859d8e8e..358179a6634 100644 --- a/Translations/WinMerge/Slovak.po +++ b/Translations/WinMerge/Slovak.po @@ -1515,8 +1515,8 @@ msgstr "Povoliť &zisťovanie presunu bloku" msgid "Align &similar lines" msgstr "" -msgid "Diff &algorithm (Experimental):" -msgstr "&Algoritmus rozdielov (experimentálne):" +msgid "Diff &algorithm:" +msgstr "&Algoritmus rozdielov:" msgid "Enable indent &heuristic" msgstr "Povoliť &heuristické odsadenie" diff --git a/Translations/WinMerge/Slovenian.po b/Translations/WinMerge/Slovenian.po index a9d8f1609b4..7975dfff8d9 100644 --- a/Translations/WinMerge/Slovenian.po +++ b/Translations/WinMerge/Slovenian.po @@ -1515,8 +1515,8 @@ msgstr "Omogoči zazna&vanje premaknjenih blokov" msgid "Align &similar lines" msgstr "Poravnaj po&dobne črte" -msgid "Diff &algorithm (Experimental):" -msgstr "Al&goritem razlik (poskusno):" +msgid "Diff &algorithm:" +msgstr "Al&goritem razlik:" msgid "Enable indent &heuristic" msgstr "Omogoči &hevristični zamik" diff --git a/Translations/WinMerge/Spanish.po b/Translations/WinMerge/Spanish.po index ec0ed901920..bd21548bcc6 100644 --- a/Translations/WinMerge/Spanish.po +++ b/Translations/WinMerge/Spanish.po @@ -1518,8 +1518,8 @@ msgstr "Habilitar detecció&n de bloques desplazados" msgid "Align &similar lines" msgstr "Alinear líneas &simliares" -msgid "Diff &algorithm (Experimental):" -msgstr "&Algoritmo de comparación (experimental):" +msgid "Diff &algorithm:" +msgstr "&Algoritmo de comparación:" msgid "Enable indent &heuristic" msgstr "Habilitar la &heurística de indentación" diff --git a/Translations/WinMerge/Swedish.po b/Translations/WinMerge/Swedish.po index 4f99f2b4d21..8ff2d3ccd19 100644 --- a/Translations/WinMerge/Swedish.po +++ b/Translations/WinMerge/Swedish.po @@ -1524,8 +1524,8 @@ msgstr "Aktivera detektering av flyttade block" msgid "Align &similar lines" msgstr "Injustera likartade rader" -msgid "Diff &algorithm (Experimental):" -msgstr "Jämförelsealgoritm (experimentell):" +msgid "Diff &algorithm:" +msgstr "Jämförelsealgoritm:" msgid "Enable indent &heuristic" msgstr "Aktivera indragsstöd" diff --git a/Translations/WinMerge/Tamil.po b/Translations/WinMerge/Tamil.po index c121a222947..9bab647e9da 100644 --- a/Translations/WinMerge/Tamil.po +++ b/Translations/WinMerge/Tamil.po @@ -1513,8 +1513,8 @@ msgstr "நகர்த்தப்பட்ட தொகுதி கண்ட msgid "Align &similar lines" msgstr "ஒத்த வரிகளை சீரமைக்கவும்" -msgid "Diff &algorithm (Experimental):" -msgstr "வேறுபாடு &அல்காரிதம் (பரிசோதனை):" +msgid "Diff &algorithm:" +msgstr "வேறுபாடு &அல்காரிதம்:" msgid "Enable indent &heuristic" msgstr "இன்டென்ட் &யூரிஸ்டிக் இயக்கு" diff --git a/Translations/WinMerge/Turkish.po b/Translations/WinMerge/Turkish.po index 09ac4bd6829..ae7f5808989 100644 --- a/Translations/WinMerge/Turkish.po +++ b/Translations/WinMerge/Turkish.po @@ -1520,8 +1520,8 @@ msgstr "Taşı&nmış blok algılaması kullanılsın" msgid "Align &similar lines" msgstr "&Benzer satırlar hizalansın" -msgid "Diff &algorithm (Experimental):" -msgstr "&Fark algortiması (Deneysel):" +msgid "Diff &algorithm:" +msgstr "&Fark algortiması:" msgid "Enable indent &heuristic" msgstr "&Sezgisel girinti kullanılsın" diff --git a/Translations/WinMerge/Ukrainian.po b/Translations/WinMerge/Ukrainian.po index c443dd32f04..bcfe1a1e67d 100644 --- a/Translations/WinMerge/Ukrainian.po +++ b/Translations/WinMerge/Ukrainian.po @@ -1839,7 +1839,7 @@ msgstr "Виявлення перемі&щених блоків" msgid "Align &similar lines" msgstr "" -msgid "Diff &algorithm (Experimental):" +msgid "Diff &algorithm:" msgstr "" msgid "Enable indent &heuristic"