Skip to content

Commit 0ff728b

Browse files
committed
Fixes to mod merging (contributed by fournm) (fixes #141)
1 parent 18ac7aa commit 0ff728b

2 files changed

Lines changed: 28 additions & 3 deletions

File tree

core/mods.py

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,7 @@ def merge_line_list(mod_text, vanilla_text, gen_text):
285285
mod_ops = SequenceMatcher(None, vanilla_text, mod_text).get_opcodes()
286286
outfile = []
287287
for block in three_way_merge(gen_text, gen_ops, mod_text, mod_ops):
288+
log.d('writing block')
288289
outfile.extend(block)
289290
status = outfile.pop()
290291
return status, outfile
@@ -293,39 +294,62 @@ def three_way_merge(gen_text, van_gen_ops, mod_text, van_mod_ops):
293294
"""Yield blocks of lines from a three-way-merge. Last block is status."""
294295
status, cur_v, mod_i2, gen_i2 = 0, 0, 1, 1
295296
while van_mod_ops and van_gen_ops:
297+
log.d('before pop')
298+
log.d('gen ops: ' + str(van_gen_ops))
299+
log.d('mod ops: ' + str(van_mod_ops))
300+
log.d('mod_i2: ' + str(mod_i2) + ' gen_i2: ' + str(gen_i2) + ' cur_v: ' + str(cur_v))
296301
if mod_i2 <= cur_v:
302+
log.d('pop mod')
297303
van_mod_ops.pop(0)
298304
if gen_i2 <= cur_v:
305+
log.d('pop gen')
299306
van_gen_ops.pop(0)
307+
log.d('after pop')
308+
log.d('gen ops: ' + str(van_gen_ops))
309+
log.d('mod ops: ' + str(van_mod_ops))
310+
if len(van_mod_ops) == 0 or len(van_gen_ops) == 0:
311+
log.d('out of entries')
312+
break
300313
_, _, mod_i2, mod_j1, mod_j2 = van_mod_ops[0]
301314
gen_tag, _, gen_i2, gen_j1, gen_j2 = van_gen_ops[0]
302315
low_i2 = min(mod_i2, gen_i2)
303316
if van_mod_ops[0][0] == 'equal':
317+
log.d('equal mod ops')
304318
if gen_tag == 'equal':
319+
log.d('equal gen tag')
305320
yield gen_text[cur_v:low_i2]
306321
cur_v = low_i2
322+
log.d('back from equal gen tag')
307323
continue
324+
log.d('not equal gen tag')
308325
yield gen_text[gen_j1:gen_j2]
309326
cur_v = gen_i2
310327
continue
311328
if gen_tag == 'equal':
329+
log.d('not equal mod op, equal gen tag')
312330
yield mod_text[mod_j1:mod_j2]
313331
cur_v = mod_i2
314332
continue
315-
yield mod_text[cur_v:low_i2]
333+
334+
log.d('yield mod text (cur_v: ' + str(cur_v) + ', mod_j2: ' + str(mod_j2) + '): ' + str(mod_text[cur_v:mod_j2]))
335+
yield mod_text[cur_v:mod_j2]
336+
log.d('back from yield mod text')
316337
if gen_text[cur_v:low_i2] != mod_text[cur_v:low_i2]:
317338
status = 2
318339
log.d('Overwrite merge at line {}'.format(cur_v))
319340
log.v('- ' + '- '.join(gen_text[cur_v:low_i2]) +
320341
'+ ' + '+ '.join(mod_text[cur_v:low_i2]))
321342
cur_v = low_i2
322343
while van_mod_ops:
344+
log.d('popping mod ops')
323345
_, _, _, mod_j1, mod_j2 = van_mod_ops.pop(0)
324346
yield mod_text[mod_j1:mod_j2]
325347
while van_gen_ops:
348+
log.d('popping gen ops')
326349
_, _, _, gen_j1, gen_j2 = van_gen_ops.pop(0)
327350
yield gen_text[gen_j1:gen_j2]
328-
yield status
351+
log.d('yield status')
352+
yield [status]
329353

330354
def clear_temp():
331355
"""Resets the folder in which raws are mixed."""

tkgui/tkgui.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -562,7 +562,8 @@ def show_about():
562562
messagebox.showinfo(
563563
title='About', message="PyLNP "+VERSION +" - Lazy Newb Pack Python "
564564
"Edition\n\nPort by Pidgeot\nContributions by PeridexisErrant, "
565-
"rx80, dricus, James Morgensen, jecowa, carterscottm, McArcady\n\n"
565+
"rx80, dricus, James Morgensen, jecowa, carterscottm, McArcadym, "
566+
"fournm\n\n"
566567
"Original program: LucasUP, TolyK/aTolyK")
567568

568569
@staticmethod

0 commit comments

Comments
 (0)