BlackBox diffutils -------------------- Clone of diff and diff3 utilites from *nix for BlackBox and its binary Compound Document format. Commands -------------------- To use tools within Blackbox just compile DiffBase and DiffUtils. DiffUtils.Compare (guard TextCmds.FocusGuard) Compare texts from two windows. You can directly replace DevSearch.Compare with DiffUtils.Compare in Dev/Rsrc/Menus.odc. ^Q DiffUtils.CompareThis [">" ] Compare two files and produce patch in unified diff format. ^Q DiffUtils.MergeThis [">" ] Read three files and do three-way merge like diff3. Dedicated tool -------------------- You can read, create diffs and merge documents from command line using odctool. To build it, open DiffMain and execute commanders at the end of document. Call `odctool help` to learn how to use it. Integration with Git -------------------- 1. Compile odctool. 2. Create script odctool-gitdiff: #! /bin/sh odctool diff -C -p "$1" "$2" "$5" 3. Add to .git/config: [merge "odctool"] name = BlackBox Compound Document merge driver driver = /path/to/odctool merge -p %P -o %A %A %O %B [diff "odctool"] name = BlackBox Compound Document diff driver command = /path/to/odctool-gitdiff 4. Add to .git/info/attributes: *.odc merge=odctool diff=odctool 5. Optionally you can ignore some BlackBox related files if add to .git/info/exclude: *.ocf *.osf odc[0-9][0-9][0-9][0-9][0-9] Now you can see diffs using `git diff' and resolve conflicts from BlackBox. Integration with ranger ----------------------- 1. To preview documents add to $HOME/.config/ranger/scope.sh: handle_extension() { case "${FILE_EXTENSION_LOWER}" in ... # BlackBox Compound Document odc) odctool -C cat "${FILE_PATH}" && exit 5 exit 1;; esac } 2. To open/read documents add to $HOME/.config/ranger/rifle.conf: ext odc, has odctool, terminal, file = odctool -C cat "$1" | less --tabs=2 -S Current state -------------------- This is NOT final version of subsustem Diff and odctool. It is NOT well tested, you are warned! Also, program and user interfaces are not stable yet, so it can be changed in future.