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.
- {pydifftools-0.1.51 → pydifftools-0.1.53}/MANIFEST.in +1 -0
- {pydifftools-0.1.51/pyDiffTools.egg-info → pydifftools-0.1.53}/PKG-INFO +108 -7
- {pydifftools-0.1.51 → pydifftools-0.1.53}/README.rst +107 -6
- {pydifftools-0.1.51 → pydifftools-0.1.53/pyDiffTools.egg-info}/PKG-INFO +108 -7
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pyDiffTools.egg-info/SOURCES.txt +6 -0
- pydifftools-0.1.53/pydifftools/browser_lifecycle.py +173 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/command_line.py +48 -5
- pydifftools-0.1.53/pydifftools/completions/git-mergein +41 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/continuous.py +106 -168
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/flowchart/source_jump.js +24 -9
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/flowchart/watch_graph.py +10 -33
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/flowchart/wgrph_view.js +61 -27
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/forward_search.py +5 -0
- pydifftools-0.1.53/pydifftools/git_aliases.py +139 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/git_gd.py +9 -46
- pydifftools-0.1.53/pydifftools/line_alignment.py +571 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/notebook/fast_build.py +503 -379
- pydifftools-0.1.53/pydifftools/pdf_diff.py +564 -0
- pydifftools-0.1.53/pydifftools/source_jump.py +203 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/wrap_sentences.py +142 -38
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pyproject.toml +2 -1
- pydifftools-0.1.53/tests/test_browser_lifecycle.py +273 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_command_line_help.py +29 -3
- {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_continuous_shutdown.py +6 -2
- {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_forward_search.py +131 -0
- pydifftools-0.1.53/tests/test_git_mergein.py +256 -0
- pydifftools-0.1.53/tests/test_git_pdf_diff.py +423 -0
- pydifftools-0.1.53/tests/test_line_alignment.py +385 -0
- pydifftools-0.1.53/tests/test_pdf_diff.py +494 -0
- pydifftools-0.1.53/tests/test_source_jump.py +424 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_wrap_check.py +373 -46
- pydifftools-0.1.51/pydifftools/browser_lifecycle.py +0 -141
- pydifftools-0.1.51/pydifftools/line_alignment.py +0 -391
- pydifftools-0.1.51/pydifftools/source_jump.py +0 -128
- pydifftools-0.1.51/tests/test_browser_lifecycle.py +0 -171
- pydifftools-0.1.51/tests/test_line_alignment.py +0 -131
- pydifftools-0.1.51/tests/test_source_jump.py +0 -85
- {pydifftools-0.1.51 → pydifftools-0.1.53}/LICENSE.md +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/_quarto.yml +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/__version__.txt +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/1a724af72b16f5a9e607e12b1c721645/base.ipynb +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/1b28fc9daac9081847e5161b2c546f8a/base.ipynb +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/231f64eee282fa225d1104935cf80a24/base.ipynb +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/26e56f6b0ff54851a45145157f2f0dc4/base.ipynb +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/311fabd7029ffd050d056e2f316eb50f/base.ipynb +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/57da2021e5b156ac3adf01398201c723/base.ipynb +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/62b24ea7da75011d92b0f8924faa208d/base.ipynb +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/7f1b20d69d889514ab5d1cc92e3cb14f/base.ipynb +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/86f74c8c54a87ff892d9b15dd714e8f0/base.ipynb +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/88893b4234eac2945d9d6cb2e277f186/base.ipynb +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/9a40046ada6f582ee34af00fbdbfb417/base.ipynb +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/a1bf4d270d0641ff41faf1d7cce3439a/base.ipynb +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/a3789f7d9585a781f2a1c60ce95ff10d/base.ipynb +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/be46ecba858d39ad5f0c46902ddf1c02/base.ipynb +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/d0cbc57a12f2ccce710a5afd04cc05e7/base.ipynb +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/d3e12d320b14228f701231ae32ddd7dd/base.ipynb +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/eb434f61555438d020a6970a5dbf9ee8/base.ipynb +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/f6b0e73aa7fa029134665d4dde57e096/base.ipynb +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/f719a6e4ff09873cb0ffb06ec9d232f9/base.ipynb +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/executed/feeee244a7ce3d60e1a227eb604df823/base.ipynb +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/.jupyter_cache/global.db +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/example.qmd +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/example.tex +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/index.qmd +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/subproject1/.jupyter_cache/__version__.txt +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/subproject1/.jupyter_cache/executed/ca90e4df5f4f0583df6554156a68dc7f/base.ipynb +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/subproject1/.jupyter_cache/global.db +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/subproject1/end_vs_he_sketch.jpg +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/subproject1/independent.qmd +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/subproject1/index.qmd +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/subproject1/tasks.qmd +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/subproject1/test_include.qmd +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/subproject1/tryforerror.qmd +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/example_notebook/project1/test_include.qmd +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pyDiffTools.egg-info/dependency_links.txt +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pyDiffTools.egg-info/entry_points.txt +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pyDiffTools.egg-info/requires.txt +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pyDiffTools.egg-info/top_level.txt +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/__init__.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/bibliography.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/check_numbers.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/citation_dialog.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/command_registry.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/comment_filter_history.json +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/comment_functions.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/comment_migration.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/comment_tags.lua +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/comment_tags_margin.lua +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/comment_tags_no_comments.lua +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/comment_toggle.js +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/comments.css +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/comments_author_colors.css +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/copy_files.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/diff-doc.js +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/doc_contents.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/flowchart/__init__.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/flowchart/comparison.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/flowchart/dot_to_yaml.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/flowchart/graph.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/flowchart/svg-pan-zoom.min.js +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/git_gd_history.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/git_gd_image.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/git_gd_qt.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/html_comments.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/html_uncomments.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/log_example.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/match_spaces.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/notebook/__init__.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/notebook/display.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/notebook/tex_to_qmd.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/onewordify.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/onewordify_undo.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/outline.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/rearrange_tex.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/searchacro.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/separate_comments.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/split_conflict.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/unseparate_comments.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/update_check.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/wrapping_options.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/xml2xlsx.vbs +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/pydifftools/zotero.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/setup.cfg +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_bibliography.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_check_single_use.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_comment_filters.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_comment_migration.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_git_gd_history.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_git_gd_image.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_git_gd_qt.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_rrng.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_tex_to_qmd.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_update_check.py +0 -0
- {pydifftools-0.1.51 → pydifftools-0.1.53}/tests/test_wrapping.py +0 -0
- {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.
|
|
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
|
|
189
|
-
advances to the next match; Shift+Tab or Shift+Enter goes
|
|
190
|
-
search. Phrases can span wrapped lines and formatted
|
|
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
|
|
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
|
|
229
|
-
|
|
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
|
|
134
|
-
advances to the next match; Shift+Tab or Shift+Enter goes
|
|
135
|
-
search. Phrases can span wrapped lines and formatted
|
|
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
|
|
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
|
|
174
|
-
|
|
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.
|
|
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
|
|
189
|
-
advances to the next match; Shift+Tab or Shift+Enter goes
|
|
190
|
-
search. Phrases can span wrapped lines and formatted
|
|
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
|
|
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
|
|
229
|
-
|
|
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
|