pichillilorenzo / JavaScriptEnhancements

JavaScript Enhancements is a plugin for Sublime Text 3. It offers not only a smart javascript autocomplete but also a lot of features about creating, developing and managing javascript projects (real-time errors, code refactoring, etc.).
MIT License
638 stars 41 forks source link

High CPU usage issue #50

Open alexbet opened 6 years ago

alexbet commented 6 years ago

Actual Behavior

Many times CPU goes to 100% when saving an SCSS file for some reason and locks SublimeText for 5-10 seconds. At the time that his happens, I can see that a process called "plugin_host" which is a Sublime process use up 100% of the CPU. If I disable the Javascript Enhancements plugin, everything is normal. Very weird because the SCSS file has nothing to do with Javascript.

Sublime Text console logs

PARSING SAVED VIEW Traceback (most recent call last): File "/Applications/Sublime Text.app/Contents/MacOS/sublime_plugin.py", line 389, in run_callback expr() File "/Applications/Sublime Text.app/Contents/MacOS/sublime_plugin.py", line 488, in run_callback('on_modified', callback, lambda: callback.on_modified(v)) File "/Users/AlexBet/Library/Application Support/Sublime Text 3/Packages/SublimeCodeIntel/SublimeCodeIntel.py", line 1439, in on_modified sublime_scope = getSublimeScope(view) File "/Users/AlexBet/Library/Application Support/Sublime Text 3/Packages/SublimeCodeIntel/SublimeCodeIntel.py", line 394, in getSublimeScope return view.scope_name(pos) File "/Applications/Sublime Text.app/Contents/MacOS/sublime.py", line 873, in scope_name return sublime_api.view_scope_name(self.view_id, pt) UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 4: invalid start byte Traceback (most recent call last): File "/Applications/Sublime Text.app/Contents/MacOS/sublime_plugin.py", line 389, in run_callback expr() File "/Applications/Sublime Text.app/Contents/MacOS/sublime_plugin.py", line 488, in run_callback('on_modified', callback, lambda: callback.on_modified(v)) File "/Users/AlexBet/Library/Application Support/Sublime Text 3/Packages/SublimeCodeIntel/SublimeCodeIntel.py", line 1439, in on_modified sublime_scope = getSublimeScope(view) File "/Users/AlexBet/Library/Application Support/Sublime Text 3/Packages/SublimeCodeIntel/SublimeCodeIntel.py", line 394, in getSublimeScope return view.scope_name(pos) File "/Applications/Sublime Text.app/Contents/MacOS/sublime.py", line 873, in scope_name return sublime_api.view_scope_name(self.view_id, pt) UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 4: invalid start byteeventual errors -->

Specifications

pichillilorenzo commented 6 years ago

I can't get this scenario! On my Mac I don't have this problem. Do you have some other plugins for scss files?

alexbet commented 6 years ago

The only ones I use are these: https://packagecontrol.io/packages/Sass https://packagecontrol.io/browse/authors/Kenneth%20Skovhus

Just FYI, this doesn't happen all the time, but sometimes only, but I can't predict when it will happen. It may also be helpful to know that my files are on a mounted network drive. It is weird that this doesn't happen on Javascript files or any other files. I am really confused why your plugin will have anything to do with SCSS files.

I love your plugin! I just hope I can somehow solve this so I can use it.

pichillilorenzo commented 6 years ago

Ok ok.. This is weird because I don't consider scss files on my plugin, so it has no sense to happen. I will try to check about it! Thanks

alexbet commented 6 years ago

Could it be some conflict with the the SCSS plugin?

pichillilorenzo commented 6 years ago

I don't know but it could be

trongthanh commented 6 years ago

I can reproduce this with normal CSS files.

Here's my related console error logs:

PARSING SAVED VIEW
Traceback (most recent call last):
  File "/Applications/Sublime Text.app/Contents/MacOS/sublime_plugin.py", line 462, in run_callback
    expr()
  File "/Applications/Sublime Text.app/Contents/MacOS/sublime_plugin.py", line 569, in <lambda>
    run_callback('on_modified', callback, lambda: callback.on_modified(v))
  File "/Users/thanh/Library/Application Support/Sublime Text 3/Packages/JavaScript Enhancements/src/listeners/completion.py", line 333, in on_modified
    if scope.endswith(" punctuation.dollar.js") or view.substr(view.word(sel.begin()-1)) == " $" or view.substr(view.word(sel.begin()-1)) == "\n$":
  File "/Applications/Sublime Text.app/Contents/MacOS/sublime.py", line 845, in substr
    return sublime_api.view_cached_substr(self.view_id, x.a, x.b)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
Traceback (most recent call last):
  File "/Applications/Sublime Text.app/Contents/MacOS/sublime_plugin.py", line 462, in run_callback
    expr()
  File "/Applications/Sublime Text.app/Contents/MacOS/sublime_plugin.py", line 569, in <lambda>
    run_callback('on_modified', callback, lambda: callback.on_modified(v))
  File "/Users/thanh/Library/Application Support/Sublime Text 3/Packages/JavaScript Enhancements/src/listeners/completion.py", line 333, in on_modified
    if scope.endswith(" punctuation.dollar.js") or view.substr(view.word(sel.begin()-1)) == " $" or view.substr(view.word(sel.begin()-1)) == "\n$":
  File "/Applications/Sublime Text.app/Contents/MacOS/sublime.py", line 845, in substr
    return sublime_api.view_cached_substr(self.view_id, x.a, x.b)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
pichillilorenzo commented 6 years ago

@trongthanh I think that this is a bug of a function of Sublime Text API: view.substr(). In case, can you post here or send me the css file that causes that? @alexbet also you, can you post here or send me the scss file that causes that?? Thanks!

alexbet commented 6 years ago

Hey @pichillilorenzo , here is a file that does this. However, basically any SCSS file does it.

main.scss.zip

alexbet commented 5 years ago

@pichillilorenzo, any news on this? I still can't use your plugin because of this and I really want to use it. Is there any way that you can disable scanning of Scss and Sass files?