pyDiffTools 0.1.51__tar.gz → 0.1.53__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. {pydifftools-0.1.51 → pydifftools-0.1.53}/MANIFEST.in +1 -0
  2. {pydifftools-0.1.51/pyDiffTools.egg-info → pydifftools-0.1.53}/PKG-INFO +108 -7
  3. {pydifftools-0.1.51 → pydifftools-0.1.53}/README.rst +107 -6
  4. {pydifftools-0.1.51 → pydifftools-0.1.53/pyDiffTools.egg-info}/PKG-INFO +108 -7
  5. {pydifftools-0.1.51 → pydifftools-0.1.53}/pyDiffTools.egg-info/SOURCES.txt +6 -0
  6. pydifftools-0.1.53/pydifftools/browser_lifecycle.py +173 -0
  7. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/command_line.py +48 -5
  8. pydifftools-0.1.53/pydifftools/completions/git-mergein +41 -0
  9. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/continuous.py +106 -168
  10. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/flowchart/source_jump.js +24 -9
  11. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/flowchart/watch_graph.py +10 -33
  12. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/flowchart/wgrph_view.js +61 -27
  13. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/forward_search.py +5 -0
  14. pydifftools-0.1.53/pydifftools/git_aliases.py +139 -0
  15. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/git_gd.py +9 -46
  16. pydifftools-0.1.53/pydifftools/line_alignment.py +571 -0
  17. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/notebook/fast_build.py +503 -379
  18. pydifftools-0.1.53/pydifftools/pdf_diff.py +564 -0
  19. pydifftools-0.1.53/pydifftools/source_jump.py +203 -0
  20. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/wrap_sentences.py +142 -38
  21. {pydifftools-0.1.51 → pydifftools-0.1.53}/pyproject.toml +2 -1
  22. pydifftools-0.1.53/tests/test_browser_lifecycle.py +273 -0
  23. {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_command_line_help.py +29 -3
  24. {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_continuous_shutdown.py +6 -2
  25. {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_forward_search.py +131 -0
  26. pydifftools-0.1.53/tests/test_git_mergein.py +256 -0
  27. pydifftools-0.1.53/tests/test_git_pdf_diff.py +423 -0
  28. pydifftools-0.1.53/tests/test_line_alignment.py +385 -0
  29. pydifftools-0.1.53/tests/test_pdf_diff.py +494 -0
  30. pydifftools-0.1.53/tests/test_source_jump.py +424 -0
  31. {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_wrap_check.py +373 -46
  32. pydifftools-0.1.51/pydifftools/browser_lifecycle.py +0 -141
  33. pydifftools-0.1.51/pydifftools/line_alignment.py +0 -391
  34. pydifftools-0.1.51/pydifftools/source_jump.py +0 -128
  35. pydifftools-0.1.51/tests/test_browser_lifecycle.py +0 -171
  36. pydifftools-0.1.51/tests/test_line_alignment.py +0 -131
  37. pydifftools-0.1.51/tests/test_source_jump.py +0 -85
  38. {pydifftools-0.1.51 → pydifftools-0.1.53}/LICENSE.md +0 -0
  39. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/_quarto.yml +0 -0
  40. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/__version__.txt +0 -0
  41. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/1a724af72b16f5a9e607e12b1c721645/base.ipynb +0 -0
  42. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/1b28fc9daac9081847e5161b2c546f8a/base.ipynb +0 -0
  43. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/231f64eee282fa225d1104935cf80a24/base.ipynb +0 -0
  44. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/26e56f6b0ff54851a45145157f2f0dc4/base.ipynb +0 -0
  45. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/311fabd7029ffd050d056e2f316eb50f/base.ipynb +0 -0
  46. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/57da2021e5b156ac3adf01398201c723/base.ipynb +0 -0
  47. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/62b24ea7da75011d92b0f8924faa208d/base.ipynb +0 -0
  48. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/7f1b20d69d889514ab5d1cc92e3cb14f/base.ipynb +0 -0
  49. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/86f74c8c54a87ff892d9b15dd714e8f0/base.ipynb +0 -0
  50. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/88893b4234eac2945d9d6cb2e277f186/base.ipynb +0 -0
  51. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/9a40046ada6f582ee34af00fbdbfb417/base.ipynb +0 -0
  52. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/a1bf4d270d0641ff41faf1d7cce3439a/base.ipynb +0 -0
  53. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/a3789f7d9585a781f2a1c60ce95ff10d/base.ipynb +0 -0
  54. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/be46ecba858d39ad5f0c46902ddf1c02/base.ipynb +0 -0
  55. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/d0cbc57a12f2ccce710a5afd04cc05e7/base.ipynb +0 -0
  56. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/d3e12d320b14228f701231ae32ddd7dd/base.ipynb +0 -0
  57. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/eb434f61555438d020a6970a5dbf9ee8/base.ipynb +0 -0
  58. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/f6b0e73aa7fa029134665d4dde57e096/base.ipynb +0 -0
  59. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/f719a6e4ff09873cb0ffb06ec9d232f9/base.ipynb +0 -0
  60. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/feeee244a7ce3d60e1a227eb604df823/base.ipynb +0 -0
  61. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/global.db +0 -0
  62. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/example.qmd +0 -0
  63. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/example.tex +0 -0
  64. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/index.qmd +0 -0
  65. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/subproject1/.jupyter_cache/__version__.txt +0 -0
  66. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/subproject1/.jupyter_cache/executed/ca90e4df5f4f0583df6554156a68dc7f/base.ipynb +0 -0
  67. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/subproject1/.jupyter_cache/global.db +0 -0
  68. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/subproject1/end_vs_he_sketch.jpg +0 -0
  69. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/subproject1/independent.qmd +0 -0
  70. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/subproject1/index.qmd +0 -0
  71. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/subproject1/tasks.qmd +0 -0
  72. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/subproject1/test_include.qmd +0 -0
  73. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/subproject1/tryforerror.qmd +0 -0
  74. {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/test_include.qmd +0 -0
  75. {pydifftools-0.1.51 → pydifftools-0.1.53}/pyDiffTools.egg-info/dependency_links.txt +0 -0
  76. {pydifftools-0.1.51 → pydifftools-0.1.53}/pyDiffTools.egg-info/entry_points.txt +0 -0
  77. {pydifftools-0.1.51 → pydifftools-0.1.53}/pyDiffTools.egg-info/requires.txt +0 -0
  78. {pydifftools-0.1.51 → pydifftools-0.1.53}/pyDiffTools.egg-info/top_level.txt +0 -0
  79. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/__init__.py +0 -0
  80. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/bibliography.py +0 -0
  81. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/check_numbers.py +0 -0
  82. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/citation_dialog.py +0 -0
  83. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/command_registry.py +0 -0
  84. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/comment_filter_history.json +0 -0
  85. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/comment_functions.py +0 -0
  86. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/comment_migration.py +0 -0
  87. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/comment_tags.lua +0 -0
  88. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/comment_tags_margin.lua +0 -0
  89. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/comment_tags_no_comments.lua +0 -0
  90. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/comment_toggle.js +0 -0
  91. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/comments.css +0 -0
  92. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/comments_author_colors.css +0 -0
  93. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/copy_files.py +0 -0
  94. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/diff-doc.js +0 -0
  95. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/doc_contents.py +0 -0
  96. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/flowchart/__init__.py +0 -0
  97. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/flowchart/comparison.py +0 -0
  98. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/flowchart/dot_to_yaml.py +0 -0
  99. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/flowchart/graph.py +0 -0
  100. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/flowchart/svg-pan-zoom.min.js +0 -0
  101. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/git_gd_history.py +0 -0
  102. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/git_gd_image.py +0 -0
  103. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/git_gd_qt.py +0 -0
  104. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/html_comments.py +0 -0
  105. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/html_uncomments.py +0 -0
  106. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/log_example.py +0 -0
  107. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/match_spaces.py +0 -0
  108. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/notebook/__init__.py +0 -0
  109. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/notebook/display.py +0 -0
  110. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/notebook/tex_to_qmd.py +0 -0
  111. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/onewordify.py +0 -0
  112. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/onewordify_undo.py +0 -0
  113. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/outline.py +0 -0
  114. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/rearrange_tex.py +0 -0
  115. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/searchacro.py +0 -0
  116. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/separate_comments.py +0 -0
  117. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/split_conflict.py +0 -0
  118. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/unseparate_comments.py +0 -0
  119. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/update_check.py +0 -0
  120. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/wrapping_options.py +0 -0
  121. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/xml2xlsx.vbs +0 -0
  122. {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/zotero.py +0 -0
  123. {pydifftools-0.1.51 → pydifftools-0.1.53}/setup.cfg +0 -0
  124. {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_bibliography.py +0 -0
  125. {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_check_single_use.py +0 -0
  126. {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_comment_filters.py +0 -0
  127. {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_comment_migration.py +0 -0
  128. {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_git_gd_history.py +0 -0
  129. {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_git_gd_image.py +0 -0
  130. {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_git_gd_qt.py +0 -0
  131. {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_rrng.py +0 -0
  132. {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_tex_to_qmd.py +0 -0
  133. {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_update_check.py +0 -0
  134. {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_wrapping.py +0 -0
  135. {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_zotero.py +0 -0
@@ -1,6 +1,7 @@
1
1
  # In addition to the package file, various *.sh files are included -- these will eventually be converted to python
2
2
  include README.rst
3
3
  include LICENSE.md
4
+ include pydifftools/completions/git-mergein
4
5
  include pydifftools/diff-doc.js
5
6
  include pydifftools/xml2xlsx.vbs
6
7
  include pydifftools/comments.css
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyDiffTools
3
- Version: 0.1.51
3
+ Version: 0.1.53
4
4
  Summary: Diff tools
5
5
  Author: J M Franck
6
6
  License: Copyright (c) 2015, jmfranck
@@ -72,6 +72,30 @@ included are (listed in order of fun/utility):
72
72
  `filename.md`, build the result,
73
73
  and displays it in your browser.
74
74
 
75
+ Source diff linting minimizes line-break changes against the Git index
76
+ (staging area) by default, matching plain ``git diff``. Use
77
+ ``pydifft cpb filename.md --diff-base @`` to compare against HEAD, or
78
+ ``--diff-base jf_last`` to compare against a tag, branch, or commit hash.
79
+ The selected baseline is read again on each build. An unreadable explicit
80
+ baseline stops the build; an unavailable index baseline, such as for an
81
+ untracked file, falls back to ordinary source linting.
82
+ All diff-minimizing line-break fixes are applied automatically before
83
+ their notice appears. Each page shows as many changed hunks as fit in the
84
+ window, with a blank line separating hunks; larger changes are applied
85
+ just like single-break changes.
86
+ Diff alignment has separate eligibility rules from prose linting.
87
+ Equations and HTML comment contents participate in alignment, including
88
+ hunks that begin inside them. Display equations and hidden text remain
89
+ exempt from prose wrapping and sentence rules. Equation delimiters are
90
+ matched independently of their contents, and surviving matches on either
91
+ side of an edit restore whitespace while preserving changed values and
92
+ TeX commands. Literal delimiters in code are preserved.
93
+ Leading whitespace at matching line starts is restored in top-level
94
+ prose when both margins contain at most three spaces, and inside HTML
95
+ comments and equations. Container indentation (lists, definitions, and
96
+ quotations), tabs or four-space code indentation outside those spans,
97
+ and protected blocks retain their current margins.
98
+
75
99
  Continuous pandoc build.
76
100
  This works *very well* together
77
101
  with the `g/` vim command
@@ -185,9 +209,13 @@ included are (listed in order of fun/utility):
185
209
  clearing the entire query shows the full plan, including completed and
186
210
  undated tasks. Each embedded SVG and live refresh uses the same URL mode.
187
211
  The search button beside Home and Zoom finds text in the visible graph,
188
- highlights matches, and centers them at a readable font size. Tab or Enter
189
- advances to the next match; Shift+Tab or Shift+Enter goes back. Esc closes
190
- search. Phrases can span wrapped lines and formatted text.
212
+ highlights matches, and centers the containing task at your chosen zoom.
213
+ Tab or Enter advances to the next match; Shift+Tab or Shift+Enter goes
214
+ back. Esc closes search. Phrases can span wrapped lines and formatted
215
+ text. Resizing the window scales the current view with the viewport.
216
+ The ``1:1`` button displays fonts at their declared pixel sizes, including
217
+ correction for GraphViz's SVG scaling. Right-click a task and select
218
+ Jump to source to open its YAML definition in gvim.
191
219
  Comparison uses the same repository-relative YAML path; a file absent
192
220
  from the revision is treated as an empty plan. Historical file renames
193
221
  are not followed, and comparison markup is never written to YAML.
@@ -201,6 +229,12 @@ included are (listed in order of fun/utility):
201
229
  ``_build``/``_display`` directories; with ``--watch`` it starts the HTTP
202
230
  server and automatically rebuilds the staged fragments whenever you edit
203
231
  a ``.qmd`` file.
232
+ Browser previews in ``qmdb``, ``cpb``, and ``wgrph`` share the same
233
+ Selenium launcher: Chrome/Chromium is preferred, with Firefox as a
234
+ fallback. Installed ``chromedriver`` and ``geckodriver`` are used directly
235
+ without online driver discovery; if only ``geckodriver`` is installed,
236
+ Firefox opens directly. With neither driver installed, Selenium handles
237
+ discovery. Chrome startup failures are reported before trying Firefox.
204
238
  - ``pydifft tree`` (or ``git tree`` with the alias installed) opens the last
205
239
  40 commits across all branches, in Git date order. Use the down arrow
206
240
  below the history to add the next 40 commits. Colors follow
@@ -211,7 +245,7 @@ included are (listed in order of fun/utility):
211
245
  or set a commit as the comparison endpoint. The right-click menu can restore
212
246
  the working-directory endpoint. Diff window titles show the equivalent
213
247
  arguments, preferring tags, then branch names, then six-character hashes.
214
- Run ``pydifft tree --install`` to add the matching ``git tree`` alias.
248
+ Run ``pydifft --add_to_git tree`` to add the matching ``git tree`` alias.
215
249
  - ``pydifft gd`` (or ``git gd`` with the alias installed) reviews unstaged
216
250
  changes, like bare ``git diff``.
217
251
  ``pydifft gd [git diff args...]`` shows the same Qt review table as the old
@@ -225,8 +259,31 @@ included are (listed in order of fun/utility):
225
259
  among the original, difference, and aligned new image. Images with an
226
260
  alpha channel are displayed over a checkerboard; when transparency
227
261
  changes, an additional red/blue alpha-difference view is included.
228
- Run ``pydifft gd --install`` to add the matching ``git gd`` alias to
229
- your global git config.
262
+ Run ``pydifft --add_to_git gd`` to install the global ``git gd`` alias,
263
+ retaining the exact command of an existing global ``gd`` alias. If none
264
+ is configured, it installs ``!f() { pydifft gd "$@"; }; f``.
265
+ Configure ``difftool.mygvim.cmd`` for the GUI diff tool.
266
+ - ``pydifft --add_to_git gd pd tree mergein`` installs any selected subset
267
+ of these global Git aliases in one invocation. Installation appears
268
+ alongside the subcommands in root help; the former per-command
269
+ ``--install`` and ``--add-to-git`` flags have been removed.
270
+ - ``pydifft mergein BRANCH [--remote REMOTE]`` updates an incoming local
271
+ branch without switching branches, then merges it into the current
272
+ branch. Install ``git mergein`` with ``pydifft --add_to_git mergein``.
273
+ ``git mergein incoming/topic`` runs ``git fetch origin
274
+ incoming/topic:incoming/topic`` followed by ``git merge --no-ff
275
+ incoming/topic``. Use ``--remote upstream`` to select another remote;
276
+ ``origin`` is the default. Fetch failures stop the sequence, local
277
+ branch updates are not forced, and merge conflicts remain available
278
+ for normal Git resolution.
279
+
280
+ Installing ``mergein`` also installs its Bash completion in the user
281
+ Bash completion directory (honoring ``BASH_COMPLETION_USER_DIR`` and
282
+ ``XDG_DATA_HOME``). With standard Git Bash completion enabled,
283
+ ``git mergein`` suggests cached branches of the selected remote, using
284
+ bare branch names such as ``incoming/topic``. Completion does not
285
+ contact the remote; fetch to refresh the suggestions. The ``pydifft``
286
+ form supports the same suggestions when argcomplete is enabled.
230
287
  - `pydifft qmdinit [directory]` scaffolds a new Quarto-style project using
231
288
  the bundled templates and example ``project1`` hierarchy, then downloads
232
289
  MathJax into ``_template/mathjax`` so the builder can run immediately.
@@ -262,6 +319,50 @@ included are (listed in order of fun/utility):
262
319
  this rule. The option is shared by ``cpb``, ``wmatch``, ``wr`` and
263
320
  ``wrchk``; ``--punctuation-slop`` remains an alias.
264
321
 
322
+ - ``pydifft pd OLD NEW [--no-compile]`` ("PDF diff") compares two ``.md``
323
+ files or two ``.tex`` files. It writes ``NEW_diff.tex`` beside the newer
324
+ input and, by default, compiles ``NEW_diff.pdf`` there with ``pdflatex``.
325
+ For example, ``pydifft pd old.md paper.md`` produces ``paper_diff.tex``
326
+ and ``paper_diff.pdf``. ``--no-compile`` retains the diff TeX without
327
+ running a compiler and supports TeX fragments as well as full documents.
328
+
329
+ Both formats use ``mylatexdiff-preamble.sty`` and the existing custom
330
+ ``latexdiff`` options and postprocessing. The preamble is searched for
331
+ in the current directory, beside NEW, then through ``kpsewhich``.
332
+ Tools must be available on the caller's PATH, including any TeX Live
333
+ directory configured in your shell. Markdown additionally requires
334
+ Pandoc and pandoc-crossref; conversion honors declared bibliography and
335
+ CSL metadata, renders citations and cross-references, and resolves local
336
+ images beside each source. Converted TeX intermediates are temporary;
337
+ the Markdown sources are unchanged.
338
+
339
+ Markdown code blocks retain Pandoc syntax highlighting. Changed lines
340
+ get a colored background and a ``+`` or ``-`` marker, with each line
341
+ processed independently so highlighted code remains valid TeX.
342
+ Prose keeps the custom preamble styling.
343
+
344
+ Python runs ``pdflatex`` beside NEW until references and the table of
345
+ contents settle (at most six passes), running ``bibtex`` or ``biber``
346
+ when required. ``latexmk`` and its configuration are not used.
347
+ Compilation artifacts and the diff TeX remain available if compilation
348
+ fails. Existing generated outputs can be replaced on a successful rerun.
349
+ The former ``git-latexdiffnocompile.sh`` is a compatibility wrapper for
350
+ ``pydifft pd --no-compile``.
351
+
352
+ Run ``pydifft --add_to_git pd`` to install the global ``git pd`` alias.
353
+ It accepts Git diff arguments: ``git pd 00ffaa -- filename.md`` compares
354
+ that revision with the working file; bare ``git pd`` compares unstaged
355
+ changes; ``git pd --cached`` compares staged changes; and
356
+ ``git pd OLD NEW -- filename.md`` compares two revisions. Ranges and
357
+ Git pathspecs work as usual, including from repository subdirectories.
358
+ Each changed Markdown or TeX file produces its own ``NAME_diff.tex`` and
359
+ PDF beside the document's working-tree path. ``git pd --no-compile``
360
+ generates only TeX. Other file types are skipped, and unchanged files
361
+ produce no output. Additions, deletions, and renames are supported;
362
+ unresolved merge conflicts must be resolved first. Historical document
363
+ snapshots use the current project's bibliography, images, and TeX
364
+ includes. The shared installer edits only the requested global Git alias.
365
+
265
366
  - `pydifft wd` ("word diff"): generate "track changes" word files starting from pandoc markdown in a git history. Assuming that you have copied diff-doc.js (copied + licensed from elsewhere) into your home directory, this will use pandoc to convert the markdown files to MS Word, then use the MS Word comparison tool to generate a document where all relevant changes are shown with "track changes."
266
367
 
267
368
  * by default, this uses the file `template.docx` in the current directory as a pandoc word template
@@ -17,6 +17,30 @@ included are (listed in order of fun/utility):
17
17
  `filename.md`, build the result,
18
18
  and displays it in your browser.
19
19
 
20
+ Source diff linting minimizes line-break changes against the Git index
21
+ (staging area) by default, matching plain ``git diff``. Use
22
+ ``pydifft cpb filename.md --diff-base @`` to compare against HEAD, or
23
+ ``--diff-base jf_last`` to compare against a tag, branch, or commit hash.
24
+ The selected baseline is read again on each build. An unreadable explicit
25
+ baseline stops the build; an unavailable index baseline, such as for an
26
+ untracked file, falls back to ordinary source linting.
27
+ All diff-minimizing line-break fixes are applied automatically before
28
+ their notice appears. Each page shows as many changed hunks as fit in the
29
+ window, with a blank line separating hunks; larger changes are applied
30
+ just like single-break changes.
31
+ Diff alignment has separate eligibility rules from prose linting.
32
+ Equations and HTML comment contents participate in alignment, including
33
+ hunks that begin inside them. Display equations and hidden text remain
34
+ exempt from prose wrapping and sentence rules. Equation delimiters are
35
+ matched independently of their contents, and surviving matches on either
36
+ side of an edit restore whitespace while preserving changed values and
37
+ TeX commands. Literal delimiters in code are preserved.
38
+ Leading whitespace at matching line starts is restored in top-level
39
+ prose when both margins contain at most three spaces, and inside HTML
40
+ comments and equations. Container indentation (lists, definitions, and
41
+ quotations), tabs or four-space code indentation outside those spans,
42
+ and protected blocks retain their current margins.
43
+
20
44
  Continuous pandoc build.
21
45
  This works *very well* together
22
46
  with the `g/` vim command
@@ -130,9 +154,13 @@ included are (listed in order of fun/utility):
130
154
  clearing the entire query shows the full plan, including completed and
131
155
  undated tasks. Each embedded SVG and live refresh uses the same URL mode.
132
156
  The search button beside Home and Zoom finds text in the visible graph,
133
- highlights matches, and centers them at a readable font size. Tab or Enter
134
- advances to the next match; Shift+Tab or Shift+Enter goes back. Esc closes
135
- search. Phrases can span wrapped lines and formatted text.
157
+ highlights matches, and centers the containing task at your chosen zoom.
158
+ Tab or Enter advances to the next match; Shift+Tab or Shift+Enter goes
159
+ back. Esc closes search. Phrases can span wrapped lines and formatted
160
+ text. Resizing the window scales the current view with the viewport.
161
+ The ``1:1`` button displays fonts at their declared pixel sizes, including
162
+ correction for GraphViz's SVG scaling. Right-click a task and select
163
+ Jump to source to open its YAML definition in gvim.
136
164
  Comparison uses the same repository-relative YAML path; a file absent
137
165
  from the revision is treated as an empty plan. Historical file renames
138
166
  are not followed, and comparison markup is never written to YAML.
@@ -146,6 +174,12 @@ included are (listed in order of fun/utility):
146
174
  ``_build``/``_display`` directories; with ``--watch`` it starts the HTTP
147
175
  server and automatically rebuilds the staged fragments whenever you edit
148
176
  a ``.qmd`` file.
177
+ Browser previews in ``qmdb``, ``cpb``, and ``wgrph`` share the same
178
+ Selenium launcher: Chrome/Chromium is preferred, with Firefox as a
179
+ fallback. Installed ``chromedriver`` and ``geckodriver`` are used directly
180
+ without online driver discovery; if only ``geckodriver`` is installed,
181
+ Firefox opens directly. With neither driver installed, Selenium handles
182
+ discovery. Chrome startup failures are reported before trying Firefox.
149
183
  - ``pydifft tree`` (or ``git tree`` with the alias installed) opens the last
150
184
  40 commits across all branches, in Git date order. Use the down arrow
151
185
  below the history to add the next 40 commits. Colors follow
@@ -156,7 +190,7 @@ included are (listed in order of fun/utility):
156
190
  or set a commit as the comparison endpoint. The right-click menu can restore
157
191
  the working-directory endpoint. Diff window titles show the equivalent
158
192
  arguments, preferring tags, then branch names, then six-character hashes.
159
- Run ``pydifft tree --install`` to add the matching ``git tree`` alias.
193
+ Run ``pydifft --add_to_git tree`` to add the matching ``git tree`` alias.
160
194
  - ``pydifft gd`` (or ``git gd`` with the alias installed) reviews unstaged
161
195
  changes, like bare ``git diff``.
162
196
  ``pydifft gd [git diff args...]`` shows the same Qt review table as the old
@@ -170,8 +204,31 @@ included are (listed in order of fun/utility):
170
204
  among the original, difference, and aligned new image. Images with an
171
205
  alpha channel are displayed over a checkerboard; when transparency
172
206
  changes, an additional red/blue alpha-difference view is included.
173
- Run ``pydifft gd --install`` to add the matching ``git gd`` alias to
174
- your global git config.
207
+ Run ``pydifft --add_to_git gd`` to install the global ``git gd`` alias,
208
+ retaining the exact command of an existing global ``gd`` alias. If none
209
+ is configured, it installs ``!f() { pydifft gd "$@"; }; f``.
210
+ Configure ``difftool.mygvim.cmd`` for the GUI diff tool.
211
+ - ``pydifft --add_to_git gd pd tree mergein`` installs any selected subset
212
+ of these global Git aliases in one invocation. Installation appears
213
+ alongside the subcommands in root help; the former per-command
214
+ ``--install`` and ``--add-to-git`` flags have been removed.
215
+ - ``pydifft mergein BRANCH [--remote REMOTE]`` updates an incoming local
216
+ branch without switching branches, then merges it into the current
217
+ branch. Install ``git mergein`` with ``pydifft --add_to_git mergein``.
218
+ ``git mergein incoming/topic`` runs ``git fetch origin
219
+ incoming/topic:incoming/topic`` followed by ``git merge --no-ff
220
+ incoming/topic``. Use ``--remote upstream`` to select another remote;
221
+ ``origin`` is the default. Fetch failures stop the sequence, local
222
+ branch updates are not forced, and merge conflicts remain available
223
+ for normal Git resolution.
224
+
225
+ Installing ``mergein`` also installs its Bash completion in the user
226
+ Bash completion directory (honoring ``BASH_COMPLETION_USER_DIR`` and
227
+ ``XDG_DATA_HOME``). With standard Git Bash completion enabled,
228
+ ``git mergein`` suggests cached branches of the selected remote, using
229
+ bare branch names such as ``incoming/topic``. Completion does not
230
+ contact the remote; fetch to refresh the suggestions. The ``pydifft``
231
+ form supports the same suggestions when argcomplete is enabled.
175
232
  - `pydifft qmdinit [directory]` scaffolds a new Quarto-style project using
176
233
  the bundled templates and example ``project1`` hierarchy, then downloads
177
234
  MathJax into ``_template/mathjax`` so the builder can run immediately.
@@ -207,6 +264,50 @@ included are (listed in order of fun/utility):
207
264
  this rule. The option is shared by ``cpb``, ``wmatch``, ``wr`` and
208
265
  ``wrchk``; ``--punctuation-slop`` remains an alias.
209
266
 
267
+ - ``pydifft pd OLD NEW [--no-compile]`` ("PDF diff") compares two ``.md``
268
+ files or two ``.tex`` files. It writes ``NEW_diff.tex`` beside the newer
269
+ input and, by default, compiles ``NEW_diff.pdf`` there with ``pdflatex``.
270
+ For example, ``pydifft pd old.md paper.md`` produces ``paper_diff.tex``
271
+ and ``paper_diff.pdf``. ``--no-compile`` retains the diff TeX without
272
+ running a compiler and supports TeX fragments as well as full documents.
273
+
274
+ Both formats use ``mylatexdiff-preamble.sty`` and the existing custom
275
+ ``latexdiff`` options and postprocessing. The preamble is searched for
276
+ in the current directory, beside NEW, then through ``kpsewhich``.
277
+ Tools must be available on the caller's PATH, including any TeX Live
278
+ directory configured in your shell. Markdown additionally requires
279
+ Pandoc and pandoc-crossref; conversion honors declared bibliography and
280
+ CSL metadata, renders citations and cross-references, and resolves local
281
+ images beside each source. Converted TeX intermediates are temporary;
282
+ the Markdown sources are unchanged.
283
+
284
+ Markdown code blocks retain Pandoc syntax highlighting. Changed lines
285
+ get a colored background and a ``+`` or ``-`` marker, with each line
286
+ processed independently so highlighted code remains valid TeX.
287
+ Prose keeps the custom preamble styling.
288
+
289
+ Python runs ``pdflatex`` beside NEW until references and the table of
290
+ contents settle (at most six passes), running ``bibtex`` or ``biber``
291
+ when required. ``latexmk`` and its configuration are not used.
292
+ Compilation artifacts and the diff TeX remain available if compilation
293
+ fails. Existing generated outputs can be replaced on a successful rerun.
294
+ The former ``git-latexdiffnocompile.sh`` is a compatibility wrapper for
295
+ ``pydifft pd --no-compile``.
296
+
297
+ Run ``pydifft --add_to_git pd`` to install the global ``git pd`` alias.
298
+ It accepts Git diff arguments: ``git pd 00ffaa -- filename.md`` compares
299
+ that revision with the working file; bare ``git pd`` compares unstaged
300
+ changes; ``git pd --cached`` compares staged changes; and
301
+ ``git pd OLD NEW -- filename.md`` compares two revisions. Ranges and
302
+ Git pathspecs work as usual, including from repository subdirectories.
303
+ Each changed Markdown or TeX file produces its own ``NAME_diff.tex`` and
304
+ PDF beside the document's working-tree path. ``git pd --no-compile``
305
+ generates only TeX. Other file types are skipped, and unchanged files
306
+ produce no output. Additions, deletions, and renames are supported;
307
+ unresolved merge conflicts must be resolved first. Historical document
308
+ snapshots use the current project's bibliography, images, and TeX
309
+ includes. The shared installer edits only the requested global Git alias.
310
+
210
311
  - `pydifft wd` ("word diff"): generate "track changes" word files starting from pandoc markdown in a git history. Assuming that you have copied diff-doc.js (copied + licensed from elsewhere) into your home directory, this will use pandoc to convert the markdown files to MS Word, then use the MS Word comparison tool to generate a document where all relevant changes are shown with "track changes."
211
312
 
212
313
  * by default, this uses the file `template.docx` in the current directory as a pandoc word template
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyDiffTools
3
- Version: 0.1.51
3
+ Version: 0.1.53
4
4
  Summary: Diff tools
5
5
  Author: J M Franck
6
6
  License: Copyright (c) 2015, jmfranck
@@ -72,6 +72,30 @@ included are (listed in order of fun/utility):
72
72
  `filename.md`, build the result,
73
73
  and displays it in your browser.
74
74
 
75
+ Source diff linting minimizes line-break changes against the Git index
76
+ (staging area) by default, matching plain ``git diff``. Use
77
+ ``pydifft cpb filename.md --diff-base @`` to compare against HEAD, or
78
+ ``--diff-base jf_last`` to compare against a tag, branch, or commit hash.
79
+ The selected baseline is read again on each build. An unreadable explicit
80
+ baseline stops the build; an unavailable index baseline, such as for an
81
+ untracked file, falls back to ordinary source linting.
82
+ All diff-minimizing line-break fixes are applied automatically before
83
+ their notice appears. Each page shows as many changed hunks as fit in the
84
+ window, with a blank line separating hunks; larger changes are applied
85
+ just like single-break changes.
86
+ Diff alignment has separate eligibility rules from prose linting.
87
+ Equations and HTML comment contents participate in alignment, including
88
+ hunks that begin inside them. Display equations and hidden text remain
89
+ exempt from prose wrapping and sentence rules. Equation delimiters are
90
+ matched independently of their contents, and surviving matches on either
91
+ side of an edit restore whitespace while preserving changed values and
92
+ TeX commands. Literal delimiters in code are preserved.
93
+ Leading whitespace at matching line starts is restored in top-level
94
+ prose when both margins contain at most three spaces, and inside HTML
95
+ comments and equations. Container indentation (lists, definitions, and
96
+ quotations), tabs or four-space code indentation outside those spans,
97
+ and protected blocks retain their current margins.
98
+
75
99
  Continuous pandoc build.
76
100
  This works *very well* together
77
101
  with the `g/` vim command
@@ -185,9 +209,13 @@ included are (listed in order of fun/utility):
185
209
  clearing the entire query shows the full plan, including completed and
186
210
  undated tasks. Each embedded SVG and live refresh uses the same URL mode.
187
211
  The search button beside Home and Zoom finds text in the visible graph,
188
- highlights matches, and centers them at a readable font size. Tab or Enter
189
- advances to the next match; Shift+Tab or Shift+Enter goes back. Esc closes
190
- search. Phrases can span wrapped lines and formatted text.
212
+ highlights matches, and centers the containing task at your chosen zoom.
213
+ Tab or Enter advances to the next match; Shift+Tab or Shift+Enter goes
214
+ back. Esc closes search. Phrases can span wrapped lines and formatted
215
+ text. Resizing the window scales the current view with the viewport.
216
+ The ``1:1`` button displays fonts at their declared pixel sizes, including
217
+ correction for GraphViz's SVG scaling. Right-click a task and select
218
+ Jump to source to open its YAML definition in gvim.
191
219
  Comparison uses the same repository-relative YAML path; a file absent
192
220
  from the revision is treated as an empty plan. Historical file renames
193
221
  are not followed, and comparison markup is never written to YAML.
@@ -201,6 +229,12 @@ included are (listed in order of fun/utility):
201
229
  ``_build``/``_display`` directories; with ``--watch`` it starts the HTTP
202
230
  server and automatically rebuilds the staged fragments whenever you edit
203
231
  a ``.qmd`` file.
232
+ Browser previews in ``qmdb``, ``cpb``, and ``wgrph`` share the same
233
+ Selenium launcher: Chrome/Chromium is preferred, with Firefox as a
234
+ fallback. Installed ``chromedriver`` and ``geckodriver`` are used directly
235
+ without online driver discovery; if only ``geckodriver`` is installed,
236
+ Firefox opens directly. With neither driver installed, Selenium handles
237
+ discovery. Chrome startup failures are reported before trying Firefox.
204
238
  - ``pydifft tree`` (or ``git tree`` with the alias installed) opens the last
205
239
  40 commits across all branches, in Git date order. Use the down arrow
206
240
  below the history to add the next 40 commits. Colors follow
@@ -211,7 +245,7 @@ included are (listed in order of fun/utility):
211
245
  or set a commit as the comparison endpoint. The right-click menu can restore
212
246
  the working-directory endpoint. Diff window titles show the equivalent
213
247
  arguments, preferring tags, then branch names, then six-character hashes.
214
- Run ``pydifft tree --install`` to add the matching ``git tree`` alias.
248
+ Run ``pydifft --add_to_git tree`` to add the matching ``git tree`` alias.
215
249
  - ``pydifft gd`` (or ``git gd`` with the alias installed) reviews unstaged
216
250
  changes, like bare ``git diff``.
217
251
  ``pydifft gd [git diff args...]`` shows the same Qt review table as the old
@@ -225,8 +259,31 @@ included are (listed in order of fun/utility):
225
259
  among the original, difference, and aligned new image. Images with an
226
260
  alpha channel are displayed over a checkerboard; when transparency
227
261
  changes, an additional red/blue alpha-difference view is included.
228
- Run ``pydifft gd --install`` to add the matching ``git gd`` alias to
229
- your global git config.
262
+ Run ``pydifft --add_to_git gd`` to install the global ``git gd`` alias,
263
+ retaining the exact command of an existing global ``gd`` alias. If none
264
+ is configured, it installs ``!f() { pydifft gd "$@"; }; f``.
265
+ Configure ``difftool.mygvim.cmd`` for the GUI diff tool.
266
+ - ``pydifft --add_to_git gd pd tree mergein`` installs any selected subset
267
+ of these global Git aliases in one invocation. Installation appears
268
+ alongside the subcommands in root help; the former per-command
269
+ ``--install`` and ``--add-to-git`` flags have been removed.
270
+ - ``pydifft mergein BRANCH [--remote REMOTE]`` updates an incoming local
271
+ branch without switching branches, then merges it into the current
272
+ branch. Install ``git mergein`` with ``pydifft --add_to_git mergein``.
273
+ ``git mergein incoming/topic`` runs ``git fetch origin
274
+ incoming/topic:incoming/topic`` followed by ``git merge --no-ff
275
+ incoming/topic``. Use ``--remote upstream`` to select another remote;
276
+ ``origin`` is the default. Fetch failures stop the sequence, local
277
+ branch updates are not forced, and merge conflicts remain available
278
+ for normal Git resolution.
279
+
280
+ Installing ``mergein`` also installs its Bash completion in the user
281
+ Bash completion directory (honoring ``BASH_COMPLETION_USER_DIR`` and
282
+ ``XDG_DATA_HOME``). With standard Git Bash completion enabled,
283
+ ``git mergein`` suggests cached branches of the selected remote, using
284
+ bare branch names such as ``incoming/topic``. Completion does not
285
+ contact the remote; fetch to refresh the suggestions. The ``pydifft``
286
+ form supports the same suggestions when argcomplete is enabled.
230
287
  - `pydifft qmdinit [directory]` scaffolds a new Quarto-style project using
231
288
  the bundled templates and example ``project1`` hierarchy, then downloads
232
289
  MathJax into ``_template/mathjax`` so the builder can run immediately.
@@ -262,6 +319,50 @@ included are (listed in order of fun/utility):
262
319
  this rule. The option is shared by ``cpb``, ``wmatch``, ``wr`` and
263
320
  ``wrchk``; ``--punctuation-slop`` remains an alias.
264
321
 
322
+ - ``pydifft pd OLD NEW [--no-compile]`` ("PDF diff") compares two ``.md``
323
+ files or two ``.tex`` files. It writes ``NEW_diff.tex`` beside the newer
324
+ input and, by default, compiles ``NEW_diff.pdf`` there with ``pdflatex``.
325
+ For example, ``pydifft pd old.md paper.md`` produces ``paper_diff.tex``
326
+ and ``paper_diff.pdf``. ``--no-compile`` retains the diff TeX without
327
+ running a compiler and supports TeX fragments as well as full documents.
328
+
329
+ Both formats use ``mylatexdiff-preamble.sty`` and the existing custom
330
+ ``latexdiff`` options and postprocessing. The preamble is searched for
331
+ in the current directory, beside NEW, then through ``kpsewhich``.
332
+ Tools must be available on the caller's PATH, including any TeX Live
333
+ directory configured in your shell. Markdown additionally requires
334
+ Pandoc and pandoc-crossref; conversion honors declared bibliography and
335
+ CSL metadata, renders citations and cross-references, and resolves local
336
+ images beside each source. Converted TeX intermediates are temporary;
337
+ the Markdown sources are unchanged.
338
+
339
+ Markdown code blocks retain Pandoc syntax highlighting. Changed lines
340
+ get a colored background and a ``+`` or ``-`` marker, with each line
341
+ processed independently so highlighted code remains valid TeX.
342
+ Prose keeps the custom preamble styling.
343
+
344
+ Python runs ``pdflatex`` beside NEW until references and the table of
345
+ contents settle (at most six passes), running ``bibtex`` or ``biber``
346
+ when required. ``latexmk`` and its configuration are not used.
347
+ Compilation artifacts and the diff TeX remain available if compilation
348
+ fails. Existing generated outputs can be replaced on a successful rerun.
349
+ The former ``git-latexdiffnocompile.sh`` is a compatibility wrapper for
350
+ ``pydifft pd --no-compile``.
351
+
352
+ Run ``pydifft --add_to_git pd`` to install the global ``git pd`` alias.
353
+ It accepts Git diff arguments: ``git pd 00ffaa -- filename.md`` compares
354
+ that revision with the working file; bare ``git pd`` compares unstaged
355
+ changes; ``git pd --cached`` compares staged changes; and
356
+ ``git pd OLD NEW -- filename.md`` compares two revisions. Ranges and
357
+ Git pathspecs work as usual, including from repository subdirectories.
358
+ Each changed Markdown or TeX file produces its own ``NAME_diff.tex`` and
359
+ PDF beside the document's working-tree path. ``git pd --no-compile``
360
+ generates only TeX. Other file types are skipped, and unchanged files
361
+ produce no output. Additions, deletions, and renames are supported;
362
+ unresolved merge conflicts must be resolved first. Historical document
363
+ snapshots use the current project's bibliography, images, and TeX
364
+ includes. The shared installer edits only the requested global Git alias.
365
+
265
366
  - `pydifft wd` ("word diff"): generate "track changes" word files starting from pandoc markdown in a git history. Assuming that you have copied diff-doc.js (copied + licensed from elsewhere) into your home directory, this will use pandoc to convert the markdown files to MS Word, then use the MS Word comparison tool to generate a document where all relevant changes are shown with "track changes."
266
367
 
267
368
  * by default, this uses the file `template.docx` in the current directory as a pandoc word template
@@ -65,6 +65,7 @@ pydifftools/copy_files.py
65
65
  pydifftools/diff-doc.js
66
66
  pydifftools/doc_contents.py
67
67
  pydifftools/forward_search.py
68
+ pydifftools/git_aliases.py
68
69
  pydifftools/git_gd.py
69
70
  pydifftools/git_gd_history.py
70
71
  pydifftools/git_gd_image.py
@@ -77,6 +78,7 @@ pydifftools/match_spaces.py
77
78
  pydifftools/onewordify.py
78
79
  pydifftools/onewordify_undo.py
79
80
  pydifftools/outline.py
81
+ pydifftools/pdf_diff.py
80
82
  pydifftools/rearrange_tex.py
81
83
  pydifftools/searchacro.py
82
84
  pydifftools/separate_comments.py
@@ -88,6 +90,7 @@ pydifftools/wrap_sentences.py
88
90
  pydifftools/wrapping_options.py
89
91
  pydifftools/xml2xlsx.vbs
90
92
  pydifftools/zotero.py
93
+ pydifftools/completions/git-mergein
91
94
  pydifftools/flowchart/__init__.py
92
95
  pydifftools/flowchart/comparison.py
93
96
  pydifftools/flowchart/dot_to_yaml.py
@@ -111,7 +114,10 @@ tests/test_forward_search.py
111
114
  tests/test_git_gd_history.py
112
115
  tests/test_git_gd_image.py
113
116
  tests/test_git_gd_qt.py
117
+ tests/test_git_mergein.py
118
+ tests/test_git_pdf_diff.py
114
119
  tests/test_line_alignment.py
120
+ tests/test_pdf_diff.py
115
121
  tests/test_rrng.py
116
122
  tests/test_source_jump.py
117
123
  tests/test_tex_to_qmd.py