diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..80772e4 --- /dev/null +++ b/.gitattributes @@ -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 diff --git a/CHANGELOG.md b/CHANGELOG.md index d141843..394758d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ - 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` ### v3.0.0, 2015-08-03 - refactor `shared_set_tpm_path_constant` function @@ -23,7 +28,7 @@ - enable overriding default key bindings - start using `C-c` to clear screen - 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 - permit leading whitespace with new plugin definition syntax (thanks @chilicuil) - make sure `TMUX_PLUGIN_MANAGER_PATH` always has trailng slash diff --git a/README.md b/README.md index 9559d83..db640bf 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,10 @@ # Tmux Plugin Manager -[![Build Status](https://travis-ci.org/tmux-plugins/tpm.png?branch=master)](https://travis-ci.org/tmux-plugins/tpm) +[![Build Status](https://travis-ci.org/tmux-plugins/tpm.svg?branch=master)](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. ### Installation @@ -10,57 +12,61 @@ Requirements: `tmux` version 1.9 (or higher), `git`, `bash`. 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): - # List of plugins - set -g @plugin 'tmux-plugins/tpm' - set -g @plugin 'tmux-plugins/tmux-sensible' +```bash +# List of plugins +set -g @plugin 'tmux-plugins/tpm' +set -g @plugin 'tmux-plugins/tmux-sensible' - # Other examples: - # set -g @plugin 'github_username/plugin_name' - # set -g @plugin 'git@github.com/user/plugin' - # set -g @plugin 'git@bitbucket.com/user/plugin' +# Other examples: +# set -g @plugin 'github_username/plugin_name' +# 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) - run '~/.tmux/plugins/tpm/tpm' +# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) +run -b '~/.tmux/plugins/tpm/tpm' +``` Reload TMUX environment so TPM is sourced: - # type this in terminal - $ tmux source ~/.tmux.conf +```bash +# type this in terminal if tmux is already running +$ tmux source ~/.tmux.conf +``` That's it! -(**Note:** using `set -g @tpm_plugins` is deprecated, but still works alongside -new syntax) - ### Installing plugins -1. add new plugin to `.tmux.conf` with `set -g @plugin '...'` -2. hit `prefix + I` (I as in **I**nstall) to fetch the plugin +1. Add new plugin to `~/.tmux.conf` with `set -g @plugin '...'` +2. Press `prefix` + I (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. ### Uninstalling plugins -1. remove (or comment out) plugin from the list -2. hit `prefix + alt + u` (u as in **u**install) to remove the plugin +1. Remove (or comment out) plugin from the list. +2. Press `prefix` + alt + u (lowercase u as in **u**ninstall) to remove the plugin. All the plugins are installed to `~/.tmux/plugins/` so alternatively you can find plugin directory there and remove it. ### Key bindings -`prefix + I` -- installs new plugins from github or any other git repo -- refreshes TMUX environment +`prefix` + I +- Installs new plugins from GitHub or any other git repository +- Refreshes TMUX environment -`prefix + U` +`prefix` + U - updates plugin(s) -`prefix + alt + u` +`prefix` + alt + u - remove/uninstall plugins not on the plugin list ### More plugins @@ -69,6 +75,8 @@ For more plugins, check [here](https://github.com/tmux-plugins). ### Docs +- [Help, tpm not working](docs/tpm_not_working.md) - problem solutions + More advanced features and instructions, regular users probably do not need this: @@ -79,13 +87,15 @@ this: ### 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. Run tests with: - # within project directory - $ ./run_tests +```bash +# within project directory +$ ./run_tests +``` ### Other goodies diff --git a/docs/automatic_tpm_installation.md b/docs/automatic_tpm_installation.md index 22ded34..630573f 100644 --- a/docs/automatic_tpm_installation.md +++ b/docs/automatic_tpm_installation.md @@ -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. -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" \ - "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. diff --git a/docs/how_to_create_plugin.md b/docs/how_to_create_plugin.md index a7c6961..b1a68f9 100644 --- a/docs/how_to_create_plugin.md +++ b/docs/how_to_create_plugin.md @@ -27,7 +27,7 @@ directory. That's how plugins are run. Create a plugin run file in plugin directory: $ 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'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 $ 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: @@ -104,5 +104,5 @@ If the plugin is on Github, your users will be able to use the shorthand of 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. diff --git a/docs/tpm_not_working.md b/docs/tpm_not_working.md new file mode 100644 index 0000000..bfa14ac --- /dev/null +++ b/docs/tpm_not_working.md @@ -0,0 +1,96 @@ +# Help, tpm not working! + +Here's the list of issues users had with `tpm`: + +