Dotneteer / spectnetide

ZX Spectrum IDE with Visual Studio 2017 and 2019 integration
MIT License
205 stars 27 forks source link

Font coloring all messed up in code editor #191

Closed Angel996 closed 4 years ago

Angel996 commented 4 years ago

Hi

Sorry, I'm new to Visual Studio, I don't know whether it's up to extension or VS itself. But whenever I start typing in some text in code editor, keyword/operand coloring gets all messed up, example attached. What i just did is typed: "_playerbuffer: defw #E000". I have a feeling it gets worse as code size grows. Also, from time to time typing becomes slow, text appears with a noticable lag in reference to keys typed.

specnetide_font_colors

I think the lag is actually caused by text coloring mechanism. Is it possible to turn it off completely? I mean, not set all text to same color (I know how to do it), but disable the very algorithm that parses code and detects keywrods?

Dotneteer commented 4 years ago

@Angel996, text editing should not work like this. Please, zip the project source code and attach to this conversation so that I can examine it and resolve the issue. If you do not want to uploat the project to Github, you can contact me: dotneteer@hotmail.com.

Angel996 commented 4 years ago

Actually I realized, the problem is with great lags of the code editor. Keyword coloring just takes forever to update. It seems the error is cumulatative: the more manual code edits I do (I don't turn off my PC for the night and I don't close the VS), the more lagged text editor becomes. After running for a few days it becomes so slow, I have to close and reopen the project, otherwise after typing a word I have to wait a couple of seconds for it to appear. I have a feeling it's somehow related to the emulator consuming resource and memory (I might be wrong though). I'll make a video a bit later.

My question for now, is it possible to completely disable keyword coloring? I'm sorry, but IMHO it's a pretty useless feature. I mean, actually disable the script responsible for it.

My config is Core i5 4590, 18gb RAM, running Windows 10

Dotneteer commented 4 years ago

@Angel996, right now, you cannot disable syntax highlighting. Any details and information that could help me investigate the issue would be great. Soon, I will create a private build for you with disabled syntax highlighting just to check it that is the core issue, or something else.

Dotneteer commented 4 years ago

@Angel996, here I send you the private build I promised. Please, rename the .zip to .vsix to install.

Spect.Net.VsPackage.zip

Now, you can use the Tools|Options dialog to turn on/off Z80 Assembly syntax highlighting:

devenv_BQ5660Kjwy

While examining this issue, I experienced that the VS engine behind slows down syntax rendering pretty much. I did not have this issue i few months ago, so there might have been changed something in VS that causes such a problem. Nonetheless, I try to find the reason an create a workaround or solution soon. Unfortunately, new VS releases often raise issues the fixes in a patch later, just like in case of #178.

I will return to you with any news.

Angel996 commented 4 years ago

Thanks, installed, working.

Dotneteer commented 4 years ago

@Angel996, I managed to find an excellent workaround for the VS IDE issue with Z80 Assembly syntax highlighting. Here I send you the private build with the fix. Please, give it a chance, and turn back syntax highlighting. I did smoke-testing with a file more than 20,000 lines. Should you find any issues, please, report it to me with such useful details as you did it before :-).

Spect.Net.VsPackage.zip

Angel996 commented 4 years ago

I think the problem is partly solved, syntax highlighting works as intended now. However, the lags grow as it all runs. When I start VS, load my project, compile, inject and run the emulator, it all takes up ~250 MB of RAM. By the end of the day Task Manager reports 786 MB RAM usage by VS. At that very time code editor is very lagged, typed text takes time to appear on screen, and it takes around 10 sec to compile, inject and run the same ZX code. So I still have to restart the VS and reload the project once every 5-6 hours to get it back to normal.

The way I use it, is I right-click the .z80asm file and choose Run program. I don't stop the emulator, just run over the previous code. During the day I might do this really a lot. Could it be, a new instance of the emulator is started every time and the old one not discarded?

Maybe I am supposed to close the emulator every time before I recompile the code? Did not occur to me. :)

Dotneteer commented 4 years ago

@Angel996, thanks for the diagnosis! I try to use several tools and discover how the memory consumption goes up. Hopefully, that will give me a clue where should look for the source of the issue. You're not supposed to stop the emulator.

Dotneteer commented 4 years ago

Features and fixes released in Preview 8.