tkdiff: init at 5.6
TkDiff is a graphical front end to the diff program https://tkdiff.sourceforge.io/
This commit is contained in:
parent
57147fe506
commit
a7d0c0e7ca
2 changed files with 114 additions and 0 deletions
71
pkgs/by-name/tk/tkdiff/189.patch
Normal file
71
pkgs/by-name/tk/tkdiff/189.patch
Normal 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) \
|
43
pkgs/by-name/tk/tkdiff/package.nix
Normal file
43
pkgs/by-name/tk/tkdiff/package.nix
Normal 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;
|
||||
};
|
||||
})
|
Loading…
Reference in a new issue