tkdiff: init at 5.6

TkDiff is a graphical front end to the diff program
https://tkdiff.sourceforge.io/
This commit is contained in:
Rob 2023-10-06 00:15:35 -07:00
parent 57147fe506
commit a7d0c0e7ca
No known key found for this signature in database
2 changed files with 114 additions and 0 deletions

View File

@ -0,0 +1,71 @@
Index: tkdiff
===================================================================
diff --git a/tkdiff b/tkdiff
--- a/tkdiff (revision 188)
+++ b/tkdiff (revision 189)
@@ -111,7 +111,7 @@
}
# Determine the name of the temporary directory, the rc file name,
-# and possible VPATH EnvVar, all of which are platform dependent.
+# NULLdev, and possible VPATH EnvVar, all of which are platform dependent.
#
# Much MAY likely be overridden by a preference in .tkdiffrc,
# EXCEPT (obviously) when no such file actually exists yet
@@ -126,6 +126,9 @@
set opts(tmpdir) C:/temp
}
+ # Reserved filename which is actually a NULL device
+ set opts(NULLdev) "nul"
+
# Split up and store a VPATH if it exists
if {[info exists ::env(VPATH)]} {
set finfo(Vpath) [split $::env(VPATH) ";"]
@@ -145,6 +148,9 @@
set opts(tmpdir) $::env(TMPDIR)
} {set opts(tmpdir) /tmp }
+ # Reserved filename which is actually a NULL device (Unix-like platforms)
+ set opts(NULLdev) "/dev/null"
+
# Split up and store a VPATH if it exists
if {[info exists ::env(VPATH)]} {
set finfo(Vpath) [split $::env(VPATH) ":"]
@@ -2106,7 +2112,7 @@
# 1 Failed (PLUS a 'pushed' HARD-error message to the caller)
###############################################################################
proc get-file {fn ndx {probe 0}} {
- global g finfo
+ global g opts finfo
# Ancestor files are stored into a slightly adjusted array element name
# N.B> 'ndx' AS PASSED *can* be an EXPRESSION (not just a number): resolve!
@@ -2121,7 +2127,7 @@
} elseif {!$tildechk} {
# DO NOT REPORT non-existence if this attempt was ONLY a probe
if {$probe} { return 1 } { set MSG "File '$fn' does not exist" }
- } elseif {[file isfile $fn]} {
+ } elseif {[file isfile $fn] || $fn == $opts(NULLdev)} {
set finfo(${A}lbl,$ndx) [shortNm [set finfo(${A}pth,$ndx) "$fn"]]
} else { set MSG "'$fn' exists, but is not a file" }
@@ -2857,7 +2863,7 @@
# Align various label decorations to the CURRENT input file pairing
###############################################################################
proc alignDecor {pairnum} {
- global g w finfo
+ global g w opts finfo
# Establish if 3way mode is NOW active and what file indices are in use
set g(is3way) [info exists finfo(albl,$pairnum)]
@@ -2874,7 +2880,8 @@
set finfo(lbl,$LR) $finfo(ulbl,$ndx($n)) ;# Override lbl display
} else {set finfo(lbl,$LR) $finfo(lbl,$ndx($n))}
- if {![info exists finfo(tmp,$ndx($n))]} {
+ if {![info exists finfo(tmp,$ndx($n))] \
+ && $finfo(pth,$ndx($n)) != $opts(NULLdev)} {
# (N.B> Tip data will ALSO be used by report generation heading)
set g(tooltip,${LR}Label) "{$finfo(pth,$ndx($n))\n"
append g(tooltip,${LR}Label) \

View File

@ -0,0 +1,43 @@
{ diffutils, fetchzip, lib, makeBinaryWrapper, stdenv, tk }:
stdenv.mkDerivation (finalAttrs: {
pname = "tkdiff";
version = "5.6";
src = fetchzip {
url = "mirror://sourceforge/tkdiff/tkdiff-${builtins.replaceStrings ["."] ["-"] finalAttrs.version}.zip";
hash = "sha256-EpbIdjsejkkTaSpoZRM5AHz0r1Cio+YzRryK0BoghBk=";
};
# fix regression: allow /dev/null again. eg: "tkdiff /dev/null file"
# svn diff --git -r188:189 https://svn.code.sf.net/p/tkdiff/code/trunk
patches = [ ./189.patch ];
nativeBuildInputs = [ makeBinaryWrapper ];
installPhase = ''
runHook preInstall
install -Dm755 -t $out/bin tkdiff
wrapProgram $out/bin/tkdiff \
--prefix PATH : ${lib.makeBinPath [ diffutils tk ]}
runHook postInstall
'';
meta = {
description = "A graphical front end to the diff program";
homepage = "https://tkdiff.sourceforge.io/";
license = lib.licenses.gpl2Plus;
longDescription = ''
TkDiff is a graphical front end to the diff program. It provides a
side-by-side view of the differences between two text files, along
with several innovative features such as diff bookmarks, a graphical
map of differences for quick navigation, and a facility for slicing
diff regions to achieve exactly the merge output desired.
'';
mainProgram = "tkdiff";
maintainers = with lib.maintainers; [ robert-manchester ];
platforms = tk.meta.platforms;
};
})