Update `docs/automatic_tpm_installation.md`
Hi there!
I was creating my own tmux config recently and added a snippet to install tpm automatically if it's not installed yet. But I think it's a bit overcomplicated, and tmux manual mentions using braces:
Braces are parsed as a configuration file (so conditions such as ‘%if’ are processed)
and then converted into a string. They are designed to avoid the need for additional
escaping when passing a group of tmux commands as an argument (for example to
if-shell). These two examples produce an identical command - note that no escaping
is needed when using {}:
if-shell true {
display -p 'brace-dollar-foo: }$foo'
}
if-shell true "display -p 'brace-dollar-foo: }\$foo'"
So, I replaced the snippet in the docs:
if "test ! -d ~/.tmux/plugins/tpm" \
"run 'git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm && ~/.tmux/plugins/tpm/bin/install_plugins'"
with this one:
if "test ! -d ~/.tmux/plugins/tpm" {
run "mkdir -p ~/.tmux/plugins"
run "git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm"
run "~/.tmux/plugins/tpm/bin/install_plugins"
}
I tried it on a bunch of machines, and it works, so I guess I should share this.
Aren't the original and yours functionally identical? I'm not sure what problem is being solved here.
Yes, they are functionally identical. Except I added mkdir just in case. So, it doesn't solve any problem, but I think my snippet is more readable and less complex than the current one.
Nice one, I think I'm going to use it. The one problem I have is that I deploy my dotfiles in /tmp on our productive servers to make use of the configs, however what happens when I change the local tmux config and sync up to github, my remote dotfiles need to also install some new tmux plugins occasionally. I would love to have a function to update / install tmux plugins silently whenever I attach to a session. Is that possible somehow?