diff --git a/_quarto.yml b/_quarto.yml
index 516299b548..5cfdd15409 100644
--- a/_quarto.yml
+++ b/_quarto.yml
@@ -194,15 +194,24 @@ website:
- docs/visual-editor/content.qmd
- docs/visual-editor/options.qmd
- docs/visual-editor/markdown.qmd
+ - section: "Positron"
+ href: docs/tools/positron/index.qmd
+ contents:
+ - text: "Positron Basics"
+ href: docs/tools/positron/index.qmd
+ - text: "Visual Editor"
+ href: docs/tools/positron/visual-editor.qmd
+ - text: "Notebook Editor"
+ href: docs/tools/positron/notebook.qmd
- section: "VS Code"
- href: docs/tools/vscode.qmd
+ href: docs/tools/vscode/index.qmd
contents:
- text: "VS Code Basics"
- href: docs/tools/vscode.qmd
+ href: docs/tools/vscode/index.qmd
- text: "Visual Editor"
- href: docs/visual-editor/vscode/index.qmd
+ href: docs/tools/vscode/visual-editor.qmd
- text: "Notebook Editor"
- href: docs/tools/vscode-notebook.qmd
+ href: docs/tools/vscode/notebook.qmd
- docs/tools/neovim.qmd
- docs/tools/text-editors.qmd
- section: "Documents"
diff --git a/docs/computations/_jupyter-execute.md b/docs/computations/_jupyter-execute.md
index cf1c11af61..a5d0ccaee4 100644
--- a/docs/computations/_jupyter-execute.md
+++ b/docs/computations/_jupyter-execute.md
@@ -6,7 +6,7 @@ quarto render notebook.ipynb --execute
You can also specify this behavior within the notebook's YAML front matter:
-``` yaml
+```{.yaml filename="notebook.ipynb"}
---
title: "My Notebook"
execute:
diff --git a/docs/computations/r.qmd b/docs/computations/r.qmd
index e53b509e50..a4efca77e0 100644
--- a/docs/computations/r.qmd
+++ b/docs/computations/r.qmd
@@ -117,7 +117,7 @@ You can install the VS Code extension by searching for 'quarto' in the extension
The VS Code extension includes a **Quarto: Preview** command that can be accessed via the Command Palette, the keyboard shortcut {{< kbd mac=Command-Shift-K win=Control-Shift-K linux=Control-Shift-K >}}, or a **Preview** button ({fig-alt="Preview icon"}) in the editor.
After rendering, a preview is displayed in a pane within VS Code alongside your document.
-You can read more about using VS Code in [Tools: VS Code](/docs/tools/vscode.qmd).
+You can read more about using VS Code in [Tools: VS Code](/docs/tools/vscode/index.qmd).
## Emacs
diff --git a/docs/dashboards/index.qmd b/docs/dashboards/index.qmd
index 753c26fd01..52e8d3b023 100644
--- a/docs/dashboards/index.qmd
+++ b/docs/dashboards/index.qmd
@@ -26,7 +26,7 @@ Quarto Dashboards make it easy to create interactive dashboards using Python, R,
- Flexible and easy to specify row and column-based [Layouts](layout.qmd). Components are intelligently re-sized to fill the browser and adapted for display on mobile devices.
-- Author using any notebook editor ([JupyterLab](/docs/tools/jupyter-lab.qmd), etc.) or in plain text markdown with any text editor ([VS Code](/docs/tools/vscode.qmd), [RStudio](/docs/tools/rstudio.qmd), [Neovim](/docs/tools/neovim.qmd), etc.)
+- Author using any notebook editor ([JupyterLab](/docs/tools/jupyter-lab.qmd), etc.) or in plain text markdown with any text editor ([VS Code](/docs/tools/vscode/index.qmd), [RStudio](/docs/tools/rstudio.qmd), [Neovim](/docs/tools/neovim.qmd), etc.)
- Dashboards can be deployed as static web pages (no special server required) or you can optionally integrate a backend [Shiny Server](/docs/dashboards/interactivity/shiny-python/index.qmd) for enhanced interactivity.
diff --git a/docs/get-started/authoring/vscode.qmd b/docs/get-started/authoring/vscode.qmd
index 1c7730697d..9b47eafc57 100644
--- a/docs/get-started/authoring/vscode.qmd
+++ b/docs/get-started/authoring/vscode.qmd
@@ -12,4 +12,4 @@ editor_options:
{{< include _text-editor.md >}}
-Additionally, if you are interested in seeing how to use Quarto from within `.ipynb` notebooks, check out the documentation on using the VS Code [Notebook Editor](/docs/tools/vscode.qmd#notebook-editor) with Quarto.
+Additionally, if you are interested in seeing how to use Quarto from within `.ipynb` notebooks, check out the documentation on using the VS Code [Notebook Editor](/docs/tools/vscode/notebook.qmd) with Quarto.
diff --git a/docs/get-started/hello/vscode.qmd b/docs/get-started/hello/vscode.qmd
index 3593583018..5ff6896d25 100644
--- a/docs/get-started/hello/vscode.qmd
+++ b/docs/get-started/hello/vscode.qmd
@@ -23,7 +23,7 @@ Before getting started, you should install the [Quarto VS Code Extension](https:
You can install the Quarto extension from within the **Extensions** tab in VS Code, from the [Extension Marketplace](https://marketplace.visualstudio.com/items?itemName=quarto.quarto), the [Open VSX Registry](https://open-vsx.org/extension/quarto/quarto) or directly from a [VISX extension file](https://github.com/quarto-dev/quarto-vscode#visx-install).
::: callout-note
-This tutorial focuses on editing plain text Quarto `.qmd` files in VS Code. Depending on your preferences and the task at hand there are two other editing modes available for Quarto documents: the [Visual Editor](/docs/visual-editor/vscode/index.qmd) and the [Notebook Editor](/docs/tools/vscode-notebook.qmd). For the purposes of learning we recommend you work through this tutorial using the VS Code text editor, then after you've mastered the basics explore using the other editing modes.
+This tutorial focuses on editing plain text Quarto `.qmd` files in VS Code. Depending on your preferences and the task at hand there are two other editing modes available for Quarto documents: the [Visual Editor](/docs/tools/vscode/visual-editor.qmd) and the [Notebook Editor](/docs/tools/vscode/notebook.qmd). For the purposes of learning we recommend you work through this tutorial using the VS Code text editor, then after you've mastered the basics explore using the other editing modes.
:::
### Basic Workflow
@@ -137,7 +137,7 @@ This is the basic workflow for authoring with Quarto.
You do not need to save the file before rendering (as this happens automatically when you render).
If you prefer, you can configure the Quarto extension to render whenever you save a document.
-See the documentation on [Render on Save](/docs/tools/vscode.qmd#render-on-save) for additional details.
+See the documentation on [Render on Save](/docs/tools/vscode/index.qmd#render-on-save) for additional details.
### Running Cells
@@ -239,6 +239,6 @@ If you prefer to use an external browser for preview (or have no preview trigger
Additionally, you may wish to learn about the other editing modes for Quarto documents available within VS Code:
-- The [Visual Editor](/docs/visual-editor/vscode/index.qmd) for WYSIWYG editing of `.qmd` documents.
+- The [Visual Editor](/docs/tools/vscode/visual-editor.qmd) for WYSIWYG editing of `.qmd` documents.
-- The [Notebook Editor](/docs/tools/vscode-notebook.qmd) for editing `.ipynb` notebooks.
+- The [Notebook Editor](/docs/tools/vscode/notebook.qmd) for editing `.ipynb` notebooks.
diff --git a/docs/guide/guide.yml b/docs/guide/guide.yml
index 8a2bee5cbe..77f845207c 100644
--- a/docs/guide/guide.yml
+++ b/docs/guide/guide.yml
@@ -43,7 +43,9 @@
- text: RStudio IDE
href: ../tools/rstudio.qmd
- text: VS Code
- href: ../tools/vscode.qmd
+ href: ../tools/vscode/index.qmd
+ - text: Positron
+ href: ../tools/positron/index.qmd
- text: Neovim
href: ../tools/neovim.qmd
- text: Text Editors
diff --git a/docs/manuscripts/authoring/_overview.qmd b/docs/manuscripts/authoring/_overview.qmd
index 031ff6b3f8..2ffc8e7c42 100644
--- a/docs/manuscripts/authoring/_overview.qmd
+++ b/docs/manuscripts/authoring/_overview.qmd
@@ -23,7 +23,7 @@ The syntax you'll learn will apply regardless of the tool you are using to edit
## Do you mostly use `.ipynb`?
-As a VS Code user, we recommend writing your article in a `.qmd` file. However, if you currently use VS Code primarily to work with `.ipynb` files, you may find the Jupyter Lab tutorial more applicable. Install the [Quarto extension for Jupyter Lab](#install-the-quarto-vs-code-extension), then pick up the Jupyter Lab tutorial at [Clone the Template Repository](jupyterlab.qmd#clone-repo). You might also like read about using [Quarto with VS Code's Notebook Editor](/docs/tools/vscode-notebook.qmd).
+As a VS Code user, we recommend writing your article in a `.qmd` file. However, if you currently use VS Code primarily to work with `.ipynb` files, you may find the Jupyter Lab tutorial more applicable. Install the [Quarto extension for Jupyter Lab](#install-the-quarto-vs-code-extension), then pick up the Jupyter Lab tutorial at [Clone the Template Repository](jupyterlab.qmd#clone-repo). You might also like read about using [Quarto with VS Code's Notebook Editor](/docs/tools/vscode/notebook.qmd).
:::
:::
diff --git a/docs/manuscripts/authoring/_visual-editor.qmd b/docs/manuscripts/authoring/_visual-editor.qmd
index 25aff1be8f..b1c4c9c51a 100644
--- a/docs/manuscripts/authoring/_visual-editor.qmd
+++ b/docs/manuscripts/authoring/_visual-editor.qmd
@@ -29,7 +29,7 @@ To toggle between source and visual editor modes, use the Editor menu and select
{fig-alt="Screenshot of the Editor menu in VS Code. The 'Edit in Visual Mode' item in the '...' menu is highlighted."}
-There are other ways to switch modes, read about them, and other features of the visual editor at [Visual Editing in VS Code](/docs/visual-editor/vscode/index.qmd).
+There are other ways to switch modes, read about them, and other features of the visual editor at [Visual Editing in VS Code](/docs/tools/vscode/visual-editor.qmd).
:::
You can switch between the source and visual editor at any time - the location of your cursor and undo/redo history is preserved.
diff --git a/docs/output-formats/_ssg-workflow.qmd b/docs/output-formats/_ssg-workflow.qmd
index adcb4d2d5a..6d6f21711a 100644
--- a/docs/output-formats/_ssg-workflow.qmd
+++ b/docs/output-formats/_ssg-workflow.qmd
@@ -21,7 +21,7 @@ quarto preview
This will automatically run `{{< meta ssg-preview >}}` on your behalf to bring up a local preview server. In addition, it will monitor the filesystem for changes to `.qmd` and `.ipynb` inputs and automatically re-render them to {{< meta ssg-name >}} compatible `.md` files when they change.
-Note that this also works for the integrated Render/Preview command within the [Quarto VS Code Extension](/docs/tools/vscode.qmd).
+Note that this also works for the integrated Render/Preview command within the [Quarto VS Code Extension](/docs/tools/vscode/index.qmd).
### Rendering
diff --git a/docs/tools/_code-oss-editors.md b/docs/tools/_code-oss-editors.md
new file mode 100644
index 0000000000..09f1cb345b
--- /dev/null
+++ b/docs/tools/_code-oss-editors.md
@@ -0,0 +1,279 @@
+## {{< meta tool.name >}} Editors
+
+Depending on your preference and the task at hand, you can author documents for rendering by Quarto using three different editors within {{< meta tool.name >}}:
+
+1. The source code editor for editing `.qmd` documents as text.
+
+2. The [Visual Editor](/docs/tools/{{< meta tool.prefix >}}/visual-editor.qmd) for WYSIWYG editing of `.qmd` documents.
+
+3. The [Notebook Editor](/docs/tools/{{< meta tool.prefix >}}/notebook.qmd) for editing `.ipynb` notebooks.
+
+We'll cover the source code editor below, however you might also want to consult the documentation for the [Visual Editor](/docs/tools/{{< meta tool.prefix >}}/visual-editor.qmd) or [Notebook Editor](/docs/tools/{{< meta tool.prefix >}}/notebook.qmd) after you've become familiar with the basics.
+
+## Render and Preview
+
+The Quarto VS Code extension includes commands and keyboard shortcuts for rendering Quarto documents (both standalone and within websites or books). After rendering, `quarto preview` is used behind the scenes to provide a [preview pane]{
+ .content-hidden unless-meta="tool.is_vscode"}[preview in the Viewer Pane]{.content-hidden unless-meta="tool.is_positron"} within {{< meta tool.name >}} alongside your document:
+
+{.border .dark-content fig-alt='Two windows arranged side by side. The window on the left is a qmd file opened in {{< meta tool.name >}}. The contents of this document are the same as the first part of the Getting Started: Welcome section of this website. The contents of this document are rendered by Quarto in the window on the right.'}
+
+{.border .light-content fig-alt='Two windows arranged side by side. The window on the left is a qmd file opened in {{< meta tool.name >}}. The contents of this document are the same as the first part of the Getting Started: Welcome section of this website. The contents of this document are rendered by Quarto in the window on the right.'}
+
+To render and preview, execute the **Quarto: Preview** command. You can alternatively use the Ctrl+Shift+K keyboard shortcut, or the **Preview** button ({.light-content fig-alt="Preview icon"}{.dark-content fig-alt="Preview icon"}) at the top right of the editor:
+
+{.border .light-content fig-alt='The top of the {{< meta tool.name >}} editor. The right side of the editor tab area includes a Preview button.'}
+
+{.border .dark-content fig-alt='The top of the {{< meta tool.name >}} editor. The right side of the editor tab area includes a Preview button.'}
+
+::: {.callout-note appearance="simple"}
+Note that on the Mac you should use `Cmd` rather than `Ctrl` as the prefix for all Quarto keyboard shortcuts.
+:::
+
+### Other Formats
+
+The **Quarto: Preview** command renders the default format of the currently active document. If you want to preview a different format, use the **Quarto: Preview Format** command:
+
+{.border .light-content fig-alt='The top of the {{< meta tool.name >}} editor. The editor title menu is expanded and the Preview Format command is available on the menu.'}
+
+{.border .dark-content fig-alt='The top of the {{< meta tool.name >}} editor. The editor title menu is expanded and the Preview Format command is available on the menu.'}
+
+When you execute **Preview Format**, you'll see a quick pick list of formats to choose from (any formats declared in the document as well as some standard formats like PDF and MS Word):
+
+{.border .light-content fig-alt='The top of the {{< meta tool.name >}} editor. The command pallette shows a quick pick list of available formats to preview.'}
+
+{.border .dark-content fig-alt='The top of the {{< meta tool.name >}} editor. The command pallette shows a quick pick list of available formats to preview.'}
+
+After previewing a different format, the **Quarto: Preview** command and Ctrl+Shift+K keyboard shortcut will be automatically rebound to the newly selected format for the duration of the current preview. To switch back to previewing the original format, use **Quarto: Preview Format** command again.
+
+::: {.callout-note appearance="simple"}
+Embedded preview is currently supported for HTML and PDF based formats (including `revealjs` and `beamer` slideshows). However, for Word and other formats you need to use an appropriate external program to preview the output.
+:::
+
+### Render Command
+
+The **Quarto: Preview** command is what you will most commonly use while authoring documents. If you have a single format (e.g. HTML or PDF) then previewing also renders your document so it's ready for distribution once you are happy with the output. However, if you have multiple formats will need to explicitly render them (as preview only renders a single format at a time). You can do this with the **Quarto: Render Document** command:
+
+{.border .light-content fig-alt='The top of the {{< meta tool.name >}} editor. The command palette shows a quick pick list of available formats to render.'}
+
+{.border .dark-content fig-alt='The top of the {{< meta tool.name >}} editor. The command palette shows a quick pick list of available formats to render.'}
+
+If you have multiple declared formats you can render all of them. You can also selectively render any of the declared formats or other standard formats like PDF and MS Word.
+
+## Render on Save
+
+By default Quarto does not automatically render `.qmd` or `.ipynb` files when you save them. This is because rendering might be very time consuming (e.g. it could include long running computations) and it's good to have the option to save periodically without doing a full render.
+
+However, you can configure the Quarto extension to automatically render whenever you save. You can do this either within {{< meta tool.name >}} settings or within the YAML options for your project or document. To configure the {{< meta tool.name >}} setting, search for `quarto.render` in settings and you'll find the **Render on Save** option:
+
+{.border .light-content fig-alt='The {{< meta tool.name >}} Quarto render settings. The Render on Save option is checked.'}
+
+{.border .dark-content fig-alt='The {{< meta tool.name >}} Quarto render settings. The Render on Save option is checked.'}
+
+You might also want to control this behavior on a per-document or per-project basis. If you include the `editor: render-on-save` option in your document or project YAML it will supersede whatever your {{< meta tool.name >}} setting is. For example:
+
+``` yaml
+editor:
+ render-on-save: true
+```
+
+::: {.content-hidden unless-meta="tool.is_positron"}
+
+You can also enable this setting using the checkbox in the Editor toolbar:
+
+{.border .light-content fig-alt='The Editor toolbar showing the Render on Save option checked.'}
+
+{.border .dark-content fig-alt='The Editor toolbar showing the Render on Save option checked.'}
+
+:::
+
+## External Preview
+
+If you prefer to use an external browser for preview (or have no preview triggered at all by rendering) you can use the **Preview Type** option to specify an alternate behavior:
+
+{.border .light-content fig-alt='{{< meta tool.name >}} settings interface with \'quarto preview type\' entered into the search bar. User settings reveals Quarto > Render: Preview Type, with a dropdown to select location for document preview after render. The default, internal, is selected, which previews using a side-by-side panel in {{< meta tool.name >}}. The other two options in the dropdown are external and none.'}
+
+{.border .dark-content fig-alt='{{< meta tool.name >}} settings interface with \'quarto preview type\' entered into the search bar. User settings reveals Quarto > Render: Preview Type, with a dropdown to select location for document preview after render. The default, internal, is selected, which previews using a side-by-side panel in {{< meta tool.name >}}. The other two options in the dropdown are external and none.'}
+
+## Code Cells
+
+There are a variety of tools that make it easier to edit and execute code cells. Editing tools include syntax highlighting, code folding, code completion, and signature tips:
+
+{.border .light-content fig-alt='A Quarto document in {{< meta tool.name >}} with a python code cell. There is a code completion helper active in the python cell.'}
+
+{.border .dark-content fig-alt='A Quarto document in {{< meta tool.name >}} with a python code cell. There is a code completion helper active in the python cell.'}
+
+For Python, R, and Julia cells, commands are available to execute the current cell, previous cells, or the currently selected line(s).
+[Cell output is shown side by side in the Jupyter interactive console:]{.content-hidden unless-meta="tool.is_vscode"}
+[R and Python cells are executed in the appropriate Console, and output is shown in the pane:]{.content-hidden unless-meta="tool.is_vscode"}
+
+{.border .light-content fig-alt='{{< meta tool.name >}} with two panes open, source code on the right, and the interactive output of that code shown in a second pane on the left.'}
+
+{.border .dark-content fig-alt='{{< meta tool.name >}} with two panes open, source code on the right, and the interactive output of that code shown in a second pane on the left.'}
+
+
+Here are all of the commands and keyboard shortcuts available for executing cells:
+
+| Quarto Command | Keyboard Shortcut |
+|----------------------|---------------------|
+| Run Current Cell | ⇧⌘ Enter |
+| Run Selected Line(s) | ⌘ Enter |
+| Run Next Cell | ⌥⌘ N |
+| Run Previous Cell | ⌥⌘ P |
+| Run All Cells | ⌥⌘ R |
+| Run Cells Above | ⇧⌥⌘ P |
+| Run Cells Below | ⇧⌥⌘ N |
+
+You can quickly insert a new code cell using the Ctrl+Shift+I keyboard shortcut.
+
+::: {.content-hidden unless-meta="tool.is_vscode"}
+Enhanced features for embedded languages (e.g. completion, code execution) can be enabled by installing the most recent version(s) of these extensions:
+
+- [Python Extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python) and [Jupyter Extension](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter)
+- [R Extension](https://marketplace.visualstudio.com/items?itemName=REditorSupport.r)
+- [Julia Extension](https://marketplace.visualstudio.com/items?itemName=julialang.language-julia)
+:::
+
+::: {.content-hidden unless-meta="tool.is_positron"}
+Positron includes enhanced features for R and Python code cells (e.g. completion, code execution).
+To get enhanced features for Julia, install the [Julia Extension](https://marketplace.visualstudio.com/items?itemName=julialang.language-julia).
+:::
+
+### Execution Directory
+
+::: {.content-hidden unless-meta="tool.is_vscode"}
+Embedded language extensions handle the working directory for execution in distinct ways:
+
+1. The Python Extension runs code within the directory of the source file from which code is executed. You can customize this behavior using the `jupyter.notebookFileRoot` option.
+
+2. The R Extension runs code within the working directory of the R session running in the **R Interactive** terminal. You can change this directory manually using `setwd()`.
+
+3. The Julia Extension runs code within the working directory of the Julia session running in the **Julia REPL** terminal. You can change this directory manually using `cd()`.
+:::
+
+::: {.content-hidden unless-meta="tool.is_positron"}
+The execution directory for code cells in Positron depends on the language of the code cell:
+
+1. **R and Python** cells will be executed in the appropriate Console in Positron.
+The default execution directory for the Console is folder that was opened as the workspace.
+
+2. **Julia** cells require the Julia Extension which runs code within the working directory of the Julia session running in the **Julia REPL** terminal. You can change this directory manually using `cd()`.
+:::
+
+## Contextual Assistance
+
+::: {.content-hidden unless-meta="tool.is_vscode"}
+
+Execute the **Quarto: Show Assist Panel** command to show a panel in the sidebar that shows contextual assistance depending on the current cursor location:
+
+1) Help/documentation is shown when editing code
+2) A realtime preview of equations is shown when editing LaTeX math
+3) Thumbnail previews are shown when your cursor is located on a markdown image.
+
+For example, below help on the matplotlib `plot()` function is shown automatically when the cursor is located on the function:
+
+{.border fig-alt='Screenshot of {{< meta tool.name >}} editor with three vertical sections. The leftmost includes the file explorer, and quarto help. The second pane is the source code for a quarto file with python code. The third is interactive with Python running and output of the code cells shown.'}
+:::
+
+::: {.content-hidden unless-meta="tool.is_positron"}
+
+Positron provides code assistance for Python and R code cells in Quarto documents.
+This includes:
+
+- Code completion for functions and arguments
+- Help tooltips as you write, or hover over, functions
+- Opening help in a dedicated Help pane when you hit {{< kbd F1 >}} while the cursor is in a function.
+
+For example, below the help for the `np.arange` function is shown in the Help pane.
+
+{.border .light-content fig-alt="Screen shot of Positron editor with two vertical sections. The left section includes the source code for a quarto file with python code, and the active Python Console. The right shows the Help pane with the help for `np.arange` displayed."}
+
+{.border .dark-content fig-alt="Screen shot of Positron editor with two vertical sections. The left section includes the source code for a quarto file with python code, and the active Python Console. The right shows the Help pane with the help for `np.arange` displayed."}
+
+For additional contextual assistance, execute the **Quarto: Show Assist Panel** command to show a panel in the sidebar that shows contextual assistance depending on the current cursor location:
+
+1) A realtime preview of equations is shown when editing LaTeX math
+2) Thumbnail previews are shown when your cursor is located on a markdown image.
+
+For example, below an image preview is shown automatically when the cursor is located in the image path in the markdown:
+
+{.border .light-content fig-alt="Screen shot of Positron editor with three vertical sections. The leftmost includes the file explorer, and quarto assist pane. The second pane is the source code for a quarto file with python code, and the active Python Console. The third shows the Environment and Plots for the active console populated with the output of the code cells."}
+
+{.border .dark-content fig-alt="Screen shot of Positron editor with three vertical sections. The leftmost includes the file explorer, and quarto assist pane. The second pane is the source code for a quarto file with python code, and the active Python Console. The third shows the Environment and Plots for the active console populated with the output of the code cells."}
+
+:::
+
+## Live Preview
+
+While editing LaTeX math or Mermaid and Graphviz diagrams, click the **Preview** button above the code (or use the Ctrl+Shift+L keyboard shortcut) to open a live preview which will update automatically as you edit.
+
+Here we see a preview of the currently edited LaTeX equation displayed in the Quarto assist panel:
+
+{.border .light-content fig-alt='Quarto document open in {{< meta tool.name >}} with a LaTeX equation shown in the \'Quarto Equation\' section of the panel to the left of the document.'}
+
+{.border .dark-content fig-alt='Quarto document open in {{< meta tool.name >}} with a LaTeX equation shown in the \'Quarto Equation\' section of the panel to the left of the document.'}
+
+Here we see a Graphviz diagram preview automatically updated as we edit:
+
+:::{.content-hidden unless-meta="tool.is_vscode"}
+{.border fig-alt='A Quarto document being edited in {{< meta tool.name >}}, with a live preview of the currently edited diagram shown in a pane to the right'}
+:::
+
+:::{.content-hidden unless-meta="tool.is_positron"}
+{.border .light-content fig-alt='A Quarto document being edited in {{< meta tool.name >}}, with a live preview of the currently edited diagram shown in a pane to the right'}
+
+{.border .dark-content fig-alt='A Quarto document being edited in {{< meta tool.name >}}, with a live preview of the currently edited diagram shown in a pane to the right'}
+:::
+
+## YAML Intelligence
+
+YAML code completion is available for project files, YAML front matter, and executable cell options:
+
+{.border .light-content fig-alt="Quarto document with YAML being edited. Next to the cursor code completion helper is open showing YAML options beginning with the letters preceding the cursor ('co')."}
+
+{.border .dark-content fig-alt="Quarto document with YAML being edited. Next to the cursor code completion helper is open showing YAML options beginning with the letters preceding the cursor ('co')."}
+
+If you have incorrect YAML it will also be highlighted when documents are saved:
+
+{.border .light-content fig-alt="Quarto document YAML metadata with an incorrect option underlined in red."}
+
+{.border .dark-content fig-alt="Quarto document YAML metadata with an incorrect option underlined in red."}
+
+## Code Snippets
+
+Code snippets are templates that make it easier to enter repeating code patterns (e.g. code blocks, callouts, divs, etc.). Execute the **Insert Snippet** command within a Quarto document to insert a markdown snippet:
+
+{.border .light-content fig-alt="Quarto document with dropdown 'Select a snippet' dropdown, the first item (bold - insert bold text) is selected."}
+
+{.border .dark-content fig-alt="Quarto document with dropdown 'Select a snippet' dropdown, the first item (bold - insert bold text) is selected."}
+
+### IntelliSense
+
+{{< meta tool.name >}} uses IntelliSense to suggest snippets or possible values for a specific function while typing. This is turned off by default for snippets, but not for values. To enable snippet suggestions in IntelliSense while typing or when selecting a text snippet and pressing `ctrl+space`, the setting `editor.snippetSuggestions` needs to be set to a value other than `none` (for example to `inline`).
+
+- Press `F1` and search for `Preferences: Open Settings (UI)` or `File` \> `Preferences` \> `Settings`
+- Search for following term `@lang:quarto editor.snippetSuggestions`. `Editor: Snippet Suggestions` should show up.
+- Change value to a not-`none` value.
+
+## Document Navigation
+
+If you have a large document use the outline view for quick navigation between sections:
+
+{.border .light-content fig-alt="Quarto document with outline view shown in left-hand panel. The outline shows the section headers of the quarto documents."}
+
+{.border .dark-content fig-alt="Quarto document with outline view shown in left-hand panel. The outline shows the section headers of the quarto documents."}
+
+You can also use the **Go to Symbol in Editor** command or keyboard shortcut Ctrl+Shift+O for type-ahead navigation of the current document's outline.
+
+Use the **Go to File** command Ctrl+P to navigate to other files and the **Go to Symbol in Workspace** command Ctrl+T for type-ahead navigation to all headings in the workspace:
+
+{.border .light-content fig-alt='Quarto document in {{< meta tool.name >}} with command palette open showing the files in the project with the entered term, \'margin\'.'}
+
+{.border .dark-content fig-alt='Quarto document in {{< meta tool.name >}} with command palette open showing the files in the project with the entered term, \'margin\'.'}
+
+## Learning More
+
+Besides the traditional source editor described above, you can also use one of the following other editors depending on your preferences and task at hand:
+
+1. The [Visual Editor](/docs/tools/{{< meta tool.prefix >}}/visual-editor.qmd) for WYSIWYG editing of `.qmd` documents.
+
+2. The [Notebook Editor](/docs/tools/{{< meta tool.prefix >}}/notebook.qmd) for editing `.ipynb` notebooks.
diff --git a/docs/tools/vscode-notebook.qmd b/docs/tools/_code-oss-notebook.md
similarity index 64%
rename from docs/tools/vscode-notebook.qmd
rename to docs/tools/_code-oss-notebook.md
index 981e2b25e2..80629d064c 100644
--- a/docs/tools/vscode-notebook.qmd
+++ b/docs/tools/_code-oss-notebook.md
@@ -1,15 +1,9 @@
----
-title: VS Code Notebook Editor
----
-
-In addition to editing Quarto documents as plain-text `.qmd` files, you can also use the VS Code Notebook Editor to author `.ipynb` notebooks that are rendered with Quarto. In this article we'll review the basics of editing `.ipynb` notebooks for use with Quarto.
-
+In addition to editing Quarto documents as plain-text `.qmd` files, you can also use the {{< meta tool.name >}} Notebook Editor to author `.ipynb` notebooks that are rendered with Quarto. In this article we'll review the basics of editing `.ipynb` notebooks for use with Quarto.
## Render and Preview
-The basic workflow for editing notebooks for use with Quarto is identical to the workflow for `.qmd` files. Edit the file and then execute the **Quarto: Preview** command (you can alternatively use the Ctrl+Shift+K keyboard shortcut). You'll see a preview of the published page side by side with the notebook:
-{.border}
+{.border}
After you've done an initial **Quarto: Preview**, the preview will automatically update every time you save the notebook.
@@ -17,7 +11,7 @@ After you've done an initial **Quarto: Preview**, the preview will automatically
The first cell of your notebook should be a **Raw** cell that contains the document title, author, and any other options you need to specify. Note that you can switch the type of a cell to **Raw** using the cell type menu at the bottom right of the cell:
-{.border fig-alt="The top section of an ipynb file open in VSCode. There is a Raw cell containing yaml front matter."}
+{.border fig-alt='The top section of an ipynb file open in {{< meta tool.name >}}. There is a Raw cell containing yaml front matter.'}
In this example we specify that we want code to appear collapsed by default. There are YAML options to control many other aspects of document rendering. See the documentation on [Authoring](/docs/authoring/markdown-basics.qmd) and [Output Formats](/docs/output-formats/html-basics.qmd) for additional details.
@@ -25,7 +19,7 @@ In this example we specify that we want code to appear collapsed by default. The
Here's the underlying code for the markdown cell:
-{.border fig-alt="A snippet of an ipynb document containing a Markdown cell. The cell contains some text written in Markdown."}
+{.border fig-alt="A snippet of an ipynb document containing a Markdown cell. The cell contains some text written in Markdown."}
Note that a Quarto cross-reference (`@fig-polar`) is included in the markdown. Any valid Pandoc markdown syntax can be included in markdown cells.
@@ -33,7 +27,7 @@ Note that a Quarto cross-reference (`@fig-polar`) is included in the markdown. A
Quarto uses leading comments with a special prefix (`#|`) to denote cell options. Here we specify the `label` and `fig-cap` options so that the plot generated from the cell can be cross-referenced.
-{.border fig-alt="A snippet of a JupyterLab document containing a code cell. At the top of cell, before the code, are the Quarto chunk options '#| label: fig-polar' and '#| fig-cap: A line plot on a polar axis.'"}
+{.border fig-alt="A snippet of a JupyterLab document containing a code cell. At the top of cell, before the code, are the Quarto chunk options '#| label: fig-polar' and '#| fig-cap: A line plot on a polar axis.'"}
Note that options must appear at the very beginning of the cell. As with document front-matter, option names/values use YAML syntax.
@@ -41,7 +35,7 @@ There are many output options available, including options to optionally hide co
## Cell Execution
-{{< include ../computations/_jupyter-execute.md >}}
+{{< include /docs/computations/_jupyter-execute.md >}}
There are many other execution options available (e.g. to control caching, optimizing kernel start-up time, etc.). Learn more about these options in [Execution Options](/docs/computations/execution-options.qmd).
diff --git a/docs/visual-editor/vscode/index.qmd b/docs/tools/_code-oss-visual-editor.md
similarity index 71%
rename from docs/visual-editor/vscode/index.qmd
rename to docs/tools/_code-oss-visual-editor.md
index de98f809ff..9fda7f19fe 100644
--- a/docs/visual-editor/vscode/index.qmd
+++ b/docs/tools/_code-oss-visual-editor.md
@@ -1,12 +1,11 @@
----
-title: "Visual Editing in VS Code"
----
-
## Overview
-The [Quarto VS Code Extension](https://marketplace.visualstudio.com/items?itemName=quarto.quarto) includes a visual markdown editor that supports all of Quarto's markdown syntax including tables, citations, cross-references, footnotes, divs/spans, definition lists, attributes, raw HTML/TeX, and more:
+The [Quarto VS Code Extension](https://open-vsx.org/extension/quarto/quarto) includes a visual markdown editor that supports all of Quarto's markdown syntax including tables, citations, cross-references, footnotes, divs/spans, definition lists, attributes, raw HTML/TeX, and more:
+
+{.border .light-content fig-alt='{{< meta tool.name >}} with a document called `libraries.qmd` open in visual editing mode. The subtitle and list of items are typeset. The visual editing toolbar is visible at the top of the document.' }
+
+{.border .dark-content fig-alt='Positron with a document called `libraries.qmd` open in visual editing mode. The subtitle and list of items are typeset. The visual editing toolbar is visible at the top of the document.' }
-{.border width="609"}
You can switch between visual and source mode at any time and can even edit documents concurrently in both modes. To switch between visual and source mode:
@@ -14,19 +13,37 @@ You can switch between visual and source mode at any time and can even edit docu
2. Use the context menu from anywhere in a document:
- {.border width="609"}
+ {.border .light-content fig-alt='The context menu in with the Edit in Visual Mode command highlighted.' width="609"}
+
+ {.border .dark-content fig-alt='The context menu in with the Edit in Visual Mode command highlighted.' width="609"}
3. Use the **Edit in Visual Mode** and **Edit in Source Mode** commands:
- {.border width="609"}
+ {.border .light-content fig-alt='The command palette with the Edit in Visual Mode command highlighted.' width="609"}
+
+ {.border .dark-content fig-alt='The command palette with the Edit in Visual Mode command highlighted.' width="609"}
4. Use the editor menu:
- {.border width="609"}
+ {.border .light-content width="609" fig-alt='The editor menu with the Edit in Visual Mode command highlighted.'}
+
+ {.border .dark-content width="609" fig-alt='The editor menu with the Edit in Visual Mode command highlighted.'}
+
+
+:::{.content-hidden unless-meta="tool.is_positron"}
+5. Using the **Source**/**Visual** buttons in the toolbar:
+
+ {.border .light-content fig-alt="The toolbar in Positron with the Source and Visual buttons highlighted." width="609"}
+
+ {.border .dark-content fig-alt="The toolbar in Positron with the Source and Visual buttons highlighted." width="609"}
+:::
You can also right click a `.qmd` document in the file explorer and select the **Open With...** command, which will prompt you for the editor to open the file with:
-{.border width="609"}
+{.border .light-content width="609"}
+
+
+{.border .dark-content width="609"}
Note that this menu also provides an option to configure the default editor for `.qmd` files: use this if you want to primarily edit in visual mode and occasionally switch to source mode.
@@ -81,9 +98,9 @@ For markdown shortcuts, if you didn't intend to use a shortcut and want to rever
You can also use the catch-all ⌘ / shortcut to insert just about anything. Just execute the shortcut then type what you want to insert. For example:
::: {layout-ncol="2"}
-{fig-alt="There is a line of text (with a cursor at the end) where someone has typed '/lis'. There is a drop-down menu underneath this with options for 'Bullet List', 'Numbered List', and 'Definition List' arranged vertically. The title of each item is bolded, has a small icon to the left, and a small description in lighter gray text underneath it." width="400"}
+{fig-alt="There is a line of text (with a cursor at the end) where someone has typed '/lis'. There is a drop-down menu underneath this with options for 'Bullet List', 'Numbered List', and 'Definition List' arranged vertically. The title of each item is bolded, has a small icon to the left, and a small description in lighter gray text underneath it." width="400"}
-{fig-alt="There is a line of text (with a cursor at the end) where someone has typed '/ma'. There is a drop-down menu underneath this with options for 'Inline Math', 'Display Math', and 'Image...' arranged vertically. The title of each item is bolded, has a small icon to the left, and a small description in lighter gray text underneath it." width="400"}
+{fig-alt="There is a line of text (with a cursor at the end) where someone has typed '/ma'. There is a drop-down menu underneath this with options for 'Inline Math', 'Display Math', and 'Image...' arranged vertically. The title of each item is bolded, has a small icon to the left, and a small description in lighter gray text underneath it." width="400"}
:::
If you are at the beginning of a line (as displayed above), you can also enter plain `/` to invoke the shortcut.
@@ -92,19 +109,19 @@ If you are at the beginning of a line (as displayed above), you can also enter p
The editor toolbar includes buttons for the most commonly used formatting commands:
-{.border width="609"}
+{.border width="609"}
Additional commands are available on the **Format**, **Insert**, and **Table** menus:
| Format | Insert | Table |
|------------------------|------------------------|------------------------|
-| {.border fig-alt="The contents of the Format drop down menu."} | {.border fig-alt="The contents of the Insert drop down menu."} | {.border fig-alt="The contents of the Table drop down menu."} |
+| {.border fig-alt="The contents of the Format drop down menu."} | {.border fig-alt="The contents of the Insert drop down menu."} | {.border fig-alt="The contents of the Table drop down menu."} |
## Editor Options
-There are a variety of VS Code options available to configure the behavior of the visual editor. You can locate these options by filtering on `quarto.visualEditor` in the settings pane:
+There are a variety of {{< meta tool.name >}} options available to configure the behavior of the visual editor. You can locate these options by filtering on `quarto.visualEditor` in the settings pane:
-{.border width="609"}
+{.border width="609"}
Options enable configuration of appearance (font size, content width, etc.), markdown output (e.g. column wrapping), spell checking, and default spacing for lists.
@@ -120,7 +137,7 @@ Zotero references will also show up automatically in visual editor completions:
Items from Zotero will appear alongside items from your bibliography with a small "Z" logo juxtaposed over them. If you insert a citation from Zotero that isn't already in your bibliography then it will be automatically added to the bibliography.
-If you are running both VS Code and Zotero on your desktop, then no additional configuration is required for connecting to your Zotero library. If however you using VS Code in a web browser and/or want to access your Zotero library over the web, then a few more steps are required (see the [Zotero Web API](#zotero-web-api) section for details).
+If you are running both {{< meta tool.name >}} and Zotero on your desktop, then no additional configuration is required for connecting to your Zotero library. If however you [are using VS Code in a web browser and/or]{.content-hidden unless-meta="tool.is_vscode"} want to access your Zotero library over the web, then a few more steps are required (see the [Zotero Web API](#zotero-web-api) section for details).
### Group Libraries {#group-libraries}
@@ -132,10 +149,10 @@ After you've added a group library to the list, a sync will be performed and you
### Zotero Web API {#zotero-web-api}
-If you are using VS Code in a web browser and/or don't have Zotero installed locally, you can still access your Zotero library using the Zotero Web API (assuming you have a Zotero web account and have synced your libraries to your account).
+If you [are using VS Code in a web browser and/or]{.content-hidden unless-meta="tool.is_vscode"} don't have Zotero installed locally, you can still access your Zotero library using the Zotero Web API (assuming you have a Zotero web account and have synced your libraries to your account).
::: {.callout-tip appearance="simple"}
-If you are running VS Code on your desktop it's generally easier to also run Zotero on your desktop and access your library locally. That said, it is possible to access Zotero web libraries from VS Code on the desktop if you prefer that configuration.
+If you are running {{< meta tool.name >}} on your desktop it's generally easier to also run Zotero on your desktop and access your library locally. That said, it is possible to access Zotero web libraries from {{< meta tool.name >}} on the desktop if you prefer that configuration.
:::
#### API Access Key
@@ -200,13 +217,13 @@ Some aspects of markdown output can be customized via global, project, or file-l
You can specify these options in one of two ways:
-1. As a global or per-workspace VS Code option (you can find the options that affect markdown output by filtering on `quarto.visualEditor.markdown`).
+1. As a global or per-workspace {{< meta tool.name >}} option (you can find the options that affect markdown output by filtering on `quarto.visualEditor.markdown`).
2. Specifying them within document or project level YAML (described below).
#### Line Wrapping
-By default, the visual editor writes Markdown with no line wrapping (paragraphs all occupy a single line). However, if you prefer to insert line breaks at a particular column (e.g. 72 or 80), or to insert a line break after each sentence, you can use the `quarto.visualEditor.markdownWrap` and `quarto.visualEditor.markdownWrapColumn` options accessible from the settings editor in VS Code.
+By default, the visual editor writes Markdown with no line wrapping (paragraphs all occupy a single line). However, if you prefer to insert line breaks at a particular column (e.g. 72 or 80), or to insert a line break after each sentence, you can use the `quarto.visualEditor.markdownWrap` and `quarto.visualEditor.markdownWrapColumn` options accessible from the settings editor in {{< meta tool.name >}}.
You can also set this behavior on a per-document or per-project basis via the `wrap` option. For example, to wrap lines after 72 characters you would use this:
@@ -236,7 +253,7 @@ If you have enabled a global line wrapping option and want to turn off wrapping
#### References
-By default, references (footnotes and reference links) are written at the end of the block where their corresponding footnote appears. You can override this behavior using the `quarto.visualEditor.markdownReferences` VS Code setting or by using the `references` option within document or project YAML.
+By default, references (footnotes and reference links) are written at the end of the block where their corresponding footnote appears. You can override this behavior using the `quarto.visualEditor.markdownReferences` {{< meta tool.name >}} setting or by using the `references` option within document or project YAML.
For example, to write references at the end of sections rather than blocks you would use:
@@ -286,7 +303,7 @@ editor:
---
```
-You can alternatively enable reference links using the VS Code `quarto.visualEditor.markdownReferenceLinks` option.
+You can alternatively enable reference links using the {{< meta tool.name >}} `quarto.visualEditor.markdownReferenceLinks` option.
### Known Limitations
@@ -303,4 +320,4 @@ There are a handful of Pandoc markdown extensions not currently supported by vis
The visual editor is unable to parse non-YAML title blocks (e.g. old-style % titles or MultiMarkdown titles) and also unable to parse non top-level YAML metadata blocks. If these forms of metadata are encountered, visual mode will fail to load with a warning.
-Note that support for reference links can be enabled via the `editor: markdown: references: links` option in document or project YAML, or the VS Code `quarto.visualEditor.markdownReferenceLinks` option. Reference links will be written according the reference location option (either the `block` or `section` in which they appear, or alternatively at the end of the `document`).
+Note that support for reference links can be enabled via the `editor: markdown: references: links` option in document or project YAML, or the {{< meta tool.name >}} `quarto.visualEditor.markdownReferenceLinks` option. Reference links will be written according the reference location option (either the `block` or `section` in which they appear, or alternatively at the end of the `document`).
diff --git a/docs/tools/_examples/.gitignore b/docs/tools/_examples/.gitignore
new file mode 100644
index 0000000000..857415109b
--- /dev/null
+++ b/docs/tools/_examples/.gitignore
@@ -0,0 +1,2 @@
+*.html
+*_files/
\ No newline at end of file
diff --git a/docs/tools/_examples/500px-Celestial_spiral_with_a_twist.jpg b/docs/tools/_examples/500px-Celestial_spiral_with_a_twist.jpg
new file mode 100644
index 0000000000..e5ddb82f8c
Binary files /dev/null and b/docs/tools/_examples/500px-Celestial_spiral_with_a_twist.jpg differ
diff --git a/docs/tools/_examples/diagrams.qmd b/docs/tools/_examples/diagrams.qmd
new file mode 100644
index 0000000000..38c83ca781
--- /dev/null
+++ b/docs/tools/_examples/diagrams.qmd
@@ -0,0 +1,11 @@
+
+```{dot}
+//| echo: fenced
+graph G {
+ layout=neato
+ A -- B;
+ B -- C;
+ A -- C;
+ A -- D;
+}
+```
\ No newline at end of file
diff --git a/docs/tools/_examples/palmer-penguins.ipynb b/docs/tools/_examples/palmer-penguins.ipynb
new file mode 100644
index 0000000000..28eac5d184
--- /dev/null
+++ b/docs/tools/_examples/palmer-penguins.ipynb
@@ -0,0 +1,86 @@
+{
+ "cells": [
+ {
+ "cell_type": "raw",
+ "id": "e8aab138-d5f8-423f-b5c9-b3a099f4803b",
+ "metadata": {
+ "vscode": {
+ "languageId": "raw"
+ }
+ },
+ "source": [
+ "---\n",
+ "title: Palmer Penguins\n",
+ "author: Norah Jones\n",
+ "date: March 22, 2023\n",
+ "---"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "id": "d60062d2-fbc5-44b4-bbe2-a0a91b091b80",
+ "metadata": {
+ "tags": []
+ },
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "df = pd.read_csv(\"https://pos.it/palmer-penguins-github-csv\")\n",
+ "df = df[[\"species\", \"island\", \"year\", \"sex\", \\\n",
+ " \"bill_length_mm\", \"bill_depth_mm\"]]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "id": "a5023e8f-9166-4a12-8b9d-0d23124b6065",
+ "metadata": {
+ "tags": [
+ "import"
+ ]
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": null,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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rgl+aNw3o5nnpL6e3s8bWMNtL99EZdy4cVSvXj1KT0+n0qVLi7YojiG47MmtVNzTXrZsWfE3nzVijx073erCSRvue2cNWX49y5Xx+cL566+/6OqrrxavL168OF188cW0dm3QGUi5huz59u7dS7fffrtYDz9/9tln05gxYyguM3L33HMPzZw5k+644w6qUKGCZVuuhQsXUuvWrfPpxjEsOcJB2+effy564nhj9+zZI/rkBg0alBCCwFZgiRGeTo0sOYbDsRIfF57te3nqSno9zBLLDix3IoNac32480CZYqliMGL7gVzHMoZa+3F+lSwhLcISIzydqjV9G+msoOWUICsfIosTjgxW1+RExslqVs2uPls0MDuAgGEF7+Kml2+iwkL/t956q/Bm5wTMwYMH6bfffgu1Xf3888+UlpYmkjUbNmygLl26iGCP/84zHHSxjuxbb70lgiruk+/UqZMItDjRs2XLFjH8yBJlv/zyiwjmZs2aRSdOnFBdj9H5OEHFlcQff/yRypQpQ2vWrBFtXnEZyPGb/OGHH6hFixa2Ls6br9dHl52d7Yto2CtwMMISI8p0qhr8vKInx/Af8otqlHUskJPNCkbKeKg5K3C/mVIudSuY46D3j417RUaN94UlRtQGMSLLkEZOEDLyITKYdd/Qw8qanMgiWc2qWXVpiCZm3SbccqYA9nHTyzeRAzkOqjp06CASMQxn5xRSUlLo/fffp4yMDDr33HPpueeeE1W4559/XrRWDR48mKZNm0bNmjUTx3PF7/fffxd6shx4sZlAZmamSPoUKRKsqJxzzjmqa+EhSKPzcTWQfeQvuOAC8XzVqsGkR1yWVrOysqhUKecatoFzsE4cDwxEJlr4Pj/Oz3OGZ9bqXfTilH/oxSkr6cTJPMouoV9i5eCBM2RGTfOc7TPbXK/lrKD4obLBvRl4nZnp8q8Jzw7KlCG11rvVYacEs+4bbuCESwM/Vy49f3O+HoWSCtFLLV9yvHGfe6BYi23SukniK993AjMDCBhW8C5uOpIkKly6vOyyy0TwduONNwoVCi5fhj/PQZwCB1jccrV582aRDTty5Aj973//o2LFioVu3F6llE65Feviiy8OBXF6yJzvgQceEEHheeedR48//rgwJfADljJyHC0/88wzNHbs2Hw/BOANOFjrfXktVWcH/uPPrg3hNlmvTQ/qzzF6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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
+ "g = sns.FacetGrid(df, hue=\"species\", height=3, aspect=3.5/2)\n",
+ "g.map(plt.scatter, \"bill_length_mm\", \"bill_depth_mm\") \\\n",
+ " .add_legend()"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "name": "python"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/docs/tools/_examples/python.qmd b/docs/tools/_examples/python.qmd
new file mode 100644
index 0000000000..8d47bdf641
--- /dev/null
+++ b/docs/tools/_examples/python.qmd
@@ -0,0 +1,38 @@
+---
+title: "matplotlib demo"
+format:
+ html:
+ code-fold: true
+jupyter: python3
+---
+
+For a demonstration of a line plot on a polar axis, see @fig-polar.
+
+
+
+```{python}
+#| label: fig-polar
+#| fig-cap: "A line plot on a polar axis"
+
+import numpy as np
+import matplotlib.pyplot as plt
+
+r = np.arange(0, 2, 0.01)
+theta = 2 * np.pi * r
+fig, ax = plt.subplots(
+ subplot_kw = {'projection': 'polar'}
+)
+ax.plot(theta, r)
+ax.set_rticks([0.5, 1, 1.5, 2])
+ax.grid(True)
+plt.show()
+```
+
+{#fig-star}
+
+Photo by ALMA (ESO/NAOJ/NRAO)/H. Kim et al. - [Original](https://www.eso.org/public/images/potw1710a/), [CC BY 4.0](https://creativecommons.org/licenses/by/4.0)
+
+$$
+\theta = 2\pi r
+$$
+
diff --git a/docs/tools/_vscode-editors.md b/docs/tools/_vscode-editors.md
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/docs/tools/images/positron-code-cell-dark.png b/docs/tools/images/positron-code-cell-dark.png
new file mode 100644
index 0000000000..53f5dccb4c
Binary files /dev/null and b/docs/tools/images/positron-code-cell-dark.png differ
diff --git a/docs/tools/images/positron-code-cell.png b/docs/tools/images/positron-code-cell.png
new file mode 100644
index 0000000000..0bf1df4d3b
Binary files /dev/null and b/docs/tools/images/positron-code-cell.png differ
diff --git a/docs/tools/images/positron-equation-dark.png b/docs/tools/images/positron-equation-dark.png
new file mode 100644
index 0000000000..ec33b0a979
Binary files /dev/null and b/docs/tools/images/positron-equation-dark.png differ
diff --git a/docs/tools/images/positron-equation.png b/docs/tools/images/positron-equation.png
new file mode 100644
index 0000000000..23ad1a685e
Binary files /dev/null and b/docs/tools/images/positron-equation.png differ
diff --git a/docs/tools/images/positron-execute-cell-dark.png b/docs/tools/images/positron-execute-cell-dark.png
new file mode 100644
index 0000000000..18c96a4b6e
Binary files /dev/null and b/docs/tools/images/positron-execute-cell-dark.png differ
diff --git a/docs/tools/images/positron-execute-cell.png b/docs/tools/images/positron-execute-cell.png
new file mode 100644
index 0000000000..9763b34436
Binary files /dev/null and b/docs/tools/images/positron-execute-cell.png differ
diff --git a/docs/tools/images/positron-graphviz-dark.gif b/docs/tools/images/positron-graphviz-dark.gif
new file mode 100644
index 0000000000..ed3b1fbd79
Binary files /dev/null and b/docs/tools/images/positron-graphviz-dark.gif differ
diff --git a/docs/tools/images/positron-graphviz.gif b/docs/tools/images/positron-graphviz.gif
new file mode 100644
index 0000000000..6ca9546145
Binary files /dev/null and b/docs/tools/images/positron-graphviz.gif differ
diff --git a/docs/tools/images/positron-help-pane-dark.png b/docs/tools/images/positron-help-pane-dark.png
new file mode 100644
index 0000000000..08272abe80
Binary files /dev/null and b/docs/tools/images/positron-help-pane-dark.png differ
diff --git a/docs/tools/images/positron-help-pane.png b/docs/tools/images/positron-help-pane.png
new file mode 100644
index 0000000000..5230e105a9
Binary files /dev/null and b/docs/tools/images/positron-help-pane.png differ
diff --git a/docs/tools/images/positron-notebook.png b/docs/tools/images/positron-notebook.png
new file mode 100644
index 0000000000..79b68fcf34
Binary files /dev/null and b/docs/tools/images/positron-notebook.png differ
diff --git a/docs/tools/images/positron-outline-dark.png b/docs/tools/images/positron-outline-dark.png
new file mode 100644
index 0000000000..fdf355374e
Binary files /dev/null and b/docs/tools/images/positron-outline-dark.png differ
diff --git a/docs/tools/images/positron-outline.png b/docs/tools/images/positron-outline.png
new file mode 100644
index 0000000000..2674205537
Binary files /dev/null and b/docs/tools/images/positron-outline.png differ
diff --git a/docs/tools/images/positron-preview-button-dark.png b/docs/tools/images/positron-preview-button-dark.png
new file mode 100644
index 0000000000..252f23c1c5
Binary files /dev/null and b/docs/tools/images/positron-preview-button-dark.png differ
diff --git a/docs/tools/images/positron-preview-button.png b/docs/tools/images/positron-preview-button.png
new file mode 100644
index 0000000000..dc6bb60841
Binary files /dev/null and b/docs/tools/images/positron-preview-button.png differ
diff --git a/docs/tools/images/positron-preview-format-dark.png b/docs/tools/images/positron-preview-format-dark.png
new file mode 100644
index 0000000000..94ba6681c3
Binary files /dev/null and b/docs/tools/images/positron-preview-format-dark.png differ
diff --git a/docs/tools/images/positron-preview-format-menu-dark.png b/docs/tools/images/positron-preview-format-menu-dark.png
new file mode 100644
index 0000000000..ce746c8e93
Binary files /dev/null and b/docs/tools/images/positron-preview-format-menu-dark.png differ
diff --git a/docs/tools/images/positron-preview-format-menu.png b/docs/tools/images/positron-preview-format-menu.png
new file mode 100644
index 0000000000..878202655e
Binary files /dev/null and b/docs/tools/images/positron-preview-format-menu.png differ
diff --git a/docs/tools/images/positron-preview-format.png b/docs/tools/images/positron-preview-format.png
new file mode 100644
index 0000000000..864f634c61
Binary files /dev/null and b/docs/tools/images/positron-preview-format.png differ
diff --git a/docs/tools/images/positron-python-dark.png b/docs/tools/images/positron-python-dark.png
new file mode 100644
index 0000000000..436991cf48
Binary files /dev/null and b/docs/tools/images/positron-python-dark.png differ
diff --git a/docs/tools/images/positron-python.png b/docs/tools/images/positron-python.png
new file mode 100644
index 0000000000..e852fa41f5
Binary files /dev/null and b/docs/tools/images/positron-python.png differ
diff --git a/docs/tools/images/positron-render-command-dark.png b/docs/tools/images/positron-render-command-dark.png
new file mode 100644
index 0000000000..5606daf7ab
Binary files /dev/null and b/docs/tools/images/positron-render-command-dark.png differ
diff --git a/docs/tools/images/positron-render-command.png b/docs/tools/images/positron-render-command.png
new file mode 100644
index 0000000000..92ae1b143d
Binary files /dev/null and b/docs/tools/images/positron-render-command.png differ
diff --git a/docs/tools/images/positron-render-dark.png b/docs/tools/images/positron-render-dark.png
new file mode 100644
index 0000000000..32ae72e3e0
Binary files /dev/null and b/docs/tools/images/positron-render-dark.png differ
diff --git a/docs/tools/images/positron-render-on-save-dark.png b/docs/tools/images/positron-render-on-save-dark.png
new file mode 100644
index 0000000000..87527ee074
Binary files /dev/null and b/docs/tools/images/positron-render-on-save-dark.png differ
diff --git a/docs/tools/images/positron-render-on-save.png b/docs/tools/images/positron-render-on-save.png
new file mode 100644
index 0000000000..78231403ae
Binary files /dev/null and b/docs/tools/images/positron-render-on-save.png differ
diff --git a/docs/tools/images/positron-render.png b/docs/tools/images/positron-render.png
new file mode 100644
index 0000000000..c64aa02bab
Binary files /dev/null and b/docs/tools/images/positron-render.png differ
diff --git a/docs/tools/images/positron-snippets-dark.png b/docs/tools/images/positron-snippets-dark.png
new file mode 100644
index 0000000000..02ee0efe3c
Binary files /dev/null and b/docs/tools/images/positron-snippets-dark.png differ
diff --git a/docs/tools/images/positron-snippets.png b/docs/tools/images/positron-snippets.png
new file mode 100644
index 0000000000..dbc085a558
Binary files /dev/null and b/docs/tools/images/positron-snippets.png differ
diff --git a/docs/tools/images/positron-visual-editor-context-menu-dark.png b/docs/tools/images/positron-visual-editor-context-menu-dark.png
new file mode 100644
index 0000000000..536dd5bed4
Binary files /dev/null and b/docs/tools/images/positron-visual-editor-context-menu-dark.png differ
diff --git a/docs/tools/images/positron-visual-editor-context-menu.png b/docs/tools/images/positron-visual-editor-context-menu.png
new file mode 100644
index 0000000000..24d51a3f12
Binary files /dev/null and b/docs/tools/images/positron-visual-editor-context-menu.png differ
diff --git a/docs/tools/images/positron-visual-editor-dark.png b/docs/tools/images/positron-visual-editor-dark.png
new file mode 100644
index 0000000000..a9a7a88632
Binary files /dev/null and b/docs/tools/images/positron-visual-editor-dark.png differ
diff --git a/docs/tools/images/positron-visual-editor-default-mode-dark.png b/docs/tools/images/positron-visual-editor-default-mode-dark.png
new file mode 100644
index 0000000000..a135d0a964
Binary files /dev/null and b/docs/tools/images/positron-visual-editor-default-mode-dark.png differ
diff --git a/docs/tools/images/positron-visual-editor-default-mode.png b/docs/tools/images/positron-visual-editor-default-mode.png
new file mode 100644
index 0000000000..dd3f612a9a
Binary files /dev/null and b/docs/tools/images/positron-visual-editor-default-mode.png differ
diff --git a/docs/tools/images/positron-visual-editor-toolbar-dark.png b/docs/tools/images/positron-visual-editor-toolbar-dark.png
new file mode 100644
index 0000000000..393ea2c6e7
Binary files /dev/null and b/docs/tools/images/positron-visual-editor-toolbar-dark.png differ
diff --git a/docs/tools/images/positron-visual-editor-toolbar-toggle-dark.png b/docs/tools/images/positron-visual-editor-toolbar-toggle-dark.png
new file mode 100644
index 0000000000..592cd1735b
Binary files /dev/null and b/docs/tools/images/positron-visual-editor-toolbar-toggle-dark.png differ
diff --git a/docs/tools/images/positron-visual-editor-toolbar-toggle.png b/docs/tools/images/positron-visual-editor-toolbar-toggle.png
new file mode 100644
index 0000000000..af4b8070ab
Binary files /dev/null and b/docs/tools/images/positron-visual-editor-toolbar-toggle.png differ
diff --git a/docs/tools/images/positron-visual-editor-toolbar.png b/docs/tools/images/positron-visual-editor-toolbar.png
new file mode 100644
index 0000000000..b246d98d83
Binary files /dev/null and b/docs/tools/images/positron-visual-editor-toolbar.png differ
diff --git a/docs/tools/images/positron-visual-editor.png b/docs/tools/images/positron-visual-editor.png
new file mode 100644
index 0000000000..6429b7fc7f
Binary files /dev/null and b/docs/tools/images/positron-visual-editor.png differ
diff --git a/docs/tools/images/positron-visual-mode-command-dark.png b/docs/tools/images/positron-visual-mode-command-dark.png
new file mode 100644
index 0000000000..dbabdf4215
Binary files /dev/null and b/docs/tools/images/positron-visual-mode-command-dark.png differ
diff --git a/docs/tools/images/positron-visual-mode-command.png b/docs/tools/images/positron-visual-mode-command.png
new file mode 100644
index 0000000000..36fea00d79
Binary files /dev/null and b/docs/tools/images/positron-visual-mode-command.png differ
diff --git a/docs/tools/images/positron-visual-mode-menu-dark.png b/docs/tools/images/positron-visual-mode-menu-dark.png
new file mode 100644
index 0000000000..3f3382d25c
Binary files /dev/null and b/docs/tools/images/positron-visual-mode-menu-dark.png differ
diff --git a/docs/tools/images/positron-visual-mode-menu.png b/docs/tools/images/positron-visual-mode-menu.png
new file mode 100644
index 0000000000..33b10f927c
Binary files /dev/null and b/docs/tools/images/positron-visual-mode-menu.png differ
diff --git a/docs/tools/images/positron-workspace-symbols-dark.png b/docs/tools/images/positron-workspace-symbols-dark.png
new file mode 100644
index 0000000000..22571a4716
Binary files /dev/null and b/docs/tools/images/positron-workspace-symbols-dark.png differ
diff --git a/docs/tools/images/positron-workspace-symbols.png b/docs/tools/images/positron-workspace-symbols.png
new file mode 100644
index 0000000000..0894c27d43
Binary files /dev/null and b/docs/tools/images/positron-workspace-symbols.png differ
diff --git a/docs/tools/images/positron-yaml-completion-dark.png b/docs/tools/images/positron-yaml-completion-dark.png
new file mode 100644
index 0000000000..d798009c4f
Binary files /dev/null and b/docs/tools/images/positron-yaml-completion-dark.png differ
diff --git a/docs/tools/images/positron-yaml-completion.png b/docs/tools/images/positron-yaml-completion.png
new file mode 100644
index 0000000000..27c91ccdfb
Binary files /dev/null and b/docs/tools/images/positron-yaml-completion.png differ
diff --git a/docs/tools/images/positron-yaml-diagnostics-dark.png b/docs/tools/images/positron-yaml-diagnostics-dark.png
new file mode 100644
index 0000000000..2078625e9a
Binary files /dev/null and b/docs/tools/images/positron-yaml-diagnostics-dark.png differ
diff --git a/docs/tools/images/positron-yaml-diagnostics.png b/docs/tools/images/positron-yaml-diagnostics.png
new file mode 100644
index 0000000000..d7dd959386
Binary files /dev/null and b/docs/tools/images/positron-yaml-diagnostics.png differ
diff --git a/docs/tools/images/vscode-code-cell-dark.png b/docs/tools/images/vscode-code-cell-dark.png
new file mode 100644
index 0000000000..2bbeed9cde
Binary files /dev/null and b/docs/tools/images/vscode-code-cell-dark.png differ
diff --git a/docs/tools/images/vscode-equation-dark.png b/docs/tools/images/vscode-equation-dark.png
new file mode 100644
index 0000000000..d84adf5ed7
Binary files /dev/null and b/docs/tools/images/vscode-equation-dark.png differ
diff --git a/docs/tools/images/vscode-execute-cell-dark.png b/docs/tools/images/vscode-execute-cell-dark.png
new file mode 100644
index 0000000000..2003ae82e3
Binary files /dev/null and b/docs/tools/images/vscode-execute-cell-dark.png differ
diff --git a/docs/tools/images/vscode-outline-dark.png b/docs/tools/images/vscode-outline-dark.png
new file mode 100644
index 0000000000..085e9d336a
Binary files /dev/null and b/docs/tools/images/vscode-outline-dark.png differ
diff --git a/docs/tools/images/vscode-preview-button-dark.png b/docs/tools/images/vscode-preview-button-dark.png
new file mode 100644
index 0000000000..22eb317869
Binary files /dev/null and b/docs/tools/images/vscode-preview-button-dark.png differ
diff --git a/docs/tools/images/vscode-preview-format-dark.png b/docs/tools/images/vscode-preview-format-dark.png
new file mode 100644
index 0000000000..118cb040ac
Binary files /dev/null and b/docs/tools/images/vscode-preview-format-dark.png differ
diff --git a/docs/tools/images/vscode-preview-format-menu-dark.png b/docs/tools/images/vscode-preview-format-menu-dark.png
new file mode 100644
index 0000000000..8327e63053
Binary files /dev/null and b/docs/tools/images/vscode-preview-format-menu-dark.png differ
diff --git a/docs/tools/images/vscode-preview-icon-white.svg b/docs/tools/images/vscode-preview-icon-white.svg
new file mode 100644
index 0000000000..737e17087c
--- /dev/null
+++ b/docs/tools/images/vscode-preview-icon-white.svg
@@ -0,0 +1,3 @@
+
diff --git a/docs/tools/images/vscode-preview-settings-dark.png b/docs/tools/images/vscode-preview-settings-dark.png
new file mode 100644
index 0000000000..8fd5506a1d
Binary files /dev/null and b/docs/tools/images/vscode-preview-settings-dark.png differ
diff --git a/docs/tools/images/vscode-preview-settings.png b/docs/tools/images/vscode-preview-settings.png
index c3248cc75b..244cc5b622 100644
Binary files a/docs/tools/images/vscode-preview-settings.png and b/docs/tools/images/vscode-preview-settings.png differ
diff --git a/docs/tools/images/vscode-render-command-dark.png b/docs/tools/images/vscode-render-command-dark.png
new file mode 100644
index 0000000000..79b5eb10c8
Binary files /dev/null and b/docs/tools/images/vscode-render-command-dark.png differ
diff --git a/docs/tools/images/vscode-render-dark.png b/docs/tools/images/vscode-render-dark.png
new file mode 100644
index 0000000000..72c669c67a
Binary files /dev/null and b/docs/tools/images/vscode-render-dark.png differ
diff --git a/docs/tools/images/vscode-render-on-save-dark.png b/docs/tools/images/vscode-render-on-save-dark.png
new file mode 100644
index 0000000000..c4ee430a1f
Binary files /dev/null and b/docs/tools/images/vscode-render-on-save-dark.png differ
diff --git a/docs/tools/images/vscode-render-on-save.png b/docs/tools/images/vscode-render-on-save.png
index 143068a008..a04aa098fe 100644
Binary files a/docs/tools/images/vscode-render-on-save.png and b/docs/tools/images/vscode-render-on-save.png differ
diff --git a/docs/tools/images/vscode-snippets-dark.png b/docs/tools/images/vscode-snippets-dark.png
new file mode 100644
index 0000000000..d9c8ad44ea
Binary files /dev/null and b/docs/tools/images/vscode-snippets-dark.png differ
diff --git a/docs/visual-editor/images/vscode-visual-editor-context-menu.png b/docs/tools/images/vscode-visual-editor-context-menu-dark.png
similarity index 100%
rename from docs/visual-editor/images/vscode-visual-editor-context-menu.png
rename to docs/tools/images/vscode-visual-editor-context-menu-dark.png
diff --git a/docs/tools/images/vscode-visual-editor-context-menu.png b/docs/tools/images/vscode-visual-editor-context-menu.png
new file mode 100644
index 0000000000..9719e188d4
Binary files /dev/null and b/docs/tools/images/vscode-visual-editor-context-menu.png differ
diff --git a/docs/visual-editor/images/vscode-visual-editor.png b/docs/tools/images/vscode-visual-editor-dark.png
similarity index 100%
rename from docs/visual-editor/images/vscode-visual-editor.png
rename to docs/tools/images/vscode-visual-editor-dark.png
diff --git a/docs/visual-editor/images/vscode-visual-editor-default-mode.png b/docs/tools/images/vscode-visual-editor-default-mode-dark.png
similarity index 100%
rename from docs/visual-editor/images/vscode-visual-editor-default-mode.png
rename to docs/tools/images/vscode-visual-editor-default-mode-dark.png
diff --git a/docs/tools/images/vscode-visual-editor-default-mode.png b/docs/tools/images/vscode-visual-editor-default-mode.png
new file mode 100644
index 0000000000..5a906c1377
Binary files /dev/null and b/docs/tools/images/vscode-visual-editor-default-mode.png differ
diff --git a/docs/visual-editor/images/vscode-visual-editor-format-menu.png b/docs/tools/images/vscode-visual-editor-format-menu.png
similarity index 100%
rename from docs/visual-editor/images/vscode-visual-editor-format-menu.png
rename to docs/tools/images/vscode-visual-editor-format-menu.png
diff --git a/docs/visual-editor/images/vscode-visual-editor-insert-menu.png b/docs/tools/images/vscode-visual-editor-insert-menu.png
similarity index 100%
rename from docs/visual-editor/images/vscode-visual-editor-insert-menu.png
rename to docs/tools/images/vscode-visual-editor-insert-menu.png
diff --git a/docs/visual-editor/images/vscode-visual-editor-options.png b/docs/tools/images/vscode-visual-editor-options.png
similarity index 100%
rename from docs/visual-editor/images/vscode-visual-editor-options.png
rename to docs/tools/images/vscode-visual-editor-options.png
diff --git a/docs/visual-editor/images/vscode-visual-editor-table-menu.png b/docs/tools/images/vscode-visual-editor-table-menu.png
similarity index 100%
rename from docs/visual-editor/images/vscode-visual-editor-table-menu.png
rename to docs/tools/images/vscode-visual-editor-table-menu.png
diff --git a/docs/visual-editor/images/vscode-visual-editor-toolbar.png b/docs/tools/images/vscode-visual-editor-toolbar.png
similarity index 100%
rename from docs/visual-editor/images/vscode-visual-editor-toolbar.png
rename to docs/tools/images/vscode-visual-editor-toolbar.png
diff --git a/docs/tools/images/vscode-visual-editor.png b/docs/tools/images/vscode-visual-editor.png
new file mode 100644
index 0000000000..3147475a48
Binary files /dev/null and b/docs/tools/images/vscode-visual-editor.png differ
diff --git a/docs/visual-editor/images/vscode-visual-mode-command.png b/docs/tools/images/vscode-visual-mode-command-dark.png
similarity index 100%
rename from docs/visual-editor/images/vscode-visual-mode-command.png
rename to docs/tools/images/vscode-visual-mode-command-dark.png
diff --git a/docs/tools/images/vscode-visual-mode-command.png b/docs/tools/images/vscode-visual-mode-command.png
new file mode 100644
index 0000000000..c47683d182
Binary files /dev/null and b/docs/tools/images/vscode-visual-mode-command.png differ
diff --git a/docs/visual-editor/images/vscode-visual-mode-menu-context.png b/docs/tools/images/vscode-visual-mode-menu-context-dark.png
similarity index 100%
rename from docs/visual-editor/images/vscode-visual-mode-menu-context.png
rename to docs/tools/images/vscode-visual-mode-menu-context-dark.png
diff --git a/docs/tools/images/vscode-visual-mode-menu-context.png b/docs/tools/images/vscode-visual-mode-menu-context.png
new file mode 100644
index 0000000000..a7d1e81cd1
Binary files /dev/null and b/docs/tools/images/vscode-visual-mode-menu-context.png differ
diff --git a/docs/visual-editor/images/vscode-visual-mode-menu.png b/docs/tools/images/vscode-visual-mode-menu-dark.png
similarity index 100%
rename from docs/visual-editor/images/vscode-visual-mode-menu.png
rename to docs/tools/images/vscode-visual-mode-menu-dark.png
diff --git a/docs/tools/images/vscode-visual-mode-menu.png b/docs/tools/images/vscode-visual-mode-menu.png
new file mode 100644
index 0000000000..41035de9f9
Binary files /dev/null and b/docs/tools/images/vscode-visual-mode-menu.png differ
diff --git a/docs/tools/images/vscode-workspace-symbols-dark.png b/docs/tools/images/vscode-workspace-symbols-dark.png
new file mode 100644
index 0000000000..1721aa0f1c
Binary files /dev/null and b/docs/tools/images/vscode-workspace-symbols-dark.png differ
diff --git a/docs/tools/images/vscode-yaml-completion-dark.png b/docs/tools/images/vscode-yaml-completion-dark.png
new file mode 100644
index 0000000000..2371f25c09
Binary files /dev/null and b/docs/tools/images/vscode-yaml-completion-dark.png differ
diff --git a/docs/tools/images/vscode-yaml-diagnostics-dark.png b/docs/tools/images/vscode-yaml-diagnostics-dark.png
new file mode 100644
index 0000000000..1f7de110a0
Binary files /dev/null and b/docs/tools/images/vscode-yaml-diagnostics-dark.png differ
diff --git a/docs/tools/positron/_metadata.yml b/docs/tools/positron/_metadata.yml
new file mode 100644
index 0000000000..4a4784214e
--- /dev/null
+++ b/docs/tools/positron/_metadata.yml
@@ -0,0 +1,4 @@
+tool:
+ name: Positron
+ is_positron: true
+ prefix: positron
\ No newline at end of file
diff --git a/docs/tools/positron/index.qmd b/docs/tools/positron/index.qmd
new file mode 100644
index 0000000000..e7739c4dda
--- /dev/null
+++ b/docs/tools/positron/index.qmd
@@ -0,0 +1,27 @@
+---
+title: Positron
+---
+
+## Overview
+
+Positron bundles both the Quarto CLI and the VS Code Quarto extension so it comes ready to work with Quarto out-of-the-box.
+
+The [Quarto VS Code Extension](https://open-vsx.org/extension/quarto/quarto) provides the support for Quarto in Positron, including:
+
+- Integrated render and preview for Quarto documents.
+- Syntax highlighting for markdown and embedded languages
+- Completion and diagnostics for YAML options
+- Completion for embedded languages (e.g. Python, R, Julia, etc.)
+- Commands and key-bindings for running cells and selected lines.
+- Live preview for LaTeX math as well as Mermaid and Graphviz diagrams
+
+The Quarto extension integrates directly with Positron's native R and Python features.
+For example, here the Quarto extension runs a Python cell in the active Python Console and shows a preview of an included image.
+
+{.border .preview-image .light-content fig-alt="Screen shot of Positron editor with three vertical sections. The leftmost includes the file explorer, and quarto assist pane. The second pane is the source code for a quarto file with python code, and the active Python Console. The third shows the Environment and Plots for the active console populated with the output of the code cells."}
+
+{.border .dark-content .preview-image fig-alt="Screen shot of Positron editor with three vertical sections. The leftmost includes the file explorer, and quarto assist pane. The second pane is the source code for a quarto file with python code, and the active Python Console. The third shows the Environment and Plots for the active console populated with the output of the code cells."}
+
+The Quarto extension also works well with other extensions bundled with Positron, like Jupyter extension, and those you might install separately, like the Julia extension.
+
+{{< include ../_code-oss-editors.md >}}
diff --git a/docs/tools/positron/notebook.qmd b/docs/tools/positron/notebook.qmd
new file mode 100644
index 0000000000..aafef51741
--- /dev/null
+++ b/docs/tools/positron/notebook.qmd
@@ -0,0 +1,5 @@
+---
+title: Positron Notebook Editor
+---
+
+{{< include ../_code-oss-notebook.md >}}
\ No newline at end of file
diff --git a/docs/tools/positron/visual-editor.qmd b/docs/tools/positron/visual-editor.qmd
new file mode 100644
index 0000000000..5abfa5c248
--- /dev/null
+++ b/docs/tools/positron/visual-editor.qmd
@@ -0,0 +1,5 @@
+---
+title: "Visual Editing in Positron"
+---
+
+{{< include ../_code-oss-visual-editor.md >}}
\ No newline at end of file
diff --git a/docs/tools/text-editors.qmd b/docs/tools/text-editors.qmd
index 58d87d53d0..035d6f37a4 100644
--- a/docs/tools/text-editors.qmd
+++ b/docs/tools/text-editors.qmd
@@ -6,7 +6,7 @@ title: "Text Editors"
If you are editing plain markdown documents (with no embedded computations) you may want to use your favorite text editor (Vim, Emacs, Sublime, etc.) to author Quarto documents. This articles provides some guidance on the optimal workflow when using text editors with Quarto.
-Note that if you are using either the [Jupyter](https://jupyter.org/) or [Knitr](https://yihui.org/knitr/) computational engine you will likely be better off using [JupyterLab](jupyter-lab.qmd) or [VS Code](vscode.qmd) (for .ipynb notebooks) or [RStudio](rstudio.qmd) (for .qmd documents) as these environments provide code-completion, incremental cell execution, and other useful tools for working with executable code.
+Note that if you are using either the [Jupyter](https://jupyter.org/) or [Knitr](https://yihui.org/knitr/) computational engine you will likely be better off using [JupyterLab](jupyter-lab.qmd) or [VS Code](vscode/index.qmd) (for .ipynb notebooks) or [Positron](positron/index.qmd) or [RStudio](rstudio.qmd) (for .qmd documents) as these environments provide code-completion, incremental cell execution, and other useful tools for working with executable code.
## Workflow
diff --git a/docs/tools/vscode.qmd b/docs/tools/vscode.qmd
deleted file mode 100644
index ef4b446a6d..0000000000
--- a/docs/tools/vscode.qmd
+++ /dev/null
@@ -1,202 +0,0 @@
----
-title: VS Code
-resources:
- - images/vscode-*.png
----
-
-## Overview
-
-Quarto can render Jupyter notebooks represented as plain text (`.qmd`) or as a normal notebook file (`.ipynb`). The [Quarto VS Code Extension](https://marketplace.visualstudio.com/items?itemName=quarto.quarto) includes many tools that enhance working these documents, including:
-
-- Integrated render and preview for Quarto documents.
-- Syntax highlighting for markdown and embedded languages
-- Completion and diagnostics for YAML options
-- Completion for embedded languages (e.g. Python, R, Julia, etc.)
-- Commands and key-bindings for running cells and selected lines.
-- Live preview for LaTeX math as well as Mermaid and Graphviz diagrams
-
-The Quarto extension integrates directly with the Jupyter, R, and Julia extensions. For example, here the Quarto extension runs a Python cell and shows contextual help for Python functions:
-
-{.border .preview-image fig-alt="Screen shot of VS Code editor with three vertical sections. The leftmost includes the file explorer, and quarto help. The second pane is the source code for a quarto file with python code. The third is interactive with Python running and output of the code cells shown."}
-
-You can install the Quarto extension from the [VS Code Extension Marketplace](https://marketplace.visualstudio.com/items?itemName=quarto.quarto) or the [Open VSX Registry](https://open-vsx.org/extension/quarto/quarto).
-
-## VS Code Editors
-
-Depending on your preference and the task at hand, you can author documents for rendering by Quarto using three different editors within VS Code:
-
-1. The source code editor for editing `.qmd` documents as text.
-
-2. The [Visual Editor](/docs/visual-editor/vscode/index.qmd) for WYSIWYG editing of `.qmd` documents.
-
-3. The [Notebook Editor](/docs/tools/vscode-notebook.qmd) for editing `.ipynb` notebooks.
-
-We'll cover the source code editor below, however you might also want to consult the documentation for the [Visual Editor](/docs/visual-editor/vscode/index.qmd) or [Notebook Editor](/docs/tools/vscode-notebook.qmd) after you've become familiar with the basics.
-
-## Render and Preview
-
-The Quarto VS Code extension includes commands and keyboard shortcuts for rendering Quarto documents (both standalone and within websites or books). After rendering, `quarto preview` is used behind the scenes to provide a preview pane within VS Code alongside your document:
-
-{.border fig-alt="Two windows arranged side by side. The window on the left is a qmd file opened in VSCode. The contents of this document are the same as the first part of the Getting Started: Welcome section of this website. The contents of this document are rendered by Quarto in the window on the right."}
-
-To render and preview, execute the **Quarto: Preview** command. You can alternatively use the Ctrl+Shift+K keyboard shortcut, or the **Preview** button ({fig-alt="Preview icon"}) at the top right of the editor:
-
-{.border fig-alt="The top of the Visual Studio code editor. The right side of the editor tab area includes a Preview button."}
-
-::: {.callout-note appearance="simple"}
-Note that on the Mac you should use `Cmd` rather than `Ctrl` as the prefix for all Quarto keyboard shortcuts.
-:::
-
-### Other Formats
-
-The **Quarto: Preview** command renders the default format of the currently active document. If you want to preview a different format, use the **Quarto: Preview Format** command:
-
-{.border fig-alt="The top of the Visual Studio code editor. The editor title menu is expanded and the Preview Format command is available on the menu."}
-
-When you execute **Preview Format**, you'll see a quick pick list of formats to choose from (any formats declared in the document as well as some standard formats like PDF and MS Word):
-
-{.border fig-alt="The top of the Visual Studio code editor. The command pallette shows a quick pick list of available formats to preview."}
-
-After previewing a different format, the **Quarto: Preview** command and Ctrl+Shift+K keyboard shortcut will be automatically rebound to the newly selected format for the duration of the current preview. To switch back to previewing the original format, use **Quarto: Preview Format** command again.
-
-::: {.callout-note appearance="simple"}
-Embedded preview is currently supported for HTML and PDF based formats (including `revealjs` and `beamer` slideshows). However, for Word and other formats you need to use an appropriate external program to preview the output.
-:::
-
-### Render Command
-
-The **Quarto: Preview** command is what you will most commonly use while authoring documents. If you have a single format (e.g. HTML or PDF) then previewing also renders your document so it's ready for distribution once you are happy with the output. However, if you have multiple formats will need to explicitly render them (as preview only renders a single format at a time). You can do this with the **Quarto: Render Document** command:
-
-{.border fig-alt="The top of the Visual Studio code editor. The command pallette shows a quick pick list of available formats to render."}
-
-If you have multiple declared formats you can render all of them. You can also selectively render any of the declared formats or other standard formats like PDF and MS Word.
-
-## Render on Save
-
-By default Quarto does not automatically render `.qmd` or `.ipynb` files when you save them. This is because rendering might be very time consuming (e.g. it could include long running computations) and it's good to have the option to save periodically without doing a full render.
-
-However, you can configure the Quarto extension to automatically render whenever you save. You can do this either within VS Code settings or within the YAML options for your project or document. To configure the VS Code setting, search for `quarto.render` in settings and you'll find the **Render on Save** option:
-
-{.border fig-alt="The Visual Studio Code Quarto render settings. The Render on Save option is checked."}
-
-You might also want to control this behavior on a per-document or per-project basis. If you include the `editor: render-on-save` option in your document or project YAML it will supersede whatever your VS Code setting is. For example:
-
-``` yaml
-editor:
- render-on-save: true
-```
-
-## External Preview
-
-If you prefer to use an external browser for preview (or have no preview triggered at all by rendering) you can use the **Preview Type** option to specify an alternate behavior:
-
-{.border fig-alt="VS Code settings interface with 'quarto preview type' entered into the search bar. User settings reveals Quarto > Render: Preview Type, with a dropdown to select location for document preview after render. The default, internal, is selected, which previews using a side-by-side panel in VS Code. The other two options in the dropdown are external and none."}
-
-## Code Cells
-
-There are a variety of tools that make it easier to edit and execute code cells. Editing tools include syntax highlighting, code folding, code completion, and signature tips:
-
-{.border fig-alt="A Quarto document in VS Code with a python code cell. There is a code completion helper active in the python cell."}
-
-For Python, R, and Julia cells, commands are available to execute the current cell, previous cells, or the currently selected line(s). Cell output is shown side by side in the Jupyter interactive console:
-
-{.border fig-alt="VS Code with two panes open, vscode.qmd source code on the right, and the interactive output of that code shown in a second pane on the left."}
-
-Here are all of the commands and keyboard shortcuts available for executing cells:
-
-| Quarto Command | Keyboard Shortcut |
-|----------------------|---------------------|
-| Run Current Cell | ⇧⌘ Enter |
-| Run Selected Line(s) | ⌘ Enter |
-| Run Next Cell | ⌥⌘ N |
-| Run Previous Cell | ⌥⌘ P |
-| Run All Cells | ⌥⌘ R |
-| Run Cells Above | ⇧⌥⌘ P |
-| Run Cells Below | ⇧⌥⌘ N |
-
-You can quickly insert a new code cell using the Ctrl+Shift+I keyboard shortcut.
-
-Enhanced features for embedded languages (e.g. completion, code execution) can be enabled by installing the most recent version(s) of these extensions:
-
-- [Python Extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python) and [Jupyter Extension](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter)
-- [R Extension](https://marketplace.visualstudio.com/items?itemName=REditorSupport.r)
-- [Julia Extension](https://marketplace.visualstudio.com/items?itemName=julialang.language-julia)
-
-### Execution Directory
-
-Embedded language extensions handle the working directory for execution in distinct ways:
-
-1. The Python Extension runs code within the directory of the source file from which code is executed. You can customize this behavior using the `jupyter.notebookFileRoot` option.
-
-2. The R Extension runs code within the working directory of the R session running in the **R Interactive** terminal. You can change this directory manually using `setwd()`.
-
-3. The Julia Extension runs code within the working directory of the Julia session running in the **Julia REPL** terminal. You can change this directory manually using `cd()`.
-
-
-## Contextual Assistance
-
-Execute the **Quarto: Show Assist Panel** command to show a panel in the sidebar that shows contextual assistance depending on the current cursor location:
-
-1) Help/documentation is shown when editing code
-2) A realtime preview of equations is shown when editing LaTeX math
-3) Thumbnail previews are shown when your cursor is located on a markdown image.
-
-For example, below help on the matplotlib `plot()` function is shown automatically when the cursor is located on the function:
-
-{.border fig-alt="Screenshot of VS Code editor with three vertical sections. The leftmost includes the file explorer, and quarto help. The second pane is the source code for a quarto file with python code. The third is interactive with Python running and output of the code cells shown."}
-
-## Live Preview
-
-While editing LaTeX math or Mermaid and Graphviz diagrams, click the **Preview** button above the code (or use the Ctrl+Shift+L keyboard shortcut) to open a live preview which will update automatically as you edit.
-
-Here we see a preview of the currently edited LaTeX equation displayed in the Quarto assist panel:
-
-{.border fig-alt="Quarto document open in VS Code with a LaTeX equation shown in the 'Quarto Equation' section of the panel to the left of the document."}
-
-Here we see a Graphviz diagram preview automatically updated as we edit:
-
-{.border fig-alt="A Quarto document being edited in Visual Studio Code, with a live preview of the currently edited diagram shown in a pane to the right"}
-
-## YAML Intelligence
-
-YAML code completion is available for project files, YAML front matter, and executable cell options:
-
-{.border fig-alt="Quarto document with YAML being edited. Next to the cursor code completion helper is open showing YAML options beginning with the letters preceding the cursor ('co')."}
-
-If you have incorrect YAML it will also be highlighted when documents are saved:
-
-{.border fig-alt="Quarto document YAML metadata with an incorrect option underlined in red."}
-
-## Code Snippets
-
-Code snippets are templates that make it easier to enter repeating code patterns (e.g. code blocks, callouts, divs, etc.). Execute the **Insert Snippet** command within a Quarto document to insert a markdown snippet:
-
-{.border fig-alt="Quarto document with dropdown 'Select a snippet' dropdown, the first item (bold - insert bold text) is selected."}
-
-### IntelliSense
-
-VSCode uses IntelliSense to suggest snippets or possible values for a specific function while typing. This is turned off by default for snippets, but not for values. To enable snippet suggestions in IntelliSense while typing or when selecting a text snippet and pressing `ctrl+space`, the setting `editor.snippetSuggestions` needs to be set to a value other than `none` (for example to `inline`).
-
-- Press `F1` and search for `Preferences: Open Settings (UI)` or `File` \> `Preferences` \> `Settings`
-- Search for following term `@lang:quarto editor.snippetSuggestions`. `Editor: Snippet Suggestions` should show up.
-- Change value to a not-`none` value.
-
-## Document Navigation
-
-If you have a large document use the outline view for quick navigation between sections:
-
-{.border fig-alt="Quarto document with outline view shown in left-hand panel. The outline shows the section headers of the quarto documents."}
-
-You can also use the **Go to Symbol in Editor** command or keyboard shortcut Ctrl+Shift+O for type-ahead navigation of the current document's outline.
-
-Use the **Go to File** command Ctrl+P to navigate to other files and the **Go to Symbol in Workspace** command Ctrl+T for type-ahead navigation to all headings in the workspace:
-
-{.border fig-alt="Quarto document in VS Code with command palette open showing the files in the project with the entered term, 'margin'."}
-
-## Learning More
-
-Besides the traditional source editor described above, you can also use one of the following other editors depending on your preferences and task at hand:
-
-1. The [Visual Editor](/docs/visual-editor/vscode/index.qmd) for WYSIWYG editing of `.qmd` documents.
-
-2. The [Notebook Editor](/docs/tools/vscode-notebook.qmd) for editing `.ipynb` notebooks.
diff --git a/docs/tools/vscode/_metadata.yml b/docs/tools/vscode/_metadata.yml
new file mode 100644
index 0000000000..2d106f4bcf
--- /dev/null
+++ b/docs/tools/vscode/_metadata.yml
@@ -0,0 +1,4 @@
+tool:
+ name: VS Code
+ is_vscode: true
+ prefix: vscode
\ No newline at end of file
diff --git a/docs/tools/vscode/index.qmd b/docs/tools/vscode/index.qmd
new file mode 100644
index 0000000000..884431e388
--- /dev/null
+++ b/docs/tools/vscode/index.qmd
@@ -0,0 +1,24 @@
+---
+title: VS Code
+aliases:
+ - /docs/tools/vscode.html
+---
+
+## Overview
+
+Quarto can render Jupyter notebooks represented as plain text (`.qmd`) or as a normal notebook file (`.ipynb`). The [Quarto VS Code Extension](https://marketplace.visualstudio.com/items?itemName=quarto.quarto) includes many tools that enhance working these documents, including:
+
+- Integrated render and preview for Quarto documents.
+- Syntax highlighting for markdown and embedded languages
+- Completion and diagnostics for YAML options
+- Completion for embedded languages (e.g. Python, R, Julia, etc.)
+- Commands and key-bindings for running cells and selected lines.
+- Live preview for LaTeX math as well as Mermaid and Graphviz diagrams
+
+The Quarto extension integrates directly with the Jupyter, R, and Julia extensions. For example, here the Quarto extension runs a Python cell and shows contextual help for Python functions:
+
+{.border .preview-image fig-alt="Screen shot of VS Code editor with three vertical sections. The leftmost includes the file explorer, and quarto help. The second pane is the source code for a quarto file with python code. The third is interactive with Python running and output of the code cells shown."}
+
+You can install the Quarto extension from the [VS Code Extension Marketplace](https://marketplace.visualstudio.com/items?itemName=quarto.quarto) or the [Open VSX Registry](https://open-vsx.org/extension/quarto/quarto).
+
+{{< include ../_code-oss-editors.md >}}
\ No newline at end of file
diff --git a/docs/tools/vscode/notebook.qmd b/docs/tools/vscode/notebook.qmd
new file mode 100644
index 0000000000..8b23bdf96b
--- /dev/null
+++ b/docs/tools/vscode/notebook.qmd
@@ -0,0 +1,7 @@
+---
+title: VS Code Notebook Editor
+aliases:
+ - /docs/tools/vscode-notebook.html
+---
+
+{{< include ../_code-oss-notebook.md >}}
\ No newline at end of file
diff --git a/docs/tools/vscode/visual-editor.qmd b/docs/tools/vscode/visual-editor.qmd
new file mode 100644
index 0000000000..cb9d8ffac0
--- /dev/null
+++ b/docs/tools/vscode/visual-editor.qmd
@@ -0,0 +1,7 @@
+---
+title: "Visual Editing in VS Code"
+aliases:
+ - /docs/visual-editor/vscode/index.html
+---
+
+{{< include ../_code-oss-visual-editor.md >}}
\ No newline at end of file