TextMate 2 bundle: Strips trailing whitespace from current document when saving. Works nicely with my Save On Focus Lost bundle.
- If you need whitespace highlighting, check Mads Hartmann's superb Whitespace bundle.
- If you happen to need new lines at EOF, then check Mike Szyndel's Ensure New Line at the EOF bundle, which is based on mine.
- Clone the git repo to
~/Library/Application\ Support/TextMate/Bundles/Strip-Whitespace-On-Save.tmbundle
- Relaunch TextMate 2
Customizing the bundle is easy.
Suppose you want to avoid stripping white space on some specific files (like CSV and YAML). Just add the following to your .tm_properties
file:
[*.csv]
scopeAttributes = attr.keep-whitespace
[*.yml]
scopeAttributes = attr.keep-whitespace
If you wanted to preserve whitespace for that messed-up whitespace project of yours, just drop this in its .tm_properties
file:
scopeAttributes = attr.keep-whitespace
Of course, you can combine those two approaches for complete control over whitespace-stripping!
If you want to know which scope corresponds to each language, just hit ^⇧P (Show Scope) on a document of that type, and you'll get a nice tooltip with the scope namespaces that apply at the current cursor's position.
If you can't (or don't want to) use .tm_properties
files, just open the Bundle Editor (Bundles menu ▶︎ Edit Bundles... or pressing ^⌥⌘B) and add -text.tabular.csv
in the command's Scope Selector field:
- To exclude multiple file types, just add
(space)-scope.namespace
. For example, to exclude CSV and YAML, write:-text.tabular.csv -source.yaml
. - To work only on specific file types, use the namespace only, without the minus sign (e.g., to strip only CSV files, write
text.tabular.csv
). - To include multiple file types, just add them separated by comma (i.e:
text.tabular.csv, source.yaml, text.html.markdown
).
You need to be using at least TextMate version 2.0.0-alpha.9317.
To get the most recent nightly build, open Preferences ▶︎ Software Update and ⌥-click the "Check Now" button . This will grab the latest version, rather than the one you get by just clicking the button.
Enjoy!