- This topic has 40 replies, 3 voices, and was last updated 5 years, 1 month ago by Brian Fernandes.
-
AuthorPosts
-
Fedor LosevParticipantHi Brian, I have a lot of detailed inputs/answers but I’m quite busy right now, so probably I’ll respond only next week.
Overall, it seems to work ok when routinely developing (hope that we’ll fix lint validations for workspace and some other first-line deficiencies). This as long as I don’t enter into huge refactoring (in particular, popping terminals and delete/move folder bugs are really problematic) and when I give it a time to settle after saving a file with large impact or massive changes.
Brian FernandesModeratorFedor,
We’re working on adding refactoring to folder move operations. However, we have been unsuccessful at replicating the issues where the move fails in between and you lose files – we’ve tried dozens of scenarios, with and without the external build tools running as well.
If/when you get some time, could you share your project structure with us? We’ve created a utility that should help you generate this. Please place it in the root directory of your project and run
java -jar analyzer.jar > out.txt
. You can download the utility here.Thanks once again for your time and invaluable feedback!
Fedor LosevParticipantHi Brian,
happy to say that I’ve managed to resolve both the editor slugginess and the folder move problems.
Editor
Seems the critical typing blocking/performance was caused by entries in the system path from Microsoft SDK containing an ancient many years old tsc. After deleting them from the system path it seems to work normally (editor typing-wise). Not sure how exactly it can conflict with CodeMix internally, since IDE is not supposed to use any system global typescript (which can vary). When I’ll have time I’ll try to reproduce this by restoring paths, to confirm this indeed was the root cause and not a coincidence. In any case, editing seems to work well enough now.
Resource move
From experiments, this is caused by particular long filesystem paths and didn’t happen anymore since moving project folder closer to drive top. Overall performance also seems tiny bit better after that (though not sure, it may be just false impression).
Some collected observations:
– moving exactly the same resources in explorer and non-CodeMix Eclipse 4.9 has no any problem
– mapping the same path to the short path with a junction point and using the project there did not solve the problem. Though note, there is another, maybe a related problem to fix: if I create junction point for node_modules directory in a project pointing to a folder on another drive, I see in code hints some paths which are to the junction target path and not the source path. I’m not sure how and with what API paths are resolved, but FS links on Windows should be completely transparent and not resolving to targets. This is not directly related to described problems, as they happen without any mapping, but maybe there is some hint in this info.
– after partial move failure, some folders remain locked for outside programs, the handle is held by angularide.exe (not CodeMix, node or shell) and it is released on IDE close.
– deleting moved empty folder (supposed to contain moved files) in IDE also sometimes results in a fail, succeeding next time
– it doesn’t fail always but frequently, only on particular folders and once happens it is consistent until close (i.e. doing git revert outside, refresh, move again – the same fail).
– on fresh project import and with watch disabled sometimes it doesn’t happen until enabling watch, though not sure, had no time to play and verify all scenarios.
– completely deleted files issue not observed anymore since I wrote previously, happened just a couple of times and I didn’t succeed to reproduce
– at some runs it didn’t show (and log) ANY errors, while silently moving only part of selected resources in the same way as before
– there is some observation from Terminal+ – frequently when I try to work there with npm, I get file errors like folder not found, can not rename the folder and so on. I don’t see these in a regular command line. Maybe this is related. Does terminal use shell that is shipped with CodeMix, does CodeMix use shell APIs, may it be some global path interference? What shell is supposed to be, I’ve got in Terminal+ MINGW64_NT-10.0 2016-09-0. I tried to change the terminal shell (something I can do easily in VSCOde) but there seems no way.
– Another weird problem that happened once in refactoring and may be related:
Had a line in a file:import { EmbeddedItemVo, EmbeddedItem, EmbeddedItemUpdateEvent }
Refactored quickly (in another file), one after another in a row with rename symbol to EmbeddedPlayItemVo, EmbeddedPlayItem, EmbeddedPlayItemUpdateEvent. Entities were renamed correctly but some imports gone wild in few files.
Result:
import { EmbeddedPlayItemEmbeddedPlayItEmbeddedPlayItemUpdateEventateEvent }
checking in local history:
1 import { EmbeddedPlayItemVo, EmbeddedItem, EmbeddedItemUpdateEvent }
2 import { EmbeddedPlayItemEmbeddedPlayItemItem, EmbeddedItemUpdateEvent }
3 import { EmbeddedPlayItemEmbeddedPlayItEmbeddedPlayItemUpdateEventateEvent }Error/problems sync is also manifested here:
Errors for corrected imports after the above do not go away and stay in problems view and editor, while watch shows 0 errors.
In addition, there are strange errors shown e.g. for the correct line
import { EmbeddedPlayItemVo }
there is the error mark:has no exported member 'EmbeddedPlayItemVorom'
(and EmbeddedPlayItemVorom is not something incorrectly typed previously, there is no and was no such name).
After IDE restart weird errors are gone but some old (non-existent) are shown. After clicking on error in the problems view, the file opens and errors in this (and only this) file go away.
The above may seem like some buffer overflows, but in Java it is something rare, may result from some JNI? If these were memory/disk failures, I expected it to manifest in other programs, no a single problem with paths or memory observed so far outside of CodeMix and disk/memory checks are fine.Move code refactor
1) file rename refactor doesn’t work as well (probably the same issue/fix).
2) note, apart from relative or absolute paths, there will be path mappings in tsconfig.json which can quite complicate the rename logic.
For example, consider the case when @a/b is mapped to B/*, there is an import @a/b/c and c is moved to another folder or renamed. There are at least three cases, the folder is still under B subtree (should change just suffix part of import @a/b/c), new parent folder is not mapped (probably should change to relative, from root or prompt) and new parent folder is under subtree of different mapped path (should change @a/b/c to appropriate new mapping from paths). Corner cases I think maybe less important as long as it handles move or rename under the same root substree including mapped paths.
The ultimate solution will be a dialog with a list of entries CodeMix can’t resolve unambiguously with possible resolutions and allowing selecting from available or typing custom for every entry. Such a thing will be very beneficial in general, as verifying imports on file modification levels after massive change is time-consuming. It will also make easier to see and report import to refactor mapping bugs or deficiencies instead of struggling and reproducing on a file level.Other
Note, problems view still seems out of sync frequently after resolving edit interruption issues. The editor sometimes also seems going out of sync regarding errors, close/open editor usually updates errors for the given file (tsc watch terminal tab output is always correct).
Another major problem I’ve encountered is that import auto suggestion seems not working robustly: create new angular project, install material, go to app.module, try to add, say, MatProgressBarModule, there is no auto import suggestion for it (nor I see other MatProgress* imports). Once I’ll add module import manually, I start to see other MatProgress* imports normally. This issue introduces a lot of friction (and it is working smoothly in other IDE). Maybe this is my environment or setup, maybe typescript version, honestly I’m running out of time to investigate every issue, it steals too much from the actual work. I’ll check again after next Codemix release, for now I’ve stopped using it.
That said, I still have a draft list of responses and collected issues, I will try to find time to organize and report them here later this week.
- This reply was modified 5 years, 2 months ago by Fedor Losev.
Fedor LosevParticipantSome answers
>> 1) can you share with us the size of your project?
The project is about 3K source files, many are just same component x4 for template, test, ts, scss in a separate folder. I’ll play with analyzer and breakdown later. Note, I experienced error sync problems in small test projects too, though very rarely.>> Also, why do you have thousands of errors / warnings active at times
It is very easy to do in a large project and is part of normal workflow. Just in one large file one can remove opening brace at the class and get hundreds errors in a blink of an eye (since now it tries to sync problems view live from the editor). Breaking some basic util or class with mass-effect can also easily affect hundred files. Of course, I don’t need to see all thousand errors at once and there is a filter in Problems view on the count.But as I said there are no critical performance-wise problems anymore (though background validation sometimes is very slow for feedback in Problems View, far after watch finished the recompilation and not always showing codemix validation progress – usually not, just doing something in background as seen by CPU level and updating after some time). I’ll play with it more when problems view sync will be fixed.
>> 2) Is the large project you are working with part of an Angular workspace?
It is upgraded from Angular 5 (worked fine in non-Codemix AngularIDE). AFAIK in 7 everything is a workspace from language services point of view, just mapped differently for an app in the root folder.>> 3) I’m assuming you have the project in question set to “always watch”?
Yes, validation and always watch are on (the whole point is to have complete report of all errros and warnings all the time live, otherwise I can use other IDE with dedicated build commands or code inspection, without any issues).4) Method/type hover tooltips … Mind sharing a screenshot of this the next time it happens?
codemix_hint_offset.png
Btw. this is one of the problems with this forum, I can’t just paste the screenshot. I have to save the image file, select it here, upload, delete the file – that is a lot. Many times I just give up on reporting a problem that requires a screenshot for understanding. I hope finally there will be some public issue tracker as this forum is just wasting our time in so many areas, it is very slow, the search is ridiculous, no preview, no image paste, no issue status and area and so on.>> 5) The screenshot you shared of the odd error truncation – are these errors from the watch process? If so, any idea if they appear as expected in the console output?
The watch console output seems to be correct. These errors I think do appear in output, in problems view itself not sure how to distinguish watch and validator, they all show as CodeMix Validation.>> 6) tsconfig handling – we delegate everything to the Angular Language Service
I see. Then there should be some way to parametrize. Using ng build CLI I can, for example, specify a configuration parameter and configuration can specify different tsConfig, among other things.
Use cases are very simple and there are many, for example
1) specify for IDE different ts config path mapping, warning/error configuraiton, include spec.ts in compilation, faster compiler flags for IDE, use local file not in SCM.
2) Make outDir of regular CLI and IDE different, they must coexist in parallel to not interfere.
…I will continue with more answers/inputs/suggestions next week.
- This reply was modified 5 years, 2 months ago by Fedor Losev.
Attachments:
You must be logged in to view attached files.
Fedor LosevParticipantAnother scenario of Problems View/editor marks out of sync is attached.
Attachments:
You must be logged in to view attached files.
Fedor LosevParticipantSyntax color loss (rare, can’t reproduce intentionally):
Did with outside shellnpm install @xx
.
CodeMix started validation.
Opened package.json – no syntax color. Validation finished – no syntax color. Close file, open file, refresh – no syntax color in this file. No errors in the log.
IDE restart – all is normal (I also note that editors are discolored during IDE initialization but briefly).By the way, Eclipse log is polluted with many messages
Error: invalid activation-data in license file; activation is invalidated
on IDE start.- This reply was modified 5 years, 2 months ago by Fedor Losev.
- This reply was modified 5 years, 2 months ago by Fedor Losev.
Attachments:
You must be logged in to view attached files.
Fedor LosevParticipantAnother case of incorrect error parsing and stale errors
Attachments:
You must be logged in to view attached files.
Brian FernandesModeratorFedor,
Very interesting (and good) news about the performance issues being caused by the older tsc – yes, it’s definitely not supposed to interfere with how CodeMix works, and if it did, that’s a bug. We’re going to look at the code to see how something external could have leaked in. Do you happen to know what version it is?
On the file move issues, it’s good to know about the long-path – that would explain where there are odd problems, as well as why we’ve been unable to reproduce locally. We’ll look into the junction/link issues you mentioned as well. Just to be clear on the number of other issues you mentioned with partial moves/failures and deletions, are those issues gone as well with a “higher” path?
The activation messages are strange because you can continue to use the IDE. I’m assuming you are using a key based license (where you enter your subscriber ID and then a code)? Can you share the error log with us?
Just wanted to mention here that we’re taking all these issues seriously, so while there may be no update on some of the issues mentioned, that only means we have no questions about them – they’re already being looked at internally.
There is a serious amount of work being undertaken right now on the build / validation / linting front in response to your feedback – both on the functionality as well as the synchronization issues you’re experiencing. We’d like to schedule a meeting with you so we can show you some of the work in progress, as well as discuss some of our future plans in this area – your thoughts would be invaluable. Would you be available for a meeting tomorrow (Tuesday) at 9 AM CDT? If not, what time would work for you tomorrow, or over the next few days? We’ll strive to keep the meeting short, as I realize you don’t have much time to spare.
Fedor LosevParticipantHi Brian,
> Do you happen to know what version it is?
It was very old, 1.0 something. Again, I’m not 100% sure it is not just a coincidence.> On the file move issues, it’s good to know about the long-path
Well, unfortunatelly the issue is back on some (aready short) folders. So it is not related, just happens less (maybe due to faster scans). I did notice that running aside cmd with ng serve, editing a file in a nested folder for few recompilations almost guarantees that moving folders with this file will fail. I’m not sure where is the bug but it seems somewhere in vs code/typescript/node stack, there are also some resembling issues like https://github.com/microsoft/TypeScript/issues/32113 reported (though my moved folders are in sources).
This is not super critical though, as refactoring is not working anyway, I do move in vscode or ws. Their refactoring is not perfect but I can live with it until codemix has the refactor and I’ll have more time to investigate locking.For editor, at times I still experience editor typing performance problem, on particular scenarios after some time working (large broken code structure in one unsaved editor and editing another file, doesn’t happen consistently and can be fine for a long time, but eventually always; need to check with profiler, maybe it fills up memory and GC starts hitting too much). It is way better than it was but sometimes still problematic. Probably the tsc above just exaggerated the symptoms. Restarting IDE helps. But there is no point to investigate more until you release improvements, maybe it is already fixed somehow.
> The activation messages are strange because you can continue to use the IDE
Indeed. Moreover, when I go to Update Lincese it shows “your commercial license expires in 18 days”. On check access, it says ready for use.
Nothing special for the license in the log beyond what I wrote:
!ENTRY com.genuitec.eclipse.code 4 0 2019-10-15 04:16:18.906
!MESSAGE Error: invalid activation-data in license file; activation is invalidated
May be reinstall will help, have no time to play with it now.>> so while there may be no update on some of the issues mentioned, that only means we have no questions about them
Yep, this is what I assumed.
Btw. another very important issue (years old, discussed in old webclipse) – angular template autocomplete and validate does not see types of container directive variables, e.g. ngFor. I was sure it is fixed in CodeMix.>> We’d like to schedule a meeting with you
Sorry, I literally have no minute for the next and probably the coming week, maybe after that. I think is also a bit counter-productive to discuss in a short meeting that many issues, each need a separate focus and thinking. I suggest that we’ll wait for the next release with improvements and discuss/report each issue here or over email which I can write up gradually in the evening.- This reply was modified 5 years, 2 months ago by Fedor Losev.
- This reply was modified 5 years, 2 months ago by Fedor Losev.
- This reply was modified 5 years, 2 months ago by Fedor Losev.
Fedor LosevParticipantSome more input on folder locking and import refactor text corruption, may give some hint:
AngularIDE is idle.
Did ‘Move Typescript’ in vscode (not codemix).
1) Files were not moved (remained where they were) despite the ‘moving’ message, but imports were refactored. Trying to move the same files in windows explorer – “file is used by another program”. Clicking Try Again several times, the same result. Closing AngularIDE (vscode stays open), without closing the Windows ‘try again’ dialog. Clicking Try again after codemix close – successfully moved.
2) Some refactored imports by vscode resemble what happened in codemix with rename I described before. Before I did move folders in vscode, with AngularIDE open, without any issues. So it is not something that reproduces consistently. Since I suppose codemix uses the same or similar extensions as vscode for refactor, it is hard to say from my side whether the root cause of text corruption is opened AngularIDE or vscode/extension bug.
Fedor LosevParticipantUpdate: for file locking, I got once the same issue in vscode. So it definitely seems like node/typescript problem (or some extension part shared between codemix and vscode). When I’ll have type I’ll try to see if upgrading or downgrading node/typescript has any effect.
Brian FernandesModeratorFedor,
Thank you for providing the additional detail, especially the comparisons with VSCode. Sorry to hear both performance and move issues are back, though thankfully to a much smaller extent. I believe a few of the move issues will go beyond VSCdoe and will be affected by node / tsc directly.
On your license issues, a re-install will likely not help. Do you have both a .webclipse.properties file and a .codemix.properties file in your home folder? Could you please PM (or email support@genuitec.com) both files to us?
On the meeting, we wanted to specifically discuss only the validation aspects, not all issues. Of course, we do realize you are extremely busy, so we can talk whenever you can make the time. Do keep the observations coming in, these insights are very handy to have.
Thanks!
Fedor LosevParticipant> Do you have both a .webclipse.properties file and a .codemix.properties file in your home folder?
Yes, I had. Removing both files / log in / check access had no effect – still shows ‘expires in 4 days’. Sending old and new file.
Fedor LosevParticipantHi Brian,
Responses:
>7) If you go to Preferences > CodeMix > Editors > Extensions > TypeScript > TypeScript/JavaScript Common, you can turn off “Suggestion Actions”, to get rid of the suggestions.
But I don’t want to get rid of suggestions, they are helpful and exist for a reason. And by doing that we’ll invalidate all your hard work for displaying them.
I would like to get rid of very specific suggestions and, ideally, to be able to control them with a comment directive for particular code, just like we can control say, tslint global rules and // disable-next-line. Or at least have some configuration to selectively suppress some suggestion types.> 8) “Back arrow”, edit button – I’m assuming you mean the button that goes to the last edit location on the toolbar? We did find this working across files. Note that this goes back only once, just like non-CodeMix Eclipse editors, so it will jump to another file only if you haven’t made edits in the current file. The other, multi-purpose back button is also able to move between files. Perhaps we’ve misunderstood what you were talking about?
I think there is some bug though can not reproduce consistently (it always happens right at the moment when I have no time to research this :). Sometimes it works sometimes it cuts the navigation history.There is also problem with Undo that may be related, most of time it works ok but there are times when undo stack is cut and doesn’t go back.
> 9) To organize TypeScript imports, you can press Ctrl + Shift + P and then “organize imports”
Thanks, that was very helpful, I forgot now we have the powers of VS Code (though there is annoying bug ignoring line length setting which also affects CodeMix, VS TypeScript hero is doing better job).
It would be nice to bind this to Ctrl+Shift+O or alike by default, to avoid extra typing (probably there is a way to bind manually? didn’t dig enough into this yet).Note, however, true organize imports (discussed before), would go a bit beyond that. The above VS functionality is what I referred to as “Remove unused imports” + some grouping/sorting. Import organizer like one in Java will also detect missing imports and pop a selector dialog to import the missing (yes, there is the single-item auto import, but it is not that handy to do many times when, say, you type A implements B,C,D). This is obviously less critical, though a very nice feature to have.
> Alternatively, if you add no-unused-declaration: true to your tslint.json – a quickfix should become available to remove unused imports.
no-unused-declaration is a different setting since it shows all unused declarations. For imports only, there is a need to override with lint extension and you even don’t support setting different lint configuration in IDE (another use case for IDE ts/angular configuration customization discussed before). Obviously I don’t want to spend time rewriting settings back and forth in git committed tslint.json. The above Organize Imports command works well enough, but I would like to see all these warnings in Problems View even if not configured by the default tslint.
Fedor LosevParticipantSome more observations (not ordered or prioritized)
codemix should use .codemix directory instead of .vscode. The same directory is opened by two IDEs and they conflict, e.g. VS Code complaints about “codemix” entries in tasks.json or changes settings.
errors on a comment in tslint.json. This should be autoconfigured depending on lint version
adding
“settings”: {
“files.associations”: {
“tslint.json”: “jsonc”
}
in Edit in settings file solves the problem but see below.Settings file above (medadata/codemix.code-workspace edited through preferences) is overridden by CodeMix on changes from UI (don’t know if any or particular), all manual entries are gone, only folders remain. I think they are also sometimes (not always) wiped out after restart but not sure.
To set different indentation for JSON one needs to edit the preferences file. This should be available from UI.
Auto import Ctrl+Space suggests imports blacklisted in tslint (and then marks them in editor “this module is blacklisted”). It should distinguish blacklisted entries with diminished color and not offer them as the first auto-suggest entries.
Auto import frequently does not see tsconfig mapped imports, e.g. @mylib/something, suggesting only projects/mylib/src instead. After working for a while and opening some files, it suddenly starts to suggest the mapped import. Additionally, when there is a mapped import it should be listed before direct source imports. Relative imports also frequently not suggested, not sure I follow the logic when they do appear and when do not.
File and folder move does not refactor imports (already discussed).
Setting “Disable build icon; trigger with Project -> Build Now with CodeMix”. There is no any “Build Now with CodeMix” in project menu.
Toggle CodeLens and start/stop watch should be available quickly in front UI without digging into the preferences, these may be frequently toggled. Ideally, such things should be configurable in a toolbar / shortcut.
Lint Quick fix ‘Disable line’ that will put above ‘tslint:disable-next-line xxx’ for appropriate rule
When specifying a non-default location for angular project it tries to create wrong project structure
New component wizard source folder: isn’t handled properly from on all levels
– Right-click on folder / New component – source folder is not populated with the selected folder, always src/app
– Source folder entered manually is not propagated to ng and has no effect
– The component is added to the top app module and not the module along the parent path
Similar problems in other New wizards e.g. service is created in workspace source root.typing bracket in the middle of condition changes the code by itself, without a suggestion list, if there is available suggestion (I think sometimes the same with dot). It does it without an exact match, replacing the code with unrelated things.
“Implement interface” assist:
– instead of inserting type and adjusting imports, inserts long “import(‘xxx’).Type” entries in method signatures. It is faster to implement manually than to fix this mess.
– Error(“Method not implemented.”) is with double quotes not respecting project settingsError tooltips\popups (yellow) sometimes do not wrap text and go window-wide in a single line. Long line is hard to read and this requires h-scroll to read in full if it overflows.
Autocomplete for functions/methods should provide list of signatures and insert a boilerplate of a parametric call
No navigation to code from directive as attribute e.g. in <div my-directive>
Still no warning on binding to unknown output
<mat-select (kuku)=
(as I said before this is very important validation, consider the brutal case angular material 6 removed change event from mat-select and broke hundreds of our templates without any hint for this in IDE; this may be language service miss in the first place but understanding doesn’t help with the problem).How to switch application in the workspace – angular.json default is nice but in IDE one frequently switches applications, in cli one can specify a parameter.
Related: how to work simultaneously on two applications from the same workspace.
In general, angular workspace with libraries and projects probably requires some re-thinking of how to support it well in IDE.Renamed file doesn’t save:
Edit some file. Rename the file without saving. All looks fine. Ctrl+S doesn’t work. Close editor, click Yes after prompt to sve Open file – all edited changes are gone.Red error mark on Problems View tab that has errors sometimes doesn’t appear until selecting the tab (showing previous mark e.g. warning before switching to the tab).
Code assist provides a long list of possible imports (capitalized) and only after them existing variables in near scope. It should place near context suggestions first, especially fields in a class scope.
angular.json is not validated/checked against workspace, e.g. if I delete a library folder I don’t see any warning in IDE for the entry with invalid paths.
New Llibrary wizard parameters have no effect, all seems to be created as without parameters.
@ or / in library name show ‘invalid name’. cli handles @ and / well.
entryFile default I think is public-api, wizard shows public_api.One moment messed with angular.json, at some point it started to open non-editable and non-colored (with JSON:Codemix, plain text editor is editable).
Log: java.util.concurrent.ExecutionException: java.lang.RuntimeException: No editor for path c:\xxx\angular.json
at ViperService.getEditorInfo com.genuitec.eclipse.code.engine.app.win32.x86_64_3.5.0.201909201758/engine/resources/app/out/vs/workbench/workbench.main.js
IDE restart kept the same. Corrected json outside – everything works. Unfortunately, I didn’t keep the content that caused this (as it seems to be triggered by a particular broken JSON).Terminal+ – not possible to create more than one view (or, at least, rearrange terminal tabs side by side h/v so there are two terminals).
Fix missing whitespace – there should also be something like fix all whitespaces in a line (or better a shortcut to auto-format only current line; I know that I can select and format).
Terminal+ for some tasks shows ‘terminal will be reused, press any key to close’ but nothing happens on pressing any key. If I understand properly the message comes from VS Code underlying (and in VS it closes the terminal.
Git status update seems to be blocked by validation/compilation, etc. It shouldn’t be related in any way to the code and reflect immediately.
Learn more -> opens .project file through shell (unfortunately, I can’t recall in what context I got this “Learn more”)
Extensions/gear icon / about – tries to open non-existent file with shell, same for play video in codemix welcome
It would be nice to have ng serve integrated as a project watch instead of tsc watch (though not sure it can replace).
CodeMix Validation pause/resume (that doesn’t start from scratch).
Watch pause/resume (similar to on/off above but I think these are different: off closes terminal tab, pause/resume reuses terminal tab).When import coincides with local or field value the value is not shown in auto assist (only imports).
I have some more inputs/thoughts but I’ll organize them after checking on the coming release.
-
AuthorPosts