git-gui: support for $FILENAMES in tool definitions
authorAlex Riesen <alexander.riesen@cetitec.com>
Tue, 28 Jun 2016 08:57:42 +0000 (10:57 +0200)
committerPat Thoyts <patthoyts@users.sourceforge.net>
Mon, 3 Oct 2016 22:27:14 +0000 (23:27 +0100)
This adds a FILENAMES environment variable, which contains the repository
pathnames of all selected files the list.
The variable contains the names separated by LF (\n, \x0a).

If the file names contain LF characters, the tool command might be unable to
unambiguously split the value of $FILENAME into the separate names.

Note that the file marked and diffed immediately after starting the GUI up,
is not actually selected. One must click on it once to really select it.

Signed-off-by: Alex Riesen <alexander.riesen@cetitec.com>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
lib/tools.tcl
index 6ec94113db7d8c75d78e5300469bb8154e37c940..413f1a170079e0cec78ecdbd1adb7baeb83406f2 100644 (file)
@@ -69,6 +69,7 @@ proc tools_populate_one {fullname} {
 proc tools_exec {fullname} {
        global repo_config env current_diff_path
        global current_branch is_detached
+       global selected_paths
 
        if {[is_config_true "guitool.$fullname.needsfile"]} {
                if {$current_diff_path eq {}} {
@@ -100,6 +101,7 @@ proc tools_exec {fullname} {
 
        set env(GIT_GUITOOL) $fullname
        set env(FILENAME) $current_diff_path
+       set env(FILENAMES) [join [array names selected_paths] \n]
        if {$is_detached} {
                set env(CUR_BRANCH) ""
        } else {
@@ -121,6 +123,7 @@ proc tools_exec {fullname} {
 
        unset env(GIT_GUITOOL)
        unset env(FILENAME)
+       unset env(FILENAMES)
        unset env(CUR_BRANCH)
        catch { unset env(ARGS) }
        catch { unset env(REVISION) }