stefanceriu / SCXcodeMiniMap

Sublime Text like Minimap for Xcode
GNU General Public License v3.0
1.03k stars 91 forks source link

SCXodeMiniMap makes Xcode slower #80

Open Bluelich opened 8 years ago

Bluelich commented 8 years ago

The plugin list that used by me is below: { Alcatraz ColorSenseRainbow DBSmartPanels DerivedData Exterminator DXXcodeConsoleUnicodePlugin FuzzyAutocomplete HOStringSense JSFormatter Lin MCLog OMQuickHelp Peckham RTImageAssets SCXcodeEditorInset SCXcodeMinimap VVDocumenter-Xcode XAlign } When I remove SCXodeMiniMap, Xcode works well.

The version of my mac is 10.11.3, and my Xcode is version of 7.2(7C68).

stefanceriu commented 8 years ago

I does indeed make Xcode slower, mainly because of the larger amount of text that it now needs to syntax highlight, but, unfortunately, I haven't found any suitable solution to improve the performance and I had to settle on delaying when the text is invalidated. If you have any ideas pull requests are more than welcome.

dzenbot commented 8 years ago

What if we MiniMap didn't do any syntax highlight? That could help a lot, isn't it?

stefanceriu commented 8 years ago

Absolutely. You can give it a try by replacing the the layoutManager's shouldUseTemporaryAttributes delegate method with something along these lines:

- (NSDictionary *)layoutManager:(NSLayoutManager *)layoutManager
   shouldUseTemporaryAttributes:(NSDictionary *)attrs
             forDrawingToScreen:(BOOL)toScreen
               atCharacterIndex:(NSUInteger)charIndex
                 effectiveRange:(NSRangePointer)effectiveRange
{
    SCXcodeMinimapTheme *theme = ([layoutManager isEqualTo:self.textView.layoutManager] ? self.minimapTheme : self.editorTheme);
    return @{NSForegroundColorAttributeName : theme.sourcePlainTextColor};
}