diff options
| author | Dibyendu Majumdar <mobile@majumdar.org.uk> | 2023-08-19 08:52:57 -0700 |
|---|---|---|
| committer | Dibyendu Majumdar <mobile@majumdar.org.uk> | 2026-10-25 14:24:09 -0700 |
| commit | 5728a38120004e61fe4d49c756dc2c18649f5431 (patch) | |
| tree | ad93aa0cff278a9f15915653aae8a2206c0248e7 /docs/intellij.md | |
| download | Simple-5728a38120004e61fe4d49c756dc2c18649f5431.tar.gz Simple-5728a38120004e61fe4d49c756dc2c18649f5431.zip | |
Chapter 1: Introduction
Co-authored-by: Cliff Click <cliffc@acm.org>
Co-authored-by: Thalia Archibald <thalia@archibald.dev>
Co-authored-by: hadha <helsgithub15@gmail.com>
Co-authored-by: XmiliaH <45106915+XmiliaH@users.noreply.github.com>
Co-authored-by: Tamás Hadházy <85063808+Hels15@users.noreply.github.com>
Co-authored-by: Jun Kawasaki <jun784@gmail.com>
Diffstat (limited to 'docs/intellij.md')
| -rw-r--r-- | docs/intellij.md | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/docs/intellij.md b/docs/intellij.md new file mode 100644 index 00000000..a488fca6 --- /dev/null +++ b/docs/intellij.md @@ -0,0 +1,43 @@ +# IntelliJ + +Open the repository folder as an existing IntelliJ project. Select JDK 21 in +**File > Project Structure > Project SDK** if needed. The native `.iml` setup +includes every numbered chapter and the shared Java code; no Maven import is +needed. Each chapter has separate main and test output under `build/idea` and +never depends on another chapter's compiler. Make's output stays separate. + +On a fresh checkout, run `make lib` to fetch JUnit, then close the project and run: + +```sh +python build-support/idea.py +``` + +Reopen the repository folder. The script refreshes the module list and test +configurations, and sets the JUnit template's working directory to +`$MODULE_WORKING_DIR$`. It preserves the selected SDK and existing personal run +configurations and breakpoints. Original settings are backed up in +`build/idea-backup`. Run it again after adding or renaming chapters, with the +project closed so IntelliJ cannot overwrite the new list with its old one. +After a chapter move, use **Build > Rebuild Project** once to remove old compiled +classes from reused chapter directories. + +Open a chapter's `src/test/java` file and use the gutter's **Debug** action on a +test method. Its configuration should use that chapter's module. You can also +select **chapter23 field write** to debug +`PrefixUpdateTest.testMethodFieldWrites`, or **chapterXX tests** to run that +chapter's suite. These shared configurations set the module, working directory, +assertions and build step explicitly. Suite discovery is limited to that module. + +Old personal run configurations may still name the former combined chapter25. +Recreate those from the intended chapter's test gutter, or change both their +module and working directory in **Run > Edit Configurations**. The same Java +class names occur in many chapters, so a class name alone cannot identify the +intended snapshot. + +Tests that compile native code still need the C toolchain on IntelliJ's PATH. +Tests using Chapter 28b's native runtime or saved `sys` library also need the +Make prerequisites: run `make -C chapter28b release CTAGS=` before debugging +those tests. IntelliJ's Java build does not build the native runtime or library. + +For the JUnit working directory and module classpath settings, see +[JetBrains' JUnit configuration reference](https://www.jetbrains.com/help/idea/run-debug-configuration-junit.html). |
