Is there a way to force Xcode to trim trailing whitespaces when I save file?
I'm using version 3.1.3 if that matters.
Is there a way to force Xcode to trim trailing whitespaces when I save file?
I'm using version 3.1.3 if that matters.
You can create a script and bind it to a keyboard shortcut:
Then enter the following script:
#!/usr/bin/perl
while (<>) {
s/\s+$//;
print "$_\n";
}
Starting from Xcode 4.4 whitespaces will be trimmed automatically by default, unless the line is all whitespace. You can also activate Including whitespace-only lines
to fix this, which is not active by default.
Go to Xcode > Preferences > Text Editing > While editing
ctrl-i
on all existing files takes care of trailing whitespaces –
Suppurative I'm using the Google Toolbox For Mac Xcode Plugin, it adds a "Correct whitespace on save" parameter that trim trailing whitespace on save. I missed that a lot from emacs.
~/Library/Application Support/Developer/Shared/Xcode/Plug-ins
(as per Google's instructions) I had to put it in /Applications/Xcode.app/Contents/PlugIns
and restart Xcode. –
Columbia You can create a script and bind it to a keyboard shortcut:
Then enter the following script:
#!/usr/bin/perl
while (<>) {
s/\s+$//;
print "$_\n";
}
I find using the new Automatically trim trailing whitespace -> Including whitespace-only lines
as suggested by @MartinStolz works well while editing but I sometimes need to do Cmd + a -> Ctrl + i and save the file multiple times with the file in focus when I'm not editing.
In case you want to clean a whole project (excluding .md
files) without using scripts, you can also do a Find & Replace -> Regular Expression
. Since this technique removes trailing space and tabs for documentation/comments as well, you can also try a negative lookahead for blacklisted characters to filter out single-line comments.
[\t ]+$
^(?!.*\\\\)[\t ]+$
<nothing>
So linting can also be done without swiftlint autocorrect
or similar third party solutions.
For Xcode 8, I installed the swimat Xcode plug-in, for formatting Swift code, which removed all trailing spaces and whitespace-only lines.
Install via homebrew-cask:
brew cask install swimat
Download the App directly:
https://github.com/Jintin/Swimat/releases/download/v1.3.5/Swimat.zip
Clone extension
branch and archive to Mac App.
Once installed, you can run Swimat in Xcode via Editor -> Swimat -> Format
.
This is not possible in Xcode 3.2
Edit:
I answered this question so briefly because there's no way to do this properly.
Of course, since it's software, you can do anything: Starting with Input Manager hacks or other ways of code injection to system wide keyboard interception, you can alter your local system to do anything anytime. You could set up an Applescript folder action (arrgh) or use a launch demon and the FSEvents facility to watch your source code files.
You can also add a couple of scripts to Xcode (user scripts in the menu, script phases in targets, custom Actions in the organizer, there's even the very unknown possibility a startup script), but all these solutions are flawed, since it involves the user or custom setup on the user's machine.
I'm not aware of a solution which simply works after checking out a project from SCM. I believe that there's need for this and similar customization scripts, so I filed a bug (radar 7203835, "Feature: more user script triggers in Xcode workflow"). I did not receive any feedback yet.
Here's the full text of the radar entry:
It would be useful to have more places to run scripts in Xcode.
Examples:
Pre build scripts
Pre build scripts could be used to build prerequisites like *.xcconfig files or config.h headers. This is not possible with a "Run Script Build phases", since dependency tracking takes place before any build phase is triggered.Post build scripts
Similar to above, but running after the build finished (including code signing etc). Useful for additional packaging, validity checking etc.Pre/Post SCM Commit scripts.
To check project integrity.Pre/Post File Save Script.
To check/alter a file before saving. E.g. run cody beautifiersCustom project actions.
I'm aware of the organizer's ability to define arbitrary actions. But this is a per user feature (not part of the project). I'd like to define actions like build or clean that show up in the build menu and that are part of a project.
See here for Xcode4: http://www.wezm.net/technical/2011/08/strip-trailing-whitespace-xcode-4/
Cool, Google toolbox for Mac now adds a "trim whitespace" option for Xcode4.
http://code.google.com/p/google-toolbox-for-mac/downloads/list
Thanks you, Google!
The best and easy way without using scripts, hacks and much more.
Just go to Find And Replace
and press alt/option + space
and press space
button in the replace bar and then click on replace all.
It will replace the whitespaces with normal spaces and the warning/ error will be gone !!
One way not perfect but it's working is to use Find and Replace. Find double space and replace with nothing. And after that Command+A and Control+I.
As I said is not perfect maybe you need to fix something, but for me worked.
Adding one more thing to @Martin Stolz answer, This won't work automatically for the old existing files, To have it work you will need to do an extra step which is cutting all the code in the file and paste it once again.
© 2022 - 2024 — McMap. All rights reserved.