2022-01-24 10:46:09 +01:00
|
|
|
# Editing/IDEs
|
|
|
|
|
|
|
|
Visual Studio Code is recommended, since it provides decent support for all the languages
|
2022-08-24 08:08:58 +02:00
|
|
|
Anki uses. To set up the recommended workspace settings for VS Code, please see below.
|
2022-01-24 10:46:09 +01:00
|
|
|
|
|
|
|
For editing Python, PyCharm/IntelliJ's type checking/completion is a bit nicer than
|
|
|
|
VS Code, but VS Code has improved considerably in a short span of time.
|
|
|
|
|
|
|
|
There are a few steps you'll want to take before you start using an IDE.
|
|
|
|
|
|
|
|
## Initial Setup
|
|
|
|
|
|
|
|
### Python Environment
|
|
|
|
|
|
|
|
For code completion of external Python modules, you'll need to create a Python
|
|
|
|
venv and install Anki's dependencies into it. For example:
|
|
|
|
|
|
|
|
```
|
|
|
|
$ python3.9 -m venv ~/pyenv
|
|
|
|
$ ~/pyenv/bin/pip install -r python/requirements.txt
|
|
|
|
$ ~/pyenv/bin/pip install pyqt6 pyqt6-webengine
|
|
|
|
```
|
|
|
|
|
|
|
|
After doing so, you can set your editor's Python path to ~/pyenv/bin/python, eg
|
|
|
|
in VS Code, ctrl/cmd+shift+p, then 'python: select interpreter'.
|
|
|
|
|
|
|
|
### Rust
|
|
|
|
|
|
|
|
If you're planning to edit Rust code, install [Rustup](https://rustup.rs/), then
|
|
|
|
run 'rustup install nightly'.
|
|
|
|
|
|
|
|
### Build First
|
|
|
|
|
|
|
|
Code completion partly depends on files that are generated as part of the
|
|
|
|
regular build process, so for things to work correctly, use './run' or
|
updates to the build process and binary bundles
All platforms:
- rename scripts/ to tools/: Bazelisk expects to find its wrapper script
(used by the Mac changes below) in tools/. Rather than have a separate
scripts/ and tools/, it's simpler to just move everything into tools/.
- wheel outputs and binary bundles now go into .bazel/out/dist. While
not technically Bazel build products, doing it this way ensures they get
cleaned up when 'bazel clean' is run, and it keeps them out of the source
folder.
- update to the latest Bazel
Windows changes:
- bazel.bat has been removed, and tools\setup-env.bat has been added.
Other scripts like .\run.bat will automatically call it to set up the
environment.
- because Bazel is now on the path, you can 'bazel test ...' from any
folder, instead of having to do \anki\bazel.
- the bat files can handle being called from any working directory,
so things like running "\anki\tools\python" from c:\ will work.
- build installer as part of bundling process
Mac changes:
- `arch -arch x86_64 bazel ...` will now automatically use a different
build root, so that it is cheap to switch back and forth between archs
on a new Mac.
- tools/run-qt* will now automatically use Rosetta
- disable jemalloc in Mac x86 build for now, as it won't build under
Rosetta (perhaps due to its build scripts using $host_cpu instead of
$target_cpu)
- create app bundle as part of bundling process
Linux changes:
- remove arm64 orjson workaround in Linux bundle, as without a
readily-available, relatively distro-agonstic PyQt/Qt build
we can use, the arm64 Linux bundle is of very limited usefulness.
- update Docker files for release build
- include fcitx5 in both the qt5 and qt6 bundles
- create tarballs as part of the bundling process
2022-01-30 01:50:14 +01:00
|
|
|
'tools/build' prior to using code completion.
|
2022-01-24 10:46:09 +01:00
|
|
|
|
2022-08-24 08:08:58 +02:00
|
|
|
## Visual Studio Code
|
|
|
|
|
|
|
|
### Setting up Recommended Workspace Settings
|
|
|
|
|
|
|
|
To start off with some default workspace settings that are optimized for Anki development, please head to the project root and then run:
|
|
|
|
|
|
|
|
```
|
|
|
|
cp -r .vscode.dist .vscode
|
|
|
|
```
|
|
|
|
|
|
|
|
### Installing Recommended Extensions
|
|
|
|
|
|
|
|
Once the workspace settings are set up, open the root of the repo in VS Code to see and install a number of recommended extensions.
|
|
|
|
|
2022-01-24 10:46:09 +01:00
|
|
|
## PyCharm/IntelliJ
|
|
|
|
|
|
|
|
If you decide to use PyCharm instead of VS Code, there are somethings to be aware of.
|
|
|
|
|
|
|
|
### Slowdowns
|
|
|
|
|
|
|
|
The build process links a large file tree into .bazel in the repo dir. JetBrains
|
|
|
|
products will try to monitor this folder for changes, and index the files inside
|
|
|
|
it, which will lead to bad performance. Excluding the folder in the project
|
|
|
|
settings is [not sufficient unfortunately](https://youtrack.jetbrains.com/issue/IDEA-73309).
|
|
|
|
|
|
|
|
A workaround is to add .bazel and node_modules to the IDE-global ignores:
|
|
|
|
https://intellij-support.jetbrains.com/hc/en-us/community/posts/115000721750-Excluding-directories-globally
|
|
|
|
|
|
|
|
### Pylib References
|
|
|
|
|
|
|
|
You'll need to use File>Project Structure to tell IntelliJ that pylib/ is a sources root, so it knows
|
|
|
|
references to 'anki' in aqt are valid.
|