mirror of
https://github.com/tmux-plugins/tpm.git
synced 2025-06-25 00:01:45 -04:00
Compare commits
77 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
99469c4a9b | ||
|
8307a5fe58 | ||
|
3709b62397 | ||
|
fdb30228b1 | ||
|
e504b8eec6 | ||
|
fc412cbdf7 | ||
|
420656d265 | ||
|
b6fb16f318 | ||
|
b699a7e01c | ||
|
49c51f3774 | ||
|
e529dc221c | ||
|
693e5a2a0f | ||
|
38ab7d9ef7 | ||
|
f9d3c542cd | ||
|
108f76b628 | ||
|
e019ff1fe9 | ||
|
2afeff1529 | ||
|
0a19b28b4e | ||
|
29c871e810 | ||
|
f79c59314c | ||
|
38576cf76e | ||
|
60a36d6f7a | ||
|
b36202ace9 | ||
|
425cabe941 | ||
|
9d2a389f90 | ||
|
59f78857f6 | ||
|
5c4f37a52d | ||
|
4a3fdeca47 | ||
|
788f5d68af | ||
|
06d41226af | ||
|
7c3a16e243 | ||
|
fe5e13152a | ||
|
26d9ace1b4 | ||
|
476f6ca699 | ||
|
6727ee441d | ||
|
2ab1d9101b | ||
|
42bb2bf48b | ||
|
0128e36fbe | ||
|
0e46b92aba | ||
|
9be9fd19f1 | ||
|
a403ca3b67 | ||
|
206ded75d8 | ||
|
2c4a2dfd65 | ||
|
95f78336c3 | ||
|
3efe9b20ba | ||
|
e51a3772b5 | ||
|
c8ac32a085 | ||
|
0ea31ae2d6 | ||
|
c5c997bdde | ||
|
350fa9ee5f | ||
|
1579534c2e | ||
|
cfaf15b768 | ||
|
9e082ff1b3 | ||
|
b4c89884e0 | ||
|
9bfbac2767 | ||
|
284b28ec80 | ||
|
a44cab3fcf | ||
|
51ff07a729 | ||
|
620f06c524 | ||
|
f75ba16d5f | ||
|
abffb251ac | ||
|
1c027df560 | ||
|
9f44b6fca9 | ||
|
527d123211 | ||
|
4671ee745c | ||
|
c5600ae332 | ||
|
01c714fcad | ||
|
aa09a56f4b | ||
|
f6a6d879b0 | ||
|
c53ccb37ae | ||
|
5073d2f382 | ||
|
a6e34acf0e | ||
|
5de37f98bb | ||
|
bfc7a2c2cb | ||
|
62360f9180 | ||
|
468f864612 | ||
|
8bdead341d |
9
.gitattributes
vendored
Normal file
9
.gitattributes
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# Force text files to have unix eols, so Windows/Cygwin does not break them
|
||||||
|
*.* eol=lf
|
||||||
|
|
||||||
|
# These files are unfortunately not recognized as text files so
|
||||||
|
# explicitly listing them here
|
||||||
|
tpm eol=lf
|
||||||
|
bin/* eol=lf
|
||||||
|
bindings/* eol=lf
|
||||||
|
tests/* eol=lf
|
11
.travis.yml
11
.travis.yml
@ -1,11 +1,14 @@
|
|||||||
# generic packages and latest Tmux 1.9a
|
# generic packages and tmux
|
||||||
before_install:
|
before_install:
|
||||||
- sudo apt-get update
|
- sudo apt-get update
|
||||||
- sudo apt-get install -y git-core expect
|
- sudo apt-get install -y git-core expect
|
||||||
- sudo apt-get install -y python-software-properties software-properties-common
|
- sudo apt-get install -y python-software-properties software-properties-common
|
||||||
- sudo add-apt-repository -y ppa:pi-rho/dev
|
- sudo apt-get install -y libevent-dev libncurses-dev
|
||||||
- sudo apt-get update
|
- git clone https://github.com/tmux/tmux.git
|
||||||
- sudo apt-get install -y tmux=1.9a-1~ppa1~p
|
- cd tmux
|
||||||
|
- git checkout 2.0
|
||||||
|
- sh autogen.sh
|
||||||
|
- ./configure && make && sudo make install
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- git fetch --unshallow --recurse-submodules || git fetch --recurse-submodules
|
- git fetch --unshallow --recurse-submodules || git fetch --recurse-submodules
|
||||||
|
13
CHANGELOG.md
13
CHANGELOG.md
@ -2,6 +2,17 @@
|
|||||||
|
|
||||||
### master
|
### master
|
||||||
|
|
||||||
|
### v3.1.0, 2023-01-03
|
||||||
|
- upgrade to new version of `tmux-test`
|
||||||
|
- bug: when using `emacs` copy mode, Enter does not quit screen after tpm
|
||||||
|
installation/update. Fix by making `Escape` the key for emacs mode.
|
||||||
|
- add a doc with troubleshooting instructions
|
||||||
|
- add `.gitattributes` file that forces linefeed characters (classic `\n`) as
|
||||||
|
line endings - helps with misconfigured git on windows/cygwin
|
||||||
|
- readme update: announce Cygwin support
|
||||||
|
- un-deprecate old plugin definition syntax: `set -g @tpm_plugins`
|
||||||
|
- More stuff, check `git log`.
|
||||||
|
|
||||||
### v3.0.0, 2015-08-03
|
### v3.0.0, 2015-08-03
|
||||||
- refactor `shared_set_tpm_path_constant` function
|
- refactor `shared_set_tpm_path_constant` function
|
||||||
- move all instructions to `docs/` dir
|
- move all instructions to `docs/` dir
|
||||||
@ -20,7 +31,7 @@
|
|||||||
- enable overriding default key bindings
|
- enable overriding default key bindings
|
||||||
- start using `C-c` to clear screen
|
- start using `C-c` to clear screen
|
||||||
- add uninstall/clean procedure and keybinding (prefix+alt+u) (@chilicuil)
|
- add uninstall/clean procedure and keybinding (prefix+alt+u) (@chilicuil)
|
||||||
- add new `set @plugin 'repo'` plugin defintion syntax (@chilicuil)
|
- add new `set @plugin 'repo'` plugin definition syntax (@chilicuil)
|
||||||
- revert back to using `-g` flag in new plugin definition syntax
|
- revert back to using `-g` flag in new plugin definition syntax
|
||||||
- permit leading whitespace with new plugin definition syntax (thanks @chilicuil)
|
- permit leading whitespace with new plugin definition syntax (thanks @chilicuil)
|
||||||
- make sure `TMUX_PLUGIN_MANAGER_PATH` always has trailng slash
|
- make sure `TMUX_PLUGIN_MANAGER_PATH` always has trailng slash
|
||||||
|
75
README.md
75
README.md
@ -1,8 +1,12 @@
|
|||||||
# Tmux Plugin Manager
|
# Tmux Plugin Manager
|
||||||
|
|
||||||
[](https://travis-ci.org/tmux-plugins/tpm)
|
[](https://travis-ci.org/tmux-plugins/tpm)
|
||||||
|
|
||||||
Installs and loads TMUX plugins.
|
Installs and loads `tmux` plugins.
|
||||||
|
|
||||||
|
Tested and working on Linux, OSX, and Cygwin.
|
||||||
|
|
||||||
|
See list of plugins [here](https://github.com/tmux-plugins/list).
|
||||||
|
|
||||||
### Installation
|
### Installation
|
||||||
|
|
||||||
@ -10,65 +14,68 @@ Requirements: `tmux` version 1.9 (or higher), `git`, `bash`.
|
|||||||
|
|
||||||
Clone TPM:
|
Clone TPM:
|
||||||
|
|
||||||
$ git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
|
```bash
|
||||||
|
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
|
||||||
|
```
|
||||||
|
|
||||||
Put this at the bottom of `.tmux.conf`:
|
Put this at the bottom of `~/.tmux.conf` (`$XDG_CONFIG_HOME/tmux/tmux.conf`
|
||||||
|
works too):
|
||||||
|
|
||||||
|
```bash
|
||||||
# List of plugins
|
# List of plugins
|
||||||
set -g @plugin 'tmux-plugins/tpm'
|
set -g @plugin 'tmux-plugins/tpm'
|
||||||
set -g @plugin 'tmux-plugins/tmux-sensible'
|
set -g @plugin 'tmux-plugins/tmux-sensible'
|
||||||
|
|
||||||
# Other examples:
|
# Other examples:
|
||||||
# set -g @plugin 'github_username/plugin_name'
|
# set -g @plugin 'github_username/plugin_name'
|
||||||
# set -g @plugin 'git@github.com/user/plugin'
|
# set -g @plugin 'github_username/plugin_name#branch'
|
||||||
# set -g @plugin 'git@bitbucket.com/user/plugin'
|
# set -g @plugin 'git@github.com:user/plugin'
|
||||||
|
# set -g @plugin 'git@bitbucket.com:user/plugin'
|
||||||
|
|
||||||
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
|
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
|
||||||
run '~/.tmux/plugins/tpm/tpm'
|
run '~/.tmux/plugins/tpm/tpm'
|
||||||
|
```
|
||||||
|
|
||||||
Reload TMUX environment so TPM is sourced:
|
Reload TMUX environment so TPM is sourced:
|
||||||
|
|
||||||
# type this in terminal
|
```bash
|
||||||
$ tmux source ~/.tmux.conf
|
# type this in terminal if tmux is already running
|
||||||
|
tmux source ~/.tmux.conf
|
||||||
|
```
|
||||||
|
|
||||||
That's it!
|
That's it!
|
||||||
|
|
||||||
(**Note:** using `set -g @tpm_plugins` is deprecated, but still works alongside
|
|
||||||
new syntax)
|
|
||||||
|
|
||||||
### Installing plugins
|
### Installing plugins
|
||||||
|
|
||||||
1. add new plugin to `.tmux.conf` with `set -g @plugin '...'`
|
1. Add new plugin to `~/.tmux.conf` with `set -g @plugin '...'`
|
||||||
2. hit `prefix + I` (I as in **I**nstall) to fetch the plugin
|
2. Press `prefix` + <kbd>I</kbd> (capital i, as in **I**nstall) to fetch the plugin.
|
||||||
|
|
||||||
You're good to go! The plugin was cloned to `~/.tmux/plugins/` dir and sourced.
|
You're good to go! The plugin was cloned to `~/.tmux/plugins/` dir and sourced.
|
||||||
|
|
||||||
### Uninstalling plugins
|
### Uninstalling plugins
|
||||||
|
|
||||||
1. remove (or comment out) plugin from the list
|
1. Remove (or comment out) plugin from the list.
|
||||||
2. hit `prefix + alt + u` (u as in **u**install) to remove the plugin
|
2. Press `prefix` + <kbd>alt</kbd> + <kbd>u</kbd> (lowercase u as in **u**ninstall) to remove the plugin.
|
||||||
|
|
||||||
All the plugins are installed to `~/.tmux/plugins/` so alternatively you can
|
All the plugins are installed to `~/.tmux/plugins/` so alternatively you can
|
||||||
find plugin directory there and remove it.
|
find plugin directory there and remove it.
|
||||||
|
|
||||||
### Key bindings
|
### Key bindings
|
||||||
|
|
||||||
`prefix + I`
|
`prefix` + <kbd>I</kbd>
|
||||||
- installs new plugins from github or any other git repo
|
- Installs new plugins from GitHub or any other git repository
|
||||||
- refreshes TMUX environment
|
- Refreshes TMUX environment
|
||||||
|
|
||||||
`prefix + U`
|
`prefix` + <kbd>U</kbd>
|
||||||
- updates plugin(s)
|
- updates plugin(s)
|
||||||
|
|
||||||
`prefix + alt + u`
|
`prefix` + <kbd>alt</kbd> + <kbd>u</kbd>
|
||||||
- remove/uninstall plugins not on the plugin list
|
- remove/uninstall plugins not on the plugin list
|
||||||
|
|
||||||
### More plugins
|
|
||||||
|
|
||||||
For more plugins, check [here](https://github.com/tmux-plugins).
|
|
||||||
|
|
||||||
### Docs
|
### Docs
|
||||||
|
|
||||||
|
- [Help, tpm not working](docs/tpm_not_working.md) - problem solutions
|
||||||
|
|
||||||
More advanced features and instructions, regular users probably do not need
|
More advanced features and instructions, regular users probably do not need
|
||||||
this:
|
this:
|
||||||
|
|
||||||
@ -79,27 +86,15 @@ this:
|
|||||||
|
|
||||||
### Tests
|
### Tests
|
||||||
|
|
||||||
Tests for this project run on [travis](https://travis-ci.org/tmux-plugins/tpm).
|
Tests for this project run on [Travis CI](https://travis-ci.org/tmux-plugins/tpm).
|
||||||
|
|
||||||
When run locally, [vagrant](https://www.vagrantup.com/) is required.
|
When run locally, [vagrant](https://www.vagrantup.com/) is required.
|
||||||
Run tests with:
|
Run tests with:
|
||||||
|
|
||||||
|
```bash
|
||||||
# within project directory
|
# within project directory
|
||||||
$ ./run_tests
|
./run_tests
|
||||||
|
```
|
||||||
### Other goodies
|
|
||||||
|
|
||||||
- [tmux-copycat](https://github.com/tmux-plugins/tmux-copycat) - a plugin for
|
|
||||||
regex searches in tmux and fast match selection
|
|
||||||
- [tmux-yank](https://github.com/tmux-plugins/tmux-yank) - enables copying
|
|
||||||
highlighted text to system clipboard
|
|
||||||
- [tmux-open](https://github.com/tmux-plugins/tmux-open) - a plugin for quickly
|
|
||||||
opening highlighted file or a url
|
|
||||||
- [tmux-continuum](https://github.com/tmux-plugins/tmux-continuum) - automatic
|
|
||||||
restoring and continuous saving of tmux env
|
|
||||||
|
|
||||||
You might want to follow [@brunosutic](https://twitter.com/brunosutic) on
|
|
||||||
twitter if you want to hear about new tmux plugins or feature updates.
|
|
||||||
|
|
||||||
### License
|
### License
|
||||||
|
|
||||||
|
@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
One of the first things we do on a new machine is cloning our dotfiles. Not everything comes with them though, so for example `tpm` most likely won't be installed.
|
One of the first things we do on a new machine is cloning our dotfiles. Not everything comes with them though, so for example `tpm` most likely won't be installed.
|
||||||
|
|
||||||
If you wanna install `tpm` automatically when tmux is started, put the following snippet in `.tmux.conf` before the final `run '~/.tmux/plugins/tpm/tpm'`:
|
If you want to install `tpm` and plugins automatically when tmux is started, put the following snippet in `.tmux.conf` before the final `run '~/.tmux/plugins/tpm/tpm'`:
|
||||||
|
|
||||||
```
|
```
|
||||||
if "test ! -d ~/.tmux/plugins/tpm" \
|
if "test ! -d ~/.tmux/plugins/tpm" \
|
||||||
"run 'git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm'"
|
"run 'git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm && ~/.tmux/plugins/tpm/bin/install_plugins'"
|
||||||
```
|
```
|
||||||
|
|
||||||
This useful tip was submitted by @acr4.
|
This useful tip was submitted by @acr4 and narfman0.
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
# Changing plugins install dir
|
# Changing plugins install dir
|
||||||
|
|
||||||
By default, TPM installs plugins to `~/.tmux/plugins/`.
|
By default, TPM installs plugins in a subfolder named `plugins/` inside
|
||||||
|
`$XDG_CONFIG_HOME/tmux/` if a `tmux.conf` file was found at that location, or
|
||||||
|
inside `~/.tmux/` otherwise.
|
||||||
|
|
||||||
You can change the install path by putting this in `.tmux.conf`:
|
You can change the install path by putting this in `.tmux.conf`:
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ directory. That's how plugins are run.
|
|||||||
Create a plugin run file in plugin directory:
|
Create a plugin run file in plugin directory:
|
||||||
|
|
||||||
$ touch my_plugin.tmux
|
$ touch my_plugin.tmux
|
||||||
$ chmod +x my_plugin.tmux
|
$ chmod u+x my_plugin.tmux
|
||||||
|
|
||||||
You can have more than one `*.tmux` file, and all will get executed. However, usually
|
You can have more than one `*.tmux` file, and all will get executed. However, usually
|
||||||
you'll need just one.
|
you'll need just one.
|
||||||
@ -69,7 +69,7 @@ Now that we have the binding, let's create a script that's invoked with
|
|||||||
|
|
||||||
$ mkdir scripts
|
$ mkdir scripts
|
||||||
$ touch scripts/tmux_list_plugins.sh
|
$ touch scripts/tmux_list_plugins.sh
|
||||||
$ chmod +x scripts/tmux_list_plugins.sh
|
$ chmod u+x scripts/tmux_list_plugins.sh
|
||||||
|
|
||||||
And here's the script content:
|
And here's the script content:
|
||||||
|
|
||||||
@ -92,17 +92,17 @@ That should set up the key binding. Now hit `prefix + T` and see if it works.
|
|||||||
### 6. publish the plugin
|
### 6. publish the plugin
|
||||||
|
|
||||||
When everything is ready, push the plugin to an online git repository,
|
When everything is ready, push the plugin to an online git repository,
|
||||||
preferably Github.
|
preferably GitHub.
|
||||||
|
|
||||||
Other users can install your plugin by just adding plugin git URL to the
|
Other users can install your plugin by just adding plugin git URL to the
|
||||||
`@plugin` list in their `.tmux.conf`.
|
`@plugin` list in their `.tmux.conf`.
|
||||||
|
|
||||||
If the plugin is on Github, your users will be able to use the shorthand of
|
If the plugin is on GitHub, your users will be able to use the shorthand of
|
||||||
`github_username/repository`.
|
`github_username/repository`.
|
||||||
|
|
||||||
### Conclusion
|
### Conclusion
|
||||||
|
|
||||||
Hopefully, that was easy. As you can see, it's mostly shell scripting.
|
Hopefully, that was easy. As you can see, it's mostly shell scripting.
|
||||||
|
|
||||||
You can use other scripting languages (ruby, phyton etc) but plain old shell
|
You can use other scripting languages (ruby, python etc) but plain old shell
|
||||||
is preferred because of portability.
|
is preferred because of portability.
|
||||||
|
102
docs/tpm_not_working.md
Normal file
102
docs/tpm_not_working.md
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
# Help, tpm not working!
|
||||||
|
|
||||||
|
Here's the list of issues users had with `tpm`:
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
> Nothing works. `tpm` key bindings `prefix + I`, `prefix + U` not even
|
||||||
|
defined.
|
||||||
|
|
||||||
|
Related [issue #22](https://github.com/tmux-plugins/tpm/issues/22)
|
||||||
|
|
||||||
|
- Do you have required `tmux` version to run `tpm`?<br/>
|
||||||
|
Check `tmux` version with `$ tmux -V` command and make sure it's higher or
|
||||||
|
equal to the required version for `tpm` as stated in the readme.
|
||||||
|
|
||||||
|
- ZSH tmux plugin might be causing issues.<br/>
|
||||||
|
If you have it installed, try disabling it and see if `tpm` works then.
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
> Help, I'm using custom config file with `tmux -f /path/to/my_tmux.conf`
|
||||||
|
to start Tmux and for some reason plugins aren't loaded!?
|
||||||
|
|
||||||
|
Related [issue #57](https://github.com/tmux-plugins/tpm/issues/57)
|
||||||
|
|
||||||
|
`tpm` has a known issue when using custom config file with `-f` option.
|
||||||
|
The solution is to use alternative plugin definition syntax. Here are the steps
|
||||||
|
to make it work:
|
||||||
|
|
||||||
|
1. remove all `set -g @plugin` lines from tmux config file
|
||||||
|
2. in the config file define the plugins in the following way:
|
||||||
|
|
||||||
|
# List of plugins
|
||||||
|
set -g @tpm_plugins ' \
|
||||||
|
tmux-plugins/tpm \
|
||||||
|
tmux-plugins/tmux-sensible \
|
||||||
|
tmux-plugins/tmux-resurrect \
|
||||||
|
'
|
||||||
|
|
||||||
|
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
|
||||||
|
run '~/.tmux/plugins/tpm/tpm'
|
||||||
|
|
||||||
|
3. Reload TMUX environment so TPM is sourced: `$ tmux source /path/to/my_tmux.conf`
|
||||||
|
|
||||||
|
The plugins should now be working.
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
> Weird sequence of characters show up when installing or updating plugins
|
||||||
|
|
||||||
|
Related: [issue #25](https://github.com/tmux-plugins/tpm/issues/25)
|
||||||
|
|
||||||
|
- This could be caused by [tmuxline.vim](https://github.com/edkolev/tmuxline.vim)
|
||||||
|
plugin. Uninstall it and see if things work.
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
> "failed to connect to server" error when sourcing .tmux.conf
|
||||||
|
|
||||||
|
Related: [issue #48](https://github.com/tmux-plugins/tpm/issues/48)
|
||||||
|
|
||||||
|
- Make sure `tmux source ~/.tmux.conf` command is ran from inside `tmux`.
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
> tpm not working: '~/.tmux/plugins/tpm/tpm' returned 2 (Windows / Cygwin)
|
||||||
|
|
||||||
|
Related: [issue #81](https://github.com/tmux-plugins/tpm/issues/81)
|
||||||
|
|
||||||
|
This issue is most likely caused by Windows line endings. For example, if you
|
||||||
|
have git's `core.autocrlf` option set to `true`, git will automatically convert
|
||||||
|
all the files to Windows line endings which might cause a problem.
|
||||||
|
|
||||||
|
The solution is to convert all line ending to Unix newline characters. This
|
||||||
|
command handles that for all files under `.tmux/` dir (skips `.git`
|
||||||
|
subdirectories):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
find ~/.tmux -type d -name '.git*' -prune -o -type f -print0 | xargs -0 dos2unix
|
||||||
|
```
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
> '~/.tmux/plugins/tpm/tpm' returned 127 (on macOS, w/ tmux installed using brew)
|
||||||
|
|
||||||
|
Related: [issue #67](https://github.com/tmux-plugins/tpm/issues/67)
|
||||||
|
|
||||||
|
This problem is because tmux's `run-shell` command runs a shell which doesn't read from user configs, thus tmux installed in a brew prefix (e.g. `/usr/local/bin`) will not be found.
|
||||||
|
|
||||||
|
The solution is to find your brew prefix
|
||||||
|
|
||||||
|
```sh
|
||||||
|
> echo "$(brew --prefix)/bin"
|
||||||
|
/opt/homebrew/bin
|
||||||
|
```
|
||||||
|
|
||||||
|
And prepend it to the `PATH` environment variable
|
||||||
|
```
|
||||||
|
set-environment -g PATH "/opt/homebrew/bin:/bin:/usr/bin"
|
||||||
|
```
|
||||||
|
|
||||||
|
before any `run-shell`/`run` commands in `~/.tmux.conf`.
|
@ -1 +1 @@
|
|||||||
Subproject commit 6ad204cbac3c66ecfda86e923e8d08648c977f4b
|
Subproject commit 33fa65fbfb72ba6dd106c21bf5ee6cc353ecdbb6
|
@ -15,8 +15,26 @@ _tpm_path() {
|
|||||||
|
|
||||||
_CACHED_TPM_PATH="$(_tpm_path)"
|
_CACHED_TPM_PATH="$(_tpm_path)"
|
||||||
|
|
||||||
|
# Get the absolute path to the users configuration file of TMux.
|
||||||
|
# This includes a prioritized search on different locations.
|
||||||
|
#
|
||||||
|
_get_user_tmux_conf() {
|
||||||
|
# Define the different possible locations.
|
||||||
|
xdg_location="${XDG_CONFIG_HOME:-$HOME/.config}/tmux/tmux.conf"
|
||||||
|
default_location="$HOME/.tmux.conf"
|
||||||
|
|
||||||
|
# Search for the correct configuration file by priority.
|
||||||
|
if [ -f "$xdg_location" ]; then
|
||||||
|
echo "$xdg_location"
|
||||||
|
|
||||||
|
else
|
||||||
|
echo "$default_location"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
_tmux_conf_contents() {
|
_tmux_conf_contents() {
|
||||||
cat /etc/tmux.conf ~/.tmux.conf 2>/dev/null
|
user_config=$(_get_user_tmux_conf)
|
||||||
|
cat /etc/tmux.conf "$user_config" 2>/dev/null
|
||||||
if [ "$1" == "full" ]; then # also output content from sourced files
|
if [ "$1" == "full" ]; then # also output content from sourced files
|
||||||
local file
|
local file
|
||||||
for file in $(_sourced_files); do
|
for file in $(_sourced_files); do
|
||||||
@ -28,22 +46,35 @@ _tmux_conf_contents() {
|
|||||||
# return files sourced from tmux config files
|
# return files sourced from tmux config files
|
||||||
_sourced_files() {
|
_sourced_files() {
|
||||||
_tmux_conf_contents |
|
_tmux_conf_contents |
|
||||||
awk '/^ *source(-file)? +/ { gsub(/'\''/,""); gsub(/'\"'/,""); print $2 }'
|
sed -E -n -e "s/^[[:space:]]*source(-file)?[[:space:]]+(-q+[[:space:]]+)?['\"]?([^'\"]+)['\"]?/\3/p"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Want to be able to abort in certain cases
|
||||||
|
trap "exit 1" TERM
|
||||||
|
export TOP_PID=$$
|
||||||
|
|
||||||
|
_fatal_error_abort() {
|
||||||
|
echo >&2 "Aborting."
|
||||||
|
kill -s TERM $TOP_PID
|
||||||
}
|
}
|
||||||
|
|
||||||
# PUBLIC FUNCTIONS BELOW
|
# PUBLIC FUNCTIONS BELOW
|
||||||
|
|
||||||
tpm_path() {
|
tpm_path() {
|
||||||
|
if [ "$_CACHED_TPM_PATH" == "/" ]; then
|
||||||
|
echo >&2 "FATAL: Tmux Plugin Manager not configured in tmux.conf"
|
||||||
|
_fatal_error_abort
|
||||||
|
fi
|
||||||
echo "$_CACHED_TPM_PATH"
|
echo "$_CACHED_TPM_PATH"
|
||||||
}
|
}
|
||||||
|
|
||||||
tpm_plugins_list_helper() {
|
tpm_plugins_list_helper() {
|
||||||
# DEPRECATED: lists plugins from @tpm_plugins option
|
# lists plugins from @tpm_plugins option
|
||||||
echo "$(tmux start-server\; show-option -gqv "$tpm_plugins_variable_name")"
|
echo "$(tmux start-server\; show-option -gqv "$tpm_plugins_variable_name")"
|
||||||
|
|
||||||
# read set -g @plugin "tmux-plugins/tmux-example-plugin" entries
|
# read set -g @plugin "tmux-plugins/tmux-example-plugin" entries
|
||||||
_tmux_conf_contents "full" |
|
_tmux_conf_contents "full" |
|
||||||
awk '/^ *set +-g +@plugin/ { gsub(/'\''/,""); gsub(/'\"'/,""); print $4 }'
|
awk '/^[ \t]*set(-option)? +-g +@plugin/ { gsub(/'\''/,""); gsub(/'\"'/,""); print $4 }'
|
||||||
}
|
}
|
||||||
|
|
||||||
# Allowed plugin name formats:
|
# Allowed plugin name formats:
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
_has_emacs_mode_keys() {
|
||||||
|
$(tmux show -gw mode-keys | grep -q emacs)
|
||||||
|
}
|
||||||
|
|
||||||
tmux_echo() {
|
tmux_echo() {
|
||||||
local message="$1"
|
local message="$1"
|
||||||
tmux run-shell "echo '$message'"
|
tmux run-shell "echo '$message'"
|
||||||
@ -12,8 +16,13 @@ echo_err() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
end_message() {
|
end_message() {
|
||||||
|
if _has_emacs_mode_keys; then
|
||||||
|
local continue_key="ESCAPE"
|
||||||
|
else
|
||||||
|
local continue_key="ENTER"
|
||||||
|
fi
|
||||||
tmux_echo ""
|
tmux_echo ""
|
||||||
tmux_echo "TMUX environment reloaded."
|
tmux_echo "TMUX environment reloaded."
|
||||||
tmux_echo ""
|
tmux_echo ""
|
||||||
tmux_echo "Done, press ENTER to continue."
|
tmux_echo "Done, press $continue_key to continue."
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
|
HELPERS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
source "$HELPERS_DIR/plugin_functions.sh"
|
||||||
|
|
||||||
reload_tmux_environment() {
|
reload_tmux_environment() {
|
||||||
tmux source-file ~/.tmux.conf >/dev/null 2>&1
|
tmux source-file $(_get_user_tmux_conf) >/dev/null 2>&1
|
||||||
}
|
}
|
||||||
|
@ -14,29 +14,37 @@ fi
|
|||||||
|
|
||||||
clone() {
|
clone() {
|
||||||
local plugin="$1"
|
local plugin="$1"
|
||||||
|
local branch="$2"
|
||||||
|
if [ -n "$branch" ]; then
|
||||||
cd "$(tpm_path)" &&
|
cd "$(tpm_path)" &&
|
||||||
GIT_TERMINAL_PROMPT=0 git clone --recursive "$plugin" >/dev/null 2>&1
|
GIT_TERMINAL_PROMPT=0 git clone -b "$branch" --single-branch --recursive "$plugin" >/dev/null 2>&1
|
||||||
|
else
|
||||||
|
cd "$(tpm_path)" &&
|
||||||
|
GIT_TERMINAL_PROMPT=0 git clone --single-branch --recursive "$plugin" >/dev/null 2>&1
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# tries cloning:
|
# tries cloning:
|
||||||
# 1. plugin name directly - works if it's a valid git url
|
# 1. plugin name directly - works if it's a valid git url
|
||||||
# 2. expands the plugin name to point to a github repo and tries cloning again
|
# 2. expands the plugin name to point to a GitHub repo and tries cloning again
|
||||||
clone_plugin() {
|
clone_plugin() {
|
||||||
local plugin="$1"
|
local plugin="$1"
|
||||||
clone "$plugin" ||
|
local branch="$2"
|
||||||
clone "https://git::@github.com/$plugin"
|
clone "$plugin" "$branch" ||
|
||||||
|
clone "https://git::@github.com/$plugin" "$branch"
|
||||||
}
|
}
|
||||||
|
|
||||||
# clone plugin and produce output
|
# clone plugin and produce output
|
||||||
install_plugin() {
|
install_plugin() {
|
||||||
local plugin="$1"
|
local plugin="$1"
|
||||||
|
local branch="$2"
|
||||||
local plugin_name="$(plugin_name_helper "$plugin")"
|
local plugin_name="$(plugin_name_helper "$plugin")"
|
||||||
|
|
||||||
if plugin_already_installed "$plugin"; then
|
if plugin_already_installed "$plugin"; then
|
||||||
echo_ok "Already installed \"$plugin_name\""
|
echo_ok "Already installed \"$plugin_name\""
|
||||||
else
|
else
|
||||||
echo_ok "Installing \"$plugin_name\""
|
echo_ok "Installing \"$plugin_name\""
|
||||||
clone_plugin "$plugin" &&
|
clone_plugin "$plugin" "$branch" &&
|
||||||
echo_ok " \"$plugin_name\" download success" ||
|
echo_ok " \"$plugin_name\" download success" ||
|
||||||
echo_err " \"$plugin_name\" download fail"
|
echo_err " \"$plugin_name\" download fail"
|
||||||
fi
|
fi
|
||||||
@ -45,7 +53,8 @@ install_plugin() {
|
|||||||
install_plugins() {
|
install_plugins() {
|
||||||
local plugins="$(tpm_plugins_list_helper)"
|
local plugins="$(tpm_plugins_list_helper)"
|
||||||
for plugin in $plugins; do
|
for plugin in $plugins; do
|
||||||
install_plugin "$plugin"
|
IFS='#' read -ra plugin <<< "$plugin"
|
||||||
|
install_plugin "${plugin[0]}" "${plugin[1]}"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,7 +30,8 @@ source_plugins() {
|
|||||||
local plugin plugin_path
|
local plugin plugin_path
|
||||||
local plugins="$(tpm_plugins_list_helper)"
|
local plugins="$(tpm_plugins_list_helper)"
|
||||||
for plugin in $plugins; do
|
for plugin in $plugins; do
|
||||||
plugin_path="$(plugin_path_helper "$plugin")"
|
IFS='#' read -ra plugin <<< "$plugin"
|
||||||
|
plugin_path="$(plugin_path_helper "${plugin[0]}")"
|
||||||
silently_source_all_tmux_files "$plugin_path"
|
silently_source_all_tmux_files "$plugin_path"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
@ -26,11 +26,15 @@ pull_changes() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
update() {
|
update() {
|
||||||
local plugin="$1"
|
local plugin="$1" output
|
||||||
echo_ok "Updating \"$plugin\""
|
output=$(pull_changes "$plugin" 2>&1)
|
||||||
$(pull_changes "$plugin" > /dev/null 2>&1) &&
|
if (( $? == 0 )); then
|
||||||
echo_ok " \"$plugin\" update success" ||
|
echo_ok " \"$plugin\" update success"
|
||||||
|
echo_ok "$(echo "$output" | sed -e 's/^/ | /')"
|
||||||
|
else
|
||||||
echo_err " \"$plugin\" update fail"
|
echo_err " \"$plugin\" update fail"
|
||||||
|
echo_err "$(echo "$output" | sed -e 's/^/ | /')"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
update_all() {
|
update_all() {
|
||||||
@ -38,27 +42,32 @@ update_all() {
|
|||||||
echo_ok ""
|
echo_ok ""
|
||||||
local plugins="$(tpm_plugins_list_helper)"
|
local plugins="$(tpm_plugins_list_helper)"
|
||||||
for plugin in $plugins; do
|
for plugin in $plugins; do
|
||||||
local plugin_name="$(plugin_name_helper "$plugin")"
|
IFS='#' read -ra plugin <<< "$plugin"
|
||||||
|
local plugin_name="$(plugin_name_helper "${plugin[0]}")"
|
||||||
# updating only installed plugins
|
# updating only installed plugins
|
||||||
if plugin_already_installed "$plugin_name"; then
|
if plugin_already_installed "$plugin_name"; then
|
||||||
update "$plugin_name"
|
update "$plugin_name" &
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
wait
|
||||||
}
|
}
|
||||||
|
|
||||||
update_plugins() {
|
update_plugins() {
|
||||||
local plugins="$*"
|
local plugins="$*"
|
||||||
for plugin in $plugins; do
|
for plugin in $plugins; do
|
||||||
local plugin_name="$(plugin_name_helper "$plugin")"
|
IFS='#' read -ra plugin <<< "$plugin"
|
||||||
|
local plugin_name="$(plugin_name_helper "${plugin[0]}")"
|
||||||
if plugin_already_installed "$plugin_name"; then
|
if plugin_already_installed "$plugin_name"; then
|
||||||
update "$plugin_name"
|
update "$plugin_name" &
|
||||||
else
|
else
|
||||||
echo_err "$plugin_name not installed!"
|
echo_err "$plugin_name not installed!" &
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
wait
|
||||||
}
|
}
|
||||||
|
|
||||||
main() {
|
main() {
|
||||||
|
ensure_tpm_path_exists
|
||||||
if [ "$1" == "all" ]; then
|
if [ "$1" == "all" ]; then
|
||||||
update_all
|
update_all
|
||||||
else
|
else
|
||||||
|
@ -18,6 +18,7 @@ manually_install_the_plugin() {
|
|||||||
|
|
||||||
test_plugin_uninstallation_via_tmux_key_binding() {
|
test_plugin_uninstallation_via_tmux_key_binding() {
|
||||||
set_tmux_conf_helper <<- HERE
|
set_tmux_conf_helper <<- HERE
|
||||||
|
set -g mode-keys vi
|
||||||
run-shell "$TPM_DIR/tpm"
|
run-shell "$TPM_DIR/tpm"
|
||||||
HERE
|
HERE
|
||||||
|
|
||||||
@ -33,6 +34,7 @@ test_plugin_uninstallation_via_tmux_key_binding() {
|
|||||||
|
|
||||||
test_plugin_uninstallation_via_script() {
|
test_plugin_uninstallation_via_script() {
|
||||||
set_tmux_conf_helper <<- HERE
|
set_tmux_conf_helper <<- HERE
|
||||||
|
set -g mode-keys vi
|
||||||
run-shell "$TPM_DIR/tpm"
|
run-shell "$TPM_DIR/tpm"
|
||||||
HERE
|
HERE
|
||||||
|
|
||||||
@ -46,6 +48,7 @@ test_plugin_uninstallation_via_script() {
|
|||||||
|
|
||||||
test_unsuccessful_plugin_uninstallation_via_script() {
|
test_unsuccessful_plugin_uninstallation_via_script() {
|
||||||
set_tmux_conf_helper <<- HERE
|
set_tmux_conf_helper <<- HERE
|
||||||
|
set -g mode-keys vi
|
||||||
run-shell "$TPM_DIR/tpm"
|
run-shell "$TPM_DIR/tpm"
|
||||||
HERE
|
HERE
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ source "$CURRENT_DIR/helpers/tpm.sh"
|
|||||||
|
|
||||||
test_plugin_installation_via_tmux_key_binding() {
|
test_plugin_installation_via_tmux_key_binding() {
|
||||||
set_tmux_conf_helper <<- HERE
|
set_tmux_conf_helper <<- HERE
|
||||||
|
set -g mode-keys vi
|
||||||
set -g @plugin "tmux-plugins/tmux-example-plugin"
|
set -g @plugin "tmux-plugins/tmux-example-plugin"
|
||||||
run-shell "$TPM_DIR/tpm"
|
run-shell "$TPM_DIR/tpm"
|
||||||
HERE
|
HERE
|
||||||
@ -28,8 +29,25 @@ test_plugin_installation_via_tmux_key_binding() {
|
|||||||
teardown_helper
|
teardown_helper
|
||||||
}
|
}
|
||||||
|
|
||||||
|
test_plugin_installation_via_tmux_key_binding_set_option() {
|
||||||
|
set_tmux_conf_helper <<- HERE
|
||||||
|
set -g mode-keys vi
|
||||||
|
set-option -g @plugin "tmux-plugins/tmux-example-plugin"
|
||||||
|
run-shell "$TPM_DIR/tpm"
|
||||||
|
HERE
|
||||||
|
|
||||||
|
"$CURRENT_DIR/expect_successful_plugin_download" ||
|
||||||
|
fail_helper "[key-binding][set-option] plugin installation fails"
|
||||||
|
|
||||||
|
check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" ||
|
||||||
|
fail_helper "[key-binding][set-option] plugin download fails"
|
||||||
|
|
||||||
|
teardown_helper
|
||||||
|
}
|
||||||
|
|
||||||
test_plugin_installation_custom_dir_via_tmux_key_binding() {
|
test_plugin_installation_custom_dir_via_tmux_key_binding() {
|
||||||
set_tmux_conf_helper <<- HERE
|
set_tmux_conf_helper <<- HERE
|
||||||
|
set -g mode-keys vi
|
||||||
set-environment -g TMUX_PLUGIN_MANAGER_PATH '$CUSTOM_PLUGINS_DIR'
|
set-environment -g TMUX_PLUGIN_MANAGER_PATH '$CUSTOM_PLUGINS_DIR'
|
||||||
|
|
||||||
set -g @plugin "tmux-plugins/tmux-example-plugin"
|
set -g @plugin "tmux-plugins/tmux-example-plugin"
|
||||||
@ -48,6 +66,7 @@ test_plugin_installation_custom_dir_via_tmux_key_binding() {
|
|||||||
|
|
||||||
test_non_existing_plugin_installation_via_tmux_key_binding() {
|
test_non_existing_plugin_installation_via_tmux_key_binding() {
|
||||||
set_tmux_conf_helper <<- HERE
|
set_tmux_conf_helper <<- HERE
|
||||||
|
set -g mode-keys vi
|
||||||
set -g @plugin "tmux-plugins/non-existing-plugin"
|
set -g @plugin "tmux-plugins/non-existing-plugin"
|
||||||
run-shell "$TPM_DIR/tpm"
|
run-shell "$TPM_DIR/tpm"
|
||||||
HERE
|
HERE
|
||||||
@ -60,6 +79,7 @@ test_non_existing_plugin_installation_via_tmux_key_binding() {
|
|||||||
|
|
||||||
test_multiple_plugins_installation_via_tmux_key_binding() {
|
test_multiple_plugins_installation_via_tmux_key_binding() {
|
||||||
set_tmux_conf_helper <<- HERE
|
set_tmux_conf_helper <<- HERE
|
||||||
|
set -g mode-keys vi
|
||||||
set -g @plugin "tmux-plugins/tmux-example-plugin"
|
set -g @plugin "tmux-plugins/tmux-example-plugin"
|
||||||
\ \ set -g @plugin 'tmux-plugins/tmux-copycat'
|
\ \ set -g @plugin 'tmux-plugins/tmux-copycat'
|
||||||
run-shell "$TPM_DIR/tpm"
|
run-shell "$TPM_DIR/tpm"
|
||||||
@ -79,6 +99,7 @@ test_multiple_plugins_installation_via_tmux_key_binding() {
|
|||||||
|
|
||||||
test_plugins_installation_from_sourced_file_via_tmux_key_binding() {
|
test_plugins_installation_from_sourced_file_via_tmux_key_binding() {
|
||||||
set_tmux_conf_helper <<- HERE
|
set_tmux_conf_helper <<- HERE
|
||||||
|
set -g mode-keys vi
|
||||||
source '$ADDITIONAL_CONFIG_FILE_1'
|
source '$ADDITIONAL_CONFIG_FILE_1'
|
||||||
set -g @plugin 'tmux-plugins/tmux-example-plugin'
|
set -g @plugin 'tmux-plugins/tmux-example-plugin'
|
||||||
run-shell "$TPM_DIR/tpm"
|
run-shell "$TPM_DIR/tpm"
|
||||||
@ -101,6 +122,7 @@ test_plugins_installation_from_sourced_file_via_tmux_key_binding() {
|
|||||||
|
|
||||||
test_plugins_installation_from_multiple_sourced_files_via_tmux_key_binding() {
|
test_plugins_installation_from_multiple_sourced_files_via_tmux_key_binding() {
|
||||||
set_tmux_conf_helper <<- HERE
|
set_tmux_conf_helper <<- HERE
|
||||||
|
set -g mode-keys vi
|
||||||
\ \ source '$ADDITIONAL_CONFIG_FILE_1'
|
\ \ source '$ADDITIONAL_CONFIG_FILE_1'
|
||||||
source-file '$ADDITIONAL_CONFIG_FILE_2'
|
source-file '$ADDITIONAL_CONFIG_FILE_2'
|
||||||
run-shell "$TPM_DIR/tpm"
|
run-shell "$TPM_DIR/tpm"
|
||||||
@ -126,6 +148,7 @@ test_plugins_installation_from_multiple_sourced_files_via_tmux_key_binding() {
|
|||||||
|
|
||||||
test_plugin_installation_via_script() {
|
test_plugin_installation_via_script() {
|
||||||
set_tmux_conf_helper <<- HERE
|
set_tmux_conf_helper <<- HERE
|
||||||
|
set -g mode-keys vi
|
||||||
set -g @plugin "tmux-plugins/tmux-example-plugin"
|
set -g @plugin "tmux-plugins/tmux-example-plugin"
|
||||||
run-shell "$TPM_DIR/tpm"
|
run-shell "$TPM_DIR/tpm"
|
||||||
HERE
|
HERE
|
||||||
@ -144,6 +167,7 @@ test_plugin_installation_via_script() {
|
|||||||
|
|
||||||
test_plugin_installation_custom_dir_via_script() {
|
test_plugin_installation_custom_dir_via_script() {
|
||||||
set_tmux_conf_helper <<- HERE
|
set_tmux_conf_helper <<- HERE
|
||||||
|
set -g mode-keys vi
|
||||||
set-environment -g TMUX_PLUGIN_MANAGER_PATH '$CUSTOM_PLUGINS_DIR'
|
set-environment -g TMUX_PLUGIN_MANAGER_PATH '$CUSTOM_PLUGINS_DIR'
|
||||||
|
|
||||||
set -g @plugin "tmux-plugins/tmux-example-plugin"
|
set -g @plugin "tmux-plugins/tmux-example-plugin"
|
||||||
@ -165,6 +189,7 @@ test_plugin_installation_custom_dir_via_script() {
|
|||||||
|
|
||||||
test_non_existing_plugin_installation_via_script() {
|
test_non_existing_plugin_installation_via_script() {
|
||||||
set_tmux_conf_helper <<- HERE
|
set_tmux_conf_helper <<- HERE
|
||||||
|
set -g mode-keys vi
|
||||||
set -g @plugin "tmux-plugins/non-existing-plugin"
|
set -g @plugin "tmux-plugins/non-existing-plugin"
|
||||||
run-shell "$TPM_DIR/tpm"
|
run-shell "$TPM_DIR/tpm"
|
||||||
HERE
|
HERE
|
||||||
@ -178,6 +203,7 @@ test_non_existing_plugin_installation_via_script() {
|
|||||||
|
|
||||||
test_multiple_plugins_installation_via_script() {
|
test_multiple_plugins_installation_via_script() {
|
||||||
set_tmux_conf_helper <<- HERE
|
set_tmux_conf_helper <<- HERE
|
||||||
|
set -g mode-keys vi
|
||||||
set -g @plugin "tmux-plugins/tmux-example-plugin"
|
set -g @plugin "tmux-plugins/tmux-example-plugin"
|
||||||
\ \ set -g @plugin 'tmux-plugins/tmux-copycat'
|
\ \ set -g @plugin 'tmux-plugins/tmux-copycat'
|
||||||
run-shell "$TPM_DIR/tpm"
|
run-shell "$TPM_DIR/tpm"
|
||||||
@ -200,6 +226,7 @@ test_multiple_plugins_installation_via_script() {
|
|||||||
|
|
||||||
test_plugins_installation_from_sourced_file_via_script() {
|
test_plugins_installation_from_sourced_file_via_script() {
|
||||||
set_tmux_conf_helper <<- HERE
|
set_tmux_conf_helper <<- HERE
|
||||||
|
set -g mode-keys vi
|
||||||
source '$ADDITIONAL_CONFIG_FILE_1'
|
source '$ADDITIONAL_CONFIG_FILE_1'
|
||||||
set -g @plugin 'tmux-plugins/tmux-example-plugin'
|
set -g @plugin 'tmux-plugins/tmux-example-plugin'
|
||||||
run-shell "$TPM_DIR/tpm"
|
run-shell "$TPM_DIR/tpm"
|
||||||
@ -225,6 +252,7 @@ test_plugins_installation_from_sourced_file_via_script() {
|
|||||||
|
|
||||||
test_plugins_installation_from_multiple_sourced_files_via_script() {
|
test_plugins_installation_from_multiple_sourced_files_via_script() {
|
||||||
set_tmux_conf_helper <<- HERE
|
set_tmux_conf_helper <<- HERE
|
||||||
|
set -g mode-keys vi
|
||||||
\ \ source '$ADDITIONAL_CONFIG_FILE_1'
|
\ \ source '$ADDITIONAL_CONFIG_FILE_1'
|
||||||
source-file '$ADDITIONAL_CONFIG_FILE_2'
|
source-file '$ADDITIONAL_CONFIG_FILE_2'
|
||||||
set -g @plugin 'tmux-plugins/tmux-example-plugin'
|
set -g @plugin 'tmux-plugins/tmux-example-plugin'
|
||||||
|
@ -11,6 +11,7 @@ source "$CURRENT_DIR/helpers/tpm.sh"
|
|||||||
|
|
||||||
test_plugin_installation_via_tmux_key_binding() {
|
test_plugin_installation_via_tmux_key_binding() {
|
||||||
set_tmux_conf_helper <<- HERE
|
set_tmux_conf_helper <<- HERE
|
||||||
|
set -g mode-keys vi
|
||||||
set -g @tpm_plugins "tmux-plugins/tmux-example-plugin"
|
set -g @tpm_plugins "tmux-plugins/tmux-example-plugin"
|
||||||
run-shell "$TPM_DIR/tpm"
|
run-shell "$TPM_DIR/tpm"
|
||||||
HERE
|
HERE
|
||||||
@ -28,6 +29,7 @@ test_plugin_installation_via_tmux_key_binding() {
|
|||||||
|
|
||||||
test_legacy_and_new_syntax_for_plugin_installation_work_via_tmux_key_binding() {
|
test_legacy_and_new_syntax_for_plugin_installation_work_via_tmux_key_binding() {
|
||||||
set_tmux_conf_helper <<- HERE
|
set_tmux_conf_helper <<- HERE
|
||||||
|
set -g mode-keys vi
|
||||||
set -g @tpm_plugins " \
|
set -g @tpm_plugins " \
|
||||||
tmux-plugins/tmux-example-plugin \
|
tmux-plugins/tmux-example-plugin \
|
||||||
"
|
"
|
||||||
@ -53,6 +55,7 @@ test_legacy_and_new_syntax_for_plugin_installation_work_via_tmux_key_binding() {
|
|||||||
|
|
||||||
test_plugin_installation_via_script() {
|
test_plugin_installation_via_script() {
|
||||||
set_tmux_conf_helper <<- HERE
|
set_tmux_conf_helper <<- HERE
|
||||||
|
set -g mode-keys vi
|
||||||
set -g @tpm_plugins "tmux-plugins/tmux-example-plugin"
|
set -g @tpm_plugins "tmux-plugins/tmux-example-plugin"
|
||||||
run-shell "$TPM_DIR/tpm"
|
run-shell "$TPM_DIR/tpm"
|
||||||
HERE
|
HERE
|
||||||
@ -71,6 +74,7 @@ test_plugin_installation_via_script() {
|
|||||||
|
|
||||||
test_legacy_and_new_syntax_for_plugin_installation_work_via_script() {
|
test_legacy_and_new_syntax_for_plugin_installation_work_via_script() {
|
||||||
set_tmux_conf_helper <<- HERE
|
set_tmux_conf_helper <<- HERE
|
||||||
|
set -g mode-keys vi
|
||||||
set -g @tpm_plugins " \
|
set -g @tpm_plugins " \
|
||||||
tmux-plugins/tmux-example-plugin \
|
tmux-plugins/tmux-example-plugin \
|
||||||
"
|
"
|
||||||
|
@ -33,6 +33,7 @@ check_tpm_path() {
|
|||||||
|
|
||||||
test_plugin_sourcing() {
|
test_plugin_sourcing() {
|
||||||
set_tmux_conf_helper <<- HERE
|
set_tmux_conf_helper <<- HERE
|
||||||
|
set -g mode-keys vi
|
||||||
set -g @plugin "doesnt_matter/tmux_test_plugin"
|
set -g @plugin "doesnt_matter/tmux_test_plugin"
|
||||||
run-shell "$TPM_DIR/tpm"
|
run-shell "$TPM_DIR/tpm"
|
||||||
HERE
|
HERE
|
||||||
@ -51,6 +52,7 @@ test_plugin_sourcing() {
|
|||||||
|
|
||||||
test_default_tpm_path() {
|
test_default_tpm_path() {
|
||||||
set_tmux_conf_helper <<- HERE
|
set_tmux_conf_helper <<- HERE
|
||||||
|
set -g mode-keys vi
|
||||||
run-shell "$TPM_DIR/tpm"
|
run-shell "$TPM_DIR/tpm"
|
||||||
HERE
|
HERE
|
||||||
|
|
||||||
@ -62,6 +64,7 @@ test_default_tpm_path() {
|
|||||||
|
|
||||||
test_custom_tpm_path() {
|
test_custom_tpm_path() {
|
||||||
set_tmux_conf_helper <<- HERE
|
set_tmux_conf_helper <<- HERE
|
||||||
|
set -g mode-keys vi
|
||||||
set-environment -g TMUX_PLUGIN_MANAGER_PATH '$CUSTOM_PLUGINS_DIR'
|
set-environment -g TMUX_PLUGIN_MANAGER_PATH '$CUSTOM_PLUGINS_DIR'
|
||||||
run-shell "$TPM_DIR/tpm"
|
run-shell "$TPM_DIR/tpm"
|
||||||
HERE
|
HERE
|
||||||
|
@ -17,6 +17,7 @@ manually_install_the_plugin() {
|
|||||||
|
|
||||||
test_plugin_update_via_tmux_key_binding() {
|
test_plugin_update_via_tmux_key_binding() {
|
||||||
set_tmux_conf_helper <<- HERE
|
set_tmux_conf_helper <<- HERE
|
||||||
|
set -g mode-keys vi
|
||||||
set -g @plugin "tmux-plugins/tmux-example-plugin"
|
set -g @plugin "tmux-plugins/tmux-example-plugin"
|
||||||
run-shell "$TPM_DIR/tpm"
|
run-shell "$TPM_DIR/tpm"
|
||||||
HERE
|
HERE
|
||||||
@ -36,6 +37,7 @@ test_plugin_update_via_tmux_key_binding() {
|
|||||||
|
|
||||||
test_plugin_update_via_script() {
|
test_plugin_update_via_script() {
|
||||||
set_tmux_conf_helper <<- HERE
|
set_tmux_conf_helper <<- HERE
|
||||||
|
set -g mode-keys vi
|
||||||
set -g @plugin "tmux-plugins/tmux-example-plugin"
|
set -g @plugin "tmux-plugins/tmux-example-plugin"
|
||||||
run-shell "$TPM_DIR/tpm"
|
run-shell "$TPM_DIR/tpm"
|
||||||
HERE
|
HERE
|
||||||
|
11
tpm
11
tpm
@ -21,8 +21,17 @@ tpm_path_set() {
|
|||||||
tmux show-environment -g "$DEFAULT_TPM_ENV_VAR_NAME" >/dev/null 2>&1
|
tmux show-environment -g "$DEFAULT_TPM_ENV_VAR_NAME" >/dev/null 2>&1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Check if configuration file exists at an XDG-compatible location, if so use
|
||||||
|
# that directory for TMUX_PLUGIN_MANAGER_PATH. Otherwise use $DEFAULT_TPM_PATH.
|
||||||
set_default_tpm_path() {
|
set_default_tpm_path() {
|
||||||
tmux set-environment -g "$DEFAULT_TPM_ENV_VAR_NAME" "$DEFAULT_TPM_PATH"
|
local xdg_tmux_path="${XDG_CONFIG_HOME:-$HOME/.config}/tmux"
|
||||||
|
local tpm_path="$DEFAULT_TPM_PATH"
|
||||||
|
|
||||||
|
if [ -f "$xdg_tmux_path/tmux.conf" ]; then
|
||||||
|
tpm_path="$xdg_tmux_path/plugins/"
|
||||||
|
fi
|
||||||
|
|
||||||
|
tmux set-environment -g "$DEFAULT_TPM_ENV_VAR_NAME" "$tpm_path"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Ensures TMUX_PLUGIN_MANAGER_PATH global env variable is set.
|
# Ensures TMUX_PLUGIN_MANAGER_PATH global env variable is set.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user