Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Saving a file in a big project locks up Sublime #37

Closed
bjnortier opened this issue Oct 3, 2012 · 4 comments
Closed

Saving a file in a big project locks up Sublime #37

bjnortier opened this issue Oct 3, 2012 · 4 comments

Comments

@bjnortier
Copy link
Contributor

I have a fairly big project and every time I save a file, Sublime locks up for about 5 seconds. I have traced it to

sublime.set_timeout(completions.compile_source, 0)

in sublimerl_completion.py:

def on_post_save(self, view):
    ...
    class SublimErlThread(threading.Thread):
        def run(self):
            # compile
            sublime.set_timeout(completions.compile_source, 0) # 
            # trigger event to reload completions
            sublime.set_timeout(completions.generate_project_completions, 0)
    SublimErlThread().start()

https://github.com/ostinelli/SublimErl/blob/master/sublimerl_completion.py#L212

I believe it's because it takes about 5 seconds for rebar to compile the whole project. Interestingly, if I remove the sublime.set_timeout and just call

completions.compile_source()

then it's fine as it's not in the Sublime GUI thread, but I presume that's not thread-safe and set_timeout is used for a reason.

Using skip_deps=true when compiling would help, but it will still lock up the UI for a second or two.

If it could be kept in the separate thread and 'skip_deps=true' it would be great. I can create a pull request.

What is the reason for using set_timeout?

@ostinelli
Copy link
Owner

Hi Benjamin,

thank you for this feedback. I had to use set_timeout previously because some sublime methods are only available from the main thread, but I've done a major code refactoring that should have got rid of those.

So please go ahead and create the pull request.

@ostinelli
Copy link
Owner

Hi @bjnortier,

should I go ahead with this or wait for your pull request? :)

bjnortier added a commit to bjnortier/SublimErl that referenced this issue Oct 5, 2012
When saving a file, "rebar compile" is run with 
skip_deps=true so that dependencies aren't 
recompiled. On on_post_save, set_timout is not 
used as it lock up the GUI thread.
@bjnortier
Copy link
Contributor Author

Created. I only changed the set_timeout calls in on_post_save, not the others as I was unsure about them

@ostinelli
Copy link
Owner

Thank you. Will review and merge asap.

ostinelli pushed a commit that referenced this issue Oct 8, 2012
When saving a file, "rebar compile" is run with
skip_deps=true so that dependencies aren't
recompiled. On on_post_save, set_timout is not
used as it lock up the GUI thread.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants