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

Support XS6 #45

Merged
merged 6 commits into from Nov 14, 2016
Merged

Support XS6 #45

merged 6 commits into from Nov 14, 2016

Conversation

@rdavisau
Copy link
Collaborator

@rdavisau rdavisau commented May 12, 2016

(Not ready to merge!)

This PR aims to update Continuous to support XS6 by making the changes required to support the new Roslyn based architecture. It addresses #43. As I understand it, we need to do the following:

  • Update non-core code to be compatible with changes in the v6 IDE apis
  • Modify the ContinuousEnv.MonoDevelop.cs file to add Rosyln-based type identification
  • Modify the ContinuousEnv.MonoDevelop.cs file to add Roslyn-based watch expression functionality
  • Test it all properly, make sure things still work as expected
  • Check this doesn't break the VS side of things

To get it up and running, I skipped the watch expression functionality, so at this point we have working live-reload that I have tested in basic scenarios. I will look to add back the watch functionality and test it in more complicated ways in the coming days; to me it all looks pretty achievable.

With XS6 support we will finally have the holy grail -- live reload + dark theme support. The future really is now!

@rdavisau
Copy link
Collaborator Author

@rdavisau rdavisau commented May 13, 2016

Ok - I've added back the watch functionality for declarations/assignments and it looks to be working well. As with the live reload I haven't tested it in anger though.

I have to confess I'm not sure what these lines handle, and my XS5 setup is too busted for me to experiment with it. If you let me know what that block does, I can include it here. 🎉

Loading

@rdavisau
Copy link
Collaborator Author

@rdavisau rdavisau commented May 14, 2016

Naively I had ignored the dependency identification problem and that became clear after some testing 🚑. I have added that in - with a potentially controversial deviation from the original. The "dependencies" are taken at the document root, rather than within declaration. This is incorrect (not all the types identified are dependencies), but in testing it results in a more resilient/longer lived coding session because adding new files or classes does not require a reload. I don't believe this was possible previously without nesting the class in an already 'known' class.

I haven't noticed any issues with this less targeted approach; but I'll keep testing to see whether it is a reasonable change to make. Also interested in your views on it!

Loading

@SmartyP
Copy link

@SmartyP SmartyP commented Jul 21, 2016

Is this in a usable state currently with XS6?

Loading

@rdavisau
Copy link
Collaborator Author

@rdavisau rdavisau commented Jul 22, 2016

Howdy - I just pushed a change to the version of XS that the addin targets - with that you can build this branch and install the add in manually. I use it most days. Because of the comment above, it is a little 'greedier' than the XS5 version, but there is only one line to change in the source if you prefer the old behaviour.

Loading

@praeclarum
Copy link
Owner

@praeclarum praeclarum commented Nov 14, 2016

❤️❤️❤️

Loading

@praeclarum praeclarum merged commit 154891d into praeclarum:master Nov 14, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

3 participants