This file is for contribution guidelines specific to the JetBrains extension. See the root
CONTRIBUTING.md
for general contribution guidelines.
This extension shares much of the code with the VS Code extension by utilizing shared code in the core
directory and
packaging it in a binary in the binary
directory. Communication occurs over stdin/stdout.
Continue is built with JDK version 17 (as specified in ./build.gradle.kts
), which can be
downloaded from Oracle.
We recommend using IntelliJ IDEA, which you can download from the JetBrains website.
Both Ultimate and Community (free) editions are suitable for this project, although Ultimate has better debugging (see notes below).
- Enable code formatting on save:
Settings | Tools | Actions on Save | Reformat code
This project requires Node.js version 20.11.0 (LTS) or higher. You have two options for installation:
- Download and install directly from nodejs.org.
- If you're using NVM (Node Version Manager), set the correct Node.js version for this project by running
nvm use
in the project root.
- Unix:
./scripts/install-dependencies.sh
- Windows:
.\scripts\install-dependencies.ps1
- Ensure that you have the Gradle plugin installed
Select the Run Continue
task in the top right corner of the IDE and then select the "Debug" option.
In community edition, use
Run Continue (CE)
instead, which uses shell scripts instead of Ultimate-only node configs. If you want to debug the core in CE, you'll need to quit theStart Core Dev Server (CE)
process and run the core in a different environment that supports debugging, such as VS Code (Launch "Core Binary").
This should open a new instance on IntelliJ with the extension installed.
When running the Start Core Dev Server
task, we set the location of your Continue directory to
./extensions/.continue-debug
. This is to
allow for changes to your config.json
and other files during development, without affecting your actual configuration.
When using the Run Continue
task, we automatically run a script that outputs logs into the "Prompt Logs" terminal tab.
Alternatively, you can view logs for a particular IDE instance by selecting Help
-> Open Log in Editor
in the window
toolbar.
extensions/intellij
: Attempt to reload changed classes by selecting Run | Debugging Actions | Reload Changed Classes`- This will often fail on new imports, schema changes etc. In that case, you need to stop and restart the extension
gui
: Changes will be reloaded automaticallycore
: Runnpm run build
from thebinary
directory (requires restarting theStart Core Dev Server
task)
extensions/intellij
: Breakpoints can be set in Intellijgui
: You'll need to set explicitdebugger
statements in the source code, or through the browser dev toolscore
: Breakpoints can be set in Intellij (requires restarting theStart Core Dev Server
task
To see the list of Gradle tasks available, you can run the following:
./gradlew tasks
A handful of the most relevant tasks are outlined below:
build - Assembles and tests this project.
clean - Deletes the build directory.
dependencies - Displays all dependencies declared in root project 'continue-intellij-extension'
runIde - Runs the IDE instance with the developed plugin installed.
verifyPluginConfiguration - Checks if Java and Kotlin compilers configuration meet IntelliJ SDK requirements
- Unix:
./gradlew buildPlugin
- Windows:
./gradlew.bat buildPlugin
This will generate a .zip file in ./build/distributions
with the version defined in
./gradle.properties
- Navigate to the Plugins settings page (Settings | Plugins)
- Click on the gear icon
- Click Install from disk and select the ZIP file in
./build/distributions
The e2e tests are written using intellij-ui-test-robot. The README for this project has a lot of helpful info on how to use the library.
If you are on macOS, you'll need to give IntelliJ permission to control your computer in order to run the e2e tests.
Open System Settings and select Privacy & Security
-> Accessibility
and toggle the switch for IntelliJ.
Instantiate the test IDE as a background task:
./gradlew clean runIdeForUiTests &
Once the IDE has loaded, you can run the tests. Note that you need to have the test IDE focused in order for the tests to run.
./gradlew test
While the runIdeForUiTests
task is runnung, you can visit the following URL
to view the UI hierarchy of the running IDE: