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

Separate Scala REPL enhancements into a separate plugin (REPkeLe) #484

Closed
nikke234 opened this issue Jan 20, 2021 · 2 comments
Closed

Separate Scala REPL enhancements into a separate plugin (REPkeLe) #484

nikke234 opened this issue Jan 20, 2021 · 2 comments
Labels
low low priority issue

Comments

@nikke234
Copy link
Contributor

The Scala REPL additions are nice, but they are also very specific to O1 and Scala. They make it more challenging to add support for courses that use other programming languages than Scala. They are also one of the main (but not the only) reasons that we have a dependency on the Scala plugin. The REPL modifications can also be distracting to users who want to use the plugin for a course, but don't need the REPL additions. Furthermore, the REPL improvements are the only part of our code base that is written in Scala, while everything else is written in Java.

Separating the Scala REPL enhancements into a separate plugin would fix the aforementioned issues. It would also add other benefits, such as the ability to make updates to the REPL functionality without publishing an update of the current plugin. IntelliJ also handles plugin dependencies in a very user-friendly way now, so having them separate shouldn't cause issues for students.

The REPL functionality currently has the following dependencies on other plugin functionality:

  1. The initial commands that are executed when the REPL is launched are read from the course configuration file.
  2. The REPL defaults to the first auto-installed module if no module is selected while launching the REPL.

The suggested solutions are as follows:

  1. Put initial commands into a specially named file inside modules, such as .initial-commands. The current implementation already creates a file like that for the initial commands, so this would be very easy. It also doesn't really impose an additional burden on the course teacher, since currently the teacher has to write the initial commands in the course configuration file.
  2. If no module is selected, show the module selection dialog that is already available (but usually not shown).

I would suggest the following roadmap for this:

  1. Create a new plugin with the REPL functionality (written in Scala).
  2. Publish the plugin and ensure that everything works.
  3. Remove the REPL functionality from this plugin (and as a nice side effect, get rid of Scala code and things related to it, such as scalastyle).
@superseacat
Copy link
Member

@superseacat superseacat changed the title Separate Scala REPL enhancements into a separate plugin Separate Scala REPL enhancements into a separate plugin (REPkeLe) Feb 12, 2021
@nikke234 nikke234 removed their assignment Feb 23, 2021
@stellatsv stellatsv added the low low priority issue label May 14, 2021
@stellatsv stellatsv added this to the Support for Python courses milestone May 14, 2021
@OlliKiljunen
Copy link
Member

If reconsidered some time, reopen the issue or create a new.

@OlliKiljunen OlliKiljunen closed this as not planned Won't fix, can't repro, duplicate, stale Sep 29, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
low low priority issue
Projects
None yet
Development

No branches or pull requests

4 participants