314 lines
9.4 KiB
Markdown
314 lines
9.4 KiB
Markdown
Trailing Spaces
|
|
===============
|
|
|
|
A [Sublime Text 2](http://www.sublimetext.com/2) and
|
|
[3](http://www.sublimetext.com/3) plugin that allows you to…
|
|
|
|
**highlight trailing spaces and delete them in a flash!**
|
|
|
|
Synopsis
|
|
--------
|
|
|
|
Sublime Text provides a way to automate deletion of trailing spaces *upon file
|
|
saving* (more on this at the end of this file). Depending on your settings, it
|
|
may be more handy to just highlight them and/or delete them by hand, at any
|
|
time. This plugin provides just that, and a *lot* of options to fine-tune the
|
|
way you want to decimate trailing spaces.
|
|
|
|
Installation
|
|
------------
|
|
|
|
It is available through
|
|
[Sublime Package Contol](http://wbond.net/sublime_packages/package_control) and
|
|
this is the recommended way of installation (brings configuration instructions,
|
|
automatic updates with changelogs…).
|
|
|
|
### Alternative installation methods
|
|
|
|
#### From github
|
|
|
|
You can install from github if you want, although Package Control automates
|
|
just that. Go to your `Packages` subdirectory under ST2's data directory:
|
|
|
|
* Windows: `%APPDATA%\Sublime Text 2`
|
|
* OS X: `~/Library/Application Support/Sublime Text 2`
|
|
* Linux: `~/.config/sublime-text-2`
|
|
* Portable Installation: `Sublime Text 2/Data`
|
|
|
|
Then clone this repository:
|
|
|
|
git clone git://github.com/SublimeText/TrailingSpaces.git
|
|
|
|
#### Manually
|
|
|
|
[Download](https://github.com/SublimeText/TrailingSpaces/archive/master.zip)
|
|
the plugin as a zip. Copy the *Trailing Spaces* directory to its location
|
|
(see prior section).
|
|
|
|
Usage
|
|
-----
|
|
|
|
### Deletion
|
|
|
|
The main feature you gain from using this plugin is that of deleting all
|
|
trailing spaces in the currently edited document. In order to use this
|
|
deletion feature, you may either:
|
|
|
|
* click on "Edit / Trailing Spaces / Delete";
|
|
* bind the deletion command to a keyboard shortcut:
|
|
|
|
To add a key binding, open "Preferences / Key Bindings - User" and add:
|
|
|
|
``` js
|
|
{ "keys": ["ctrl+shift+t"], "command": "delete_trailing_spaces" }
|
|
```
|
|
|
|
With this setting, pressing <kbd>Ctrl + Shift + t</kbd> will delete all
|
|
trailing spaces at once in the current file! For OSX users, quoting wbond:
|
|
"When porting a key binding across OSes, it is common for the ctrl key on
|
|
Windows and Linux to be swapped out for super on OS X"
|
|
(eg. use "super+ctrl+t" instead).
|
|
|
|
*Beware*: the binding from this example overrides the default ST's mapping
|
|
for reopening last closed file. You can look at the default bindings in
|
|
"Preferences / Key Bindings - Default".
|
|
|
|
### Toggling highlighting
|
|
|
|
At any time, you can toggle highlighting on and off. You may either:
|
|
|
|
- click on "Edit / Trailing Spaces / Highlight Regions"
|
|
- bind the toggling command to a keyboard shortcut:
|
|
|
|
``` js
|
|
// I like "d", as in "detect" (overrides a default binding, though).
|
|
{ "keys": ["ctrl+shift+d"], "command": "toggle_trailing_spaces" }
|
|
```
|
|
|
|
Options
|
|
-------
|
|
|
|
Several options are available to customize the plugin's behavior. Those
|
|
settings are stored in a configuration file, as JSON. You must use a specific
|
|
file: Go to "Preferences / Package Settings / Trailing Spaces / Settings
|
|
- User" to add you custom settings. You can look at the default values in
|
|
"Settings - Default", in the same menu.
|
|
|
|
A few of them are also accessible through the "Edit / Trailing Spaces" menu.
|
|
Sometimes, editing a setting will require a fresh Sublime Text to be applied
|
|
properly, so try relaunching ST before reporting an issue ;)
|
|
|
|
All settings are global (ie. applied to all opened documents).
|
|
|
|
### Changing the highlighting color
|
|
|
|
*Default: "invalid"*
|
|
|
|
You may change the highlighting color, providing a color scope name such as
|
|
"error", "comment"… just like that:
|
|
|
|
``` js
|
|
{ "trailing_spaces_highlight_color": "comment" }
|
|
```
|
|
|
|
The scope should be defined in your current theme file. Here is a dummy,
|
|
fully-fledged example (feel free to cut irrelevant pieces for your settings)
|
|
of such a custom color scope:
|
|
|
|
``` xml
|
|
<dict>
|
|
<key>name</key>
|
|
<string>Invalid - Illegal</string>
|
|
<key>scope</key>
|
|
<string>invalid.illegal</string>
|
|
<key>settings</key>
|
|
<dict>
|
|
<key>background</key>
|
|
<string>#F93232</string>
|
|
<key>fontStyle</key>
|
|
<string></string>
|
|
<key>foreground</key>
|
|
<string>#F9F2CE</string>
|
|
</dict>
|
|
</dict>
|
|
```
|
|
|
|
You would then use the value of "invalid.illegal".
|
|
|
|
### Keeping trailing spaces invisible
|
|
|
|
You can make trailing spaces "invisible" yet still rely on the deletion
|
|
command. To do that, set the highlight scope to an empty string:
|
|
|
|
``` js
|
|
{ "trailing_spaces_highlight_color": "" }
|
|
```
|
|
|
|
Beware: this is **not** the same as *disabling* the highlighting (see "On-
|
|
Demand Matching" below). With this setting, the plugin still runs when opening
|
|
a file, and in the background afterwards; you just won't see the trailing
|
|
spaces (they are being highlighted with a "transparent" color).
|
|
|
|
### Include Current Line
|
|
|
|
*Default: true*
|
|
|
|
Highlighting of trailing spaces in the currently edited line can be annoying:
|
|
each time you are about to start a new word, the space you type is matched as
|
|
a trailing spaces. Currently edited line can thus be ignored:
|
|
|
|
``` js
|
|
{ "trailing_spaces_include_current_line": false }
|
|
```
|
|
|
|
Even though the trailing spaces are not highlighted on this line, they are
|
|
still internally matched and will be delete when firing the deletion command.
|
|
|
|
### Include Empty Lines
|
|
|
|
*Default: true*
|
|
|
|
When firing the deletion command, empty lines are matched as trailing regions,
|
|
and end up being deleted. You can specifically ignore them:
|
|
|
|
``` js
|
|
{ "trailing_spaces_include_empty_lines": false }
|
|
```
|
|
|
|
They will not be highlighted either.
|
|
|
|
### Modified Lines Only
|
|
|
|
*Default: false (reopen ST to update)*
|
|
|
|
When firing the deletion command, trailing regions *in the entire document* are
|
|
deleted. There are some use-cases when deleting trailing spaces *only on lines
|
|
you edited* is smarter; for instance when commiting changes to some third-party
|
|
source code.
|
|
|
|
At any time, you can change which area is covered when deleting trailing
|
|
regions. You may either:
|
|
|
|
- click on "Edit / Trailing Spaces / Modified Lines Only"
|
|
- specify as a setting:
|
|
|
|
``` js
|
|
{ "trailing_spaces_modified_lines_only": true }
|
|
```
|
|
|
|
There is also a command to toggle this feature on and off. You may thus define
|
|
a key binding:
|
|
|
|
``` js
|
|
{ "keys": ["pick+a+shortcut"], "command": "toggle_trailing_spaces_modified_lines_only" }
|
|
```
|
|
|
|
### Trim On Save
|
|
|
|
*Default: false*
|
|
|
|
Setting this to `true` will ensure trailing spaces are deleted when you save
|
|
your document. It abides by the other settings, such as *Modified Lines Only*.
|
|
|
|
``` js
|
|
{ "trailing_spaces_trim_on_save": true }
|
|
```
|
|
|
|
### Save After Trim
|
|
|
|
*Default: false*
|
|
|
|
You may not want to always trim trailing spaces on save, but the other way
|
|
around could prove useful. Setting this to `true` will automatically save your
|
|
document after you fire the deletion command:
|
|
|
|
``` js
|
|
{ "trailing_spaces_save_after_trim": true }
|
|
```
|
|
|
|
It is obviously ignored if *Trim On Save* is on.
|
|
|
|
### Live Matching vs On-demand Matching
|
|
|
|
*Default: true (reopen ST to update)*
|
|
|
|
By default, trailing regions are matched every time you edit the document, and
|
|
when you open it.
|
|
|
|
This feature is entirely optional and you may set it off: firing the deletion
|
|
command will cause the trailing spaces to be deleted as expected even though
|
|
they were not matched prior to your request. If you are afraid of the plugin
|
|
to cause slowness (for instance, you already installed several *heavy*
|
|
plugins), you can disable live matching:
|
|
|
|
``` js
|
|
{ "trailing_spaces_enabled": false }
|
|
```
|
|
|
|
In this case, for no trailing regions are matched until you request them to be
|
|
deleted, no highlighting occurs—it is in fact disabled, regardless of your
|
|
"scope" setting. If you want to check the trailing spaces regions, you can
|
|
toggle highlighting on and off. In this case, it may come in handy to define
|
|
a binding for the toggling command. When "On-demand Matching" is on and some
|
|
trailing spaces are highlighted, added ones will obviously not be. Toggling
|
|
highlight off and on will refresh them.
|
|
|
|
### For power-users only!
|
|
|
|
#### Disabled for large files
|
|
|
|
The plugin is disabled altogether for large files, for it may cause slowness.
|
|
The default threshold is around 1 million of characters. This is
|
|
configurable (in "File Settings - User") and the unit is number of chars:
|
|
|
|
``` js
|
|
{ "trailing_spaces_file_max_size": 1000}
|
|
```
|
|
|
|
#### The matching pattern
|
|
|
|
*Default: [ \t]+*
|
|
|
|
Trailing spaces are line-ending regions containing at least one simple space,
|
|
tabs, or both. This pattern should be all you ever need, but if you *do* want
|
|
to abide by another definition to cover edge-cases, go ahead:
|
|
|
|
``` js
|
|
// *danger* will match newline chars and many other folks
|
|
"trailing_spaces_regexp": "[\\s]+"
|
|
```
|
|
|
|
About Sublime Text's built-in features
|
|
--------------------------------------
|
|
|
|
Trailing Spaces is designed to be a drop-in replacement of the limited
|
|
*Trim Whitespace On Save* built-in feature. ST is indeed able to delete
|
|
trailing spaces upon saving files, and maybe that's all you need!
|
|
|
|
In order to enable this behavior, edit "Preferences / Settings - User"
|
|
to add the following:
|
|
|
|
``` js
|
|
{ "trim_trailing_white_space_on_save": true }
|
|
```
|
|
|
|
As Trailing Spaces bypasses this setting, you will have to uninstall it to
|
|
benefit from this setting.
|
|
|
|
Made a little less obvious in the documentation are settings to showcase
|
|
whitespaces (*not only trailing ones!*):
|
|
|
|
``` js
|
|
{ "draw_white_space": "all" }
|
|
```
|
|
|
|
and to ensure a newline is kept at end of file upon saving:
|
|
|
|
``` js
|
|
{ "ensure_newline_at_eof_on_save": true }
|
|
```
|
|
|
|
The former will display *all* whitespaces in your files. There is another value
|
|
of "selection" which display whitespaces under (you got it) your current text
|
|
selection.
|