From 29479acee5d761738978a0ab3d6d0bf68b3fb2ea Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Thu, 8 Sep 2022 10:49:06 +0200 Subject: Move linediff to bin/ and install it. --- bin/linediff | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ install.conf.yaml | 1 + vim/linediff | 73 ------------------------------------------------------- 3 files changed, 74 insertions(+), 73 deletions(-) create mode 100755 bin/linediff delete mode 100755 vim/linediff diff --git a/bin/linediff b/bin/linediff new file mode 100755 index 0000000..c0b522c --- /dev/null +++ b/bin/linediff @@ -0,0 +1,73 @@ +#!/usr/bin/python3 + +# script for line-by-line diffing in vim +# TODO: prettify/test + +import sys + +if len(sys.argv) < 3: + sys.stderr.write('Usage: %s file1 file2\n' % sys.argv[0]) + sys.exit(1) + +f1 = open(sys.argv[1], 'r') +f2 = open(sys.argv[2], 'r') + +buf_start = -1 +buf1 = [] +buf2 = [] + +def flush_buf(): + global buf_start, buf1, buf2 + + if buf_start == -1: + return + + if (len(buf1) > 1): + sys.stdout.write('%d,%dc%d,%d\n' % (buf_start, buf_start + len(buf1) - 1, buf_start, buf_start + len(buf1) - 1)) + else: + sys.stdout.write('%dc%d\n' % (buf_start, buf_start)) + + for line in buf1: + sys.stdout.write('< %s' % line) + sys.stdout.write('---\n') + for line in buf2: + sys.stdout.write('> %s' % line) + + buf_start = -1 + buf1 = [] + buf2 = [] + +i = 1 +while True: + line1 = f1.readline() + line2 = f2.readline() + + if (line1 == '') != (line2 == ''): + flush_buf() + line = line1 if line1 else line2 + f = f1 if line1 else f2 + buf = [line] + buf.extend(map(lambda x: x.rstrip('\n'), f.readlines())) + sys.stdout.write('%d,%d' % (i, i + len(buf) - 1)) + sys.stdout.write('d' if line1 else 'c') + sys.stdout.write('\n') + for line in buf: + sys.stdout.write('%s %s\n' % ('>' if line1 else '<', line)) + break + + if line1 == '': + flush_buf() + break + + if line1 == line2: + flush_buf() + else: + if buf_start == -1: + buf_start = i + buf1.append(line1) + buf2.append(line2) + + i += 1 + +f1.close() +f2.close() diff --git a/install.conf.yaml b/install.conf.yaml index 756c5e6..5298f4b 100644 --- a/install.conf.yaml +++ b/install.conf.yaml @@ -16,6 +16,7 @@ - link: ~/.local/bin/diff-highlight: bin/diff-highlight + ~/.local/bin/linediff: bin/linediff ~/.local/bin/up: relink: True path: bin/ups diff --git a/vim/linediff b/vim/linediff deleted file mode 100755 index c0b522c..0000000 --- a/vim/linediff +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/python3 - -# script for line-by-line diffing in vim -# TODO: prettify/test - -import sys - -if len(sys.argv) < 3: - sys.stderr.write('Usage: %s file1 file2\n' % sys.argv[0]) - sys.exit(1) - -f1 = open(sys.argv[1], 'r') -f2 = open(sys.argv[2], 'r') - -buf_start = -1 -buf1 = [] -buf2 = [] - -def flush_buf(): - global buf_start, buf1, buf2 - - if buf_start == -1: - return - - if (len(buf1) > 1): - sys.stdout.write('%d,%dc%d,%d\n' % (buf_start, buf_start + len(buf1) - 1, buf_start, buf_start + len(buf1) - 1)) - else: - sys.stdout.write('%dc%d\n' % (buf_start, buf_start)) - - for line in buf1: - sys.stdout.write('< %s' % line) - sys.stdout.write('---\n') - for line in buf2: - sys.stdout.write('> %s' % line) - - buf_start = -1 - buf1 = [] - buf2 = [] - -i = 1 -while True: - line1 = f1.readline() - line2 = f2.readline() - - if (line1 == '') != (line2 == ''): - flush_buf() - line = line1 if line1 else line2 - f = f1 if line1 else f2 - buf = [line] - buf.extend(map(lambda x: x.rstrip('\n'), f.readlines())) - sys.stdout.write('%d,%d' % (i, i + len(buf) - 1)) - sys.stdout.write('d' if line1 else 'c') - sys.stdout.write('\n') - for line in buf: - sys.stdout.write('%s %s\n' % ('>' if line1 else '<', line)) - break - - if line1 == '': - flush_buf() - break - - if line1 == line2: - flush_buf() - else: - if buf_start == -1: - buf_start = i - buf1.append(line1) - buf2.append(line2) - - i += 1 - -f1.close() -f2.close() -- cgit v1.2.3