WezM.net Menu

Strip Trailing Whitespace in Xcode 4

Published on Sun, 28 August 2011

Xcode has a bad habit of adding trailing whitespace to code, which is a pet peeve of mine. It introduces irrelevant changes into diffs and is particularly glaring when commiting code with GitX, which highlights it in red. In TextMate and now Vico I have bound the strip trailing whitespace in current document action to ⌃⌥⌘S (control-option-command-s). This makes it quick and easy. Xcode makes adding these types of actions a bit harder but I came up with a solution that uses the Behaviours functionality in Xcode 4. This is how I did it:

Create a shell script that invokes sed on each git tracked file that is modified. Since Xcode doesn’t tell the script what the current file was and I didn’t want to run sed over every file every time, processing tracked files with modifications was the best solution I could come up with. Note that the script also only prcocesses .m and .h files. I have my copy of the script in ~/Documents/strip.sh, be sure to give it the execute permission.

Next you need to add a behaviour to Xcode. Go to the Xcode preferences and click the Behaviours section, then click the + button. Name the behaviour and give it a keyboard shortcut. In the right pane check Run and choose the script you saved above. That’s it. Now you can kill off that nasty whitespace with ease.

Xcode 4 Behaviours Preferences

Something to Add?

Contact me by email or Twitter if you have a comment, correction or just want to get in touch.