tmux.conf: detect running as tmate and disable non-supported features #152
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
tmux versions >=2.3 support the -q option for source-file to suppress errors for nonexistent files. Even Debian/oldoldstable has tmux v2.3-4, so this works nice everwhere, except for when invoking tmate, which is a fork based on an old version of tmux, which then complains about:
| /etc/tmux.conf:75: usage: source-file path
| /etc/tmux.conf:36: usage: source-file path
Try to detect tmate from within the environment, and then enable the configuration only when not running from within tmate.
This commit relies on @mika's commit 71101e0 (the commit message was shamelessly copied, thx!), but two things changed:
Use
! (env | grep -q TMUX=/tmp/tmate)instead ofenv | grep -q TMUX=/tmp/tmate && falsewhich always results in false:$ true && false; echo $?
1
Double escape the semicolon (;) (i.e. \;).
Because if bind-key is set up to call multiple commands, each command needs to be separated with ;. (Each command is terminated by a newline or a semicolon. Commands separated by semicolons together form a ‘command sequence’). And if bind-key is called within if-shell ; needs to be escaped one more time. (No escaping would have been needed when using braces ({}), but tmate does not seem to support braces.)
See: COMMAND PARSING AND EXECUTION + PARSING SYNTAX in man page tmux(1).
Replaces the PR: #151