|
[[_TOC_]]
|
|
[[_TOC_]]
|
|
|
|
|
|
# Setting Up Visual Studio Code for ELT DevEnv
|
|
# Setting Up Visual Studio Code for ELT DevEnv
|
|
This is a setup to configure and work on an ELT project using VSCode (or maybe [VSCodium](https://vscodium.com/)?).
|
|
|
|
This setup contemplates configuring C/C++ and (maybe one day) Python. The user will be able to connect to a remote ELTDEV workstation and work on his project from a local VSCode instance. WAF should have a proper integration when the configuration is finished.
|
|
|
|
|
|
|
|
Remote development relies on the
|
|
This is a setup to configure and work on an ELT project using VSCode (or maybe [VSCodium](https://vscodium.com/)?). This setup contemplates configuring C/C++ and (maybe one day) Python. The user will be able to connect to a remote ELTDEV workstation and work on his project from a local VSCode instance. WAF should have a proper integration when the configuration is finished.
|
|
[Visual Studio Code Remote Development extensions](https://code.visualstudio.com/docs/remote/faq)
|
|
|
|
|
|
|
|
_**Note GCH 20230227:**_ _It is not clear to me which extensions are automatically installed in the remote serve and which need to be installed in the remote server. I can just say that for me the python extension was not installed on the remote server and I had to do it automatically, but many other are._
|
|
Remote development relies on the [Visual Studio Code Remote Development extensions](https://code.visualstudio.com/docs/remote/faq)
|
|
|
|
|
|
|
|
**_Note GCH 20230227:_** _It is not clear to me which extensions are automatically installed in the remote serve and which need to be installed in the remote server. I can just say that for me the python extension was not installed on the remote server and I had to do it automatically, but many other are._
|
|
|
|
|
|
## Summary
|
|
## Summary
|
|
|
|
|
|
Following this document, you'll be able to:
|
|
Following this document, you'll be able to:
|
|
- Create a proper [C/C++ configuration](#configure-cc-extension) for the C/C++ Extension on `.vscode/c_cpp_properties.json` file
|
|
|
|
|
|
- Create a proper [C/C++ configuration](#configure-cc-extension) for the C/C++ Extension on `.vscode/c_cpp_properties.json` file
|
|
- Configure [WAF commands](#configure-waf-tasks) to call them as VSCode tasks
|
|
- Configure [WAF commands](#configure-waf-tasks) to call them as VSCode tasks
|
|
- Setup [Run/Debug configurations](#rundebug-configuration) so they can be used inside VSCode
|
|
- Setup [Run/Debug configurations](#rundebug-configuration) so they can be used inside VSCode
|
|
|
|
|
|
## Documentation
|
|
## Documentation
|
|
|
|
|
|
- [VSCode official documentation](https://code.visualstudio.com/docs#vscode)
|
|
- [VSCode official documentation](https://code.visualstudio.com/docs#vscode)
|
|
- [Windows keyboard shortcuts](https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf)
|
|
- [Windows keyboard shortcuts](https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf)
|
|
|
|
|
|
## Prerequisites
|
|
## Prerequisites
|
|
|
|
|
|
A few steps needs to be done on VSCode and in the ELT DevEnv where you want to work remotely.
|
|
A few steps needs to be done on VSCode and in the ELT DevEnv where you want to work remotely.
|
|
|
|
|
|
Installing extensions is not covered here, but the easiest way is to install them directly from VSCode Extension Tab (<kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>X</kbd>), you can also have a look at [Install Extension to Remote Host](#install-extension-to-remote-host)
|
|
Installing extensions is not covered here, but the easiest way is to install them directly from VSCode Extension Tab (<kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>X</kbd>), you can also have a look at [Install Extension to Remote Host](#install-extension-to-remote-host)
|
... | @@ -34,31 +37,37 @@ Installing extensions is not covered here, but the easiest way is to install the |
... | @@ -34,31 +37,37 @@ Installing extensions is not covered here, but the easiest way is to install the |
|
Other useful extensions are listed [here](https://gitlab.eso.org/ecos/eltsw-docs/-/wikis/KnowledgeBase/IDEs/VisualStudioCode#useful-extensions)
|
|
Other useful extensions are listed [here](https://gitlab.eso.org/ecos/eltsw-docs/-/wikis/KnowledgeBase/IDEs/VisualStudioCode#useful-extensions)
|
|
|
|
|
|
# Configure C/C++ Extension
|
|
# Configure C/C++ Extension
|
|
|
|
|
|
[Open your project](#opening-a-project-with-the-remote-ssh-extension). Make sure it is opened where the first `wscript` file is.
|
|
[Open your project](#opening-a-project-with-the-remote-ssh-extension). Make sure it is opened where the first `wscript` file is.
|
|
|
|
|
|
More information on [C/C++ Official Documentation](https://code.visualstudio.com/docs/languages/cpp) and [FAQ](https://code.visualstudio.com/docs/cpp/faq-cpp#_why-do-i-see-red-squiggles-under-standard-library-types)
|
|
More information on [C/C++ Official Documentation](https://code.visualstudio.com/docs/languages/cpp) and [FAQ](https://code.visualstudio.com/docs/cpp/faq-cpp#\_why-do-i-see-red-squiggles-under-standard-library-types)
|
|
|
|
|
|
## Create C/C++ local Configuration file
|
|
## Create C/C++ local Configuration file
|
|
|
|
|
|
The project C/C++ configuration is stored at `.vscode/c_cpp_properties.json`. There are two ways to generate the file: [Automatically](#automatic-creation) or [Manually](#manual-creation)
|
|
The project C/C++ configuration is stored at `.vscode/c_cpp_properties.json`. There are two ways to generate the file: [Automatically](#automatic-creation) or [Manually](#manual-creation)
|
|
|
|
|
|
### Automatic creation
|
|
### Automatic creation
|
|
|
|
|
|
If `compile_commands.json` is already created. Open any hpp/cpp file, after some seconds VSCode will ask if you want to use the `compile_commands.json` file. Accept by pressing yes. This will create a `.vscode/c_cpp_properties.json` file that has the configuration to the `compile_commands.json` file, if the file is already created, it'll just add `"compileCommands": "${workspaceFolder}/build/compile_commands.json"` in the configuration list.
|
|
If `compile_commands.json` is already created. Open any hpp/cpp file, after some seconds VSCode will ask if you want to use the `compile_commands.json` file. Accept by pressing yes. This will create a `.vscode/c_cpp_properties.json` file that has the configuration to the `compile_commands.json` file, if the file is already created, it'll just add `"compileCommands": "${workspaceFolder}/build/compile_commands.json"` in the configuration list.
|
|
|
|
|
|

|
|

|
|
|
|
|
|
### Manual creation
|
|
### Manual creation
|
|
|
|
|
|
If `compile_commands.json` is not generated, or the pop-up does not appear. Call the command palette <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd> and search for `C/C++: Edit Configurations (JSON)` to generate the file
|
|
If `compile_commands.json` is not generated, or the pop-up does not appear. Call the command palette <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd> and search for `C/C++: Edit Configurations (JSON)` to generate the file
|
|
|
|
|
|

|
|

|
|
|
|
|
|
## Modify the configuration file
|
|
## Modify the configuration file
|
|
|
|
|
|
Modify the file so it is configured to DevEnv. It is recommended to change `compilerPath`, `cppStandard`, `intelliSenseMode` and add the line `compileCommands` (if not already filled when [created automatically](#automatic-creation)) to make use of the `compile_commands.json` file created.
|
|
Modify the file so it is configured to DevEnv. It is recommended to change `compilerPath`, `cppStandard`, `intelliSenseMode` and add the line `compileCommands` (if not already filled when [created automatically](#automatic-creation)) to make use of the `compile_commands.json` file created.
|
|
|
|
|
|
When finished, [intellisense](https://code.visualstudio.com/docs/editor/intellisense) will start parsing the files, it'll take a while since it'll build it's cache (tipically at ~/.cache/vscode-cpptools/ipch`).
|
|
When finished, [intellisense](https://code.visualstudio.com/docs/editor/intellisense) will start parsing the files, it'll take a while since it'll build it's cache (tipically at \~/.cache/vscode-cpptools/ipch\`).
|
|
|
|
|
|
Depending on DevEnv version, the setup varies a bit because of the location of `gcc`
|
|
Depending on DevEnv version, the setup varies a bit because of the location of `gcc`
|
|
|
|
|
|
### DevEnv 5.x and 4.x
|
|
### DevEnv 5.x and 4.x
|
|
|
|
|
|
```json
|
|
```json
|
|
{
|
|
{
|
|
"configurations": [
|
|
"configurations": [
|
... | @@ -80,6 +89,7 @@ Depending on DevEnv version, the setup varies a bit because of the location of ` |
... | @@ -80,6 +89,7 @@ Depending on DevEnv version, the setup varies a bit because of the location of ` |
|
```
|
|
```
|
|
|
|
|
|
### DevEnv 3.x
|
|
### DevEnv 3.x
|
|
|
|
|
|
```json
|
|
```json
|
|
{
|
|
{
|
|
"configurations": [
|
|
"configurations": [
|
... | @@ -100,13 +110,16 @@ Depending on DevEnv version, the setup varies a bit because of the location of ` |
... | @@ -100,13 +110,16 @@ Depending on DevEnv version, the setup varies a bit because of the location of ` |
|
}
|
|
}
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
|
# Configure WAF Tasks
|
|
# Configure WAF Tasks
|
|
|
|
|
|
Telling how to build the project will be needed for Running/Debugging the code later. This is done by configuring WAF Tasks on VSCode. More information of task can be found in the [Official Documentation](https://code.visualstudio.com/docs/editor/tasks)
|
|
Telling how to build the project will be needed for Running/Debugging the code later. This is done by configuring WAF Tasks on VSCode. More information of task can be found in the [Official Documentation](https://code.visualstudio.com/docs/editor/tasks)
|
|
|
|
|
|
## Build Task
|
|
## Build Task
|
|
|
|
|
|
Open command palette (<kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd>) and search for `Tasks: Configure Task`, select `Create tasks.json file fom template`, then the options `Others`
|
|
Open command palette (<kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd>) and search for `Tasks: Configure Task`, select `Create tasks.json file fom template`, then the options `Others`
|
|
1. The file `.vscode/tasks.json` file will be created, replace/add the following lines:
|
|
|
|
|
|
1. The file `.vscode/tasks.json` file will be created, replace/add the following lines:
|
|
|
|
|
|
```json
|
|
```json
|
|
{
|
|
{
|
|
"version": "2.0.0",
|
|
"version": "2.0.0",
|
... | @@ -209,29 +222,35 @@ Open command palette (<kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd>) and sea |
... | @@ -209,29 +222,35 @@ Open command palette (<kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd>) and sea |
|
```
|
|
```
|
|
|
|
|
|
## Calling WAF Build or Configure
|
|
## Calling WAF Build or Configure
|
|
|
|
|
|
Now you can start waf build, configure, clangdb and clean by pressing <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>B</kbd> and selecting from the command palette `WAF Build` or `WAF Configure`, `Waf Compile Commands` and `Waf Clean` respectively.
|
|
Now you can start waf build, configure, clangdb and clean by pressing <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>B</kbd> and selecting from the command palette `WAF Build` or `WAF Configure`, `Waf Compile Commands` and `Waf Clean` respectively.
|
|
|
|
|
|
A task can be selected to be used by default. To configure this:
|
|
A task can be selected to be used by default. To configure this:
|
|
1) Call the Command Pallete (<kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd>) and type `Tasks: Configure Default Build Task`
|
|
|
|
|
|
1) Call the Command Pallete (<kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd>) and type `Tasks: Configure Default Build Task`
|
|
2) Select `WAF Build`
|
|
2) Select `WAF Build`
|
|
3) Everytime when using <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>B</kbd>, it'll call `WAF Build` task.
|
|
3) Everytime when using <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>B</kbd>, it'll call `WAF Build` task.
|
|
|
|
|
|
*_Note: Calling `waf clean` will delete `build/compile_commands.json` file, so it's adviced to run `waf clangdb` afterwards_*
|
|
_Note: Calling `waf clean` will delete `build/compile_commands.json` file, so it's adviced to run `waf clangdb` afterwards_
|
|
|
|
|
|
## Calling Any Task
|
|
## Calling Any Task
|
|
|
|
|
|
To call any task, use `Quick Open` (<kbd>Ctrl</kbd> + <kbd>P</kbd>) and write `task` and press Space, after that, all tasks will be available on a list to be selected.
|
|
To call any task, use `Quick Open` (<kbd>Ctrl</kbd> + <kbd>P</kbd>) and write `task` and press Space, after that, all tasks will be available on a list to be selected.
|
|
|
|
|
|

|
|

|
|
|
|
|
|
## Calling WAF Test
|
|
## Calling WAF Test
|
|
|
|
|
|
You can also run tests by calling the command palette <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd> and search for `Tasks: Run Test Task`
|
|
You can also run tests by calling the command palette <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd> and search for `Tasks: Run Test Task`
|
|
|
|
|
|
# Run/Debug configuration
|
|
# Run/Debug configuration
|
|
|
|
|
|
To enable Debugging:
|
|
To enable Debugging:
|
|
|
|
|
|
1. Call Command palette <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd> and look for `Debug: Add Configuration...`, select `C++ (GDB/LLDB)`
|
|
1. Call Command palette <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd> and look for `Debug: Add Configuration...`, select `C++ (GDB/LLDB)`
|
|
2. This will create the file `.vscode/launch.json`
|
|
2. This will create the file `.vscode/launch.json`
|
|
3. Replace the content with:
|
|
3. Replace the content with:
|
|
|
|
|
|
```json
|
|
```json
|
|
{
|
|
{
|
|
"version": "0.2.0",
|
|
"version": "0.2.0",
|
... | @@ -241,14 +260,6 @@ To enable Debugging: |
... | @@ -241,14 +260,6 @@ To enable Debugging: |
|
"type": "cppdbg",
|
|
"type": "cppdbg",
|
|
"request": "attach",
|
|
"request": "attach",
|
|
"program": "${workspaceFolder}/build/<Path_to_your_created_exec>",
|
|
"program": "${workspaceFolder}/build/<Path_to_your_created_exec>",
|
|
"preLaunchTask": "WAF Build",
|
|
|
|
"args": ["--config", "<arg1>", "<arg2>" "-l", "DEBUG"],
|
|
|
|
"environment": [
|
|
|
|
{
|
|
|
|
"name": "LD_LIBRARY_PATH",
|
|
|
|
"value": "${workspaceFolder}/build/<your_created_libs:${env:LD_LIBRARY_PATH}"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"processId": "${command:pickProcess}",
|
|
"processId": "${command:pickProcess}",
|
|
"MIMode": "gdb",
|
|
"MIMode": "gdb",
|
|
"setupCommands": [
|
|
"setupCommands": [
|
... | @@ -264,7 +275,6 @@ To enable Debugging: |
... | @@ -264,7 +275,6 @@ To enable Debugging: |
|
}
|
|
}
|
|
]
|
|
]
|
|
},
|
|
},
|
|
|
|
|
|
{
|
|
{
|
|
"name": "<your_executable> Launch",
|
|
"name": "<your_executable> Launch",
|
|
"type": "cppdbg",
|
|
"type": "cppdbg",
|
... | @@ -300,27 +310,36 @@ To enable Debugging: |
... | @@ -300,27 +310,36 @@ To enable Debugging: |
|
]
|
|
]
|
|
}
|
|
}
|
|
```
|
|
```
|
|
|
|
|
|
4. Modify `"name"`, `"program"`, `"args"`, `"environment"` or any other tag needed for your Debug/Run setup.
|
|
4. Modify `"name"`, `"program"`, `"args"`, `"environment"` or any other tag needed for your Debug/Run setup.
|
|
4. Now you can start a debugging session by going to menu `Run -> Start Debugging` or by pressing <kbd>F5</kbd> or Run it by pressing `Run -> Run without Debugging` (<kbd>Shift</kbd> + <kbd>F5</kbd>)
|
|
|
|
|
|
Note that the first configuration is for attaching to a running process and the second configuration is for starting a Debug session.
|
|
|
|
|
|
|
|
## Debug session
|
|
|
|
|
|
|
|
Now you can start a debugging session by going to menu `Run -> Start Debugging` or by pressing <kbd>F5</kbd> or Run it by pressing `Run -> Run without Debugging` (<kbd>Shift</kbd> + <kbd>F5</kbd>)
|
|
|
|
|
|
|
|
## Attach to a running process
|
|
|
|
|
|
|
|
To Attach to a running process, go to "Debug & Run" (<kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>D</kbd>) and click on the pull down menu on the top part of the frame and select `"<your_executable> Attach"`. At the center search the process that you want to attach to and select it. The debug session will be available for you.
|
|
|
|
|
|
# Extensions for code formatting and linting
|
|
# Extensions for code formatting and linting
|
|
|
|
|
|
## CPP
|
|
## CPP
|
|
|
|
|
|
- clang-tidy is alread included in the CPP extension. See https://devblogs.microsoft.com/cppblog/visual-studio-code-c-december-2021-update-clang-tidy/
|
|
- clang-tidy is alread included in the CPP extension. See https://devblogs.microsoft.com/cppblog/visual-studio-code-c-december-2021-update-clang-tidy/
|
|
|
|
|
|
## Python:
|
|
## Python:
|
|
- Black Formatter: https://marketplace.visualstudio.com/items?itemName=ms-python.black-formatter
|
|
|
|
- PyLint: https://marketplace.visualstudio.com/items?itemName=ms-python.pylint
|
|
|
|
|
|
|
|
Both tools support the [PEP 8 – Style Guide for Python Code](https://peps.python.org/pep-0008/)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- Black Formatter: https://marketplace.visualstudio.com/items?itemName=ms-python.black-formatter
|
|
|
|
- PyLint: https://marketplace.visualstudio.com/items?itemName=ms-python.pylint
|
|
|
|
|
|
|
|
Both tools support the [PEP 8 – Style Guide for Python Code](https://peps.python.org/pep-0008/)
|
|
|
|
|
|
# Configuration for Python
|
|
# Configuration for Python
|
|
|
|
|
|
## wscript file association
|
|
## wscript file association
|
|
|
|
|
|
If VSCode is not detecting `wscript` files as Python, do the following:
|
|
If VSCode is not detecting `wscript` files as Python, do the following:
|
|
|
|
|
|
1) Open any wscript file
|
|
1) Open any wscript file
|
... | @@ -334,10 +353,12 @@ If VSCode is not detecting `wscript` files as Python, do the following: |
... | @@ -334,10 +353,12 @@ If VSCode is not detecting `wscript` files as Python, do the following: |
|
## Python code formatting and linting
|
|
## Python code formatting and linting
|
|
|
|
|
|
Install the following extensions:
|
|
Install the following extensions:
|
|
|
|
|
|
* [Black Formatter](https://marketplace.visualstudio.com/items?itemName=ms-python.black-formatter)
|
|
* [Black Formatter](https://marketplace.visualstudio.com/items?itemName=ms-python.black-formatter)
|
|
* [PyLint](https://marketplace.visualstudio.com/items?itemName=ms-python.pylint)
|
|
* [PyLint](https://marketplace.visualstudio.com/items?itemName=ms-python.pylint)
|
|
|
|
|
|
For information see:
|
|
For information see:
|
|
|
|
|
|
* [Formatting Python in Visual Studio Code](https://code.visualstudio.com/docs/python/formatting)
|
|
* [Formatting Python in Visual Studio Code](https://code.visualstudio.com/docs/python/formatting)
|
|
|
|
|
|
# Using Git, some tutorials
|
|
# Using Git, some tutorials
|
... | @@ -345,7 +366,9 @@ For information see: |
... | @@ -345,7 +366,9 @@ For information see: |
|
* [Introduction from Visual Studio official documentation](https://code.visualstudio.com/docs/sourcecontrol/overview)
|
|
* [Introduction from Visual Studio official documentation](https://code.visualstudio.com/docs/sourcecontrol/overview)
|
|
|
|
|
|
# Appendix
|
|
# Appendix
|
|
|
|
|
|
## Opening a project with the Remote SSH extension
|
|
## Opening a project with the Remote SSH extension
|
|
|
|
|
|
A quick tour on how to create a SSH connection, for much detailed information go to the [Official Documentation](https://code.visualstudio.com/docs/remote/ssh)
|
|
A quick tour on how to create a SSH connection, for much detailed information go to the [Official Documentation](https://code.visualstudio.com/docs/remote/ssh)
|
|
|
|
|
|
### Create an SSH Target
|
|
### Create an SSH Target
|
... | @@ -360,12 +383,14 @@ A quick tour on how to create a SSH connection, for much detailed information go |
... | @@ -360,12 +383,14 @@ A quick tour on how to create a SSH connection, for much detailed information go |
|
|
|
|
|
4) The target will be created and will appear on the SSH Target list on the `Remote Explorer` panel.
|
|
4) The target will be created and will appear on the SSH Target list on the `Remote Explorer` panel.
|
|
5) (Optional) You can edit the name of the target by pressing the `Configure` button on the `SSH Target` bar.
|
|
5) (Optional) You can edit the name of the target by pressing the `Configure` button on the `SSH Target` bar.
|
|
6) The menu File -> Open Folder will allow to open any folder on the remote host
|
|
6) The menu File -\> Open Folder will allow to open any folder on the remote host
|
|
|
|
|
|
### Open the project
|
|
### Open the project
|
|
|
|
|
|
Once the connection is done, go to `Explorer panel` and select `Open Project`, select the root folder of the project (the forder containing the `wscript` file with `declare_project`).
|
|
Once the connection is done, go to `Explorer panel` and select `Open Project`, select the root folder of the project (the forder containing the `wscript` file with `declare_project`).
|
|
|
|
|
|
## Install extension to remote host
|
|
## Install extension to remote host
|
|
|
|
|
|
When connected to remote host, install the extensions by going to the extensions tab, and pressing the button `Install in SSH: <your_host>`
|
|
When connected to remote host, install the extensions by going to the extensions tab, and pressing the button `Install in SSH: <your_host>`
|
|
|
|
|
|

|
|

|
... | @@ -388,7 +413,7 @@ This is a list of curated extensions that might be usefull for productivity. For |
... | @@ -388,7 +413,7 @@ This is a list of curated extensions that might be usefull for productivity. For |
|
* [Cpp Reference](https://marketplace.visualstudio.com/items?itemName=Guyutongxue.cpp-reference): <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>A</kbd> on a STL function will take you to the CppReference documentation.
|
|
* [Cpp Reference](https://marketplace.visualstudio.com/items?itemName=Guyutongxue.cpp-reference): <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>A</kbd> on a STL function will take you to the CppReference documentation.
|
|
* [Code Runner](https://marketplace.visualstudio.com/items?itemName=formulahendry.code-runner): Run code snippet or code file for multiple languages
|
|
* [Code Runner](https://marketplace.visualstudio.com/items?itemName=formulahendry.code-runner): Run code snippet or code file for multiple languages
|
|
* [CodeSnap](https://marketplace.visualstudio.com/items?itemName=adpyke.codesnap): Take screenshots to share your code
|
|
* [CodeSnap](https://marketplace.visualstudio.com/items?itemName=adpyke.codesnap): Take screenshots to share your code
|
|
* [Doxygen Documentation Generator](https://marketplace.visualstudio.com/items?itemName=cschlosser.doxdocgen): Doxygen snippets
|
|
* [Doxygen Documentation Generator](https://marketplace.visualstudio.com/items?itemName=cschlosser.doxdocgen): Doxygen snippets
|
|
* Jupyter Notebooks:
|
|
* Jupyter Notebooks:
|
|
* [Jupyter](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter): Core support for Jupyter Notebooks
|
|
* [Jupyter](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter): Core support for Jupyter Notebooks
|
|
* [Jupyter Cell Tags](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.vscode-jupyter-cell-tags): Support for tags in cells, needed for papermill |
|
* [Jupyter Cell Tags](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.vscode-jupyter-cell-tags): Support for tags in cells, needed for papermill |
|
\ No newline at end of file |
|
\ No newline at end of file |