Activate custom aliases in VSCode automatically - #246
Conversation
When opening a new terminal, VSCode sources `.venv/bin/activate` and activates the virtual Python environment. However, we need to manually source our own aliases. This fix activates our own custom aliases in `devel/activate-aliases.sh`. It works for Linux and MacOS.
Coverage ReportFor commit 89eabb8 Click to expand Coverage Report Name Stmts Miss Branch BrPart Cover
--------------------------------------------------------------------------------
+ src/docbuild/models/deliverable.py 180 1 22 0 99.5%
+ src/docbuild/cli/cmd_check/process.py 58 0 22 1 98.8%
+ src/docbuild/models/manifest.py 111 1 12 1 98.4%
+ src/docbuild/utils/pidlock.py 79 1 14 1 97.8%
+ src/docbuild/cli/cmd_config/list.py 26 0 8 1 97.1%
+ src/docbuild/cli/cmd_validate/process.py 178 5 52 4 96.1%
+ src/docbuild/cli/callback.py 35 0 10 2 95.6%
+ src/docbuild/utils/concurrency.py 69 3 18 1 95.4%
+ src/docbuild/cli/cmd_cli.py 110 3 16 3 95.2%
- src/docbuild/config/xml/stitch.py 47 5 12 0 88.1%
- src/docbuild/cli/cmd_metadata/metaprocess.py 215 26 66 13 82.6%
- src/docbuild/cli/cmd_config/validate.py 21 2 12 3 78.8%
- src/docbuild/cli/cmd_check/__init__.py 18 5 2 0 65.0%
- src/docbuild/cli/cmd_build/__init__.py 13 5 0 0 61.5%
- src/docbuild/cli/cmd_metadata/__init__.py 27 10 2 0 58.6%
--------------------------------------------------------------------------------
+ TOTAL 3068 67 746 30 97.0%
47 files skipped due to complete coverage. |
|
I observed some strange behavior, so I'm a bit hesitant to merge it. Maybe further testing is required. |
Hi Toms, that's strange. Can you please share some of your findings, maybe I can test it again and see what can be the root cause? Thanks! |
Ok, I did this:
The pause is irritating and noticable. I'm not sure why it takes so long. 🤔 Maybe it's my VSCode instance. |
You aren't imagining things, Toms. I think that 5-10 second pause is a real bug, and I tracked down exactly why it's happening (maybe I am right). It comes down to Instead of unsetting the command, we can use a sentinel environment variable as a flag so it only sources the file once, and then we append the original Here is the updated configuration for "terminal.integrated.env.linux": {
"PROMPT_COMMAND": "if [ -z \"$DOCBUILD_ALIASES_LOADED\" ] && [ -f \"${workspaceFolder}/devel/activate-aliases.sh\" ]; then export DOCBUILD_ALIASES_LOADED=1; source \"${workspaceFolder}/devel/activate-aliases.sh\"; fi; $PROMPT_COMMAND"
},
"terminal.integrated.env.osx": {
"PROMPT_COMMAND": "if [ -z \"$DOCBUILD_ALIASES_LOADED\" ] && [ -f \"${workspaceFolder}/devel/activate-aliases.sh\" ]; then export DOCBUILD_ALIASES_LOADED=1; source \"${workspaceFolder}/devel/activate-aliases.sh\"; fi; $PROMPT_COMMAND"
}Regarding your alternative suggestion of using a Let me know if you are able to test this new version and if the prompt loads instantly for you now? |
|
I've tried your settings. When I paste that into the project's root |
Ah, that warning explains a lot Toms. That is VS Code's security and scoping engine stepping in. Whenever VS Code thinks it is running in a multi-root workspace context (or if the folder isn't opened completely standalone), it explicitly restricts and ignores This means your alternative idea was the correct path all along! If we move this to a Can you try this? {
"folders": [
{
"path": "."
}
],
"settings": {
"terminal.integrated.env.linux": {
"PROMPT_COMMAND": "if [ -z \"$DOCBUILD_ALIASES_LOADED\" ] && [ -f \"${workspaceFolder}/devel/activate-aliases.sh\" ]; then export DOCBUILD_ALIASES_LOADED=1; source \"${workspaceFolder}/devel/activate-aliases.sh\"; fi; $PROMPT_COMMAND"
},
"terminal.integrated.env.osx": {
"PROMPT_COMMAND": "if [ -z \"$DOCBUILD_ALIASES_LOADED\" ] && [ -f \"${workspaceFolder}/devel/activate-aliases.sh\" ]; then export DOCBUILD_ALIASES_LOADED=1; source \"${workspaceFolder}/devel/activate-aliases.sh\"; fi; $PROMPT_COMMAND"
}
}
}Let me know if this helped. |
Situation
When opening a new terminal under VSCode, it sources
.venv/bin/activateand activates the virtual Python environment. However, we need to manually source our own aliases. This is a bit inconvenient as you don't have access to these aliases (and neither your AI bot has that).Proposed solution
This fix activates our own custom aliases in
devel/activate-aliases.sh. It works for Linux and MacOS.Alternatives
An alternative way would be to create a
docbuild.code-workspacefile and add the additions under asettingskey. That may be even the more portable solution.