Zinggi/UnrealScriptIDE

Crash on OnlineSubsystemSteamworks.uc

Zinggi opened this issue · 7 comments

There seems to be a major bug when you try to open:
"Development/Src/OnlineSubsystemSteamworks/Classes/OnlineSubsystemSteamworks.uc"

Sublime just crashes.

My guess is that there is some regex in the .tmLanguage file that is stuck in an infinite loop.

Why am I pretty sure that it's the .tmLanguage file that's causing it?

Well with ST3, it tries to index the files for its new goto definition feature, but gets stuck at this file, reporting: "worker 2448 appears stuck while processing file /C/UDK/UDK-2013-02/Development/Src/OnlineSubsystemSteamworks/Classes/OnlineSubsystemSteamworks.uc, killing process"

Also there seems to be other evidence that that might be the issue:
http://www.sublimetext.com/forum/viewtopic.php?f=3&t=671

Since you know the ins and outs of this file, could you have a look at it, @EliotVU ?

I have found the source of this issue, apparently if you write an "implements" specifier on several lines it'll never find the ending ")" and thus loops infinitely, I fixed this by just appending two question marks for the ending ")" and another group to keep the style coloring working.

Code:

    <dict>
        <key>captures</key>
        <dict>
            <key>1</key><dict><key>name</key><string>storage.modifier.source.uc</string></dict>
            <key>3</key><dict><key>name</key><string>storage.type.source.uc</string></dict>
        </dict>
        <key>match</key>
        <string>(?i:(dependson|implements|classgroup))(\s*?\((?'CLASS_NAME'\s*?([a-z-A-Z_][a-z-A-Z_0-9]+)\s*?,?)\g'CLASS_NAME'*\s*?\)?)?</string>
    </dict>

    <!-- Any modifier with multiple NAME parameters such as HideCategories(Don't put Var(...) in here because that's an declaration!) -Eliot -->
    <dict>
        <key>captures</key>
        <dict>
            <key>1</key><dict><key>name</key><string>storage.modifier.source.uc</string></dict>
            <key>3</key><dict><key>name</key><string>string.quoted.single.uc</string></dict>
        </dict>
        <key>match</key>
        <string>(?i:(hidecategories|showcategories|autocollapsecategories|dontautocollapsecategories|autoexpandcategories|dontsortcategories))(\s*?\((?'CLASS_NAME'\s*?([a-z-A-Z_][a-z-A-Z_0-9]+)\s*?,?)\g'CLASS_NAME'*\s*?\)?)?</string>
    </dict>

Awesome, thank you very much!!!

Could you send a pull request so I can merge it?

Didn't use that setup, just edited your code without a repository, as it was easier to test for me that way.

Let me see if I can update my Forked repository, I quite forgot how.

Alright, then I'll just copy your changes.
Again thanks a lot!

Okay, well damn I just got my request working oh well, not of importance anymore.

Sorry, I thought it would be more convenient that way...
Hope you don't mind XD