tpm icon indicating copy to clipboard operation
tpm copied to clipboard

add support for variable expansion in config files

Open a24k opened this issue 3 years ago • 1 comments

If tmux.conf refers other file by source-file command that uses variable, it'll be better to expand variables into actual values.

Background

In XDG style directory, I'd like to use tmux.conf with variables like following example.

# tmux.conf ------------------------------------------------

TMUX_CONF_PATH="~/.config/tmux"

source "${TMUX_CONF_PATH}/general.conf"
source "${TMUX_CONF_PATH}/plugins.conf"
source "${TMUX_CONF_PATH}/pane.conf"
source "${TMUX_CONF_PATH}/status.conf"


# plugins.conf ---------------------------------------------

TMUX_PLUGIN_MANAGER_PATH="~/.local/share/tmux/plugins"

set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'

run "${TMUX_PLUGIN_MANAGER_PATH}/tpm/tpm"

It works well about tmux configurations, but tpm can't read @plugin entries from plugins.conf.

Current version of tpm expands ~ to $HOME with _manual_expansion() function, but never expands variables.

Solution

In _sourced_files() function, tpm extract parameter of source-file commands from tmux.conf.

We can put these parameters into echo command and process with bash, then get filenames with parameters expanded. Both single and double quotation marks are must be recognized correctly.

# intermediate script, to be processed with bash

echo "${TMUX_CONF_PATH}/general.conf"
echo "${TMUX_CONF_PATH}/plugins.conf"
echo "${TMUX_CONF_PATH}/pane.conf"
echo "${TMUX_CONF_PATH}/status.conf"

a24k avatar Oct 28 '22 08:10 a24k

Shameless plug: https://github.com/tmux-plugins/tpm/issues/85#issuecomment-1370493418

FranklinYu avatar Jan 05 '23 02:01 FranklinYu