Zinggi / UnrealScriptIDE

Auto-completion, Syntax Highlighting, Go to Declaration, Build and Run and more..
Other
90 stars 19 forks source link

Crash on OnlineSubsystemSteamworks.uc #21

Closed Zinggi closed 10 years ago

Zinggi commented 10 years ago

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 ?

EliotVU commented 10 years ago

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>
Zinggi commented 10 years ago

Awesome, thank you very much!!!

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

EliotVU commented 10 years ago

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

EliotVU commented 10 years ago

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

Zinggi commented 10 years ago

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

EliotVU commented 10 years ago

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

Zinggi commented 10 years ago

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