Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
KSImageNamed
normally hooks intotextViewShouldChangeTextInRange:replacementString:
, which causes a lot ofKSImageNamed
methods to be hit every time the text view changes.Here is a paste of Obj-C message sends matching KSImageNamed when I press
Return
only once on an empty line: https://gist.github.com/chendo/7130668After poking around in
DVTTextCompletionController+KSImageNamed
and looking at the trace, it seems thatreplacementString
is never nil (at least in Xcode 5.0.1), which is causingimageCompletions
to be enumerated every single time text changes.This would be particularly bad in a project with many image assets.
This PR removes the textView swizzle and hooks into
DVTTextCompletionListWindow
'sshowInfoPaneForCompletionItem:
and_hideWindow
methods, soKSImageNamed
is only run when necessary.Below is the remaining Obj-C message sends matching KSImageNamed when pressing
Return
once on an empty line after applying this PR:I've only tested this on Xcode 5.0.1.