diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000000..d352b823d0 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,121 @@ +#------------------------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See https://go.microsoft.com/fwlink/?linkid=2090316 for license information. +#------------------------------------------------------------------------------------------------------------- + +FROM mcr.microsoft.com/vscode/devcontainers/typescript-node:0-10 + +ARG TARGET_DISPLAY=":1" + +# VNC options +ARG MAX_VNC_RESOLUTION=1920x1080x16 +ARG TARGET_VNC_RESOLUTION=1920x1080 +ARG TARGET_VNC_DPI=72 +ARG TARGET_VNC_PORT=5901 +ARG VNC_PASSWORD="vscode" + +# noVNC (VNC web client) options +ARG INSTALL_NOVNC="true" +ARG NOVNC_VERSION=1.1.0 +ARG TARGET_NOVNC_PORT=6080 +ARG WEBSOCKETIFY_VERSION=0.9.0 + +# Firefox is useful for testing things like browser launch events, but optional +ARG INSTALL_FIREFOX="false" + +# Expected non-root username from base image +ARG USERNAME=node + +# Core environment variables for X11, VNC, and fluxbox +ENV DBUS_SESSION_BUS_ADDRESS="autolaunch:" \ + MAX_VNC_RESOLUTION="${MAX_VNC_RESOLUTION}" \ + VNC_RESOLUTION="${TARGET_VNC_RESOLUTION}" \ + VNC_DPI="${TARGET_VNC_DPI}" \ + VNC_PORT="${TARGET_VNC_PORT}" \ + NOVNC_PORT="${TARGET_NOVNC_PORT}" \ + DISPLAY="${TARGET_DISPLAY}" \ + LANG="en_US.UTF-8" \ + LANGUAGE="en_US.UTF-8" \ + VISUAL="nano" \ + EDITOR="nano" + +# Configure apt and install packages +RUN apt-get update \ + && export DEBIAN_FRONTEND=noninteractive \ + # + # Install the Cascadia Code fonts - https://github.com/microsoft/cascadia-code + && curl -sSL https://github.com/microsoft/cascadia-code/releases/download/v2004.30/CascadiaCode_2004.30.zip -o /tmp/cascadia-fonts.zip \ + && unzip /tmp/cascadia-fonts.zip -d /tmp/cascadia-fonts \ + && mkdir -p /usr/share/fonts/truetype/cascadia \ + && mv /tmp/cascadia-fonts/ttf/* /usr/share/fonts/truetype/cascadia/ \ + && rm -rf /tmp/cascadia-fonts.zip /tmp/cascadia-fonts \ + # + # Install X11, fluxbox and VS Code dependencies + && apt-get -y install --no-install-recommends \ + xvfb \ + x11vnc \ + fluxbox \ + dbus-x11 \ + x11-utils \ + x11-xserver-utils \ + xdg-utils \ + fbautostart \ + xterm \ + eterm \ + gnome-terminal \ + gnome-keyring \ + seahorse \ + nautilus \ + libx11-dev \ + libxkbfile-dev \ + libsecret-1-dev \ + libnotify4 \ + libnss3 \ + libxss1 \ + libasound2 \ + xfonts-base \ + xfonts-terminus \ + fonts-noto \ + fonts-wqy-microhei \ + fonts-droid-fallback \ + vim-tiny \ + nano \ + # + # [Optional] Install noVNC + && if [ "${INSTALL_NOVNC}" = "true" ]; then \ + mkdir -p /usr/local/novnc \ + && curl -sSL https://github.com/novnc/noVNC/archive/v${NOVNC_VERSION}.zip -o /tmp/novnc-install.zip \ + && unzip /tmp/novnc-install.zip -d /usr/local/novnc \ + && cp /usr/local/novnc/noVNC-${NOVNC_VERSION}/vnc_lite.html /usr/local/novnc/noVNC-${NOVNC_VERSION}/index.html \ + && rm /tmp/novnc-install.zip \ + && curl -sSL https://github.com/novnc/websockify/archive/v${WEBSOCKETIFY_VERSION}.zip -o /tmp/websockify-install.zip \ + && unzip /tmp/websockify-install.zip -d /usr/local/novnc \ + && apt-get -y install --no-install-recommends python-numpy \ + && ln -s /usr/local/novnc/websockify-${WEBSOCKETIFY_VERSION} /usr/local/novnc/noVNC-${NOVNC_VERSION}/utils/websockify \ + && rm /tmp/websockify-install.zip; \ + fi \ + # + # [Optional] Install Firefox + && if [ "${INSTALL_FIREFOX}" = "true" ]; then \ + apt-get -y install --no-install-recommends firefox-esr; \ + fi \ + # + # Clean up + && apt-get autoremove -y \ + && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* + +COPY bin/init-dev-container.sh /usr/local/share/ +COPY bin/set-resolution /usr/local/bin/ +COPY fluxbox/* /root/.fluxbox/ +COPY fluxbox/* /home/${USERNAME}/.fluxbox/ + +# Update privs, owners of config files +RUN mkdir -p /var/run/dbus /root/.vnc /home/${USERNAME}/.vnc \ + && touch /root/.Xmodmap /home/${USERNAME}/.Xmodmap \ + && echo "${VNC_PASSWORD}" | tee /root/.vnc/passwd > /home/${USERNAME}/.vnc/passwd \ + && chown -R ${USERNAME}:${USERNAME} /home/${USERNAME}/.Xmodmap /home/${USERNAME}/.fluxbox /home/${USERNAME}/.vnc \ + && chmod +x /usr/local/share/init-dev-container.sh /usr/local/bin/set-resolution + +ENTRYPOINT ["/usr/local/share/init-dev-container.sh"] +CMD ["sleep", "infinity"] diff --git a/.devcontainer/README.md b/.devcontainer/README.md new file mode 100644 index 0000000000..79fdfb487a --- /dev/null +++ b/.devcontainer/README.md @@ -0,0 +1,82 @@ +# Code - OSS Development Container + +This repository includes configuration for a development container for working with Code - OSS in an isolated local container or using [Visual Studio Codespaces](https://aka.ms/vso). + +> **Tip:** The default VNC password is `vscode`. The VNC server runs on port `5901` with a web client at `6080`. For better performance, we recommend using a [VNC Viewer](https://www.realvnc.com/en/connect/download/viewer/). Applications like the macOS Screen Sharing app will not perform as well. [Chicken](https://sourceforge.net/projects/chicken/) is a good macOS alternative. + +## Quick start - local + +1. Install Docker Desktop or Docker on your local machine. (See [docs](https://aka.ms/vscode-remote/containers/getting-started) for additional details.) + +2. [Docker Desktop] If you are not using the new WSL2 Docker Desktop engine, increase the resources allocated to Docker Desktop to at least **4 Cores and 4 GB of RAM (8 GB recommended)**. Right-click on the Docker status bar item, go to **Preferences/Settings > Resources > Advanced** to do so. + + > **Note:** The [Resource Monitor](https://marketplace.visualstudio.com/items?itemName=mutantdino.resourcemonitor) extension is included in the container so you can keep an eye on CPU/Memory in the status bar. + +3. Install [Visual Studio Code Stable](https://code.visualstudio.com/) or [Insiders](https://code.visualstudio.com/insiders/) and the [Remote - Containers](https://aka.ms/vscode-remote/download/containers) extension. + + ![Image of Remote - Containers extension](https://microsoft.github.io/vscode-remote-release/images/remote-containers-extn.png) + + > Note that the Remote - Containers extension requires the Visual Studio Code distribution of Code - OSS. See the [FAQ](https://aka.ms/vscode-remote/faq/license) for details. + +4. Press Ctrl/Cmd + Shift + P and select **Remote - Containers: Open Repository in Container...**. + + > **Tip:** While you can use your local source tree instead, operations like `yarn install` can be slow on macOS or using the Hyper-V engine on Windows. We recommend the "open repository" approach instead since it uses "named volume" rather than the local filesystem. + +5. Type `https://github.com/microsoft/vscode` (or a branch or PR URL) in the input box and press Enter. + +6. After the container is running, open a web browser and go to [http://localhost:6080](http://localhost:6080) or use a [VNC Viewer](https://www.realvnc.com/en/connect/download/viewer/) to connect to `localhost:5901` and enter `vscode` as the password. + +Anything you start in VS Code or the integrated terminal will appear here. + +Next: **[Try it out!](#try-it)** + +## Quick start - Codespaces + +>Note that the Codespaces browser-based editor cannot currently access the desktop environment in this container (due to a [missing feature](https://github.com/MicrosoftDocs/vsonline/issues/117)). We recommend using Visual Studio Code from the desktop to connect instead in the near term. + +1. Install [Visual Studio Code Stable](https://code.visualstudio.com/) or [Insiders](https://code.visualstudio.com/insiders/) and the [Visual Studio Codespaces](https://aka.ms/vscs-ext-vscode) extension. + + ![Image of VS Codespaces extension](https://microsoft.github.io/vscode-remote-release/images/codespaces-extn.png) + + > Note that the Visual Studio Codespaces extension requires the Visual Studio Code distribution of Code - OSS. + +2. Sign in by pressing Ctrl/Cmd + Shift + P and selecting **Codespaces: Sign In**. You may also need to use the **Codespaces: Create Plan** if you do not have a plan. See the [Codespaces docs](https://aka.ms/vso-docs/vscode) for details. + +3. Press Ctrl/Cmd + Shift + P and select **Codespaces: Create New Codespace**. + +4. Use default settings, select a plan, and then enter the repository URL `https://github.com/microsoft/vscode` (or a branch or PR URL) in the input box when prompted. + +5. After the container is running, open a web browser and go to [http://localhost:6080](http://localhost:6080) or use a [VNC Viewer](https://www.realvnc.com/en/connect/download/viewer/) to connect to `localhost:5901` and enter `vscode` as the password. + +6. Anything you start in VS Code or the integrated terminal will appear here. + +## Try it! + +This container uses the [Fluxbox](http://fluxbox.org/) window manager to keep things lean. **Right-click on the desktop** to see menu options. It works with GNOME and GTK applications, so other tools can be installed if needed. + +Note you can also set the resolution from the command line by typing `set-resolution`. + +To start working with Code - OSS, follow these steps: + +1. In your local VS Code, open a terminal (Ctrl/Cmd + Shift + \`) and type the following commands: + + ```bash + yarn install + bash scripts/code.sh + ``` + +2. After the build is complete, open a web browser and go to [http://localhost:6080](http://localhost:6080) or use a [VNC Viewer](https://www.realvnc.com/en/connect/download/viewer/) to connect to `localhost:5901` and enter `vscode` as the password. + +3. You should now see Code - OSS! + +Next, let's try debugging. + +1. Shut down Code - OSS by clicking the box in the upper right corner of the Code - OSS window through your browser or VNC viewer. + +2. Go to your local VS Code client, and use Run / Debug view to launch the **VS Code** configuration. (Typically the default, so you can likely just press F5). + + > **Note:** If launching times out, you can increase the value of `timeout` in the "VS Code", "Attach Main Process", "Attach Extension Host", and "Attach to Shared Process" configurations in [launch.json](../.vscode/launch.json). However, running `scripts/code.sh` first will set up Electron which will usually solve timeout issues. + +3. After a bit, Code - OSS will appear with the debugger attached! + +Enjoy! diff --git a/.devcontainer/bin/init-dev-container.sh b/.devcontainer/bin/init-dev-container.sh new file mode 100644 index 0000000000..260cc27592 --- /dev/null +++ b/.devcontainer/bin/init-dev-container.sh @@ -0,0 +1,91 @@ +#!/bin/bash + +NONROOT_USER=node +LOG=/tmp/container-init.log + +# Execute the command it not already running +startInBackgroundIfNotRunning() +{ + log "Starting $1." + echo -e "\n** $(date) **" | sudoIf tee -a /tmp/$1.log > /dev/null + if ! pidof $1 > /dev/null; then + keepRunningInBackground "$@" + while ! pidof $1 > /dev/null; do + sleep 1 + done + log "$1 started." + else + echo "$1 is already running." | sudoIf tee -a /tmp/$1.log > /dev/null + log "$1 is already running." + fi +} + +# Keep command running in background +keepRunningInBackground() +{ + ($2 sh -c "while :; do echo [\$(date)] Process started.; $3; echo [\$(date)] Process exited!; sleep 5; done 2>&1" | sudoIf tee -a /tmp/$1.log > /dev/null & echo "$!" | sudoIf tee /tmp/$1.pid > /dev/null) +} + +# Use sudo to run as root when required +sudoIf() +{ + if [ "$(id -u)" -ne 0 ]; then + sudo "$@" + else + "$@" + fi +} + +# Use sudo to run as non-root user if not already running +sudoUserIf() +{ + if [ "$(id -u)" -eq 0 ]; then + sudo -u ${NONROOT_USER} "$@" + else + "$@" + fi +} + +# Log messages +log() +{ + echo -e "[$(date)] $@" | sudoIf tee -a $LOG > /dev/null +} + +log "** SCRIPT START **" + +# Start dbus. +log 'Running "/etc/init.d/dbus start".' +if [ -f "/var/run/dbus/pid" ] && ! pidof dbus-daemon > /dev/null; then + sudoIf rm -f /var/run/dbus/pid +fi +sudoIf /etc/init.d/dbus start 2>&1 | sudoIf tee -a /tmp/dbus-daemon-system.log > /dev/null +while ! pidof dbus-daemon > /dev/null; do + sleep 1 +done + +# Set up Xvfb. +startInBackgroundIfNotRunning "Xvfb" sudoIf "Xvfb ${DISPLAY:-:1} +extension RANDR -screen 0 ${MAX_VNC_RESOLUTION:-1920x1080x16}" + +# Start fluxbox as a light weight window manager. +startInBackgroundIfNotRunning "fluxbox" sudoUserIf "dbus-launch startfluxbox" + +# Start x11vnc +startInBackgroundIfNotRunning "x11vnc" sudoIf "x11vnc -display ${DISPLAY:-:1} -rfbport ${VNC_PORT:-5901} -localhost -no6 -xkb -shared -forever -passwdfile $HOME/.vnc/passwd" + +# Set resolution +/usr/local/bin/set-resolution ${VNC_RESOLUTION:-1280x720} ${VNC_DPI:-72} + + +# Spin up noVNC if installed and not runnning. +if [ -d "/usr/local/novnc" ] && [ "$(ps -ef | grep /usr/local/novnc/noVNC*/utils/launch.sh | grep -v grep)" = "" ]; then + keepRunningInBackground "noVNC" sudoIf "/usr/local/novnc/noVNC*/utils/launch.sh --listen ${NOVNC_PORT:-6080} --vnc localhost:${VNC_PORT:-5901}" + log "noVNC started." +else + log "noVNC is already running or not installed." +fi + +# Run whatever was passed in +log "Executing \"$@\"." +"$@" +log "** SCRIPT EXIT **" diff --git a/.devcontainer/bin/set-resolution b/.devcontainer/bin/set-resolution new file mode 100644 index 0000000000..5b4ca79f51 --- /dev/null +++ b/.devcontainer/bin/set-resolution @@ -0,0 +1,25 @@ +#!/bin/bash +RESOLUTION=${1:-${VNC_RESOLUTION:-1920x1080}} +DPI=${2:-${VNC_DPI:-72}} +if [ -z "$1" ]; then + echo -e "**Current Settings **\n" + xrandr + echo -n -e "\nEnter new resolution (WIDTHxHEIGHT, blank for ${RESOLUTION}, Ctrl+C to abort).\n> " + read NEW_RES + if [ "${NEW_RES}" != "" ]; then + RESOLUTION=${NEW_RES} + fi + if [ -z "$2" ]; then + echo -n -e "\nEnter new DPI (blank for ${DPI}, Ctrl+C to abort).\n> " + read NEW_DPI + if [ "${NEW_DPI}" != "" ]; then + DPI=${NEW_DPI} + fi + fi +fi + +xrandr --fb ${RESOLUTION} --dpi ${DPI} > /dev/null 2>&1 + +echo -e "\n**New Settings **\n" +xrandr +echo diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000000..b9f3e6d79b --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,41 @@ +{ + "name": "Code - OSS", + "build": { + "dockerfile": "Dockerfile", + "args": { + "MAX_VNC_RESOLUTION": "1920x1080x16", + "TARGET_VNC_RESOLUTION": "1280x768", + "TARGET_VNC_PORT": "5901", + "TARGET_NOVNC_PORT": "6080", + "VNC_PASSWORD": "vscode", + "INSTALL_FIREFOX": "true" + } + }, + "overrideCommand": false, + "runArgs": ["--init"], + + "settings": { + // zsh is also available + "terminal.integrated.shell.linux": "/bin/bash", + "resmon.show.battery": false, + "resmon.show.cpufreq": false, + "remote.extensionKind": { + "ms-vscode.js-debug-nightly": "workspace", + "msjsdiag.debugger-for-chrome": "workspace" + }, + "debug.chrome.useV3": true + }, + + // noVNC, VNC ports + "forwardPorts": [6080, 5901], + + "extensions": [ + "dbaeumer.vscode-eslint", + "EditorConfig.EditorConfig", + "msjsdiag.debugger-for-chrome", + "mutantdino.resourcemonitor", + "GitHub.vscode-pull-request-github" + ], + + "remoteUser": "node" +} diff --git a/.devcontainer/fluxbox/apps b/.devcontainer/fluxbox/apps new file mode 100644 index 0000000000..d43f05e9e2 --- /dev/null +++ b/.devcontainer/fluxbox/apps @@ -0,0 +1,9 @@ +[app] (name=code-oss-dev) + [Position] (CENTER) {0 0} + [Maximized] {yes} + [Dimensions] {100% 100%} +[end] +[transient] (role=GtkFileChooserDialog) + [Position] (CENTER) {0 0} + [Dimensions] {70% 70%} +[end] diff --git a/.devcontainer/fluxbox/init b/.devcontainer/fluxbox/init new file mode 100644 index 0000000000..a6b8d73fa7 --- /dev/null +++ b/.devcontainer/fluxbox/init @@ -0,0 +1,9 @@ +session.menuFile: ~/.fluxbox/menu +session.keyFile: ~/.fluxbox/keys +session.styleFile: /usr/share/fluxbox/styles//Squared_for_Debian +session.configVersion: 13 +session.screen0.workspaces: 1 +session.screen0.workspacewarping: false +session.screen0.toolbar.widthPercent: 100 +session.screen0.strftimeFormat: %d %b, %a %02k:%M:%S +session.screen0.toolbar.tools: prevworkspace, workspacename, nextworkspace, clock, prevwindow, nextwindow, iconbar, systemtray diff --git a/.devcontainer/fluxbox/menu b/.devcontainer/fluxbox/menu new file mode 100644 index 0000000000..ff5955a2fe --- /dev/null +++ b/.devcontainer/fluxbox/menu @@ -0,0 +1,16 @@ +[begin] ( Code - OSS Development Container ) + [exec] (File Manager) { nautilus ~ } <> + [exec] (Terminal) {/usr/bin/gnome-terminal --working-directory=~ } <> + [exec] (Start Code - OSS) { x-terminal-emulator -T "Code - OSS Build" -e bash /workspaces/vscode*/scripts/code.sh } <> + [submenu] (System >) {} + [exec] (Set Resolution) { x-terminal-emulator -T "Set Resolution" -e bash /usr/local/bin/set-resolution } <> + [exec] (Passwords and Keys) { seahorse } <> + [exec] (Top) { x-terminal-emulator -T "Top" -e /usr/bin/top } <> + [exec] (Editres) {editres} <> + [exec] (Xfontsel) {xfontsel} <> + [exec] (Xkill) {xkill} <> + [exec] (Xrefresh) {xrefresh} <> + [end] + [config] (Configuration >) + [workspaces] (Workspaces >) +[end] diff --git a/.eslintrc.json b/.eslintrc.json index d0c68fddfa..c5034298ff 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -542,7 +542,9 @@ "**/{vs,sql}/workbench/api/**/common/**", "vs/workbench/contrib/files/common/editors/fileEditorInput", // this should be fine, it only accesses constants from contrib "vscode-textmate", - "vscode-oniguruma" + "vscode-oniguruma", + "iconv-lite-umd", + "semver-umd" ] }, { diff --git a/.vscode/launch.json b/.vscode/launch.json index 0df90399ae..1a19bbf549 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -26,6 +26,7 @@ "type": "pwa-chrome", "request": "attach", "name": "Attach to Shared Process", + "timeout": 30000, "port": 9222, "urlFilter": "*sharedProcess.html*", "presentation": { @@ -57,6 +58,7 @@ "type": "node", "request": "attach", "name": "Attach to Main Process", + "timeout": 30000, "port": 5875, "outFiles": [ "${workspaceFolder}/out/**/*.js" diff --git a/.vscode/settings.json b/.vscode/settings.json index fb0e408051..9239eae0d4 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -26,6 +26,7 @@ "test/automation/out/**": true, "test/integration/browser/out/**": true, "src/vs/base/test/node/uri.test.data.txt": true, + "src/vs/workbench/test/browser/api/extHostDocumentData.test.perf-data.ts": true, "src/vs/server": false }, "lcov.path": [ diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 2a0a50fa29..076129b820 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -55,6 +55,43 @@ }, "problemMatcher": "$tsc" }, + { + "type": "npm", + "script": "watch-webd", + "label": "Build Web Extensions", + "group": "build", + "isBackground": true, + "presentation": { + "reveal": "never" + }, + "problemMatcher": { + "owner": "typescript", + "applyTo": "closedDocuments", + "fileLocation": [ + "absolute" + ], + "pattern": { + "regexp": "Error: ([^(]+)\\((\\d+|\\d+,\\d+|\\d+,\\d+,\\d+,\\d+)\\): (.*)$", + "file": 1, + "location": 2, + "message": 3 + }, + "background": { + "beginsPattern": "Starting compilation", + "endsPattern": "Finished compilation" + } + } + }, + { + "type": "npm", + "script": "kill-watch-webd", + "label": "Kill Build Web Extensions", + "group": "build", + "presentation": { + "reveal": "never", + }, + "problemMatcher": "$tsc" + }, { "label": "Run tests", "type": "shell", diff --git a/.yarnrc b/.yarnrc index 1406d749d7..135e10442a 100644 --- a/.yarnrc +++ b/.yarnrc @@ -1,3 +1,3 @@ disturl "https://atom.io/download/electron" -target "7.3.1" +target "7.3.2" runtime "electron" diff --git a/build/.webignore b/build/.webignore new file mode 100644 index 0000000000..1035cb291c --- /dev/null +++ b/build/.webignore @@ -0,0 +1,27 @@ +# cleanup rules for web node modules, .gitignore style + +**/*.txt +**/*.json +**/*.md +**/*.d.ts +**/*.js.map +**/LICENSE +**/CONTRIBUTORS + +jschardet/index.js +jschardet/src/** +jschardet/dist/jschardet.js + +vscode-textmate/webpack.config.js + +xterm/src/** + +xterm-addon-search/src/** +xterm-addon-search/out/** +xterm-addon-search/fixtures/** + +xterm-addon-unicode11/src/** +xterm-addon-unicode11/out/** + +xterm-addon-webgl/src/** +xterm-addon-webgl/out/** diff --git a/build/azure-pipelines/common/extract-telemetry.sh b/build/azure-pipelines/common/extract-telemetry.sh index 84bbd9c537..6436e93c8c 100755 --- a/build/azure-pipelines/common/extract-telemetry.sh +++ b/build/azure-pipelines/common/extract-telemetry.sh @@ -10,10 +10,10 @@ git clone --depth 1 https://github.com/Microsoft/vscode-node-debug2.git git clone --depth 1 https://github.com/Microsoft/vscode-node-debug.git git clone --depth 1 https://github.com/Microsoft/vscode-html-languageservice.git git clone --depth 1 https://github.com/Microsoft/vscode-json-languageservice.git -$BUILD_SOURCESDIRECTORY/build/node_modules/.bin/vscode-telemetry-extractor --sourceDir $BUILD_SOURCESDIRECTORY --excludedDir $BUILD_SOURCESDIRECTORY/extensions --outputDir . --applyEndpoints -$BUILD_SOURCESDIRECTORY/build/node_modules/.bin/vscode-telemetry-extractor --config $BUILD_SOURCESDIRECTORY/build/azure-pipelines/common/telemetry-config.json -o . +node $BUILD_SOURCESDIRECTORY/build/node_modules/.bin/vscode-telemetry-extractor --sourceDir $BUILD_SOURCESDIRECTORY --excludedDir $BUILD_SOURCESDIRECTORY/extensions --outputDir . --applyEndpoints +node $BUILD_SOURCESDIRECTORY/build/node_modules/.bin/vscode-telemetry-extractor --config $BUILD_SOURCESDIRECTORY/build/azure-pipelines/common/telemetry-config.json -o . mkdir -p $BUILD_SOURCESDIRECTORY/.build/telemetry mv declarations-resolved.json $BUILD_SOURCESDIRECTORY/.build/telemetry/telemetry-core.json mv config-resolved.json $BUILD_SOURCESDIRECTORY/.build/telemetry/telemetry-extensions.json cd .. -rm -rf extraction \ No newline at end of file +rm -rf extraction diff --git a/build/azure-pipelines/exploration-build.yml b/build/azure-pipelines/exploration-build.yml index 1a99ea5cab..ff2b7065cb 100644 --- a/build/azure-pipelines/exploration-build.yml +++ b/build/azure-pipelines/exploration-build.yml @@ -31,10 +31,10 @@ steps: git config user.email "vscode@microsoft.com" git config user.name "VSCode" - git checkout origin/electron-8.0.x - git merge origin/main + git checkout origin/electron-x.y.z + git merge origin/master - # Push main branch into exploration branch - git push origin HEAD:electron-8.0.x + # Push master branch into exploration branch + git push origin HEAD:electron-x.y.z displayName: Sync & Merge Exploration diff --git a/build/azure-pipelines/win32/product-build-win32.yml b/build/azure-pipelines/win32/product-build-win32.yml index 466d3dd332..fb4f305257 100644 --- a/build/azure-pipelines/win32/product-build-win32.yml +++ b/build/azure-pipelines/win32/product-build-win32.yml @@ -218,7 +218,7 @@ steps: restoreSolution: 'build\azure-pipelines\win32\ESRPClient\packages.config' feedsToUse: config nugetConfigPath: 'build\azure-pipelines\win32\ESRPClient\NuGet.config' - externalFeedCredentials: 3fc0b7f7-da09-4ae7-a9c8-d69824b1819b + externalFeedCredentials: 'ESRP Nuget' restoreDirectory: packages - task: ESRPImportCertTask@1 diff --git a/build/gulpfile.extensions.js b/build/gulpfile.extensions.js index 58ba63558d..74f95d1015 100644 --- a/build/gulpfile.extensions.js +++ b/build/gulpfile.extensions.js @@ -8,9 +8,11 @@ require('events').EventEmitter.defaultMaxListeners = 100; const gulp = require('gulp'); const path = require('path'); +const nodeUtil = require('util'); const tsb = require('gulp-tsb'); const es = require('event-stream'); const filter = require('gulp-filter'); +const webpack = require('webpack'); const util = require('./lib/util'); const task = require('./lib/task'); const watcher = require('./lib/watch'); @@ -21,6 +23,8 @@ const nlsDev = require('vscode-nls-dev'); const root = path.dirname(__dirname); const commit = util.getVersion(root); const plumber = require('gulp-plumber'); +const fancyLog = require('fancy-log'); +const ansiColors = require('ansi-colors'); const ext = require('./lib/extensions'); const extensionsPath = path.join(path.dirname(__dirname), 'extensions'); @@ -173,3 +177,78 @@ const compileExtensionsBuildTask = task.define('compile-extensions-build', task. gulp.task(compileExtensionsBuildTask); exports.compileExtensionsBuildTask = compileExtensionsBuildTask; + +const compileWebExtensionsTask = task.define('compile-web', () => buildWebExtensions(false)); +gulp.task(compileWebExtensionsTask); +exports.compileWebExtensionsTask = compileWebExtensionsTask; + +const watchWebExtensionsTask = task.define('watch-web', () => buildWebExtensions(true)); +gulp.task(watchWebExtensionsTask); +exports.watchWebExtensionsTask = watchWebExtensionsTask; + +async function buildWebExtensions(isWatch) { + + const webpackConfigLocations = await nodeUtil.promisify(glob)( + path.join(extensionsPath, '**', 'extension-browser.webpack.config.js'), + { ignore: ['**/node_modules'] } + ); + + const webpackConfigs = []; + + for (const webpackConfigPath of webpackConfigLocations) { + const configOrFnOrArray = require(webpackConfigPath); + function addConfig(configOrFn) { + if (typeof configOrFn === 'function') { + webpackConfigs.push(configOrFn({}, {})); + } else { + webpackConfigs.push(configOrFn); + } + } + addConfig(configOrFnOrArray); + } + function reporter(fullStats) { + if (Array.isArray(fullStats.children)) { + for (const stats of fullStats.children) { + const outputPath = stats.outputPath; + if (outputPath) { + const relativePath = path.relative(extensionsPath, outputPath).replace(/\\/g, '/'); + const match = relativePath.match(/[^\/]+(\/server|\/client)?/); + fancyLog(`Finished ${ansiColors.green('packaging web extension')} ${ansiColors.cyan(match[0])} with ${stats.errors.length} errors.`); + } + if (Array.isArray(stats.errors)) { + stats.errors.forEach(error => { + fancyLog.error(error); + }); + } + if (Array.isArray(stats.warnings)) { + stats.warnings.forEach(warning => { + fancyLog.warn(warning); + }); + } + } + } + } + return new Promise((resolve, reject) => { + if (isWatch) { + webpack(webpackConfigs).watch({}, (err, stats) => { + if (err) { + reject(); + } else { + reporter(stats.toJson()); + } + }); + } else { + webpack(webpackConfigs).run((err, stats) => { + if (err) { + fancyLog.error(err); + reject(); + } else { + reporter(stats.toJson()); + resolve(); + } + }); + } + }); +} + + diff --git a/build/gulpfile.vscode.js b/build/gulpfile.vscode.js index 9dbf88a3ea..4c7e36bdc8 100644 --- a/build/gulpfile.vscode.js +++ b/build/gulpfile.vscode.js @@ -58,6 +58,7 @@ const nodeModules = [ // {{SQL CARBON EDIT}} const vscodeEntryPoints = _.flatten([ buildfile.entrypoint('vs/workbench/workbench.desktop.main'), buildfile.base, + buildfile.workerExtensionHost, buildfile.workbenchDesktop, buildfile.code ]); @@ -69,6 +70,7 @@ const vscodeResources = [ 'out-build/bootstrap.js', 'out-build/bootstrap-fork.js', 'out-build/bootstrap-amd.js', + 'out-build/bootstrap-node.js', 'out-build/bootstrap-window.js', 'out-build/paths.js', 'out-build/vs/**/*.{svg,png,html}', @@ -83,6 +85,7 @@ const vscodeResources = [ 'out-build/vs/workbench/contrib/externalTerminal/**/*.scpt', 'out-build/vs/workbench/contrib/webview/browser/pre/*.js', 'out-build/vs/workbench/contrib/webview/electron-browser/pre/*.js', + 'out-build/vs/workbench/services/extensions/worker/extensionHostWorkerMain.js', 'out-build/vs/**/markdown.css', 'out-build/vs/workbench/contrib/tasks/**/*.json', 'out-build/vs/platform/files/**/*.exe', diff --git a/build/lib/eslint/vscode-dts-literal-or-types.js b/build/lib/eslint/vscode-dts-literal-or-types.js index b2aadf2bf9..a259a9c318 100644 --- a/build/lib/eslint/vscode-dts-literal-or-types.js +++ b/build/lib/eslint/vscode-dts-literal-or-types.js @@ -13,6 +13,10 @@ module.exports = new class ApiLiteralOrTypes { create(context) { return { ['TSTypeAnnotation TSUnionType TSLiteralType']: (node) => { + var _a; + if (((_a = node.literal) === null || _a === void 0 ? void 0 : _a.type) === 'TSNullKeyword') { + return; + } context.report({ node: node, messageId: 'useEnum' diff --git a/build/lib/eslint/vscode-dts-literal-or-types.ts b/build/lib/eslint/vscode-dts-literal-or-types.ts index 5258bfd455..0d7130aaa0 100644 --- a/build/lib/eslint/vscode-dts-literal-or-types.ts +++ b/build/lib/eslint/vscode-dts-literal-or-types.ts @@ -15,6 +15,9 @@ export = new class ApiLiteralOrTypes implements eslint.Rule.RuleModule { create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener { return { ['TSTypeAnnotation TSUnionType TSLiteralType']: (node: any) => { + if (node.literal?.type === 'TSNullKeyword') { + return; + } context.report({ node: node, messageId: 'useEnum' diff --git a/build/lib/extensions.js b/build/lib/extensions.js index 2e0a9e4fd8..2623b3cc4a 100644 --- a/build/lib/extensions.js +++ b/build/lib/extensions.js @@ -4,7 +4,7 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ Object.defineProperty(exports, "__esModule", { value: true }); -exports.packageRebuildExtensionsStream = exports.cleanRebuildExtensions = exports.packageExternalExtensionsStream = exports.packageMarketplaceWebExtensionsStream = exports.packageMarketplaceExtensionsStream = exports.packageLocalWebExtensionsStream = exports.packageLocalExtensionsStream = exports.fromMarketplace = void 0; +exports.translatePackageJSON = exports.packageRebuildExtensionsStream = exports.cleanRebuildExtensions = exports.packageExternalExtensionsStream = exports.scanBuiltinExtensions = exports.packageMarketplaceWebExtensionsStream = exports.packageMarketplaceExtensionsStream = exports.packageLocalWebExtensionsStream = exports.packageLocalExtensionsStream = exports.fromMarketplace = void 0; const es = require("event-stream"); const fs = require("fs"); const glob = require("glob"); @@ -291,6 +291,38 @@ function packageMarketplaceWebExtensionsStream(builtInExtensions) { return es.merge(extensions); } exports.packageMarketplaceWebExtensionsStream = packageMarketplaceWebExtensionsStream; +function scanBuiltinExtensions(extensionsRoot, forWeb) { + const scannedExtensions = []; + const extensionsFolders = fs.readdirSync(extensionsRoot); + for (const extensionFolder of extensionsFolders) { + const packageJSONPath = path.join(extensionsRoot, extensionFolder, 'package.json'); + if (!fs.existsSync(packageJSONPath)) { + continue; + } + let packageJSON = JSON.parse(fs.readFileSync(packageJSONPath).toString('utf8')); + const extensionKind = packageJSON['extensionKind'] || []; + if (forWeb && extensionKind.indexOf('web') === -1) { + continue; + } + const children = fs.readdirSync(path.join(extensionsRoot, extensionFolder)); + const packageNLS = children.filter(child => child === 'package.nls.json')[0]; + const readme = children.filter(child => /^readme(\.txt|\.md|)$/i.test(child))[0]; + const changelog = children.filter(child => /^changelog(\.txt|\.md|)$/i.test(child))[0]; + if (packageNLS) { + // temporary + packageJSON = translatePackageJSON(packageJSON, path.join(extensionsRoot, extensionFolder, packageNLS)); + } + scannedExtensions.push({ + extensionPath: extensionFolder, + packageJSON, + packageNLSPath: packageNLS ? path.join(extensionFolder, packageNLS) : undefined, + readmePath: readme ? path.join(extensionFolder, readme) : undefined, + changelogPath: changelog ? path.join(extensionFolder, changelog) : undefined, + }); + } + return scannedExtensions; +} +exports.scanBuiltinExtensions = scanBuiltinExtensions; function packageExternalExtensionsStream() { const extenalExtensionDescriptions = glob.sync('extensions/*/package.json') .map(manifestPath => { @@ -306,6 +338,7 @@ function packageExternalExtensionsStream() { return es.merge(builtExtensions); } exports.packageExternalExtensionsStream = packageExternalExtensionsStream; +// {{SQL CARBON EDIT}} start function cleanRebuildExtensions(root) { return Promise.all(rebuildExtensions.map(async (e) => { await util2.rimraf(path.join(root, e))(); @@ -327,3 +360,28 @@ function packageRebuildExtensionsStream() { return es.merge(builtExtensions); } exports.packageRebuildExtensionsStream = packageRebuildExtensionsStream; +// {{SQL CARBON EDIT}} end +function translatePackageJSON(packageJSON, packageNLSPath) { + const CharCode_PC = '%'.charCodeAt(0); + const packageNls = JSON.parse(fs.readFileSync(packageNLSPath).toString()); + const translate = (obj) => { + for (let key in obj) { + const val = obj[key]; + if (Array.isArray(val)) { + val.forEach(translate); + } + else if (val && typeof val === 'object') { + translate(val); + } + else if (typeof val === 'string' && val.charCodeAt(0) === CharCode_PC && val.charCodeAt(val.length - 1) === CharCode_PC) { + const translated = packageNls[val.substr(1, val.length - 2)]; + if (translated) { + obj[key] = translated; + } + } + } + }; + translate(packageJSON); + return packageJSON; +} +exports.translatePackageJSON = translatePackageJSON; diff --git a/build/lib/extensions.ts b/build/lib/extensions.ts index 589b5a8e64..80ca127b34 100644 --- a/build/lib/extensions.ts +++ b/build/lib/extensions.ts @@ -340,6 +340,47 @@ export function packageMarketplaceWebExtensionsStream(builtInExtensions: IBuiltI return es.merge(extensions); } +export interface IScannedBuiltinExtension { + extensionPath: string, + packageJSON: any, + packageNLSPath?: string, + readmePath?: string, + changelogPath?: string, +} + +export function scanBuiltinExtensions(extensionsRoot: string, forWeb: boolean): IScannedBuiltinExtension[] { + const scannedExtensions: IScannedBuiltinExtension[] = []; + const extensionsFolders = fs.readdirSync(extensionsRoot); + for (const extensionFolder of extensionsFolders) { + const packageJSONPath = path.join(extensionsRoot, extensionFolder, 'package.json'); + if (!fs.existsSync(packageJSONPath)) { + continue; + } + let packageJSON = JSON.parse(fs.readFileSync(packageJSONPath).toString('utf8')); + const extensionKind: string[] = packageJSON['extensionKind'] || []; + if (forWeb && extensionKind.indexOf('web') === -1) { + continue; + } + const children = fs.readdirSync(path.join(extensionsRoot, extensionFolder)); + const packageNLS = children.filter(child => child === 'package.nls.json')[0]; + const readme = children.filter(child => /^readme(\.txt|\.md|)$/i.test(child))[0]; + const changelog = children.filter(child => /^changelog(\.txt|\.md|)$/i.test(child))[0]; + + if (packageNLS) { + // temporary + packageJSON = translatePackageJSON(packageJSON, path.join(extensionsRoot, extensionFolder, packageNLS)); + } + scannedExtensions.push({ + extensionPath: extensionFolder, + packageJSON, + packageNLSPath: packageNLS ? path.join(extensionFolder, packageNLS) : undefined, + readmePath: readme ? path.join(extensionFolder, readme) : undefined, + changelogPath: changelog ? path.join(extensionFolder, changelog) : undefined, + }); + } + return scannedExtensions; +} + export function packageExternalExtensionsStream(): NodeJS.ReadWriteStream { const extenalExtensionDescriptions = (glob.sync('extensions/*/package.json')) .map(manifestPath => { @@ -357,6 +398,7 @@ export function packageExternalExtensionsStream(): NodeJS.ReadWriteStream { return es.merge(builtExtensions); } +// {{SQL CARBON EDIT}} start export function cleanRebuildExtensions(root: string): Promise { return Promise.all(rebuildExtensions.map(async e => { await util2.rimraf(path.join(root, e))(); @@ -379,3 +421,26 @@ export function packageRebuildExtensionsStream(): NodeJS.ReadWriteStream { return es.merge(builtExtensions); } +// {{SQL CARBON EDIT}} end + +export function translatePackageJSON(packageJSON: string, packageNLSPath: string) { + const CharCode_PC = '%'.charCodeAt(0); + const packageNls = JSON.parse(fs.readFileSync(packageNLSPath).toString()); + const translate = (obj: any) => { + for (let key in obj) { + const val = obj[key]; + if (Array.isArray(val)) { + val.forEach(translate); + } else if (val && typeof val === 'object') { + translate(val); + } else if (typeof val === 'string' && val.charCodeAt(0) === CharCode_PC && val.charCodeAt(val.length - 1) === CharCode_PC) { + const translated = packageNls[val.substr(1, val.length - 2)]; + if (translated) { + obj[key] = translated; + } + } + } + }; + translate(packageJSON); + return packageJSON; +} diff --git a/build/lib/i18n.js b/build/lib/i18n.js index 9906ed3bd3..904ef2ab75 100644 --- a/build/lib/i18n.js +++ b/build/lib/i18n.js @@ -16,7 +16,7 @@ const https = require("https"); const gulp = require("gulp"); const fancyLog = require("fancy-log"); const ansiColors = require("ansi-colors"); -const iconv = require("iconv-lite"); +const iconv = require("iconv-lite-umd"); const NUMBER_OF_CONCURRENT_DOWNLOADS = 4; function log(message, ...rest) { fancyLog(ansiColors.green('[i18n]'), message, ...rest); @@ -1181,9 +1181,10 @@ function createIslFile(originalFilePath, messages, language, innoSetup) { }); const basename = path.basename(originalFilePath); const filePath = `${basename}.${language.id}.isl`; + const encoded = iconv.encode(Buffer.from(content.join('\r\n'), 'utf8').toString(), innoSetup.codePage); return new File({ path: filePath, - contents: iconv.encode(Buffer.from(content.join('\r\n'), 'utf8').toString(), innoSetup.codePage) + contents: Buffer.from(encoded), }); } function encodeEntities(value) { diff --git a/build/lib/i18n.resources.json b/build/lib/i18n.resources.json index 93a6992e41..9bba404c24 100644 --- a/build/lib/i18n.resources.json +++ b/build/lib/i18n.resources.json @@ -218,6 +218,10 @@ "name": "vs/workbench/contrib/userDataSync", "project": "vscode-workbench" }, + { + "name": "vs/workbench/contrib/views", + "project": "vscode-workbench" + }, { "name": "vs/workbench/services/actions", "project": "vscode-workbench" diff --git a/build/lib/i18n.ts b/build/lib/i18n.ts index 856719574d..decc7dfd92 100644 --- a/build/lib/i18n.ts +++ b/build/lib/i18n.ts @@ -15,7 +15,7 @@ import * as https from 'https'; import * as gulp from 'gulp'; import * as fancyLog from 'fancy-log'; import * as ansiColors from 'ansi-colors'; -import * as iconv from 'iconv-lite'; +import * as iconv from 'iconv-lite-umd'; const NUMBER_OF_CONCURRENT_DOWNLOADS = 4; @@ -1347,10 +1347,11 @@ function createIslFile(originalFilePath: string, messages: Map, language const basename = path.basename(originalFilePath); const filePath = `${basename}.${language.id}.isl`; + const encoded = iconv.encode(Buffer.from(content.join('\r\n'), 'utf8').toString(), innoSetup.codePage); return new File({ path: filePath, - contents: iconv.encode(Buffer.from(content.join('\r\n'), 'utf8').toString(), innoSetup.codePage) + contents: Buffer.from(encoded), }); } diff --git a/build/package.json b/build/package.json index 1081867e6e..09863d4011 100644 --- a/build/package.json +++ b/build/package.json @@ -40,7 +40,7 @@ "gulp-bom": "^1.0.0", "gulp-sourcemaps": "^1.11.0", "gulp-uglify": "^3.0.0", - "iconv-lite": "0.6.0", + "iconv-lite-umd": "0.6.5", "mime": "^1.3.4", "minimatch": "3.0.4", "minimist": "^1.2.3", @@ -49,9 +49,9 @@ "rollup-plugin-commonjs": "^10.1.0", "rollup-plugin-node-resolve": "^5.2.0", "terser": "4.3.8", - "typescript": "^4.0.0-dev.20200615", + "typescript": "^4.0.0-dev.20200629", "vsce": "1.48.0", - "vscode-telemetry-extractor": "^1.5.4", + "vscode-telemetry-extractor": "^1.6.0", "xml2js": "^0.4.17" }, "scripts": { diff --git a/build/win32/code.iss b/build/win32/code.iss index ed22782db3..321f8be01b 100644 --- a/build/win32/code.iss +++ b/build/win32/code.iss @@ -265,7 +265,7 @@ begin end; end; -// http://stackoverflow.com/a/23838239/261019 +// https://stackoverflow.com/a/23838239/261019 procedure Explode(var Dest: TArrayOfString; Text: String; Separator: String); var i, p: Integer; diff --git a/build/yarn.lock b/build/yarn.lock index 56b3835ef2..61f64b4f43 100644 --- a/build/yarn.lock +++ b/build/yarn.lock @@ -420,6 +420,11 @@ acorn@^7.0.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== +agent-base@5: + version "5.1.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c" + integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g== + ajv@^4.9.1: version "4.11.8" resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" @@ -1043,7 +1048,7 @@ debug@2.X, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8: dependencies: ms "2.0.0" -debug@^4.1.1: +debug@4, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== @@ -1804,12 +1809,18 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -iconv-lite@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.0.tgz#66a93b80df0bd05d2a43a7426296b7f91073f125" - integrity sha512-43ZpGYZ9QtuutX5l6WC1DSO8ane9N+Ct5qPLF2OV7vM9abM69gnAbVkh66ibaZd3aOGkoP1ZmringlKhLBkw2Q== +https-proxy-agent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz#702b71fb5520a132a66de1f67541d9e62154d82b" + integrity sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg== dependencies: - safer-buffer ">= 2.1.2 < 3" + agent-base "5" + debug "4" + +iconv-lite-umd@0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/iconv-lite-umd/-/iconv-lite-umd-0.6.5.tgz#6a1f621a3b4d125f72feff813a9839e1ebd6c722" + integrity sha512-WDegH4al+e3n3jTOStRvm+jzDA3JMUQGgzdAsMxAgcgB0Oi72HjfdsoX08ieKsy3rKexXVjWZr41aOIUaCZnMg== iconv-lite@^0.4.4: version "0.4.24" @@ -2809,6 +2820,11 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -3523,10 +3539,10 @@ typescript@^3.0.1: resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977" integrity sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g== -typescript@^4.0.0-dev.20200615: - version "4.0.0-dev.20200615" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.0-dev.20200615.tgz#5c06a0d5f25a29a018767970c6531fbbed7240e3" - integrity sha512-OD7KRTLimUwW5E1xHsAqXNjw0O0Krk9CgRVFYkqANv4fZisaN1LJI06u30D5QiNnHBzm2nBSzZIAhjj4MUqaRA== +typescript@^4.0.0-dev.20200629: + version "4.0.0-dev.20200629" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.0-dev.20200629.tgz#4631667ebffe3a340beee885a4bebe3a73b6f18e" + integrity sha512-c4DUu7KvTcx4x7V8sBWexYNkCfioiH1huOJL6WFAA8Oot0Gr/+PlKKDBS9fYjsadEv1JI1qboJKobwLQn0kQXw== typical@^4.0.0: version "4.0.0" @@ -3686,19 +3702,22 @@ vsce@1.48.0: yauzl "^2.3.1" yazl "^2.2.2" -vscode-ripgrep@^1.5.6: - version "1.5.7" - resolved "https://registry.yarnpkg.com/vscode-ripgrep/-/vscode-ripgrep-1.5.7.tgz#acb6b548af488a4bca5d0f1bb5faf761343289ce" - integrity sha512-/Vsz/+k8kTvui0q3O74pif9FK0nKopgFTiGNVvxicZANxtSA8J8gUE9GQ/4dpi7D/2yI/YVORszwVskFbz46hQ== +vscode-ripgrep@^1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/vscode-ripgrep/-/vscode-ripgrep-1.6.2.tgz#fb912c7465699f10ce0218a6676cc632c77369b4" + integrity sha512-jkZEWnQFcE+QuQFfxQXWcWtDafTmgkp3DjMKawDkajZwgnDlGKpFp15ybKrZNVTi1SLEF/12BzxYSZVVZ2XrkA== + dependencies: + https-proxy-agent "^4.0.0" + proxy-from-env "^1.1.0" -vscode-telemetry-extractor@^1.5.4: - version "1.5.4" - resolved "https://registry.yarnpkg.com/vscode-telemetry-extractor/-/vscode-telemetry-extractor-1.5.4.tgz#bcb0d17667fa1b77715e3a3bf372ade18f846782" - integrity sha512-MN9LNPo0Rc6cy3sIWTAG97PTWkEKdRnP0VeYoS8vjKSNtG9CAsrUxHgFfYoHm2vNK/ijd0a4NzETyVGO2kT6hw== +vscode-telemetry-extractor@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/vscode-telemetry-extractor/-/vscode-telemetry-extractor-1.6.0.tgz#e9d9c1d24863cce8d3d715f0287de3b31eb90c56" + integrity sha512-zSxvkbyAMa1lTRGIHfGg7gW2e9Sey+2zGYD19uNWCsVEfoXAr2NB6uzb0sNHtbZ2SSqxSePmFXzBAavsudT5fw== dependencies: command-line-args "^5.1.1" ts-morph "^3.1.3" - vscode-ripgrep "^1.5.6" + vscode-ripgrep "^1.6.2" vso-node-api@6.1.2-preview: version "6.1.2-preview" diff --git a/cglicenses.json b/cglicenses.json index fcbac22e31..f2d5a39a2b 100644 --- a/cglicenses.json +++ b/cglicenses.json @@ -200,6 +200,135 @@ }, { "name": "big-integer", - "prependLicenseText": ["Copyright released to public domain"] + "prependLicenseText": [ + "Copyright released to public domain" + ] + }, + { + // Reason: The license at https://github.com/justmoon/node-extend/blob/main/LICENSE + // cannot be found by the OSS tool automatically. + "name": "extend", + "fullLicenseText": [ + "The MIT License (MIT)", + "", + "Copyright (c) 2014 Stefan Thomas", + "", + "Permission is hereby granted, free of charge, to any person obtaining", + "a copy of this software and associated documentation files (the", + "\"Software\"), to deal in the Software without restriction, including", + "without limitation the rights to use, copy, modify, merge, publish,", + "distribute, sublicense, and/or sell copies of the Software, and to", + "permit persons to whom the Software is furnished to do so, subject to", + "the following conditions:", + "", + "The above copyright notice and this permission notice shall be", + "included in all copies or substantial portions of the Software.", + "", + "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,", + "EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF", + "MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND", + "NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE", + "LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION", + "OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION", + "WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + ] + }, + { + // Reason: The license at https://github.com/retep998/winapi-rs/blob/0.3/LICENSE-MIT + // cannot be found by the OSS tool automatically. + "name": "retep998/winapi-rs", + "fullLicenseText": [ + "Copyright (c) 2015-2018 The winapi-rs Developers", + "", + "Permission is hereby granted, free of charge, to any person obtaining a copy", + "of this software and associated documentation files (the \"Software\"), to deal", + "in the Software without restriction, including without limitation the rights", + "to use, copy, modify, merge, publish, distribute, sublicense, and/or sell", + "copies of the Software, and to permit persons to whom the Software is", + "furnished to do so, subject to the following conditions:", + "", + "The above copyright notice and this permission notice shall be included in all", + "copies or substantial portions of the Software.", + "", + "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR", + "IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,", + "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE", + "AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER", + "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,", + "OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE", + "SOFTWARE." + ] + }, + { + // Reason: The license at https://github.com/digitaldesignlabs/es6-promisify/blob/main/LICENSE + // cannot be found by the OSS tool automatically. + "name": "es6-promisify", + "fullLicenseText": [ + "Copyright (c) 2014 Mike Hall / Digital Design Labs", + "", + "Permission is hereby granted, free of charge, to any person obtaining a copy", + "of this software and associated documentation files (the \"Software\"), to deal", + "in the Software without restriction, including without limitation the rights", + "to use, copy, modify, merge, publish, distribute, sublicense, and/or sell", + "copies of the Software, and to permit persons to whom the Software is", + "furnished to do so, subject to the following conditions:", + "", + "The above copyright notice and this permission notice shall be included in all", + "copies or substantial portions of the Software.", + "", + "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR", + "IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,", + "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE", + "AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER", + "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,", + "OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE", + "SOFTWARE." + ] + }, + { + // Reason: The license at https://github.com/zkat/json-parse-better-errors/blob/latest/LICENSE.md + // cannot be found by the OSS tool automatically. + "name": "json-parse-better-errors", + "fullLicenseText": [ + "Copyright 2017 Kat Marchán", + "", + "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the", + "\"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute,", + "sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following", + "conditions:", + "", + "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.", + "", + "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE", + "WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS", + "OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR", + "OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." + ] + }, + { + // Reason: The license at https://github.com/time-rs/time/blob/main/LICENSE-MIT + // cannot be found by the OSS tool automatically. + "name": "time-rs/time", + "fullLicenseText": [ + "Copyright (c) 2019 Jacob Pratt", + "", + "Permission is hereby granted, free of charge, to any person obtaining a copy", + "of this software and associated documentation files (the \"Software\"), to deal", + "in the Software without restriction, including without limitation the rights", + "to use, copy, modify, merge, publish, distribute, sublicense, and/or sell", + "copies of the Software, and to permit persons to whom the Software is", + "furnished to do so, subject to the following conditions:", + "", + "The above copyright notice and this permission notice shall be included in all", + "copies or substantial portions of the Software.", + "", + "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR", + "IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,", + "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE", + "AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER", + "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,", + "OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE", + "SOFTWARE." + ] } ] diff --git a/cgmanifest.json b/cgmanifest.json index b1fd733d7e..25178f2f20 100644 --- a/cgmanifest.json +++ b/cgmanifest.json @@ -60,12 +60,12 @@ "git": { "name": "electron", "repositoryUrl": "https://github.com/electron/electron", - "commitHash": "bc8fc0d406d32e4c02f3ec9f161deaacbe4f5989" + "commitHash": "5f93e889020d279d5a9cd1ecab080ab467312447" } }, "isOnlyProductionDependency": true, "license": "MIT", - "version": "7.3.1" + "version": "7.3.2" }, { "component": { @@ -77,6 +77,40 @@ } }, "isOnlyProductionDependency": true, + "licenseDetail": [ + "Inno Setup License", + "==================", + "", + "Except where otherwise noted, all of the documentation and software included in the Inno Setup", + "package is copyrighted by Jordan Russell.", + "", + "Copyright (C) 1997-2020 Jordan Russell. All rights reserved.", + "Portions Copyright (C) 2000-2020 Martijn Laan. All rights reserved.", + "", + "This software is provided \"as-is,\" without any express or implied warranty. In no event shall the", + "author be held liable for any damages arising from the use of this software.", + "", + "Permission is granted to anyone to use this software for any purpose, including commercial", + "applications, and to alter and redistribute it, provided that the following conditions are met:", + "", + "1. All redistributions of source code files must retain all copyright notices that are currently in", + " place, and this list of conditions without modification.", + "", + "2. All redistributions in binary form must retain all occurrences of the above copyright notice and", + " web site addresses that are currently in place (for example, in the About boxes).", + "", + "3. The origin of this software must not be misrepresented; you must not claim that you wrote the", + " original software. If you use this software to distribute a product, an acknowledgment in the", + " product documentation would be appreciated but is not required.", + "", + "4. Modified versions in source or binary form must be plainly marked as such, and must not be", + " misrepresented as being the original software.", + "", + "", + "Jordan Russell", + "jr-2010 AT jrsoftware.org", + "https://jrsoftware.org/" + ], "version": "5.5.6" }, { diff --git a/extensions/configuration-editing/extension-browser.webpack.config.js b/extensions/configuration-editing/extension-browser.webpack.config.js index cd76f68c8c..8c21467f46 100644 --- a/extensions/configuration-editing/extension-browser.webpack.config.js +++ b/extensions/configuration-editing/extension-browser.webpack.config.js @@ -7,27 +7,15 @@ 'use strict'; -const withDefaults = require('../shared.webpack.config'); -const path = require('path'); +const withBrowserDefaults = require('../shared.webpack.config').browser; -const clientConfig = withDefaults({ - target: 'webworker', +module.exports = withBrowserDefaults({ context: __dirname, entry: { extension: './src/configurationEditingMain.ts' }, output: { filename: 'configurationEditingMain.js' - }, - performance: { - hints: false - }, - resolve: { - alias: { - 'vscode-nls': path.resolve(__dirname, '../../build/polyfills/vscode-nls.js') - } } }); -clientConfig.module.rules[0].use.shift(); // remove nls loader -module.exports = clientConfig; diff --git a/extensions/configuration-editing/package.json b/extensions/configuration-editing/package.json index 023745d0c2..477d530a0e 100644 --- a/extensions/configuration-editing/package.json +++ b/extensions/configuration-editing/package.json @@ -13,7 +13,7 @@ "onLanguage:jsonc" ], "main": "./out/configurationEditingMain", - "browser": "./dist/configurationEditingMain", + "browser": "./dist/browser/configurationEditingMain", "scripts": { "compile": "gulp compile-extension:configuration-editing", "watch": "gulp watch-extension:configuration-editing" @@ -117,6 +117,10 @@ "fileMatch": "/.devcontainer.json", "url": "./schemas/devContainer.schema.json" }, + { + "fileMatch": "%APP_SETTINGS_HOME%/globalStorage/ms-vscode-remote.remote-containers/nameConfigs/*.json", + "url": "./schemas/attachContainer.schema.json" + }, { "fileMatch": "%APP_SETTINGS_HOME%/globalStorage/ms-vscode-remote.remote-containers/imageConfigs/*.json", "url": "./schemas/attachContainer.schema.json" diff --git a/extensions/configuration-editing/schemas/attachContainer.schema.json b/extensions/configuration-editing/schemas/attachContainer.schema.json index c5d46bb836..da06cb1c9f 100644 --- a/extensions/configuration-editing/schemas/attachContainer.schema.json +++ b/extensions/configuration-editing/schemas/attachContainer.schema.json @@ -42,8 +42,8 @@ "description": "An array of extensions that should be installed into the container.", "items": { "type": "string", - "pattern": "^([a-z0-9A-Z][a-z0-9\\-A-Z]*)\\.([a-z0-9A-Z][a-z0-9\\-A-Z]*)$", - "errorMessage": "Expected format '${publisher}.${name}'. Example: 'vscode.csharp'." + "pattern": "^([a-z0-9A-Z][a-z0-9\\-A-Z]*)\\.([a-z0-9A-Z][a-z0-9\\-A-Z]*)(@(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?)?$", + "errorMessage": "Expected format: '${publisher}.${name}' or '${publisher}.${name}@${version}'. Example: 'ms-dotnettools.csharp'." } }, "postAttachCommand": { diff --git a/extensions/configuration-editing/schemas/devContainer.schema.json b/extensions/configuration-editing/schemas/devContainer.schema.json index abf7469d35..596672dede 100644 --- a/extensions/configuration-editing/schemas/devContainer.schema.json +++ b/extensions/configuration-editing/schemas/devContainer.schema.json @@ -17,8 +17,8 @@ "description": "An array of extensions that should be installed into the container.", "items": { "type": "string", - "pattern": "^([a-z0-9A-Z][a-z0-9\\-A-Z]*)\\.([a-z0-9A-Z][a-z0-9\\-A-Z]*)$", - "errorMessage": "Expected format '${publisher}.${name}'. Example: 'vscode.csharp'." + "pattern": "^([a-z0-9A-Z][a-z0-9\\-A-Z]*)\\.([a-z0-9A-Z][a-z0-9\\-A-Z]*)(@(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?)?$", + "errorMessage": "Expected format: '${publisher}.${name}' or '${publisher}.${name}@${version}'. Example: 'ms-dotnettools.csharp'." } }, "settings": { diff --git a/extensions/git/package.json b/extensions/git/package.json index 318c6e733c..e5e78fd3d8 100644 --- a/extensions/git/package.json +++ b/extensions/git/package.json @@ -432,8 +432,8 @@ }, { "command": "git.unstageSelectedRanges", - "key": "ctrl+k ctrl+u", - "mac": "cmd+k cmd+u", + "key": "ctrl+k ctrl+n", + "mac": "cmd+k cmd+n", "when": "isInDiffEditor" }, { @@ -1878,7 +1878,7 @@ "dependencies": { "byline": "^5.0.0", "file-type": "^7.2.0", - "iconv-lite": "0.6.0", + "iconv-lite-umd": "0.6.5", "jschardet": "2.1.1", "vscode-extension-telemetry": "0.1.1", "vscode-nls": "^4.0.0", diff --git a/extensions/git/src/decorationProvider.ts b/extensions/git/src/decorationProvider.ts index d3ee8bb27b..8239627b87 100644 --- a/extensions/git/src/decorationProvider.ts +++ b/extensions/git/src/decorationProvider.ts @@ -8,15 +8,15 @@ import * as path from 'path'; import { Repository, GitResourceGroup } from './repository'; import { Model } from './model'; import { debounce } from './decorators'; -import { filterEvent, dispose, anyEvent, fireEvent } from './util'; +import { filterEvent, dispose, anyEvent, fireEvent, PromiseSource } from './util'; import { GitErrorCodes, Status } from './api/git'; -type Callback = { resolve: (status: boolean) => void, reject: (err: any) => void }; - class GitIgnoreDecorationProvider implements DecorationProvider { + private static Decoration: Decoration = { priority: 3, color: new ThemeColor('gitDecoration.ignoredResourceForeground') }; + readonly onDidChangeDecorations: Event; - private queue = new Map; }>(); + private queue = new Map>; }>(); private disposables: Disposable[] = []; constructor(private model: Model) { @@ -29,32 +29,29 @@ class GitIgnoreDecorationProvider implements DecorationProvider { this.disposables.push(window.registerDecorationProvider(this)); } - provideDecoration(uri: Uri): Promise { + async provideDecoration(uri: Uri): Promise { const repository = this.model.getRepository(uri); if (!repository) { - return Promise.resolve(undefined); + return; } let queueItem = this.queue.get(repository.root); if (!queueItem) { - queueItem = { repository, queue: new Map() }; + queueItem = { repository, queue: new Map>() }; this.queue.set(repository.root, queueItem); } - return new Promise((resolve, reject) => { - queueItem!.queue.set(uri.fsPath, { resolve, reject }); + let promiseSource = queueItem.queue.get(uri.fsPath); + + if (!promiseSource) { + promiseSource = new PromiseSource(); + queueItem!.queue.set(uri.fsPath, promiseSource); this.checkIgnoreSoon(); - }).then(ignored => { - if (ignored) { - return { - priority: 3, - color: new ThemeColor('gitDecoration.ignoredResourceForeground') - }; - } - return undefined; - }); + } + + return await promiseSource.promise; } @debounce(500) @@ -66,16 +63,16 @@ class GitIgnoreDecorationProvider implements DecorationProvider { const paths = [...item.queue.keys()]; item.repository.checkIgnore(paths).then(ignoreSet => { - for (const [key, value] of item.queue.entries()) { - value.resolve(ignoreSet.has(key)); + for (const [path, promiseSource] of item.queue.entries()) { + promiseSource.resolve(ignoreSet.has(path) ? GitIgnoreDecorationProvider.Decoration : undefined); } }, err => { if (err.gitErrorCode !== GitErrorCodes.IsInSubmodule) { console.error(err); } - for (const [, value] of item.queue.entries()) { - value.reject(err); + for (const [, promiseSource] of item.queue.entries()) { + promiseSource.reject(err); } }); } diff --git a/extensions/git/src/git.ts b/extensions/git/src/git.ts index 55d9d12b50..326bc19e4e 100644 --- a/extensions/git/src/git.ts +++ b/extensions/git/src/git.ts @@ -9,7 +9,7 @@ import * as os from 'os'; import * as cp from 'child_process'; import * as which from 'which'; import { EventEmitter } from 'events'; -import iconv = require('iconv-lite'); +import * as iconv from 'iconv-lite-umd'; import * as filetype from 'file-type'; import { assign, groupBy, IDisposable, toDisposable, dispose, mkdirp, readBytes, detectUnicodeEncoding, Encoding, onceEvent, splitInChunks, Limiter } from './util'; import { CancellationToken, Progress, Uri } from 'vscode'; @@ -1939,6 +1939,17 @@ export class Repository { return message.replace(/^\s*#.*$\n?/gm, '').trim(); } + async getSquashMessage(): Promise { + const squashMsgPath = path.join(this.repositoryRoot, '.git', 'SQUASH_MSG'); + + try { + const raw = await fs.readFile(squashMsgPath, 'utf8'); + return this.stripCommitMessageComments(raw); + } catch { + return undefined; + } + } + async getMergeMessage(): Promise { const mergeMsgPath = path.join(this.repositoryRoot, '.git', 'MERGE_MSG'); diff --git a/extensions/git/src/repository.ts b/extensions/git/src/repository.ts index e7c162dd9a..ea3feabd01 100644 --- a/extensions/git/src/repository.ts +++ b/extensions/git/src/repository.ts @@ -537,7 +537,7 @@ class DotGitWatcher implements IFileWatcher { upstreamWatcher.event(this.emitter.fire, this.emitter, this.transientDisposables); } catch (err) { if (Log.logLevel <= LogLevel.Error) { - this.outputChannel.appendLine(`Failed to watch ref '${upstreamPath}', is most likely packed.\n${err.stack || err}`); + this.outputChannel.appendLine(`Warning: Failed to watch ref '${upstreamPath}', is most likely packed.`); } } } @@ -729,10 +729,10 @@ export class Repository implements Disposable { this.updateInputBoxPlaceholder(); this.disposables.push(this.onDidRunGitStatus(() => this.updateInputBoxPlaceholder())); - this._mergeGroup = this._sourceControl.createResourceGroup('merge', localize('merge changes', "MERGE CHANGES")); - this._indexGroup = this._sourceControl.createResourceGroup('index', localize('staged changes', "STAGED CHANGES")); - this._workingTreeGroup = this._sourceControl.createResourceGroup('workingTree', localize('changes', "CHANGES")); - this._untrackedGroup = this._sourceControl.createResourceGroup('untracked', localize('untracked changes', "UNTRACKED CHANGES")); + this._mergeGroup = this._sourceControl.createResourceGroup('merge', localize('merge changes', "Merge Changes")); + this._indexGroup = this._sourceControl.createResourceGroup('index', localize('staged changes', "Staged Changes")); + this._workingTreeGroup = this._sourceControl.createResourceGroup('workingTree', localize('changes', "Changes")); + this._untrackedGroup = this._sourceControl.createResourceGroup('untracked', localize('untracked changes', "Untracked Changes")); const updateIndexGroupVisibility = () => { const config = workspace.getConfiguration('git', root); @@ -865,10 +865,10 @@ export class Repository implements Disposable { } async getInputTemplate(): Promise { - const mergeMessage = await this.repository.getMergeMessage(); + const commitMessage = (await Promise.all([this.repository.getMergeMessage(), this.repository.getSquashMessage()])).find(msg => msg !== undefined); - if (mergeMessage) { - return mergeMessage; + if (commitMessage) { + return commitMessage; } return await this.repository.getCommitTemplate(); diff --git a/extensions/git/src/util.ts b/extensions/git/src/util.ts index 2d3a764f80..221f2a65a2 100644 --- a/extensions/git/src/util.ts +++ b/extensions/git/src/util.ts @@ -3,7 +3,7 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { Event, Disposable } from 'vscode'; +import { Event, Disposable, EventEmitter } from 'vscode'; import { dirname, sep } from 'path'; import { Readable } from 'stream'; import { promises as fs, createReadStream } from 'fs'; @@ -400,3 +400,39 @@ export class Limiter { } } } + +type Completion = { success: true, value: T } | { success: false, err: any }; + +export class PromiseSource { + + private _onDidComplete = new EventEmitter>(); + + private _promise: Promise | undefined; + get promise(): Promise { + if (this._promise) { + return this._promise; + } + + return eventToPromise(this._onDidComplete.event).then(completion => { + if (completion.success) { + return completion.value; + } else { + throw completion.err; + } + }); + } + + resolve(value: T): void { + if (!this._promise) { + this._promise = Promise.resolve(value); + this._onDidComplete.fire({ success: true, value }); + } + } + + reject(err: any): void { + if (!this._promise) { + this._promise = Promise.reject(err); + this._onDidComplete.fire({ success: false, err }); + } + } +} diff --git a/extensions/git/yarn.lock b/extensions/git/yarn.lock index f03bee0ad5..35277c4713 100644 --- a/extensions/git/yarn.lock +++ b/extensions/git/yarn.lock @@ -425,12 +425,10 @@ https-proxy-agent@^2.2.1: agent-base "^4.3.0" debug "^3.1.0" -iconv-lite@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.0.tgz#66a93b80df0bd05d2a43a7426296b7f91073f125" - integrity sha512-43ZpGYZ9QtuutX5l6WC1DSO8ane9N+Ct5qPLF2OV7vM9abM69gnAbVkh66ibaZd3aOGkoP1ZmringlKhLBkw2Q== - dependencies: - safer-buffer ">= 2.1.2 < 3" +iconv-lite-umd@0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/iconv-lite-umd/-/iconv-lite-umd-0.6.5.tgz#6a1f621a3b4d125f72feff813a9839e1ebd6c722" + integrity sha512-WDegH4al+e3n3jTOStRvm+jzDA3JMUQGgzdAsMxAgcgB0Oi72HjfdsoX08ieKsy3rKexXVjWZr41aOIUaCZnMg== inflight@^1.0.4: version "1.0.6" @@ -748,7 +746,7 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.2: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== diff --git a/extensions/github-authentication/extension-browser.webpack.config.js b/extensions/github-authentication/extension-browser.webpack.config.js index 9c37802ab9..46b8c2257a 100644 --- a/extensions/github-authentication/extension-browser.webpack.config.js +++ b/extensions/github-authentication/extension-browser.webpack.config.js @@ -8,11 +8,10 @@ 'use strict'; const path = require('path'); -const withDefaults = require('../shared.webpack.config'); +const withBrowserDefaults = require('../shared.webpack.config').browser; -module.exports = withDefaults({ +module.exports = withBrowserDefaults({ context: __dirname, - target: 'webworker', node: false, entry: { extension: './src/extension.ts', @@ -20,30 +19,10 @@ module.exports = withDefaults({ externals: { 'keytar': 'commonjs keytar', }, - // TODO@eamodio Deal with nls properly for the browser - // Specify module here, so we can stop the vscode-nls-dev loader from overwriting nls calls - module: { - rules: [{ - test: /\.ts$/, - exclude: /node_modules/, - use: [{ - // configure TypeScript loader: - // * enable sources maps for end-to-end source maps - loader: 'ts-loader', - options: { - compilerOptions: { - 'sourceMap': true, - } - } - }] - }] - }, resolve: { alias: { 'node-fetch': path.resolve(__dirname, 'node_modules/node-fetch/browser.js'), - 'vscode-extension-telemetry': path.resolve(__dirname, '../../build/polyfills/vscode-extension-telemetry.js'), - 'vscode-nls': path.resolve(__dirname, '../../build/polyfills/vscode-nls.js'), 'uuid': path.resolve(__dirname, 'node_modules/uuid/dist/esm-browser/index.js') - }, + } } }); diff --git a/extensions/github-authentication/package.json b/extensions/github-authentication/package.json index b526e92146..0a4c850d7a 100644 --- a/extensions/github-authentication/package.json +++ b/extensions/github-authentication/package.json @@ -32,7 +32,7 @@ }, "aiKey": "AIF-d9b70cd4-b9f9-4d70-929b-a071c400b217", "main": "./out/extension.js", - "browser": "./dist/extension.js", + "browser": "./dist/browser/extension.js", "scripts": { "compile": "gulp compile-extension:github-authentication", "compile-web": "npx webpack-cli --config extension-browser.webpack.config --mode none", diff --git a/extensions/github-authentication/src/github.ts b/extensions/github-authentication/src/github.ts index 252ac0aaf4..f86092fbd0 100644 --- a/extensions/github-authentication/src/github.ts +++ b/extensions/github-authentication/src/github.ts @@ -22,7 +22,7 @@ interface SessionData { } export class GitHubAuthenticationProvider { - private _sessions: vscode.AuthenticationSession2[] = []; + private _sessions: vscode.AuthenticationSession[] = []; private _githubServer = new GitHubServer(); public async initialize(): Promise { @@ -37,7 +37,7 @@ export class GitHubAuthenticationProvider { private pollForChange() { setTimeout(async () => { - let storedSessions: vscode.AuthenticationSession2[]; + let storedSessions: vscode.AuthenticationSession[]; try { storedSessions = await this.readSessions(); } catch (e) { @@ -80,12 +80,12 @@ export class GitHubAuthenticationProvider { }, 1000 * 30); } - private async readSessions(): Promise { + private async readSessions(): Promise { const storedSessions = await keychain.getToken(); if (storedSessions) { try { const sessionData: SessionData[] = JSON.parse(storedSessions); - const sessionPromises = sessionData.map(async (session: SessionData): Promise => { + const sessionPromises = sessionData.map(async (session: SessionData): Promise => { const needsUserInfo = !session.account; let userInfo: { id: string, accountName: string }; if (needsUserInfo) { @@ -121,11 +121,11 @@ export class GitHubAuthenticationProvider { await keychain.setToken(JSON.stringify(this._sessions)); } - get sessions(): vscode.AuthenticationSession2[] { + get sessions(): vscode.AuthenticationSession[] { return this._sessions; } - public async login(scopes: string): Promise { + public async login(scopes: string): Promise { const token = await this._githubServer.login(scopes); const session = await this.tokenToSession(token, scopes.split(' ')); await this.setToken(session); @@ -136,12 +136,12 @@ export class GitHubAuthenticationProvider { this._githubServer.manuallyProvideToken(); } - private async tokenToSession(token: string, scopes: string[]): Promise { + private async tokenToSession(token: string, scopes: string[]): Promise { const userInfo = await this._githubServer.getUserInfo(token); - return new vscode.AuthenticationSession2(uuid(), token, { displayName: userInfo.accountName, id: userInfo.id }, scopes); + return new vscode.AuthenticationSession(uuid(), token, { displayName: userInfo.accountName, id: userInfo.id }, scopes); } - private async setToken(session: vscode.AuthenticationSession2): Promise { + private async setToken(session: vscode.AuthenticationSession): Promise { const sessionIndex = this._sessions.findIndex(s => s.id === session.id); if (sessionIndex > -1) { this._sessions.splice(sessionIndex, 1, session); diff --git a/extensions/github-browser/extension-browser.webpack.config.js b/extensions/github-browser/extension-browser.webpack.config.js index f60d4b688f..c6d40d066e 100644 --- a/extensions/github-browser/extension-browser.webpack.config.js +++ b/extensions/github-browser/extension-browser.webpack.config.js @@ -7,18 +7,19 @@ 'use strict'; const path = require('path'); -const withDefaults = require('../shared.webpack.config'); +const withBrowserDefaults = require('../shared.webpack.config').browser; -module.exports = withDefaults({ +const config = withBrowserDefaults({ context: __dirname, - target: 'webworker', node: false, entry: { - extension: './src/extension.ts', + extension: './src/extension.ts' }, resolve: { alias: { - 'node-fetch': path.resolve(__dirname, 'node_modules/node-fetch/browser.js'), - }, + 'node-fetch': path.resolve(__dirname, 'node_modules/node-fetch/browser.js') + } } }); + +module.exports = config; diff --git a/extensions/github-browser/package.json b/extensions/github-browser/package.json index c5228c0a17..6e3c071b70 100644 --- a/extensions/github-browser/package.json +++ b/extensions/github-browser/package.json @@ -13,11 +13,93 @@ "Other" ], "activationEvents": [ - "onFileSystem:github" + "onFileSystem:codespace", + "onFileSystem:github", + "onCommand:githubBrowser.openRepository" ], - "browser": "./dist/extension.js", + "browser": "./dist/browser/extension.js", "main": "./out/extension.js", "contributes": { + "commands": [ + { + "command": "githubBrowser.commit", + "title": "Commit", + "icon": "$(check)", + "category": "GitHub Browser" + }, + { + "command": "githubBrowser.discardChanges", + "title": "Discard Changes", + "icon": "$(discard)", + "category": "GitHub Browser" + }, + { + "command": "githubBrowser.openChanges", + "title": "Open Changes", + "icon": "$(git-compare)", + "category": "GitHub Browser" + }, + { + "command": "githubBrowser.openFile", + "title": "Open File", + "icon": "$(go-to-file)", + "category": "GitHub Browser" + } + ], + "menus": { + "commandPalette": [ + { + "command": "githubBrowser.commit", + "when": "false" + }, + { + "command": "githubBrowser.discardChanges", + "when": "false" + }, + { + "command": "githubBrowser.openChanges", + "when": "false" + }, + { + "command": "githubBrowser.openFile", + "when": "false" + } + ], + "scm/title": [ + { + "command": "githubBrowser.commit", + "group": "navigation", + "when": "scmProvider == github" + } + ], + "scm/resourceState/context": [ + { + "command": "githubBrowser.openFile", + "when": "scmProvider == github && scmResourceGroup == github.changes", + "group": "inline@0" + }, + { + "command": "githubBrowser.discardChanges", + "when": "scmProvider == github && scmResourceGroup == github.changes", + "group": "inline@1" + }, + { + "command": "githubBrowser.openChanges", + "when": "scmProvider == github && scmResourceGroup == github.changes", + "group": "navigation@0" + }, + { + "command": "githubBrowser.openFile", + "when": "scmProvider == github && scmResourceGroup == github.changes", + "group": "navigation@1" + }, + { + "command": "githubBrowser.discardChanges", + "when": "scmProvider == github && scmResourceGroup == github.changes", + "group": "1_modification@0" + } + ] + }, "resourceLabelFormatters": [ { "scheme": "github", @@ -36,6 +118,24 @@ "separator": "/", "workspaceSuffix": "GitHub" } + }, + { + "scheme": "codespace", + "authority": "HEAD", + "formatting": { + "label": "github.com${path}", + "separator": "/", + "workspaceSuffix": "GitHub" + } + }, + { + "scheme": "codespace", + "authority": "*", + "formatting": { + "label": "github.com${path} (${authority})", + "separator": "/", + "workspaceSuffix": "GitHub" + } } ] }, @@ -47,14 +147,13 @@ "vscode:prepublish": "npm run compile" }, "dependencies": { - "@octokit/graphql": "4.5.0", - "@octokit/rest": "17.11.0", + "@octokit/graphql": "4.5.1", + "@octokit/rest": "18.0.0", "fuzzysort": "1.1.4", - "node-fetch": "2.6.0" + "node-fetch": "2.6.0", + "vscode-nls": "4.1.2" }, "devDependencies": { - "@types/node-fetch": "2.5.7", - "webpack": "4.43.0", - "webpack-cli": "3.3.11" + "@types/node-fetch": "2.5.7" } } diff --git a/extensions/github-browser/src/changeStore.ts b/extensions/github-browser/src/changeStore.ts new file mode 100644 index 0000000000..26ba7f1071 --- /dev/null +++ b/extensions/github-browser/src/changeStore.ts @@ -0,0 +1,380 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +'use strict'; +import { commands, Event, EventEmitter, FileStat, FileType, Memento, TextDocumentShowOptions, Uri, ViewColumn } from 'vscode'; +import { getRootUri, getRelativePath, isChild } from './extension'; +import { sha1 } from './sha1'; + +const textDecoder = new TextDecoder(); + +interface CreateOperation { + type: 'created'; + size: number; + timestamp: number; + uri: T; + hash: string; + originalHash: string; +} + +interface ChangeOperation { + type: 'changed'; + size: number; + timestamp: number; + uri: T; + hash: string; + originalHash: string; +} + +interface DeleteOperation { + type: 'deleted'; + size: undefined; + timestamp: number; + uri: T; + hash: undefined; + originalHash: undefined; +} + +export type Operation = CreateOperation | ChangeOperation | DeleteOperation; +type StoredOperation = CreateOperation | ChangeOperation | DeleteOperation; + +const workingOperationsKeyPrefix = 'github.working.changes|'; +const workingFileKeyPrefix = 'github.working|'; + +function fromSerialized(operations: StoredOperation): Operation { + return { ...operations, uri: Uri.parse(operations.uri) }; +} + +interface CreatedFileChangeStoreEvent { + type: 'created'; + rootUri: Uri; + uri: Uri; +} + +interface ChangedFileChangeStoreEvent { + type: 'changed'; + rootUri: Uri; + uri: Uri; +} + +interface DeletedFileChangeStoreEvent { + type: 'deleted'; + rootUri: Uri; + uri: Uri; +} + +type ChangeStoreEvent = CreatedFileChangeStoreEvent | ChangedFileChangeStoreEvent | DeletedFileChangeStoreEvent; + +function toChangeStoreEvent(operation: Operation | StoredOperation, rootUri: Uri, uri?: Uri): ChangeStoreEvent { + return { + type: operation.type, + rootUri: rootUri, + uri: uri ?? (typeof operation.uri === 'string' ? Uri.parse(operation.uri) : operation.uri) + }; +} + +export interface IChangeStore { + onDidChange: Event; + + acceptAll(rootUri: Uri): Promise; + discard(uri: Uri): Promise; + discardAll(rootUri: Uri): Promise; + + getChanges(rootUri: Uri): Operation[]; + getContent(uri: Uri): string | undefined; + + openChanges(uri: Uri, original: Uri): void; + openFile(uri: Uri): void; +} + +export interface IWritableChangeStore { + onDidChange: Event; + + hasChanges(rootUri: Uri): boolean; + + getContent(uri: Uri): string | undefined; + getStat(uri: Uri): FileStat | undefined; + updateDirectoryEntries(uri: Uri, entries: [string, FileType][]): [string, FileType][]; + + onFileChanged(uri: Uri, content: Uint8Array, originalContent: () => Uint8Array | Thenable): Promise; + onFileCreated(uri: Uri, content: Uint8Array): Promise; + onFileDeleted(uri: Uri): Promise; +} + +export class ChangeStore implements IChangeStore, IWritableChangeStore { + private _onDidChange = new EventEmitter(); + get onDidChange(): Event { + return this._onDidChange.event; + } + + constructor(private readonly memento: Memento) { } + + async acceptAll(rootUri: Uri): Promise { + const operations = this.getChanges(rootUri); + + await this.saveWorkingOperations(rootUri, undefined); + + for (const operation of operations) { + await this.discardWorkingContent(operation.uri); + this._onDidChange.fire(toChangeStoreEvent(operation, rootUri)); + } + } + + async discard(uri: Uri): Promise { + const rootUri = getRootUri(uri); + if (rootUri === undefined) { + return; + } + + const key = uri.toString(); + + const operations = this.getWorkingOperations(rootUri); + const index = operations.findIndex(c => c.uri === key); + if (index === -1) { + return; + } + + const [operation] = operations.splice(index, 1); + await this.saveWorkingOperations(rootUri, operations); + await this.discardWorkingContent(uri); + + this._onDidChange.fire({ + type: operation.type === 'created' ? 'deleted' : operation.type === 'deleted' ? 'created' : 'changed', + rootUri: rootUri, + uri: uri + }); + } + + async discardAll(rootUri: Uri): Promise { + const operations = this.getChanges(rootUri); + + await this.saveWorkingOperations(rootUri, undefined); + + for (const operation of operations) { + await this.discardWorkingContent(operation.uri); + this._onDidChange.fire(toChangeStoreEvent(operation, rootUri)); + } + } + + getChanges(rootUri: Uri) { + return this.getWorkingOperations(rootUri).map(c => fromSerialized(c)); + } + + getContent(uri: Uri): string | undefined { + return this.memento.get(`${workingFileKeyPrefix}${uri.toString()}`); + } + + getStat(uri: Uri): FileStat | undefined { + const key = uri.toString(); + const operation = this.getChanges(getRootUri(uri)!).find(c => c.uri.toString() === key); + if (operation === undefined) { + return undefined; + } + + return { + type: FileType.File, + size: operation.size ?? 0, + ctime: 0, + mtime: operation.timestamp + }; + } + + hasChanges(rootUri: Uri): boolean { + return this.getWorkingOperations(rootUri).length !== 0; + } + + updateDirectoryEntries(uri: Uri, entries: [string, FileType][]): [string, FileType][] { + const rootUri = getRootUri(uri); + if (rootUri === undefined) { + return entries; + } + + const folderPath = getRelativePath(rootUri, uri); + + const operations = this.getChanges(rootUri); + for (const operation of operations) { + switch (operation.type) { + case 'changed': + continue; + + case 'created': { + const filePath = getRelativePath(rootUri, operation.uri); + if (isChild(folderPath, filePath)) { + entries.push([filePath, FileType.File]); + } + break; + } + + case 'deleted': { + const filePath = getRelativePath(rootUri, operation.uri); + if (isChild(folderPath, filePath)) { + const index = entries.findIndex(([path]) => path === filePath); + if (index !== -1) { + entries.splice(index, 1); + } + } + break; + } + } + } + + return entries; + } + + async onFileChanged(uri: Uri, content: Uint8Array, originalContent: () => Uint8Array | Thenable): Promise { + const rootUri = getRootUri(uri); + if (rootUri === undefined) { + return; + } + + const key = uri.toString(); + + const operations = this.getWorkingOperations(rootUri); + + const hash = await sha1(content); + + let operation = operations.find(c => c.uri === key); + if (operation === undefined) { + const originalHash = await sha1(await originalContent!()); + if (hash === originalHash) { + return; + } + + operation = { + type: 'changed', + size: content.byteLength, + timestamp: Date.now(), + uri: key, + hash: hash!, + originalHash: originalHash + } as ChangeOperation; + operations.push(operation); + + await this.saveWorkingOperations(rootUri, operations); + await this.saveWorkingContent(uri, textDecoder.decode(content)); + } else if (hash! === operation.originalHash) { + operations.splice(operations.indexOf(operation), 1); + + await this.saveWorkingOperations(rootUri, operations); + await this.discardWorkingContent(uri); + } else if (operation.hash !== hash) { + operation.hash = hash!; + operation.timestamp = Date.now(); + + await this.saveWorkingOperations(rootUri, operations); + await this.saveWorkingContent(uri, textDecoder.decode(content)); + } + + this._onDidChange.fire(toChangeStoreEvent(operation, rootUri, uri)); + } + + async onFileCreated(uri: Uri, content: Uint8Array): Promise { + const rootUri = getRootUri(uri); + if (rootUri === undefined) { + return; + } + + const key = uri.toString(); + + const operations = this.getWorkingOperations(rootUri); + + const hash = await sha1(content); + + let operation = operations.find(c => c.uri === key); + if (operation === undefined) { + operation = { + type: 'created', + size: content.byteLength, + timestamp: Date.now(), + uri: key, + hash: hash!, + originalHash: hash! + } as CreateOperation; + operations.push(operation); + + await this.saveWorkingOperations(rootUri, operations); + await this.saveWorkingContent(uri, textDecoder.decode(content)); + } else { + // Shouldn't happen, but if it does just update the contents + operation.hash = hash!; + operation.timestamp = Date.now(); + + await this.saveWorkingOperations(rootUri, operations); + await this.saveWorkingContent(uri, textDecoder.decode(content)); + } + + this._onDidChange.fire(toChangeStoreEvent(operation, rootUri, uri)); + } + + async onFileDeleted(uri: Uri): Promise { + const rootUri = getRootUri(uri); + if (rootUri === undefined) { + return; + } + + const key = uri.toString(); + + const operations = this.getWorkingOperations(rootUri); + + let operation = operations.find(c => c.uri === key); + if (operation !== undefined) { + operations.splice(operations.indexOf(operation), 1); + } + + const wasCreated = operation?.type === 'created'; + + operation = { + type: 'deleted', + timestamp: Date.now(), + uri: key, + } as DeleteOperation; + + // Only track the delete, if we weren't tracking the create + if (!wasCreated) { + operations.push(operation); + } + + await this.saveWorkingOperations(rootUri, operations); + await this.discardWorkingContent(uri); + + this._onDidChange.fire(toChangeStoreEvent(operation, rootUri, uri)); + } + + async openChanges(uri: Uri, original: Uri) { + const opts: TextDocumentShowOptions = { + preserveFocus: false, + preview: true, + viewColumn: ViewColumn.Active + }; + + await commands.executeCommand('vscode.diff', original, uri, `${uri.fsPath} (Working Tree)`, opts); + } + + async openFile(uri: Uri) { + const opts: TextDocumentShowOptions = { + preserveFocus: false, + preview: false, + viewColumn: ViewColumn.Active + }; + + await commands.executeCommand('vscode.open', uri, opts); + } + + private getWorkingOperations(rootUri: Uri): StoredOperation[] { + return this.memento.get(`${workingOperationsKeyPrefix}${rootUri.toString()}`, []); + } + + private async saveWorkingOperations(rootUri: Uri, operations: StoredOperation[] | undefined): Promise { + await this.memento.update(`${workingOperationsKeyPrefix}${rootUri.toString()}`, operations); + } + + private async saveWorkingContent(uri: Uri, content: string): Promise { + await this.memento.update(`${workingFileKeyPrefix}${uri.toString()}`, content); + } + + private async discardWorkingContent(uri: Uri): Promise { + await this.memento.update(`${workingFileKeyPrefix}${uri.toString()}`, undefined); + } +} diff --git a/extensions/github-browser/src/contextStore.ts b/extensions/github-browser/src/contextStore.ts new file mode 100644 index 0000000000..f0f418da36 --- /dev/null +++ b/extensions/github-browser/src/contextStore.ts @@ -0,0 +1,36 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +'use strict'; +import { Event, EventEmitter, Memento, Uri } from 'vscode'; + +export const contextKeyPrefix = 'github.context|'; + +export class ContextStore { + private _onDidChange = new EventEmitter(); + get onDidChange(): Event { + return this._onDidChange.event; + } + + constructor(private readonly memento: Memento, private readonly scheme: string) { } + + delete(uri: Uri) { + return this.set(uri, undefined); + } + + get(uri: Uri): T | undefined { + return this.memento.get(`${contextKeyPrefix}${uri.toString()}`); + } + + + async set(uri: Uri, context: T | undefined) { + if (uri.scheme !== this.scheme) { + throw new Error(`Invalid context scheme: ${uri.scheme}`); + } + + await this.memento.update(`${contextKeyPrefix}${uri.toString()}`, context); + this._onDidChange.fire(uri); + } +} diff --git a/extensions/github-browser/src/extension.ts b/extensions/github-browser/src/extension.ts index d50d04c19c..d0df7d647a 100644 --- a/extensions/github-browser/src/extension.ts +++ b/extensions/github-browser/src/extension.ts @@ -3,9 +3,71 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import * as vscode from 'vscode'; -import { GitHubFS } from './githubfs'; +import { ExtensionContext, Uri, workspace } from 'vscode'; +import { ChangeStore } from './changeStore'; +import { ContextStore } from './contextStore'; +import { VirtualFS } from './fs'; +import { GitHubApiContext, GitHubApi } from './github/api'; +import { GitHubFS } from './github/fs'; +import { VirtualSCM } from './scm'; -export function activate(context: vscode.ExtensionContext) { - context.subscriptions.push(new GitHubFS()); +// const repositoryRegex = /^(?:(?:https:\/\/)?github.com\/)?([^\/]+)\/([^\/]+?)(?:\/|.git|$)/i; + +export function activate(context: ExtensionContext) { + const contextStore = new ContextStore(context.workspaceState, GitHubFS.scheme); + const changeStore = new ChangeStore(context.workspaceState); + + const githubApi = new GitHubApi(contextStore); + const gitHubFS = new GitHubFS(githubApi); + const virtualFS = new VirtualFS('codespace', GitHubFS.scheme, contextStore, changeStore, gitHubFS); + + context.subscriptions.push( + githubApi, + gitHubFS, + virtualFS, + new VirtualSCM(GitHubFS.scheme, githubApi, changeStore) + ); + + // commands.registerCommand('githubBrowser.openRepository', async () => { + // const value = await window.showInputBox({ + // placeHolder: 'e.g. https://github.com/microsoft/vscode', + // prompt: 'Enter a GitHub repository url', + // validateInput: value => repositoryRegex.test(value) ? undefined : 'Invalid repository url' + // }); + + // if (value) { + // const match = repositoryRegex.exec(value); + // if (match) { + // const [, owner, repo] = match; + + // const uri = Uri.parse(`codespace://HEAD/${owner}/${repo}`); + // openWorkspace(uri, repo, 'currentWindow'); + // } + // } + // }); } + +export function getRelativePath(rootUri: Uri, uri: Uri) { + return uri.path.substr(rootUri.path.length + 1); +} + +export function getRootUri(uri: Uri) { + return workspace.getWorkspaceFolder(uri)?.uri; +} + +export function isChild(folderPath: string, filePath: string) { + return isDescendent(folderPath, filePath) && filePath.substr(folderPath.length + (folderPath.endsWith('/') ? 0 : 1)).split('/').length === 1; +} + +export function isDescendent(folderPath: string, filePath: string) { + return folderPath.length === 0 || filePath.startsWith(folderPath.endsWith('/') ? folderPath : `${folderPath}/`); +} + +// function openWorkspace(uri: Uri, name: string, location: 'currentWindow' | 'newWindow' | 'addToCurrentWorkspace') { +// if (location === 'addToCurrentWorkspace') { +// const count = (workspace.workspaceFolders && workspace.workspaceFolders.length) || 0; +// return workspace.updateWorkspaceFolders(count, 0, { uri: uri, name: name }); +// } + +// return commands.executeCommand('vscode.openFolder', uri, location === 'newWindow'); +// } diff --git a/extensions/github-browser/src/fs.ts b/extensions/github-browser/src/fs.ts new file mode 100644 index 0000000000..cb163c85b2 --- /dev/null +++ b/extensions/github-browser/src/fs.ts @@ -0,0 +1,220 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +'use strict'; +import { + CancellationToken, + Disposable, + Event, + EventEmitter, + FileChangeEvent, + FileChangeType, + FileSearchOptions, + FileSearchProvider, + FileSearchQuery, + FileStat, + FileSystemError, + FileSystemProvider, + FileType, + Progress, + TextSearchOptions, + TextSearchProvider, + TextSearchQuery, + TextSearchResult, + Uri, + workspace, +} from 'vscode'; +import { IWritableChangeStore } from './changeStore'; +import { ContextStore } from './contextStore'; +import { GitHubApiContext } from './github/api'; + +const emptyDisposable = { dispose: () => { /* noop */ } }; +const textEncoder = new TextEncoder(); + +export class VirtualFS implements FileSystemProvider, FileSearchProvider, TextSearchProvider, Disposable { + private _onDidChangeFile = new EventEmitter(); + get onDidChangeFile(): Event { + return this._onDidChangeFile.event; + } + + private readonly disposable: Disposable; + + constructor( + readonly scheme: string, + private readonly originalScheme: string, + contextStore: ContextStore, + private readonly changeStore: IWritableChangeStore, + private readonly fs: FileSystemProvider & FileSearchProvider & TextSearchProvider + ) { + // TODO@eamodio listen for workspace folder changes + for (const folder of workspace.workspaceFolders ?? []) { + const uri = this.getOriginalResource(folder.uri); + + // If we have a saved context, but no longer have any changes, reset the context + // We only do this on startup/reload to keep things consistent + if (contextStore.get(uri) !== undefined && !changeStore.hasChanges(folder.uri)) { + contextStore.delete(uri); + } + } + + this.disposable = Disposable.from( + workspace.registerFileSystemProvider(scheme, this, { + isCaseSensitive: true, + }), + workspace.registerFileSearchProvider(scheme, this), + workspace.registerTextSearchProvider(scheme, this), + changeStore.onDidChange(e => { + switch (e.type) { + case 'created': + this._onDidChangeFile.fire([{ type: FileChangeType.Created, uri: e.uri }]); + break; + case 'changed': + this._onDidChangeFile.fire([{ type: FileChangeType.Changed, uri: e.uri }]); + break; + case 'deleted': + this._onDidChangeFile.fire([{ type: FileChangeType.Deleted, uri: e.uri }]); + break; + } + }), + ); + } + + dispose() { + this.disposable?.dispose(); + } + + private getOriginalResource(uri: Uri): Uri { + return uri.with({ scheme: this.originalScheme }); + } + + private getVirtualResource(uri: Uri): Uri { + return uri.with({ scheme: this.scheme }); + } + + //#region FileSystemProvider + + watch(): Disposable { + return emptyDisposable; + } + + async stat(uri: Uri): Promise { + let stat = this.changeStore.getStat(uri); + if (stat !== undefined) { + return stat; + } + + stat = await this.fs.stat(this.getOriginalResource(uri)); + return stat; + } + + async readDirectory(uri: Uri): Promise<[string, FileType][]> { + let entries = await this.fs.readDirectory(this.getOriginalResource(uri)); + entries = this.changeStore.updateDirectoryEntries(uri, entries); + return entries; + } + + createDirectory(_uri: Uri): void | Thenable { + // TODO@eamodio only support files for now + throw FileSystemError.NoPermissions(); + } + + async readFile(uri: Uri): Promise { + const content = this.changeStore.getContent(uri); + if (content !== undefined) { + return textEncoder.encode(content); + } + + const data = await this.fs.readFile(this.getOriginalResource(uri)); + return data; + } + + async writeFile(uri: Uri, content: Uint8Array, options: { create: boolean, overwrite: boolean }): Promise { + let stat; + try { + stat = await this.stat(uri); + if (!options.overwrite) { + throw FileSystemError.FileExists(); + } + } catch (ex) { + if (ex instanceof FileSystemError && ex.code === 'FileNotFound') { + if (!options.create) { + throw FileSystemError.FileNotFound(); + } + } else { + throw ex; + } + } + + if (stat === undefined) { + await this.changeStore.onFileCreated(uri, content); + } else { + await this.changeStore.onFileChanged(uri, content, () => this.fs.readFile(this.getOriginalResource(uri))); + } + } + + async delete(uri: Uri, _options: { recursive: boolean }): Promise { + const stat = await this.stat(uri); + if (stat.type !== FileType.File) { + throw FileSystemError.NoPermissions(); + } + + await this.changeStore.onFileDeleted(uri); + } + + async rename(oldUri: Uri, newUri: Uri, options: { overwrite: boolean }): Promise { + const stat = await this.stat(oldUri); + // TODO@eamodio only support files for now + if (stat.type !== FileType.File) { + throw FileSystemError.NoPermissions(); + } + + const content = await this.readFile(oldUri); + await this.writeFile(newUri, content, { create: true, overwrite: options.overwrite }); + await this.delete(oldUri, { recursive: false }); + } + + async copy(source: Uri, destination: Uri, options: { overwrite: boolean }): Promise { + const stat = await this.stat(source); + // TODO@eamodio only support files for now + if (stat.type !== FileType.File) { + throw FileSystemError.NoPermissions(); + } + + const content = await this.readFile(source); + await this.writeFile(destination, content, { create: true, overwrite: options.overwrite }); + } + + //#endregion + + //#region FileSearchProvider + + provideFileSearchResults( + query: FileSearchQuery, + options: FileSearchOptions, + token: CancellationToken, + ) { + return this.fs.provideFileSearchResults(query, { ...options, folder: this.getOriginalResource(options.folder) }, token); + } + + //#endregion + + //#region TextSearchProvider + + provideTextSearchResults( + query: TextSearchQuery, + options: TextSearchOptions, + progress: Progress, + token: CancellationToken, + ) { + return this.fs.provideTextSearchResults( + query, + { ...options, folder: this.getOriginalResource(options.folder) }, + { report: (result: TextSearchResult) => progress.report({ ...result, uri: this.getVirtualResource(result.uri) }) }, + token + ); + } + + //#endregion +} diff --git a/extensions/github-browser/src/gate.ts b/extensions/github-browser/src/gate.ts new file mode 100644 index 0000000000..86f8c6dd52 --- /dev/null +++ b/extensions/github-browser/src/gate.ts @@ -0,0 +1,87 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +'use strict'; + +const emptyStr = ''; + +function defaultResolver(...args: any[]): string { + if (args.length === 1) { + const arg0 = args[0]; + if (arg0 === undefined || arg0 === null) { + return emptyStr; + } + if (typeof arg0 === 'string') { + return arg0; + } + if (typeof arg0 === 'number' || typeof arg0 === 'boolean') { + return String(arg0); + } + + return JSON.stringify(arg0); + } + + return JSON.stringify(args); +} + +function iPromise(obj: T | Promise): obj is Promise { + return typeof (obj as Promise)?.then === 'function'; +} + +export function gate any>(resolver?: (...args: Parameters) => string) { + return (_target: any, key: string, descriptor: PropertyDescriptor) => { + let fn: Function | undefined; + if (typeof descriptor.value === 'function') { + fn = descriptor.value; + } else if (typeof descriptor.get === 'function') { + fn = descriptor.get; + } + if (fn === undefined || fn === null) { + throw new Error('Not supported'); + } + + const gateKey = `$gate$${key}`; + + descriptor.value = function (this: any, ...args: any[]) { + const prop = + args.length === 0 ? gateKey : `${gateKey}$${(resolver ?? defaultResolver)(...(args as Parameters))}`; + + if (!Object.prototype.hasOwnProperty.call(this, prop)) { + Object.defineProperty(this, prop, { + configurable: false, + enumerable: false, + writable: true, + value: undefined, + }); + } + + let promise = this[prop]; + if (promise === undefined) { + let result; + try { + result = fn!.apply(this, args); + if (result === undefined || fn === null || !iPromise(result)) { + return result; + } + + this[prop] = promise = result + .then((r: any) => { + this[prop] = undefined; + return r; + }) + .catch(ex => { + this[prop] = undefined; + throw ex; + }); + } catch (ex) { + this[prop] = undefined; + throw ex; + } + } + + return promise; + }; + }; +} diff --git a/extensions/github-browser/src/github/api.ts b/extensions/github-browser/src/github/api.ts new file mode 100644 index 0000000000..7fffb4a6b7 --- /dev/null +++ b/extensions/github-browser/src/github/api.ts @@ -0,0 +1,491 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { authentication, AuthenticationSession, Disposable, Event, EventEmitter, Range, Uri } from 'vscode'; +import { graphql } from '@octokit/graphql'; +import { Octokit } from '@octokit/rest'; +import { fromGitHubUri } from './fs'; +import { ContextStore } from '../contextStore'; +import { Iterables } from '../iterables'; + +export const shaRegex = /^[0-9a-f]{40}$/; + +export interface GitHubApiContext { + sha: string; + timestamp: number; +} + +interface CreateCommitOperation { + type: 'created'; + path: string; + content: string +} + +interface ChangeCommitOperation { + type: 'changed'; + path: string; + content: string +} + +interface DeleteCommitOperation { + type: 'deleted'; + path: string; + content: undefined +} + +export type CommitOperation = CreateCommitOperation | ChangeCommitOperation | DeleteCommitOperation; + +type ArrayElement> = T extends (infer U)[] ? U : never; +type GitCreateTreeParamsTree = ArrayElement[0]>['tree']>; + +function getGitHubRootUri(uri: Uri) { + const rootIndex = uri.path.indexOf('/', uri.path.indexOf('/', 1) + 1); + return uri.with({ + path: uri.path.substring(0, rootIndex === -1 ? undefined : rootIndex), + query: '' + }); +} + +export class GitHubApi implements Disposable { + private _onDidChangeContext = new EventEmitter(); + get onDidChangeContext(): Event { + return this._onDidChangeContext.event; + } + + private readonly disposable: Disposable; + + constructor(private readonly context: ContextStore) { + this.disposable = Disposable.from( + context.onDidChange(e => this._onDidChangeContext.fire(e)) + ); + } + + dispose() { + this.disposable.dispose(); + } + + private _session: AuthenticationSession | undefined; + async ensureAuthenticated() { + if (this._session === undefined) { + const providers = await authentication.getProviderIds(); + if (!providers.includes('github')) { + await new Promise(resolve => { + authentication.onDidChangeAuthenticationProviders(e => { + if (e.added.includes('github')) { + resolve(); + } + }); + }); + } + + this._session = await authentication.getSession('github', ['repo'], { createIfNone: true }); + } + + return this._session; + } + + private _graphql: typeof graphql | undefined; + private async graphql() { + if (this._graphql === undefined) { + const session = await this.ensureAuthenticated(); + this._graphql = graphql.defaults({ + headers: { + Authorization: `Bearer ${session.accessToken}`, + } + }); + } + + return this._graphql; + } + + private _octokit: typeof Octokit | undefined; + private async octokit(options?: ConstructorParameters[0]) { + if (this._octokit === undefined) { + const session = await this.ensureAuthenticated(); + this._octokit = Octokit.defaults({ auth: `token ${session.accessToken}` }); + } + return new this._octokit(options); + } + + async commit(rootUri: Uri, message: string, operations: CommitOperation[]): Promise { + let { owner, repo, ref } = fromGitHubUri(rootUri); + + try { + if (ref === undefined || ref === 'HEAD') { + ref = await this.defaultBranchQuery(rootUri); + if (ref === undefined) { + throw new Error('Cannot commit — invalid ref'); + } + } + + const context = await this.getContext(rootUri); + if (context.sha === undefined) { + throw new Error('Cannot commit — invalid context'); + } + + const hasDeletes = operations.some(op => op.type === 'deleted'); + + const github = await this.octokit(); + const treeResp = await github.git.getTree({ + owner: owner, + repo: repo, + tree_sha: context.sha, + recursive: hasDeletes ? 'true' : undefined, + }); + + // 0100000000000000 (040000): Directory + // 1000000110100100 (100644): Regular non-executable file + // 1000000110110100 (100664): Regular non-executable group-writeable file + // 1000000111101101 (100755): Regular executable file + // 1010000000000000 (120000): Symbolic link + // 1110000000000000 (160000): Gitlink + let updatedTree: GitCreateTreeParamsTree[]; + + if (hasDeletes) { + updatedTree = treeResp.data.tree as GitCreateTreeParamsTree[]; + + for (const operation of operations) { + switch (operation.type) { + case 'created': + updatedTree.push({ path: operation.path, mode: '100644', type: 'blob', content: operation.content }); + break; + + case 'changed': { + const index = updatedTree.findIndex(item => item.path === operation.path); + if (index !== -1) { + const { path, mode, type } = updatedTree[index]; + updatedTree.splice(index, 1, { path: path, mode: mode, type: type, content: operation.content }); + } + break; + } + case 'deleted': { + const index = updatedTree.findIndex(item => item.path === operation.path); + if (index !== -1) { + updatedTree.splice(index, 1); + } + break; + } + } + } + } else { + updatedTree = []; + + for (const operation of operations) { + switch (operation.type) { + case 'created': + updatedTree.push({ path: operation.path, mode: '100644', type: 'blob', content: operation.content }); + break; + + case 'changed': + const item = treeResp.data.tree.find(item => item.path === operation.path) as GitCreateTreeParamsTree; + if (item !== undefined) { + const { path, mode, type } = item; + updatedTree.push({ path: path, mode: mode, type: type, content: operation.content }); + } + break; + } + } + } + + const updatedTreeResp = await github.git.createTree({ + owner: owner, + repo: repo, + base_tree: hasDeletes ? undefined : treeResp.data.sha, + tree: updatedTree + }); + + const resp = await github.git.createCommit({ + owner: owner, + repo: repo, + message: message, + tree: updatedTreeResp.data.sha, + parents: [context.sha] + }); + + this.updateContext(rootUri, { sha: resp.data.sha, timestamp: Date.now() }); + + // TODO@eamodio need to send a file change for any open files + + await github.git.updateRef({ + owner: owner, + repo: repo, + ref: `heads/${ref}`, + sha: resp.data.sha + }); + + return resp.data.sha; + } catch (ex) { + console.log(ex); + throw ex; + } + } + + async defaultBranchQuery(uri: Uri) { + const { owner, repo } = fromGitHubUri(uri); + + try { + const query = `query defaultBranch($owner: String!, $repo: String!) { + repository(owner: $owner, name: $repo) { + defaultBranchRef { + name + } + } +}`; + + const rsp = await this.gqlQuery<{ + repository: { defaultBranchRef: { name: string; target: { oid: string } } | null | undefined }; + }>(query, { + owner: owner, + repo: repo, + }); + return rsp?.repository?.defaultBranchRef?.name ?? undefined; + } catch (ex) { + return undefined; + } + } + + async filesQuery(uri: Uri) { + const { owner, repo, ref } = fromGitHubUri(uri); + + try { + const context = await this.getContext(uri); + + const resp = await (await this.octokit()).git.getTree({ + owner: owner, + repo: repo, + recursive: '1', + tree_sha: context?.sha ?? ref ?? 'HEAD', + }); + return Iterables.filterMap(resp.data.tree, p => p.type === 'blob' ? p.path : undefined); + } catch (ex) { + return []; + } + } + + async fsQuery(uri: Uri, innerQuery: string): Promise { + const { owner, repo, path, ref } = fromGitHubUri(uri); + + try { + const context = await this.getContext(uri); + + const query = `query fs($owner: String!, $repo: String!, $path: String) { + repository(owner: $owner, name: $repo) { + object(expression: $path) { + ${innerQuery} + } + } +}`; + + const rsp = await this.gqlQuery<{ + repository: { object: T | null | undefined }; + }>(query, { + owner: owner, + repo: repo, + path: `${context.sha ?? ref ?? 'HEAD'}:${path}`, + }); + return rsp?.repository?.object ?? undefined; + } catch (ex) { + return undefined; + } + } + + async latestCommitQuery(uri: Uri) { + const { owner, repo, ref } = fromGitHubUri(uri); + + try { + if (ref === undefined || ref === 'HEAD') { + const query = `query latest($owner: String!, $repo: String!) { + repository(owner: $owner, name: $repo) { + defaultBranchRef { + target { + oid + } + } + } +}`; + + const rsp = await this.gqlQuery<{ + repository: { defaultBranchRef: { name: string; target: { oid: string } } | null | undefined }; + }>(query, { + owner: owner, + repo: repo, + }); + return rsp?.repository?.defaultBranchRef?.target.oid ?? undefined; + } + + const query = `query latest($owner: String!, $repo: String!, $ref: String!) { + repository(owner: $owner, name: $repo) { + ref(qualifiedName: $ref) { + target { + oid + } + } +}`; + + const rsp = await this.gqlQuery<{ + repository: { ref: { target: { oid: string } } | null | undefined }; + }>(query, { + owner: owner, + repo: repo, + ref: ref ?? 'HEAD', + }); + return rsp?.repository?.ref?.target.oid ?? undefined; + } catch (ex) { + return undefined; + } + } + + async searchQuery( + query: string, + uri: Uri, + options: { maxResults?: number; context?: { before?: number; after?: number } }, + ): Promise { + const { owner, repo, ref } = fromGitHubUri(uri); + + // If we have a specific ref, don't try to search, because GitHub search only works against the default branch + if (ref === undefined) { + return { matches: [], limitHit: true }; + } + + try { + const resp = await (await this.octokit({ + request: { + headers: { + accept: 'application/vnd.github.v3.text-match+json', + }, + } + })).search.code({ + q: `${query} repo:${owner}/${repo}`, + }); + + // Since GitHub doesn't return ANY line numbers just fake it at the top of the file 😢 + const range = new Range(0, 0, 0, 0); + + const matches: SearchQueryMatch[] = []; + + let counter = 0; + let match: SearchQueryMatch; + for (const item of resp.data.items) { + for (const m of (item as typeof item & { text_matches: GitHubSearchTextMatch[] }).text_matches) { + counter++; + if (options.maxResults !== undefined && counter > options.maxResults) { + return { matches: matches, limitHit: true }; + } + + match = { + path: item.path, + ranges: [], + preview: m.fragment, + matches: [], + }; + + for (const lm of m.matches) { + let line = 0; + let shartChar = 0; + let endChar = 0; + for (let i = 0; i < lm.indices[1]; i++) { + if (i === lm.indices[0]) { + shartChar = endChar; + } + + if (m.fragment[i] === '\n') { + line++; + endChar = 0; + } else { + endChar++; + } + } + + match.ranges.push(range); + match.matches.push(new Range(line, shartChar, line, endChar)); + } + + matches.push(match); + } + } + + return { matches: matches, limitHit: false }; + } catch (ex) { + return { matches: [], limitHit: true }; + } + } + + private async gqlQuery(query: string, variables: { [key: string]: string | number }): Promise { + return (await this.graphql())(query, variables); + } + + private readonly pendingContextRequests = new Map>(); + async getContext(uri: Uri): Promise { + const rootUri = getGitHubRootUri(uri); + + let pending = this.pendingContextRequests.get(rootUri.toString()); + if (pending === undefined) { + pending = this.getContextCore(rootUri); + this.pendingContextRequests.set(rootUri.toString(), pending); + } + + try { + return await pending; + } finally { + this.pendingContextRequests.delete(rootUri.toString()); + } + } + + private readonly rootUriToContextMap = new Map(); + + private async getContextCore(rootUri: Uri): Promise { + let context = this.rootUriToContextMap.get(rootUri.toString()); + if (context === undefined) { + const { ref } = fromGitHubUri(rootUri); + if (ref !== undefined && shaRegex.test(ref)) { + context = { sha: ref, timestamp: Date.now() }; + } else { + context = this.context.get(rootUri); + if (context?.sha === undefined) { + const sha = await this.latestCommitQuery(rootUri); + if (sha !== undefined) { + context = { sha: sha, timestamp: Date.now() }; + } else { + context = undefined; + } + } + } + + if (context !== undefined) { + this.updateContext(rootUri, context); + } + } + + return context ?? { sha: rootUri.authority, timestamp: Date.now() }; + } + + private updateContext(rootUri: Uri, context: GitHubApiContext) { + this.rootUriToContextMap.set(rootUri.toString(), context); + this.context.set(rootUri, context); + } +} + +interface GitHubSearchTextMatch { + object_url: string; + object_type: string; + property: string; + fragment: string; + matches: { + text: string; + indices: number[]; + }[]; +} + +interface SearchQueryMatch { + path: string; + ranges: Range[]; + preview: string; + matches: Range[]; +} + +interface SearchQueryResults { + matches: SearchQueryMatch[]; + limitHit: boolean; +} diff --git a/extensions/github-browser/src/githubfs.ts b/extensions/github-browser/src/github/fs.ts similarity index 53% rename from extensions/github-browser/src/githubfs.ts rename to extensions/github-browser/src/github/fs.ts index f35fde146e..9149a69b3a 100644 --- a/extensions/github-browser/src/githubfs.ts +++ b/extensions/github-browser/src/github/fs.ts @@ -5,8 +5,6 @@ 'use strict'; import { - authentication, - AuthenticationSession2, CancellationToken, Disposable, Event, @@ -20,7 +18,6 @@ import { FileSystemProvider, FileType, Progress, - Range, TextSearchComplete, TextSearchOptions, TextSearchProvider, @@ -29,11 +26,11 @@ import { Uri, workspace, } from 'vscode'; -import { Octokit } from '@octokit/rest'; -import { graphql } from '@octokit/graphql/'; import * as fuzzySort from 'fuzzysort'; import fetch from 'node-fetch'; -import { Iterables } from './iterables'; +import { GitHubApi } from './api'; +import { Iterables } from '../iterables'; +import { getRootUri } from '../extension'; const emptyDisposable = { dispose: () => { /* noop */ } }; const replaceBackslashRegex = /(\/|\\)/g; @@ -53,16 +50,17 @@ export class GitHubFS implements FileSystemProvider, FileSearchProvider, TextSea } private readonly disposable: Disposable; - private fsCache = new Map(); + private fsCache = new Map>(); - constructor() { + constructor(private readonly github: GitHubApi) { this.disposable = Disposable.from( workspace.registerFileSystemProvider(GitHubFS.scheme, this, { isCaseSensitive: true, - isReadonly: true, + isReadonly: true }), workspace.registerFileSearchProvider(GitHubFS.scheme, this), workspace.registerTextSearchProvider(GitHubFS.scheme, this), + github.onDidChangeContext(e => this.fsCache.delete(e.toString())) ); } @@ -70,22 +68,18 @@ export class GitHubFS implements FileSystemProvider, FileSearchProvider, TextSea this.disposable?.dispose(); } - private _github: Promise | undefined; - get github(): Promise { - if (this._github === undefined) { - this._github = this.getGitHubApi(); + private getCache(uri: Uri) { + const rootUri = getRootUri(uri); + if (rootUri === undefined) { + return undefined; } - return this._github; - } - private async getGitHubApi(): Promise { - try { - const session = await authentication.getSession('github', ['repo'], { createIfNone: true }); - return new GitHubApi(session); - } catch (ex) { - this._github = undefined; - throw ex; + let cache = this.fsCache.get(rootUri.toString()); + if (cache === undefined) { + cache = new Map(); + this.fsCache.set(rootUri.toString(), cache); } + return cache; } //#region FileSystemProvider @@ -96,7 +90,8 @@ export class GitHubFS implements FileSystemProvider, FileSearchProvider, TextSea async stat(uri: Uri): Promise { if (uri.path === '' || uri.path.lastIndexOf('/') === 0) { - return { type: FileType.Directory, size: 0, ctime: 0, mtime: 0 }; + const context = await this.github.getContext(uri); + return { type: FileType.Directory, size: 0, ctime: 0, mtime: context?.timestamp }; } const data = await this.fsQuery<{ @@ -108,14 +103,20 @@ export class GitHubFS implements FileSystemProvider, FileSearchProvider, TextSea ...on Blob { byteSize }`, - this.fsCache, + this.getCache(uri), ); + if (data === undefined) { + throw FileSystemError.FileNotFound(); + } + + const context = await this.github.getContext(uri); + return { - type: typenameToFileType(data?.__typename), - size: data?.byteSize ?? 0, + type: typenameToFileType(data.__typename), + size: data.byteSize ?? 0, ctime: 0, - mtime: 0, + mtime: context?.timestamp, }; } @@ -130,7 +131,7 @@ export class GitHubFS implements FileSystemProvider, FileSearchProvider, TextSea type } }`, - this.fsCache, + this.getCache(uri), ); return (data?.entries ?? []).map<[string, FileType]>(e => [ @@ -139,8 +140,8 @@ export class GitHubFS implements FileSystemProvider, FileSearchProvider, TextSea ]); } - createDirectory(): void | Thenable { - throw FileSystemError.NoPermissions; + createDirectory(_uri: Uri): void | Thenable { + throw FileSystemError.NoPermissions(); } async readFile(uri: Uri): Promise { @@ -172,20 +173,20 @@ export class GitHubFS implements FileSystemProvider, FileSearchProvider, TextSea return textEncoder.encode(data?.text ?? ''); } - writeFile(): void | Thenable { - throw FileSystemError.NoPermissions; + async writeFile(_uri: Uri, _content: Uint8Array, _options: { create: boolean, overwrite: boolean }): Promise { + throw FileSystemError.NoPermissions(); } - delete(): void | Thenable { - throw FileSystemError.NoPermissions; + delete(_uri: Uri, _options: { recursive: boolean }): void | Thenable { + throw FileSystemError.NoPermissions(); } - rename(): void | Thenable { - throw FileSystemError.NoPermissions; + rename(_oldUri: Uri, _newUri: Uri, _options: { overwrite: boolean }): void | Thenable { + throw FileSystemError.NoPermissions(); } - copy?(): void | Thenable { - throw FileSystemError.NoPermissions; + copy(_source: Uri, _destination: Uri, _options: { overwrite: boolean }): void | Thenable { + throw FileSystemError.NoPermissions(); } //#endregion @@ -201,8 +202,10 @@ export class GitHubFS implements FileSystemProvider, FileSearchProvider, TextSea ): Promise { let searchable = this.fileSearchCache.get(options.folder.toString(true)); if (searchable === undefined) { - const matches = await (await this.github)?.filesQuery(options.folder); - if (matches === undefined || token.isCancellationRequested) { return []; } + const matches = await this.github.filesQuery(options.folder); + if (matches === undefined || token.isCancellationRequested) { + return []; + } searchable = [...Iterables.map(matches, m => (fuzzySort as Fuzzysort).prepareSlow(m))]; this.fileSearchCache.set(options.folder.toString(true), searchable); @@ -233,13 +236,12 @@ export class GitHubFS implements FileSystemProvider, FileSearchProvider, TextSea query: TextSearchQuery, options: TextSearchOptions, progress: Progress, - token: CancellationToken, + _token: CancellationToken, ): Promise { - const results = await (await this.github)?.searchQuery( + const results = await this.github.searchQuery( query.pattern, options.folder, { maxResults: options.maxResults, context: { before: options.beforeContext, after: options.afterContext } }, - token, ); if (results === undefined) { return { limitHit: true }; } @@ -266,9 +268,11 @@ export class GitHubFS implements FileSystemProvider, FileSearchProvider, TextSea const key = `${uri.toString()}:${getHashCode(query)}`; let data = cache?.get(key); - if (data !== undefined) { return data as T; } + if (data !== undefined) { + return data as T; + } - data = await (await this.github)?.fsQuery(uri, query); + data = await this.github.fsQuery(uri, query); cache?.set(key, data); return data; } @@ -296,12 +300,16 @@ function typenameToFileType(typename: string | undefined | null) { } type RepoInfo = { owner: string; repo: string; path: string | undefined; ref?: string }; -function fromGitHubUri(uri: Uri): RepoInfo { +export function fromGitHubUri(uri: Uri): RepoInfo { const [, owner, repo, ...rest] = uri.path.split('/'); let ref; if (uri.authority) { ref = uri.authority; + // The casing of HEAD is important for the GitHub api to work + if (/HEAD/i.test(ref)) { + ref = 'HEAD'; + } } return { owner: owner, repo: repo, path: rest.join('/'), ref: ref }; } @@ -322,175 +330,3 @@ function getHashCode(s: string): number { } return hash; } - -interface SearchQueryMatch { - path: string; - ranges: Range[]; - preview: string; - matches: Range[]; -} - -interface SearchQueryResults { - matches: SearchQueryMatch[]; - limitHit: boolean; -} - -class GitHubApi { - constructor(private readonly session: AuthenticationSession2) { } - - private _graphql: typeof graphql | undefined; - private get graphql() { - if (this._graphql === undefined) { - this._graphql = graphql.defaults({ - headers: { - Authorization: `Bearer ${this.token}`, - } - }); - } - - return this._graphql; - } - - get token() { - return this.session.accessToken; - } - - async filesQuery(uri: Uri) { - const { owner, repo, ref } = fromGitHubUri(uri); - try { - const resp = await new Octokit({ - auth: `token ${this.token}`, - }).git.getTree({ - owner: owner, - repo: repo, - recursive: '1', - tree_sha: ref ?? 'HEAD', - }); - return Iterables.filterMap(resp.data.tree, p => p.type === 'blob' ? p.path : undefined); - } catch (ex) { - return []; - } - } - - async searchQuery( - query: string, - uri: Uri, - options: { maxResults?: number; context?: { before?: number; after?: number } }, - _token: CancellationToken, - ): Promise { - const { owner, repo, ref } = fromGitHubUri(uri); - - // If we have a specific ref, don't try to search, because GitHub search only works against the default branch - if (ref === undefined) { - return { matches: [], limitHit: true }; - } - - try { - const resp = await new Octokit({ - auth: `token ${this.token}`, - request: { - headers: { - accept: 'application/vnd.github.v3.text-match+json', - }, - } - }).search.code({ - q: `${query} repo:${owner}/${repo}`, - }); - - // Since GitHub doesn't return ANY line numbers just fake it at the top of the file 😢 - const range = new Range(0, 0, 0, 0); - - const matches: SearchQueryMatch[] = []; - - console.log(resp.data.items.length, resp.data.items); - - let counter = 0; - let match: SearchQueryMatch; - for (const item of resp.data.items) { - for (const m of (item as typeof item & { text_matches: GitHubSearchTextMatch[] }).text_matches) { - counter++; - if (options.maxResults !== undefined && counter > options.maxResults) { - return { matches: matches, limitHit: true }; - } - - match = { - path: item.path, - ranges: [], - preview: m.fragment, - matches: [], - }; - - for (const lm of m.matches) { - let line = 0; - let shartChar = 0; - let endChar = 0; - for (let i = 0; i < lm.indices[1]; i++) { - if (i === lm.indices[0]) { - shartChar = endChar; - } - - if (m.fragment[i] === '\n') { - line++; - endChar = 0; - } else { - endChar++; - } - } - - match.ranges.push(range); - match.matches.push(new Range(line, shartChar, line, endChar)); - } - - matches.push(match); - } - } - - return { matches: matches, limitHit: false }; - } catch (ex) { - return { matches: [], limitHit: true }; - } - } - - async fsQuery(uri: Uri, innerQuery: string): Promise { - try { - const query = `query fs($owner: String!, $repo: String!, $path: String) { - repository(owner: $owner, name: $repo) { - object(expression: $path) { - ${innerQuery} - } - } -}`; - - const { owner, repo, path, ref } = fromGitHubUri(uri); - const variables = { - owner: owner, - repo: repo, - path: `${ref ?? 'HEAD'}:${path}`, - }; - - const rsp = await this.query<{ - repository: { object: T | null | undefined }; - }>(query, variables); - return rsp?.repository?.object ?? undefined; - } catch (ex) { - return undefined; - } - } - - query(query: string, variables: { [key: string]: string | number }): Promise { - return this.graphql(query, variables) as Promise; - } -} - -interface GitHubSearchTextMatch { - object_url: string; - object_type: string; - property: string; - fragment: string; - matches: GitHubSearchMatch[]; -} - -interface GitHubSearchMatch { - text: string; - indices: number[]; -} diff --git a/extensions/github-browser/src/scm.ts b/extensions/github-browser/src/scm.ts new file mode 100644 index 0000000000..f1e039dc2c --- /dev/null +++ b/extensions/github-browser/src/scm.ts @@ -0,0 +1,168 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +'use strict'; +import { CancellationToken, commands, Disposable, scm, SourceControl, SourceControlResourceGroup, SourceControlResourceState, Uri, window, workspace } from 'vscode'; +import * as nls from 'vscode-nls'; +import { IChangeStore } from './changeStore'; +import { GitHubApi, CommitOperation } from './github/api'; +import { getRelativePath } from './extension'; + +const localize = nls.loadMessageBundle(); + +interface ScmProvider { + sourceControl: SourceControl, + groups: SourceControlResourceGroup[] +} + +export class VirtualSCM implements Disposable { + private readonly providers: ScmProvider[] = []; + + private disposable: Disposable; + + constructor( + private readonly originalScheme: string, + private readonly github: GitHubApi, + private readonly changeStore: IChangeStore, + ) { + this.registerCommands(); + + // TODO@eamodio listen for workspace folder changes + for (const folder of workspace.workspaceFolders ?? []) { + this.createScmProvider(folder.uri, folder.name); + } + + this.disposable = Disposable.from( + changeStore.onDidChange(e => this.update(e.rootUri, e.uri)), + ); + + for (const { uri } of workspace.workspaceFolders ?? []) { + for (const operation of changeStore.getChanges(uri)) { + this.update(uri, operation.uri); + } + } + } + + dispose() { + this.disposable.dispose(); + } + + private registerCommands() { + commands.registerCommand('githubBrowser.commit', (...args: any[]) => this.commitChanges(args[0])); + + commands.registerCommand('githubBrowser.discardChanges', (resourceState: SourceControlResourceState) => + this.discardChanges(resourceState.resourceUri) + ); + + commands.registerCommand('githubBrowser.openChanges', (resourceState: SourceControlResourceState) => + this.openChanges(resourceState.resourceUri) + ); + + commands.registerCommand('githubBrowser.openFile', (resourceState: SourceControlResourceState) => + this.openFile(resourceState.resourceUri) + ); + } + + async commitChanges(sourceControl: SourceControl): Promise { + const operations = this.changeStore + .getChanges(sourceControl.rootUri!) + .map(operation => { + const path = getRelativePath(sourceControl.rootUri!, operation.uri); + switch (operation.type) { + case 'created': + return { type: operation.type, path: path, content: this.changeStore.getContent(operation.uri)! }; + case 'changed': + return { type: operation.type, path: path, content: this.changeStore.getContent(operation.uri)! }; + case 'deleted': + return { type: operation.type, path: path }; + } + }); + if (!operations.length) { + window.showInformationMessage(localize('no changes', "There are no changes to commit.")); + + return; + } + + const message = sourceControl.inputBox.value; + if (message) { + const sha = await this.github.commit(this.getOriginalResource(sourceControl.rootUri!), message, operations); + if (sha !== undefined) { + this.changeStore.acceptAll(sourceControl.rootUri!); + sourceControl.inputBox.value = ''; + } + } + } + + discardChanges(uri: Uri): Promise { + return this.changeStore.discard(uri); + } + + openChanges(uri: Uri) { + return this.changeStore.openChanges(uri, this.getOriginalResource(uri)); + } + + openFile(uri: Uri) { + return this.changeStore.openFile(uri); + } + + private update(rootUri: Uri, uri: Uri) { + const folder = workspace.getWorkspaceFolder(uri); + if (folder === undefined) { + return; + } + + const provider = this.createScmProvider(rootUri, folder.name); + const group = this.createChangesGroup(provider); + group.resourceStates = this.changeStore.getChanges(rootUri).map(op => { + const rs: SourceControlResourceState = { + decorations: { + strikeThrough: op.type === 'deleted' + }, + resourceUri: op.uri, + command: { + command: 'githubBrowser.openChanges', + title: 'Open Changes', + } + }; + rs.command!.arguments = [rs]; + return rs; + }); + } + + private createScmProvider(rootUri: Uri, name: string) { + let provider = this.providers.find(sc => sc.sourceControl.rootUri?.toString() === rootUri.toString()); + if (provider === undefined) { + const sourceControl = scm.createSourceControl('github', name, rootUri); + sourceControl.quickDiffProvider = { provideOriginalResource: uri => this.getOriginalResource(uri) }; + sourceControl.acceptInputCommand = { + command: 'githubBrowser.commit', + title: 'Commit', + arguments: [sourceControl] + }; + sourceControl.inputBox.placeholder = `Message (Ctrl+Enter to commit '${name}')`; + // sourceControl.inputBox.validateInput = value => value ? undefined : 'Invalid commit message'; + + provider = { sourceControl: sourceControl, groups: [] }; + this.createChangesGroup(provider); + this.providers.push(provider); + } + + return provider; + } + + private createChangesGroup(provider: ScmProvider) { + let group = provider.groups.find(g => g.id === 'github.changes'); + if (group === undefined) { + group = provider.sourceControl.createResourceGroup('github.changes', 'Changes'); + provider.groups.push(group); + } + + return group; + } + + private getOriginalResource(uri: Uri, _token?: CancellationToken): Uri { + return uri.with({ scheme: this.originalScheme }); + } +} diff --git a/extensions/github-browser/src/sha1.ts b/extensions/github-browser/src/sha1.ts new file mode 100644 index 0000000000..a786fcf24d --- /dev/null +++ b/extensions/github-browser/src/sha1.ts @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +'use strict'; + +const textDecoder = new TextDecoder(); +const textEncoder = new TextEncoder(); + +declare let WEBWORKER: boolean; + +export async function sha1(s: string | Uint8Array): Promise { + while (true) { + try { + if (WEBWORKER) { + const hash = await globalThis.crypto.subtle.digest({ name: 'sha-1' }, typeof s === 'string' ? textEncoder.encode(s) : s); + // Use encodeURIComponent to avoid issues with btoa and Latin-1 characters + return globalThis.btoa(encodeURIComponent(textDecoder.decode(hash))); + } else { + return (await import('crypto')).createHash('sha1').update(s).digest('base64'); + } + } catch (ex) { + if (ex instanceof ReferenceError) { + (global as any).WEBWORKER = false; + } + } + } +} diff --git a/extensions/github-browser/tsconfig.json b/extensions/github-browser/tsconfig.json index c88427aef8..eb413a1260 100644 --- a/extensions/github-browser/tsconfig.json +++ b/extensions/github-browser/tsconfig.json @@ -1,11 +1,12 @@ { "extends": "../shared.tsconfig.json", "compilerOptions": { - "outDir": "./out", - // "experimentalDecorators": true, - // "typeRoots": [ - // "./node_modules/@types" - // ] + "experimentalDecorators": true, + "lib": [ + "es2018", + "dom" + ], + "outDir": "./out" }, "include": [ "src/**/*" diff --git a/extensions/github-browser/yarn.lock b/extensions/github-browser/yarn.lock index bda914f9b1..2c8f1ad965 100644 --- a/extensions/github-browser/yarn.lock +++ b/extensions/github-browser/yarn.lock @@ -3,99 +3,99 @@ "@octokit/auth-token@^2.4.0": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.1.tgz#375d79eebd03750e6a9b0299e80b8167c7c85655" - integrity sha512-NB81O5h39KfHYGtgfWr2booRxp2bWOJoqbWwbyUg2hw6h35ArWYlAST5B3XwAkbdcx13yt84hFXyFP5X0QToWA== + version "2.4.2" + resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.2.tgz#10d0ae979b100fa6b72fa0e8e63e27e6d0dbff8a" + integrity sha512-jE/lE/IKIz2v1+/P0u4fJqv0kYwXOTujKemJMFr6FeopsxlIK3+wKDCJGnysg81XID5TgZQbIfuJ5J0lnTiuyQ== dependencies: - "@octokit/types" "^4.0.1" + "@octokit/types" "^5.0.0" -"@octokit/core@^2.4.3": - version "2.5.3" - resolved "https://registry.yarnpkg.com/@octokit/core/-/core-2.5.3.tgz#dd754e6f5ad9b15631e9b276ae4f00ac2ea2cf9b" - integrity sha512-23AHK9xBW0v79Ck8h5U+5iA4MW7aosqv+Yr6uZXolVGNzzHwryNH5wM386/6+etiKUTwLFZTqyMU9oQpIBZcFA== +"@octokit/core@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@octokit/core/-/core-3.1.0.tgz#9c3c9b23f7504668cfa057f143ccbf0c645a0ac9" + integrity sha512-yPyQSmxIXLieEIRikk2w8AEtWkFdfG/LXcw1KvEtK3iP0ENZLW/WYQmdzOKqfSaLhooz4CJ9D+WY79C8ZliACw== dependencies: "@octokit/auth-token" "^2.4.0" "@octokit/graphql" "^4.3.1" "@octokit/request" "^5.4.0" - "@octokit/types" "^4.0.1" + "@octokit/types" "^5.0.0" before-after-hook "^2.1.0" universal-user-agent "^5.0.0" "@octokit/endpoint@^6.0.1": - version "6.0.2" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.2.tgz#e876aafe68d7f9b6c6d80bf29458403f9afe7b2b" - integrity sha512-xs1mmCEZ2y4shXCpFjNq3UbmNR+bLzxtZim2L0zfEtj9R6O6kc4qLDvYw66hvO6lUsYzPTM5hMkltbuNAbRAcQ== + version "6.0.3" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.3.tgz#dd09b599662d7e1b66374a177ab620d8cdf73487" + integrity sha512-Y900+r0gIz+cWp6ytnkibbD95ucEzDSKzlEnaWS52hbCDNcCJYO5mRmWW7HRAnDc7am+N/5Lnd8MppSaTYx1Yg== dependencies: - "@octokit/types" "^4.0.1" + "@octokit/types" "^5.0.0" is-plain-object "^3.0.0" universal-user-agent "^5.0.0" -"@octokit/graphql@4.5.0", "@octokit/graphql@^4.3.1": - version "4.5.0" - resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.5.0.tgz#e111f841bc15722b1e9887f447fccab700cacdad" - integrity sha512-StJWfn0M1QfhL3NKBz31e1TdDNZrHLLS57J2hin92SIfzlOVBuUaRkp31AGkGOAFOAVtyEX6ZiZcsjcJDjeb5g== +"@octokit/graphql@4.5.1", "@octokit/graphql@^4.3.1": + version "4.5.1" + resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.5.1.tgz#162aed1490320b88ce34775b3f6b8de945529fa9" + integrity sha512-qgMsROG9K2KxDs12CO3bySJaYoUu2aic90qpFrv7A8sEBzZ7UFGvdgPKiLw5gOPYEYbS0Xf8Tvf84tJutHPulQ== dependencies: "@octokit/request" "^5.3.0" - "@octokit/types" "^4.0.1" + "@octokit/types" "^5.0.0" universal-user-agent "^5.0.0" "@octokit/plugin-paginate-rest@^2.2.0": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.2.1.tgz#b95ec46c841d51e5e625f383c579d132ab216d05" - integrity sha512-/tHpIF2XpN40AyhIq295YRjb4g7Q5eKob0qM3thYJ0Z+CgmNsWKM/fWse/SUR8+LdprP1O4ZzSKQE+71TCwK+w== + version "2.2.3" + resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.2.3.tgz#a6ad4377e7e7832fb4bdd9d421e600cb7640ac27" + integrity sha512-eKTs91wXnJH8Yicwa30jz6DF50kAh7vkcqCQ9D7/tvBAP5KKkg6I2nNof8Mp/65G0Arjsb4QcOJcIEQY+rK1Rg== dependencies: - "@octokit/types" "^4.0.1" + "@octokit/types" "^5.0.0" "@octokit/plugin-request-log@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.0.tgz#eef87a431300f6148c39a7f75f8cfeb218b2547e" integrity sha512-ywoxP68aOT3zHCLgWZgwUJatiENeHE7xJzYjfz8WI0goynp96wETBF+d95b8g/uL4QmS6owPVlaxiz3wyMAzcw== -"@octokit/plugin-rest-endpoint-methods@3.17.0": - version "3.17.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-3.17.0.tgz#d8ba04eb883849dd98666c55bf49d8c9fe7be055" - integrity sha512-NFV3vq7GgoO2TrkyBRUOwflkfTYkFKS0tLAPym7RNpkwLCttqShaEGjthOsPEEL+7LFcYv3mU24+F2yVd3npmg== +"@octokit/plugin-rest-endpoint-methods@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-4.0.0.tgz#b02a2006dda8e908c3f8ab381dd5475ef5a810a8" + integrity sha512-emS6gysz4E9BNi9IrCl7Pm4kR+Az3MmVB0/DoDCmF4U48NbYG3weKyDlgkrz6Jbl4Mu4nDx8YWZwC4HjoTdcCA== dependencies: - "@octokit/types" "^4.1.6" + "@octokit/types" "^5.0.0" deprecation "^2.3.1" "@octokit/request-error@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.0.1.tgz#49bd71e811daffd5bdd06ef514ca47b5039682d1" - integrity sha512-5lqBDJ9/TOehK82VvomQ6zFiZjPeSom8fLkFVLuYL3sKiIb5RB8iN/lenLkY7oBmyQcGP7FBMGiIZTO8jufaRQ== + version "2.0.2" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.0.2.tgz#0e76b83f5d8fdda1db99027ea5f617c2e6ba9ed0" + integrity sha512-2BrmnvVSV1MXQvEkrb9zwzP0wXFNbPJij922kYBTLIlIafukrGOb+ABBT2+c6wZiuyWDH1K1zmjGQ0toN/wMWw== dependencies: - "@octokit/types" "^4.0.1" + "@octokit/types" "^5.0.1" deprecation "^2.0.0" once "^1.4.0" "@octokit/request@^5.3.0", "@octokit/request@^5.4.0": - version "5.4.4" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.4.4.tgz#dc57e85e86284fa016d0c1a2701a70a10cec4ff2" - integrity sha512-vqv1lz41c6VTxUvF9nM+a6U+vvP3vGk7drDpr0DVQg4zyqlOiKVrY17DLD6de5okj+YLHKcoqaUZTBtlNZ1BtQ== + version "5.4.5" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.4.5.tgz#8df65bd812047521f7e9db6ff118c06ba84ac10b" + integrity sha512-atAs5GAGbZedvJXXdjtKljin+e2SltEs48B3naJjqWupYl2IUBbB/CJisyjbNHcKpHzb3E+OYEZ46G8eakXgQg== dependencies: "@octokit/endpoint" "^6.0.1" "@octokit/request-error" "^2.0.0" - "@octokit/types" "^4.0.1" + "@octokit/types" "^5.0.0" deprecation "^2.0.0" is-plain-object "^3.0.0" node-fetch "^2.3.0" once "^1.4.0" universal-user-agent "^5.0.0" -"@octokit/rest@17.11.0": - version "17.11.0" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-17.11.0.tgz#80db76d7d3442c998de5483575975f5591da84b8" - integrity sha512-WqXmm37uCGP1NxYxSc27hd5pYNLdksuUsjR8vaNS8fCy6kyxZFy+Dbh/AzqKGj2mOdbnt7dILoGHfzsA4IIm4A== +"@octokit/rest@18.0.0": + version "18.0.0" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-18.0.0.tgz#7f401d9ce13530ad743dfd519ae62ce49bcc0358" + integrity sha512-4G/a42lry9NFGuuECnua1R1eoKkdBYJap97jYbWDNYBOUboWcM75GJ1VIcfvwDV/pW0lMPs7CEmhHoVrSV5shg== dependencies: - "@octokit/core" "^2.4.3" + "@octokit/core" "^3.0.0" "@octokit/plugin-paginate-rest" "^2.2.0" "@octokit/plugin-request-log" "^1.0.0" - "@octokit/plugin-rest-endpoint-methods" "3.17.0" + "@octokit/plugin-rest-endpoint-methods" "4.0.0" -"@octokit/types@^4.0.1", "@octokit/types@^4.1.6": - version "4.1.9" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-4.1.9.tgz#a3e1ff1a15637ab830fbab0268c2d7ca824bc969" - integrity sha512-hinM/BA2c1vebN2HSR3JtVdYtrSbmvn/doUBZXXuQuh/9o60hYwitQQAGTpJu+k6pjtjURskDHQxUFvqLvYCeA== +"@octokit/types@^5.0.0", "@octokit/types@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-5.0.1.tgz#5459e9a5e9df8565dcc62c17a34491904d71971e" + integrity sha512-GorvORVwp244fGKEt3cgt/P+M0MGy4xEDbckw+K5ojEezxyMDgCaYPKVct+/eWQfZXOT7uq0xRpmrl/+hliabA== dependencies: "@types/node" ">= 8" @@ -108,609 +108,20 @@ form-data "^3.0.0" "@types/node@*", "@types/node@>= 8": - version "14.0.12" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.12.tgz#9c1d8ffb8084e8936603a6122a7649e40e68e04b" - integrity sha512-/sjzehvjkkpvLpYtN6/2dv5kg41otMGuHQUt9T2aiAuIfleCQRQHXXzF1eAw/qkZTj5Kcf4JSTf7EIizHocy6Q== - -"@webassemblyjs/ast@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" - integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== - dependencies: - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - -"@webassemblyjs/floating-point-hex-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" - integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== - -"@webassemblyjs/helper-api-error@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" - integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== - -"@webassemblyjs/helper-buffer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" - integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== - -"@webassemblyjs/helper-code-frame@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" - integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== - dependencies: - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/helper-fsm@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" - integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== - -"@webassemblyjs/helper-module-context@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" - integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== - dependencies: - "@webassemblyjs/ast" "1.9.0" - -"@webassemblyjs/helper-wasm-bytecode@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" - integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== - -"@webassemblyjs/helper-wasm-section@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" - integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - -"@webassemblyjs/ieee754@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" - integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" - integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" - integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== - -"@webassemblyjs/wasm-edit@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" - integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/helper-wasm-section" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-opt" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/wasm-gen@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" - integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wasm-opt@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" - integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - -"@webassemblyjs/wasm-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" - integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wast-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" - integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/floating-point-hex-parser" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-code-frame" "1.9.0" - "@webassemblyjs/helper-fsm" "1.9.0" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" - integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -acorn@^6.4.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" - integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== - -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" - integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== - -ajv@^6.1.0, ajv@^6.10.2: - version "6.12.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" - integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -asn1.js@^4.0.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + version "14.0.14" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.14.tgz#24a0b5959f16ac141aeb0c5b3cd7a15b7c64cbce" + integrity sha512-syUgf67ZQpaJj01/tRTknkMNoBBLWJOBODF0Zm4NrXmiSuxjymFrxnTu1QVYRubhVkRcZLYZG8STTwJRdVm/WQ== asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -base64-js@^1.0.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - before-after-hook@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635" integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A== -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -binary-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" - integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bluebird@^3.5.5: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: - version "4.11.9" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" - integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== - -bn.js@^5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0" - integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= - dependencies: - bn.js "^4.1.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.0.tgz#545d0b1b07e6b2c99211082bf1b12cce7a0b0e11" - integrity sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.2" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - -cacache@^12.0.2: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -chalk@2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chokidar@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.0.tgz#b30611423ce376357c765b9b8f904b9fba3c0be8" - integrity sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.4.0" - optionalDependencies: - fsevents "~2.1.2" - -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chrome-trace-event@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" - integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== - dependencies: - tslib "^1.9.0" - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -718,100 +129,7 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concat-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -create-ecdh@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" - integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== - dependencies: - bn.js "^4.1.0" - elliptic "^6.0.0" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -cross-spawn@6.0.5, cross-spawn@^6.0.0: +cross-spawn@^6.0.0: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -822,67 +140,6 @@ cross-spawn@6.0.5, cross-spawn@^6.0.0: shebang-command "^1.2.0" which "^1.2.9" -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= - -debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -893,141 +150,13 @@ deprecation@^2.0.0, deprecation@^2.3.1: resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -detect-file@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -elliptic@^6.0.0, elliptic@^6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" - integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== - dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -end-of-stream@^1.0.0, end-of-stream@^1.1.0: +end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" -enhanced-resolve@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" - integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.4.0" - tapable "^1.0.0" - -enhanced-resolve@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz#2937e2b8066cd0fe7ce0990a98f0d71a35189f66" - integrity sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" - -errno@^0.1.3, errno@~0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" - integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== - dependencies: - prr "~1.0.1" - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== - dependencies: - estraverse "^4.1.0" - -estraverse@^4.1.0, estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -events@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" - integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -1041,131 +170,6 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= - dependencies: - homedir-polyfill "^1.0.1" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -fast-deep-equal@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -findup-sync@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" - integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== - dependencies: - detect-file "^1.0.0" - is-glob "^4.0.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - form-data@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682" @@ -1175,59 +179,11 @@ form-data@^3.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@~2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== - fuzzysort@1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/fuzzysort/-/fuzzysort-1.1.4.tgz#a0510206ed44532cbb52cf797bf5a3cb12acd4ba" integrity sha512-JzK/lHjVZ6joAg3OnCjylwYXYVjRiwTY6Yb25LvfpJHK8bjisfnZJ5bY8aVWwTwCXgxPNgLAtmHL+Hs5q1ddLQ== -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -1235,567 +191,26 @@ get-stream@^4.0.0: dependencies: pump "^3.0.0" -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@~5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" - integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== - dependencies: - is-glob "^4.0.1" - -glob@^7.1.3, glob@^7.1.4: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-modules@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: - version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hmac-drbg@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - -ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== - -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - -import-local@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== - dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -infer-owner@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@^1.3.4, ini@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - -interpret@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" - integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== - -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - is-plain-object@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-3.0.0.tgz#47bfc5da1b5d50d64110806c199359482e75a928" - integrity sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg== - dependencies: - isobject "^4.0.0" + version "3.0.1" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-3.0.1.tgz#662d92d24c0aa4302407b0d45d21f2251c85f85b" + integrity sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g== is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= -is-windows@^1.0.1, is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isobject@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" - integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== - -json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - -loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - -loader-utils@1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" - integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== - dependencies: - big.js "^5.2.2" - emojis-list "^2.0.0" - json5 "^1.0.1" - -loader-utils@^1.2.3: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - macos-release@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f" integrity sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA== -make-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - -memory-fs@^0.4.0, memory-fs@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - mime-db@1.44.0: version "1.44.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" @@ -1808,108 +223,6 @@ mime-types@^2.1.12: dependencies: mime-db "1.44.0" -mimic-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@^0.5.1, mkdirp@^0.5.3: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -nan@^2.12.1: - version "2.14.1" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" - integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -neo-async@^2.5.0, neo-async@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" - integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== - nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -1920,47 +233,6 @@ node-fetch@2.6.0, node-fetch@^2.3.0: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -1968,55 +240,13 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: wrappy "1" -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - -os-locale@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - os-name@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" @@ -2025,174 +255,16 @@ os-name@^3.1.0: macos-release "^2.2.0" windows-release "^3.1.0" -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== - -p-limit@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.5" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" - integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== - dependencies: - asn1.js "^4.0.0" - browserify-aes "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= -pbkdf2@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" - integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -picomatch@^2.0.4, picomatch@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -2201,244 +273,11 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -readdirp@~3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" - integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== - dependencies: - picomatch "^2.2.1" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= - dependencies: - resolve-from "^3.0.0" - -resolve-dir@^1.0.0, resolve-dir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= - dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -rimraf@^2.5.4, rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" - -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - -semver@^5.5.0, semver@^5.6.0: +semver@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -serialize-javascript@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-3.1.0.tgz#8bf3a9170712664ef2561b44b691eafe399214ea" - integrity sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg== - dependencies: - randombytes "^2.1.0" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -2456,298 +295,11 @@ signal-exit@^3.0.0: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@~0.5.12: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -ssri@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" - integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== - dependencies: - figgy-pudding "^3.5.1" - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= -supports-color@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -tapable@^1.0.0, tapable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -terser-webpack-plugin@^1.4.3: - version "1.4.4" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz#2c63544347324baafa9a56baaddf1634c8abfc2f" - integrity sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA== - dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^3.1.0" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" - -terser@^4.1.2: - version "4.7.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.7.0.tgz#15852cf1a08e3256a80428e865a2fa893ffba006" - integrity sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -timers-browserify@^2.0.4: - version "2.0.11" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" - integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== - dependencies: - setimmediate "^1.0.4" - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -tslib@^1.9.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" - integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - universal-user-agent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-5.0.0.tgz#a3182aa758069bf0e79952570ca757de3579c1d9" @@ -2755,151 +307,12 @@ universal-user-agent@^5.0.0: dependencies: os-name "^3.1.0" -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" +vscode-nls@4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-4.1.2.tgz#ca8bf8bb82a0987b32801f9fddfdd2fb9fd3c167" + integrity sha512-7bOHxPsfyuCqmP+hZXscLhiHwe7CSuFE4hyhbs22xPIhQ4jv99FcR4eBzfYYVLP356HNFpdvz63FFb/xw6T4Iw== -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - -v8-compile-cache@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe" - integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w== - -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - -watchpack-chokidar2@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0" - integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA== - dependencies: - chokidar "^2.1.8" - -watchpack@^1.6.1: - version "1.7.2" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.2.tgz#c02e4d4d49913c3e7e122c3325365af9d331e9aa" - integrity sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g== - dependencies: - graceful-fs "^4.1.2" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.0" - watchpack-chokidar2 "^2.0.0" - -webpack-cli@3.3.11: - version "3.3.11" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.11.tgz#3bf21889bf597b5d82c38f215135a411edfdc631" - integrity sha512-dXlfuml7xvAFwYUPsrtQAA9e4DOe58gnzSxhgrO/ZM/gyXTBowrsYeubyN4mqGhYdpXMFNyQ6emjJS9M7OBd4g== - dependencies: - chalk "2.4.2" - cross-spawn "6.0.5" - enhanced-resolve "4.1.0" - findup-sync "3.0.0" - global-modules "2.0.0" - import-local "2.0.0" - interpret "1.2.0" - loader-utils "1.2.3" - supports-color "6.1.0" - v8-compile-cache "2.0.3" - yargs "13.2.4" - -webpack-sources@^1.4.0, webpack-sources@^1.4.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack@4.43.0: - version "4.43.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.43.0.tgz#c48547b11d563224c561dad1172c8aa0b8a678e6" - integrity sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.4.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" - chrome-trace-event "^1.0.2" - enhanced-resolve "^4.1.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.3" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.6.1" - webpack-sources "^1.4.1" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which@^1.2.14, which@^1.2.9, which@^1.3.1: +which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -2913,63 +326,7 @@ windows-release@^3.1.0: dependencies: execa "^1.0.0" -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -xtend@^4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yargs-parser@^13.1.0: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs@13.2.4: - version "13.2.4" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" - integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - os-locale "^3.1.0" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.0" diff --git a/extensions/github/src/auth.ts b/extensions/github/src/auth.ts index 77027e1829..49b64555a6 100644 --- a/extensions/github/src/auth.ts +++ b/extensions/github/src/auth.ts @@ -27,21 +27,15 @@ function getAgent(url: string | undefined = process.env.HTTPS_PROXY): Agent { const scopes = ['repo', 'workflow']; export async function getSession(): Promise { - const authenticationSessions = await authentication.getSessions('github', scopes); - - if (authenticationSessions.length) { - return await authenticationSessions[0]; - } else { - return await authentication.login('github', scopes); - } + return await authentication.getSession('github', scopes, { createIfNone: true }); } let _octokit: Promise | undefined; export function getOctokit(): Promise { if (!_octokit) { - _octokit = getSession().then(async session => { - const token = await session.getAccessToken(); + _octokit = getSession().then(session => { + const token = session.accessToken; const agent = getAgent(); return new Octokit({ diff --git a/extensions/github/src/credentialProvider.ts b/extensions/github/src/credentialProvider.ts index 55743eb5df..b5118da191 100644 --- a/extensions/github/src/credentialProvider.ts +++ b/extensions/github/src/credentialProvider.ts @@ -17,7 +17,7 @@ class GitHubCredentialProvider implements CredentialsProvider { } const session = await getSession(); - return { username: session.account.id, password: await session.getAccessToken() }; + return { username: session.account.id, password: session.accessToken }; } } diff --git a/extensions/image-preview/extension-browser.webpack.config.js b/extensions/image-preview/extension-browser.webpack.config.js index b2f0995024..31d7ba16a5 100644 --- a/extensions/image-preview/extension-browser.webpack.config.js +++ b/extensions/image-preview/extension-browser.webpack.config.js @@ -7,23 +7,11 @@ 'use strict'; -const withDefaults = require('../shared.webpack.config'); -const path = require('path'); +const withBrowserDefaults = require('../shared.webpack.config').browser; -const clientConfig = withDefaults({ +module.exports = withBrowserDefaults({ context: __dirname, - target: 'webworker', entry: { extension: './src/extension.ts' }, - resolve: { - alias: { - 'vscode-extension-telemetry': path.resolve(__dirname, '../../build/polyfills/vscode-extension-telemetry.js'), - 'vscode-nls': path.resolve(__dirname, '../../build/polyfills/vscode-nls.js'), - }, - } }); - -clientConfig.module.rules[0].use.shift(); // remove nls loader - -module.exports = clientConfig; diff --git a/extensions/image-preview/package.json b/extensions/image-preview/package.json index 2284ceb2ef..dd04cc7777 100644 --- a/extensions/image-preview/package.json +++ b/extensions/image-preview/package.json @@ -16,7 +16,7 @@ "vscode": "^1.39.0" }, "main": "./out/extension", - "browser": "./dist/extension.js", + "browser": "./dist/browser/extension.js", "categories": [ "Other" ], diff --git a/extensions/json-language-features/extension-browser.webpack.config.js b/extensions/json-language-features/extension-browser.webpack.config.js index 82d2212771..3efcb52adb 100644 --- a/extensions/json-language-features/extension-browser.webpack.config.js +++ b/extensions/json-language-features/extension-browser.webpack.config.js @@ -7,10 +7,10 @@ 'use strict'; -const withDefaults = require('../shared.webpack.config'); +const withBrowserDefaults = require('../shared.webpack.config').browser; const path = require('path'); -const clientConfig = withDefaults({ +module.exports = withBrowserDefaults({ target: 'webworker', context: path.join(__dirname, 'client'), entry: { @@ -19,16 +19,5 @@ const clientConfig = withDefaults({ output: { filename: 'jsonClientMain.js', path: path.join(__dirname, 'client', 'dist', 'browser') - }, - performance: { - hints: false - }, - resolve: { - alias: { - 'vscode-nls': path.resolve(__dirname, '../../build/polyfills/vscode-nls.js') - } } }); -clientConfig.module.rules[0].use.shift(); // remove nls loader - -module.exports = clientConfig; diff --git a/extensions/json-language-features/package.json b/extensions/json-language-features/package.json index 6c7e2d7cf7..db003f0512 100644 --- a/extensions/json-language-features/package.json +++ b/extensions/json-language-features/package.json @@ -129,7 +129,7 @@ "dependencies": { "request-light": "^0.3.0", "vscode-extension-telemetry": "0.1.1", - "vscode-languageclient": "7.0.0-next.5", + "vscode-languageclient": "7.0.0-next.5.1", "vscode-nls": "^4.1.2" }, "devDependencies": { diff --git a/extensions/json-language-features/server/extension-browser.webpack.config.js b/extensions/json-language-features/server/extension-browser.webpack.config.js index f9b229e163..bc54973876 100644 --- a/extensions/json-language-features/server/extension-browser.webpack.config.js +++ b/extensions/json-language-features/server/extension-browser.webpack.config.js @@ -7,11 +7,10 @@ 'use strict'; -const withDefaults = require('../../shared.webpack.config'); +const withBrowserDefaults = require('../../shared.webpack.config').browser; const path = require('path'); -const serverConfig = withDefaults({ - target: 'webworker', +module.exports = withBrowserDefaults({ context: __dirname, entry: { extension: './src/browser/jsonServerMain.ts', @@ -20,16 +19,5 @@ const serverConfig = withDefaults({ filename: 'jsonServerMain.js', path: path.join(__dirname, 'dist', 'browser'), libraryTarget: 'var' - }, - performance: { - hints: false - }, - resolve: { - alias: { - 'vscode-nls': path.resolve(__dirname, '../../../build/polyfills/vscode-nls.js') - } } }); -serverConfig.module.rules[0].use.shift(); // remove nls loader - -module.exports = serverConfig; diff --git a/extensions/json-language-features/server/package.json b/extensions/json-language-features/server/package.json index 751e1dd5c3..eb2b984af0 100644 --- a/extensions/json-language-features/server/package.json +++ b/extensions/json-language-features/server/package.json @@ -10,7 +10,7 @@ "bin": { "vscode-json-languageserver": "./bin/vscode-json-languageserver" }, - "main": "./out/jsonServerMain", + "main": "./out/node/jsonServerMain", "dependencies": { "jsonc-parser": "^2.2.1", "request-light": "^0.3.0", diff --git a/extensions/json-language-features/yarn.lock b/extensions/json-language-features/yarn.lock index 237cddb80f..29972b7df0 100644 --- a/extensions/json-language-features/yarn.lock +++ b/extensions/json-language-features/yarn.lock @@ -125,10 +125,10 @@ vscode-jsonrpc@6.0.0-next.2: resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0-next.2.tgz#3d73f86d812304cb91b9fb1efee40ec60b09ed7f" integrity sha512-dKQXRYNUY6BHALQJBJlyZyv9oWlYpbJ2vVoQNNVNPLAYQ3hzNp4zy+iSo7zGx1BPXByArJQDWTKLQh8dz3dnNw== -vscode-languageclient@7.0.0-next.5: - version "7.0.0-next.5" - resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-7.0.0-next.5.tgz#7ae84c598dff360bd2bc64322b74e10e5d0b9cd6" - integrity sha512-ec+fJg+JiNBIdbeKbzssSuORUaVdtLValtiYdNEUCUjpYE+Y6xXPtXwiZOlS/0OB9pC/RLCMxsj16UwWncQhYQ== +vscode-languageclient@7.0.0-next.5.1: + version "7.0.0-next.5.1" + resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-7.0.0-next.5.1.tgz#ed93f14e4c2cdccedf15002c7bf8ef9cb638f36c" + integrity sha512-OONvbk3IFpubwF8/Y5uPQaq5J5CEskpeET3SfK4iGlv5OUK+44JawH/SEW5wXuEPpfdMLEMZLuGLU5v5d7N7PQ== dependencies: semver "^6.3.0" vscode-languageserver-protocol "3.16.0-next.4" diff --git a/extensions/markdown-language-features/extension-browser.webpack.config.js b/extensions/markdown-language-features/extension-browser.webpack.config.js index 7566ffd33b..cc74eb2a15 100644 --- a/extensions/markdown-language-features/extension-browser.webpack.config.js +++ b/extensions/markdown-language-features/extension-browser.webpack.config.js @@ -7,26 +7,11 @@ 'use strict'; -const withDefaults = require('../shared.webpack.config'); -const path = require('path'); +const withBrowserDefaults = require('../shared.webpack.config').browser; -const clientConfig = withDefaults({ +module.exports = withBrowserDefaults({ context: __dirname, - target: 'webworker', entry: { extension: './src/extension.ts' - }, - resolve: { - alias: { - 'vscode-extension-telemetry': path.resolve(__dirname, '../../build/polyfills/vscode-extension-telemetry.js'), - 'vscode-nls': path.resolve(__dirname, '../../build/polyfills/vscode-nls.js'), - }, - }, - performance: { - hints: false - }, + } }); - -clientConfig.module.rules[0].use.shift(); // remove nls loader - -module.exports = clientConfig; diff --git a/extensions/markdown-language-features/package.json b/extensions/markdown-language-features/package.json index c3b7e73b25..becb8ad271 100644 --- a/extensions/markdown-language-features/package.json +++ b/extensions/markdown-language-features/package.json @@ -12,7 +12,7 @@ "vscode": "^1.20.0" }, "main": "./out/extension", - "browser": "./dist/extension.js", + "browser": "./dist/browser/extension", "categories": [ "Programming Languages" ], diff --git a/extensions/merge-conflict/extension-browser.webpack.config.js b/extensions/merge-conflict/extension-browser.webpack.config.js index c7418f9dd4..1f84f5e3eb 100644 --- a/extensions/merge-conflict/extension-browser.webpack.config.js +++ b/extensions/merge-conflict/extension-browser.webpack.config.js @@ -7,27 +7,14 @@ 'use strict'; -const withDefaults = require('../shared.webpack.config'); -const path = require('path'); +const withBrowserDefaults = require('../shared.webpack.config').browser; -const clientConfig = withDefaults({ - target: 'webworker', +module.exports = withBrowserDefaults({ context: __dirname, entry: { extension: './src/mergeConflictMain.ts' }, output: { filename: 'mergeConflictMain.js' - }, - performance: { - hints: false - }, - resolve: { - alias: { - 'vscode-nls': path.resolve(__dirname, '../../build/polyfills/vscode-nls.js') - } } }); -clientConfig.module.rules[0].use.shift(); // remove nls loader - -module.exports = clientConfig; diff --git a/extensions/merge-conflict/package.json b/extensions/merge-conflict/package.json index f59738d300..d438b96ca6 100644 --- a/extensions/merge-conflict/package.json +++ b/extensions/merge-conflict/package.json @@ -17,7 +17,7 @@ "*" ], "main": "./out/mergeConflictMain", - "browser": "./dist/mergeConflictMain", + "browser": "./dist/browser/mergeConflictMain", "scripts": { "compile": "gulp compile-extension:merge-conflict", "watch": "gulp watch-extension:merge-conflict" diff --git a/extensions/microsoft-authentication/src/AADHelper.ts b/extensions/microsoft-authentication/src/AADHelper.ts index 4ad0cae03e..6fc1013a21 100644 --- a/extensions/microsoft-authentication/src/AADHelper.ts +++ b/extensions/microsoft-authentication/src/AADHelper.ts @@ -205,9 +205,9 @@ export class AzureActiveDirectoryService { }, 1000 * 30); } - private async convertToSession(token: IToken): Promise { + private async convertToSession(token: IToken): Promise { const resolvedToken = await this.resolveAccessToken(token); - return new vscode.AuthenticationSession2(token.sessionId, resolvedToken, token.account, token.scope.split(' ')); + return new vscode.AuthenticationSession(token.sessionId, resolvedToken, token.account, token.scope.split(' ')); } private async resolveAccessToken(token: IToken): Promise { @@ -240,11 +240,11 @@ export class AzureActiveDirectoryService { } } - get sessions(): Promise { + get sessions(): Promise { return Promise.all(this._tokens.map(token => this.convertToSession(token))); } - public async login(scope: string): Promise { + public async login(scope: string): Promise { Logger.info('Logging in...'); if (!scope.includes('offline_access')) { Logger.info('Warning: The \'offline_access\' scope was not included, so the generated token will not be able to be refreshed.'); @@ -338,7 +338,7 @@ export class AzureActiveDirectoryService { } } - private async loginWithoutLocalServer(scope: string): Promise { + private async loginWithoutLocalServer(scope: string): Promise { const callbackUri = await vscode.env.asExternalUri(vscode.Uri.parse(`${vscode.env.uriScheme}://vscode.microsoft-authentication`)); const nonce = crypto.randomBytes(16).toString('base64'); const port = (callbackUri.authority.match(/:([0-9]*)$/) || [])[1] || (callbackUri.scheme === 'https' ? 443 : 80); @@ -353,7 +353,7 @@ export class AzureActiveDirectoryService { }); vscode.env.openExternal(uri); - const timeoutPromise = new Promise((_: (value: vscode.AuthenticationSession2) => void, reject) => { + const timeoutPromise = new Promise((_: (value: vscode.AuthenticationSession) => void, reject) => { const wait = setTimeout(() => { clearTimeout(wait); reject('Login timed out.'); @@ -363,9 +363,9 @@ export class AzureActiveDirectoryService { return Promise.race([this.handleCodeResponse(state, codeVerifier, scope), timeoutPromise]); } - private async handleCodeResponse(state: string, codeVerifier: string, scope: string): Promise { + private async handleCodeResponse(state: string, codeVerifier: string, scope: string): Promise { let uriEventListener: vscode.Disposable; - return new Promise((resolve: (value: vscode.AuthenticationSession2) => void, reject) => { + return new Promise((resolve: (value: vscode.AuthenticationSession) => void, reject) => { uriEventListener = this._uriHandler.event(async (uri: vscode.Uri) => { try { const query = parseQuery(uri); diff --git a/extensions/python/extension-browser.webpack.config.js b/extensions/python/extension-browser.webpack.config.js index 58ecb822fc..785672b6c5 100644 --- a/extensions/python/extension-browser.webpack.config.js +++ b/extensions/python/extension-browser.webpack.config.js @@ -7,27 +7,14 @@ 'use strict'; -const withDefaults = require('../shared.webpack.config'); -const path = require('path'); +const withBrowserDefaults = require('../shared.webpack.config').browser; -const clientConfig = withDefaults({ - target: 'webworker', +module.exports = withBrowserDefaults({ context: __dirname, entry: { extension: './src/pythonMain.ts' }, output: { filename: 'pythonMain.js' - }, - performance: { - hints: false - }, - resolve: { - alias: { - 'vscode-nls': path.resolve(__dirname, '../../build/polyfills/vscode-nls.js') - } } }); -clientConfig.module.rules[0].use.shift(); // remove nls loader - -module.exports = clientConfig; diff --git a/extensions/python/package.json b/extensions/python/package.json index ab813f048d..612fcf7650 100644 --- a/extensions/python/package.json +++ b/extensions/python/package.json @@ -8,7 +8,7 @@ "engines": { "vscode": "*" }, "activationEvents": ["onLanguage:python"], "main": "./out/pythonMain", - "browser": "./dist/pythonMain", + "browser": "./dist/browser/pythonMain", "extensionKind": [ "ui", "workspace" ], "contributes": { "languages": [{ diff --git a/extensions/shared.webpack.config.js b/extensions/shared.webpack.config.js index f1546f9e15..1d6d7a1f81 100644 --- a/extensions/shared.webpack.config.js +++ b/extensions/shared.webpack.config.js @@ -13,8 +13,9 @@ const fs = require('fs'); const merge = require('merge-options'); const CopyWebpackPlugin = require('copy-webpack-plugin'); const { NLSBundlePlugin } = require('vscode-nls-dev/lib/webpack-bundler'); +const { DefinePlugin } = require('webpack'); -module.exports = function withDefaults(/**@type WebpackConfig*/extConfig) { +function withNodeDefaults(/**@type WebpackConfig*/extConfig) { // Need to find the top-most `package.json` file const folderName = path.relative(__dirname, extConfig.context).split(/[\\\/]/)[0]; const pkgPath = path.join(__dirname, folderName, 'package.json'); @@ -79,3 +80,66 @@ module.exports = function withDefaults(/**@type WebpackConfig*/extConfig) { return merge(defaultConfig, extConfig); }; + + +function withBrowserDefaults(/**@type WebpackConfig*/extConfig) { + /** @type WebpackConfig */ + let defaultConfig = { + mode: 'none', // this leaves the source code as close as possible to the original (when packaging we set this to 'production') + target: 'webworker', // extensions run in a webworker context + resolve: { + mainFields: ['module', 'main'], + extensions: ['.ts', '.js'], // support ts-files and js-files + alias: { + 'vscode-nls': path.resolve(__dirname, '../build/polyfills/vscode-nls.js'), + 'vscode-extension-telemetry': path.resolve(__dirname, '../build/polyfills/vscode-extension-telemetry.js') + } + }, + module: { + rules: [{ + test: /\.ts$/, + exclude: /node_modules/, + use: [{ + // configure TypeScript loader: + // * enable sources maps for end-to-end source maps + loader: 'ts-loader', + options: { + compilerOptions: { + 'sourceMap': true, + } + } + }] + }] + }, + externals: { + 'vscode': 'commonjs vscode', // ignored because it doesn't exist + }, + performance: { + hints: false + }, + output: { + // all output goes into `dist`. + // packaging depends on that and this must always be like it + filename: '[name].js', + path: path.join(extConfig.context, 'dist', 'browser'), + libraryTarget: 'commonjs', + }, + // yes, really source maps + devtool: 'source-map', + plugins: [ + // @ts-expect-error + new CopyWebpackPlugin([ + { from: 'src', to: '.', ignore: ['**/test/**', '*.ts'] } + ]), + new DefinePlugin({ WEBWORKER: JSON.stringify(true) }) + ] + }; + + return merge(defaultConfig, extConfig); +}; + + +module.exports = withNodeDefaults; +module.exports.node = withNodeDefaults; +module.exports.browser = withBrowserDefaults; + diff --git a/extensions/sql/cgmanifest.json b/extensions/sql/cgmanifest.json index 56b576cdc7..3ef90a09d1 100644 --- a/extensions/sql/cgmanifest.json +++ b/extensions/sql/cgmanifest.json @@ -6,7 +6,7 @@ "git": { "name": "Microsoft/vscode-mssql", "repositoryUrl": "https://github.com/Microsoft/vscode-mssql", - "commitHash": "37a22725186b5b481b2882a78c7b9fe024c13946" + "commitHash": "750d30dc48c4c0317b63bb5f1ed3e71487bb84a1" } }, "license": "MIT", diff --git a/extensions/sql/syntaxes/sql.tmLanguage.json b/extensions/sql/syntaxes/sql.tmLanguage.json index b81b66fb16..0e66dda068 100644 --- a/extensions/sql/syntaxes/sql.tmLanguage.json +++ b/extensions/sql/syntaxes/sql.tmLanguage.json @@ -4,7 +4,7 @@ "If you want to provide a fix or improvement, please create a pull request against the original repository.", "Once accepted there, we are happy to receive an update request." ], - "version": "https://github.com/Microsoft/vscode-mssql/commit/37a22725186b5b481b2882a78c7b9fe024c13946", + "version": "https://github.com/Microsoft/vscode-mssql/commit/750d30dc48c4c0317b63bb5f1ed3e71487bb84a1", "name": "SQL", "scopeName": "source.sql", "patterns": [ @@ -404,7 +404,7 @@ } }, "comment": "this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines.", - "match": "(N)?(')(?:[^'\\\\]|\\\\.)*(')", + "match": "(N)?(')[^']*(')", "name": "string.quoted.single.sql" }, { @@ -437,7 +437,7 @@ } }, "comment": "this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines.", - "match": "(`)(?:[^`\\\\]|\\\\.)*(`)", + "match": "(`)[^`\\\\]*(`)", "name": "string.quoted.other.backtick.sql" }, { @@ -470,7 +470,7 @@ } }, "comment": "this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines.", - "match": "(\")(?:[^\"#\\\\]|\\\\.)*(\")", + "match": "(\")[^\"#]*(\")", "name": "string.quoted.double.sql" }, { diff --git a/extensions/theme-defaults/themes/light_defaults.json b/extensions/theme-defaults/themes/light_defaults.json index fa1e1dbc3c..a22dd21b4a 100644 --- a/extensions/theme-defaults/themes/light_defaults.json +++ b/extensions/theme-defaults/themes/light_defaults.json @@ -19,7 +19,11 @@ "statusBarItem.remoteForeground": "#FFF", "statusBarItem.remoteBackground": "#16825D", "sideBarSectionHeader.background": "#0000", - "sideBarSectionHeader.border": "#61616130" + "sideBarSectionHeader.border": "#61616130", + "notebook.cellFocusBackground": "#c8ddf150", + "notebook.cellBorderColor": "#dae3e9", + "notebook.outputContainerBackgroundColor": "#c8ddf150", + "notebook.focusedCellShadow": "#00315040" }, "semanticHighlighting": true } diff --git a/extensions/vscode-web-playground/extension-browser.webpack.config.js b/extensions/vscode-web-playground/extension-browser.webpack.config.js index 3fb4b69338..35bf40be77 100644 --- a/extensions/vscode-web-playground/extension-browser.webpack.config.js +++ b/extensions/vscode-web-playground/extension-browser.webpack.config.js @@ -7,11 +7,10 @@ 'use strict'; const path = require('path'); -const withDefaults = require('../shared.webpack.config'); +const withBrowserDefaults = require('../shared.webpack.config').browser; -module.exports = withDefaults({ +module.exports = withBrowserDefaults({ context: __dirname, - target: 'webworker', node: false, entry: { extension: './src/extension.ts', diff --git a/extensions/vscode-web-playground/package.json b/extensions/vscode-web-playground/package.json index 7d48eca66c..954aec0fae 100644 --- a/extensions/vscode-web-playground/package.json +++ b/extensions/vscode-web-playground/package.json @@ -11,7 +11,7 @@ "onFileSystem:github", "onDebug" ], - "browser": "./dist/extension", + "browser": "./dist/browser/extension", "main": "./out/extension", "engines": { "vscode": "^1.25.0" diff --git a/extensions/vscode-web-playground/src/extension.ts b/extensions/vscode-web-playground/src/extension.ts index da80a0847c..0a281b3fe9 100644 --- a/extensions/vscode-web-playground/src/extension.ts +++ b/extensions/vscode-web-playground/src/extension.ts @@ -15,10 +15,10 @@ import * as vscode from 'vscode'; import { MemFS } from './memfs'; -declare const window: unknown; +declare const navigator: unknown; export function activate(context: vscode.ExtensionContext) { - if (typeof window !== 'undefined') { // do not run under node.js + if (typeof navigator === 'object') { // do not run under node.js const memFs = enableFs(context); if (vscode.workspace.workspaceFolders?.some(f => f.uri.scheme === MemFS.scheme)) { diff --git a/package.json b/package.json index 30163a20c4..3cd7324890 100644 --- a/package.json +++ b/package.json @@ -16,8 +16,11 @@ "compile": "gulp compile --max_old_space_size=4095", "watch": "gulp watch --max_old_space_size=4095", "watchd": "deemon yarn watch", + "watch-webd": "deemon yarn watch-web", "kill-watchd": "deemon --kill yarn watch", + "kill-watch-webd": "deemon --kill yarn watch-web", "restart-watchd": "deemon --restart yarn watch", + "restart-watch-webd": "deemon --restart yarn watch-web", "watch-client": "gulp watch-client --max_old_space_size=4095", "mocha": "mocha test/unit/node/all.js --delay", "precommit": "node build/gulpfile.hygiene.js", @@ -35,6 +38,8 @@ "strict-function-types-watch": "tsc --watch -p src/tsconfig.json --noEmit --strictFunctionTypes", "update-distro": "node build/npm/update-distro.js", "web": "node resources/serverless/code-web.js", + "compile-web": "gulp compile-web --max_old_space_size=4095", + "watch-web": "gulp watch-web --max_old_space_size=4095", "eslint": "eslint -c .eslintrc.json --rulesdir ./build/lib/eslint --ext .ts --ext .js ./src/vs ./extensions", "sqllint": "eslint --no-eslintrc -c .eslintrc.sql.ts.json --rulesdir ./build/lib/eslint --ext .ts ./src/sql" }, @@ -56,7 +61,7 @@ "html-query-plan": "git://github.com/anthonydresser/html-query-plan.git#2.6", "http-proxy-agent": "^2.1.0", "https-proxy-agent": "^2.2.3", - "iconv-lite": "0.6.0", + "iconv-lite-umd": "0.6.5", "jquery": "3.5.0", "jschardet": "2.1.1", "keytar": "^5.5.0", @@ -70,7 +75,7 @@ "reflect-metadata": "^0.1.8", "rxjs": "5.4.0", "sanitize-html": "^1.19.1", - "semver-umd": "^5.5.6", + "semver-umd": "^5.5.7", "slickgrid": "github:anthonydresser/SlickGrid#2.3.33", "spdlog": "^0.11.1", "sudo-prompt": "9.1.1", @@ -78,9 +83,9 @@ "vscode-nsfw": "1.2.8", "vscode-oniguruma": "1.3.1", "vscode-proxy-agent": "^0.5.2", - "vscode-ripgrep": "^1.5.8", + "vscode-ripgrep": "^1.7.0", "vscode-sqlite3": "4.0.10", - "vscode-textmate": "5.1.1", + "vscode-textmate": "5.2.0", "xterm": "4.7.0-beta.3", "xterm-addon-search": "0.7.0", "xterm-addon-unicode11": "0.2.0", @@ -98,7 +103,6 @@ "@types/debug": "^4.1.5", "@types/graceful-fs": "4.1.2", "@types/http-proxy-agent": "^2.0.1", - "@types/iconv-lite": "0.0.1", "@types/keytar": "^4.4.0", "@types/minimist": "^1.2.0", "@types/mocha": "2.2.39", @@ -120,12 +124,11 @@ "asar": "^0.14.0", "chromium-pickle-js": "^0.2.0", "copy-webpack-plugin": "^4.5.2", - "coveralls": "^2.11.11", "cson-parser": "^1.3.3", "css-loader": "^3.2.0", "debounce": "^1.0.0", "deemon": "^1.4.0", - "electron": "7.3.1", + "electron": "7.3.2", "eslint": "6.8.0", "eslint-plugin-jsdoc": "^19.1.0", "event-stream": "3.3.4", @@ -190,9 +193,9 @@ "vsce": "1.48.0", "vscode-debugprotocol": "1.41.0", "vscode-nls-dev": "^3.3.1", - "webpack": "^4.16.5", - "webpack-cli": "^3.3.8", - "webpack-stream": "^5.1.1", + "webpack": "^4.43.0", + "webpack-cli": "^3.3.12", + "webpack-stream": "^5.2.1", "yaserver": "^0.2.0" }, "repository": { diff --git a/remote/package.json b/remote/package.json index bca65dd5a8..f1e5015f02 100644 --- a/remote/package.json +++ b/remote/package.json @@ -20,7 +20,7 @@ "html-query-plan": "git://github.com/anthonydresser/html-query-plan.git#2.6", "http-proxy-agent": "^2.1.0", "https-proxy-agent": "^2.2.3", - "iconv-lite": "0.6.0", + "iconv-lite-umd": "0.6.5", "jquery": "3.5.0", "jschardet": "2.1.1", "minimist": "^1.2.5", @@ -30,14 +30,14 @@ "reflect-metadata": "^0.1.8", "rxjs": "5.4.0", "sanitize-html": "^1.19.1", - "semver-umd": "^5.5.6", + "semver-umd": "^5.5.7", "slickgrid": "github:anthonydresser/SlickGrid#2.3.33", "spdlog": "^0.11.1", "vscode-nsfw": "1.2.8", "vscode-oniguruma": "1.3.1", "vscode-proxy-agent": "^0.5.2", "vscode-ripgrep": "^1.5.8", - "vscode-textmate": "5.1.1", + "vscode-textmate": "5.2.0", "xterm": "4.7.0-beta.3", "xterm-addon-search": "0.7.0", "xterm-addon-unicode11": "0.2.0", diff --git a/remote/web/package.json b/remote/web/package.json index bf81ca6488..8de1ac76b2 100644 --- a/remote/web/package.json +++ b/remote/web/package.json @@ -14,15 +14,17 @@ "ansi_up": "^3.0.0", "chart.js": "^2.6.0", "html-query-plan": "git://github.com/anthonydresser/html-query-plan.git#2.6", + "iconv-lite-umd": "0.6.5", + "jschardet": "2.1.1", "jquery": "3.5.0", "ng2-charts": "^1.6.0", "reflect-metadata": "^0.1.8", "rxjs": "5.4.0", "sanitize-html": "^1.19.1", - "semver-umd": "^5.5.6", + "semver-umd": "^5.5.7", "slickgrid": "github:anthonydresser/SlickGrid#2.3.33", "vscode-oniguruma": "1.3.1", - "vscode-textmate": "5.1.1", + "vscode-textmate": "5.2.0", "xterm": "4.7.0-beta.3", "xterm-addon-search": "0.7.0", "xterm-addon-unicode11": "0.2.0", diff --git a/remote/web/yarn.lock b/remote/web/yarn.lock index 66574ac713..6bc88bb10f 100644 --- a/remote/web/yarn.lock +++ b/remote/web/yarn.lock @@ -182,6 +182,11 @@ htmlparser2@^3.10.0: inherits "^2.0.1" readable-stream "^3.1.1" +iconv-lite-umd@0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/iconv-lite-umd/-/iconv-lite-umd-0.6.5.tgz#6a1f621a3b4d125f72feff813a9839e1ebd6c722" + integrity sha512-WDegH4al+e3n3jTOStRvm+jzDA3JMUQGgzdAsMxAgcgB0Oi72HjfdsoX08ieKsy3rKexXVjWZr41aOIUaCZnMg== + inherits@^2.0.1, inherits@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" @@ -192,6 +197,11 @@ jquery@3.5.0: resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.5.0.tgz#9980b97d9e4194611c36530e7dc46a58d7340fc9" integrity sha512-Xb7SVYMvygPxbFMpTFQiHh1J7HClEaThguL15N/Gg37Lri/qKyhRGZYzHRyLH8Stq3Aow0LsHO2O2ci86fCrNQ== +jschardet@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-2.1.1.tgz#af6f8fd0b3b0f5d46a8fd9614a4fce490575c184" + integrity sha512-pA5qG9Zwm8CBpGlK/lo2GE9jPxwqRgMV7Lzc/1iaPccw6v4Rhj8Zg2BTyrdmHmxlJojnbLupLeRnaPLsq03x6Q== + lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" @@ -285,10 +295,10 @@ sanitize-html@^1.19.1: srcset "^1.0.0" xtend "^4.0.1" -semver-umd@^5.5.6: - version "5.5.6" - resolved "https://registry.yarnpkg.com/semver-umd/-/semver-umd-5.5.6.tgz#1d185bbd2caec825c564b54907cd09e14083f228" - integrity sha512-6ARYXVi4Y4VO5HfyCjT/6xyykBtJwEXSGQ8ON4UPQSFOjZUDsbAE0J614QcBBsLTTyQMEqvsXN804vAqpydjzw== +semver-umd@^5.5.7: + version "5.5.7" + resolved "https://registry.yarnpkg.com/semver-umd/-/semver-umd-5.5.7.tgz#966beb5e96c7da6fbf09c3da14c2872d6836c528" + integrity sha512-XgjPNlD0J6aIc8xoTN6GQGwWc2Xg0kq8NzrqMVuKG/4Arl6ab1F8+Am5Y/XKKCR+FceFr2yN/Uv5ZJBhRyRqKg== "slickgrid@github:anthonydresser/SlickGrid#2.3.33": version "2.3.33" @@ -343,10 +353,10 @@ vscode-oniguruma@1.3.1: resolved "https://registry.yarnpkg.com/vscode-oniguruma/-/vscode-oniguruma-1.3.1.tgz#e2383879c3485b19f533ec34efea9d7a2b14be8f" integrity sha512-gz6ZBofA7UXafVA+m2Yt2zHKgXC2qedArprIsHAPKByTkwq9l5y/izAGckqxYml7mSbYxTRTfdRwsFq3cwF4LQ== -vscode-textmate@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-5.1.1.tgz#d88dbf271bee7cede455a21bd4894ba5724a4a7e" - integrity sha512-5VHjF+Fglf9d2JI5OyQ7FHutK6/29G0qYyD920K0SWO7uY8JTWbqyKAHEtfB/ZDk2fOe/E23n3wz9fHXKi63yg== +vscode-textmate@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-5.2.0.tgz#01f01760a391e8222fe4f33fbccbd1ad71aed74e" + integrity sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ== xtend@^4.0.1: version "4.0.2" diff --git a/remote/yarn.lock b/remote/yarn.lock index d2b5e39fe1..de15b1703f 100644 --- a/remote/yarn.lock +++ b/remote/yarn.lock @@ -356,12 +356,10 @@ https-proxy-agent@^2.2.3: agent-base "^4.3.0" debug "^3.1.0" -iconv-lite@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.0.tgz#66a93b80df0bd05d2a43a7426296b7f91073f125" - integrity sha512-43ZpGYZ9QtuutX5l6WC1DSO8ane9N+Ct5qPLF2OV7vM9abM69gnAbVkh66ibaZd3aOGkoP1ZmringlKhLBkw2Q== - dependencies: - safer-buffer ">= 2.1.2 < 3" +iconv-lite-umd@0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/iconv-lite-umd/-/iconv-lite-umd-0.6.5.tgz#6a1f621a3b4d125f72feff813a9839e1ebd6c722" + integrity sha512-WDegH4al+e3n3jTOStRvm+jzDA3JMUQGgzdAsMxAgcgB0Oi72HjfdsoX08ieKsy3rKexXVjWZr41aOIUaCZnMg== inherits@^2.0.1, inherits@^2.0.3: version "2.0.4" @@ -567,11 +565,6 @@ safe-buffer@~5.2.0: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - sanitize-html@^1.19.1: version "1.20.1" resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-1.20.1.tgz#f6effdf55dd398807171215a62bfc21811bacf85" @@ -588,10 +581,10 @@ sanitize-html@^1.19.1: srcset "^1.0.0" xtend "^4.0.1" -semver-umd@^5.5.6: - version "5.5.6" - resolved "https://registry.yarnpkg.com/semver-umd/-/semver-umd-5.5.6.tgz#1d185bbd2caec825c564b54907cd09e14083f228" - integrity sha512-6ARYXVi4Y4VO5HfyCjT/6xyykBtJwEXSGQ8ON4UPQSFOjZUDsbAE0J614QcBBsLTTyQMEqvsXN804vAqpydjzw== +semver-umd@^5.5.7: + version "5.5.7" + resolved "https://registry.yarnpkg.com/semver-umd/-/semver-umd-5.5.7.tgz#966beb5e96c7da6fbf09c3da14c2872d6836c528" + integrity sha512-XgjPNlD0J6aIc8xoTN6GQGwWc2Xg0kq8NzrqMVuKG/4Arl6ab1F8+Am5Y/XKKCR+FceFr2yN/Uv5ZJBhRyRqKg== semver@^5.3.0: version "5.6.0" @@ -718,10 +711,10 @@ vscode-ripgrep@^1.5.8: resolved "https://registry.yarnpkg.com/vscode-ripgrep/-/vscode-ripgrep-1.5.8.tgz#32cb33da6d1a9ca8f5de8c2813ed5114fd55fc11" integrity sha512-l6Pv/t1Jk63RU+kEkMO04XxnNRYdyzuesizj9AzFpcfrUxxpAjEJBK1qO9Mov30UUGZl7uDUBn+uCv9koaHPPA== -vscode-textmate@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-5.1.1.tgz#d88dbf271bee7cede455a21bd4894ba5724a4a7e" - integrity sha512-5VHjF+Fglf9d2JI5OyQ7FHutK6/29G0qYyD920K0SWO7uY8JTWbqyKAHEtfB/ZDk2fOe/E23n3wz9fHXKi63yg== +vscode-textmate@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-5.2.0.tgz#01f01760a391e8222fe4f33fbccbd1ad71aed74e" + integrity sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ== vscode-windows-ca-certs@0.2.0: version "0.2.0" diff --git a/resources/linux/bin/code.sh b/resources/linux/bin/code.sh index d72ec7260d..f53c3cdcce 100755 --- a/resources/linux/bin/code.sh +++ b/resources/linux/bin/code.sh @@ -1,28 +1,36 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh # # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the Source EULA. See License.txt in the project root for license information. # test that VSCode wasn't installed inside WSL if grep -qi Microsoft /proc/version && [ -z "$DONT_PROMPT_WSL_INSTALL" ]; then - echo "To use VS Code with the Windows Subsystem for Linux, please install VS Code in Windows and uninstall the Linux version in WSL. You can then use the '@@PRODNAME@@' command in a WSL terminal just as you would in a normal command prompt." 1>&2 - read -e -p "Do you want to continue anyways ? [y/N] " YN - - [[ $YN == "n" || $YN == "N" || $YN == "" ]] && exit 1 - echo "To no longer see this prompt, start @@PRODNAME@@ with the environment variable DONT_PROMPT_WSL_INSTALL defined." + echo "To use @@PRODNAME@@ with the Windows Subsystem for Linux, please install @@PRODNAME@@ in Windows and uninstall the Linux version in WSL. You can then use the \`@@NAME@@\` command in a WSL terminal just as you would in a normal command prompt." 1>&2 + printf "Do you want to continue anyway? [y/N] " 1>&2 + read -r YN + YN=$(printf '%s' "$YN" | tr '[:upper:]' '[:lower:]') + case "$YN" in + y | yes ) + ;; + * ) + exit 1 + ;; + esac + echo "To no longer see this prompt, start @@PRODNAME@@ with the environment variable DONT_PROMPT_WSL_INSTALL defined." 1>&2 fi - # If root, ensure that --user-data-dir or --file-write is specified if [ "$(id -u)" = "0" ]; then - for i in $@ + for i in "$@" do - if [[ $i == --user-data-dir || $i == --user-data-dir=* || $i == --file-write ]]; then - CAN_LAUNCH_AS_ROOT=1 - fi + case "$i" in + --user-data-dir | --user-data-dir=* | --file-write ) + CAN_LAUNCH_AS_ROOT=1 + ;; + esac done if [ -z $CAN_LAUNCH_AS_ROOT ]; then - echo "You are trying to start Azure Data Studio as a super user which is not recommended. If you really want to, you must specify an alternate user data directory using the --user-data-dir argument." 1>&2 + echo "You are trying to start @@PRODNAME@@ as a super user which isn't recommended. If this was intended, please specify an alternate user data directory using the \`--user-data-dir\` argument." 1>&2 exit 1 fi fi @@ -33,7 +41,7 @@ if [ ! -L "$0" ]; then else if command -v readlink >/dev/null; then # if readlink exists, follow the symlink and find relatively - VSCODE_PATH="$(dirname $(readlink -f "$0"))/.." + VSCODE_PATH="$(dirname "$(readlink -f "$0")")/.." else # else use the standard install location VSCODE_PATH="/usr/share/@@NAME@@" diff --git a/resources/linux/snap/snapcraft.yaml b/resources/linux/snap/snapcraft.yaml index c39e5f4f84..7dbc1680ba 100644 --- a/resources/linux/snap/snapcraft.yaml +++ b/resources/linux/snap/snapcraft.yaml @@ -24,6 +24,7 @@ parts: plugin: dump source: . stage-packages: + - ibus-gtk3 - fcitx-frontend-gtk3 - gvfs-libs - libasound2 diff --git a/resources/serverless/code-web.js b/resources/serverless/code-web.js index d4314c5c3f..bee6ca5b71 100644 --- a/resources/serverless/code-web.js +++ b/resources/serverless/code-web.js @@ -6,17 +6,18 @@ *--------------------------------------------------------------------------------------------*/ // @ts-check -/** @typedef {import('../../src/vs/workbench/workbench.web.api').IWorkbenchConstructionOptions} WebConfiguration **/ const http = require('http'); const url = require('url'); const fs = require('fs'); const path = require('path'); const util = require('util'); -const glob = require('glob'); const opn = require('opn'); const minimist = require('minimist'); -const webpack = require('webpack'); +const fancyLog = require('fancy-log'); +const ansiColors = require('ansi-colors'); + +const extensions = require('../../build/lib/extensions'); const APP_ROOT = path.join(__dirname, '..', '..'); const EXTENSIONS_ROOT = path.join(APP_ROOT, 'extensions'); @@ -60,20 +61,35 @@ const AUTHORITY = process.env.VSCODE_AUTHORITY || `${HOST}:${PORT}`; const exists = (path) => util.promisify(fs.exists)(path); const readFile = (path) => util.promisify(fs.readFile)(path); -const CharCode_PC = '%'.charCodeAt(0); + +let unbuiltExensions = []; async function initialize() { - const extensionFolders = await util.promisify(fs.readdir)(EXTENSIONS_ROOT); + const builtinExtensions = []; - const staticExtensions = []; + const children = await util.promisify(fs.readdir)(EXTENSIONS_ROOT, { withFileTypes: true }); + const folders = children.filter(c => !c.isFile()); + await Promise.all(folders.map(async folder => { + const folderName = folder.name; + const extensionPath = path.join(EXTENSIONS_ROOT, folderName); - const webpackConfigs = []; + let children = []; + try { + children = await util.promisify(fs.readdir)(extensionPath); + } catch (error) { + console.log(error); + return; + } - await Promise.all(extensionFolders.map(async extensionFolder => { - const packageJSONPath = path.join(EXTENSIONS_ROOT, extensionFolder, 'package.json'); + const readme = children.filter(child => /^readme(\.txt|\.md|)$/i.test(child))[0]; + const readmePath = readme ? path.join(extensionPath, readme) : undefined; + const changelog = children.filter(child => /^changelog(\.txt|\.md|)$/i.test(child))[0]; + const changelogPath = changelog ? path.join(extensionPath, changelog) : undefined; + + const packageJSONPath = path.join(EXTENSIONS_ROOT, folderName, 'package.json'); if (await exists(packageJSONPath)) { try { - const packageJSON = JSON.parse((await readFile(packageJSONPath)).toString()); + let packageJSON = JSON.parse((await readFile(packageJSONPath)).toString()); if (packageJSON.main && !packageJSON.browser) { return; // unsupported } @@ -81,82 +97,40 @@ async function initialize() { if (packageJSON.browser) { packageJSON.main = packageJSON.browser; - const webpackConfigLocations = await util.promisify(glob)( - path.join(EXTENSIONS_ROOT, extensionFolder, '**', 'extension-browser.webpack.config.js'), - { ignore: ['**/node_modules'] } - ); - - for (const webpackConfigPath of webpackConfigLocations) { - const configOrFnOrArray = require(webpackConfigPath); - function addConfig(configOrFn) { - if (typeof configOrFn === 'function') { - webpackConfigs.push(configOrFn({}, {})); - } else { - webpackConfigs.push(configOrFn); - } - } - addConfig(configOrFnOrArray); + let mainFilePath = path.join(EXTENSIONS_ROOT, folderName, packageJSON.browser); + if (path.extname(mainFilePath) !== '.js') { + mainFilePath += '.js'; + } + if (!await exists(mainFilePath)) { + unbuiltExensions.push(path.relative(EXTENSIONS_ROOT, mainFilePath)); } } - - const packageNlsPath = path.join(EXTENSIONS_ROOT, extensionFolder, 'package.nls.json'); - if (await exists(packageNlsPath)) { - const packageNls = JSON.parse((await readFile(packageNlsPath)).toString()); - const translate = (obj) => { - for (let key in obj) { - const val = obj[key]; - if (Array.isArray(val)) { - val.forEach(translate); - } else if (val && typeof val === 'object') { - translate(val); - } else if (typeof val === 'string' && val.charCodeAt(0) === CharCode_PC && val.charCodeAt(val.length - 1) === CharCode_PC) { - const translated = packageNls[val.substr(1, val.length - 2)]; - if (translated) { - obj[key] = translated; - } - } - } - }; - translate(packageJSON); - } packageJSON.extensionKind = ['web']; // enable for Web - staticExtensions.push({ + + const packageNLSPath = path.join(folderName, 'package.nls.json'); + const packageNLSExists = await exists(path.join(EXTENSIONS_ROOT, packageNLSPath)); + if (packageNLSExists) { + packageJSON = extensions.translatePackageJSON(packageJSON, path.join(EXTENSIONS_ROOT, packageNLSPath)); // temporary, until fixed in core + } + builtinExtensions.push({ + extensionPath: folderName, packageJSON, - extensionLocation: { scheme: SCHEME, authority: AUTHORITY, path: `/static-extension/${extensionFolder}` }, - isBuiltin: true + packageNLSPath: packageNLSExists ? packageNLSPath : undefined, + readmePath, + changelogPath }); } catch (e) { console.log(e); } } })); - - return new Promise((resolve, reject) => { - if (args.watch) { - webpack(webpackConfigs).watch({}, (err, stats) => { - if (err) { - console.log(err); - reject(); - } else { - console.log(stats.toString()); - resolve(staticExtensions); - } - }); - } else { - webpack(webpackConfigs).run((err, stats) => { - if (err) { - console.log(err); - reject(); - } else { - console.log(stats.toString()); - resolve(staticExtensions); - } - }); - } - }); + if (unbuiltExensions.length) { + fancyLog(`${ansiColors.yellow('Warning')}: Make sure to run ${ansiColors.cyan('yarn gulp watch-web')}\nCould not find the following browser main files: \n${unbuiltExensions.join('\n')}`); + } + return builtinExtensions; } -const staticExtensionsPromise = initialize(); +const builtinExtensionsPromise = initialize(); const mapCallbackUriToRequestId = new Map(); @@ -252,31 +226,40 @@ function handleStaticExtension(req, res, parsedUrl) { * @param {import('http').ServerResponse} res */ async function handleRoot(req, res) { + let folderUri = { scheme: 'memfs', path: `/sample-folder` }; + const match = req.url && req.url.match(/\?([^#]+)/); - let ghPath; if (match) { const qs = new URLSearchParams(match[1]); - ghPath = qs.get('gh'); - if (ghPath && !ghPath.startsWith('/')) { - ghPath = '/' + ghPath; + + let ghPath = qs.get('gh'); + if (ghPath) { + if (!ghPath.startsWith('/')) { + ghPath = '/' + ghPath; + } + folderUri = { scheme: 'github', authority: 'HEAD', path: ghPath }; + } else { + + let csPath = qs.get('cs'); + if (csPath) { + if (!csPath.startsWith('/')) { + csPath = '/' + csPath; + } + folderUri = { scheme: 'codespace', authority: 'HEAD', path: csPath }; + } } } - const staticExtensions = await staticExtensionsPromise; - /** @type {WebConfiguration} */ - const webConfig = { - staticExtensions: staticExtensions, - }; + const builtinExtensions = await builtinExtensionsPromise; const webConfigJSON = escapeAttribute(JSON.stringify({ - ...webConfig, - folderUri: ghPath - ? { scheme: 'github', authority: 'HEAD', path: ghPath } - : { scheme: 'memfs', path: `/sample-folder` }, + folderUri: folderUri, + builtinExtensionsServiceUrl: `${SCHEME}://${AUTHORITY}/static-extension` })); const data = (await util.promisify(fs.readFile)(WEB_MAIN)).toString() .replace('{{WORKBENCH_WEB_CONFIGURATION}}', () => webConfigJSON) // use a replace function to avoid that regexp replace patterns ($&, $0, ...) are applied + .replace('{{WORKBENCH_BUILTIN_EXTENSIONS}}', () => escapeAttribute(JSON.stringify(builtinExtensions))) .replace('{{WEBVIEW_ENDPOINT}}', '') .replace('{{REMOTE_USER_DATA_URI}}', ''); diff --git a/resources/win32/bin/code.sh b/resources/win32/bin/code.sh index c751647f2e..9f029e5522 100644 --- a/resources/win32/bin/code.sh +++ b/resources/win32/bin/code.sh @@ -13,48 +13,46 @@ NAME="@@NAME@@" DATAFOLDER="@@DATAFOLDER@@" VSCODE_PATH="$(dirname "$(dirname "$(realpath "$0")")")" ELECTRON="$VSCODE_PATH/$NAME.exe" -if grep -qi Microsoft /proc/version; then - # in a wsl shell - WSL_BUILD=$(uname -r | sed -E 's/^[0-9.]+-([0-9]+)-Microsoft.*|([0-9]+).([0-9]+).([0-9]+)-microsoft-standard.*|.*/\1\2\3\4/') - if [ -z "$WSL_BUILD" ]; then - WSL_BUILD=0 - fi - if [ $WSL_BUILD -ge 17063 ]; then - # $WSL_DISTRO_NAME is available since WSL builds 18362, also for WSL2 - # WSLPATH is available since WSL build 17046 - # WSLENV is available since WSL build 17063 - export WSLENV=ELECTRON_RUN_AS_NODE/w:$WSLENV - CLI=$(wslpath -m "$VSCODE_PATH/resources/app/out/cli.js") - - # use the Remote WSL extension if installed - WSL_EXT_ID="ms-vscode-remote.remote-wsl" - - if [ $WSL_BUILD -ge 41955 -a $WSL_BUILD -lt 41959 ]; then - # WSL2 workaround for https://github.com/microsoft/WSL/issues/4337 - CWD="$(pwd)" - cd "$VSCODE_PATH" - cmd.exe /C ".\\bin\\$APP_NAME.cmd --locate-extension $WSL_EXT_ID >%TEMP%\\remote-wsl-loc.txt" - WSL_EXT_WLOC=$(cmd.exe /C type %TEMP%\\remote-wsl-loc.txt) - cd "$CWD" +IN_WSL=false +if [ -n "$WSL_DISTRO_NAME" ]; then + # $WSL_DISTRO_NAME is available since WSL builds 18362, also for WSL2 + IN_WSL=true +else + WSL_BUILD=$(uname -r | sed -E 's/^[0-9.]+-([0-9]+)-Microsoft.*|.*/\1/') + if [ -n "$WSL_BUILD" ]; then + if [ "$WSL_BUILD" -ge 17063 ]; then + # WSLPATH is available since WSL build 17046 + # WSLENV is available since WSL build 17063 + IN_WSL=true else - ELECTRON_RUN_AS_NODE=1 "$ELECTRON" "$CLI" --locate-extension $WSL_EXT_ID >/tmp/remote-wsl-loc.txt 2>/dev/null - WSL_EXT_WLOC=$(cat /tmp/remote-wsl-loc.txt) - fi - if [ -n "$WSL_EXT_WLOC" ]; then - # replace \r\n with \n in WSL_EXT_WLOC - WSL_CODE=$(wslpath -u "${WSL_EXT_WLOC%%[[:cntrl:]]}")/scripts/wslCode.sh - "$WSL_CODE" "$COMMIT" "$QUALITY" "$ELECTRON" "$APP_NAME" "$DATAFOLDER" "$@" + # If running under older WSL, don't pass cli.js to Electron as + # environment vars cannot be transferred from WSL to Windows + # See: https://github.com/Microsoft/BashOnWindows/issues/1363 + # https://github.com/Microsoft/BashOnWindows/issues/1494 + "$ELECTRON" "$@" exit $? fi - else - # If running under older WSL, don't pass cli.js to Electron as - # environment vars cannot be transferred from WSL to Windows - # See: https://github.com/Microsoft/BashOnWindows/issues/1363 - # https://github.com/Microsoft/BashOnWindows/issues/1494 - "$ELECTRON" "$@" + fi +fi +if [ $IN_WSL = true ]; then + + export WSLENV=ELECTRON_RUN_AS_NODE/w:$WSLENV + CLI=$(wslpath -m "$VSCODE_PATH/resources/app/out/cli.js") + + # use the Remote WSL extension if installed + WSL_EXT_ID="ms-vscode-remote.remote-wsl" + + ELECTRON_RUN_AS_NODE=1 "$ELECTRON" "$CLI" --locate-extension $WSL_EXT_ID >/tmp/remote-wsl-loc.txt 2>/dev/null + WSL_EXT_WLOC=$(cat /tmp/remote-wsl-loc.txt) + + if [ -n "$WSL_EXT_WLOC" ]; then + # replace \r\n with \n in WSL_EXT_WLOC + WSL_CODE=$(wslpath -u "${WSL_EXT_WLOC%%[[:cntrl:]]}")/scripts/wslCode.sh + "$WSL_CODE" "$COMMIT" "$QUALITY" "$ELECTRON" "$APP_NAME" "$DATAFOLDER" "$@" exit $? fi + elif [ -x "$(command -v cygpath)" ]; then CLI=$(cygpath -m "$VSCODE_PATH/resources/app/out/cli.js") else diff --git a/scripts/code.sh b/scripts/code.sh index d0f79b53a9..390aa4b201 100755 --- a/scripts/code.sh +++ b/scripts/code.sh @@ -7,7 +7,8 @@ if [[ "$OSTYPE" == "darwin"* ]]; then ROOT=$(dirname "$(dirname "$(realpath "$0")")") else ROOT=$(dirname "$(dirname "$(readlink -f $0)")") - if grep -qi Microsoft /proc/version; then + # If the script is running in Docker using the WSL2 engine, powershell.exe won't exist + if grep -qi Microsoft /proc/version && type powershell.exe > /dev/null 2>&1; then IN_WSL=true fi fi diff --git a/scripts/test-integration.bat b/scripts/test-integration.bat index d5fdd5aa68..1dc84176fc 100755 --- a/scripts/test-integration.bat +++ b/scripts/test-integration.bat @@ -37,8 +37,8 @@ if "%INTEGRATION_TEST_ELECTRON_PATH%"=="" ( :: Tests in the extension host -REM call "%INTEGRATION_TEST_ELECTRON_PATH%" %~dp0\..\extensions\vscode-notebook-tests\test --enable-proposed-api=vscode.vscode-notebook-tests --extensionDevelopmentPath=%~dp0\..\extensions\vscode-notebook-tests --extensionTestsPath=%~dp0\..\extensions\vscode-notebook-tests\out --disable-telemetry --crash-reporter-directory=%VSCODECRASHDIR% --no-cached-data --disable-updates --disable-extensions --user-data-dir=%VSCODEUSERDATADIR% -REM if %errorlevel% neq 0 exit /b %errorlevel% +:: call "%INTEGRATION_TEST_ELECTRON_PATH%" %~dp0\..\extensions\vscode-notebook-tests\test --enable-proposed-api=vscode.vscode-notebook-tests --extensionDevelopmentPath=%~dp0\..\extensions\vscode-notebook-tests --extensionTestsPath=%~dp0\..\extensions\vscode-notebook-tests\out --disable-telemetry --crash-reporter-directory=%VSCODECRASHDIR% --no-cached-data --disable-updates --disable-extensions --user-data-dir=%VSCODEUSERDATADIR% +:: if %errorlevel% neq 0 exit /b %errorlevel% REM call "%INTEGRATION_TEST_ELECTRON_PATH%" %~dp0\..\extensions\vscode-api-tests\testWorkspace --enable-proposed-api=vscode.vscode-api-tests --extensionDevelopmentPath=%~dp0\..\extensions\vscode-api-tests --extensionTestsPath=%~dp0\..\extensions\vscode-api-tests\out\singlefolder-tests --disable-telemetry --crash-reporter-directory=%VSCODECRASHDIR% --no-cached-data --disable-updates --disable-extensions --user-data-dir=%VSCODEUSERDATADIR% REM if %errorlevel% neq 0 exit /b %errorlevel% diff --git a/src/bootstrap-fork.js b/src/bootstrap-fork.js index 7f04d50283..9c50ff4e52 100644 --- a/src/bootstrap-fork.js +++ b/src/bootstrap-fork.js @@ -7,15 +7,16 @@ 'use strict'; const bootstrap = require('./bootstrap'); +const bootstrapNode = require('./bootstrap-node'); // Remove global paths from the node module lookup -bootstrap.removeGlobalNodeModuleLookupPaths(); +bootstrapNode.removeGlobalNodeModuleLookupPaths(); // Enable ASAR in our forked processes bootstrap.enableASARSupport(); if (process.env['VSCODE_INJECT_NODE_MODULE_LOOKUP_PATH']) { - bootstrap.injectNodeModuleLookupPath(process.env['VSCODE_INJECT_NODE_MODULE_LOOKUP_PATH']); + bootstrapNode.injectNodeModuleLookupPath(process.env['VSCODE_INJECT_NODE_MODULE_LOOKUP_PATH']); } // Configure: pipe logging to parent process @@ -39,6 +40,7 @@ configureCrashReporter(); // Load AMD entry point require('./bootstrap-amd').load(process.env['AMD_ENTRYPOINT']); + //#region Helpers function pipeLoggingToParent() { @@ -49,8 +51,6 @@ function pipeLoggingToParent() { const seen = []; const argsArray = []; - let res; - // Massage some arguments with special treatment if (args.length) { for (let i = 0; i < args.length; i++) { @@ -85,7 +85,7 @@ function pipeLoggingToParent() { } try { - res = JSON.stringify(argsArray, function (key, value) { + const res = JSON.stringify(argsArray, function (key, value) { // Objects get special treatment to prevent circles if (isObject(value) || Array.isArray(value)) { @@ -98,15 +98,15 @@ function pipeLoggingToParent() { return value; }); + + if (res.length > MAX_LENGTH) { + return 'Output omitted for a large object that exceeds the limits'; + } + + return res; } catch (error) { - return 'Output omitted for an object that cannot be inspected (' + error.toString() + ')'; + return `Output omitted for an object that cannot be inspected ('${error.toString()}')`; } - - if (res && res.length > MAX_LENGTH) { - return 'Output omitted for a large object that exceeds the limits'; - } - - return res; } /** diff --git a/src/bootstrap-node.js b/src/bootstrap-node.js new file mode 100644 index 0000000000..7d4165dba9 --- /dev/null +++ b/src/bootstrap-node.js @@ -0,0 +1,60 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +//@ts-check +'use strict'; + +/** + * Add support for redirecting the loading of node modules + * + * @param {string} injectPath + */ +exports.injectNodeModuleLookupPath = function (injectPath) { + if (!injectPath) { + throw new Error('Missing injectPath'); + } + + const Module = require('module'); + const path = require('path'); + + const nodeModulesPath = path.join(__dirname, '../node_modules'); + + // @ts-ignore + const originalResolveLookupPaths = Module._resolveLookupPaths; + + // @ts-ignore + Module._resolveLookupPaths = function (moduleName, parent) { + const paths = originalResolveLookupPaths(moduleName, parent); + if (Array.isArray(paths)) { + for (let i = 0, len = paths.length; i < len; i++) { + if (paths[i] === nodeModulesPath) { + paths.splice(i, 0, injectPath); + break; + } + } + } + + return paths; + }; +}; + +exports.removeGlobalNodeModuleLookupPaths = function () { + const Module = require('module'); + // @ts-ignore + const globalPaths = Module.globalPaths; + + // @ts-ignore + const originalResolveLookupPaths = Module._resolveLookupPaths; + + // @ts-ignore + Module._resolveLookupPaths = function (moduleName, parent) { + const paths = originalResolveLookupPaths(moduleName, parent); + let commonSuffixLength = 0; + while (commonSuffixLength < paths.length && paths[paths.length - 1 - commonSuffixLength] === globalPaths[globalPaths.length - 1 - commonSuffixLength]) { + commonSuffixLength++; + } + return paths.slice(0, paths.length - commonSuffixLength); + }; +}; diff --git a/src/bootstrap-window.js b/src/bootstrap-window.js index 95317267a4..313a4f8be1 100644 --- a/src/bootstrap-window.js +++ b/src/bootstrap-window.js @@ -3,235 +3,232 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ +/// + //@ts-check 'use strict'; -const bootstrap = require('./bootstrap'); +// Simple module style to support node.js and browser environments +(function (globalThis, factory) { -/** - * @param {object} destination - * @param {object} source - * @returns {object} - */ -exports.assign = function assign(destination, source) { - return Object.keys(source).reduce(function (r, key) { r[key] = source[key]; return r; }, destination); -}; + // Node.js + if (typeof exports === 'object') { + module.exports = factory(); + } -/** - * @param {string[]} modulePaths - * @param {(result, configuration: object) => any} resultCallback - * @param {{ forceEnableDeveloperKeybindings?: boolean, disallowReloadKeybinding?: boolean, removeDeveloperKeybindingsAfterLoad?: boolean, canModifyDOM?: (config: object) => void, beforeLoaderConfig?: (config: object, loaderConfig: object) => void, beforeRequire?: () => void }=} options - */ -exports.load = function (modulePaths, resultCallback, options) { + // Browser + else { + globalThis.MonacoBootstrapWindow = factory(); + } +}(this, function () { + const path = require.__$__nodeRequire('path'); + const webFrame = require.__$__nodeRequire('electron').webFrame; + const ipc = require.__$__nodeRequire('electron').ipcRenderer; + const bootstrap = globalThis.MonacoBootstrap; - const webFrame = require('electron').webFrame; - const path = require('path'); - - const args = parseURLQueryArgs(); /** - * // configuration: INativeWindowConfiguration - * @type {{ - * zoomLevel?: number, - * extensionDevelopmentPath?: string[], - * extensionTestsPath?: string, - * userEnv?: { [key: string]: string | undefined }, - * appRoot?: string, - * nodeCachedDataDir?: string - * }} */ - const configuration = JSON.parse(args['config'] || '{}') || {}; + * @param {string[]} modulePaths + * @param {(result, configuration: object) => any} resultCallback + * @param {{ forceEnableDeveloperKeybindings?: boolean, disallowReloadKeybinding?: boolean, removeDeveloperKeybindingsAfterLoad?: boolean, canModifyDOM?: (config: object) => void, beforeLoaderConfig?: (config: object, loaderConfig: object) => void, beforeRequire?: () => void }=} options + */ + function load(modulePaths, resultCallback, options) { + const args = parseURLQueryArgs(); + /** + * // configuration: INativeWindowConfiguration + * @type {{ + * zoomLevel?: number, + * extensionDevelopmentPath?: string[], + * extensionTestsPath?: string, + * userEnv?: { [key: string]: string | undefined }, + * appRoot?: string, + * nodeCachedDataDir?: string + * }} */ + const configuration = JSON.parse(args['config'] || '{}') || {}; - // Apply zoom level early to avoid glitches - const zoomLevel = configuration.zoomLevel; - if (typeof zoomLevel === 'number' && zoomLevel !== 0) { - webFrame.setZoomLevel(zoomLevel); + // Apply zoom level early to avoid glitches + const zoomLevel = configuration.zoomLevel; + if (typeof zoomLevel === 'number' && zoomLevel !== 0) { + webFrame.setZoomLevel(zoomLevel); + } + + // Error handler + process.on('uncaughtException', function (error) { + onUnexpectedError(error, enableDeveloperTools); + }); + + // Developer tools + const enableDeveloperTools = (process.env['VSCODE_DEV'] || !!configuration.extensionDevelopmentPath) && !configuration.extensionTestsPath; + let developerToolsUnbind; + if (enableDeveloperTools || (options && options.forceEnableDeveloperKeybindings)) { + developerToolsUnbind = registerDeveloperKeybindings(options && options.disallowReloadKeybinding); + } + + // Correctly inherit the parent's environment + Object.assign(process.env, configuration.userEnv); + + // Enable ASAR support + bootstrap.enableASARSupport(path.join(configuration.appRoot, 'node_modules')); + + if (options && typeof options.canModifyDOM === 'function') { + options.canModifyDOM(configuration); + } + + // Get the nls configuration into the process.env as early as possible. + const nlsConfig = bootstrap.setupNLS(); + + let locale = nlsConfig.availableLanguages['*'] || 'en'; + if (locale === 'zh-tw') { + locale = 'zh-Hant'; + } else if (locale === 'zh-cn') { + locale = 'zh-Hans'; + } + + window.document.documentElement.setAttribute('lang', locale); + + // do not advertise AMD to avoid confusing UMD modules loaded with nodejs + window['define'] = undefined; + + // replace the patched electron fs with the original node fs for all AMD code + require.define('fs', ['original-fs'], function (originalFS) { return originalFS; }); + + window['MonacoEnvironment'] = {}; + + const loaderConfig = { + baseUrl: `${bootstrap.uriFromPath(configuration.appRoot)}/out`, + 'vs/nls': nlsConfig, + nodeModules: [/*BUILD->INSERT_NODE_MODULES*/] + }; + + loaderConfig.nodeModules = loaderConfig.nodeModules.concat([ + '@angular/common', + '@angular/core', + '@angular/forms', + '@angular/platform-browser', + '@angular/platform-browser-dynamic', + '@angular/router', + 'rxjs/Observable', + 'rxjs/add/observable/fromPromise', + 'rxjs/Subject', + 'rxjs/Observer', + 'slickgrid/lib/jquery.event.drag-2.3.0', + 'slickgrid/lib/jquery-ui-1.9.2', + 'slickgrid/slick.core', + 'slickgrid/slick.grid', + 'slickgrid/slick.editors', + 'slickgrid/slick.dataview' + ]); + + // cached data config + if (configuration.nodeCachedDataDir) { + loaderConfig.nodeCachedData = { + path: configuration.nodeCachedDataDir, + seed: modulePaths.join('') + }; + } + + if (options && typeof options.beforeLoaderConfig === 'function') { + options.beforeLoaderConfig(configuration, loaderConfig); + } + + require.config(loaderConfig); + + if (nlsConfig.pseudo) { + require(['vs/nls'], function (nlsPlugin) { + nlsPlugin.setPseudoTranslation(nlsConfig.pseudo); + }); + } + + if (options && typeof options.beforeRequire === 'function') { + options.beforeRequire(); + } + + require(modulePaths, result => { + try { + const callbackResult = resultCallback(result, configuration); + if (callbackResult && typeof callbackResult.then === 'function') { + callbackResult.then(() => { + if (developerToolsUnbind && options && options.removeDeveloperKeybindingsAfterLoad) { + developerToolsUnbind(); + } + }, error => { + onUnexpectedError(error, enableDeveloperTools); + }); + } + } catch (error) { + onUnexpectedError(error, enableDeveloperTools); + } + }, onUnexpectedError); } - // Error handler - process.on('uncaughtException', function (error) { - onUnexpectedError(error, enableDeveloperTools); - }); + /** + * @returns {{[param: string]: string }} + */ + function parseURLQueryArgs() { + const search = window.location.search || ''; - // Developer tools - const enableDeveloperTools = (process.env['VSCODE_DEV'] || !!configuration.extensionDevelopmentPath) && !configuration.extensionTestsPath; - let developerToolsUnbind; - if (enableDeveloperTools || (options && options.forceEnableDeveloperKeybindings)) { - developerToolsUnbind = registerDeveloperKeybindings(options && options.disallowReloadKeybinding); + return search.split(/[?&]/) + .filter(function (param) { return !!param; }) + .map(function (param) { return param.split('='); }) + .filter(function (param) { return param.length === 2; }) + .reduce(function (r, param) { r[param[0]] = decodeURIComponent(param[1]); return r; }, {}); } - // Correctly inherit the parent's environment - exports.assign(process.env, configuration.userEnv); + /** + * @param {boolean} disallowReloadKeybinding + * @returns {() => void} + */ + function registerDeveloperKeybindings(disallowReloadKeybinding) { + const extractKey = function (e) { + return [ + e.ctrlKey ? 'ctrl-' : '', + e.metaKey ? 'meta-' : '', + e.altKey ? 'alt-' : '', + e.shiftKey ? 'shift-' : '', + e.keyCode + ].join(''); + }; - // Enable ASAR support - bootstrap.enableASARSupport(path.join(configuration.appRoot, 'node_modules')); + // Devtools & reload support + const TOGGLE_DEV_TOOLS_KB = (process.platform === 'darwin' ? 'meta-alt-73' : 'ctrl-shift-73'); // mac: Cmd-Alt-I, rest: Ctrl-Shift-I + const TOGGLE_DEV_TOOLS_KB_ALT = '123'; // F12 + const RELOAD_KB = (process.platform === 'darwin' ? 'meta-82' : 'ctrl-82'); // mac: Cmd-R, rest: Ctrl-R - if (options && typeof options.canModifyDOM === 'function') { - options.canModifyDOM(configuration); - } + let listener = function (e) { + const key = extractKey(e); + if (key === TOGGLE_DEV_TOOLS_KB || key === TOGGLE_DEV_TOOLS_KB_ALT) { + ipc.send('vscode:toggleDevTools'); + } else if (key === RELOAD_KB && !disallowReloadKeybinding) { + ipc.send('vscode:reloadWindow'); + } + }; - // Get the nls configuration into the process.env as early as possible. - const nlsConfig = bootstrap.setupNLS(); + window.addEventListener('keydown', listener); - let locale = nlsConfig.availableLanguages['*'] || 'en'; - if (locale === 'zh-tw') { - locale = 'zh-Hant'; - } else if (locale === 'zh-cn') { - locale = 'zh-Hans'; - } - - window.document.documentElement.setAttribute('lang', locale); - - // Load the loader - const amdLoader = require(configuration.appRoot + '/out/vs/loader.js'); - const amdRequire = amdLoader.require; - const amdDefine = amdLoader.require.define; - const nodeRequire = amdLoader.require.nodeRequire; - - window['nodeRequire'] = nodeRequire; - window['require'] = amdRequire; - - // replace the patched electron fs with the original node fs for all AMD code - amdDefine('fs', ['original-fs'], function (originalFS) { return originalFS; }); - - window['MonacoEnvironment'] = {}; - - const loaderConfig = { - baseUrl: bootstrap.uriFromPath(configuration.appRoot) + '/out', - 'vs/nls': nlsConfig, - nodeModules: [/*BUILD->INSERT_NODE_MODULES*/] - }; - - loaderConfig.nodeModules = loaderConfig.nodeModules.concat([ - '@angular/common', - '@angular/core', - '@angular/forms', - '@angular/platform-browser', - '@angular/platform-browser-dynamic', - '@angular/router', - 'rxjs/Observable', - 'rxjs/add/observable/fromPromise', - 'rxjs/Subject', - 'rxjs/Observer', - 'slickgrid/lib/jquery.event.drag-2.3.0', - 'slickgrid/lib/jquery-ui-1.9.2', - 'slickgrid/slick.core', - 'slickgrid/slick.grid', - 'slickgrid/slick.editors', - 'slickgrid/slick.dataview' - ]); - // {{SQL CARBON EDIT}} - End - - // cached data config - if (configuration.nodeCachedDataDir) { - loaderConfig.nodeCachedData = { - path: configuration.nodeCachedDataDir, - seed: modulePaths.join('') + return function () { + if (listener) { + window.removeEventListener('keydown', listener); + listener = undefined; + } }; } - if (options && typeof options.beforeLoaderConfig === 'function') { - options.beforeLoaderConfig(configuration, loaderConfig); - } - - amdRequire.config(loaderConfig); - - if (nlsConfig.pseudo) { - amdRequire(['vs/nls'], function (nlsPlugin) { - nlsPlugin.setPseudoTranslation(nlsConfig.pseudo); - }); - } - - if (options && typeof options.beforeRequire === 'function') { - options.beforeRequire(); - } - - amdRequire(modulePaths, result => { - try { - const callbackResult = resultCallback(result, configuration); - if (callbackResult && typeof callbackResult.then === 'function') { - callbackResult.then(() => { - if (developerToolsUnbind && options && options.removeDeveloperKeybindingsAfterLoad) { - developerToolsUnbind(); - } - }, error => { - onUnexpectedError(error, enableDeveloperTools); - }); - } - } catch (error) { - onUnexpectedError(error, enableDeveloperTools); + /** + * @param {string | Error} error + * @param {boolean} [enableDeveloperTools] + */ + function onUnexpectedError(error, enableDeveloperTools) { + if (enableDeveloperTools) { + ipc.send('vscode:openDevTools'); } - }, onUnexpectedError); -}; -/** - * @returns {{[param: string]: string }} - */ -function parseURLQueryArgs() { - const search = window.location.search || ''; + console.error(`[uncaught exception]: ${error}`); - return search.split(/[?&]/) - .filter(function (param) { return !!param; }) - .map(function (param) { return param.split('='); }) - .filter(function (param) { return param.length === 2; }) - .reduce(function (r, param) { r[param[0]] = decodeURIComponent(param[1]); return r; }, {}); -} - -/** - * @param {boolean} disallowReloadKeybinding - * @returns {() => void} - */ -function registerDeveloperKeybindings(disallowReloadKeybinding) { - - const ipc = require('electron').ipcRenderer; - - const extractKey = function (e) { - return [ - e.ctrlKey ? 'ctrl-' : '', - e.metaKey ? 'meta-' : '', - e.altKey ? 'alt-' : '', - e.shiftKey ? 'shift-' : '', - e.keyCode - ].join(''); - }; - - // Devtools & reload support - const TOGGLE_DEV_TOOLS_KB = (process.platform === 'darwin' ? 'meta-alt-73' : 'ctrl-shift-73'); // mac: Cmd-Alt-I, rest: Ctrl-Shift-I - const TOGGLE_DEV_TOOLS_KB_ALT = '123'; // F12 - const RELOAD_KB = (process.platform === 'darwin' ? 'meta-82' : 'ctrl-82'); // mac: Cmd-R, rest: Ctrl-R - - let listener = function (e) { - const key = extractKey(e); - if (key === TOGGLE_DEV_TOOLS_KB || key === TOGGLE_DEV_TOOLS_KB_ALT) { - ipc.send('vscode:toggleDevTools'); - } else if (key === RELOAD_KB && !disallowReloadKeybinding) { - ipc.send('vscode:reloadWindow'); + if (error && typeof error !== 'string' && error.stack) { + console.error(error.stack); } - }; - - window.addEventListener('keydown', listener); - - return function () { - if (listener) { - window.removeEventListener('keydown', listener); - listener = undefined; - } - }; -} - -/** - * @param {string | Error} error - * @param {boolean} enableDeveloperTools - */ -function onUnexpectedError(error, enableDeveloperTools) { - - const ipc = require('electron').ipcRenderer; - - if (enableDeveloperTools) { - ipc.send('vscode:openDevTools'); } - console.error('[uncaught exception]: ' + error); - - if (error && typeof error !== 'string' && error.stack) { - console.error(error.stack); - } -} + return { + load + }; +})); diff --git a/src/bootstrap.js b/src/bootstrap.js index e3312a749d..53202b5bb0 100644 --- a/src/bootstrap.js +++ b/src/bootstrap.js @@ -6,316 +6,254 @@ //@ts-check 'use strict'; -//#region global bootstrapping +// Simple module style to support node.js and browser environments +(function (globalThis, factory) { -// increase number of stack frames(from 10, https://github.com/v8/v8/wiki/Stack-Trace-API) -Error.stackTraceLimit = 100; - -// Workaround for Electron not installing a handler to ignore SIGPIPE -// (https://github.com/electron/electron/issues/13254) -process.on('SIGPIPE', () => { - console.error(new Error('Unexpected SIGPIPE')); -}); - -//#endregion - -//#region Add support for redirecting the loading of node modules - -exports.injectNodeModuleLookupPath = function (injectPath) { - if (!injectPath) { - throw new Error('Missing injectPath'); + // Node.js + if (typeof exports === 'object') { + module.exports = factory(); } + // Browser + else { + globalThis.MonacoBootstrap = factory(); + } +}(this, function () { const Module = require('module'); const path = require('path'); - - const nodeModulesPath = path.join(__dirname, '../node_modules'); - - // @ts-ignore - const originalResolveLookupPaths = Module._resolveLookupPaths; - - // @ts-ignore - Module._resolveLookupPaths = function (moduleName, parent) { - const paths = originalResolveLookupPaths(moduleName, parent); - if (Array.isArray(paths)) { - for (let i = 0, len = paths.length; i < len; i++) { - if (paths[i] === nodeModulesPath) { - paths.splice(i, 0, injectPath); - break; - } - } - } - - return paths; - }; -}; - -//#endregion - -//#region Remove global paths from the node lookup paths - -exports.removeGlobalNodeModuleLookupPaths = function () { - const Module = require('module'); - // @ts-ignore - const globalPaths = Module.globalPaths; - - // @ts-ignore - const originalResolveLookupPaths = Module._resolveLookupPaths; - - // @ts-ignore - Module._resolveLookupPaths = function (moduleName, parent) { - const paths = originalResolveLookupPaths(moduleName, parent); - let commonSuffixLength = 0; - while (commonSuffixLength < paths.length && paths[paths.length - 1 - commonSuffixLength] === globalPaths[globalPaths.length - 1 - commonSuffixLength]) { - commonSuffixLength++; - } - return paths.slice(0, paths.length - commonSuffixLength); - }; -}; - -//#endregion - -//#region Add support for using node_modules.asar - -/** - * @param {string=} nodeModulesPath - */ -exports.enableASARSupport = function (nodeModulesPath) { - const Module = require('module'); - const path = require('path'); - - let NODE_MODULES_PATH = nodeModulesPath; - if (!NODE_MODULES_PATH) { - NODE_MODULES_PATH = path.join(__dirname, '../node_modules'); - } - - const NODE_MODULES_ASAR_PATH = NODE_MODULES_PATH + '.asar'; - - // @ts-ignore - const originalResolveLookupPaths = Module._resolveLookupPaths; - - // @ts-ignore - Module._resolveLookupPaths = function (request, parent) { - const paths = originalResolveLookupPaths(request, parent); - if (Array.isArray(paths)) { - for (let i = 0, len = paths.length; i < len; i++) { - if (paths[i] === NODE_MODULES_PATH) { - paths.splice(i, 0, NODE_MODULES_ASAR_PATH); - break; - } - } - } - - return paths; - }; -}; - -//#endregion - -//#region URI helpers - -/** - * @param {string} _path - * @returns {string} - */ -exports.uriFromPath = function (_path) { - const path = require('path'); - - let pathName = path.resolve(_path).replace(/\\/g, '/'); - if (pathName.length > 0 && pathName.charAt(0) !== '/') { - pathName = '/' + pathName; - } - - /** @type {string} */ - let uri; - if (process.platform === 'win32' && pathName.startsWith('//')) { // specially handle Windows UNC paths - uri = encodeURI('file:' + pathName); - } else { - uri = encodeURI('file://' + pathName); - } - - return uri.replace(/#/g, '%23'); -}; - -//#endregion - -//#region FS helpers - -/** - * @param {string} file - * @returns {Promise} - */ -exports.readFile = function (file) { const fs = require('fs'); - return new Promise(function (resolve, reject) { - fs.readFile(file, 'utf8', function (err, data) { - if (err) { - reject(err); - return; - } - resolve(data); - }); + //#region global bootstrapping + + // increase number of stack frames(from 10, https://github.com/v8/v8/wiki/Stack-Trace-API) + Error.stackTraceLimit = 100; + + // Workaround for Electron not installing a handler to ignore SIGPIPE + // (https://github.com/electron/electron/issues/13254) + process.on('SIGPIPE', () => { + console.error(new Error('Unexpected SIGPIPE')); }); -}; -/** - * @param {string} file - * @param {string} content - * @returns {Promise} - */ -exports.writeFile = function (file, content) { - const fs = require('fs'); + //#endregion - return new Promise(function (resolve, reject) { - fs.writeFile(file, content, 'utf8', function (err) { - if (err) { - reject(err); - return; + + //#region Add support for using node_modules.asar + + /** + * @param {string=} nodeModulesPath + */ + function enableASARSupport(nodeModulesPath) { + let NODE_MODULES_PATH = nodeModulesPath; + if (!NODE_MODULES_PATH) { + NODE_MODULES_PATH = path.join(__dirname, '../node_modules'); + } else { + // use the drive letter casing of __dirname + if (process.platform === 'win32') { + NODE_MODULES_PATH = __dirname.substr(0, 1) + NODE_MODULES_PATH.substr(1); } - resolve(); - }); - }); -}; - -/** - * @param {string} dir - * @returns {Promise} - */ -exports.mkdirp = function mkdirp(dir) { - const fs = require('fs'); - - return new Promise((c, e) => fs.mkdir(dir, { recursive: true }, err => (err && err.code !== 'EEXIST') ? e(err) : c(dir))); -}; - -//#endregion - -//#region NLS helpers - -/** - * @returns {{locale?: string, availableLanguages: {[lang: string]: string;}, pseudo?: boolean }} - */ -exports.setupNLS = function () { - const path = require('path'); - - // Get the nls configuration into the process.env as early as possible. - let nlsConfig = { availableLanguages: {} }; - if (process.env['VSCODE_NLS_CONFIG']) { - try { - nlsConfig = JSON.parse(process.env['VSCODE_NLS_CONFIG']); - } catch (e) { - // Ignore } - } - if (nlsConfig._resolvedLanguagePackCoreLocation) { - const bundles = Object.create(null); + const NODE_MODULES_ASAR_PATH = `${NODE_MODULES_PATH}.asar`; - nlsConfig.loadBundle = function (bundle, language, cb) { - const result = bundles[bundle]; - if (result) { - cb(undefined, result); + // @ts-ignore + const originalResolveLookupPaths = Module._resolveLookupPaths; - return; - } - - const bundleFile = path.join(nlsConfig._resolvedLanguagePackCoreLocation, bundle.replace(/\//g, '!') + '.nls.json'); - exports.readFile(bundleFile).then(function (content) { - const json = JSON.parse(content); - bundles[bundle] = json; - - cb(undefined, json); - }).catch((error) => { - try { - if (nlsConfig._corruptedFile) { - exports.writeFile(nlsConfig._corruptedFile, 'corrupted').catch(function (error) { console.error(error); }); + // @ts-ignore + Module._resolveLookupPaths = function (request, parent) { + const paths = originalResolveLookupPaths(request, parent); + if (Array.isArray(paths)) { + for (let i = 0, len = paths.length; i < len; i++) { + if (paths[i] === NODE_MODULES_PATH) { + paths.splice(i, 0, NODE_MODULES_ASAR_PATH); + break; } - } finally { - cb(error, undefined); } - }); + } + + return paths; }; } - return nlsConfig; -}; + //#endregion -//#endregion -//#region Portable helpers + //#region URI helpers -/** - * @returns {{ portableDataPath: string, isPortable: boolean }} - */ -exports.configurePortable = function () { - const product = require('../product.json'); - const path = require('path'); - const fs = require('fs'); - - const appRoot = path.dirname(__dirname); - - function getApplicationPath() { - if (process.env['VSCODE_DEV']) { - return appRoot; + /** + * @param {string} _path + * @returns {string} + */ + function uriFromPath(_path) { + let pathName = path.resolve(_path).replace(/\\/g, '/'); + if (pathName.length > 0 && pathName.charAt(0) !== '/') { + pathName = `/${pathName}`; } - if (process.platform === 'darwin') { - return path.dirname(path.dirname(path.dirname(appRoot))); - } - - return path.dirname(path.dirname(appRoot)); - } - - function getPortableDataPath() { - if (process.env['VSCODE_PORTABLE']) { - return process.env['VSCODE_PORTABLE']; - } - - if (process.platform === 'win32' || process.platform === 'linux') { - return path.join(getApplicationPath(), 'data'); - } - - // @ts-ignore - const portableDataName = product.portable || `${product.applicationName}-portable-data`; - return path.join(path.dirname(getApplicationPath()), portableDataName); - } - - const portableDataPath = getPortableDataPath(); - const isPortable = !('target' in product) && fs.existsSync(portableDataPath); - const portableTempPath = path.join(portableDataPath, 'tmp'); - const isTempPortable = isPortable && fs.existsSync(portableTempPath); - - if (isPortable) { - process.env['VSCODE_PORTABLE'] = portableDataPath; - } else { - delete process.env['VSCODE_PORTABLE']; - } - - if (isTempPortable) { - if (process.platform === 'win32') { - process.env['TMP'] = portableTempPath; - process.env['TEMP'] = portableTempPath; + /** @type {string} */ + let uri; + if (process.platform === 'win32' && pathName.startsWith('//')) { // specially handle Windows UNC paths + uri = encodeURI(`file:${pathName}`); } else { - process.env['TMPDIR'] = portableTempPath; + uri = encodeURI(`file://${pathName}`); } + + return uri.replace(/#/g, '%23'); } + //#endregion + + + //#region NLS helpers + + /** + * @returns {{locale?: string, availableLanguages: {[lang: string]: string;}, pseudo?: boolean }} + */ + function setupNLS() { + + // Get the nls configuration into the process.env as early as possible. + let nlsConfig = { availableLanguages: {} }; + if (process.env['VSCODE_NLS_CONFIG']) { + try { + nlsConfig = JSON.parse(process.env['VSCODE_NLS_CONFIG']); + } catch (e) { + // Ignore + } + } + + if (nlsConfig._resolvedLanguagePackCoreLocation) { + const bundles = Object.create(null); + + nlsConfig.loadBundle = function (bundle, language, cb) { + const result = bundles[bundle]; + if (result) { + cb(undefined, result); + + return; + } + + const bundleFile = path.join(nlsConfig._resolvedLanguagePackCoreLocation, `${bundle.replace(/\//g, '!')}.nls.json`); + readFile(bundleFile).then(function (content) { + const json = JSON.parse(content); + bundles[bundle] = json; + + cb(undefined, json); + }).catch((error) => { + try { + if (nlsConfig._corruptedFile) { + writeFile(nlsConfig._corruptedFile, 'corrupted').catch(function (error) { console.error(error); }); + } + } finally { + cb(error, undefined); + } + }); + }; + } + + return nlsConfig; + } + + /** + * @param {string} file + * @returns {Promise} + */ + function readFile(file) { + return fs.promises.readFile(file, 'utf8'); + } + + /** + * @param {string} file + * @param {string} content + * @returns {Promise} + */ + function writeFile(file, content) { + return fs.promises.writeFile(file, content, 'utf8'); + } + + //#endregion + + + //#region Portable helpers + + /** + * @param {{ portable: string; applicationName: string; }} product + * @returns {{portableDataPath: string;isPortable: boolean;}} + */ + function configurePortable(product) { + const appRoot = path.dirname(__dirname); + + function getApplicationPath() { + if (process.env['VSCODE_DEV']) { + return appRoot; + } + + if (process.platform === 'darwin') { + return path.dirname(path.dirname(path.dirname(appRoot))); + } + + return path.dirname(path.dirname(appRoot)); + } + + function getPortableDataPath() { + if (process.env['VSCODE_PORTABLE']) { + return process.env['VSCODE_PORTABLE']; + } + + if (process.platform === 'win32' || process.platform === 'linux') { + return path.join(getApplicationPath(), 'data'); + } + + // @ts-ignore + const portableDataName = product.portable || `${product.applicationName}-portable-data`; + return path.join(path.dirname(getApplicationPath()), portableDataName); + } + + const portableDataPath = getPortableDataPath(); + const isPortable = !('target' in product) && fs.existsSync(portableDataPath); + const portableTempPath = path.join(portableDataPath, 'tmp'); + const isTempPortable = isPortable && fs.existsSync(portableTempPath); + + if (isPortable) { + process.env['VSCODE_PORTABLE'] = portableDataPath; + } else { + delete process.env['VSCODE_PORTABLE']; + } + + if (isTempPortable) { + if (process.platform === 'win32') { + process.env['TMP'] = portableTempPath; + process.env['TEMP'] = portableTempPath; + } else { + process.env['TMPDIR'] = portableTempPath; + } + } + + return { + portableDataPath, + isPortable + }; + } + + //#endregion + + + //#region ApplicationInsights + + // Prevents appinsights from monkey patching modules. + // This should be called before importing the applicationinsights module + function avoidMonkeyPatchFromAppInsights() { + // @ts-ignore + process.env['APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL'] = true; // Skip monkey patching of 3rd party modules by appinsights + global['diagnosticsSource'] = {}; // Prevents diagnostic channel (which patches "require") from initializing entirely + } + + //#endregion + + return { - portableDataPath, - isPortable + enableASARSupport, + avoidMonkeyPatchFromAppInsights, + configurePortable, + setupNLS, + uriFromPath }; -}; - -//#endregion - -//#region ApplicationInsights - -// Prevents appinsights from monkey patching modules. -// This should be called before importing the applicationinsights module -exports.avoidMonkeyPatchFromAppInsights = function () { - // @ts-ignore - process.env['APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL'] = true; // Skip monkey patching of 3rd party modules by appinsights - global['diagnosticsSource'] = {}; // Prevents diagnostic channel (which patches "require") from initializing entirely -}; - -//#endregion +})); diff --git a/src/cli.js b/src/cli.js index 780d82c223..847430bd8b 100644 --- a/src/cli.js +++ b/src/cli.js @@ -7,15 +7,16 @@ 'use strict'; const bootstrap = require('./bootstrap'); +const product = require('../product.json'); // Avoid Monkey Patches from Application Insights bootstrap.avoidMonkeyPatchFromAppInsights(); // Enable portable support -bootstrap.configurePortable(); +bootstrap.configurePortable(product); // Enable ASAR support bootstrap.enableASARSupport(); // Load CLI through AMD loader -require('./bootstrap-amd').load('vs/code/node/cli'); \ No newline at end of file +require('./bootstrap-amd').load('vs/code/node/cli'); diff --git a/src/main.js b/src/main.js index 327fd1458f..f6f59aceb0 100644 --- a/src/main.js +++ b/src/main.js @@ -21,7 +21,7 @@ const product = require('../product.json'); const { app, protocol } = require('electron'); // Enable portable support -const portable = bootstrap.configurePortable(); +const portable = bootstrap.configurePortable(product); // Enable ASAR support bootstrap.enableASARSupport(); @@ -93,8 +93,9 @@ setCurrentWorkingDirectory(); // Register custom schemes with privileges protocol.registerSchemesAsPrivileged([ { - scheme: 'vscode-resource', + scheme: 'vscode-webview', privileges: { + standard: true, secure: true, supportFetchAPI: true, corsEnabled: true, @@ -473,7 +474,7 @@ function getNodeCachedDir() { async ensureExists() { try { - await bootstrap.mkdirp(this.value); + await mkdirp(this.value); return this.value; } catch (error) { @@ -502,6 +503,18 @@ function getNodeCachedDir() { }; } +/** + * @param {string} dir + * @returns {Promise} + */ +function mkdirp(dir) { + const fs = require('fs'); + + return new Promise((resolve, reject) => { + fs.mkdir(dir, { recursive: true }, err => (err && err.code !== 'EEXIST') ? reject(err) : resolve(dir)); + }); +} + //#region NLS Support /** diff --git a/src/sql/platform/clipboard/browser/clipboardService.ts b/src/sql/platform/clipboard/browser/clipboardService.ts index fb0ed6e418..6a724631ca 100644 --- a/src/sql/platform/clipboard/browser/clipboardService.ts +++ b/src/sql/platform/clipboard/browser/clipboardService.ts @@ -69,14 +69,4 @@ export class BrowserClipboardService implements IClipboardService { hasResources(): Promise { return this._vsClipboardService.hasResources(); } - - readFindTextSync(): string { - // eslint-disable-next-line no-sync - return this._vsClipboardService.readFindTextSync(); - } - - writeFindTextSync(text: string): void { - // eslint-disable-next-line no-sync - return this._vsClipboardService.writeFindTextSync(text); - } } diff --git a/src/sql/workbench/api/common/extHostModelViewTree.ts b/src/sql/workbench/api/common/extHostModelViewTree.ts index 539c4cad7d..97895b7b24 100644 --- a/src/sql/workbench/api/common/extHostModelViewTree.ts +++ b/src/sql/workbench/api/common/extHostModelViewTree.ts @@ -77,6 +77,14 @@ export class ExtHostModelViewTreeViews implements ExtHostModelViewTreeViewsShape $setVisible(treeViewId: string, visible: boolean): void { } + $hasResolve(treeViewId: string): Promise { + return Promise.resolve(false); + } + + $resolve(treeViewId: string, treeItemHandle: string): Promise { + return Promise.resolve(undefined); + } + private createExtHostTreeViewer(handle: number, id: string, dataProvider: azdata.TreeComponentDataProvider, extension: IExtensionDescription, logService: ILogService): ExtHostTreeView { const treeView = new ExtHostTreeView(handle, id, dataProvider, this._proxy, undefined, extension, logService); this.treeViews.set(`${handle}-${id}`, treeView); diff --git a/src/sql/workbench/api/common/sqlExtHost.api.impl.ts b/src/sql/workbench/api/common/sqlExtHost.api.impl.ts index 6ab730ad19..22f0e7f2e8 100644 --- a/src/sql/workbench/api/common/sqlExtHost.api.impl.ts +++ b/src/sql/workbench/api/common/sqlExtHost.api.impl.ts @@ -561,10 +561,10 @@ export function createAdsApiFactory(accessor: ServicesAccessor): IAdsExtensionAp CardType: sqlExtHostTypes.CardType, Orientation: sqlExtHostTypes.Orientation, SqlThemeIcon: sqlExtHostTypes.SqlThemeIcon, - TreeComponentItem: sqlExtHostTypes.TreeComponentItem, + TreeComponentItem: sqlExtHostTypes.TreeComponentItem as any, // work around nb: nb, AzureResource: sqlExtHostTypes.AzureResource, - TreeItem: sqlExtHostTypes.TreeItem, + TreeItem: sqlExtHostTypes.TreeItem as any, // work around extensions: extensions, ColumnType: sqlExtHostTypes.ColumnType, ActionOnCellCheckboxCheck: sqlExtHostTypes.ActionOnCellCheckboxCheck, diff --git a/src/sql/workbench/api/common/sqlExtHost.protocol.ts b/src/sql/workbench/api/common/sqlExtHost.protocol.ts index f05199857a..1dfd51fc31 100644 --- a/src/sql/workbench/api/common/sqlExtHost.protocol.ts +++ b/src/sql/workbench/api/common/sqlExtHost.protocol.ts @@ -732,6 +732,8 @@ export interface ExtHostModelViewTreeViewsShape { $setExpanded(treeViewId: string, treeItemHandle: string, expanded: boolean): void; $setSelection(treeViewId: string, treeItemHandles: string[]): void; $setVisible(treeViewId: string, visible: boolean): void; + $hasResolve(treeViewId: string): Promise; + $resolve(treeViewId: string, treeItemHandle: string): Promise; } export interface ExtHostBackgroundTaskManagementShape { diff --git a/src/sql/workbench/api/common/sqlExtHostTypes.ts b/src/sql/workbench/api/common/sqlExtHostTypes.ts index b008c12251..1a251aa131 100644 --- a/src/sql/workbench/api/common/sqlExtHostTypes.ts +++ b/src/sql/workbench/api/common/sqlExtHostTypes.ts @@ -397,7 +397,6 @@ export interface ToolbarLayout { } export class TreeComponentItem extends vsExtTypes.TreeItem { - label?: string; checked?: boolean; } @@ -411,7 +410,6 @@ export enum AzureResource { } export class TreeItem extends vsExtTypes.TreeItem { - label?: string; payload?: IConnectionProfile; providerHandle?: string; } diff --git a/src/sql/workbench/browser/parts/views/treeView.ts b/src/sql/workbench/browser/parts/views/treeView.ts index 93b46aab7d..22a308cf2f 100644 --- a/src/sql/workbench/browser/parts/views/treeView.ts +++ b/src/sql/workbench/browser/parts/views/treeView.ts @@ -442,7 +442,14 @@ export class TreeView extends Disposable implements ITreeView { identityProvider: new TreeViewIdentityProvider(), accessibilityProvider: { getAriaLabel(element: ITreeItem): string { - return element.tooltip ? element.tooltip : element.label ? element.label.label : ''; + if (element.accessibilityInformation) { + return element.accessibilityInformation.label; + } + + return isString(element.tooltip) ? element.tooltip : element.label ? element.label.label : ''; + }, + getRole(element: ITreeItem): string | undefined { + return element.accessibilityInformation?.role ?? 'treeitem'; }, getWidgetAriaLabel(): string { return widgetAriaLabel; @@ -842,7 +849,7 @@ class TreeRenderer extends Disposable implements ITreeRenderer(moduleName: string): T; getStats(): ReadonlyArray; + define(amdModuleId: string, dependencies: string[], callback: (...args: any[]) => any): any; } declare var require: NodeRequire; diff --git a/src/vs/base/browser/dom.ts b/src/vs/base/browser/dom.ts index 8f4062dba1..e2a76eaddd 100644 --- a/src/vs/base/browser/dom.ts +++ b/src/vs/base/browser/dom.ts @@ -820,6 +820,7 @@ export function isHTMLElement(o: any): o is HTMLElement { export const EventType = { // Mouse CLICK: 'click', + AUXCLICK: 'auxclick', DBLCLICK: 'dblclick', MOUSE_UP: 'mouseup', MOUSE_DOWN: 'mousedown', diff --git a/src/vs/base/browser/ui/countBadge/countBadge.css b/src/vs/base/browser/ui/countBadge/countBadge.css index 3d3915b604..4cc14c9084 100644 --- a/src/vs/base/browser/ui/countBadge/countBadge.css +++ b/src/vs/base/browser/ui/countBadge/countBadge.css @@ -19,4 +19,6 @@ .monaco-count-badge.long { padding: 2px 3px; border-radius: 2px; + min-height: auto; + line-height: normal; } diff --git a/src/vs/base/browser/ui/dialog/dialog.css b/src/vs/base/browser/ui/dialog/dialog.css index 8dcf3a7298..54585794dc 100644 --- a/src/vs/base/browser/ui/dialog/dialog.css +++ b/src/vs/base/browser/ui/dialog/dialog.css @@ -55,7 +55,7 @@ padding: 0 10px; } -.monaco-dialog-box .dialog-message-row > .codicon { +.monaco-dialog-box .dialog-message-row > .dialog-icon.codicon { flex: 0 0 48px; height: 48px; align-self: baseline; diff --git a/src/vs/base/browser/ui/dropdown/dropdown.ts b/src/vs/base/browser/ui/dropdown/dropdown.ts index 933f406be1..725ce0a706 100644 --- a/src/vs/base/browser/ui/dropdown/dropdown.ts +++ b/src/vs/base/browser/ui/dropdown/dropdown.ts @@ -11,7 +11,7 @@ import { IDisposable } from 'vs/base/common/lifecycle'; import { IContextViewProvider, IAnchor, AnchorAlignment } from 'vs/base/browser/ui/contextview/contextview'; import { IMenuOptions } from 'vs/base/browser/ui/menu/menu'; import { ResolvedKeybinding, KeyCode } from 'vs/base/common/keyCodes'; -import { EventHelper, EventType, removeClass, addClass, append, $, addDisposableListener, addClasses } from 'vs/base/browser/dom'; +import { EventHelper, EventType, removeClass, addClass, append, $, addDisposableListener, addClasses, DOMEvent } from 'vs/base/browser/dom'; import { IContextMenuDelegate } from 'vs/base/browser/contextmenu'; import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { Emitter } from 'vs/base/common/event'; @@ -122,7 +122,7 @@ export class BaseDropdown extends ActionRunner { return !!this.visible; } - protected onEvent(e: Event, activeElement: HTMLElement): void { + protected onEvent(e: DOMEvent, activeElement: HTMLElement): void { this.hide(); } @@ -294,6 +294,9 @@ export class DropdownMenuActionViewItem extends BaseActionViewItem { private anchorAlignmentProvider: (() => AnchorAlignment) | undefined; private menuAsChild?: boolean; + private _onDidChangeVisibility = this._register(new Emitter()); + readonly onDidChangeVisibility = this._onDidChangeVisibility.event; + constructor(action: IAction, menuActions: ReadonlyArray, contextMenuProvider: IContextMenuProvider, actionViewItemProvider: IActionViewItemProvider | undefined, actionRunner: IActionRunner, keybindings: ((action: IAction) => ResolvedKeybinding | undefined) | undefined, clazz: string | undefined, anchorAlignmentProvider?: () => AnchorAlignment, menuAsChild?: boolean); constructor(action: IAction, actionProvider: IActionProvider, contextMenuProvider: IContextMenuProvider, actionViewItemProvider: IActionViewItemProvider | undefined, actionRunner: IActionRunner, keybindings: ((action: IAction) => ResolvedKeybinding) | undefined, clazz: string | undefined, anchorAlignmentProvider?: () => AnchorAlignment, menuAsChild?: boolean); constructor(action: IAction, menuActionsOrProvider: ReadonlyArray | IActionProvider, contextMenuProvider: IContextMenuProvider, actionViewItemProvider: IActionViewItemProvider | undefined, actionRunner: IActionRunner, keybindings: ((action: IAction) => ResolvedKeybinding | undefined) | undefined, clazz: string | undefined, anchorAlignmentProvider?: () => AnchorAlignment, menuAsChild?: boolean) { @@ -339,7 +342,10 @@ export class DropdownMenuActionViewItem extends BaseActionViewItem { } this.dropdownMenu = this._register(new DropdownMenu(container, options)); - this._register(this.dropdownMenu.onDidChangeVisibility(visible => this.element?.setAttribute('aria-expanded', `${visible}`))); + this._register(this.dropdownMenu.onDidChangeVisibility(visible => { + this.element?.setAttribute('aria-expanded', `${visible}`); + this._onDidChangeVisibility.fire(visible); + })); this.dropdownMenu.menuOptions = { actionViewItemProvider: this.actionViewItemProvider, diff --git a/src/vs/base/browser/ui/grid/grid.ts b/src/vs/base/browser/ui/grid/grid.ts index 178c26093a..f6aadedb95 100644 --- a/src/vs/base/browser/ui/grid/grid.ts +++ b/src/vs/base/browser/ui/grid/grid.ts @@ -10,7 +10,7 @@ import { tail2 as tail, equals } from 'vs/base/common/arrays'; import { orthogonal, IView as IGridViewView, GridView, Sizing as GridViewSizing, Box, IGridViewStyles, IViewSize, IGridViewOptions, IBoundarySashes } from './gridview'; import { Event } from 'vs/base/common/event'; -export { Orientation, Sizing as GridViewSizing, IViewSize, orthogonal, LayoutPriority } from './gridview'; +export { Orientation, IViewSize, orthogonal, LayoutPriority } from './gridview'; export const enum Direction { Up, diff --git a/src/vs/base/browser/ui/list/listView.ts b/src/vs/base/browser/ui/list/listView.ts index 80c8d9849e..7941364db9 100644 --- a/src/vs/base/browser/ui/list/listView.ts +++ b/src/vs/base/browser/ui/list/listView.ts @@ -376,6 +376,10 @@ export class ListView implements ISpliceable, IDisposable { } updateElementHeight(index: number, size: number, anchorIndex: number | null): void { + if (index < 0 || index >= this.items.length) { + return; + } + if (this.items[index].size === size) { return; } diff --git a/src/vs/base/browser/ui/list/listWidget.ts b/src/vs/base/browser/ui/list/listWidget.ts index d9bed479d9..b123935448 100644 --- a/src/vs/base/browser/ui/list/listWidget.ts +++ b/src/vs/base/browser/ui/list/listWidget.ts @@ -225,10 +225,26 @@ class TraitSpliceable implements ISpliceable { } } -function isInputElement(e: HTMLElement): boolean { +export function isInputElement(e: HTMLElement): boolean { return e.tagName === 'INPUT' || e.tagName === 'TEXTAREA'; } +export function isMonacoEditor(e: HTMLElement): boolean { + if (DOM.hasClass(e, 'monaco-editor')) { + return true; + } + + if (DOM.hasClass(e, 'monaco-list')) { + return false; + } + + if (!e.parentElement) { + return false; + } + + return isMonacoEditor(e.parentElement); +} + class KeyboardController implements IDisposable { private readonly disposables = new DisposableStore(); @@ -572,12 +588,20 @@ export class MouseController implements IDisposable { } private onMouseDown(e: IListMouseEvent | IListTouchEvent): void { + if (isMonacoEditor(e.browserEvent.target as HTMLElement)) { + return; + } + if (document.activeElement !== e.browserEvent.target) { this.list.domFocus(); } } private onContextMenu(e: IListContextMenuEvent): void { + if (isMonacoEditor(e.browserEvent.target as HTMLElement)) { + return; + } + const focus = typeof e.index === 'undefined' ? [] : [e.index]; this.list.setFocus(focus, e.browserEvent); } @@ -587,7 +611,7 @@ export class MouseController implements IDisposable { return; } - if (isInputElement(e.browserEvent.target as HTMLElement)) { + if (isInputElement(e.browserEvent.target as HTMLElement) || isMonacoEditor(e.browserEvent.target as HTMLElement)) { return; } @@ -621,7 +645,7 @@ export class MouseController implements IDisposable { } protected onDoubleClick(e: IListMouseEvent): void { - if (isInputElement(e.browserEvent.target as HTMLElement)) { + if (isInputElement(e.browserEvent.target as HTMLElement) || isMonacoEditor(e.browserEvent.target as HTMLElement)) { return; } diff --git a/src/vs/base/browser/ui/menu/menubar.ts b/src/vs/base/browser/ui/menu/menubar.ts index 9eb049888c..b02c483889 100644 --- a/src/vs/base/browser/ui/menu/menubar.ts +++ b/src/vs/base/browser/ui/menu/menubar.ts @@ -942,7 +942,6 @@ export class MenuBar extends Disposable { menuHolder.style.top = `0px`; menuHolder.style.right = `${this.container.clientWidth}px`; menuHolder.style.left = 'auto'; - console.log(customMenu.buttonElement.getBoundingClientRect().right - this.container.clientWidth); } else { menuHolder.style.top = `${this.container.clientHeight}px`; menuHolder.style.left = `${customMenu.buttonElement.getBoundingClientRect().left}px`; diff --git a/src/vs/base/browser/ui/selectBox/selectBox.css b/src/vs/base/browser/ui/selectBox/selectBox.css index cbe11a810c..e258bc570f 100644 --- a/src/vs/base/browser/ui/selectBox/selectBox.css +++ b/src/vs/base/browser/ui/selectBox/selectBox.css @@ -12,3 +12,16 @@ font-weight: normal; text-transform: none; } + +/** Actions */ + +.monaco-workbench .monaco-action-bar .action-item.select-container { + cursor: default; +} + +.monaco-workbench .monaco-action-bar .action-item .monaco-select-box { + cursor: pointer; + min-width: 110px; + min-height: 18px; + padding: 2px 23px 2px 8px; +} diff --git a/src/vs/base/browser/ui/toolbar/toolbar.ts b/src/vs/base/browser/ui/toolbar/toolbar.ts index edbe2f8c7e..8d78b986a6 100644 --- a/src/vs/base/browser/ui/toolbar/toolbar.ts +++ b/src/vs/base/browser/ui/toolbar/toolbar.ts @@ -9,10 +9,11 @@ import { Action, IActionRunner, IAction } from 'vs/base/common/actions'; import { ActionBar, ActionsOrientation, IActionViewItemProvider } from 'vs/base/browser/ui/actionbar/actionbar'; import { IContextMenuProvider, DropdownMenuActionViewItem } from 'vs/base/browser/ui/dropdown/dropdown'; import { ResolvedKeybinding } from 'vs/base/common/keyCodes'; -import { Disposable, MutableDisposable } from 'vs/base/common/lifecycle'; +import { Disposable, IDisposable, combinedDisposable } from 'vs/base/common/lifecycle'; import { AnchorAlignment } from 'vs/base/browser/ui/contextview/contextview'; import { withNullAsUndefined } from 'vs/base/common/types'; import { Codicon, registerIcon } from 'vs/base/common/codicons'; +import { Emitter } from 'vs/base/common/event'; export const CONTEXT = 'context.toolbar'; @@ -35,17 +36,21 @@ export class ToolBar extends Disposable { private options: IToolBarOptions; private actionBar: ActionBar; private toggleMenuAction: ToggleMenuAction; - private toggleMenuActionViewItem = this._register(new MutableDisposable()); + private toggleMenuActionViewItem: DropdownMenuActionViewItem | undefined; + private toggleMenuActionViewItemDisposable: IDisposable = Disposable.None; private hasSecondaryActions: boolean = false; private lookupKeybindings: boolean; + private _onDidChangeDropdownVisibility = this._register(new Emitter()); + readonly onDidChangeDropdownVisibility = this._onDidChangeDropdownVisibility.event; + constructor(container: HTMLElement, contextMenuProvider: IContextMenuProvider, options: IToolBarOptions = { orientation: ActionsOrientation.HORIZONTAL }) { super(); this.options = options; this.lookupKeybindings = typeof this.options.getKeyBinding === 'function'; - this.toggleMenuAction = this._register(new ToggleMenuAction(() => this.toggleMenuActionViewItem.value && this.toggleMenuActionViewItem.value.show(), options.toggleMenuTitle)); + this.toggleMenuAction = this._register(new ToggleMenuAction(() => this.toggleMenuActionViewItem?.show(), options.toggleMenuTitle)); let element = document.createElement('div'); element.className = 'monaco-toolbar'; @@ -60,8 +65,10 @@ export class ToolBar extends Disposable { // Return special action item for the toggle menu action if (action.id === ToggleMenuAction.ID) { + this.toggleMenuActionViewItemDisposable.dispose(); + // Create new - this.toggleMenuActionViewItem.value = new DropdownMenuActionViewItem( + this.toggleMenuActionViewItem = new DropdownMenuActionViewItem( action, (action).menuActions, contextMenuProvider, @@ -72,9 +79,14 @@ export class ToolBar extends Disposable { this.options.anchorAlignmentProvider, true ); - this.toggleMenuActionViewItem.value.setActionContext(this.actionBar.context); + this.toggleMenuActionViewItem.setActionContext(this.actionBar.context); - return this.toggleMenuActionViewItem.value; + this.toggleMenuActionViewItemDisposable = combinedDisposable( + this.toggleMenuActionViewItem, + this.toggleMenuActionViewItem.onDidChangeVisibility(e => this._onDidChangeDropdownVisibility.fire(e)) + ); + + return this.toggleMenuActionViewItem; } return options.actionViewItemProvider ? options.actionViewItemProvider(action) : undefined; @@ -92,8 +104,8 @@ export class ToolBar extends Disposable { set context(context: unknown) { this.actionBar.context = context; - if (this.toggleMenuActionViewItem.value) { - this.toggleMenuActionViewItem.value.setActionContext(context); + if (this.toggleMenuActionViewItem) { + this.toggleMenuActionViewItem.setActionContext(context); } } @@ -113,23 +125,21 @@ export class ToolBar extends Disposable { this.actionBar.setAriaLabel(label); } - setActions(primaryActions: ReadonlyArray, secondaryActions?: ReadonlyArray): () => void { - return () => { - let primaryActionsToSet = primaryActions ? primaryActions.slice(0) : []; + setActions(primaryActions: ReadonlyArray, secondaryActions?: ReadonlyArray): void { + let primaryActionsToSet = primaryActions ? primaryActions.slice(0) : []; - // Inject additional action to open secondary actions if present - this.hasSecondaryActions = !!(secondaryActions && secondaryActions.length > 0); - if (this.hasSecondaryActions && secondaryActions) { - this.toggleMenuAction.menuActions = secondaryActions.slice(0); - primaryActionsToSet.push(this.toggleMenuAction); - } + // Inject additional action to open secondary actions if present + this.hasSecondaryActions = !!(secondaryActions && secondaryActions.length > 0); + if (this.hasSecondaryActions && secondaryActions) { + this.toggleMenuAction.menuActions = secondaryActions.slice(0); + primaryActionsToSet.push(this.toggleMenuAction); + } - this.actionBar.clear(); + this.actionBar.clear(); - primaryActionsToSet.forEach(action => { - this.actionBar.push(action, { icon: true, label: false, keybinding: this.getKeybindingLabel(action) }); - }); - }; + primaryActionsToSet.forEach(action => { + this.actionBar.push(action, { icon: true, label: false, keybinding: this.getKeybindingLabel(action) }); + }); } private getKeybindingLabel(action: IAction): string | undefined { @@ -153,6 +163,11 @@ export class ToolBar extends Disposable { } }; } + + dispose(): void { + super.dispose(); + this.toggleMenuActionViewItemDisposable.dispose(); + } } class ToggleMenuAction extends Action { diff --git a/src/vs/base/browser/ui/tree/abstractTree.ts b/src/vs/base/browser/ui/tree/abstractTree.ts index db3f01b75e..13b707c2fd 100644 --- a/src/vs/base/browser/ui/tree/abstractTree.ts +++ b/src/vs/base/browser/ui/tree/abstractTree.ts @@ -5,7 +5,7 @@ import 'vs/css!./media/tree'; import { IDisposable, dispose, Disposable, toDisposable, DisposableStore } from 'vs/base/common/lifecycle'; -import { IListOptions, List, IListStyles, MouseController, DefaultKeyboardNavigationDelegate } from 'vs/base/browser/ui/list/listWidget'; +import { IListOptions, List, IListStyles, MouseController, DefaultKeyboardNavigationDelegate, isInputElement, isMonacoEditor } from 'vs/base/browser/ui/list/listWidget'; import { IListVirtualDelegate, IListRenderer, IListMouseEvent, IListContextMenuEvent, IListDragAndDrop, IListDragOverReaction, IKeyboardNavigationLabelProvider, IIdentityProvider, IKeyboardNavigationDelegate } from 'vs/base/browser/ui/list/list'; import { append, $, toggleClass, getDomNodePagePosition, removeClass, addClass, hasClass, hasParentWithClass, createStyleSheet, clearNode, addClasses, removeClasses } from 'vs/base/browser/dom'; import { Event, Relay, Emitter, EventBufferer } from 'vs/base/common/event'; @@ -917,10 +917,6 @@ class TypeFilterController implements IDisposable { } } -function isInputElement(e: HTMLElement): boolean { - return e.tagName === 'INPUT' || e.tagName === 'TEXTAREA'; -} - function asTreeMouseEvent(event: IListMouseEvent>): ITreeMouseEvent { let target: TreeMouseEventTarget = TreeMouseEventTarget.Unknown; @@ -1084,7 +1080,7 @@ class TreeNodeListMouseController extends MouseController< } protected onViewPointer(e: IListMouseEvent>): void { - if (isInputElement(e.browserEvent.target as HTMLElement)) { + if (isInputElement(e.browserEvent.target as HTMLElement) || isMonacoEditor(e.browserEvent.target as HTMLElement)) { return; } diff --git a/src/vs/base/browser/ui/tree/compressedObjectTreeModel.ts b/src/vs/base/browser/ui/tree/compressedObjectTreeModel.ts index daf79ea061..408e22a32b 100644 --- a/src/vs/base/browser/ui/tree/compressedObjectTreeModel.ts +++ b/src/vs/base/browser/ui/tree/compressedObjectTreeModel.ts @@ -3,11 +3,11 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { ISpliceable } from 'vs/base/common/sequence'; import { Iterable } from 'vs/base/common/iterator'; import { Event } from 'vs/base/common/event'; import { ITreeModel, ITreeNode, ITreeElement, ICollapseStateChangeEvent, ITreeModelSpliceEvent, TreeError, TreeFilterResult, TreeVisibility, WeakMapper } from 'vs/base/browser/ui/tree/tree'; import { IObjectTreeModelOptions, ObjectTreeModel, IObjectTreeModel } from 'vs/base/browser/ui/tree/objectTreeModel'; +import { IList } from 'vs/base/browser/ui/tree/indexTreeModel'; // Exported only for test reasons, do not use directly export interface ICompressedTreeElement extends ITreeElement { @@ -126,7 +126,7 @@ export class CompressedObjectTreeModel, TFilterData e constructor( private user: string, - list: ISpliceable, TFilterData>>, + list: IList, TFilterData>>, options: ICompressedObjectTreeModelOptions = {} ) { this.model = new ObjectTreeModel(user, list, options); @@ -290,6 +290,16 @@ export class CompressedObjectTreeModel, TFilterData e this.model.rerender(compressedNode); } + updateElementHeight(element: T, height: number): void { + const compressedNode = this.getCompressedNode(element); + + if (!compressedNode) { + return; + } + + this.model.updateElementHeight(compressedNode, height); + } + refilter(): void { this.model.refilter(); } @@ -340,10 +350,13 @@ class CompressedTreeNodeWrapper implements ITreeNode(nodeMapper: CompressedNodeWeakMapper, list: ISpliceable>): ISpliceable, TFilterData>> { +function mapList(nodeMapper: CompressedNodeWeakMapper, list: IList>): IList, TFilterData>> { return { splice(start: number, deleteCount: number, toInsert: ITreeNode, TFilterData>[]): void { list.splice(start, deleteCount, toInsert.map(node => nodeMapper.map(node)) as ITreeNode[]); + }, + updateElementHeight(index: number, height: number): void { + list.updateElementHeight(index, height); } }; } @@ -402,7 +415,7 @@ export class CompressibleObjectTreeModel, TFilterData constructor( user: string, - list: ISpliceable>, + list: IList>, options: ICompressibleObjectTreeModelOptions = {} ) { this.elementMapper = options.elementMapper || DefaultElementMapper; @@ -492,6 +505,10 @@ export class CompressibleObjectTreeModel, TFilterData return this.model.rerender(location); } + updateElementHeight(element: T, height: number): void { + this.model.updateElementHeight(element, height); + } + refilter(): void { return this.model.refilter(); } diff --git a/src/vs/base/browser/ui/tree/dataTree.ts b/src/vs/base/browser/ui/tree/dataTree.ts index 12e28deaac..3c39bbb95f 100644 --- a/src/vs/base/browser/ui/tree/dataTree.ts +++ b/src/vs/base/browser/ui/tree/dataTree.ts @@ -4,11 +4,11 @@ *--------------------------------------------------------------------------------------------*/ import { AbstractTree, IAbstractTreeOptions } from 'vs/base/browser/ui/tree/abstractTree'; -import { ISpliceable } from 'vs/base/common/sequence'; import { ITreeNode, ITreeModel, ITreeElement, ITreeRenderer, ITreeSorter, IDataSource, TreeError } from 'vs/base/browser/ui/tree/tree'; import { ObjectTreeModel } from 'vs/base/browser/ui/tree/objectTreeModel'; import { IListVirtualDelegate, IIdentityProvider } from 'vs/base/browser/ui/list/list'; import { Iterable } from 'vs/base/common/iterator'; +import { IList } from 'vs/base/browser/ui/tree/indexTreeModel'; export interface IDataTreeOptions extends IAbstractTreeOptions { readonly sorter?: ITreeSorter; @@ -171,7 +171,7 @@ export class DataTree extends AbstractTree>, options: IDataTreeOptions): ITreeModel { + protected createModel(user: string, view: IList>, options: IDataTreeOptions): ITreeModel { return new ObjectTreeModel(user, view, options); } diff --git a/src/vs/base/browser/ui/tree/indexTree.ts b/src/vs/base/browser/ui/tree/indexTree.ts index 06d309a566..3fed05fa73 100644 --- a/src/vs/base/browser/ui/tree/indexTree.ts +++ b/src/vs/base/browser/ui/tree/indexTree.ts @@ -6,8 +6,7 @@ import 'vs/css!./media/tree'; import { Iterable } from 'vs/base/common/iterator'; import { AbstractTree, IAbstractTreeOptions } from 'vs/base/browser/ui/tree/abstractTree'; -import { ISpliceable } from 'vs/base/common/sequence'; -import { IndexTreeModel } from 'vs/base/browser/ui/tree/indexTreeModel'; +import { IndexTreeModel, IList } from 'vs/base/browser/ui/tree/indexTreeModel'; import { ITreeElement, ITreeModel, ITreeNode, ITreeRenderer } from 'vs/base/browser/ui/tree/tree'; import { IListVirtualDelegate } from 'vs/base/browser/ui/list/list'; @@ -41,7 +40,11 @@ export class IndexTree extends AbstractTree>, options: IIndexTreeOptions): ITreeModel { + updateElementHeight(location: number[], height: number): void { + this.model.updateElementHeight(location, height); + } + + protected createModel(user: string, view: IList>, options: IIndexTreeOptions): ITreeModel { return new IndexTreeModel(user, view, this.rootElement, options); } } diff --git a/src/vs/base/browser/ui/tree/indexTreeModel.ts b/src/vs/base/browser/ui/tree/indexTreeModel.ts index 2af4512869..3fc133487f 100644 --- a/src/vs/base/browser/ui/tree/indexTreeModel.ts +++ b/src/vs/base/browser/ui/tree/indexTreeModel.ts @@ -56,6 +56,10 @@ function isCollapsibleStateUpdate(update: CollapseStateUpdate): update is Collap return typeof (update as any).collapsible === 'boolean'; } +export interface IList extends ISpliceable { + updateElementHeight(index: number, height: number): void; +} + export class IndexTreeModel, TFilterData = void> implements ITreeModel { readonly rootRef = []; @@ -78,7 +82,7 @@ export class IndexTreeModel, TFilterData = voi constructor( private user: string, - private list: ISpliceable>, + private list: IList>, rootElement: T, options: IIndexTreeModelOptions = {} ) { @@ -212,6 +216,15 @@ export class IndexTreeModel, TFilterData = voi } } + updateElementHeight(location: number[], height: number): void { + if (location.length === 0) { + throw new TreeError(this.user, 'Invalid tree location'); + } + + const { listIndex } = this.getTreeNodeWithListIndex(location); + this.list.updateElementHeight(listIndex, height); + } + has(location: number[]): boolean { return this.hasTreeNode(location); } diff --git a/src/vs/base/browser/ui/tree/objectTree.ts b/src/vs/base/browser/ui/tree/objectTree.ts index bd8f9211f3..aafc428d50 100644 --- a/src/vs/base/browser/ui/tree/objectTree.ts +++ b/src/vs/base/browser/ui/tree/objectTree.ts @@ -5,13 +5,13 @@ import { Iterable } from 'vs/base/common/iterator'; import { AbstractTree, IAbstractTreeOptions, IAbstractTreeOptionsUpdate } from 'vs/base/browser/ui/tree/abstractTree'; -import { ISpliceable } from 'vs/base/common/sequence'; import { ITreeNode, ITreeModel, ITreeElement, ITreeRenderer, ITreeSorter, ICollapseStateChangeEvent } from 'vs/base/browser/ui/tree/tree'; import { ObjectTreeModel, IObjectTreeModel } from 'vs/base/browser/ui/tree/objectTreeModel'; import { IListVirtualDelegate, IKeyboardNavigationLabelProvider } from 'vs/base/browser/ui/list/list'; import { Event } from 'vs/base/common/event'; import { CompressibleObjectTreeModel, ElementMapper, ICompressedTreeNode, ICompressedTreeElement } from 'vs/base/browser/ui/tree/compressedObjectTreeModel'; import { memoize } from 'vs/base/common/decorators'; +import { IList } from 'vs/base/browser/ui/tree/indexTreeModel'; export interface IObjectTreeOptions extends IAbstractTreeOptions { readonly sorter?: ITreeSorter; @@ -46,6 +46,10 @@ export class ObjectTree, TFilterData = void> extends this.model.rerender(element); } + updateElementHeight(element: T, height: number): void { + this.model.updateElementHeight(element, height); + } + resort(element: T, recursive = true): void { this.model.resort(element, recursive); } @@ -54,7 +58,7 @@ export class ObjectTree, TFilterData = void> extends return this.model.has(element); } - protected createModel(user: string, view: ISpliceable>, options: IObjectTreeOptions): ITreeModel { + protected createModel(user: string, view: IList>, options: IObjectTreeOptions): ITreeModel { return new ObjectTreeModel(user, view, options); } } @@ -188,7 +192,7 @@ export class CompressibleObjectTree, TFilterData = vo this.model.setChildren(element, children); } - protected createModel(user: string, view: ISpliceable>, options: ICompressibleObjectTreeOptions): ITreeModel { + protected createModel(user: string, view: IList>, options: ICompressibleObjectTreeOptions): ITreeModel { return new CompressibleObjectTreeModel(user, view, options); } diff --git a/src/vs/base/browser/ui/tree/objectTreeModel.ts b/src/vs/base/browser/ui/tree/objectTreeModel.ts index 1897d46aa8..305fde3bc1 100644 --- a/src/vs/base/browser/ui/tree/objectTreeModel.ts +++ b/src/vs/base/browser/ui/tree/objectTreeModel.ts @@ -3,9 +3,8 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { ISpliceable } from 'vs/base/common/sequence'; import { Iterable } from 'vs/base/common/iterator'; -import { IndexTreeModel, IIndexTreeModelOptions } from 'vs/base/browser/ui/tree/indexTreeModel'; +import { IndexTreeModel, IIndexTreeModelOptions, IList } from 'vs/base/browser/ui/tree/indexTreeModel'; import { Event } from 'vs/base/common/event'; import { ITreeModel, ITreeNode, ITreeElement, ITreeSorter, ICollapseStateChangeEvent, ITreeModelSpliceEvent, TreeError } from 'vs/base/browser/ui/tree/tree'; import { IIdentityProvider } from 'vs/base/browser/ui/list/list'; @@ -16,6 +15,7 @@ export type ITreeNodeCallback = (node: ITreeNode export interface IObjectTreeModel, TFilterData extends NonNullable = void> extends ITreeModel { setChildren(element: T | null, children: Iterable> | undefined): void; resort(element?: T | null, recursive?: boolean): void; + updateElementHeight(element: T, height: number): void; } export interface IObjectTreeModelOptions extends IIndexTreeModelOptions { @@ -41,7 +41,7 @@ export class ObjectTreeModel, TFilterData extends Non constructor( private user: string, - list: ISpliceable>, + list: IList>, options: IObjectTreeModelOptions = {} ) { this.model = new IndexTreeModel(user, list, null, options); @@ -169,6 +169,11 @@ export class ObjectTreeModel, TFilterData extends Non this.model.rerender(location); } + updateElementHeight(element: T, height: number): void { + const location = this.getElementLocation(element); + this.model.updateElementHeight(location, height); + } + resort(element: T | null = null, recursive = true): void { if (!this.sorter) { return; diff --git a/src/vs/base/common/network.ts b/src/vs/base/common/network.ts index 5fd64ee90b..500c7aa14b 100644 --- a/src/vs/base/common/network.ts +++ b/src/vs/base/common/network.ts @@ -62,6 +62,14 @@ export namespace Schemas { export const webviewPanel = 'webview-panel'; + /** + * Scheme used for loading the wrapper html and script in webviews. + */ + export const vscodeWebview = 'vscode-webview'; + + /** + * Scheme used for loading resources inside of webviews. + */ export const vscodeWebviewResource = 'vscode-webview-resource'; /** diff --git a/src/vs/base/common/platform.ts b/src/vs/base/common/platform.ts index a89727f39c..4a559fbab5 100644 --- a/src/vs/base/common/platform.ts +++ b/src/vs/base/common/platform.ts @@ -54,7 +54,7 @@ if (typeof navigator === 'object' && !isElectronRenderer) { _userAgent = navigator.userAgent; _isWindows = _userAgent.indexOf('Windows') >= 0; _isMacintosh = _userAgent.indexOf('Macintosh') >= 0; - _isIOS = _userAgent.indexOf('Macintosh') >= 0 && !!navigator.maxTouchPoints && navigator.maxTouchPoints > 0; + _isIOS = (_userAgent.indexOf('Macintosh') >= 0 || _userAgent.indexOf('iPad') >= 0 || _userAgent.indexOf('iPhone') >= 0) && !!navigator.maxTouchPoints && navigator.maxTouchPoints > 0; _isLinux = _userAgent.indexOf('Linux') >= 0; _isWeb = true; _locale = navigator.language; @@ -208,7 +208,7 @@ export const enum OperatingSystem { Macintosh = 2, Linux = 3 } -export const OS = (_isMacintosh ? OperatingSystem.Macintosh : (_isWindows ? OperatingSystem.Windows : OperatingSystem.Linux)); +export const OS = (_isMacintosh || _isIOS ? OperatingSystem.Macintosh : (_isWindows ? OperatingSystem.Windows : OperatingSystem.Linux)); let _isLittleEndian = true; let _isLittleEndianComputed = false; diff --git a/src/vs/base/common/search.ts b/src/vs/base/common/search.ts index 06dfc956f8..623b8e94ee 100644 --- a/src/vs/base/common/search.ts +++ b/src/vs/base/common/search.ts @@ -18,7 +18,7 @@ export function buildReplaceStringWithCasePreserved(matches: string[] | null, pa return pattern.toUpperCase(); } else if (matches[0].toLowerCase() === matches[0]) { return pattern.toLowerCase(); - } else if (strings.containsUppercaseCharacter(matches[0][0])) { + } else if (strings.containsUppercaseCharacter(matches[0][0]) && pattern.length > 0) { return pattern[0].toUpperCase() + pattern.substr(1); } else { // we don't understand its pattern yet. diff --git a/src/vs/base/common/sequence.ts b/src/vs/base/common/sequence.ts index d0343fa2fd..79a18bd191 100644 --- a/src/vs/base/common/sequence.ts +++ b/src/vs/base/common/sequence.ts @@ -4,6 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { Event, Emitter } from 'vs/base/common/event'; +import { IDisposable } from 'vs/base/common/lifecycle'; export interface ISplice { readonly start: number; @@ -32,3 +33,26 @@ export class Sequence implements ISequence, ISpliceable { this._onDidSplice.fire({ start, deleteCount, toInsert }); } } + +export class SimpleSequence implements ISequence { + + private _elements: T[]; + get elements(): T[] { return this._elements; } + + readonly onDidSplice: Event>; + private disposable: IDisposable; + + constructor(elements: T[], onDidAdd: Event, onDidRemove: Event) { + this._elements = [...elements]; + this.onDidSplice = Event.any( + Event.map(onDidAdd, e => ({ start: this.elements.length, deleteCount: 0, toInsert: [e] })), + Event.map(Event.filter(Event.map(onDidRemove, e => this.elements.indexOf(e)), i => i > -1), i => ({ start: i, deleteCount: 1, toInsert: [] })) + ); + + this.disposable = this.onDidSplice(({ start, deleteCount, toInsert }) => this._elements.splice(start, deleteCount, ...toInsert)); + } + + dispose(): void { + this.disposable.dispose(); + } +} diff --git a/src/vs/base/node/terminalEncoding.ts b/src/vs/base/node/terminalEncoding.ts index d50791e43c..dbb1c7ada7 100644 --- a/src/vs/base/node/terminalEncoding.ts +++ b/src/vs/base/node/terminalEncoding.ts @@ -7,7 +7,7 @@ * This code is also used by standalone cli's. Avoid adding dependencies to keep the size of the cli small. */ import { exec } from 'child_process'; -import * as os from 'os'; +import { isWindows } from 'vs/base/common/platform'; const windowsTerminalEncodings = { '437': 'cp437', // United States @@ -39,7 +39,6 @@ const JSCHARDET_TO_ICONV_ENCODINGS: { [name: string]: string } = { const UTF8 = 'utf8'; - export async function resolveTerminalEncoding(verbose?: boolean): Promise { let rawEncodingPromise: Promise; @@ -54,7 +53,7 @@ export async function resolveTerminalEncoding(verbose?: boolean): Promise(resolve => { if (verbose) { console.log('Running "chcp" to detect terminal encoding...'); diff --git a/src/vs/base/parts/quickinput/browser/media/quickInput.css b/src/vs/base/parts/quickinput/browser/media/quickInput.css index 5a1e959ec4..09ec09223d 100644 --- a/src/vs/base/parts/quickinput/browser/media/quickInput.css +++ b/src/vs/base/parts/quickinput/browser/media/quickInput.css @@ -105,6 +105,8 @@ vertical-align: middle; padding: 2px 4px; border-radius: 2px; + min-height: auto; + line-height: normal; } .quick-input-action { diff --git a/src/vs/base/parts/quickinput/browser/quickInput.ts b/src/vs/base/parts/quickinput/browser/quickInput.ts index 68f495088e..361b82f816 100644 --- a/src/vs/base/parts/quickinput/browser/quickInput.ts +++ b/src/vs/base/parts/quickinput/browser/quickInput.ts @@ -353,10 +353,12 @@ class QuickInput extends Disposable implements IQuickInput { this.ui.inputBox.showDecoration(severity); if (severity === Severity.Error) { const styles = this.ui.inputBox.stylesForType(severity); + this.ui.message.style.color = styles.foreground ? `${styles.foreground}` : ''; this.ui.message.style.backgroundColor = styles.background ? `${styles.background}` : ''; this.ui.message.style.border = styles.border ? `1px solid ${styles.border}` : ''; this.ui.message.style.paddingBottom = '4px'; } else { + this.ui.message.style.color = ''; this.ui.message.style.backgroundColor = ''; this.ui.message.style.border = ''; this.ui.message.style.paddingBottom = ''; diff --git a/src/vs/base/parts/request/browser/request.ts b/src/vs/base/parts/request/browser/request.ts index 3d686024f2..7d2df75e2d 100644 --- a/src/vs/base/parts/request/browser/request.ts +++ b/src/vs/base/parts/request/browser/request.ts @@ -21,7 +21,7 @@ export function request(options: IRequestOptions, token: CancellationToken): Pro setRequestHeaders(xhr, options); xhr.responseType = 'arraybuffer'; - xhr.onerror = e => reject(new Error(xhr.statusText && ('XHR failed: ' + xhr.statusText))); + xhr.onerror = e => reject(new Error(xhr.statusText && ('XHR failed: ' + xhr.statusText) || 'XHR failed')); xhr.onload = (e) => { resolve({ res: { diff --git a/src/vs/base/parts/sandbox/common/electronTypes.ts b/src/vs/base/parts/sandbox/common/electronTypes.ts index 9a004cb440..ad7517a283 100644 --- a/src/vs/base/parts/sandbox/common/electronTypes.ts +++ b/src/vs/base/parts/sandbox/common/electronTypes.ts @@ -247,3 +247,37 @@ export interface FileFilter { extensions: string[]; name: string; } + +export interface InputEvent { + + // Docs: http://electronjs.org/docs/api/structures/input-event + + /** + * An array of modifiers of the event, can be `shift`, `control`, `alt`, `meta`, + * `isKeypad`, `isAutoRepeat`, `leftButtonDown`, `middleButtonDown`, + * `rightButtonDown`, `capsLock`, `numLock`, `left`, `right`. + */ + modifiers: Array<'shift' | 'control' | 'alt' | 'meta' | 'isKeypad' | 'isAutoRepeat' | 'leftButtonDown' | 'middleButtonDown' | 'rightButtonDown' | 'capsLock' | 'numLock' | 'left' | 'right'>; +} + +export interface MouseInputEvent extends InputEvent { + + // Docs: http://electronjs.org/docs/api/structures/mouse-input-event + + /** + * The button pressed, can be `left`, `middle`, `right`. + */ + button?: ('left' | 'middle' | 'right'); + clickCount?: number; + globalX?: number; + globalY?: number; + movementX?: number; + movementY?: number; + /** + * The type of the event, can be `mouseDown`, `mouseUp`, `mouseEnter`, + * `mouseLeave`, `contextMenu`, `mouseWheel` or `mouseMove`. + */ + type: ('mouseDown' | 'mouseUp' | 'mouseEnter' | 'mouseLeave' | 'contextMenu' | 'mouseWheel' | 'mouseMove'); + x: number; + y: number; +} diff --git a/src/vs/base/test/browser/ui/tree/compressedObjectTreeModel.test.ts b/src/vs/base/test/browser/ui/tree/compressedObjectTreeModel.test.ts index 3ca473e5bf..312745c6c3 100644 --- a/src/vs/base/test/browser/ui/tree/compressedObjectTreeModel.test.ts +++ b/src/vs/base/test/browser/ui/tree/compressedObjectTreeModel.test.ts @@ -7,7 +7,7 @@ import * as assert from 'assert'; import { compress, ICompressedTreeElement, ICompressedTreeNode, decompress, CompressedObjectTreeModel } from 'vs/base/browser/ui/tree/compressedObjectTreeModel'; import { Iterable } from 'vs/base/common/iterator'; import { ITreeNode } from 'vs/base/browser/ui/tree/tree'; -import { ISpliceable } from 'vs/base/common/sequence'; +import { IList } from 'vs/base/browser/ui/tree/indexTreeModel'; interface IResolvedCompressedTreeElement extends ICompressedTreeElement { readonly element: T; @@ -289,11 +289,12 @@ suite('CompressedObjectTree', function () { }); }); - function toSpliceable(arr: T[]): ISpliceable { + function toList(arr: T[]): IList { return { splice(start: number, deleteCount: number, elements: T[]): void { arr.splice(start, deleteCount, ...elements); - } + }, + updateElementHeight() { } }; } @@ -305,7 +306,7 @@ suite('CompressedObjectTree', function () { test('ctor', () => { const list: ITreeNode>[] = []; - const model = new CompressedObjectTreeModel('test', toSpliceable(list)); + const model = new CompressedObjectTreeModel('test', toList(list)); assert(model); assert.equal(list.length, 0); assert.equal(model.size, 0); @@ -313,7 +314,7 @@ suite('CompressedObjectTree', function () { test('flat', () => { const list: ITreeNode>[] = []; - const model = new CompressedObjectTreeModel('test', toSpliceable(list)); + const model = new CompressedObjectTreeModel('test', toList(list)); model.setChildren(null, [ { element: 0 }, @@ -340,7 +341,7 @@ suite('CompressedObjectTree', function () { test('nested', () => { const list: ITreeNode>[] = []; - const model = new CompressedObjectTreeModel('test', toSpliceable(list)); + const model = new CompressedObjectTreeModel('test', toList(list)); model.setChildren(null, [ { @@ -376,7 +377,7 @@ suite('CompressedObjectTree', function () { test('compressed', () => { const list: ITreeNode>[] = []; - const model = new CompressedObjectTreeModel('test', toSpliceable(list)); + const model = new CompressedObjectTreeModel('test', toList(list)); model.setChildren(null, [ { diff --git a/src/vs/base/test/browser/ui/tree/indexTreeModel.test.ts b/src/vs/base/test/browser/ui/tree/indexTreeModel.test.ts index e3d2eb5afc..5e7a5e3e4b 100644 --- a/src/vs/base/test/browser/ui/tree/indexTreeModel.test.ts +++ b/src/vs/base/test/browser/ui/tree/indexTreeModel.test.ts @@ -5,14 +5,14 @@ import * as assert from 'assert'; import { ITreeNode, ITreeFilter, TreeVisibility } from 'vs/base/browser/ui/tree/tree'; -import { ISpliceable } from 'vs/base/common/sequence'; -import { IndexTreeModel, IIndexTreeNode } from 'vs/base/browser/ui/tree/indexTreeModel'; +import { IndexTreeModel, IIndexTreeNode, IList } from 'vs/base/browser/ui/tree/indexTreeModel'; -function toSpliceable(arr: T[]): ISpliceable { +function toList(arr: T[]): IList { return { splice(start: number, deleteCount: number, elements: T[]): void { arr.splice(start, deleteCount, ...elements); - } + }, + updateElementHeight() { } }; } @@ -24,14 +24,14 @@ suite('IndexTreeModel', function () { test('ctor', () => { const list: ITreeNode[] = []; - const model = new IndexTreeModel('test', toSpliceable(list), -1); + const model = new IndexTreeModel('test', toList(list), -1); assert(model); assert.equal(list.length, 0); }); test('insert', () => { const list: ITreeNode[] = []; - const model = new IndexTreeModel('test', toSpliceable(list), -1); + const model = new IndexTreeModel('test', toList(list), -1); model.splice([0], 0, [ { element: 0 }, @@ -53,7 +53,7 @@ suite('IndexTreeModel', function () { test('deep insert', function () { const list: ITreeNode[] = []; - const model = new IndexTreeModel('test', toSpliceable(list), -1); + const model = new IndexTreeModel('test', toList(list), -1); model.splice([0], 0, [ { @@ -90,7 +90,7 @@ suite('IndexTreeModel', function () { test('deep insert collapsed', function () { const list: ITreeNode[] = []; - const model = new IndexTreeModel('test', toSpliceable(list), -1); + const model = new IndexTreeModel('test', toList(list), -1); model.splice([0], 0, [ { @@ -118,7 +118,7 @@ suite('IndexTreeModel', function () { test('delete', () => { const list: ITreeNode[] = []; - const model = new IndexTreeModel('test', toSpliceable(list), -1); + const model = new IndexTreeModel('test', toList(list), -1); model.splice([0], 0, [ { element: 0 }, @@ -143,7 +143,7 @@ suite('IndexTreeModel', function () { test('nested delete', function () { const list: ITreeNode[] = []; - const model = new IndexTreeModel('test', toSpliceable(list), -1); + const model = new IndexTreeModel('test', toList(list), -1); model.splice([0], 0, [ { @@ -177,7 +177,7 @@ suite('IndexTreeModel', function () { test('deep delete', function () { const list: ITreeNode[] = []; - const model = new IndexTreeModel('test', toSpliceable(list), -1); + const model = new IndexTreeModel('test', toList(list), -1); model.splice([0], 0, [ { @@ -205,7 +205,7 @@ suite('IndexTreeModel', function () { test('hidden delete', function () { const list: ITreeNode[] = []; - const model = new IndexTreeModel('test', toSpliceable(list), -1); + const model = new IndexTreeModel('test', toList(list), -1); model.splice([0], 0, [ { @@ -230,7 +230,7 @@ suite('IndexTreeModel', function () { test('collapse', () => { const list: ITreeNode[] = []; - const model = new IndexTreeModel('test', toSpliceable(list), -1); + const model = new IndexTreeModel('test', toList(list), -1); model.splice([0], 0, [ { @@ -261,7 +261,7 @@ suite('IndexTreeModel', function () { test('expand', () => { const list: ITreeNode[] = []; - const model = new IndexTreeModel('test', toSpliceable(list), -1); + const model = new IndexTreeModel('test', toList(list), -1); model.splice([0], 0, [ { @@ -301,7 +301,7 @@ suite('IndexTreeModel', function () { test('collapse should recursively adjust visible count', function () { const list: ITreeNode[] = []; - const model = new IndexTreeModel('test', toSpliceable(list), -1); + const model = new IndexTreeModel('test', toList(list), -1); model.splice([0], 0, [ { @@ -334,7 +334,7 @@ suite('IndexTreeModel', function () { test('setCollapsible', () => { const list: ITreeNode[] = []; - const model = new IndexTreeModel('test', toSpliceable(list), -1); + const model = new IndexTreeModel('test', toList(list), -1); model.splice([0], 0, [ { @@ -403,7 +403,7 @@ suite('IndexTreeModel', function () { } }; - const model = new IndexTreeModel('test', toSpliceable(list), -1, { filter }); + const model = new IndexTreeModel('test', toList(list), -1, { filter }); model.splice([0], 0, [ { @@ -437,7 +437,7 @@ suite('IndexTreeModel', function () { } }; - const model = new IndexTreeModel('test', toSpliceable(list), -1, { filter }); + const model = new IndexTreeModel('test', toList(list), -1, { filter }); model.splice([0], 0, [ { @@ -460,7 +460,7 @@ suite('IndexTreeModel', function () { } }; - const model = new IndexTreeModel('test', toSpliceable(list), -1, { filter }); + const model = new IndexTreeModel('test', toList(list), -1, { filter }); model.splice([0], 0, [ { @@ -499,7 +499,7 @@ suite('IndexTreeModel', function () { } }; - const model = new IndexTreeModel('test', toSpliceable(list), 'root', { filter }); + const model = new IndexTreeModel('test', toList(list), 'root', { filter }); model.splice([0], 0, [ { @@ -545,7 +545,7 @@ suite('IndexTreeModel', function () { } }; - const model = new IndexTreeModel('test', toSpliceable(list), 'root', { filter }); + const model = new IndexTreeModel('test', toList(list), 'root', { filter }); model.splice([0], 0, [ { @@ -591,7 +591,7 @@ suite('IndexTreeModel', function () { } }; - const model = new IndexTreeModel('test', toSpliceable(list), 'root', { filter }); + const model = new IndexTreeModel('test', toList(list), 'root', { filter }); model.splice([0], 0, [ { @@ -639,7 +639,7 @@ suite('IndexTreeModel', function () { test('simple', function () { const list: IIndexTreeNode[] = []; - const model = new IndexTreeModel('test', toSpliceable(list), -1); + const model = new IndexTreeModel('test', toList(list), -1); model.splice([0], 0, [ { @@ -669,7 +669,7 @@ suite('IndexTreeModel', function () { } }; - const model = new IndexTreeModel('test', toSpliceable(list), -1, { filter }); + const model = new IndexTreeModel('test', toList(list), -1, { filter }); model.splice([0], 0, [ { @@ -701,7 +701,7 @@ suite('IndexTreeModel', function () { } }; - const model = new IndexTreeModel('test', toSpliceable(list), 'root', { filter }); + const model = new IndexTreeModel('test', toList(list), 'root', { filter }); model.splice([0], 0, [ { element: 'silver' }, @@ -735,7 +735,7 @@ suite('IndexTreeModel', function () { } }; - const model = new IndexTreeModel('test', toSpliceable(list), 'root', { filter }); + const model = new IndexTreeModel('test', toList(list), 'root', { filter }); model.splice([0], 0, [ { element: 'a', children: [{ element: 'aa' }] }, diff --git a/src/vs/base/test/browser/ui/tree/objectTreeModel.test.ts b/src/vs/base/test/browser/ui/tree/objectTreeModel.test.ts index f099f53d07..a66d9606dc 100644 --- a/src/vs/base/test/browser/ui/tree/objectTreeModel.test.ts +++ b/src/vs/base/test/browser/ui/tree/objectTreeModel.test.ts @@ -5,15 +5,16 @@ import * as assert from 'assert'; import { ITreeNode, ITreeFilter, TreeVisibility } from 'vs/base/browser/ui/tree/tree'; -import { ISpliceable } from 'vs/base/common/sequence'; import { ObjectTreeModel } from 'vs/base/browser/ui/tree/objectTreeModel'; +import { IList } from 'vs/base/browser/ui/tree/indexTreeModel'; -function toSpliceable(arr: T[]): ISpliceable { +function toList(arr: T[]): IList { return { splice(start: number, deleteCount: number, elements: T[]): void { // console.log(`splice (${start}, ${deleteCount}, ${elements.length} [${elements.join(', ')}] )`); // debugging arr.splice(start, deleteCount, ...elements); - } + }, + updateElementHeight() { } }; } @@ -25,7 +26,7 @@ suite('ObjectTreeModel', function () { test('ctor', () => { const list: ITreeNode[] = []; - const model = new ObjectTreeModel('test', toSpliceable(list)); + const model = new ObjectTreeModel('test', toList(list)); assert(model); assert.equal(list.length, 0); assert.equal(model.size, 0); @@ -33,7 +34,7 @@ suite('ObjectTreeModel', function () { test('flat', () => { const list: ITreeNode[] = []; - const model = new ObjectTreeModel('test', toSpliceable(list)); + const model = new ObjectTreeModel('test', toList(list)); model.setChildren(null, [ { element: 0 }, @@ -60,7 +61,7 @@ suite('ObjectTreeModel', function () { test('nested', () => { const list: ITreeNode[] = []; - const model = new ObjectTreeModel('test', toSpliceable(list)); + const model = new ObjectTreeModel('test', toList(list)); model.setChildren(null, [ { @@ -96,7 +97,7 @@ suite('ObjectTreeModel', function () { test('setChildren on collapsed node', () => { const list: ITreeNode[] = []; - const model = new ObjectTreeModel('test', toSpliceable(list)); + const model = new ObjectTreeModel('test', toList(list)); model.setChildren(null, [ { element: 0, collapsed: true } @@ -117,7 +118,7 @@ suite('ObjectTreeModel', function () { test('setChildren on expanded, unrevealed node', () => { const list: ITreeNode[] = []; - const model = new ObjectTreeModel('test', toSpliceable(list)); + const model = new ObjectTreeModel('test', toList(list)); model.setChildren(null, [ { @@ -143,7 +144,7 @@ suite('ObjectTreeModel', function () { test('collapse state is preserved with strict identity', () => { const list: ITreeNode[] = []; - const model = new ObjectTreeModel('test', toSpliceable(list), { collapseByDefault: true }); + const model = new ObjectTreeModel('test', toList(list), { collapseByDefault: true }); const data = [{ element: 'father', children: [{ element: 'child' }] }]; model.setChildren(null, data); @@ -173,7 +174,7 @@ suite('ObjectTreeModel', function () { let compare: (a: string, b: string) => number = (a, b) => a < b ? -1 : 1; const list: ITreeNode[] = []; - const model = new ObjectTreeModel('test', toSpliceable(list), { sorter: { compare(a, b) { return compare(a, b); } } }); + const model = new ObjectTreeModel('test', toList(list), { sorter: { compare(a, b) { return compare(a, b); } } }); const data = [ { element: 'cars', children: [{ element: 'sedan' }, { element: 'convertible' }, { element: 'compact' }] }, { element: 'airplanes', children: [{ element: 'passenger' }, { element: 'jet' }] }, @@ -188,7 +189,7 @@ suite('ObjectTreeModel', function () { let compare: (a: string, b: string) => number = () => 0; const list: ITreeNode[] = []; - const model = new ObjectTreeModel('test', toSpliceable(list), { sorter: { compare(a, b) { return compare(a, b); } } }); + const model = new ObjectTreeModel('test', toList(list), { sorter: { compare(a, b) { return compare(a, b); } } }); const data = [ { element: 'cars', children: [{ element: 'sedan' }, { element: 'convertible' }, { element: 'compact' }] }, { element: 'airplanes', children: [{ element: 'passenger' }, { element: 'jet' }] }, @@ -223,7 +224,7 @@ suite('ObjectTreeModel', function () { test('expandTo', () => { const list: ITreeNode[] = []; - const model = new ObjectTreeModel('test', toSpliceable(list), { collapseByDefault: true }); + const model = new ObjectTreeModel('test', toList(list), { collapseByDefault: true }); model.setChildren(null, [ { @@ -254,7 +255,7 @@ suite('ObjectTreeModel', function () { return fn(element) ? TreeVisibility.Visible : parentVisibility; } }; - const model = new ObjectTreeModel('test', toSpliceable(list), { filter }); + const model = new ObjectTreeModel('test', toList(list), { filter }); model.setChildren(null, [{ element: 'file', children: [{ element: 'hello' }] }]); assert.deepEqual(toArray(list), ['file', 'hello']); diff --git a/src/vs/code/browser/workbench/workbench-dev.html b/src/vs/code/browser/workbench/workbench-dev.html index 87e1f1f78e..02a8fd68ad 100644 --- a/src/vs/code/browser/workbench/workbench-dev.html +++ b/src/vs/code/browser/workbench/workbench-dev.html @@ -10,6 +10,9 @@ + + + @@ -72,7 +75,9 @@ 'rxjs/operator/mergeAll': `${window.location.origin}/static/remote/web/node_modules/rxjs/bundles/Rx.min.js?20`, 'rxjs/operator/filter': `${window.location.origin}/static/remote/web/node_modules/rxjs/bundles/Rx.min.js?21`, 'sanitize-html': `${window.location.origin}/static/remote/web/node_modules/sanitize-html/dist/sanitize-html.js`, - 'ansi_up': `${window.location.origin}/static/remote/web/node_modules/ansi_up/ansi_up.js` + 'ansi_up': `${window.location.origin}/static/remote/web/node_modules/ansi_up/ansi_up.js`, + 'iconv-lite-umd': `${window.location.origin}/static/remote/web/node_modules/iconv-lite-umd/lib/iconv-lite-umd.js`, + 'jschardet': `${window.location.origin}/static/remote/web/node_modules/jschardet/dist/jschardet.min.js`, } }; diff --git a/src/vs/code/browser/workbench/workbench.html b/src/vs/code/browser/workbench/workbench.html index a940fd4bfa..e1e6240a38 100644 --- a/src/vs/code/browser/workbench/workbench.html +++ b/src/vs/code/browser/workbench/workbench.html @@ -62,7 +62,9 @@ 'rxjs/observable/fromPromise': `${window.location.origin}/static/node_modules/rxjs/bundles/Rx.min.js?6`, 'rxjs/add/observable/fromPromise': `${window.location.origin}/static/node_modules/rxjs/bundles/Rx.min.js?7`, 'sanitize-html': `${window.location.origin}/static/node_modules/sanitize-html/dist/sanitize-html.js`, - 'ansi_up': `${window.location.origin}/static/node_modules/ansi_up/ansi_up.js` + 'ansi_up': `${window.location.origin}/static/node_modules/ansi_up/ansi_up.js`, + 'iconv-lite-umd': `${window.location.origin}/static/node_modules/iconv-lite-umd/lib/iconv-lite-umd.js`, + 'jschardet': `${window.location.origin}/static/node_modules/jschardet/dist/jschardet.min.js`, } }; diff --git a/src/vs/code/electron-browser/issue/issueReporter.html b/src/vs/code/electron-browser/issue/issueReporter.html index 695de78a4c..3a0cb4be74 100644 --- a/src/vs/code/electron-browser/issue/issueReporter.html +++ b/src/vs/code/electron-browser/issue/issueReporter.html @@ -1,17 +1,23 @@ + + + + + + + - - - - - - - - - - - + + + + + + diff --git a/src/vs/code/electron-browser/issue/issueReporter.js b/src/vs/code/electron-browser/issue/issueReporter.js index 479eaa2a47..6103f1f09a 100644 --- a/src/vs/code/electron-browser/issue/issueReporter.js +++ b/src/vs/code/electron-browser/issue/issueReporter.js @@ -6,7 +6,13 @@ //@ts-check 'use strict'; -const bootstrapWindow = require('../../../../bootstrap-window'); +/** + * @type {{ load: (modules: string[], resultCallback: (result, configuration: object) => any, options: object) => unknown }} + */ +const bootstrapWindow = (() => { + // @ts-ignore (defined in bootstrap-window.js) + return window.MonacoBootstrapWindow; +})(); bootstrapWindow.load(['vs/code/electron-browser/issue/issueReporterMain'], function (issueReporter, configuration) { issueReporter.startup(configuration); diff --git a/src/vs/code/electron-browser/processExplorer/processExplorer.html b/src/vs/code/electron-browser/processExplorer/processExplorer.html index 3ef3be23f8..517805abdb 100644 --- a/src/vs/code/electron-browser/processExplorer/processExplorer.html +++ b/src/vs/code/electron-browser/processExplorer/processExplorer.html @@ -1,17 +1,19 @@ + + + + + +
+ - - - - + + + + - -
- - - - - - \ No newline at end of file + + + diff --git a/src/vs/code/electron-browser/processExplorer/processExplorer.js b/src/vs/code/electron-browser/processExplorer/processExplorer.js index 390ce3a71b..7423dd8ebf 100644 --- a/src/vs/code/electron-browser/processExplorer/processExplorer.js +++ b/src/vs/code/electron-browser/processExplorer/processExplorer.js @@ -6,8 +6,14 @@ //@ts-check 'use strict'; -const bootstrapWindow = require('../../../../bootstrap-window'); +/** + * @type {{ load: (modules: string[], resultCallback: (result, configuration: object) => any, options: object) => unknown }} + */ +const bootstrapWindow = (() => { + // @ts-ignore (defined in bootstrap-window.js) + return window.MonacoBootstrapWindow; +})(); bootstrapWindow.load(['vs/code/electron-browser/processExplorer/processExplorerMain'], function (processExplorer, configuration) { processExplorer.startup(configuration.data); -}, { forceEnableDeveloperKeybindings: true }); \ No newline at end of file +}, { forceEnableDeveloperKeybindings: true }); diff --git a/src/vs/code/electron-browser/sharedProcess/sharedProcess.html b/src/vs/code/electron-browser/sharedProcess/sharedProcess.html index 26890a9fc6..07fd9bd047 100644 --- a/src/vs/code/electron-browser/sharedProcess/sharedProcess.html +++ b/src/vs/code/electron-browser/sharedProcess/sharedProcess.html @@ -11,7 +11,12 @@ Shared Process + + + + + - \ No newline at end of file + diff --git a/src/vs/code/electron-browser/sharedProcess/sharedProcess.js b/src/vs/code/electron-browser/sharedProcess/sharedProcess.js index fce40c4655..d145edc4d8 100644 --- a/src/vs/code/electron-browser/sharedProcess/sharedProcess.js +++ b/src/vs/code/electron-browser/sharedProcess/sharedProcess.js @@ -6,8 +6,21 @@ //@ts-check 'use strict'; -const bootstrap = require('../../../../bootstrap'); -const bootstrapWindow = require('../../../../bootstrap-window'); +/** + * @type {{ load: (modules: string[], resultCallback: (result, configuration: object) => any, options?: object) => unknown }} + */ +const bootstrapWindow = (() => { + // @ts-ignore (defined in bootstrap-window.js) + return window.MonacoBootstrapWindow; +})(); + +/** + * @type {{ avoidMonkeyPatchFromAppInsights: () => void; }} + */ +const bootstrap = (() => { + // @ts-ignore (defined in bootstrap.js) + return window.MonacoBootstrap; +})(); // Avoid Monkey Patches from Application Insights bootstrap.avoidMonkeyPatchFromAppInsights(); diff --git a/src/vs/code/electron-browser/workbench/workbench.html b/src/vs/code/electron-browser/workbench/workbench.html index bf03da6108..40737461d2 100644 --- a/src/vs/code/electron-browser/workbench/workbench.html +++ b/src/vs/code/electron-browser/workbench/workbench.html @@ -3,11 +3,16 @@ - + + + + + + diff --git a/src/vs/code/electron-browser/workbench/workbench.js b/src/vs/code/electron-browser/workbench/workbench.js index 383cbac088..c530869902 100644 --- a/src/vs/code/electron-browser/workbench/workbench.js +++ b/src/vs/code/electron-browser/workbench/workbench.js @@ -3,6 +3,8 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ +/// + //@ts-check 'use strict'; @@ -31,11 +33,17 @@ const perf = (function () { perf.mark('renderer/started'); -const bootstrapWindow = require('../../../../bootstrap-window'); - // Setup shell environment process['lazyEnv'] = getLazyEnv(); +/** + * @type {{ load: (modules: string[], resultCallback: (result, configuration: object) => any, options: object) => unknown }} + */ +const bootstrapWindow = (() => { + // @ts-ignore (defined in bootstrap-window.js) + return window.MonacoBootstrapWindow; +})(); + // Load workbench main JS, CSS and NLS all in parallel. This is an // optimization to prevent a waterfall of loading to happen, because // we know for a fact that workbench.desktop.main will depend on @@ -55,18 +63,20 @@ bootstrapWindow.load([ // @ts-ignore return require('vs/workbench/electron-browser/desktop.main').main(configuration); }); - }, { - removeDeveloperKeybindingsAfterLoad: true, - canModifyDOM: function (windowConfig) { - showPartsSplash(windowConfig); }, - beforeLoaderConfig: function (windowConfig, loaderConfig) { - loaderConfig.recordStats = true; - }, - beforeRequire: function () { - perf.mark('willLoadWorkbenchMain'); + { + removeDeveloperKeybindingsAfterLoad: true, + canModifyDOM: function (windowConfig) { + showPartsSplash(windowConfig); + }, + beforeLoaderConfig: function (windowConfig, loaderConfig) { + loaderConfig.recordStats = true; + }, + beforeRequire: function () { + perf.mark('willLoadWorkbenchMain'); + } } -}); +); /** * @param {{ @@ -84,7 +94,7 @@ function showPartsSplash(configuration) { let data; if (typeof configuration.partsSplashPath === 'string') { try { - data = JSON.parse(require('fs').readFileSync(configuration.partsSplashPath, 'utf8')); + data = JSON.parse(require.__$__nodeRequire('fs').readFileSync(configuration.partsSplashPath, 'utf8')); } catch (e) { // ignore } @@ -173,7 +183,7 @@ function showPartsSplash(configuration) { */ function getLazyEnv() { - const ipc = require('electron').ipcRenderer; + const ipc = require.__$__nodeRequire('electron').ipcRenderer; return new Promise(function (resolve) { const handle = setTimeout(function () { @@ -183,7 +193,7 @@ function getLazyEnv() { ipc.once('vscode:acceptShellEnv', function (event, shellEnv) { clearTimeout(handle); - bootstrapWindow.assign(process.env, shellEnv); + Object.assign(process.env, shellEnv); // @ts-ignore resolve(process.env); }); diff --git a/src/vs/code/electron-main/app.ts b/src/vs/code/electron-main/app.ts index 0c3f3e691d..4af3b8d4f2 100644 --- a/src/vs/code/electron-main/app.ts +++ b/src/vs/code/electron-main/app.ts @@ -80,6 +80,8 @@ import { INativeEnvironmentService } from 'vs/platform/environment/node/environm import { mnemonicButtonLabel, getPathLabel } from 'vs/base/common/labels'; import { WebviewMainService } from 'vs/platform/webview/electron-main/webviewMainService'; import { IWebviewManagerService } from 'vs/platform/webview/common/webviewManagerService'; +import { createServer, AddressInfo } from 'net'; +import { IOpenExtensionWindowResult } from 'vs/platform/debug/common/extensionHostDebug'; export class CodeApplication extends Disposable { private windowsMainService: IWindowsMainService | undefined; @@ -132,7 +134,11 @@ export class CodeApplication extends Disposable { // // !!! DO NOT CHANGE without consulting the documentation !!! // - // app.on('remote-get-guest-web-contents', event => event.preventDefault()); // TODO@Matt revisit this need for + app.on('remote-get-guest-web-contents', event => { + this.logService.trace('App#on(remote-get-guest-web-contents): prevented'); + + event.preventDefault(); + }); app.on('remote-require', (event, sender, module) => { this.logService.trace('App#on(remote-require): prevented'); @@ -172,11 +178,12 @@ export class CodeApplication extends Disposable { return false; } - if (source === 'data:text/html;charset=utf-8,%3C%21DOCTYPE%20html%3E%0D%0A%3Chtml%20lang%3D%22en%22%20style%3D%22width%3A%20100%25%3B%20height%3A%20100%25%22%3E%0D%0A%3Chead%3E%0D%0A%3Ctitle%3EVirtual%20Document%3C%2Ftitle%3E%0D%0A%3C%2Fhead%3E%0D%0A%3Cbody%20style%3D%22margin%3A%200%3B%20overflow%3A%20hidden%3B%20width%3A%20100%25%3B%20height%3A%20100%25%22%20role%3D%22document%22%3E%0D%0A%3C%2Fbody%3E%0D%0A%3C%2Fhtml%3E') { - return true; + const uri = URI.parse(source); + if (uri.scheme === Schemas.vscodeWebview) { + return uri.path === '/index.html' || uri.path === '/electron-browser/index.html'; } - const srcUri = URI.parse(source).fsPath.toLowerCase(); + const srcUri = uri.fsPath.toLowerCase(); const rootUri = URI.file(this.environmentService.appRoot).fsPath.toLowerCase(); return srcUri.startsWith(rootUri + sep); @@ -831,20 +838,93 @@ class ElectronExtensionHostDebugBroadcastChannel extends ExtensionHost super(); } - async call(ctx: TContext, command: string, arg?: any): Promise { + call(ctx: TContext, command: string, arg?: any): Promise { if (command === 'openExtensionDevelopmentHostWindow') { - const env = arg[1]; - const pargs = parseArgs(arg[0], OPTIONS); - const extDevPaths = pargs.extensionDevelopmentPath; - if (extDevPaths) { - this.windowsMainService.openExtensionDevelopmentHostWindow(extDevPaths, { - context: OpenContext.API, - cli: pargs, - userEnv: Object.keys(env).length > 0 ? env : undefined - }); - } + return this.openExtensionDevelopmentHostWindow(arg[0], arg[1], arg[2]); } else { return super.call(ctx, command, arg); } } + + private async openExtensionDevelopmentHostWindow(args: string[], env: IProcessEnvironment, debugRenderer: boolean): Promise { + const pargs = parseArgs(args, OPTIONS); + const extDevPaths = pargs.extensionDevelopmentPath; + if (!extDevPaths) { + return {}; + } + + const [codeWindow] = this.windowsMainService.openExtensionDevelopmentHostWindow(extDevPaths, { + context: OpenContext.API, + cli: pargs, + userEnv: Object.keys(env).length > 0 ? env : undefined + }); + + if (!debugRenderer) { + return {}; + } + + const debug = codeWindow.win.webContents.debugger; + + let listeners = debug.isAttached() ? Infinity : 0; + const server = createServer(listener => { + if (listeners++ === 0) { + debug.attach(); + } + + let closed = false; + const writeMessage = (message: object) => { + if (!closed) { // in case sendCommand promises settle after closed + listener.write(JSON.stringify(message) + '\0'); // null-delimited, CDP-compatible + } + }; + + const onMessage = (_event: Event, method: string, params: unknown, sessionId?: string) => + writeMessage(({ method, params, sessionId })); + + codeWindow.win.on('close', () => { + debug.removeListener('message', onMessage); + listener.end(); + closed = true; + }); + + debug.addListener('message', onMessage); + + let buf = Buffer.alloc(0); + listener.on('data', data => { + buf = Buffer.concat([buf, data]); + for (let delimiter = buf.indexOf(0); delimiter !== -1; delimiter = buf.indexOf(0)) { + let data: { id: number; sessionId: string; params: {} }; + try { + const contents = buf.slice(0, delimiter).toString('utf8'); + buf = buf.slice(delimiter + 1); + data = JSON.parse(contents); + } catch (e) { + console.error('error reading cdp line', e); + } + + // depends on a new API for which electron.d.ts has not been updated: + // @ts-ignore + debug.sendCommand(data.method, data.params, data.sessionId) + .then((result: object) => writeMessage({ id: data.id, sessionId: data.sessionId, result })) + .catch((error: Error) => writeMessage({ id: data.id, sessionId: data.sessionId, error: { code: 0, message: error.message } })); + } + }); + + listener.on('error', err => { + console.error('error on cdp pipe:', err); + }); + + listener.on('close', () => { + closed = true; + if (--listeners === 0) { + debug.detach(); + } + }); + }); + + await new Promise(r => server.listen(0, r)); + codeWindow.win.on('close', () => server.close()); + + return { rendererDebugPort: (server.address() as AddressInfo).port }; + } } diff --git a/src/vs/code/electron-main/auth.ts b/src/vs/code/electron-main/auth.ts index a5f6df24ed..aaa7fb61bf 100644 --- a/src/vs/code/electron-main/auth.ts +++ b/src/vs/code/electron-main/auth.ts @@ -59,8 +59,8 @@ export class ProxyAuthHandler extends Disposable { title: 'VS Code', webPreferences: { nodeIntegration: true, - webviewTag: true, enableWebSQL: false, + enableRemoteModule: false, nativeWindowOpen: true } }; diff --git a/src/vs/code/electron-main/sharedProcess.ts b/src/vs/code/electron-main/sharedProcess.ts index 6122a5f400..64bb191abd 100644 --- a/src/vs/code/electron-main/sharedProcess.ts +++ b/src/vs/code/electron-main/sharedProcess.ts @@ -47,6 +47,7 @@ export class SharedProcess implements ISharedProcess { nodeIntegration: true, webgl: false, enableWebSQL: false, + enableRemoteModule: false, nativeWindowOpen: true, disableBlinkFeatures: 'Auxclick' // do NOT change, allows us to identify this window as shared-process in the process explorer } diff --git a/src/vs/code/electron-main/window.ts b/src/vs/code/electron-main/window.ts index 4602cd8fff..45d7886ecf 100644 --- a/src/vs/code/electron-main/window.ts +++ b/src/vs/code/electron-main/window.ts @@ -36,8 +36,6 @@ import { ILifecycleMainService } from 'vs/platform/lifecycle/electron-main/lifec import { IStorageMainService } from 'vs/platform/storage/node/storageMainService'; import { IFileService } from 'vs/platform/files/common/files'; -const RUN_TEXTMATE_IN_WORKER = false; - export interface IWindowCreationOptions { state: IWindowState; extensionDevelopmentPath?: string[]; @@ -168,9 +166,9 @@ export class CodeWindow extends Disposable implements ICodeWindow { webPreferences: { preload: URI.parse(this.doGetPreloadUrl()).fsPath, nodeIntegration: true, - nodeIntegrationInWorker: RUN_TEXTMATE_IN_WORKER, webviewTag: true, enableWebSQL: false, + enableRemoteModule: false, nativeWindowOpen: true } }; @@ -809,7 +807,14 @@ export class CodeWindow extends Disposable implements ICodeWindow { // fullscreen gets special treatment if (this.isFullScreen) { - const display = screen.getDisplayMatching(this.getBounds()); + let display: Display | undefined; + try { + display = screen.getDisplayMatching(this.getBounds()); + } catch (error) { + // Electron has weird conditions under which it throws errors + // e.g. https://github.com/microsoft/vscode/issues/100334 when + // large numbers are passed in + } const defaultState = defaultWindowState(); @@ -976,8 +981,17 @@ export class CodeWindow extends Disposable implements ICodeWindow { } // Multi Monitor (non-fullscreen): ensure window is within display bounds - const display = screen.getDisplayMatching({ x: state.x, y: state.y, width: state.width, height: state.height }); - const displayWorkingArea = this.getWorkingArea(display); + let display: Display | undefined; + let displayWorkingArea: Rectangle | undefined; + try { + display = screen.getDisplayMatching({ x: state.x, y: state.y, width: state.width, height: state.height }); + displayWorkingArea = this.getWorkingArea(display); + } catch (error) { + // Electron has weird conditions under which it throws errors + // e.g. https://github.com/microsoft/vscode/issues/100334 when + // large numbers are passed in + } + if ( display && // we have a display matching the desired bounds displayWorkingArea && // we have valid working area bounds diff --git a/src/vs/code/node/cli.ts b/src/vs/code/node/cli.ts index 589a17936d..86a9398925 100644 --- a/src/vs/code/node/cli.ts +++ b/src/vs/code/node/cli.ts @@ -43,7 +43,7 @@ export async function main(argv: string[]): Promise { // Help if (args.help) { - const executable = `${product.applicationName}${os.platform() === 'win32' ? '.exe' : ''}`; + const executable = `${product.applicationName}${isWindows ? '.exe' : ''}`; console.log(buildHelpMessage(product.nameLong, executable, product.version, OPTIONS)); } diff --git a/src/vs/code/node/cliProcessMain.ts b/src/vs/code/node/cliProcessMain.ts index 8e5d367e70..8907917c5c 100644 --- a/src/vs/code/node/cliProcessMain.ts +++ b/src/vs/code/node/cliProcessMain.ts @@ -36,7 +36,7 @@ import { isPromiseCanceledError } from 'vs/base/common/errors'; import { areSameExtensions, adoptToGalleryExtensionId, getGalleryExtensionId } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; import { URI } from 'vs/base/common/uri'; import { getManifest } from 'vs/platform/extensionManagement/node/extensionManagementUtil'; -import { IExtensionManifest, ExtensionType, isLanguagePackExtension } from 'vs/platform/extensions/common/extensions'; +import { IExtensionManifest, ExtensionType, isLanguagePackExtension, EXTENSION_CATEGORIES } from 'vs/platform/extensions/common/extensions'; import { CancellationToken } from 'vs/base/common/cancellation'; import { LocalizationsService } from 'vs/platform/localizations/node/localizations'; import { Schemas } from 'vs/base/common/network'; @@ -102,8 +102,7 @@ export class Main { private async listExtensions(showVersions: boolean, category?: string): Promise { let extensions = await this.extensionManagementService.getInstalled(ExtensionType.User); - // TODO: we should save this array in a common place so that the command and extensionQuery can use it that way changing it is easier - const categories = ['"programming languages"', 'snippets', 'linters', 'themes', 'debuggers', 'formatters', 'keymaps', '"scm providers"', 'other', '"extension packs"', '"language packs"']; + const categories = EXTENSION_CATEGORIES.map(c => c.toLowerCase()); if (category && category !== '') { if (categories.indexOf(category.toLowerCase()) < 0) { console.log('Invalid category please enter a valid category. To list valid categories run --category without a category specified'); diff --git a/src/vs/editor/browser/controller/coreCommands.ts b/src/vs/editor/browser/controller/coreCommands.ts index b662767c19..4e55e76172 100644 --- a/src/vs/editor/browser/controller/coreCommands.ts +++ b/src/vs/editor/browser/controller/coreCommands.ts @@ -7,7 +7,7 @@ import * as nls from 'vs/nls'; import { KeyCode, KeyMod } from 'vs/base/common/keyCodes'; import * as types from 'vs/base/common/types'; import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; -import { Command, EditorCommand, ICommandOptions, registerEditorCommand } from 'vs/editor/browser/editorExtensions'; +import { Command, EditorCommand, ICommandOptions, registerEditorCommand, MultiCommand, UndoCommand, RedoCommand, SelectAllCommand } from 'vs/editor/browser/editorExtensions'; import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService'; import { ColumnSelection, IColumnSelectResult } from 'vs/editor/common/controller/cursorColumnSelection'; import { CursorState, EditOperationType, IColumnSelectData, PartialCursorState } from 'vs/editor/common/controller/cursorCommon'; @@ -20,7 +20,6 @@ import { Range } from 'vs/editor/common/core/range'; import { Handler, ScrollType } from 'vs/editor/common/editorCommon'; import { EditorContextKeys } from 'vs/editor/common/editorContextKeys'; import { VerticalRevealType } from 'vs/editor/common/view/viewEvents'; -import { MenuId } from 'vs/platform/actions/common/actions'; import { ICommandHandlerDescription } from 'vs/platform/commands/common/commands'; import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; @@ -276,6 +275,48 @@ export namespace RevealLine_ { }; } +abstract class EditorOrNativeTextInputCommand { + + constructor(target: MultiCommand) { + // 1. handle case when focus is in editor. + target.addImplementation(10000, (accessor: ServicesAccessor, args: any) => { + // Only if editor text focus (i.e. not if editor has widget focus). + const focusedEditor = accessor.get(ICodeEditorService).getFocusedCodeEditor(); + if (focusedEditor && focusedEditor.hasTextFocus()) { + this.runEditorCommand(accessor, focusedEditor, args); + return true; + } + return false; + }); + + // 2. handle case when focus is in some other `input` / `textarea`. + target.addImplementation(1000, (accessor: ServicesAccessor, args: any) => { + // Only if focused on an element that allows for entering text + const activeElement = document.activeElement; + if (activeElement && ['input', 'textarea'].indexOf(activeElement.tagName.toLowerCase()) >= 0) { + this.runDOMCommand(); + return true; + } + return false; + }); + + // 3. (default) handle case when focus is somewhere else. + target.addImplementation(0, (accessor: ServicesAccessor, args: any) => { + // Redirecting to active editor + const activeEditor = accessor.get(ICodeEditorService).getActiveCodeEditor(); + if (activeEditor) { + activeEditor.focus(); + this.runEditorCommand(accessor, activeEditor, args); + return true; + } + return false; + }); + } + + public abstract runDOMCommand(): void; + public abstract runEditorCommand(accessor: ServicesAccessor | null, editor: ICodeEditor, args: any): void; +} + export namespace CoreNavigationCommands { class BaseMoveToCommand extends CoreEditorCommand { @@ -1594,25 +1635,32 @@ export namespace CoreNavigationCommands { } }); - export const SelectAll: CoreEditorCommand = registerEditorCommand(new class extends CoreEditorCommand { + export const SelectAll = new class extends EditorOrNativeTextInputCommand { constructor() { - super({ - id: 'selectAll', - precondition: undefined - }); + super(SelectAllCommand); + } + public runDOMCommand(): void { + document.execCommand('selectAll'); + } + public runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args: any): void { + const viewModel = editor._getViewModel(); + if (!viewModel) { + // the editor has no view => has no cursors + return; + } + this.runCoreEditorCommand(viewModel, args); } - public runCoreEditorCommand(viewModel: IViewModel, args: any): void { viewModel.model.pushStackElement(); viewModel.setCursorStates( - args.source, + 'keyboard', CursorChangeReason.Explicit, [ CursorMoveCommands.selectAll(viewModel, viewModel.getPrimaryCursorState()) ] ); } - }); + }(); export const SetSelection: CoreEditorCommand = registerEditorCommand(new class extends CoreEditorCommand { constructor() { @@ -1655,97 +1703,6 @@ registerColumnSelection(CoreNavigationCommands.CursorColumnSelectPageUp.id, KeyM registerColumnSelection(CoreNavigationCommands.CursorColumnSelectDown.id, KeyMod.Shift | KeyCode.DownArrow); registerColumnSelection(CoreNavigationCommands.CursorColumnSelectPageDown.id, KeyMod.Shift | KeyCode.PageDown); -/** - * A command that will: - * 1. invoke a command on the focused editor. - * 2. otherwise, invoke a browser built-in command on the `activeElement`. - * 3. otherwise, invoke a command on the workbench active editor. - */ -abstract class EditorOrNativeTextInputCommand extends Command { - - public runCommand(accessor: ServicesAccessor, args: any): void { - - const focusedEditor = accessor.get(ICodeEditorService).getFocusedCodeEditor(); - // Only if editor text focus (i.e. not if editor has widget focus). - if (focusedEditor && focusedEditor.hasTextFocus()) { - return this.runEditorCommand(accessor, focusedEditor, args); - } - - // Ignore this action when user is focused on an element that allows for entering text - const activeElement = document.activeElement; - if (activeElement && ['input', 'textarea'].indexOf(activeElement.tagName.toLowerCase()) >= 0) { - return this.runDOMCommand(); - } - - // Redirecting to active editor - const activeEditor = accessor.get(ICodeEditorService).getActiveCodeEditor(); - if (activeEditor) { - activeEditor.focus(); - return this.runEditorCommand(accessor, activeEditor, args); - } - } - - public abstract runDOMCommand(): void; - public abstract runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args: any): void; -} - -class SelectAllCommand extends EditorOrNativeTextInputCommand { - constructor() { - super({ - id: 'editor.action.selectAll', - precondition: EditorContextKeys.textInputFocus, - kbOpts: { - weight: CORE_WEIGHT, - kbExpr: null, - primary: KeyMod.CtrlCmd | KeyCode.KEY_A - }, - menuOpts: [{ - menuId: MenuId.MenubarEditMenu, // {{SQL CARBON EDIT}} - Put this in the edit menu since we disabled the selection menu - group: '4_find_global', // {{SQL CARBON EDIT}} - Put this in the edit menu since we disabled the selection menu - title: nls.localize({ key: 'miSelectAll', comment: ['&& denotes a mnemonic'] }, "&&Select All"), - order: 1 - }, { - menuId: MenuId.CommandPalette, - group: '', - title: nls.localize('selectAll', "Select All"), - order: 1 - }] - }); - } - public runDOMCommand(): void { - document.execCommand('selectAll'); - } - public runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args: any): void { - args = args || {}; - args.source = 'keyboard'; - CoreNavigationCommands.SelectAll.runEditorCommand(accessor, editor, args); - } -} - -class UndoCommand extends EditorOrNativeTextInputCommand { - public runDOMCommand(): void { - document.execCommand('undo'); - } - public runEditorCommand(accessor: ServicesAccessor | null, editor: ICodeEditor, args: any): void { - if (!editor.hasModel() || editor.getOption(EditorOption.readOnly) === true) { - return; - } - editor.getModel().undo(); - } -} - -class RedoCommand extends EditorOrNativeTextInputCommand { - public runDOMCommand(): void { - document.execCommand('redo'); - } - public runEditorCommand(accessor: ServicesAccessor | null, editor: ICodeEditor, args: any): void { - if (!editor.hasModel() || editor.getOption(EditorOption.readOnly) === true) { - return; - } - editor.getModel().redo(); - } -} - function registerCommand(command: T): T { command.register(); return command; @@ -1881,53 +1838,35 @@ export namespace CoreEditingCommands { } }); - export const Undo: UndoCommand = registerCommand(new UndoCommand({ - id: 'undo', - precondition: EditorContextKeys.writable, - kbOpts: { - weight: CORE_WEIGHT, - kbExpr: EditorContextKeys.textInputFocus, - primary: KeyMod.CtrlCmd | KeyCode.KEY_Z - }, - menuOpts: [{ - menuId: MenuId.MenubarEditMenu, - group: '1_do', - title: nls.localize({ key: 'miUndo', comment: ['&& denotes a mnemonic'] }, "&&Undo"), - order: 1 - }, { - menuId: MenuId.CommandPalette, - group: '', - title: nls.localize('undo', "Undo"), - order: 1 - }] - })); + export const Undo = new class extends EditorOrNativeTextInputCommand { + constructor() { + super(UndoCommand); + } + public runDOMCommand(): void { + document.execCommand('undo'); + } + public runEditorCommand(accessor: ServicesAccessor | null, editor: ICodeEditor, args: any): void { + if (!editor.hasModel() || editor.getOption(EditorOption.readOnly) === true) { + return; + } + editor.getModel().undo(); + } + }(); - export const DefaultUndo: UndoCommand = registerCommand(new UndoCommand({ id: 'default:undo', precondition: EditorContextKeys.writable })); - - export const Redo: RedoCommand = registerCommand(new RedoCommand({ - id: 'redo', - precondition: EditorContextKeys.writable, - kbOpts: { - weight: CORE_WEIGHT, - kbExpr: EditorContextKeys.textInputFocus, - primary: KeyMod.CtrlCmd | KeyCode.KEY_Y, - secondary: [KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KEY_Z], - mac: { primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KEY_Z } - }, - menuOpts: [{ - menuId: MenuId.MenubarEditMenu, - group: '1_do', - title: nls.localize({ key: 'miRedo', comment: ['&& denotes a mnemonic'] }, "&&Redo"), - order: 2 - }, { - menuId: MenuId.CommandPalette, - group: '', - title: nls.localize('redo', "Redo"), - order: 1 - }] - })); - - export const DefaultRedo: RedoCommand = registerCommand(new RedoCommand({ id: 'default:redo', precondition: EditorContextKeys.writable })); + export const Redo = new class extends EditorOrNativeTextInputCommand { + constructor() { + super(RedoCommand); + } + public runDOMCommand(): void { + document.execCommand('redo'); + } + public runEditorCommand(accessor: ServicesAccessor | null, editor: ICodeEditor, args: any): void { + if (!editor.hasModel() || editor.getOption(EditorOption.readOnly) === true) { + return; + } + editor.getModel().redo(); + } + }(); } /** @@ -1956,8 +1895,6 @@ class EditorHandlerCommand extends Command { } } -registerCommand(new SelectAllCommand()); - function registerOverwritableCommand(handlerId: string, description?: ICommandHandlerDescription): void { registerCommand(new EditorHandlerCommand('default:' + handlerId, handlerId)); registerCommand(new EditorHandlerCommand(handlerId, handlerId, description)); diff --git a/src/vs/editor/browser/editorExtensions.ts b/src/vs/editor/browser/editorExtensions.ts index 021d977f8f..421821cfe4 100644 --- a/src/vs/editor/browser/editorExtensions.ts +++ b/src/vs/editor/browser/editorExtensions.ts @@ -3,6 +3,7 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ +import * as nls from 'vs/nls'; import { IPosition } from 'vs/base/browser/ui/contextview/contextview'; import { illegalArgument } from 'vs/base/common/errors'; import { URI } from 'vs/base/common/uri'; @@ -17,11 +18,13 @@ import { MenuId, MenuRegistry } from 'vs/platform/actions/common/actions'; import { CommandsRegistry, ICommandHandlerDescription } from 'vs/platform/commands/common/commands'; import { ContextKeyExpr, IContextKeyService, ContextKeyExpression } from 'vs/platform/contextkey/common/contextkey'; import { IConstructorSignature1, ServicesAccessor as InstantiationServicesAccessor, BrandedService } from 'vs/platform/instantiation/common/instantiation'; -import { IKeybindings, KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry'; +import { IKeybindings, KeybindingsRegistry, KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry'; import { Registry } from 'vs/platform/registry/common/platform'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { withNullAsUndefined, assertType } from 'vs/base/common/types'; import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IDisposable } from 'vs/base/common/lifecycle'; +import { KeyMod, KeyCode } from 'vs/base/common/keyCodes'; export type ServicesAccessor = InstantiationServicesAccessor; @@ -139,6 +142,66 @@ export abstract class Command { //#endregion Command +//#region MultiplexingCommand + +/** + * Potential override for a command. + * + * @return `true` if the command was successfully run. This stops other overrides from being executed. + */ +export type CommandImplementation = (accessor: ServicesAccessor, args: unknown) => boolean; + +export class MultiCommand extends Command { + + private readonly _implementations: [number, CommandImplementation][] = []; + + /** + * A higher priority gets to be looked at first + */ + public addImplementation(priority: number, implementation: CommandImplementation): IDisposable { + this._implementations.push([priority, implementation]); + this._implementations.sort((a, b) => b[0] - a[0]); + return { + dispose: () => { + for (let i = 0; i < this._implementations.length; i++) { + if (this._implementations[i][1] === implementation) { + this._implementations.splice(i, 1); + return; + } + } + } + }; + } + + public runCommand(accessor: ServicesAccessor, args: any): void | Promise { + for (const impl of this._implementations) { + if (impl[1](accessor, args)) { + return; + } + } + } +} + +//#endregion + +/** + * A command that delegates to another command's implementation. + * + * This lets different commands be registered but share the same implementation + */ +export class ProxyCommand extends Command { + constructor( + private readonly command: Command, + opts: ICommandOptions + ) { + super(opts); + } + + public runCommand(accessor: ServicesAccessor, args: any): void | Promise { + return this.command.runCommand(accessor, args); + } +} + //#region EditorCommand export interface IContributionCommandOptions extends ICommandOptions { @@ -379,8 +442,10 @@ export function registerEditorCommand(editorCommand: T) return editorCommand; } -export function registerEditorAction(ctor: { new(): EditorAction; }): void { - EditorContributionRegistry.INSTANCE.registerEditorAction(new ctor()); +export function registerEditorAction(ctor: { new(): T; }): T { + const action = new ctor(); + EditorContributionRegistry.INSTANCE.registerEditorAction(action); + return action; } export function registerInstantiatedEditorAction(editorAction: EditorAction): void { @@ -475,3 +540,75 @@ class EditorContributionRegistry { } Registry.add(Extensions.EditorCommonContributions, EditorContributionRegistry.INSTANCE); + +function registerCommand(command: T): T { + command.register(); + return command; +} + +export const UndoCommand = registerCommand(new MultiCommand({ + id: 'undo', + precondition: undefined, + kbOpts: { + weight: KeybindingWeight.EditorCore, + primary: KeyMod.CtrlCmd | KeyCode.KEY_Z + }, + menuOpts: [{ + menuId: MenuId.MenubarEditMenu, + group: '1_do', + title: nls.localize({ key: 'miUndo', comment: ['&& denotes a mnemonic'] }, "&&Undo"), + order: 1 + }, { + menuId: MenuId.CommandPalette, + group: '', + title: nls.localize('undo', "Undo"), + order: 1 + }] +})); + +registerCommand(new ProxyCommand(UndoCommand, { id: 'default:undo', precondition: undefined })); + +export const RedoCommand = registerCommand(new MultiCommand({ + id: 'redo', + precondition: undefined, + kbOpts: { + weight: KeybindingWeight.EditorCore, + primary: KeyMod.CtrlCmd | KeyCode.KEY_Y, + secondary: [KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KEY_Z], + mac: { primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KEY_Z } + }, + menuOpts: [{ + menuId: MenuId.MenubarEditMenu, + group: '1_do', + title: nls.localize({ key: 'miRedo', comment: ['&& denotes a mnemonic'] }, "&&Redo"), + order: 2 + }, { + menuId: MenuId.CommandPalette, + group: '', + title: nls.localize('redo', "Redo"), + order: 1 + }] +})); + +registerCommand(new ProxyCommand(RedoCommand, { id: 'default:redo', precondition: undefined })); + +export const SelectAllCommand = registerCommand(new MultiCommand({ + id: 'editor.action.selectAll', + precondition: undefined, + kbOpts: { + weight: KeybindingWeight.EditorCore, + kbExpr: null, + primary: KeyMod.CtrlCmd | KeyCode.KEY_A + }, + menuOpts: [{ + menuId: MenuId.MenubarEditMenu, // {{SQL CARBON EDIT}} - Put this in the edit menu since we disabled the selection menu + group: '4_find_global', // {{SQL CARBON EDIT}} - Put this in the edit menu since we disabled the selection menu + title: nls.localize({ key: 'miSelectAll', comment: ['&& denotes a mnemonic'] }, "&&Select All"), + order: 1 + }, { + menuId: MenuId.CommandPalette, + group: '', + title: nls.localize('selectAll', "Select All"), + order: 1 + }] +})); diff --git a/src/vs/editor/browser/view/viewController.ts b/src/vs/editor/browser/view/viewController.ts index f064cf963d..1ea9ff8a86 100644 --- a/src/vs/editor/browser/view/viewController.ts +++ b/src/vs/editor/browser/view/viewController.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { IKeyboardEvent } from 'vs/base/browser/keyboardEvent'; -import { CoreEditorCommand, CoreNavigationCommands } from 'vs/editor/browser/controller/coreCommands'; +import { CoreNavigationCommands } from 'vs/editor/browser/controller/coreCommands'; import { IEditorMouseEvent, IPartialEditorMouseEvent } from 'vs/editor/browser/editorBrowser'; import { ViewUserInputEvents } from 'vs/editor/browser/view/viewUserInputEvents'; import { Position } from 'vs/editor/common/core/position'; @@ -35,8 +35,6 @@ export interface IMouseDispatchData { } export interface ICommandDelegate { - executeEditorCommand(editorCommand: CoreEditorCommand, args: any): void; - paste(text: string, pasteOnNewLine: boolean, multicursorText: string[] | null, mode: string | null): void; type(text: string): void; replacePreviousChar(text: string, replaceCharCnt: number): void; @@ -64,11 +62,6 @@ export class ViewController { this.commandDelegate = commandDelegate; } - private _execMouseCommand(editorCommand: CoreEditorCommand, args: any): void { - args.source = 'mouse'; - this.commandDelegate.executeEditorCommand(editorCommand, args); - } - public paste(text: string, pasteOnNewLine: boolean, multicursorText: string[] | null, mode: string | null): void { this.commandDelegate.paste(text, pasteOnNewLine, multicursorText, mode); } @@ -94,7 +87,7 @@ export class ViewController { } public setSelection(modelSelection: Selection): void { - this.commandDelegate.executeEditorCommand(CoreNavigationCommands.SetSelection, { + CoreNavigationCommands.SetSelection.runCoreEditorCommand(this.viewModel, { source: 'keyboard', selection: modelSelection }); @@ -214,22 +207,24 @@ export class ViewController { private _usualArgs(viewPosition: Position) { viewPosition = this._validateViewColumn(viewPosition); return { + source: 'mouse', position: this._convertViewToModelPosition(viewPosition), viewPosition: viewPosition }; } public moveTo(viewPosition: Position): void { - this._execMouseCommand(CoreNavigationCommands.MoveTo, this._usualArgs(viewPosition)); + CoreNavigationCommands.MoveTo.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition)); } private _moveToSelect(viewPosition: Position): void { - this._execMouseCommand(CoreNavigationCommands.MoveToSelect, this._usualArgs(viewPosition)); + CoreNavigationCommands.MoveToSelect.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition)); } private _columnSelect(viewPosition: Position, mouseColumn: number, doColumnSelect: boolean): void { viewPosition = this._validateViewColumn(viewPosition); - this._execMouseCommand(CoreNavigationCommands.ColumnSelect, { + CoreNavigationCommands.ColumnSelect.runCoreEditorCommand(this.viewModel, { + source: 'mouse', position: this._convertViewToModelPosition(viewPosition), viewPosition: viewPosition, mouseColumn: mouseColumn, @@ -239,7 +234,8 @@ export class ViewController { private _createCursor(viewPosition: Position, wholeLine: boolean): void { viewPosition = this._validateViewColumn(viewPosition); - this._execMouseCommand(CoreNavigationCommands.CreateCursor, { + CoreNavigationCommands.CreateCursor.runCoreEditorCommand(this.viewModel, { + source: 'mouse', position: this._convertViewToModelPosition(viewPosition), viewPosition: viewPosition, wholeLine: wholeLine @@ -247,39 +243,39 @@ export class ViewController { } private _lastCursorMoveToSelect(viewPosition: Position): void { - this._execMouseCommand(CoreNavigationCommands.LastCursorMoveToSelect, this._usualArgs(viewPosition)); + CoreNavigationCommands.LastCursorMoveToSelect.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition)); } private _wordSelect(viewPosition: Position): void { - this._execMouseCommand(CoreNavigationCommands.WordSelect, this._usualArgs(viewPosition)); + CoreNavigationCommands.WordSelect.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition)); } private _wordSelectDrag(viewPosition: Position): void { - this._execMouseCommand(CoreNavigationCommands.WordSelectDrag, this._usualArgs(viewPosition)); + CoreNavigationCommands.WordSelectDrag.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition)); } private _lastCursorWordSelect(viewPosition: Position): void { - this._execMouseCommand(CoreNavigationCommands.LastCursorWordSelect, this._usualArgs(viewPosition)); + CoreNavigationCommands.LastCursorWordSelect.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition)); } private _lineSelect(viewPosition: Position): void { - this._execMouseCommand(CoreNavigationCommands.LineSelect, this._usualArgs(viewPosition)); + CoreNavigationCommands.LineSelect.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition)); } private _lineSelectDrag(viewPosition: Position): void { - this._execMouseCommand(CoreNavigationCommands.LineSelectDrag, this._usualArgs(viewPosition)); + CoreNavigationCommands.LineSelectDrag.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition)); } private _lastCursorLineSelect(viewPosition: Position): void { - this._execMouseCommand(CoreNavigationCommands.LastCursorLineSelect, this._usualArgs(viewPosition)); + CoreNavigationCommands.LastCursorLineSelect.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition)); } private _lastCursorLineSelectDrag(viewPosition: Position): void { - this._execMouseCommand(CoreNavigationCommands.LastCursorLineSelectDrag, this._usualArgs(viewPosition)); + CoreNavigationCommands.LastCursorLineSelectDrag.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition)); } private _selectAll(): void { - this._execMouseCommand(CoreNavigationCommands.SelectAll, {}); + CoreNavigationCommands.SelectAll.runCoreEditorCommand(this.viewModel, { source: 'mouse' }); } // ---------------------- diff --git a/src/vs/editor/browser/widget/codeEditorWidget.ts b/src/vs/editor/browser/widget/codeEditorWidget.ts index da581ce364..2ebeae1986 100644 --- a/src/vs/editor/browser/widget/codeEditorWidget.ts +++ b/src/vs/editor/browser/widget/codeEditorWidget.ts @@ -15,7 +15,6 @@ import { hash } from 'vs/base/common/hash'; import { Disposable, IDisposable, dispose } from 'vs/base/common/lifecycle'; import { Schemas } from 'vs/base/common/network'; import { Configuration } from 'vs/editor/browser/config/configuration'; -import { CoreEditorCommand } from 'vs/editor/browser/controller/coreCommands'; import * as editorBrowser from 'vs/editor/browser/editorBrowser'; import { EditorExtensionsRegistry, IEditorContributionDescription } from 'vs/editor/browser/editorExtensions'; import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService'; @@ -1552,9 +1551,6 @@ export class CodeEditorWidget extends Disposable implements editorBrowser.ICodeE let commandDelegate: ICommandDelegate; if (this.isSimpleWidget) { commandDelegate = { - executeEditorCommand: (editorCommand: CoreEditorCommand, args: any): void => { - editorCommand.runCoreEditorCommand(viewModel, args); - }, paste: (text: string, pasteOnNewLine: boolean, multicursorText: string[] | null, mode: string | null) => { this._paste('keyboard', text, pasteOnNewLine, multicursorText, mode); }, @@ -1576,9 +1572,6 @@ export class CodeEditorWidget extends Disposable implements editorBrowser.ICodeE }; } else { commandDelegate = { - executeEditorCommand: (editorCommand: CoreEditorCommand, args: any): void => { - editorCommand.runCoreEditorCommand(viewModel, args); - }, paste: (text: string, pasteOnNewLine: boolean, multicursorText: string[] | null, mode: string | null) => { const payload: editorCommon.PastePayload = { text, pasteOnNewLine, multicursorText, mode }; this._commandService.executeCommand(editorCommon.Handler.Paste, payload); @@ -2018,5 +2011,5 @@ registerThemingParticipant((theme, collector) => { } const deprecatedForeground = theme.getColor(editorForeground) || 'inherit'; - collector.addRule(`.monaco-editor .${ClassName.EditorDeprecatedInlineDecoration} { text-decoration: line-through; text-decoration-color: ${deprecatedForeground}}`); + collector.addRule(`.monaco-editor.showDeprecated .${ClassName.EditorDeprecatedInlineDecoration} { text-decoration: line-through; text-decoration-color: ${deprecatedForeground}}`); }); diff --git a/src/vs/editor/common/config/commonEditorConfig.ts b/src/vs/editor/common/config/commonEditorConfig.ts index 248f6e9996..f9be92787c 100644 --- a/src/vs/editor/common/config/commonEditorConfig.ts +++ b/src/vs/editor/common/config/commonEditorConfig.ts @@ -503,8 +503,13 @@ const editorConfiguration: IConfigurationNode = { description: nls.localize('wordBasedSuggestions', "Controls whether completions should be computed based on words in the document.") }, 'editor.semanticHighlighting.enabled': { - type: 'boolean', - default: true, + enum: [true, false, 'configuredByTheme'], + enumDescriptions: [ + nls.localize('semanticHighlighting.true', 'Semantic highlighting enabled for all color themes.'), + nls.localize('semanticHighlighting.false', 'Semantic highlighting disabled for all color themes.'), + nls.localize('semanticHighlighting.configuredByTheme', 'Semantic highlighting is configured by the current color theme\'s `semanticHighlighting` setting.') + ], + default: 'configuredByTheme', description: nls.localize('semanticHighlighting.enabled', "Controls whether the semanticHighlighting is shown for the languages that support it.") }, 'editor.stablePeek': { diff --git a/src/vs/editor/common/config/editorOptions.ts b/src/vs/editor/common/config/editorOptions.ts index d80c745c48..be95e6d27f 100644 --- a/src/vs/editor/common/config/editorOptions.ts +++ b/src/vs/editor/common/config/editorOptions.ts @@ -594,6 +594,10 @@ export interface IEditorOptions { * Defaults to false. */ definitionLinkOpensInPeek?: boolean; + /** + * Controls strikethrough deprecated variables. + */ + showDeprecated?: boolean; } export interface IEditorConstructionOptions extends IEditorOptions { @@ -1219,22 +1223,28 @@ class EditorClassName extends ComputedEditorOption 1) { - movedToPreviousLine = true; lineNumber = lineNumber - 1; column = model.getLineMaxColumn(lineNumber); } @@ -176,17 +174,6 @@ export class WordOperations { let prevWordOnLine = WordOperations._findPreviousWordOnLine(wordSeparators, model, new Position(lineNumber, column)); if (wordNavigationType === WordNavigationType.WordStart) { - - if (prevWordOnLine && !movedToPreviousLine) { - // Special case for Visual Studio compatibility: - // when starting in the trim whitespace at the end of a line, - // go to the end of the last word - const lastWhitespaceColumn = model.getLineLastNonWhitespaceColumn(lineNumber); - if (lastWhitespaceColumn < column) { - return new Position(lineNumber, prevWordOnLine.end + 1); - } - } - return new Position(lineNumber, prevWordOnLine ? prevWordOnLine.start + 1 : 1); } diff --git a/src/vs/editor/common/editorAction.ts b/src/vs/editor/common/editorAction.ts index 0f20500757..7d4c90693d 100644 --- a/src/vs/editor/common/editorAction.ts +++ b/src/vs/editor/common/editorAction.ts @@ -41,7 +41,6 @@ export class InternalEditorAction implements IEditorAction { return Promise.resolve(undefined); } - const r = this._run(); - return r ? r : Promise.resolve(undefined); + return this._run(); } } diff --git a/src/vs/editor/common/model/textModel.ts b/src/vs/editor/common/model/textModel.ts index b4a36c6b3c..414e412c0a 100644 --- a/src/vs/editor/common/model/textModel.ts +++ b/src/vs/editor/common/model/textModel.ts @@ -35,7 +35,7 @@ import { VSBufferReadableStream, VSBuffer } from 'vs/base/common/buffer'; import { TokensStore, MultilineTokens, countEOL, MultilineTokens2, TokensStore2 } from 'vs/editor/common/model/tokensStore'; import { Color } from 'vs/base/common/color'; import { EditorTheme } from 'vs/editor/common/view/viewContext'; -import { IUndoRedoService } from 'vs/platform/undoRedo/common/undoRedo'; +import { IUndoRedoService, ResourceEditStackSnapshot } from 'vs/platform/undoRedo/common/undoRedo'; import { TextChange } from 'vs/editor/common/model/textChange'; import { Constants } from 'vs/base/common/uint'; @@ -278,6 +278,7 @@ export class TextModel extends Disposable implements model.ITextModel { * Unlike, versionId, this can go down (via undo) or go to previous values (via redo) */ private _alternativeVersionId: number; + private _initialUndoRedoSnapshot: ResourceEditStackSnapshot | null; private readonly _isTooLargeForSyncing: boolean; private readonly _isTooLargeForTokenization: boolean; @@ -351,6 +352,7 @@ export class TextModel extends Disposable implements model.ITextModel { this._versionId = 1; this._alternativeVersionId = 1; + this._initialUndoRedoSnapshot = null; this._isDisposed = false; this._isDisposing = false; @@ -719,6 +721,11 @@ export class TextModel extends Disposable implements model.ITextModel { return this._alternativeVersionId; } + public getInitialUndoRedoSnapshot(): ResourceEditStackSnapshot | null { + this._assertNotDisposed(); + return this._initialUndoRedoSnapshot; + } + public getOffsetAt(rawPosition: IPosition): number { this._assertNotDisposed(); let position = this._validatePosition(rawPosition.lineNumber, rawPosition.column, StringOffsetValidationType.Relaxed); @@ -744,6 +751,10 @@ export class TextModel extends Disposable implements model.ITextModel { this._alternativeVersionId = newAlternativeVersionId; } + public _overwriteInitialUndoRedoSnapshot(newInitialUndoRedoSnapshot: ResourceEditStackSnapshot | null): void { + this._initialUndoRedoSnapshot = newInitialUndoRedoSnapshot; + } + public getValue(eol?: model.EndOfLinePreference, preserveBOM: boolean = false): string { this._assertNotDisposed(); const fullModelRange = this.getFullModelRange(); @@ -1187,6 +1198,9 @@ export class TextModel extends Disposable implements model.ITextModel { try { this._onDidChangeDecorations.beginDeferredEmit(); this._eventEmitter.beginDeferredEmit(); + if (this._initialUndoRedoSnapshot === null) { + this._initialUndoRedoSnapshot = this._undoRedoService.createSnapshot(this.uri); + } this._commandManager.pushEOL(eol); } finally { this._eventEmitter.endDeferredEmit(); @@ -1311,6 +1325,9 @@ export class TextModel extends Disposable implements model.ITextModel { this._trimAutoWhitespaceLines = null; } + if (this._initialUndoRedoSnapshot === null) { + this._initialUndoRedoSnapshot = this._undoRedoService.createSnapshot(this.uri); + } return this._commandManager.pushEditOperation(beforeCursorState, editOperations, cursorStateComputer); } diff --git a/src/vs/editor/common/model/textModelSearch.ts b/src/vs/editor/common/model/textModelSearch.ts index edec152240..e92c8fcf27 100644 --- a/src/vs/editor/common/model/textModelSearch.ts +++ b/src/vs/editor/common/model/textModelSearch.ts @@ -548,8 +548,12 @@ export class Searcher { if (matchStartIndex === this._prevMatchStartIndex && matchLength === this._prevMatchLength) { if (matchLength === 0) { // the search result is an empty string and won't advance `regex.lastIndex`, so `regex.exec` will stuck here - // we attempt to recover from that by advancing by one - this._searchRegex.lastIndex += 1; + // we attempt to recover from that by advancing by two if surrogate pair found and by one otherwise + if (strings.getNextCodePoint(text, textLength, this._searchRegex.lastIndex) > 0xFFFF) { + this._searchRegex.lastIndex += 2; + } else { + this._searchRegex.lastIndex += 1; + } continue; } // Exit early if the regex matches the same range twice diff --git a/src/vs/editor/common/modes/languageSelector.ts b/src/vs/editor/common/modes/languageSelector.ts index 27482e5a9b..ddfc030ea2 100644 --- a/src/vs/editor/common/modes/languageSelector.ts +++ b/src/vs/editor/common/modes/languageSelector.ts @@ -5,6 +5,7 @@ import { IRelativePattern, match as matchGlobPattern } from 'vs/base/common/glob'; import { URI } from 'vs/base/common/uri'; // TODO@Alex +import { normalize } from 'vs/base/common/path'; export interface LanguageFilter { language?: string; @@ -83,7 +84,19 @@ export function score(selector: LanguageSelector | undefined, candidateUri: URI, } if (pattern) { - if (pattern === candidateUri.fsPath || matchGlobPattern(pattern, candidateUri.fsPath)) { + let normalizedPattern: string | IRelativePattern; + if (typeof pattern === 'string') { + normalizedPattern = pattern; + } else { + // Since this pattern has a `base` property, we need + // to normalize this path first before passing it on + // because we will compare it against `Uri.fsPath` + // which uses platform specific separators. + // Refs: https://github.com/microsoft/vscode/issues/99938 + normalizedPattern = { ...pattern, base: normalize(pattern.base) }; + } + + if (normalizedPattern === candidateUri.fsPath || matchGlobPattern(normalizedPattern, candidateUri.fsPath)) { ret = 10; } else { return 0; diff --git a/src/vs/editor/common/modes/linkComputer.ts b/src/vs/editor/common/modes/linkComputer.ts index b2e6c6b826..d9091b415e 100644 --- a/src/vs/editor/common/modes/linkComputer.ts +++ b/src/vs/editor/common/modes/linkComputer.ts @@ -154,7 +154,7 @@ function getClassifier(): CharacterClassifier { if (_classifier === null) { _classifier = new CharacterClassifier(CharacterClass.None); - const FORCE_TERMINATION_CHARACTERS = ' \t<>\'\"、。。、,.:;?!@#$%&*‘“〈《「『【〔([{「」}])〕】』」》〉”’`~…'; + const FORCE_TERMINATION_CHARACTERS = ' \t<>\'\"、。。、,.:;‘“〈《「『【〔([{「」}])〕】』」》〉”’`~…'; for (let i = 0; i < FORCE_TERMINATION_CHARACTERS.length; i++) { _classifier.set(FORCE_TERMINATION_CHARACTERS.charCodeAt(i), CharacterClass.ForceTermination); } diff --git a/src/vs/editor/common/services/editorWorkerServiceImpl.ts b/src/vs/editor/common/services/editorWorkerServiceImpl.ts index fb3ca82281..dd7a558f52 100644 --- a/src/vs/editor/common/services/editorWorkerServiceImpl.ts +++ b/src/vs/editor/common/services/editorWorkerServiceImpl.ts @@ -22,6 +22,7 @@ import { regExpFlags } from 'vs/base/common/strings'; import { isNonEmptyArray } from 'vs/base/common/arrays'; import { ILogService } from 'vs/platform/log/common/log'; import { StopWatch } from 'vs/base/common/stopwatch'; +import { canceled } from 'vs/base/common/errors'; /** * Stop syncing a model to the worker if it was not needed for 1 min. @@ -380,6 +381,7 @@ export class EditorWorkerClient extends Disposable { private _worker: IWorkerClient | null; private readonly _workerFactory: DefaultWorkerFactory; private _modelManager: EditorModelManager | null; + private _disposed = false; constructor(modelService: IModelService, keepIdleModels: boolean, label: string | undefined) { super(); @@ -427,6 +429,9 @@ export class EditorWorkerClient extends Disposable { } protected _withSyncedResources(resources: URI[]): Promise { + if (this._disposed) { + return Promise.reject(canceled()); + } return this._getProxy().then((proxy) => { this._getOrCreateModelManager(proxy).ensureSyncedResources(resources); return proxy; @@ -495,4 +500,9 @@ export class EditorWorkerClient extends Disposable { return proxy.navigateValueSet(resource.toString(), range, up, wordDef, wordDefFlags); }); } + + dispose(): void { + super.dispose(); + this._disposed = true; + } } diff --git a/src/vs/editor/common/services/modelServiceImpl.ts b/src/vs/editor/common/services/modelServiceImpl.ts index 7c770b12cc..eda9fdf159 100644 --- a/src/vs/editor/common/services/modelServiceImpl.ts +++ b/src/vs/editor/common/services/modelServiceImpl.ts @@ -24,14 +24,14 @@ import { RunOnceScheduler } from 'vs/base/common/async'; import { CancellationTokenSource } from 'vs/base/common/cancellation'; import { IThemeService } from 'vs/platform/theme/common/themeService'; import { ILogService } from 'vs/platform/log/common/log'; -import { IUndoRedoService, IUndoRedoElement, IPastFutureElements } from 'vs/platform/undoRedo/common/undoRedo'; +import { IUndoRedoService, IUndoRedoElement, IPastFutureElements, ResourceEditStackSnapshot } from 'vs/platform/undoRedo/common/undoRedo'; import { StringSHA1 } from 'vs/base/common/hash'; import { SingleModelEditStackElement, MultiModelEditStackElement, EditStackElement, isEditStackElement } from 'vs/editor/common/model/editStack'; import { Schemas } from 'vs/base/common/network'; import { SemanticTokensProviderStyling, toMultilineTokens2 } from 'vs/editor/common/services/semanticTokensProviderStyling'; export interface IEditorSemanticHighlightingOptions { - enabled?: boolean; + enabled: true | false | 'configuredByTheme'; } function MODEL_ID(resource: URI): string { @@ -51,7 +51,7 @@ function computeModelSha1(model: ITextModel): string { class ModelData implements IDisposable { - public readonly model: ITextModel; + public readonly model: TextModel; private _languageSelection: ILanguageSelection | null; private _languageSelectionListener: IDisposable | null; @@ -59,7 +59,7 @@ class ModelData implements IDisposable { private readonly _modelEventListeners = new DisposableStore(); constructor( - model: ITextModel, + model: TextModel, onWillDispose: (model: ITextModel) => void, onDidChangeLanguage: (model: ITextModel, e: IModelLanguageChangedEvent) => void ) { @@ -138,6 +138,7 @@ function isEditStackElements(elements: IUndoRedoElement[]): elements is EditStac class DisposedModelInfo { constructor( public readonly uri: URI, + public readonly initialUndoRedoSnapshot: ResourceEditStackSnapshot | null, public readonly time: number, public readonly sharesUndoRedoStack: boolean, public readonly heapSize: number, @@ -362,7 +363,9 @@ export class ModelServiceImpl extends Disposable implements IModelService { while (disposedModels.length > 0 && this._disposedModelsHeapSize > maxModelsHeapSize) { const disposedModel = disposedModels.shift()!; this._removeDisposedModel(disposedModel.uri); - this._undoRedoService.removeElements(disposedModel.uri); + if (disposedModel.initialUndoRedoSnapshot !== null) { + this._undoRedoService.restoreSnapshot(disposedModel.initialUndoRedoSnapshot); + } } } } @@ -390,9 +393,12 @@ export class ModelServiceImpl extends Disposable implements IModelService { if (sha1IsEqual) { model._overwriteVersionId(disposedModelData.versionId); model._overwriteAlternativeVersionId(disposedModelData.alternativeVersionId); + model._overwriteInitialUndoRedoSnapshot(disposedModelData.initialUndoRedoSnapshot); } } else { - this._undoRedoService.removeElements(resource); + if (disposedModelData.initialUndoRedoSnapshot !== null) { + this._undoRedoService.restoreSnapshot(disposedModelData.initialUndoRedoSnapshot); + } } } const modelId = MODEL_ID(model.uri); @@ -541,7 +547,10 @@ export class ModelServiceImpl extends Disposable implements IModelService { if (!maintainUndoRedoStack) { if (!sharesUndoRedoStack) { - this._undoRedoService.removeElements(resource); + const initialUndoRedoSnapshot = modelData.model.getInitialUndoRedoSnapshot(); + if (initialUndoRedoSnapshot !== null) { + this._undoRedoService.restoreSnapshot(initialUndoRedoSnapshot); + } } modelData.model.dispose(); return; @@ -550,7 +559,10 @@ export class ModelServiceImpl extends Disposable implements IModelService { const maxMemory = ModelServiceImpl.MAX_MEMORY_FOR_CLOSED_FILES_UNDO_STACK; if (!sharesUndoRedoStack && heapSize > maxMemory) { // the undo stack for this file would never fit in the configured memory, so don't bother with it. - this._undoRedoService.removeElements(resource); + const initialUndoRedoSnapshot = modelData.model.getInitialUndoRedoSnapshot(); + if (initialUndoRedoSnapshot !== null) { + this._undoRedoService.restoreSnapshot(initialUndoRedoSnapshot); + } modelData.model.dispose(); return; } @@ -559,7 +571,7 @@ export class ModelServiceImpl extends Disposable implements IModelService { // We only invalidate the elements, but they remain in the undo-redo service. this._undoRedoService.setElementsValidFlag(resource, false, (element) => (isEditStackElement(element) && element.matchesResource(resource))); - this._insertDisposedModel(new DisposedModelInfo(resource, Date.now(), sharesUndoRedoStack, heapSize, computeModelSha1(model), model.getVersionId(), model.getAlternativeVersionId())); + this._insertDisposedModel(new DisposedModelInfo(resource, modelData.model.getInitialUndoRedoSnapshot(), Date.now(), sharesUndoRedoStack, heapSize, computeModelSha1(model), model.getVersionId(), model.getAlternativeVersionId())); modelData.model.dispose(); } @@ -621,11 +633,11 @@ export interface ILineSequence { export const SEMANTIC_HIGHLIGHTING_SETTING_ID = 'editor.semanticHighlighting'; export function isSemanticColoringEnabled(model: ITextModel, themeService: IThemeService, configurationService: IConfigurationService): boolean { - if (!themeService.getColorTheme().semanticHighlighting) { - return false; + const setting = configurationService.getValue(SEMANTIC_HIGHLIGHTING_SETTING_ID, { overrideIdentifier: model.getLanguageIdentifier().language, resource: model.uri })?.enabled; + if (typeof setting === 'boolean') { + return setting; } - const options = configurationService.getValue(SEMANTIC_HIGHLIGHTING_SETTING_ID, { overrideIdentifier: model.getLanguageIdentifier().language, resource: model.uri }); - return Boolean(options && options.enabled); + return themeService.getColorTheme().semanticHighlighting; } class SemanticColoringFeature extends Disposable { diff --git a/src/vs/editor/common/standalone/standaloneEnums.ts b/src/vs/editor/common/standalone/standaloneEnums.ts index 6f85ea17a6..f573ef183e 100644 --- a/src/vs/editor/common/standalone/standaloneEnums.ts +++ b/src/vs/editor/common/standalone/standaloneEnums.ts @@ -279,11 +279,12 @@ export enum EditorOption { wordWrapMinified = 109, wrappingIndent = 110, wrappingStrategy = 111, - editorClassName = 112, - pixelRatio = 113, - tabFocusMode = 114, - layoutInfo = 115, - wrappingInfo = 116 + showDeprecated = 112, + editorClassName = 113, + pixelRatio = 114, + tabFocusMode = 115, + layoutInfo = 116, + wrappingInfo = 117 } /** diff --git a/src/vs/editor/common/viewLayout/viewLayout.ts b/src/vs/editor/common/viewLayout/viewLayout.ts index ad4f624bac..45be3d1d11 100644 --- a/src/vs/editor/common/viewLayout/viewLayout.ts +++ b/src/vs/editor/common/viewLayout/viewLayout.ts @@ -210,12 +210,12 @@ export class ViewLayout extends Disposable implements IViewLayout { const width = layoutInfo.contentWidth; const height = layoutInfo.height; const scrollDimensions = this._scrollable.getScrollDimensions(); - const scrollWidth = scrollDimensions.scrollWidth; + const contentWidth = scrollDimensions.contentWidth; this._scrollable.setScrollDimensions(new EditorScrollDimensions( width, scrollDimensions.contentWidth, height, - this._getContentHeight(width, height, scrollWidth) + this._getContentHeight(width, height, contentWidth) )); } else { this._updateHeight(); @@ -250,14 +250,14 @@ export class ViewLayout extends Disposable implements IViewLayout { return scrollbar.horizontalScrollbarSize; } - private _getContentHeight(width: number, height: number, scrollWidth: number): number { + private _getContentHeight(width: number, height: number, contentWidth: number): number { const options = this._configuration.options; let result = this._linesLayout.getLinesTotalHeight(); if (options.get(EditorOption.scrollBeyondLastLine)) { result += height - options.get(EditorOption.lineHeight); } else { - result += this._getHorizontalScrollbarHeight(width, scrollWidth); + result += this._getHorizontalScrollbarHeight(width, contentWidth); } return result; @@ -267,12 +267,12 @@ export class ViewLayout extends Disposable implements IViewLayout { const scrollDimensions = this._scrollable.getScrollDimensions(); const width = scrollDimensions.width; const height = scrollDimensions.height; - const scrollWidth = scrollDimensions.scrollWidth; + const contentWidth = scrollDimensions.contentWidth; this._scrollable.setScrollDimensions(new EditorScrollDimensions( width, scrollDimensions.contentWidth, height, - this._getContentHeight(width, height, scrollWidth) + this._getContentHeight(width, height, contentWidth) )); } diff --git a/src/vs/editor/contrib/clipboard/clipboard.ts b/src/vs/editor/contrib/clipboard/clipboard.ts index 6a476039f7..7b4435fd61 100644 --- a/src/vs/editor/contrib/clipboard/clipboard.ts +++ b/src/vs/editor/contrib/clipboard/clipboard.ts @@ -9,7 +9,7 @@ import { KeyCode, KeyMod } from 'vs/base/common/keyCodes'; import * as platform from 'vs/base/common/platform'; import { CopyOptions } from 'vs/editor/browser/controller/textAreaInput'; import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; -import { EditorAction, IActionOptions, ICommandKeybindingsOptions, registerEditorAction } from 'vs/editor/browser/editorExtensions'; +import { EditorAction, registerEditorAction, Command, MultiCommand } from 'vs/editor/browser/editorExtensions'; import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService'; import { EditorContextKeys } from 'vs/editor/common/editorContextKeys'; import { MenuId } from 'vs/platform/actions/common/actions'; @@ -28,171 +28,108 @@ const supportsCopyWithSyntaxHighlighting = (supportsCopy && !browser.isEdge); // privileges to actually perform the action const supportsPaste = (platform.isNative || (!browser.isChrome && document.queryCommandSupported('paste'))); -type ExecCommand = 'cut' | 'copy' | 'paste'; - -abstract class ExecCommandAction extends EditorAction { - - private readonly browserCommand: ExecCommand; - - constructor(browserCommand: ExecCommand, opts: IActionOptions) { - super(opts); - this.browserCommand = browserCommand; - } - - public runCommand(accessor: ServicesAccessor, args: any): void { - let focusedEditor = accessor.get(ICodeEditorService).getFocusedCodeEditor(); - // Only if editor text focus (i.e. not if editor has widget focus). - if (focusedEditor && focusedEditor.hasTextFocus()) { - focusedEditor.trigger('keyboard', this.id, args); - return; - } - - document.execCommand(this.browserCommand); - } - - public run(accessor: ServicesAccessor, editor: ICodeEditor): void { - editor.focus(); - document.execCommand(this.browserCommand); - } +function registerCommand(command: T): T { + command.register(); + return command; } -class ExecCommandCutAction extends ExecCommandAction { - - constructor() { - let kbOpts: ICommandKeybindingsOptions | undefined = { - kbExpr: EditorContextKeys.textInputFocus, +export const CutAction = supportsCut ? registerCommand(new MultiCommand({ + id: 'editor.action.clipboardCutAction', + precondition: undefined, + kbOpts: ( + // Do not bind cut keybindings in the browser, + // since browsers do that for us and it avoids security prompts + platform.isNative ? { primary: KeyMod.CtrlCmd | KeyCode.KEY_X, win: { primary: KeyMod.CtrlCmd | KeyCode.KEY_X, secondary: [KeyMod.Shift | KeyCode.Delete] }, weight: KeybindingWeight.EditorContrib - }; - // Do not bind cut keybindings in the browser, + } : undefined + ), + menuOpts: [{ + menuId: MenuId.MenubarEditMenu, + group: '2_ccp', + title: nls.localize({ key: 'miCut', comment: ['&& denotes a mnemonic'] }, "Cu&&t"), + order: 1 + }, { + menuId: MenuId.EditorContext, + group: CLIPBOARD_CONTEXT_MENU_GROUP, + title: nls.localize('actions.clipboard.cutLabel', "Cut"), + when: EditorContextKeys.writable, + order: 1, + }, { + menuId: MenuId.CommandPalette, + group: '', + title: nls.localize('actions.clipboard.cutLabel', "Cut"), + order: 1 + }] +})) : undefined; + +export const CopyAction = supportsCopy ? registerCommand(new MultiCommand({ + id: 'editor.action.clipboardCopyAction', + precondition: undefined, + kbOpts: ( + // Do not bind copy keybindings in the browser, // since browsers do that for us and it avoids security prompts - if (!platform.isNative) { - kbOpts = undefined; - } - super('cut', { - id: 'editor.action.clipboardCutAction', - label: nls.localize('actions.clipboard.cutLabel', "Cut"), - alias: 'Cut', - precondition: EditorContextKeys.writable, - kbOpts: kbOpts, - contextMenuOpts: { - group: CLIPBOARD_CONTEXT_MENU_GROUP, - order: 1 - }, - menuOpts: { - menuId: MenuId.MenubarEditMenu, - group: '2_ccp', - title: nls.localize({ key: 'miCut', comment: ['&& denotes a mnemonic'] }, "Cu&&t"), - order: 1 - } - }); - } - - public run(accessor: ServicesAccessor, editor: ICodeEditor): void { - if (!editor.hasModel()) { - return; - } - - const emptySelectionClipboard = editor.getOption(EditorOption.emptySelectionClipboard); - - if (!emptySelectionClipboard && editor.getSelection().isEmpty()) { - return; - } - - super.run(accessor, editor); - } -} - -class ExecCommandCopyAction extends ExecCommandAction { - - constructor() { - let kbOpts: ICommandKeybindingsOptions | undefined = { - kbExpr: EditorContextKeys.textInputFocus, + platform.isNative ? { primary: KeyMod.CtrlCmd | KeyCode.KEY_C, win: { primary: KeyMod.CtrlCmd | KeyCode.KEY_C, secondary: [KeyMod.CtrlCmd | KeyCode.Insert] }, weight: KeybindingWeight.EditorContrib - }; - // Do not bind copy keybindings in the browser, + } : undefined + ), + menuOpts: [{ + menuId: MenuId.MenubarEditMenu, + group: '2_ccp', + title: nls.localize({ key: 'miCopy', comment: ['&& denotes a mnemonic'] }, "&&Copy"), + order: 2 + }, { + menuId: MenuId.EditorContext, + group: CLIPBOARD_CONTEXT_MENU_GROUP, + title: nls.localize('actions.clipboard.copyLabel', "Copy"), + order: 2, + }, { + menuId: MenuId.CommandPalette, + group: '', + title: nls.localize('actions.clipboard.copyLabel', "Copy"), + order: 1 + }] +})) : undefined; + +export const PasteAction = supportsPaste ? registerCommand(new MultiCommand({ + id: 'editor.action.clipboardPasteAction', + precondition: undefined, + kbOpts: ( + // Do not bind paste keybindings in the browser, // since browsers do that for us and it avoids security prompts - if (!platform.isNative) { - kbOpts = undefined; - } - - super('copy', { - id: 'editor.action.clipboardCopyAction', - label: nls.localize('actions.clipboard.copyLabel', "Copy"), - alias: 'Copy', - precondition: undefined, - kbOpts: kbOpts, - contextMenuOpts: { - group: CLIPBOARD_CONTEXT_MENU_GROUP, - order: 2 - }, - menuOpts: { - menuId: MenuId.MenubarEditMenu, - group: '2_ccp', - title: nls.localize({ key: 'miCopy', comment: ['&& denotes a mnemonic'] }, "&&Copy"), - order: 2 - } - }); - } - - public run(accessor: ServicesAccessor, editor: ICodeEditor): void { - if (!editor.hasModel()) { - return; - } - - const emptySelectionClipboard = editor.getOption(EditorOption.emptySelectionClipboard); - - if (!emptySelectionClipboard && editor.getSelection().isEmpty()) { - return; - } - - super.run(accessor, editor); - } -} - -class ExecCommandPasteAction extends ExecCommandAction { - - constructor() { - let kbOpts: ICommandKeybindingsOptions | undefined = { - kbExpr: EditorContextKeys.textInputFocus, + platform.isNative ? { primary: KeyMod.CtrlCmd | KeyCode.KEY_V, win: { primary: KeyMod.CtrlCmd | KeyCode.KEY_V, secondary: [KeyMod.Shift | KeyCode.Insert] }, linux: { primary: KeyMod.CtrlCmd | KeyCode.KEY_V, secondary: [KeyMod.Shift | KeyCode.Insert] }, weight: KeybindingWeight.EditorContrib - }; - // Do not bind paste keybindings in the browser, - // since browsers do that for us and it avoids security prompts - if (!platform.isNative) { - kbOpts = undefined; - } + } : undefined + ), + menuOpts: [{ + menuId: MenuId.MenubarEditMenu, + group: '2_ccp', + title: nls.localize({ key: 'miPaste', comment: ['&& denotes a mnemonic'] }, "&&Paste"), + order: 3 + }, { + menuId: MenuId.EditorContext, + group: CLIPBOARD_CONTEXT_MENU_GROUP, + title: nls.localize('actions.clipboard.pasteLabel', "Paste"), + when: EditorContextKeys.writable, + order: 3, + }, { + menuId: MenuId.CommandPalette, + group: '', + title: nls.localize('actions.clipboard.pasteLabel', "Paste"), + order: 1 + }] +})) : undefined; - super('paste', { - id: 'editor.action.clipboardPasteAction', - label: nls.localize('actions.clipboard.pasteLabel', "Paste"), - alias: 'Paste', - precondition: EditorContextKeys.writable, - kbOpts: kbOpts, - contextMenuOpts: { - group: CLIPBOARD_CONTEXT_MENU_GROUP, - order: 3 - }, - menuOpts: { - menuId: MenuId.MenubarEditMenu, - group: '2_ccp', - title: nls.localize({ key: 'miPaste', comment: ['&& denotes a mnemonic'] }, "&&Paste"), - order: 3 - } - }); - } -} - -class ExecCommandCopyWithSyntaxHighlightingAction extends ExecCommandAction { +class ExecCommandCopyWithSyntaxHighlightingAction extends EditorAction { constructor() { - super('copy', { + super({ id: 'editor.action.clipboardCopyWithSyntaxHighlightingAction', label: nls.localize('actions.clipboard.copyWithSyntaxHighlightingLabel', "Copy With Syntax Highlighting"), alias: 'Copy With Syntax Highlighting', @@ -217,20 +154,48 @@ class ExecCommandCopyWithSyntaxHighlightingAction extends ExecCommandAction { } CopyOptions.forceCopyWithSyntaxHighlighting = true; - super.run(accessor, editor); + editor.focus(); + document.execCommand('copy'); CopyOptions.forceCopyWithSyntaxHighlighting = false; } } -if (supportsCut) { - registerEditorAction(ExecCommandCutAction); -} -if (supportsCopy) { - registerEditorAction(ExecCommandCopyAction); -} -if (supportsPaste) { - registerEditorAction(ExecCommandPasteAction); +function registerExecCommandImpl(target: MultiCommand | undefined, browserCommand: 'cut' | 'copy' | 'paste'): void { + if (!target) { + return; + } + + // 1. handle case when focus is in editor. + target.addImplementation(10000, (accessor: ServicesAccessor, args: any) => { + // Only if editor text focus (i.e. not if editor has widget focus). + const focusedEditor = accessor.get(ICodeEditorService).getFocusedCodeEditor(); + if (focusedEditor && focusedEditor.hasTextFocus()) { + if (browserCommand === 'cut' || browserCommand === 'copy') { + // Do not execute if there is no selection and empty selection clipboard is off + const emptySelectionClipboard = focusedEditor.getOption(EditorOption.emptySelectionClipboard); + const selection = focusedEditor.getSelection(); + if (selection && selection.isEmpty() && !emptySelectionClipboard) { + return true; + } + } + document.execCommand(browserCommand); + return true; + } + return false; + }); + + // 2. (default) handle case when focus is somewhere else. + target.addImplementation(0, (accessor: ServicesAccessor, args: any) => { + // Only if editor text focus (i.e. not if editor has widget focus). + document.execCommand(browserCommand); + return true; + }); } + +registerExecCommandImpl(CutAction, 'cut'); +registerExecCommandImpl(CopyAction, 'copy'); +registerExecCommandImpl(PasteAction, 'paste'); + if (supportsCopyWithSyntaxHighlighting) { registerEditorAction(ExecCommandCopyWithSyntaxHighlightingAction); } diff --git a/src/vs/editor/contrib/codeAction/codeAction.ts b/src/vs/editor/contrib/codeAction/codeAction.ts index f5ef24f657..14dc0a0126 100644 --- a/src/vs/editor/contrib/codeAction/codeAction.ts +++ b/src/vs/editor/contrib/codeAction/codeAction.ts @@ -73,6 +73,9 @@ class ManagedCodeActionSet extends Disposable implements CodeActionSet { } } + +const emptyCodeActionsResponse = { actions: [] as modes.CodeAction[], documentation: undefined }; + export function getCodeActions( model: ITextModel, rangeOrSelection: Range | Selection, @@ -100,7 +103,7 @@ export function getCodeActions( } if (cts.token.isCancellationRequested) { - return { actions: [] as modes.CodeAction[], documentation: undefined }; + return emptyCodeActionsResponse; } const filteredActions = (providedCodeActions?.actions || []).filter(action => action && filtersAction(filter, action)); @@ -111,7 +114,7 @@ export function getCodeActions( throw err; } onUnexpectedExternalError(err); - return { actions: [] as modes.CodeAction[], documentation: undefined }; + return emptyCodeActionsResponse; } }); diff --git a/src/vs/editor/contrib/codeAction/codeActionModel.ts b/src/vs/editor/contrib/codeAction/codeActionModel.ts index 40cb996b40..1fb1638a9f 100644 --- a/src/vs/editor/contrib/codeAction/codeActionModel.ts +++ b/src/vs/editor/contrib/codeAction/codeActionModel.ts @@ -214,8 +214,8 @@ export class CodeActionModel extends Disposable { } const actions = createCancelablePromise(token => getCodeActions(model, trigger.selection, trigger.trigger, Progress.None, token)); - if (this._progressService && trigger.trigger.type === CodeActionTriggerType.Manual) { - this._progressService.showWhile(actions, 250); + if (trigger.trigger.type === CodeActionTriggerType.Manual) { + this._progressService?.showWhile(actions, 250); } this.setState(new CodeActionsState.Triggered(trigger.trigger, trigger.selection, trigger.position, actions)); diff --git a/src/vs/editor/contrib/colorPicker/colorDetector.ts b/src/vs/editor/contrib/colorPicker/colorDetector.ts index e6d11697d6..d8834189c3 100644 --- a/src/vs/editor/contrib/colorPicker/colorDetector.ts +++ b/src/vs/editor/contrib/colorPicker/colorDetector.ts @@ -173,7 +173,7 @@ export class ColorDetector extends Disposable implements IEditorContribution { for (let i = 0; i < colorData.length && decorations.length < MAX_DECORATORS; i++) { const { red, green, blue, alpha } = colorData[i].colorInfo.color; const rgba = new RGBA(Math.round(red * 255), Math.round(green * 255), Math.round(blue * 255), alpha); - let subKey = hash(rgba).toString(16); + let subKey = hash(`rgba(${rgba.r},${rgba.g},${rgba.b},${rgba.a})`).toString(16); let color = `rgba(${rgba.r}, ${rgba.g}, ${rgba.b}, ${rgba.a})`; let key = 'colorBox-' + subKey; diff --git a/src/vs/editor/contrib/find/findController.ts b/src/vs/editor/contrib/find/findController.ts index 3c08f4fdec..70a6b8cc9c 100644 --- a/src/vs/editor/contrib/find/findController.ts +++ b/src/vs/editor/contrib/find/findController.ts @@ -255,7 +255,7 @@ export class CommonFindController extends Disposable implements IEditorContribut // overwritten in subclass } - protected _start(opts: IFindStartOptions): void { + protected async _start(opts: IFindStartOptions): Promise { this.disposeModel(); if (!this._editor.hasModel()) { @@ -279,7 +279,7 @@ export class CommonFindController extends Disposable implements IEditorContribut } if (!stateChanges.searchString && opts.seedSearchStringFromGlobalClipboard) { - let selectionSearchString = this.getGlobalBufferTerm(); + let selectionSearchString = await this.getGlobalBufferTerm(); if (selectionSearchString) { stateChanges.searchString = selectionSearchString; } @@ -308,8 +308,8 @@ export class CommonFindController extends Disposable implements IEditorContribut } } - public start(opts: IFindStartOptions): void { - this._start(opts); + public start(opts: IFindStartOptions): Promise { + return this._start(opts); } public moveToNextMatch(): boolean { @@ -353,24 +353,24 @@ export class CommonFindController extends Disposable implements IEditorContribut return false; } - public getGlobalBufferTerm(): string { + public async getGlobalBufferTerm(): Promise { if (this._editor.getOption(EditorOption.find).globalFindClipboard && this._clipboardService && this._editor.hasModel() && !this._editor.getModel().isTooLargeForSyncing() ) { - return this._clipboardService.readFindTextSync(); + return this._clipboardService.readFindText(); } return ''; } - public setGlobalBufferTerm(text: string) { + public async setGlobalBufferTerm(text: string) { if (this._editor.getOption(EditorOption.find).globalFindClipboard && this._clipboardService && this._editor.hasModel() && !this._editor.getModel().isTooLargeForSyncing() ) { - this._clipboardService.writeFindTextSync(text); + await this._clipboardService.writeFindText(text); } } } @@ -396,7 +396,7 @@ export class FindController extends CommonFindController implements IFindControl this._findOptionsWidget = null; } - protected _start(opts: IFindStartOptions): void { + protected async _start(opts: IFindStartOptions): Promise { if (!this._widget) { this._createFindWidget(); } @@ -422,7 +422,7 @@ export class FindController extends CommonFindController implements IFindControl opts.updateSearchScope = updateSearchScope; - super._start(opts); + await super._start(opts); if (opts.shouldFocus === FindStartFocusAction.FocusReplaceInput) { this._widget!.focusReplaceInput(); @@ -505,7 +505,7 @@ export class StartFindWithSelectionAction extends EditorAction { }); } - public run(accessor: ServicesAccessor, editor: ICodeEditor): void { + public async run(accessor: ServicesAccessor, editor: ICodeEditor): Promise { let controller = CommonFindController.get(editor); if (controller) { controller.start({ @@ -518,7 +518,7 @@ export class StartFindWithSelectionAction extends EditorAction { loop: editor.getOption(EditorOption.find).loop }); - controller.setGlobalBufferTerm(controller.getState().searchString); + return controller.setGlobalBufferTerm(controller.getState().searchString); } } } diff --git a/src/vs/editor/contrib/find/findModel.ts b/src/vs/editor/contrib/find/findModel.ts index 5b8ab59a10..a535d3714f 100644 --- a/src/vs/editor/contrib/find/findModel.ts +++ b/src/vs/editor/contrib/find/findModel.ts @@ -262,6 +262,13 @@ export class FindModelBoundToEditorModel { private _moveToPrevMatch(before: Position, isRecursed: boolean = false): void { if (!this._state.canNavigateBack()) { + // we are beyond the first matched find result + // instead of doing nothing, we should refocus the first item + const nextMatchRange = this._decorations.matchAfterPosition(before); + + if (nextMatchRange) { + this._setCurrentFindMatch(nextMatchRange); + } return; } if (this._decorations.getCount() < MATCHES_LIMIT) { @@ -350,6 +357,13 @@ export class FindModelBoundToEditorModel { private _moveToNextMatch(after: Position): void { if (!this._state.canNavigateForward()) { + // we are beyond the last matched find result + // instead of doing nothing, we should refocus the last item + const prevMatchRange = this._decorations.matchBeforePosition(after); + + if (prevMatchRange) { + this._setCurrentFindMatch(prevMatchRange); + } return; } if (this._decorations.getCount() < MATCHES_LIMIT) { diff --git a/src/vs/editor/contrib/find/findWidget.ts b/src/vs/editor/contrib/find/findWidget.ts index 15bc618b10..630d9b7634 100644 --- a/src/vs/editor/contrib/find/findWidget.ts +++ b/src/vs/editor/contrib/find/findWidget.ts @@ -52,7 +52,7 @@ export const findNextMatchIcon = registerIcon('find-next-match', Codicon.arrowDo export interface IFindController { replace(): void; replaceAll(): void; - getGlobalBufferTerm(): string; + getGlobalBufferTerm(): Promise; } const NLS_FIND_INPUT_LABEL = nls.localize('label.find', "Find"); @@ -224,9 +224,9 @@ export class FindWidget extends Widget implements IOverlayWidget, IVerticalSashL this._updateToggleSelectionFindButton(); } })); - this._register(this._codeEditor.onDidFocusEditorWidget(() => { + this._register(this._codeEditor.onDidFocusEditorWidget(async () => { if (this._isVisible) { - let globalBufferTerm = this._controller.getGlobalBufferTerm(); + let globalBufferTerm = await this._controller.getGlobalBufferTerm(); if (globalBufferTerm && globalBufferTerm !== this._state.searchString) { this._state.change({ searchString: globalBufferTerm }, true); this._findInput.select(); diff --git a/src/vs/editor/contrib/find/test/findController.test.ts b/src/vs/editor/contrib/find/test/findController.test.ts index 55c8b5c899..ca2f0b49cc 100644 --- a/src/vs/editor/contrib/find/test/findController.test.ts +++ b/src/vs/editor/contrib/find/test/findController.test.ts @@ -39,8 +39,8 @@ export class TestFindController extends CommonFindController { this.hasFocus = false; } - protected _start(opts: IFindStartOptions): void { - super._start(opts); + protected async _start(opts: IFindStartOptions): Promise { + await super._start(opts); if (opts.shouldFocus !== FindStartFocusAction.NoFocusChange) { this.hasFocus = true; diff --git a/src/vs/editor/contrib/multicursor/test/multicursor.test.ts b/src/vs/editor/contrib/multicursor/test/multicursor.test.ts index f5f96aadc4..62f9292e75 100644 --- a/src/vs/editor/contrib/multicursor/test/multicursor.test.ts +++ b/src/vs/editor/contrib/multicursor/test/multicursor.test.ts @@ -70,7 +70,8 @@ suite('Multicursor selection', () => { remove: (key) => undefined, logStorage: () => undefined, migrate: (toWorkspace) => Promise.resolve(undefined), - flush: () => undefined + flush: () => undefined, + isNew: () => true } as IStorageService); test('issue #8817: Cursor position changes when you cancel multicursor', () => { diff --git a/src/vs/editor/contrib/peekView/media/peekViewWidget.css b/src/vs/editor/contrib/peekView/media/peekViewWidget.css index 966475cbb3..6dd5aa37c2 100644 --- a/src/vs/editor/contrib/peekView/media/peekViewWidget.css +++ b/src/vs/editor/contrib/peekView/media/peekViewWidget.css @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ .monaco-editor .peekview-widget .head { - box-sizing: border-box; + box-sizing: border-box; display: flex; } @@ -14,6 +14,7 @@ font-size: 13px; margin-left: 20px; cursor: pointer; + min-width: 0; } .monaco-editor .peekview-widget .head .peekview-title .dirname:not(:empty) { @@ -25,6 +26,15 @@ white-space: nowrap; } +.monaco-editor .peekview-widget .head .peekview-title .dirname { + white-space: nowrap; +} + +.monaco-editor .peekview-widget .head .peekview-title .filename { + overflow: hidden; + text-overflow: ellipsis; +} + .monaco-editor .peekview-widget .head .peekview-title .meta:not(:empty)::before { content: '-'; padding: 0 0.3em; diff --git a/src/vs/editor/contrib/wordOperations/test/wordOperations.test.ts b/src/vs/editor/contrib/wordOperations/test/wordOperations.test.ts index c1aabc58c0..23aefdd228 100644 --- a/src/vs/editor/contrib/wordOperations/test/wordOperations.test.ts +++ b/src/vs/editor/contrib/wordOperations/test/wordOperations.test.ts @@ -167,7 +167,7 @@ suite('WordOperations', () => { test('cursorWordStartLeft', () => { // This is the behaviour observed in Visual Studio, please do not touch test - const EXPECTED = ['| |/* |Just |some |more |text |a|+= |3 |+|5|-|3 |+ |7 |*/| '].join('\n'); + const EXPECTED = ['| |/* |Just |some |more |text |a|+= |3 |+|5|-|3 |+ |7 |*/ '].join('\n'); const [text,] = deserializePipePositions(EXPECTED); const actualStops = testRepeatedActionAndExtractPositions( text, diff --git a/src/vs/editor/standalone/browser/standaloneCodeEditor.ts b/src/vs/editor/standalone/browser/standaloneCodeEditor.ts index 9ff4b1da24..d1bc85c631 100644 --- a/src/vs/editor/standalone/browser/standaloneCodeEditor.ts +++ b/src/vs/editor/standalone/browser/standaloneCodeEditor.ts @@ -115,9 +115,12 @@ export interface IGlobalEditorOptions { wordBasedSuggestions?: boolean; /** * Controls whether the semanticHighlighting is shown for the languages that support it. - * Defaults to true. + * true: semanticHighlighting is enabled for all themes + * false: semanticHighlighting is disabled for all themes + * 'configuredByTheme': semanticHighlighting is controlled by the current color theme's semanticHighlighting setting. + * Defaults to 'byTheme'. */ - 'semanticHighlighting.enabled'?: boolean; + 'semanticHighlighting.enabled'?: true | false | 'configuredByTheme'; /** * Keep peek editors open even when double clicking their content or when hitting `Escape`. * Defaults to false. diff --git a/src/vs/editor/test/browser/controller/inputRecorder.html b/src/vs/editor/test/browser/controller/inputRecorder.html index 3f538b8a04..65d8a39c59 100644 --- a/src/vs/editor/test/browser/controller/inputRecorder.html +++ b/src/vs/editor/test/browser/controller/inputRecorder.html @@ -31,14 +31,14 @@ var RECORDED_EVENTS = []; var input = document.getElementById('input'); -var blackListedProps = [ +var blockedProperties = [ 'currentTarget', 'path', 'srcElement', 'target', 'view' ]; -blackListedProps = blackListedProps.concat([ +blockedProperties = blockedProperties.concat([ 'AT_TARGET', 'BLUR', 'BUBBLING_PHASE', @@ -68,7 +68,7 @@ blackListedProps = blackListedProps.concat([ function toSerializable(e) { var r = {}; for (var k in e) { - if (blackListedProps.indexOf(k) >= 0) { + if (blockedProperties.indexOf(k) >= 0) { continue; } if (typeof e[k] === 'function') { @@ -112,4 +112,4 @@ document.getElementById('stop').onclick = function() { - \ No newline at end of file + diff --git a/src/vs/editor/test/common/model/textModelSearch.test.ts b/src/vs/editor/test/common/model/textModelSearch.test.ts index 18caa18361..711c010c67 100644 --- a/src/vs/editor/test/common/model/textModelSearch.test.ts +++ b/src/vs/editor/test/common/model/textModelSearch.test.ts @@ -781,4 +781,29 @@ suite('TextModelSearch', () => { model.dispose(); }); + + test('issue #100134. Zero-length matches should properly step over surrogate pairs', () => { + // 1[Laptop]1 - there shoud be no matches inside of [Laptop] emoji + assertFindMatches('1\uD83D\uDCBB1', '()', true, false, null, + [ + [1, 1, 1, 1], + [1, 2, 1, 2], + [1, 4, 1, 4], + [1, 5, 1, 5], + + ] + ); + // 1[Hacker Cat]1 = 1[Cat Face][ZWJ][Laptop]1 - there shoud be matches between emoji and ZWJ + // there shoud be no matches inside of [Cat Face] and [Laptop] emoji + assertFindMatches('1\uD83D\uDC31\u200D\uD83D\uDCBB1', '()', true, false, null, + [ + [1, 1, 1, 1], + [1, 2, 1, 2], + [1, 4, 1, 4], + [1, 5, 1, 5], + [1, 7, 1, 7], + [1, 8, 1, 8] + ] + ); + }); }); diff --git a/src/vs/editor/test/common/modes/languageSelector.test.ts b/src/vs/editor/test/common/modes/languageSelector.test.ts index 49bed02362..d09a5866a2 100644 --- a/src/vs/editor/test/common/modes/languageSelector.test.ts +++ b/src/vs/editor/test/common/modes/languageSelector.test.ts @@ -104,4 +104,15 @@ suite('LanguageSelector', function () { let value = score(selector, URI.parse('file:///C:/Users/zlhe/Desktop/test.interface.json'), 'json', true); assert.equal(value, 10); }); + + test('Document selector match - platform paths #99938', function () { + let selector = { + pattern: { + base: '/home/user/Desktop', + pattern: '*.json' + } + }; + let value = score(selector, URI.file('/home/user/Desktop/test.json'), 'json', true); + assert.equal(value, 10); + }); }); diff --git a/src/vs/editor/test/common/modes/linkComputer.test.ts b/src/vs/editor/test/common/modes/linkComputer.test.ts index a2d2d791a8..00db81895a 100644 --- a/src/vs/editor/test/common/modes/linkComputer.test.ts +++ b/src/vs/editor/test/common/modes/linkComputer.test.ts @@ -223,4 +223,11 @@ suite('Editor Modes - Link Computer', () => { ' https://foo.bar/[this is foo site] ' ); }); + + test('issue #100353: Link detection stops at &(double-byte)', () => { + assertLink( + 'aa http://tree-mark.chips.jp/レーズン&ベリーミックス aa', + ' http://tree-mark.chips.jp/レーズン&ベリーミックス ' + ); + }); }); diff --git a/src/vs/loader.js b/src/vs/loader.js index 3766be1e0b..4b7859605a 100644 --- a/src/vs/loader.js +++ b/src/vs/loader.js @@ -624,17 +624,34 @@ var AMDLoader; script.addEventListener('error', errorEventListener); }; BrowserScriptLoader.prototype.load = function (moduleManager, scriptSrc, callback, errorback) { - var script = document.createElement('script'); - script.setAttribute('async', 'async'); - script.setAttribute('type', 'text/javascript'); - this.attachListeners(script, callback, errorback); - script.setAttribute('src', scriptSrc); - // Propagate CSP nonce to dynamically created script tag. - var cspNonce = moduleManager.getConfig().getOptionsLiteral().cspNonce; - if (cspNonce) { - script.setAttribute('nonce', cspNonce); + if (/^node\|/.test(scriptSrc)) { + var opts = moduleManager.getConfig().getOptionsLiteral(); + var nodeRequire = (opts.nodeRequire || AMDLoader.global.nodeRequire); + var pieces = scriptSrc.split('|'); + var moduleExports_1 = null; + try { + moduleExports_1 = nodeRequire(pieces[1]); + } + catch (err) { + errorback(err); + return; + } + moduleManager.enqueueDefineAnonymousModule([], function () { return moduleExports_1; }); + callback(); + } + else { + var script = document.createElement('script'); + script.setAttribute('async', 'async'); + script.setAttribute('type', 'text/javascript'); + this.attachListeners(script, callback, errorback); + script.setAttribute('src', scriptSrc); + // Propagate CSP nonce to dynamically created script tag. + var cspNonce = moduleManager.getConfig().getOptionsLiteral().cspNonce; + if (cspNonce) { + script.setAttribute('nonce', cspNonce); + } + document.getElementsByTagName('head')[0].appendChild(script); } - document.getElementsByTagName('head')[0].appendChild(script); }; return BrowserScriptLoader; }()); @@ -742,15 +759,15 @@ var AMDLoader; var recorder = moduleManager.getRecorder(); if (/^node\|/.test(scriptSrc)) { var pieces = scriptSrc.split('|'); - var moduleExports_1 = null; + var moduleExports_2 = null; try { - moduleExports_1 = nodeRequire(pieces[1]); + moduleExports_2 = nodeRequire(pieces[1]); } catch (err) { errorback(err); return; } - moduleManager.enqueueDefineAnonymousModule([], function () { return moduleExports_1; }); + moduleManager.enqueueDefineAnonymousModule([], function () { return moduleExports_2; }); callback(); } else { diff --git a/src/vs/monaco.d.ts b/src/vs/monaco.d.ts index d12548284f..55d707eaa5 100644 --- a/src/vs/monaco.d.ts +++ b/src/vs/monaco.d.ts @@ -1117,9 +1117,12 @@ declare namespace monaco.editor { wordBasedSuggestions?: boolean; /** * Controls whether the semanticHighlighting is shown for the languages that support it. - * Defaults to true. + * true: semanticHighlighting is enabled for all themes + * false: semanticHighlighting is disabled for all themes + * 'configuredByTheme': semanticHighlighting is controlled by the current color theme's semanticHighlighting setting. + * Defaults to 'byTheme'. */ - 'semanticHighlighting.enabled'?: boolean; + 'semanticHighlighting.enabled'?: true | false | 'configuredByTheme'; /** * Keep peek editors open even when double clicking their content or when hitting `Escape`. * Defaults to false. @@ -3129,6 +3132,10 @@ declare namespace monaco.editor { * Defaults to false. */ definitionLinkOpensInPeek?: boolean; + /** + * Controls strikethrough deprecated variables. + */ + showDeprecated?: boolean; } export interface IEditorConstructionOptions extends IEditorOptions { @@ -3949,11 +3956,12 @@ declare namespace monaco.editor { wordWrapMinified = 109, wrappingIndent = 110, wrappingStrategy = 111, - editorClassName = 112, - pixelRatio = 113, - tabFocusMode = 114, - layoutInfo = 115, - wrappingInfo = 116 + showDeprecated = 112, + editorClassName = 113, + pixelRatio = 114, + tabFocusMode = 115, + layoutInfo = 116, + wrappingInfo = 117 } export const EditorOptions: { acceptSuggestionOnCommitCharacter: IEditorOption; @@ -4049,6 +4057,7 @@ declare namespace monaco.editor { selectOnLineNumbers: IEditorOption; showFoldingControls: IEditorOption; showUnused: IEditorOption; + showDeprecated: IEditorOption; snippetSuggestions: IEditorOption; smoothScrolling: IEditorOption; stopRenderingLineAfter: IEditorOption; diff --git a/src/vs/platform/clipboard/browser/clipboardService.ts b/src/vs/platform/clipboard/browser/clipboardService.ts index 3eb7c55adc..11b3e009a3 100644 --- a/src/vs/platform/clipboard/browser/clipboardService.ts +++ b/src/vs/platform/clipboard/browser/clipboardService.ts @@ -97,14 +97,4 @@ export class BrowserClipboardService implements IClipboardService { async hasResources(): Promise { return this.resources.length > 0; } - - /** @deprecated */ - readFindTextSync(): string { - return this.findText; - } - - /** @deprecated */ - writeFindTextSync(text: string): void { - this.findText = text; - } } diff --git a/src/vs/platform/clipboard/common/clipboardService.ts b/src/vs/platform/clipboard/common/clipboardService.ts index 699278df8c..eb3b4bffce 100644 --- a/src/vs/platform/clipboard/common/clipboardService.ts +++ b/src/vs/platform/clipboard/common/clipboardService.ts @@ -46,12 +46,4 @@ export interface IClipboardService { * Find out if resources are copied to the clipboard. */ hasResources(): Promise; - - - - /** @deprecated */ - readFindTextSync(): string; - - /** @deprecated */ - writeFindTextSync(text: string): void; } diff --git a/src/vs/platform/contextkey/common/contextkey.ts b/src/vs/platform/contextkey/common/contextkey.ts index 731c5c5308..b33579a355 100644 --- a/src/vs/platform/contextkey/common/contextkey.ts +++ b/src/vs/platform/contextkey/common/contextkey.ts @@ -660,16 +660,7 @@ export class ContextKeyNotRegexExpr implements IContextKeyExpression { export class ContextKeyAndExpr implements IContextKeyExpression { public static create(_expr: ReadonlyArray): ContextKeyExpression | undefined { - const expr = ContextKeyAndExpr._normalizeArr(_expr); - if (expr.length === 0) { - return undefined; - } - - if (expr.length === 1) { - return expr[0]; - } - - return new ContextKeyAndExpr(expr); + return ContextKeyAndExpr._normalizeArr(_expr); } public readonly type = ContextKeyExprType.And; @@ -720,7 +711,7 @@ export class ContextKeyAndExpr implements IContextKeyExpression { return true; } - private static _normalizeArr(arr: ReadonlyArray): ContextKeyExpression[] { + private static _normalizeArr(arr: ReadonlyArray): ContextKeyExpression | undefined { const expr: ContextKeyExpression[] = []; let hasTrue = false; @@ -737,7 +728,7 @@ export class ContextKeyAndExpr implements IContextKeyExpression { if (e.type === ContextKeyExprType.False) { // anything && false ==> false - return [ContextKeyFalseExpr.INSTANCE]; + return ContextKeyFalseExpr.INSTANCE; } if (e.type === ContextKeyExprType.And) { @@ -745,21 +736,48 @@ export class ContextKeyAndExpr implements IContextKeyExpression { continue; } - if (e.type === ContextKeyExprType.Or) { - // Not allowed, because we don't have parens! - throw new Error(`It is not allowed to have an or expression here due to lack of parens! For example "a && (b||c)" is not supported, use "(a&&b) || (a&&c)" instead.`); - } - expr.push(e); } if (expr.length === 0 && hasTrue) { - return [ContextKeyTrueExpr.INSTANCE]; + return ContextKeyTrueExpr.INSTANCE; + } + + if (expr.length === 0) { + return undefined; + } + + if (expr.length === 1) { + return expr[0]; } expr.sort(cmp); - return expr; + // We must distribute any OR expression because we don't support parens + // OR extensions will be at the end (due to sorting rules) + while (expr.length > 1) { + const lastElement = expr[expr.length - 1]; + if (lastElement.type !== ContextKeyExprType.Or) { + break; + } + // pop the last element + expr.pop(); + + // pop the second to last element + const secondToLastElement = expr.pop()!; + + // distribute `lastElement` over `secondToLastElement` + const resultElement = ContextKeyOrExpr.create( + lastElement.expr.map(el => ContextKeyAndExpr.create([el, secondToLastElement])) + ); + + if (resultElement) { + expr.push(resultElement); + expr.sort(cmp); + } + } + + return new ContextKeyAndExpr(expr); } public serialize(): string { diff --git a/src/vs/platform/contextkey/test/common/contextkey.test.ts b/src/vs/platform/contextkey/test/common/contextkey.test.ts index bcf23e3bb6..19baf98d18 100644 --- a/src/vs/platform/contextkey/test/common/contextkey.test.ts +++ b/src/vs/platform/contextkey/test/common/contextkey.test.ts @@ -148,4 +148,18 @@ suite('ContextKeyExpr', () => { testNormalize('isLinux', isLinux ? 'true' : 'false'); testNormalize('isWindows', isWindows ? 'true' : 'false'); }); + + test('issue #101015: distribute OR', () => { + function t(expr1: string, expr2: string, expected: string | undefined): void { + const e1 = ContextKeyExpr.deserialize(expr1); + const e2 = ContextKeyExpr.deserialize(expr2); + const actual = ContextKeyExpr.and(e1, e2)?.serialize(); + assert.strictEqual(actual, expected); + } + t('a', 'b', 'a && b'); + t('a || b', 'c', 'a && c || b && c'); + t('a || b', 'c || d', 'a && c || b && c || a && d || b && d'); + t('a || b', 'c && d', 'a && c && d || b && c && d'); + t('a || b', 'c && d || e', 'a && e || b && e || a && c && d || b && c && d'); + }); }); diff --git a/src/vs/platform/contextview/browser/contextView.ts b/src/vs/platform/contextview/browser/contextView.ts index ced2f3b6d4..328916929b 100644 --- a/src/vs/platform/contextview/browser/contextView.ts +++ b/src/vs/platform/contextview/browser/contextView.ts @@ -15,7 +15,7 @@ export interface IContextViewService extends IContextViewProvider { readonly _serviceBrand: undefined; - showContextView(delegate: IContextViewDelegate, container?: HTMLElement): void; + showContextView(delegate: IContextViewDelegate, container?: HTMLElement): IDisposable; hideContextView(data?: any): void; layout(): void; anchorAlignment?: AnchorAlignment; diff --git a/src/vs/platform/contextview/browser/contextViewService.ts b/src/vs/platform/contextview/browser/contextViewService.ts index 6951394896..1875694c0b 100644 --- a/src/vs/platform/contextview/browser/contextViewService.ts +++ b/src/vs/platform/contextview/browser/contextViewService.ts @@ -5,12 +5,13 @@ import { IContextViewService, IContextViewDelegate } from './contextView'; import { ContextView } from 'vs/base/browser/ui/contextview/contextview'; -import { Disposable } from 'vs/base/common/lifecycle'; +import { Disposable, IDisposable, toDisposable } from 'vs/base/common/lifecycle'; import { ILayoutService } from 'vs/platform/layout/browser/layoutService'; export class ContextViewService extends Disposable implements IContextViewService { declare readonly _serviceBrand: undefined; + private currentViewDisposable: IDisposable = Disposable.None; private contextView: ContextView; private container: HTMLElement; @@ -32,8 +33,7 @@ export class ContextViewService extends Disposable implements IContextViewServic this.contextView.setContainer(container, !!useFixedPosition); } - showContextView(delegate: IContextViewDelegate, container?: HTMLElement): void { - + showContextView(delegate: IContextViewDelegate, container?: HTMLElement): IDisposable { if (container) { if (container !== this.container) { this.container = container; @@ -47,6 +47,15 @@ export class ContextViewService extends Disposable implements IContextViewServic } this.contextView.show(delegate); + + const disposable = toDisposable(() => { + if (this.currentViewDisposable === disposable) { + this.hideContextView(); + } + }); + + this.currentViewDisposable = disposable; + return disposable; } layout(): void { diff --git a/src/vs/platform/debug/common/extensionHostDebug.ts b/src/vs/platform/debug/common/extensionHostDebug.ts index 18d17e975b..147b9e9534 100644 --- a/src/vs/platform/debug/common/extensionHostDebug.ts +++ b/src/vs/platform/debug/common/extensionHostDebug.ts @@ -34,6 +34,10 @@ export interface ICloseSessionEvent { sessionId: string; } +export interface IOpenExtensionWindowResult { + rendererDebugPort?: number; +} + export interface IExtensionHostDebugService { readonly _serviceBrand: undefined; @@ -52,5 +56,5 @@ export interface IExtensionHostDebugService { terminateSession(sessionId: string, subId?: string): void; readonly onTerminateSession: Event; - openExtensionDevelopmentHostWindow(args: string[], env: IProcessEnvironment): Promise; + openExtensionDevelopmentHostWindow(args: string[], env: IProcessEnvironment, debugRenderer: boolean): Promise; } diff --git a/src/vs/platform/debug/common/extensionHostDebugIpc.ts b/src/vs/platform/debug/common/extensionHostDebugIpc.ts index 1ec08748c2..f8c267bc7e 100644 --- a/src/vs/platform/debug/common/extensionHostDebugIpc.ts +++ b/src/vs/platform/debug/common/extensionHostDebugIpc.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { IServerChannel, IChannel } from 'vs/base/parts/ipc/common/ipc'; -import { IReloadSessionEvent, ICloseSessionEvent, IAttachSessionEvent, ILogToSessionEvent, ITerminateSessionEvent, IExtensionHostDebugService } from 'vs/platform/debug/common/extensionHostDebug'; +import { IReloadSessionEvent, ICloseSessionEvent, IAttachSessionEvent, ILogToSessionEvent, ITerminateSessionEvent, IExtensionHostDebugService, IOpenExtensionWindowResult } from 'vs/platform/debug/common/extensionHostDebug'; import { Event, Emitter } from 'vs/base/common/event'; import { IRemoteConsoleLog } from 'vs/base/common/console'; import { Disposable } from 'vs/base/common/lifecycle'; @@ -101,7 +101,7 @@ export class ExtensionHostDebugChannelClient extends Disposable implements IExte return this.channel.listen('terminate'); } - openExtensionDevelopmentHostWindow(args: string[], env: IProcessEnvironment): Promise { - return this.channel.call('openExtensionDevelopmentHostWindow', [args, env]); + openExtensionDevelopmentHostWindow(args: string[], env: IProcessEnvironment, debugRenderer: boolean): Promise { + return this.channel.call('openExtensionDevelopmentHostWindow', [args, env, debugRenderer]); } } diff --git a/src/vs/platform/driver/electron-browser/driver.ts b/src/vs/platform/driver/electron-browser/driver.ts index ac57c89d9e..445e12eadd 100644 --- a/src/vs/platform/driver/electron-browser/driver.ts +++ b/src/vs/platform/driver/electron-browser/driver.ts @@ -7,7 +7,6 @@ import { IDisposable, toDisposable } from 'vs/base/common/lifecycle'; import { WindowDriverChannel, WindowDriverRegistryChannelClient } from 'vs/platform/driver/node/driver'; import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; import { IMainProcessService } from 'vs/platform/ipc/electron-sandbox/mainProcessService'; -import { remote } from 'electron'; import { timeout } from 'vs/base/common/async'; import { BaseWindowDriver } from 'vs/platform/driver/browser/baseDriver'; import { IElectronService } from 'vs/platform/electron/electron-sandbox/electron'; @@ -32,11 +31,10 @@ class WindowDriver extends BaseWindowDriver { private async _click(selector: string, clickCount: number, offset?: { x: number, y: number }): Promise { const { x, y } = await this._getElementXY(selector, offset); - const webContents = remote.getCurrentWebContents(); - webContents.sendInputEvent({ type: 'mouseDown', x, y, button: 'left', clickCount } as any); + await this.electronService.sendInputEvent({ type: 'mouseDown', x, y, button: 'left', clickCount } as any); await timeout(10); - webContents.sendInputEvent({ type: 'mouseUp', x, y, button: 'left', clickCount } as any); + await this.electronService.sendInputEvent({ type: 'mouseUp', x, y, button: 'left', clickCount } as any); await timeout(100); } diff --git a/src/vs/platform/electron/common/electron.ts b/src/vs/platform/electron/common/electron.ts index b929b9de00..c9d71e5cf4 100644 --- a/src/vs/platform/electron/common/electron.ts +++ b/src/vs/platform/electron/common/electron.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { Event } from 'vs/base/common/event'; -import { MessageBoxOptions, MessageBoxReturnValue, OpenDevToolsOptions, SaveDialogOptions, OpenDialogOptions, OpenDialogReturnValue, SaveDialogReturnValue, CrashReporterStartOptions } from 'vs/base/parts/sandbox/common/electronTypes'; +import { MessageBoxOptions, MessageBoxReturnValue, OpenDevToolsOptions, SaveDialogOptions, OpenDialogOptions, OpenDialogReturnValue, SaveDialogReturnValue, CrashReporterStartOptions, MouseInputEvent } from 'vs/base/parts/sandbox/common/electronTypes'; import { IOpenedWindow, IWindowOpenable, IOpenEmptyWindowOptions, IOpenWindowOptions } from 'vs/platform/windows/common/windows'; import { INativeOpenDialogOptions } from 'vs/platform/dialogs/common/dialogs'; import { ISerializableCommandAction } from 'vs/platform/actions/common/actions'; @@ -94,6 +94,7 @@ export interface ICommonElectronService { openDevTools(options?: OpenDevToolsOptions): Promise; toggleDevTools(): Promise; startCrashReporter(options: CrashReporterStartOptions): Promise; + sendInputEvent(event: MouseInputEvent): Promise; // Connectivity resolveProxy(url: string): Promise; diff --git a/src/vs/platform/electron/electron-main/electronMainService.ts b/src/vs/platform/electron/electron-main/electronMainService.ts index b074f41877..3121bc6fda 100644 --- a/src/vs/platform/electron/electron-main/electronMainService.ts +++ b/src/vs/platform/electron/electron-main/electronMainService.ts @@ -22,6 +22,7 @@ import { ITelemetryData, ITelemetryService } from 'vs/platform/telemetry/common/ import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { ILogService } from 'vs/platform/log/common/log'; import { INativeEnvironmentService } from 'vs/platform/environment/node/environmentService'; +import { MouseInputEvent } from 'vs/base/parts/sandbox/common/electronTypes'; export interface IElectronMainService extends AddFirstParameterToFunctions /* only methods, not events */, number | undefined /* window ID */> { } @@ -179,11 +180,7 @@ export class ElectronMainService implements IElectronMainService { const window = this.windowById(windowId); if (window) { - if (isMacintosh) { - window.win.show(); - } else { - window.win.focus(); - } + window.focus(); } } @@ -327,7 +324,7 @@ export class ElectronMainService implements IElectronMainService { } async writeClipboardBuffer(windowId: number | undefined, format: string, buffer: Uint8Array, type?: 'selection' | 'clipboard'): Promise { - return clipboard.writeBuffer(format, buffer as Buffer, type); + return clipboard.writeBuffer(format, Buffer.from(buffer), type); } async readClipboardBuffer(windowId: number | undefined, format: string): Promise { @@ -463,6 +460,13 @@ export class ElectronMainService implements IElectronMainService { crashReporter.start(options); } + async sendInputEvent(windowId: number | undefined, event: MouseInputEvent): Promise { + const window = this.windowById(windowId); + if (window && (event.type === 'mouseDown' || event.type === 'mouseUp')) { + window.win.webContents.sendInputEvent(event); + } + } + //#endregion private windowById(windowId: number | undefined): ICodeWindow | undefined { diff --git a/src/vs/platform/environment/node/argv.ts b/src/vs/platform/environment/node/argv.ts index b41435e429..61b243a602 100644 --- a/src/vs/platform/environment/node/argv.ts +++ b/src/vs/platform/environment/node/argv.ts @@ -4,8 +4,8 @@ *--------------------------------------------------------------------------------------------*/ import * as minimist from 'minimist'; -import * as os from 'os'; import { localize } from 'vs/nls'; +import { isWindows } from 'vs/base/common/platform'; export interface ParsedArgs { _: string[]; @@ -382,7 +382,7 @@ export function buildHelpMessage(productName: string, executableName: string, ve help.push(`${localize('usage', "Usage")}: ${executableName} [${localize('options', "options")}][${localize('paths', 'paths')}...]`); help.push(''); if (isPipeSupported) { - if (os.platform() === 'win32') { + if (isWindows) { help.push(localize('stdinWindows', "To read output from another program, append '-' (e.g. 'echo Hello World | {0} -')", executableName)); } else { help.push(localize('stdinUnix', "To read from stdin, append '-' (e.g. 'ps aux | grep code | {0} -')", executableName)); diff --git a/src/vs/platform/environment/node/stdin.ts b/src/vs/platform/environment/node/stdin.ts index ed051c5819..c997051e87 100644 --- a/src/vs/platform/environment/node/stdin.ts +++ b/src/vs/platform/environment/node/stdin.ts @@ -46,13 +46,19 @@ export async function readFromStdin(targetPath: string, verbose: boolean): Promi let encoding = await resolveTerminalEncoding(verbose); - const iconv = await import('iconv-lite'); + const iconv = await import('iconv-lite-umd'); if (!iconv.encodingExists(encoding)) { console.log(`Unsupported terminal encoding: ${encoding}, falling back to UTF-8.`); encoding = 'utf8'; } // Pipe into tmp file using terminals encoding - const converterStream = iconv.decodeStream(encoding); - process.stdin.pipe(converterStream).pipe(stdinFileStream); + const decoder = iconv.getDecoder(encoding); + process.stdin.on('data', chunk => stdinFileStream.write(decoder.write(chunk))); + process.stdin.on('end', () => { + stdinFileStream.write(decoder.end()); + stdinFileStream.end(); + }); + process.stdin.on('error', error => stdinFileStream.destroy(error)); + process.stdin.on('close', () => stdinFileStream.close()); } diff --git a/src/vs/platform/extensionManagement/common/extensionGalleryService.ts b/src/vs/platform/extensionManagement/common/extensionGalleryService.ts index 9008f5c977..814b6aec36 100644 --- a/src/vs/platform/extensionManagement/common/extensionGalleryService.ts +++ b/src/vs/platform/extensionManagement/common/extensionGalleryService.ts @@ -339,6 +339,8 @@ function toExtension(galleryExtension: IRawGalleryExtension, version: IRawGaller installCount: getStatistic(galleryExtension.statistics, 'install'), rating: getStatistic(galleryExtension.statistics, 'averagerating'), ratingCount: getStatistic(galleryExtension.statistics, 'ratingcount'), + assetUri: URI.parse(version.assetUri), + assetTypes: version.files.map(({ assetType }) => assetType), assets, properties: { dependencies: getExtensions(version, PropertyType.Dependency), @@ -769,7 +771,7 @@ export class ExtensionGalleryService implements IExtensionGalleryService { return Promise.resolve(''); } - getAllVersions(extension: IGalleryExtension, compatible: boolean): Promise { + async getAllVersions(extension: IGalleryExtension, compatible: boolean): Promise { let query = new Query() .withFlags(Flags.IncludeVersions, Flags.IncludeFiles, Flags.IncludeVersionProperties) .withPage(1, 1) @@ -781,19 +783,24 @@ export class ExtensionGalleryService implements IExtensionGalleryService { query = query.withFilter(FilterType.ExtensionName, extension.identifier.id); } - return this.queryGallery(query, CancellationToken.None).then(({ galleryExtensions }) => { - if (galleryExtensions.length) { - if (compatible) { - return Promise.all(galleryExtensions[0].versions.map(v => this.getEngine(v).then(engine => isEngineValid(engine, this.productService.version) ? v : null))) - .then(versions => versions - .filter(v => !!v) - .map(v => ({ version: v!.version, date: v!.lastUpdated }))); - } else { - return galleryExtensions[0].versions.map(v => ({ version: v.version, date: v.lastUpdated })); - } + const result: IGalleryExtensionVersion[] = []; + const { galleryExtensions } = await this.queryGallery(query, CancellationToken.None); + if (galleryExtensions.length) { + if (compatible) { + await Promise.all(galleryExtensions[0].versions.map(async v => { + let engine: string | undefined; + try { + engine = await this.getEngine(v); + } catch (error) { /* Ignore error and skip version */ } + if (engine && isEngineValid(engine, this.productService.version)) { + result.push({ version: v!.version, date: v!.lastUpdated }); + } + })); + } else { + result.push(...galleryExtensions[0].versions.map(v => ({ version: v.version, date: v.lastUpdated }))); } - return []; - }); + } + return result; } private getAsset(asset: IGalleryExtensionAsset, options: IRequestOptions = {}, token: CancellationToken = CancellationToken.None): Promise { diff --git a/src/vs/platform/extensionManagement/common/extensionManagement.ts b/src/vs/platform/extensionManagement/common/extensionManagement.ts index c3579cde72..57725dba9b 100644 --- a/src/vs/platform/extensionManagement/common/extensionManagement.ts +++ b/src/vs/platform/extensionManagement/common/extensionManagement.ts @@ -82,6 +82,8 @@ export interface IGalleryExtension { installCount: number; rating: number; ratingCount: number; + assetUri: URI; + assetTypes: string[]; assets: IGalleryExtensionAssets; properties: IGalleryExtensionProperties; telemetryData: any; @@ -95,17 +97,11 @@ export interface IGalleryMetadata { } export interface ILocalExtension extends IExtension { - readonly manifest: IExtensionManifest; isMachineScoped: boolean; publisherId: string | null; publisherDisplayName: string | null; - readmeUrl: URI | null; - changelogUrl: URI | null; } -export const IExtensionManagementService = createDecorator('extensionManagementService'); -export const IExtensionGalleryService = createDecorator('extensionGalleryService'); - export const enum SortBy { NoneOrRelevance = 0, LastUpdatedDate = 1, @@ -152,6 +148,7 @@ export interface ITranslation { contents: { [key: string]: {} }; } +export const IExtensionGalleryService = createDecorator('extensionGalleryService'); export interface IExtensionGalleryService { readonly _serviceBrand: undefined; isEnabled(): boolean; @@ -199,6 +196,7 @@ export class ExtensionManagementError extends Error { } } +export const IExtensionManagementService = createDecorator('extensionManagementService'); export interface IExtensionManagementService { readonly _serviceBrand: undefined; diff --git a/src/vs/platform/extensionManagement/node/extensionsScanner.ts b/src/vs/platform/extensionManagement/node/extensionsScanner.ts index b905ce5b9f..997e97bc8d 100644 --- a/src/vs/platform/extensionManagement/node/extensionsScanner.ts +++ b/src/vs/platform/extensionManagement/node/extensionsScanner.ts @@ -228,9 +228,9 @@ export class ExtensionsScanner extends Disposable { const children = await pfs.readdir(extensionPath); const { manifest, metadata } = await this.readManifest(extensionPath); const readme = children.filter(child => /^readme(\.txt|\.md|)$/i.test(child))[0]; - const readmeUrl = readme ? URI.file(path.join(extensionPath, readme)) : null; + const readmeUrl = readme ? URI.file(path.join(extensionPath, readme)) : undefined; const changelog = children.filter(child => /^changelog(\.txt|\.md|)$/i.test(child))[0]; - const changelogUrl = changelog ? URI.file(path.join(extensionPath, changelog)) : null; + const changelogUrl = changelog ? URI.file(path.join(extensionPath, changelog)) : undefined; const identifier = { id: getGalleryExtensionId(manifest.publisher, manifest.name) }; const local = { type, identifier, manifest, location: URI.file(extensionPath), readmeUrl, changelogUrl, publisherDisplayName: null, publisherId: null, isMachineScoped: false }; if (metadata) { diff --git a/src/vs/platform/extensions/common/extensions.ts b/src/vs/platform/extensions/common/extensions.ts index 25b4c9a0b5..b18ed3c7fd 100644 --- a/src/vs/platform/extensions/common/extensions.ts +++ b/src/vs/platform/extensions/common/extensions.ts @@ -6,6 +6,7 @@ import * as strings from 'vs/base/common/strings'; import { ILocalization } from 'vs/platform/localizations/common/localizations'; import { URI } from 'vs/base/common/uri'; +import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; export const MANIFEST_CACHE_FOLDER = 'CachedExtensions'; export const USER_MANIFEST_CACHE_FILE = 'user'; @@ -148,6 +149,9 @@ export interface IExtensionIdentifier { uuid?: string; } +export const EXTENSION_CATEGORIES = ['Programming Languages', 'Snippets', 'Linters', 'Themes', 'Debuggers', 'Other', 'Keymaps', 'Formatters', 'Extension Packs', + 'SCM Providers', 'Azure', 'Language Packs', 'Data Science', 'Machine Learning', 'Visualization', 'Testing', 'Notebooks']; + export interface IExtensionManifest { readonly name: string; readonly displayName?: string; @@ -183,6 +187,8 @@ export interface IExtension { readonly identifier: IExtensionIdentifier; readonly manifest: IExtensionManifest; readonly location: URI; + readonly readmeUrl?: URI; + readonly changelogUrl?: URI; } /** @@ -253,3 +259,19 @@ export interface IExtensionDescription extends IExtensionManifest { export function isLanguagePackExtension(manifest: IExtensionManifest): boolean { return manifest.contributes && manifest.contributes.localizations ? manifest.contributes.localizations.length > 0 : false; } + +export interface IScannedExtension { + readonly identifier: IExtensionIdentifier; + readonly location: URI; + readonly type: ExtensionType; + readonly packageJSON: IExtensionManifest + readonly packageNLSUrl?: URI; + readonly readmeUrl?: URI; + readonly changelogUrl?: URI; +} + +export const IBuiltinExtensionsScannerService = createDecorator('IBuiltinExtensionsScannerService'); +export interface IBuiltinExtensionsScannerService { + readonly _serviceBrand: undefined; + scanBuiltinExtensions(): Promise; +} diff --git a/src/vs/platform/files/browser/indexedDBFileSystemProvider.ts b/src/vs/platform/files/browser/indexedDBFileSystemProvider.ts new file mode 100644 index 0000000000..1bba68b6dd --- /dev/null +++ b/src/vs/platform/files/browser/indexedDBFileSystemProvider.ts @@ -0,0 +1,125 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { KeyValueFileSystemProvider } from 'vs/platform/files/common/keyValueFileSystemProvider'; +import * as browser from 'vs/base/browser/browser'; +import { IFileSystemProvider } from 'vs/platform/files/common/files'; + +const INDEXEDDB_VSCODE_DB = 'vscode-web-db'; +export const INDEXEDDB_USERDATA_OBJECT_STORE = 'vscode-userdata-store'; +export const INDEXEDDB_LOGS_OBJECT_STORE = 'vscode-logs-store'; + +export class IndexedDB { + + private indexedDBPromise: Promise; + + constructor() { + this.indexedDBPromise = this.openIndexedDB(INDEXEDDB_VSCODE_DB, 2, [INDEXEDDB_USERDATA_OBJECT_STORE, INDEXEDDB_LOGS_OBJECT_STORE]); + } + + async createFileSystemProvider(scheme: string, store: string): Promise { + let fsp: IFileSystemProvider | null = null; + const indexedDB = await this.indexedDBPromise; + if (indexedDB) { + if (indexedDB.objectStoreNames.contains(store)) { + fsp = new IndexedDBFileSystemProvider(scheme, indexedDB, store); + } else { + console.error(`Error while creating indexedDB filesystem provider. Could not find ${store} object store`); + } + } + return fsp; + } + + private openIndexedDB(name: string, version: number, stores: string[]): Promise { + if (browser.isEdge) { + return Promise.resolve(null); + } + return new Promise((c, e) => { + const request = window.indexedDB.open(name, version); + request.onerror = (err) => e(request.error); + request.onsuccess = () => { + const db = request.result; + for (const store of stores) { + if (!db.objectStoreNames.contains(store)) { + console.error(`Error while creating indexedDB. Could not create ${store} object store`); + c(null); + return; + } + } + c(db); + }; + request.onupgradeneeded = () => { + const db = request.result; + for (const store of stores) { + if (!db.objectStoreNames.contains(store)) { + db.createObjectStore(store); + } + } + }; + }); + } + +} + + + +class IndexedDBFileSystemProvider extends KeyValueFileSystemProvider { + + constructor(scheme: string, private readonly database: IDBDatabase, private readonly store: string) { + super(scheme); + } + + protected async getAllKeys(): Promise { + return new Promise(async (c, e) => { + const transaction = this.database.transaction([this.store]); + const objectStore = transaction.objectStore(this.store); + const request = objectStore.getAllKeys(); + request.onerror = () => e(request.error); + request.onsuccess = () => c(request.result); + }); + } + + protected hasKey(key: string): Promise { + return new Promise(async (c, e) => { + const transaction = this.database.transaction([this.store]); + const objectStore = transaction.objectStore(this.store); + const request = objectStore.getKey(key); + request.onerror = () => e(request.error); + request.onsuccess = () => { + c(!!request.result); + }; + }); + } + + protected getValue(key: string): Promise { + return new Promise(async (c, e) => { + const transaction = this.database.transaction([this.store]); + const objectStore = transaction.objectStore(this.store); + const request = objectStore.get(key); + request.onerror = () => e(request.error); + request.onsuccess = () => c(request.result || ''); + }); + } + + protected setValue(key: string, value: string): Promise { + return new Promise(async (c, e) => { + const transaction = this.database.transaction([this.store], 'readwrite'); + const objectStore = transaction.objectStore(this.store); + const request = objectStore.put(value, key); + request.onerror = () => e(request.error); + request.onsuccess = () => c(); + }); + } + + protected deleteKey(key: string): Promise { + return new Promise(async (c, e) => { + const transaction = this.database.transaction([this.store], 'readwrite'); + const objectStore = transaction.objectStore(this.store); + const request = objectStore.delete(key); + request.onerror = () => e(request.error); + request.onsuccess = () => c(); + }); + } +} diff --git a/src/vs/platform/files/common/fileService.ts b/src/vs/platform/files/common/fileService.ts index 4e48812f89..bd858b2bd7 100644 --- a/src/vs/platform/files/common/fileService.ts +++ b/src/vs/platform/files/common/fileService.ts @@ -287,12 +287,28 @@ export class FileService extends Disposable implements IFileService { //#region File Reading/Writing - async createFile(resource: URI, bufferOrReadableOrStream: VSBuffer | VSBufferReadable | VSBufferReadableStream = VSBuffer.fromString(''), options?: ICreateFileOptions): Promise { + async canCreateFile(resource: URI, options?: ICreateFileOptions): Promise { + try { + await this.doValidateCreateFile(resource, options); + } catch (error) { + return error; + } + + return true; + } + + private async doValidateCreateFile(resource: URI, options?: ICreateFileOptions): Promise { // validate overwrite if (!options?.overwrite && await this.exists(resource)) { throw new FileOperationError(localize('fileExists', "Unable to create file '{0}' that already exists when overwrite flag is not set", this.resourceForError(resource)), FileOperationResult.FILE_MODIFIED_SINCE, options); } + } + + async createFile(resource: URI, bufferOrReadableOrStream: VSBuffer | VSBufferReadable | VSBufferReadableStream = VSBuffer.fromString(''), options?: ICreateFileOptions): Promise { + + // validate + await this.doValidateCreateFile(resource, options); // do write into file (this will create it too) const fileStat = await this.writeFile(resource, bufferOrReadableOrStream); diff --git a/src/vs/platform/files/common/files.ts b/src/vs/platform/files/common/files.ts index 7e1c2372da..52a17ad982 100644 --- a/src/vs/platform/files/common/files.ts +++ b/src/vs/platform/files/common/files.ts @@ -140,6 +140,12 @@ export interface IFileService { */ canCopy(source: URI, target: URI, overwrite?: boolean): Promise; + /** + * Find out if a file create operation is possible given the arguments. No changes on disk will + * be performed. Returns an Error if the operation cannot be done. + */ + canCreateFile(resource: URI, options?: ICreateFileOptions): Promise; + /** * Creates a new file with the given path and optional contents. The returned promise * will have the stat model object as a result. diff --git a/src/vs/workbench/services/log/common/keyValueLogProvider.ts b/src/vs/platform/files/common/keyValueFileSystemProvider.ts similarity index 85% rename from src/vs/workbench/services/log/common/keyValueLogProvider.ts rename to src/vs/platform/files/common/keyValueFileSystemProvider.ts index 98ebb8c216..5d4c376ceb 100644 --- a/src/vs/workbench/services/log/common/keyValueLogProvider.ts +++ b/src/vs/platform/files/common/keyValueFileSystemProvider.ts @@ -8,11 +8,11 @@ import { IFileSystemProviderWithFileReadWriteCapability, FileSystemProviderCapab import { Disposable, IDisposable } from 'vs/base/common/lifecycle'; import { Event, Emitter } from 'vs/base/common/event'; import { VSBuffer } from 'vs/base/common/buffer'; -import { joinPath, extUri } from 'vs/base/common/resources'; +import { joinPath, extUri, dirname } from 'vs/base/common/resources'; import { values } from 'vs/base/common/map'; import { localize } from 'vs/nls'; -export abstract class KeyValueLogProvider extends Disposable implements IFileSystemProviderWithFileReadWriteCapability { +export abstract class KeyValueFileSystemProvider extends Disposable implements IFileSystemProviderWithFileReadWriteCapability { readonly capabilities: FileSystemProviderCapabilities = FileSystemProviderCapabilities.FileReadWrite @@ -23,9 +23,12 @@ export abstract class KeyValueLogProvider extends Disposable implements IFileSys readonly onDidChangeFile: Event = this._onDidChangeFile.event; private readonly versions: Map = new Map(); + private readonly dirs: Set = new Set(); constructor(private readonly scheme: string) { super(); + // Add root directory by default + this.dirs.add('/'); } watch(resource: URI, opts: IWatchOptions): IDisposable { @@ -33,6 +36,17 @@ export abstract class KeyValueLogProvider extends Disposable implements IFileSys } async mkdir(resource: URI): Promise { + try { + const resourceStat = await this.stat(resource); + if (resourceStat.type === FileType.File) { + throw createFileSystemProviderError(localize('fileNotDirectory', "File is not a directory"), FileSystemProviderErrorCode.FileNotADirectory); + } + } catch (error) { /* Ignore */ } + + // Make sure parent dir exists + await this.stat(dirname(resource)); + + this.dirs.add(resource.path); } async stat(resource: URI): Promise { @@ -55,6 +69,14 @@ export abstract class KeyValueLogProvider extends Disposable implements IFileSys size: 0 }; } + if (this.dirs.has(resource.path)) { + return { + type: FileType.Directory, + ctime: 0, + mtime: 0, + size: 0 + }; + } throw createFileSystemProviderError(localize('fileNotExists', "File does not exist"), FileSystemProviderErrorCode.FileNotFound); } diff --git a/src/vs/platform/files/test/electron-browser/diskFileService.test.ts b/src/vs/platform/files/test/electron-browser/diskFileService.test.ts index 9e508d9d9d..2e43721e10 100644 --- a/src/vs/platform/files/test/electron-browser/diskFileService.test.ts +++ b/src/vs/platform/files/test/electron-browser/diskFileService.test.ts @@ -1611,6 +1611,8 @@ suite.skip('Disk File Service', function () { // {{SQL CARBON EDIT}} Disable occ const contents = 'Hello World'; const resource = URI.file(join(testDir, 'test.txt')); + + assert.equal(await service.canCreateFile(resource), true); const fileStat = await service.createFile(resource, converter(contents)); assert.equal(fileStat.name, 'test.txt'); assert.equal(existsSync(fileStat.resource.fsPath), true); @@ -1628,6 +1630,8 @@ suite.skip('Disk File Service', function () { // {{SQL CARBON EDIT}} Disable occ writeFileSync(resource.fsPath, ''); // create file + assert.ok((await service.canCreateFile(resource)) instanceof Error); + let error; try { await service.createFile(resource, VSBuffer.fromString(contents)); @@ -1647,6 +1651,7 @@ suite.skip('Disk File Service', function () { // {{SQL CARBON EDIT}} Disable occ writeFileSync(resource.fsPath, ''); // create file + assert.equal(await service.canCreateFile(resource, { overwrite: true }), true); const fileStat = await service.createFile(resource, VSBuffer.fromString(contents), { overwrite: true }); assert.equal(fileStat.name, 'test.txt'); assert.equal(existsSync(fileStat.resource.fsPath), true); diff --git a/src/vs/platform/issue/electron-main/issueMainService.ts b/src/vs/platform/issue/electron-main/issueMainService.ts index a8d8cc969e..03e54106e6 100644 --- a/src/vs/platform/issue/electron-main/issueMainService.ts +++ b/src/vs/platform/issue/electron-main/issueMainService.ts @@ -197,6 +197,7 @@ export class IssueMainService implements ICommonIssueService { preload: URI.parse(require.toUrl('vs/base/parts/sandbox/electron-browser/preload.js')).fsPath, nodeIntegration: true, enableWebSQL: false, + enableRemoteModule: false, nativeWindowOpen: true } }); @@ -249,6 +250,7 @@ export class IssueMainService implements ICommonIssueService { preload: URI.parse(require.toUrl('vs/base/parts/sandbox/electron-browser/preload.js')).fsPath, nodeIntegration: true, enableWebSQL: false, + enableRemoteModule: false, nativeWindowOpen: true } }); diff --git a/src/vs/platform/log/common/logIpc.ts b/src/vs/platform/log/common/logIpc.ts index 55aafb0ebe..0d136a0738 100644 --- a/src/vs/platform/log/common/logIpc.ts +++ b/src/vs/platform/log/common/logIpc.ts @@ -75,14 +75,14 @@ export class LoggerChannelClient { export class FollowerLogService extends DelegatedLogService implements ILogService { declare readonly _serviceBrand: undefined; - constructor(private master: LoggerChannelClient, logService: ILogService) { + constructor(private parent: LoggerChannelClient, logService: ILogService) { super(logService); - this._register(master.onDidChangeLogLevel(level => logService.setLevel(level))); + this._register(parent.onDidChangeLogLevel(level => logService.setLevel(level))); } setLevel(level: LogLevel): void { super.setLevel(level); - this.master.setLevel(level); + this.parent.setLevel(level); } } diff --git a/src/vs/platform/remote/common/tunnel.ts b/src/vs/platform/remote/common/tunnel.ts index 6591bbddca..f78f29a9b0 100644 --- a/src/vs/platform/remote/common/tunnel.ts +++ b/src/vs/platform/remote/common/tunnel.ts @@ -8,7 +8,7 @@ import { IDisposable } from 'vs/base/common/lifecycle'; import { URI } from 'vs/base/common/uri'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { ILogService } from 'vs/platform/log/common/log'; -import { IAddress } from 'vs/platform/remote/common/remoteAgentConnection'; +import { IAddressProvider } from 'vs/platform/remote/common/remoteAgentConnection'; export const ITunnelService = createDecorator('tunnelService'); @@ -37,7 +37,7 @@ export interface ITunnelService { readonly onTunnelOpened: Event; readonly onTunnelClosed: Event<{ host: string, port: number }>; - openTunnel(resolveAuthority: IAddress | undefined, remoteHost: string | undefined, remotePort: number, localPort?: number): Promise | undefined; + openTunnel(addressProvider: IAddressProvider | undefined, remoteHost: string | undefined, remotePort: number, localPort?: number): Promise | undefined; closeTunnel(remoteHost: string, remotePort: number): Promise; setTunnelProvider(provider: ITunnelProvider | undefined): IDisposable; } @@ -102,8 +102,8 @@ export abstract class AbstractTunnelService implements ITunnelService { this._tunnels.clear(); } - openTunnel(resolvedAuthority: IAddress | undefined, remoteHost: string | undefined, remotePort: number, localPort: number): Promise | undefined { - if (!resolvedAuthority) { + openTunnel(addressProvider: IAddressProvider | undefined, remoteHost: string | undefined, remotePort: number, localPort: number): Promise | undefined { + if (!addressProvider) { return undefined; } @@ -111,7 +111,7 @@ export abstract class AbstractTunnelService implements ITunnelService { remoteHost = 'localhost'; } - const resolvedTunnel = this.retainOrCreateTunnel(resolvedAuthority, remoteHost, remotePort, localPort); + const resolvedTunnel = this.retainOrCreateTunnel(addressProvider, remoteHost, remotePort, localPort); if (!resolvedTunnel) { return resolvedTunnel; } @@ -174,11 +174,11 @@ export abstract class AbstractTunnelService implements ITunnelService { this._tunnels.get(remoteHost)!.set(remotePort, { refcount: 1, value: tunnel }); } - protected abstract retainOrCreateTunnel(resolveRemoteAuthority: IAddress, remoteHost: string, remotePort: number, localPort?: number): Promise | undefined; + protected abstract retainOrCreateTunnel(addressProvider: IAddressProvider, remoteHost: string, remotePort: number, localPort?: number): Promise | undefined; } export class TunnelService extends AbstractTunnelService { - protected retainOrCreateTunnel(_resolveRemoteAuthority: IAddress, remoteHost: string, remotePort: number, localPort?: number | undefined): Promise | undefined { + protected retainOrCreateTunnel(_addressProvider: IAddressProvider, remoteHost: string, remotePort: number, localPort?: number | undefined): Promise | undefined { const portMap = this._tunnels.get(remoteHost); const existing = portMap ? portMap.get(remotePort) : undefined; if (existing) { diff --git a/src/vs/platform/remote/node/tunnelService.ts b/src/vs/platform/remote/node/tunnelService.ts index b56cb1373b..fa3398cf41 100644 --- a/src/vs/platform/remote/node/tunnelService.ts +++ b/src/vs/platform/remote/node/tunnelService.ts @@ -10,7 +10,7 @@ import { findFreePortFaster } from 'vs/base/node/ports'; import { NodeSocket } from 'vs/base/parts/ipc/node/ipc.net'; import { ILogService } from 'vs/platform/log/common/log'; import { IProductService } from 'vs/platform/product/common/productService'; -import { connectRemoteAgentTunnel, IAddress, IConnectionOptions } from 'vs/platform/remote/common/remoteAgentConnection'; +import { connectRemoteAgentTunnel, IConnectionOptions, IAddressProvider } from 'vs/platform/remote/common/remoteAgentConnection'; import { AbstractTunnelService, RemoteTunnel } from 'vs/platform/remote/common/tunnel'; import { nodeSocketFactory } from 'vs/platform/remote/node/nodeSocketFactory'; import { ISignService } from 'vs/platform/sign/common/sign'; @@ -131,7 +131,7 @@ export class TunnelService extends AbstractTunnelService { super(logService); } - protected retainOrCreateTunnel(resolveRemoteAuthority: IAddress, remoteHost: string, remotePort: number, localPort?: number): Promise | undefined { + protected retainOrCreateTunnel(addressProvider: IAddressProvider, remoteHost: string, remotePort: number, localPort?: number): Promise | undefined { const portMap = this._tunnels.get(remoteHost); const existing = portMap ? portMap.get(remotePort) : undefined; if (existing) { @@ -149,11 +149,7 @@ export class TunnelService extends AbstractTunnelService { const options: IConnectionOptions = { commit: this.productService.commit, socketFactory: nodeSocketFactory, - addressProvider: { - getAddress: async () => { - return resolveRemoteAuthority; - } - }, + addressProvider, signService: this.signService, logService: this.logService }; diff --git a/src/vs/platform/storage/browser/storageService.ts b/src/vs/platform/storage/browser/storageService.ts index 62ed5f25da..332a269cdc 100644 --- a/src/vs/platform/storage/browser/storageService.ts +++ b/src/vs/platform/storage/browser/storageService.ts @@ -5,7 +5,7 @@ import { Disposable, IDisposable, dispose } from 'vs/base/common/lifecycle'; import { Emitter } from 'vs/base/common/event'; -import { IWorkspaceStorageChangeEvent, IStorageService, StorageScope, IWillSaveStateEvent, WillSaveStateReason, logStorage, WorkspaceStorageSettings } from 'vs/platform/storage/common/storage'; +import { IWorkspaceStorageChangeEvent, IStorageService, StorageScope, IWillSaveStateEvent, WillSaveStateReason, logStorage } from 'vs/platform/storage/common/storage'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { IWorkspaceInitializationPayload } from 'vs/platform/workspaces/common/workspaces'; import { IFileService, FileChangeType } from 'vs/platform/files/common/files'; @@ -20,6 +20,8 @@ export class BrowserStorageService extends Disposable implements IStorageService declare readonly _serviceBrand: undefined; + private static readonly WORKSPACE_IS_NEW_KEY = '__$__isNewStorageMarker'; + private readonly _onDidChangeStorage = this._register(new Emitter()); readonly onDidChangeStorage = this._onDidChangeStorage.event; @@ -63,17 +65,11 @@ export class BrowserStorageService extends Disposable implements IStorageService // Workspace Storage this.workspaceStorageFile = joinPath(stateRoot, `${payload.id}.json`); + this.workspaceStorageDatabase = this._register(new FileStorageDatabase(this.workspaceStorageFile, false /* do not watch for external changes */, this.fileService)); this.workspaceStorage = this._register(new Storage(this.workspaceStorageDatabase)); this._register(this.workspaceStorage.onDidChangeStorage(key => this._onDidChangeStorage.fire({ key, scope: StorageScope.WORKSPACE }))); - const firstOpen = this.workspaceStorage.getBoolean(WorkspaceStorageSettings.WORKSPACE_FIRST_OPEN); - if (firstOpen === undefined) { - this.workspaceStorage.set(WorkspaceStorageSettings.WORKSPACE_FIRST_OPEN, !(await this.fileService.exists(this.workspaceStorageFile))); - } else if (firstOpen) { - this.workspaceStorage.set(WorkspaceStorageSettings.WORKSPACE_FIRST_OPEN, false); - } - // Global Storage this.globalStorageFile = joinPath(stateRoot, 'global.json'); this.globalStorageDatabase = this._register(new FileStorageDatabase(this.globalStorageFile, true /* watch for external changes */, this.fileService)); @@ -86,6 +82,14 @@ export class BrowserStorageService extends Disposable implements IStorageService this.globalStorage.init() ]); + // Check to see if this is the first time we are "opening" this workspace + const firstOpen = this.workspaceStorage.getBoolean(BrowserStorageService.WORKSPACE_IS_NEW_KEY); + if (firstOpen === undefined) { + this.workspaceStorage.set(BrowserStorageService.WORKSPACE_IS_NEW_KEY, true); + } else if (firstOpen) { + this.workspaceStorage.set(BrowserStorageService.WORKSPACE_IS_NEW_KEY, false); + } + // In the browser we do not have support for long running unload sequences. As such, // we cannot ask for saving state in that moment, because that would result in a // long running operation. @@ -185,6 +189,10 @@ export class BrowserStorageService extends Disposable implements IStorageService this.dispose(); } + isNew(scope: StorageScope.WORKSPACE): boolean { + return this.getBoolean(BrowserStorageService.WORKSPACE_IS_NEW_KEY, scope) === true; + } + dispose(): void { dispose(this.runWhenIdleDisposable); this.runWhenIdleDisposable = undefined; diff --git a/src/vs/platform/storage/common/storage.ts b/src/vs/platform/storage/common/storage.ts index 02c59d4b3e..2da14a8fba 100644 --- a/src/vs/platform/storage/common/storage.ts +++ b/src/vs/platform/storage/common/storage.ts @@ -9,10 +9,6 @@ import { Disposable } from 'vs/base/common/lifecycle'; import { isUndefinedOrNull } from 'vs/base/common/types'; import { IWorkspaceInitializationPayload } from 'vs/platform/workspaces/common/workspaces'; -export enum WorkspaceStorageSettings { - WORKSPACE_FIRST_OPEN = 'workbench.workspaceFirstOpen' -} - export const IStorageService = createDecorator('storageService'); export enum WillSaveStateReason { @@ -107,6 +103,14 @@ export interface IStorageService { */ migrate(toWorkspace: IWorkspaceInitializationPayload): Promise; + /** + * Wether the storage for the given scope was created during this session or + * existed before. + * + * Note: currently only implemented for `WORKSPACE` scope. + */ + isNew(scope: StorageScope.WORKSPACE): boolean; + /** * Allows to flush state, e.g. in cases where a shutdown is * imminent. This will send out the onWillSaveState to ask @@ -231,6 +235,10 @@ export class InMemoryStorageService extends Disposable implements IStorageServic flush(): void { this._onWillSaveState.fire({ reason: WillSaveStateReason.NONE }); } + + isNew(): boolean { + return true; // always new when in-memory + } } export async function logStorage(global: Map, workspace: Map, globalPath: string, workspacePath: string): Promise { diff --git a/src/vs/platform/storage/node/storageService.ts b/src/vs/platform/storage/node/storageService.ts index cdf4c7749c..92cf82f52a 100644 --- a/src/vs/platform/storage/node/storageService.ts +++ b/src/vs/platform/storage/node/storageService.ts @@ -6,7 +6,7 @@ import { Disposable, IDisposable, dispose } from 'vs/base/common/lifecycle'; import { Emitter } from 'vs/base/common/event'; import { ILogService, LogLevel } from 'vs/platform/log/common/log'; -import { IWorkspaceStorageChangeEvent, IStorageService, StorageScope, IWillSaveStateEvent, WillSaveStateReason, logStorage, WorkspaceStorageSettings } from 'vs/platform/storage/common/storage'; +import { IWorkspaceStorageChangeEvent, IStorageService, StorageScope, IWillSaveStateEvent, WillSaveStateReason, logStorage } from 'vs/platform/storage/common/storage'; import { SQLiteStorageDatabase, ISQLiteStorageDatabaseLoggingOptions } from 'vs/base/parts/storage/node/storage'; import { Storage, IStorageDatabase, IStorage, StorageHint } from 'vs/base/parts/storage/common/storage'; import { mark } from 'vs/base/common/performance'; @@ -25,6 +25,8 @@ export class NativeStorageService extends Disposable implements IStorageService private static readonly WORKSPACE_STORAGE_NAME = 'state.vscdb'; private static readonly WORKSPACE_META_NAME = 'workspace.json'; + private static readonly WORKSPACE_IS_NEW_KEY = '__$__isNewStorageMarker'; + private readonly _onDidChangeStorage = this._register(new Emitter()); readonly onDidChangeStorage = this._onDidChangeStorage.event; @@ -105,11 +107,12 @@ export class NativeStorageService extends Disposable implements IStorageService ); await workspaceStorage.init(); - const firstOpen = workspaceStorage.getBoolean(WorkspaceStorageSettings.WORKSPACE_FIRST_OPEN); + // Check to see if this is the first time we are "opening" this workspace + const firstOpen = workspaceStorage.getBoolean(NativeStorageService.WORKSPACE_IS_NEW_KEY); if (firstOpen === undefined) { - workspaceStorage.set(WorkspaceStorageSettings.WORKSPACE_FIRST_OPEN, !result.wasCreated); + workspaceStorage.set(NativeStorageService.WORKSPACE_IS_NEW_KEY, result.wasCreated); } else if (firstOpen) { - workspaceStorage.set(WorkspaceStorageSettings.WORKSPACE_FIRST_OPEN, false); + workspaceStorage.set(NativeStorageService.WORKSPACE_IS_NEW_KEY, false); } } finally { mark('didInitWorkspaceStorage'); @@ -277,4 +280,8 @@ export class NativeStorageService extends Disposable implements IStorageService // Recreate and init workspace storage return this.createWorkspaceStorage(newWorkspaceStoragePath).init(); } + + isNew(scope: StorageScope.WORKSPACE): boolean { + return this.getBoolean(NativeStorageService.WORKSPACE_IS_NEW_KEY, scope) === true; + } } diff --git a/src/vs/platform/theme/common/colorRegistry.ts b/src/vs/platform/theme/common/colorRegistry.ts index cf21e98b5b..3a77f29a6e 100644 --- a/src/vs/platform/theme/common/colorRegistry.ts +++ b/src/vs/platform/theme/common/colorRegistry.ts @@ -204,8 +204,8 @@ export const inputBackground = registerColor('input.background', { dark: '#3C3C3 export const inputForeground = registerColor('input.foreground', { dark: foreground, light: foreground, hc: foreground }, nls.localize('inputBoxForeground', "Input box foreground.")); export const inputBorder = registerColor('input.border', { dark: null, light: null, hc: contrastBorder }, nls.localize('inputBoxBorder', "Input box border.")); export const inputActiveOptionBorder = registerColor('inputOption.activeBorder', { dark: '#007ACC00', light: '#007ACC00', hc: contrastBorder }, nls.localize('inputBoxActiveOptionBorder', "Border color of activated options in input fields.")); -export const inputActiveOptionBackground = registerColor('inputOption.activeBackground', { dark: transparent(focusBorder, 0.7), light: transparent(focusBorder, 0.5), hc: Color.transparent }, nls.localize('inputOption.activeBackground', "Background color of activated options in input fields.")); -export const inputActiveOptionForeground = registerColor('inputOption.activeForeground', { dark: '#FFFFFF', light: Color.black, hc: null }, nls.localize('inputOption.activeForeground', "Foreground color of activated options in input fields.")); +export const inputActiveOptionBackground = registerColor('inputOption.activeBackground', { dark: transparent(focusBorder, 0.4), light: transparent(focusBorder, 0.2), hc: Color.transparent }, nls.localize('inputOption.activeBackground', "Background color of activated options in input fields.")); +export const inputActiveOptionForeground = registerColor('inputOption.activeForeground', { dark: Color.white, light: Color.black, hc: null }, nls.localize('inputOption.activeForeground', "Foreground color of activated options in input fields.")); export const inputPlaceholderForeground = registerColor('input.placeholderForeground', { light: transparent(foreground, 0.5), dark: transparent(foreground, 0.5), hc: transparent(foreground, 0.7) }, nls.localize('inputPlaceholderForeground', "Input box foreground color for placeholder text.")); export const inputValidationInfoBackground = registerColor('inputValidation.infoBackground', { dark: '#063B49', light: '#D6ECF2', hc: Color.black }, nls.localize('inputValidationInfoBackground', "Input validation background color for information severity.")); diff --git a/src/vs/platform/undoRedo/common/undoRedo.ts b/src/vs/platform/undoRedo/common/undoRedo.ts index 09427e116f..e600fc7ff1 100644 --- a/src/vs/platform/undoRedo/common/undoRedo.ts +++ b/src/vs/platform/undoRedo/common/undoRedo.ts @@ -28,7 +28,11 @@ export interface IWorkspaceUndoRedoElement { readonly label: string; undo(): Promise | void; redo(): Promise | void; - split(): IResourceUndoRedoElement[]; + + /** + * If implemented, indicates that this undo/redo element can be split into multiple per resource elements. + */ + split?(): IResourceUndoRedoElement[]; /** * If implemented, will be invoked before calling `undo()` or `redo()`. @@ -46,17 +50,29 @@ export interface IPastFutureElements { } export interface UriComparisonKeyComputer { - /** - * Return `null` if you don't own this URI. - */ - getComparisonKey(uri: URI): string | null; + getComparisonKey(uri: URI): string; +} + +export class ResourceEditStackSnapshot { + constructor( + public readonly resource: URI, + public readonly elements: number[] + ) { } } export interface IUndoRedoService { readonly _serviceBrand: undefined; - registerUriComparisonKeyComputer(uriComparisonKeyComputer: UriComparisonKeyComputer): IDisposable; + /** + * Register an URI -> string hasher. + * This is useful for making multiple URIs share the same undo-redo stack. + */ + registerUriComparisonKeyComputer(scheme: string, uriComparisonKeyComputer: UriComparisonKeyComputer): IDisposable; + /** + * Get the hash used internally for a certain URI. + * This uses any registered `UriComparisonKeyComputer`. + */ getUriComparisonKey(resource: URI): string; /** @@ -66,14 +82,20 @@ export interface IUndoRedoService { pushElement(element: IUndoRedoElement): void; /** - * Get the last pushed element. If the last pushed element has been undone, returns null. + * Get the last pushed element for a resource. + * If the last pushed element has been undone, returns null. */ getLastElement(resource: URI): IUndoRedoElement | null; + /** + * Get all the elements associated with a resource. + * This includes the past and the future. + */ getElements(resource: URI): IPastFutureElements; - hasElements(resource: URI): boolean; - + /** + * Validate or invalidate stack elements associated with a resource. + */ setElementsValidFlag(resource: URI, isValid: boolean, filter: (element: IUndoRedoElement) => boolean): void; /** @@ -81,6 +103,15 @@ export interface IUndoRedoService { */ removeElements(resource: URI): void; + /** + * Create a snapshot of the current elements on the undo-redo stack for a resource. + */ + createSnapshot(resource: URI): ResourceEditStackSnapshot; + /** + * Attempt (as best as possible) to restore a certain snapshot previously created with `createSnapshot` for a resource. + */ + restoreSnapshot(snapshot: ResourceEditStackSnapshot): void; + canUndo(resource: URI): boolean; undo(resource: URI): Promise | void; diff --git a/src/vs/platform/undoRedo/common/undoRedoService.ts b/src/vs/platform/undoRedo/common/undoRedoService.ts index 08b6f08048..4431ca936c 100644 --- a/src/vs/platform/undoRedo/common/undoRedoService.ts +++ b/src/vs/platform/undoRedo/common/undoRedoService.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import * as nls from 'vs/nls'; -import { IUndoRedoService, IWorkspaceUndoRedoElement, UndoRedoElementType, IUndoRedoElement, IPastFutureElements, UriComparisonKeyComputer } from 'vs/platform/undoRedo/common/undoRedo'; +import { IUndoRedoService, IWorkspaceUndoRedoElement, UndoRedoElementType, IUndoRedoElement, IPastFutureElements, ResourceEditStackSnapshot, UriComparisonKeyComputer, IResourceUndoRedoElement } from 'vs/platform/undoRedo/common/undoRedo'; import { URI } from 'vs/base/common/uri'; import { onUnexpectedError } from 'vs/base/common/errors'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; @@ -20,7 +20,10 @@ function getResourceLabel(resource: URI): string { return resource.scheme === Schemas.file ? resource.fsPath : resource.path; } +let stackElementCounter = 0; + class ResourceStackElement { + public readonly id = (++stackElementCounter); public readonly type = UndoRedoElementType.Resource; public readonly actual: IUndoRedoElement; public readonly label: string; @@ -46,7 +49,7 @@ class ResourceStackElement { } public toString(): string { - return `[VALID] ${this.actual}`; + return `[${this.id}] [${this.isValid ? 'VALID' : 'INVALID'}] ${this.actual}`; } } @@ -105,6 +108,7 @@ class RemovedResources { } class WorkspaceStackElement { + public readonly id = (++stackElementCounter); public readonly type = UndoRedoElementType.Workspace; public readonly actual: IWorkspaceUndoRedoElement; public readonly label: string; @@ -123,6 +127,10 @@ class WorkspaceStackElement { this.invalidatedResources = null; } + public canSplit(): this is WorkspaceStackElement & { actual: { split(): IResourceUndoRedoElement[]; } } { + return (typeof this.actual.split === 'function'); + } + public removeResource(resourceLabel: string, strResource: string, reason: RemovedResourceReason): void { if (!this.removedResources) { this.removedResources = new RemovedResources(); @@ -151,7 +159,7 @@ class WorkspaceStackElement { } public toString(): string { - return `[VALID] ${this.actual}`; + return `[${this.id}] [${this.invalidatedResources ? 'INVALID' : 'VALID'}] ${this.actual}`; } } @@ -263,6 +271,54 @@ class ResourceEditStack { this.versionId++; } + public createSnapshot(resource: URI): ResourceEditStackSnapshot { + const elements: number[] = []; + + for (let i = 0, len = this._past.length; i < len; i++) { + elements.push(this._past[i].id); + } + for (let i = this._future.length - 1; i >= 0; i--) { + elements.push(this._future[i].id); + } + + return new ResourceEditStackSnapshot(resource, elements); + } + + public restoreSnapshot(snapshot: ResourceEditStackSnapshot): void { + const snapshotLength = snapshot.elements.length; + let isOK = true; + let snapshotIndex = 0; + let removePastAfter = -1; + for (let i = 0, len = this._past.length; i < len; i++, snapshotIndex++) { + const element = this._past[i]; + if (isOK && (snapshotIndex >= snapshotLength || element.id !== snapshot.elements[snapshotIndex])) { + isOK = false; + removePastAfter = 0; + } + if (!isOK && element.type === UndoRedoElementType.Workspace) { + element.removeResource(this.resourceLabel, this.strResource, RemovedResourceReason.ExternalRemoval); + } + } + let removeFutureBefore = -1; + for (let i = this._future.length - 1; i >= 0; i--, snapshotIndex++) { + const element = this._future[i]; + if (isOK && (snapshotIndex >= snapshotLength || element.id !== snapshot.elements[snapshotIndex])) { + isOK = false; + removeFutureBefore = i; + } + if (!isOK && element.type === UndoRedoElementType.Workspace) { + element.removeResource(this.resourceLabel, this.strResource, RemovedResourceReason.ExternalRemoval); + } + } + if (removePastAfter !== -1) { + this._past = this._past.slice(0, removePastAfter); + } + if (removeFutureBefore !== -1) { + this._future = this._future.slice(removeFutureBefore + 1); + } + this.versionId++; + } + public getElements(): IPastFutureElements { const past: IUndoRedoElement[] = []; const future: IUndoRedoElement[] = []; @@ -367,11 +423,14 @@ class EditStackSnapshot { } } +const missingEditStack = new ResourceEditStack('', ''); +missingEditStack.locked = true; + export class UndoRedoService implements IUndoRedoService { declare readonly _serviceBrand: undefined; private readonly _editStacks: Map; - private readonly _uriComparisonKeyComputers: UriComparisonKeyComputer[]; + private readonly _uriComparisonKeyComputers: [string, UriComparisonKeyComputer][]; constructor( @IDialogService private readonly _dialogService: IDialogService, @@ -381,12 +440,12 @@ export class UndoRedoService implements IUndoRedoService { this._uriComparisonKeyComputers = []; } - public registerUriComparisonKeyComputer(uriComparisonKeyComputer: UriComparisonKeyComputer): IDisposable { - this._uriComparisonKeyComputers.push(uriComparisonKeyComputer); + public registerUriComparisonKeyComputer(scheme: string, uriComparisonKeyComputer: UriComparisonKeyComputer): IDisposable { + this._uriComparisonKeyComputers.push([scheme, uriComparisonKeyComputer]); return { dispose: () => { for (let i = 0, len = this._uriComparisonKeyComputers.length; i < len; i++) { - if (this._uriComparisonKeyComputers[i] === uriComparisonKeyComputer) { + if (this._uriComparisonKeyComputers[i][1] === uriComparisonKeyComputer) { this._uriComparisonKeyComputers.splice(i, 1); return; } @@ -397,9 +456,8 @@ export class UndoRedoService implements IUndoRedoService { public getUriComparisonKey(resource: URI): string { for (const uriComparisonKeyComputer of this._uriComparisonKeyComputers) { - const result = uriComparisonKeyComputer.getComparisonKey(resource); - if (result !== null) { - return result; + if (uriComparisonKeyComputer[0] === resource.scheme) { + return uriComparisonKeyComputer[1].getComparisonKey(resource); } } return resource.toString(); @@ -477,7 +535,7 @@ export class UndoRedoService implements IUndoRedoService { return null; } - private _splitPastWorkspaceElement(toRemove: WorkspaceStackElement, ignoreResources: RemovedResources | null): void { + private _splitPastWorkspaceElement(toRemove: WorkspaceStackElement & { actual: { split(): IResourceUndoRedoElement[]; } }, ignoreResources: RemovedResources | null): void { const individualArr = toRemove.actual.split(); const individualMap = new Map(); for (const _element of individualArr) { @@ -496,7 +554,7 @@ export class UndoRedoService implements IUndoRedoService { } } - private _splitFutureWorkspaceElement(toRemove: WorkspaceStackElement, ignoreResources: RemovedResources | null): void { + private _splitFutureWorkspaceElement(toRemove: WorkspaceStackElement & { actual: { split(): IResourceUndoRedoElement[]; } }, ignoreResources: RemovedResources | null): void { const individualArr = toRemove.actual.split(); const individualMap = new Map(); for (const _element of individualArr) { @@ -547,6 +605,32 @@ export class UndoRedoService implements IUndoRedoService { return false; } + public createSnapshot(resource: URI): ResourceEditStackSnapshot { + const strResource = this.getUriComparisonKey(resource); + if (this._editStacks.has(strResource)) { + const editStack = this._editStacks.get(strResource)!; + return editStack.createSnapshot(resource); + } + return new ResourceEditStackSnapshot(resource, []); + } + + public restoreSnapshot(snapshot: ResourceEditStackSnapshot): void { + const strResource = this.getUriComparisonKey(snapshot.resource); + if (this._editStacks.has(strResource)) { + const editStack = this._editStacks.get(strResource)!; + editStack.restoreSnapshot(snapshot); + + if (!editStack.hasPastElements() && !editStack.hasFutureElements()) { + // the edit stack is now empty, just remove it entirely + editStack.dispose(); + this._editStacks.delete(strResource); + } + } + if (DEBUG) { + this._print('restoreSnapshot'); + } + } + public getElements(resource: URI): IPastFutureElements { const strResource = this.getUriComparisonKey(resource); if (this._editStacks.has(strResource)) { @@ -665,23 +749,32 @@ export class UndoRedoService implements IUndoRedoService { private _getAffectedEditStacks(element: WorkspaceStackElement): EditStackSnapshot { const affectedEditStacks: ResourceEditStack[] = []; for (const strResource of element.strResources) { - affectedEditStacks.push(this._editStacks.get(strResource)!); + affectedEditStacks.push(this._editStacks.get(strResource) || missingEditStack); } return new EditStackSnapshot(affectedEditStacks); } + private _tryToSplitAndUndo(strResource: string, element: WorkspaceStackElement, ignoreResources: RemovedResources | null, message: string): WorkspaceVerificationError { + if (element.canSplit()) { + this._splitPastWorkspaceElement(element, ignoreResources); + this._notificationService.info(message); + return new WorkspaceVerificationError(this.undo(strResource)); + } else { + // Cannot safely split this workspace element => flush all undo/redo stacks + for (const strResource of element.strResources) { + this.removeElements(strResource); + } + this._notificationService.info(message); + return new WorkspaceVerificationError(); + } + } + private _checkWorkspaceUndo(strResource: string, element: WorkspaceStackElement, editStackSnapshot: EditStackSnapshot, checkInvalidatedResources: boolean): WorkspaceVerificationError | null { if (element.removedResources) { - this._splitPastWorkspaceElement(element, element.removedResources); - const message = nls.localize('cannotWorkspaceUndo', "Could not undo '{0}' across all files. {1}", element.label, element.removedResources.createMessage()); - this._notificationService.info(message); - return new WorkspaceVerificationError(this.undo(strResource)); + return this._tryToSplitAndUndo(strResource, element, element.removedResources, nls.localize('cannotWorkspaceUndo', "Could not undo '{0}' across all files. {1}", element.label, element.removedResources.createMessage())); } if (checkInvalidatedResources && element.invalidatedResources) { - this._splitPastWorkspaceElement(element, element.invalidatedResources); - const message = nls.localize('cannotWorkspaceUndo', "Could not undo '{0}' across all files. {1}", element.label, element.invalidatedResources.createMessage()); - this._notificationService.info(message); - return new WorkspaceVerificationError(this.undo(strResource)); + return this._tryToSplitAndUndo(strResource, element, element.invalidatedResources, nls.localize('cannotWorkspaceUndo', "Could not undo '{0}' across all files. {1}", element.label, element.invalidatedResources.createMessage())); } // this must be the last past element in all the impacted resources! @@ -692,10 +785,7 @@ export class UndoRedoService implements IUndoRedoService { } } if (cannotUndoDueToResources.length > 0) { - this._splitPastWorkspaceElement(element, null); - const message = nls.localize('cannotWorkspaceUndoDueToChanges', "Could not undo '{0}' across all files because changes were made to {1}", element.label, cannotUndoDueToResources.join(', ')); - this._notificationService.info(message); - return new WorkspaceVerificationError(this.undo(strResource)); + return this._tryToSplitAndUndo(strResource, element, null, nls.localize('cannotWorkspaceUndoDueToChanges', "Could not undo '{0}' across all files because changes were made to {1}", element.label, cannotUndoDueToResources.join(', '))); } const cannotLockDueToResources: string[] = []; @@ -705,18 +795,12 @@ export class UndoRedoService implements IUndoRedoService { } } if (cannotLockDueToResources.length > 0) { - this._splitPastWorkspaceElement(element, null); - const message = nls.localize('cannotWorkspaceUndoDueToInProgressUndoRedo', "Could not undo '{0}' across all files because there is already an undo or redo operation running on {1}", element.label, cannotLockDueToResources.join(', ')); - this._notificationService.info(message); - return new WorkspaceVerificationError(this.undo(strResource)); + return this._tryToSplitAndUndo(strResource, element, null, nls.localize('cannotWorkspaceUndoDueToInProgressUndoRedo', "Could not undo '{0}' across all files because there is already an undo or redo operation running on {1}", element.label, cannotLockDueToResources.join(', '))); } // check if new stack elements were added in the meantime... if (!editStackSnapshot.isValid()) { - this._splitPastWorkspaceElement(element, null); - const message = nls.localize('cannotWorkspaceUndoDueToInMeantimeUndoRedo', "Could not undo '{0}' across all files because an undo or redo operation occurred in the meantime", element.label); - this._notificationService.info(message); - return new WorkspaceVerificationError(this.undo(strResource)); + return this._tryToSplitAndUndo(strResource, element, null, nls.localize('cannotWorkspaceUndoDueToInMeantimeUndoRedo', "Could not undo '{0}' across all files because an undo or redo operation occurred in the meantime", element.label)); } return null; @@ -733,36 +817,40 @@ export class UndoRedoService implements IUndoRedoService { private async _confirmAndExecuteWorkspaceUndo(strResource: string, element: WorkspaceStackElement, editStackSnapshot: EditStackSnapshot): Promise { - const result = await this._dialogService.show( - Severity.Info, - nls.localize('confirmWorkspace', "Would you like to undo '{0}' across all files?", element.label), - [ - nls.localize({ key: 'ok', comment: ['{0} denotes a number that is > 1'] }, "Undo in {0} Files", editStackSnapshot.editStacks.length), - nls.localize('nok', "Undo this File"), - nls.localize('cancel', "Cancel"), - ], - { - cancelId: 2 + if (element.canSplit()) { + // this element can be split + + const result = await this._dialogService.show( + Severity.Info, + nls.localize('confirmWorkspace', "Would you like to undo '{0}' across all files?", element.label), + [ + nls.localize({ key: 'ok', comment: ['{0} denotes a number that is > 1'] }, "Undo in {0} Files", editStackSnapshot.editStacks.length), + nls.localize('nok', "Undo this File"), + nls.localize('cancel', "Cancel"), + ], + { + cancelId: 2 + } + ); + + if (result.choice === 2) { + // choice: cancel + return; } - ); - if (result.choice === 2) { - // choice: cancel - return; - } + if (result.choice === 1) { + // choice: undo this file + this._splitPastWorkspaceElement(element, null); + return this.undo(strResource); + } - if (result.choice === 1) { - // choice: undo this file - this._splitPastWorkspaceElement(element, null); - return this.undo(strResource); - } + // choice: undo in all files - // choice: undo in all files - - // At this point, it is possible that the element has been made invalid in the meantime (due to the confirmation await) - const verificationError1 = this._checkWorkspaceUndo(strResource, element, editStackSnapshot, /*invalidated resources will be checked after the prepare call*/false); - if (verificationError1) { - return verificationError1.returnValue; + // At this point, it is possible that the element has been made invalid in the meantime (due to the confirmation await) + const verificationError1 = this._checkWorkspaceUndo(strResource, element, editStackSnapshot, /*invalidated resources will be checked after the prepare call*/false); + if (verificationError1) { + return verificationError1.returnValue; + } } // prepare @@ -837,18 +925,27 @@ export class UndoRedoService implements IUndoRedoService { return false; } + private _tryToSplitAndRedo(strResource: string, element: WorkspaceStackElement, ignoreResources: RemovedResources | null, message: string): WorkspaceVerificationError { + if (element.canSplit()) { + this._splitFutureWorkspaceElement(element, ignoreResources); + this._notificationService.info(message); + return new WorkspaceVerificationError(this.redo(strResource)); + } else { + // Cannot safely split this workspace element => flush all undo/redo stacks + for (const strResource of element.strResources) { + this.removeElements(strResource); + } + this._notificationService.info(message); + return new WorkspaceVerificationError(); + } + } + private _checkWorkspaceRedo(strResource: string, element: WorkspaceStackElement, editStackSnapshot: EditStackSnapshot, checkInvalidatedResources: boolean): WorkspaceVerificationError | null { if (element.removedResources) { - this._splitFutureWorkspaceElement(element, element.removedResources); - const message = nls.localize('cannotWorkspaceRedo', "Could not redo '{0}' across all files. {1}", element.label, element.removedResources.createMessage()); - this._notificationService.info(message); - return new WorkspaceVerificationError(this.redo(strResource)); + return this._tryToSplitAndRedo(strResource, element, element.removedResources, nls.localize('cannotWorkspaceRedo', "Could not redo '{0}' across all files. {1}", element.label, element.removedResources.createMessage())); } if (checkInvalidatedResources && element.invalidatedResources) { - this._splitFutureWorkspaceElement(element, element.invalidatedResources); - const message = nls.localize('cannotWorkspaceRedo', "Could not redo '{0}' across all files. {1}", element.label, element.invalidatedResources.createMessage()); - this._notificationService.info(message); - return new WorkspaceVerificationError(this.redo(strResource)); + return this._tryToSplitAndRedo(strResource, element, element.invalidatedResources, nls.localize('cannotWorkspaceRedo', "Could not redo '{0}' across all files. {1}", element.label, element.invalidatedResources.createMessage())); } // this must be the last future element in all the impacted resources! @@ -859,10 +956,7 @@ export class UndoRedoService implements IUndoRedoService { } } if (cannotRedoDueToResources.length > 0) { - this._splitFutureWorkspaceElement(element, null); - const message = nls.localize('cannotWorkspaceRedoDueToChanges', "Could not redo '{0}' across all files because changes were made to {1}", element.label, cannotRedoDueToResources.join(', ')); - this._notificationService.info(message); - return new WorkspaceVerificationError(this.redo(strResource)); + return this._tryToSplitAndRedo(strResource, element, null, nls.localize('cannotWorkspaceRedoDueToChanges', "Could not redo '{0}' across all files because changes were made to {1}", element.label, cannotRedoDueToResources.join(', '))); } const cannotLockDueToResources: string[] = []; @@ -872,18 +966,12 @@ export class UndoRedoService implements IUndoRedoService { } } if (cannotLockDueToResources.length > 0) { - this._splitFutureWorkspaceElement(element, null); - const message = nls.localize('cannotWorkspaceRedoDueToInProgressUndoRedo', "Could not redo '{0}' across all files because there is already an undo or redo operation running on {1}", element.label, cannotLockDueToResources.join(', ')); - this._notificationService.info(message); - return new WorkspaceVerificationError(this.redo(strResource)); + return this._tryToSplitAndRedo(strResource, element, null, nls.localize('cannotWorkspaceRedoDueToInProgressUndoRedo', "Could not redo '{0}' across all files because there is already an undo or redo operation running on {1}", element.label, cannotLockDueToResources.join(', '))); } // check if new stack elements were added in the meantime... if (!editStackSnapshot.isValid()) { - this._splitPastWorkspaceElement(element, null); - const message = nls.localize('cannotWorkspaceRedoDueToInMeantimeUndoRedo', "Could not redo '{0}' across all files because an undo or redo operation occurred in the meantime", element.label); - this._notificationService.info(message); - return new WorkspaceVerificationError(this.redo(strResource)); + return this._tryToSplitAndRedo(strResource, element, null, nls.localize('cannotWorkspaceRedoDueToInMeantimeUndoRedo', "Could not redo '{0}' across all files because an undo or redo operation occurred in the meantime", element.label)); } return null; diff --git a/src/vs/platform/userDataSync/common/abstractSynchronizer.ts b/src/vs/platform/userDataSync/common/abstractSynchronizer.ts index 3af0a48cd8..7968214004 100644 --- a/src/vs/platform/userDataSync/common/abstractSynchronizer.ts +++ b/src/vs/platform/userDataSync/common/abstractSynchronizer.ts @@ -9,7 +9,7 @@ import { VSBuffer } from 'vs/base/common/buffer'; import { URI } from 'vs/base/common/uri'; import { SyncResource, SyncStatus, IUserData, IUserDataSyncStoreService, UserDataSyncErrorCode, UserDataSyncError, IUserDataSyncLogService, IUserDataSyncUtilService, - IUserDataSyncResourceEnablementService, IUserDataSyncBackupStoreService, Conflict, ISyncResourceHandle, USER_DATA_SYNC_SCHEME, ISyncPreview, IUserDataManifest, ISyncData, IRemoteUserData + IUserDataSyncResourceEnablementService, IUserDataSyncBackupStoreService, Conflict, ISyncResourceHandle, USER_DATA_SYNC_SCHEME, ISyncResourcePreview as IBaseSyncResourcePreview, IUserDataManifest, ISyncData, IRemoteUserData, PREVIEW_DIR_NAME } from 'vs/platform/userDataSync/common/userDataSync'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { joinPath, dirname, isEqual, basename } from 'vs/base/common/resources'; @@ -52,11 +52,17 @@ function isSyncData(thing: any): thing is ISyncData { return false; } +export interface ISyncResourcePreview extends IBaseSyncResourcePreview { + readonly remoteUserData: IRemoteUserData; + readonly lastSyncUserData: IRemoteUserData | null; +} + export abstract class AbstractSynchroniser extends Disposable { - private syncPreviewPromise: CancelablePromise | null = null; + private syncPreviewPromise: CancelablePromise | null = null; protected readonly syncFolder: URI; + protected readonly syncPreviewFolder: URI; private readonly currentMachineIdPromise: Promise; private _status: SyncStatus = SyncStatus.Idle; @@ -93,6 +99,7 @@ export abstract class AbstractSynchroniser extends Disposable { super(); this.syncResourceLogLabel = uppercaseFirstLetter(this.resource); this.syncFolder = joinPath(environmentService.userDataSyncHome, resource); + this.syncPreviewFolder = joinPath(this.syncFolder, PREVIEW_DIR_NAME); this.lastSyncResource = joinPath(this.syncFolder, `lastSync${this.resource}.json`); this.currentMachineIdPromise = getServiceMachineId(environmentService, fileService, storageService); } @@ -287,7 +294,7 @@ export abstract class AbstractSynchroniser extends Disposable { return this.getRemoteUserData(lastSyncUserData); } - async generateSyncPreview(): Promise { + async generateSyncPreview(): Promise { if (this.isEnabled()) { const lastSyncUserData = await this.getLastSyncUserData(); const remoteUserData = await this.getRemoteUserData(lastSyncUserData); @@ -360,7 +367,7 @@ export abstract class AbstractSynchroniser extends Disposable { } } - protected async getSyncPreviewInProgress(): Promise { + protected async getSyncPreviewInProgress(): Promise { return this.syncPreviewPromise ? this.syncPreviewPromise : null; } @@ -528,15 +535,15 @@ export abstract class AbstractSynchroniser extends Disposable { } protected abstract readonly version: number; - protected abstract generatePullPreview(remoteUserData: IRemoteUserData, lastSyncUserData: IRemoteUserData | null, token: CancellationToken): Promise; - protected abstract generatePushPreview(remoteUserData: IRemoteUserData, lastSyncUserData: IRemoteUserData | null, token: CancellationToken): Promise; - protected abstract generateReplacePreview(syncData: ISyncData, remoteUserData: IRemoteUserData, lastSyncUserData: IRemoteUserData | null): Promise; - protected abstract generatePreview(remoteUserData: IRemoteUserData, lastSyncUserData: IRemoteUserData | null, token: CancellationToken): Promise; - protected abstract updatePreviewWithConflict(preview: ISyncPreview, conflictResource: URI, content: string, token: CancellationToken): Promise; - protected abstract applyPreview(preview: ISyncPreview, forcePush: boolean): Promise; + protected abstract generatePullPreview(remoteUserData: IRemoteUserData, lastSyncUserData: IRemoteUserData | null, token: CancellationToken): Promise; + protected abstract generatePushPreview(remoteUserData: IRemoteUserData, lastSyncUserData: IRemoteUserData | null, token: CancellationToken): Promise; + protected abstract generateReplacePreview(syncData: ISyncData, remoteUserData: IRemoteUserData, lastSyncUserData: IRemoteUserData | null): Promise; + protected abstract generatePreview(remoteUserData: IRemoteUserData, lastSyncUserData: IRemoteUserData | null, token: CancellationToken): Promise; + protected abstract updatePreviewWithConflict(preview: ISyncResourcePreview, conflictResource: URI, content: string, token: CancellationToken): Promise; + protected abstract applyPreview(preview: ISyncResourcePreview, forcePush: boolean): Promise; } -export interface IFileSyncPreview extends ISyncPreview { +export interface IFileSyncPreview extends ISyncResourcePreview { readonly fileContent: IFileContent | null; readonly content: string | null; } @@ -568,7 +575,7 @@ export abstract class AbstractFileSynchroniser extends AbstractSynchroniser { } catch (e) { /* ignore */ } } - protected async getConflictContent(conflictResource: URI): Promise { + protected async resolvePreviewContent(conflictResource: URI): Promise { if (isEqual(this.remotePreviewResource, conflictResource) || isEqual(this.localPreviewResource, conflictResource)) { const syncPreview = await this.getSyncPreviewInProgress(); if (syncPreview) { diff --git a/src/vs/platform/userDataSync/common/extensionsSync.ts b/src/vs/platform/userDataSync/common/extensionsSync.ts index 5e62418718..4ae7ad8bda 100644 --- a/src/vs/platform/userDataSync/common/extensionsSync.ts +++ b/src/vs/platform/userDataSync/common/extensionsSync.ts @@ -5,7 +5,7 @@ import { IUserDataSyncStoreService, ISyncExtension, IUserDataSyncLogService, IUserDataSynchroniser, SyncResource, IUserDataSyncResourceEnablementService, - IUserDataSyncBackupStoreService, ISyncResourceHandle, ISyncPreview, USER_DATA_SYNC_SCHEME, IRemoteUserData, ISyncData + IUserDataSyncBackupStoreService, ISyncResourceHandle, USER_DATA_SYNC_SCHEME, IRemoteUserData, ISyncData, IResourcePreview } from 'vs/platform/userDataSync/common/userDataSync'; import { Event } from 'vs/base/common/event'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; @@ -14,8 +14,8 @@ import { ExtensionType, IExtensionIdentifier } from 'vs/platform/extensions/comm import { areSameExtensions } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; import { IFileService } from 'vs/platform/files/common/files'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; -import { merge, getIgnoredExtensions } from 'vs/platform/userDataSync/common/extensionsMerge'; -import { AbstractSynchroniser } from 'vs/platform/userDataSync/common/abstractSynchronizer'; +import { merge, getIgnoredExtensions, IMergeResult } from 'vs/platform/userDataSync/common/extensionsMerge'; +import { AbstractSynchroniser, ISyncResourcePreview } from 'vs/platform/userDataSync/common/abstractSynchronizer'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { URI } from 'vs/base/common/uri'; import { joinPath, dirname, basename, isEqual } from 'vs/base/common/resources'; @@ -25,9 +25,8 @@ import { compare } from 'vs/base/common/strings'; import { IStorageService } from 'vs/platform/storage/common/storage'; import { CancellationToken } from 'vs/base/common/cancellation'; -interface IExtensionsSyncPreview extends ISyncPreview { +interface IExtensionsSyncPreview extends ISyncResourcePreview { readonly localExtensions: ISyncExtension[]; - readonly remoteUserData: IRemoteUserData; readonly lastSyncUserData: ILastSyncUserData | null; readonly added: ISyncExtension[]; readonly removed: IExtensionIdentifier[]; @@ -48,6 +47,8 @@ export class ExtensionsSynchroniser extends AbstractSynchroniser implements IUse */ protected readonly version: number = 3; protected isEnabled(): boolean { return super.isEnabled() && this.extensionGalleryService.isEnabled(); } + private readonly localPreviewResource: URI = joinPath(this.syncPreviewFolder, 'extensions.json'); + private readonly remotePreviewResource: URI = this.localPreviewResource.with({ scheme: USER_DATA_SYNC_SCHEME }); constructor( @IEnvironmentService environmentService: IEnvironmentService, @@ -79,14 +80,17 @@ export class ExtensionsSynchroniser extends AbstractSynchroniser implements IUse const ignoredExtensions = getIgnoredExtensions(installedExtensions, this.configurationService); if (remoteUserData.syncData !== null) { const remoteExtensions = await this.parseAndMigrateExtensions(remoteUserData.syncData); - const { added, updated, remote, removed } = merge(localExtensions, remoteExtensions, localExtensions, [], ignoredExtensions); + const mergeResult = merge(localExtensions, remoteExtensions, localExtensions, [], ignoredExtensions); + const { added, removed, updated, remote } = mergeResult; + const resourcePreviews: IResourcePreview[] = this.getResourcePreviews(mergeResult); return { remoteUserData, lastSyncUserData, added, removed, updated, remote, localExtensions, skippedExtensions: [], - hasLocalChanged: added.length > 0 || removed.length > 0 || updated.length > 0, - hasRemoteChanged: remote !== null, + hasLocalChanged: resourcePreviews.some(({ hasLocalChanged }) => hasLocalChanged), + hasRemoteChanged: resourcePreviews.some(({ hasRemoteChanged }) => hasRemoteChanged), hasConflicts: false, isLastSyncFromCurrentMachine: false, + resourcePreviews, }; } else { return { @@ -96,6 +100,7 @@ export class ExtensionsSynchroniser extends AbstractSynchroniser implements IUse hasRemoteChanged: false, hasConflicts: false, isLastSyncFromCurrentMachine: false, + resourcePreviews: [], }; } } @@ -104,13 +109,16 @@ export class ExtensionsSynchroniser extends AbstractSynchroniser implements IUse const installedExtensions = await this.extensionManagementService.getInstalled(); const localExtensions = this.getLocalExtensions(installedExtensions); const ignoredExtensions = getIgnoredExtensions(installedExtensions, this.configurationService); - const { added, removed, updated, remote } = merge(localExtensions, null, null, [], ignoredExtensions); + const mergeResult = merge(localExtensions, null, null, [], ignoredExtensions); + const { added, removed, updated, remote } = mergeResult; + const resourcePreviews: IResourcePreview[] = this.getResourcePreviews(mergeResult); return { added, removed, updated, remote, remoteUserData, localExtensions, skippedExtensions: [], lastSyncUserData, - hasLocalChanged: added.length > 0 || removed.length > 0 || updated.length > 0, - hasRemoteChanged: remote !== null, + hasLocalChanged: resourcePreviews.some(({ hasLocalChanged }) => hasLocalChanged), + hasRemoteChanged: resourcePreviews.some(({ hasRemoteChanged }) => hasRemoteChanged), isLastSyncFromCurrentMachine: false, hasConflicts: false, + resourcePreviews }; } @@ -119,14 +127,16 @@ export class ExtensionsSynchroniser extends AbstractSynchroniser implements IUse const localExtensions = this.getLocalExtensions(installedExtensions); const syncExtensions = await this.parseAndMigrateExtensions(syncData); const ignoredExtensions = getIgnoredExtensions(installedExtensions, this.configurationService); - const { added, updated, removed } = merge(localExtensions, syncExtensions, localExtensions, [], ignoredExtensions); - + const mergeResult = merge(localExtensions, syncExtensions, localExtensions, [], ignoredExtensions); + const { added, removed, updated } = mergeResult; + const resourcePreviews: IResourcePreview[] = this.getResourcePreviews(mergeResult); return { added, removed, updated, remote: syncExtensions, remoteUserData, localExtensions, skippedExtensions: [], lastSyncUserData, - hasLocalChanged: added.length > 0 || removed.length > 0 || updated.length > 0, + hasLocalChanged: resourcePreviews.some(({ hasLocalChanged }) => hasLocalChanged), hasRemoteChanged: true, isLastSyncFromCurrentMachine: false, hasConflicts: false, + resourcePreviews }; } @@ -153,7 +163,9 @@ export class ExtensionsSynchroniser extends AbstractSynchroniser implements IUse this.logService.trace(`${this.syncResourceLogLabel}: Remote extensions does not exist. Synchronizing extensions for the first time.`); } - const { added, removed, updated, remote } = merge(localExtensions, remoteExtensions, lastSyncExtensions, skippedExtensions, ignoredExtensions); + const mergeResult = merge(localExtensions, remoteExtensions, lastSyncExtensions, skippedExtensions, ignoredExtensions); + const { added, removed, updated, remote } = mergeResult; + const resourcePreviews: IResourcePreview[] = this.getResourcePreviews(mergeResult); return { added, @@ -164,10 +176,11 @@ export class ExtensionsSynchroniser extends AbstractSynchroniser implements IUse remoteUserData, localExtensions, lastSyncUserData, - hasLocalChanged: added.length > 0 || removed.length > 0 || updated.length > 0, - hasRemoteChanged: remote !== null, + hasLocalChanged: resourcePreviews.some(({ hasLocalChanged }) => hasLocalChanged), + hasRemoteChanged: resourcePreviews.some(({ hasRemoteChanged }) => hasRemoteChanged), isLastSyncFromCurrentMachine, - hasConflicts: false + hasConflicts: false, + resourcePreviews }; } @@ -202,6 +215,18 @@ export class ExtensionsSynchroniser extends AbstractSynchroniser implements IUse } } + private getResourcePreviews({ added, removed, updated, remote }: IMergeResult): IResourcePreview[] { + const hasLocalChanged = added.length > 0 || removed.length > 0 || updated.length > 0; + const hasRemoteChanged = remote !== null; + return [{ + hasLocalChanged, + hasConflicts: false, + hasRemoteChanged, + localResouce: ExtensionsSynchroniser.EXTENSIONS_DATA_URI, + remoteResource: this.remotePreviewResource + }]; + } + async getAssociatedResources({ uri }: ISyncResourceHandle): Promise<{ resource: URI, comparableResource?: URI }[]> { return [{ resource: joinPath(uri, 'extensions.json'), comparableResource: ExtensionsSynchroniser.EXTENSIONS_DATA_URI }]; } diff --git a/src/vs/platform/userDataSync/common/globalStateSync.ts b/src/vs/platform/userDataSync/common/globalStateSync.ts index 51524969a7..cadcbdfc6b 100644 --- a/src/vs/platform/userDataSync/common/globalStateSync.ts +++ b/src/vs/platform/userDataSync/common/globalStateSync.ts @@ -5,7 +5,7 @@ import { IUserDataSyncStoreService, IUserDataSyncLogService, IGlobalState, SyncResource, IUserDataSynchroniser, IUserDataSyncResourceEnablementService, - IUserDataSyncBackupStoreService, ISyncResourceHandle, IStorageValue, ISyncPreview, USER_DATA_SYNC_SCHEME, IRemoteUserData, ISyncData + IUserDataSyncBackupStoreService, ISyncResourceHandle, IStorageValue, USER_DATA_SYNC_SCHEME, IRemoteUserData, ISyncData, IResourcePreview } from 'vs/platform/userDataSync/common/userDataSync'; import { VSBuffer } from 'vs/base/common/buffer'; import { Event } from 'vs/base/common/event'; @@ -14,9 +14,9 @@ import { dirname, joinPath, basename, isEqual } from 'vs/base/common/resources'; import { IFileService } from 'vs/platform/files/common/files'; import { IStringDictionary } from 'vs/base/common/collections'; import { edit } from 'vs/platform/userDataSync/common/content'; -import { merge } from 'vs/platform/userDataSync/common/globalStateMerge'; +import { merge, IMergeResult } from 'vs/platform/userDataSync/common/globalStateMerge'; import { parse } from 'vs/base/common/json'; -import { AbstractSynchroniser } from 'vs/platform/userDataSync/common/abstractSynchronizer'; +import { AbstractSynchroniser, ISyncResourcePreview } from 'vs/platform/userDataSync/common/abstractSynchronizer'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { URI } from 'vs/base/common/uri'; @@ -30,12 +30,11 @@ import { CancellationToken } from 'vs/base/common/cancellation'; const argvStoragePrefx = 'globalState.argv.'; const argvProperties: string[] = ['locale']; -interface IGlobalStateSyncPreview extends ISyncPreview { +interface IGlobalStateSyncPreview extends ISyncResourcePreview { readonly local: { added: IStringDictionary, removed: string[], updated: IStringDictionary }; readonly remote: IStringDictionary | null; readonly skippedStorageKeys: string[]; readonly localUserData: IGlobalState; - readonly remoteUserData: IRemoteUserData; readonly lastSyncUserData: ILastSyncUserData | null; } @@ -47,6 +46,8 @@ export class GlobalStateSynchroniser extends AbstractSynchroniser implements IUs private static readonly GLOBAL_STATE_DATA_URI = URI.from({ scheme: USER_DATA_SYNC_SCHEME, authority: 'globalState', path: `/current.json` }); protected readonly version: number = 1; + private readonly localPreviewResource: URI = joinPath(this.syncPreviewFolder, 'globalState.json'); + private readonly remotePreviewResource: URI = this.localPreviewResource.with({ scheme: USER_DATA_SYNC_SCHEME }); constructor( @IFileService fileService: IFileService, @@ -78,14 +79,17 @@ export class GlobalStateSynchroniser extends AbstractSynchroniser implements IUs const localGlobalState = await this.getLocalGlobalState(); if (remoteUserData.syncData !== null) { const remoteGlobalState: IGlobalState = JSON.parse(remoteUserData.syncData.content); - const { local, remote, skipped } = merge(localGlobalState.storage, remoteGlobalState.storage, null, this.getSyncStorageKeys(), lastSyncUserData?.skippedStorageKeys || [], this.logService); + const mergeResult = merge(localGlobalState.storage, remoteGlobalState.storage, null, this.getSyncStorageKeys(), lastSyncUserData?.skippedStorageKeys || [], this.logService); + const { local, remote, skipped } = mergeResult; + const resourcePreviews: IResourcePreview[] = this.getResourcePreviews(mergeResult); return { remoteUserData, lastSyncUserData, local, remote, localUserData: localGlobalState, skippedStorageKeys: skipped, - hasLocalChanged: Object.keys(local.added).length > 0 || Object.keys(local.updated).length > 0 || local.removed.length > 0, - hasRemoteChanged: remote !== null, + hasLocalChanged: resourcePreviews.some(({ hasLocalChanged }) => hasLocalChanged), + hasRemoteChanged: resourcePreviews.some(({ hasRemoteChanged }) => hasRemoteChanged), hasConflicts: false, isLastSyncFromCurrentMachine: false, + resourcePreviews }; } else { return { @@ -95,6 +99,7 @@ export class GlobalStateSynchroniser extends AbstractSynchroniser implements IUs hasRemoteChanged: false, hasConflicts: false, isLastSyncFromCurrentMachine: false, + resourcePreviews: [] }; } } @@ -107,21 +112,25 @@ export class GlobalStateSynchroniser extends AbstractSynchroniser implements IUs hasLocalChanged: false, hasRemoteChanged: true, isLastSyncFromCurrentMachine: false, - hasConflicts: false + hasConflicts: false, + resourcePreviews: this.getResourcePreviews({ local: { added: {}, removed: [], updated: {} }, remote: localUserData.storage, skipped: [] }) }; } protected async generateReplacePreview(syncData: ISyncData, remoteUserData: IRemoteUserData, lastSyncUserData: ILastSyncUserData | null): Promise { const localUserData = await this.getLocalGlobalState(); const syncGlobalState: IGlobalState = JSON.parse(syncData.content); - const { local, skipped } = merge(localUserData.storage, syncGlobalState.storage, localUserData.storage, this.getSyncStorageKeys(), lastSyncUserData?.skippedStorageKeys || [], this.logService); + const mergeResult = merge(localUserData.storage, syncGlobalState.storage, localUserData.storage, this.getSyncStorageKeys(), lastSyncUserData?.skippedStorageKeys || [], this.logService); + const { local, skipped } = mergeResult; + const resourcePreviews: IResourcePreview[] = this.getResourcePreviews(mergeResult); return { local, remote: syncGlobalState.storage, remoteUserData, localUserData, lastSyncUserData, skippedStorageKeys: skipped, - hasLocalChanged: Object.keys(local.added).length > 0 || Object.keys(local.updated).length > 0 || local.removed.length > 0, + hasLocalChanged: resourcePreviews.some(({ hasLocalChanged }) => hasLocalChanged), hasRemoteChanged: true, isLastSyncFromCurrentMachine: false, - hasConflicts: false + hasConflicts: false, + resourcePreviews: [], }; } @@ -145,15 +154,18 @@ export class GlobalStateSynchroniser extends AbstractSynchroniser implements IUs this.logService.trace(`${this.syncResourceLogLabel}: Remote ui state does not exist. Synchronizing ui state for the first time.`); } - const { local, remote, skipped } = merge(localGloablState.storage, remoteGlobalState ? remoteGlobalState.storage : null, lastSyncGlobalState ? lastSyncGlobalState.storage : null, this.getSyncStorageKeys(), lastSyncUserData?.skippedStorageKeys || [], this.logService); + const mergeResult = merge(localGloablState.storage, remoteGlobalState ? remoteGlobalState.storage : null, lastSyncGlobalState ? lastSyncGlobalState.storage : null, this.getSyncStorageKeys(), lastSyncUserData?.skippedStorageKeys || [], this.logService); + const { local, remote, skipped } = mergeResult; + const resourcePreviews: IResourcePreview[] = this.getResourcePreviews(mergeResult); return { local, remote, remoteUserData, localUserData: localGloablState, lastSyncUserData, skippedStorageKeys: skipped, - hasLocalChanged: Object.keys(local.added).length > 0 || Object.keys(local.updated).length > 0 || local.removed.length > 0, - hasRemoteChanged: remote !== null, + hasLocalChanged: resourcePreviews.some(({ hasLocalChanged }) => hasLocalChanged), + hasRemoteChanged: resourcePreviews.some(({ hasRemoteChanged }) => hasRemoteChanged), isLastSyncFromCurrentMachine, - hasConflicts: false + hasConflicts: false, + resourcePreviews }; } @@ -191,6 +203,18 @@ export class GlobalStateSynchroniser extends AbstractSynchroniser implements IUs } } + private getResourcePreviews({ local, remote }: IMergeResult): IResourcePreview[] { + const hasLocalChanged = Object.keys(local.added).length > 0 || Object.keys(local.updated).length > 0 || local.removed.length > 0; + const hasRemoteChanged = remote !== null; + return [{ + hasLocalChanged, + hasConflicts: false, + hasRemoteChanged, + localResouce: GlobalStateSynchroniser.GLOBAL_STATE_DATA_URI, + remoteResource: this.remotePreviewResource + }]; + } + async getAssociatedResources({ uri }: ISyncResourceHandle): Promise<{ resource: URI, comparableResource?: URI }[]> { return [{ resource: joinPath(uri, 'globalState.json'), comparableResource: GlobalStateSynchroniser.GLOBAL_STATE_DATA_URI }]; } diff --git a/src/vs/platform/userDataSync/common/keybindingsSync.ts b/src/vs/platform/userDataSync/common/keybindingsSync.ts index 5cd45a197b..12373afc7b 100644 --- a/src/vs/platform/userDataSync/common/keybindingsSync.ts +++ b/src/vs/platform/userDataSync/common/keybindingsSync.ts @@ -6,8 +6,8 @@ import { IFileService, FileOperationError, FileOperationResult } from 'vs/platform/files/common/files'; import { UserDataSyncError, UserDataSyncErrorCode, IUserDataSyncStoreService, IUserDataSyncLogService, IUserDataSyncUtilService, SyncResource, - IUserDataSynchroniser, IUserDataSyncResourceEnablementService, IUserDataSyncBackupStoreService, USER_DATA_SYNC_SCHEME, PREVIEW_DIR_NAME, ISyncResourceHandle, - IRemoteUserData, ISyncData + IUserDataSynchroniser, IUserDataSyncResourceEnablementService, IUserDataSyncBackupStoreService, USER_DATA_SYNC_SCHEME, ISyncResourceHandle, + IRemoteUserData, ISyncData, IResourcePreview } from 'vs/platform/userDataSync/common/userDataSync'; import { merge } from 'vs/platform/userDataSync/common/keybindingsMerge'; import { VSBuffer } from 'vs/base/common/buffer'; @@ -35,7 +35,7 @@ interface ISyncContent { export class KeybindingsSynchroniser extends AbstractJsonFileSynchroniser implements IUserDataSynchroniser { protected readonly version: number = 1; - protected readonly localPreviewResource: URI = joinPath(this.syncFolder, PREVIEW_DIR_NAME, 'keybindings.json'); + protected readonly localPreviewResource: URI = joinPath(this.syncPreviewFolder, 'keybindings.json'); protected readonly remotePreviewResource: URI = this.localPreviewResource.with({ scheme: USER_DATA_SYNC_SCHEME }); constructor( @@ -57,45 +57,81 @@ export class KeybindingsSynchroniser extends AbstractJsonFileSynchroniser implem const fileContent = await this.getLocalFileContent(); const content = remoteUserData.syncData !== null ? this.getKeybindingsContentFromSyncContent(remoteUserData.syncData.content) : null; const hasLocalChanged = content !== null; + const hasRemoteChanged = false; + const hasConflicts = false; + + const resourcePreviews: IResourcePreview[] = [{ + hasConflicts, + hasLocalChanged, + hasRemoteChanged, + localResouce: this.file, + remoteResource: this.remotePreviewResource, + }]; + return { fileContent, remoteUserData, lastSyncUserData, content, - hasConflicts: false, + hasConflicts, hasLocalChanged, - hasRemoteChanged: false, - isLastSyncFromCurrentMachine: false + hasRemoteChanged, + isLastSyncFromCurrentMachine: false, + resourcePreviews }; } protected async generatePushPreview(remoteUserData: IRemoteUserData, lastSyncUserData: IRemoteUserData | null, token: CancellationToken): Promise { const fileContent = await this.getLocalFileContent(); const content: string | null = fileContent ? fileContent.value.toString() : null; + const hasLocalChanged = false; + const hasRemoteChanged = content !== null; + const hasConflicts = false; + + const resourcePreviews: IResourcePreview[] = [{ + hasConflicts, + hasLocalChanged, + hasRemoteChanged, + localResouce: this.file, + remoteResource: this.remotePreviewResource, + }]; return { fileContent, remoteUserData, lastSyncUserData, content, - hasLocalChanged: false, - hasRemoteChanged: content !== null, - hasConflicts: false, - isLastSyncFromCurrentMachine: false + hasLocalChanged, + hasRemoteChanged, + hasConflicts, + isLastSyncFromCurrentMachine: false, + resourcePreviews }; } protected async generateReplacePreview(syncData: ISyncData, remoteUserData: IRemoteUserData, lastSyncUserData: IRemoteUserData | null): Promise { const fileContent = await this.getLocalFileContent(); const content = this.getKeybindingsContentFromSyncContent(syncData.content); + const hasLocalChanged = content !== null; + const hasRemoteChanged = content !== null; + const hasConflicts = false; + + const resourcePreviews: IResourcePreview[] = [{ + hasConflicts, + hasLocalChanged, + hasRemoteChanged, + localResouce: this.file, + remoteResource: this.remotePreviewResource, + }]; return { fileContent, remoteUserData, lastSyncUserData, content, - hasConflicts: false, - hasLocalChanged: content !== null, - hasRemoteChanged: content !== null, - isLastSyncFromCurrentMachine: false + hasConflicts, + hasLocalChanged, + hasRemoteChanged, + isLastSyncFromCurrentMachine: false, + resourcePreviews }; } @@ -154,8 +190,16 @@ export class KeybindingsSynchroniser extends AbstractJsonFileSynchroniser implem } this.setConflicts(hasConflicts && !token.isCancellationRequested ? [{ local: this.localPreviewResource, remote: this.remotePreviewResource }] : []); + const resourcePreviews: IResourcePreview[] = [{ + hasConflicts, + hasLocalChanged, + hasRemoteChanged, + localResouce: this.file, + remoteResource: this.remotePreviewResource, + previewResource: this.localPreviewResource + }]; - return { fileContent, remoteUserData, lastSyncUserData, content, hasLocalChanged, hasRemoteChanged, hasConflicts, isLastSyncFromCurrentMachine }; + return { fileContent, remoteUserData, lastSyncUserData, content, hasLocalChanged, hasRemoteChanged, hasConflicts, isLastSyncFromCurrentMachine, resourcePreviews }; } protected async updatePreviewWithConflict(preview: IFileSyncPreview, conflictResource: URI, conflictContent: string, token: CancellationToken): Promise { @@ -229,7 +273,7 @@ export class KeybindingsSynchroniser extends AbstractJsonFileSynchroniser implem async resolveContent(uri: URI): Promise { if (isEqual(this.remotePreviewResource, uri)) { - return this.getConflictContent(uri); + return this.resolvePreviewContent(uri); } let content = await super.resolveContent(uri); if (content) { @@ -248,8 +292,8 @@ export class KeybindingsSynchroniser extends AbstractJsonFileSynchroniser implem return null; } - protected async getConflictContent(conflictResource: URI): Promise { - const content = await super.getConflictContent(conflictResource); + protected async resolvePreviewContent(conflictResource: URI): Promise { + const content = await super.resolvePreviewContent(conflictResource); return content !== null ? this.getKeybindingsContentFromSyncContent(content) : null; } diff --git a/src/vs/platform/userDataSync/common/settingsSync.ts b/src/vs/platform/userDataSync/common/settingsSync.ts index 6ff552c5a2..bcbfd00b34 100644 --- a/src/vs/platform/userDataSync/common/settingsSync.ts +++ b/src/vs/platform/userDataSync/common/settingsSync.ts @@ -6,8 +6,8 @@ import { IFileService, FileOperationError, FileOperationResult } from 'vs/platform/files/common/files'; import { UserDataSyncError, UserDataSyncErrorCode, IUserDataSyncStoreService, IUserDataSyncLogService, IUserDataSyncUtilService, CONFIGURATION_SYNC_STORE_KEY, - SyncResource, IUserDataSyncResourceEnablementService, IUserDataSyncBackupStoreService, USER_DATA_SYNC_SCHEME, PREVIEW_DIR_NAME, ISyncResourceHandle, IUserDataSynchroniser, - IRemoteUserData, ISyncData + SyncResource, IUserDataSyncResourceEnablementService, IUserDataSyncBackupStoreService, USER_DATA_SYNC_SCHEME, ISyncResourceHandle, IUserDataSynchroniser, + IRemoteUserData, ISyncData, IResourcePreview } from 'vs/platform/userDataSync/common/userDataSync'; import { VSBuffer } from 'vs/base/common/buffer'; import { localize } from 'vs/nls'; @@ -39,7 +39,7 @@ function isSettingsSyncContent(thing: any): thing is ISettingsSyncContent { export class SettingsSynchroniser extends AbstractJsonFileSynchroniser implements IUserDataSynchroniser { protected readonly version: number = 1; - protected readonly localPreviewResource: URI = joinPath(this.syncFolder, PREVIEW_DIR_NAME, 'settings.json'); + protected readonly localPreviewResource: URI = joinPath(this.syncPreviewFolder, 'settings.json'); protected readonly remotePreviewResource: URI = this.localPreviewResource.with({ scheme: USER_DATA_SYNC_SCHEME }); constructor( @@ -71,15 +71,28 @@ export class SettingsSynchroniser extends AbstractJsonFileSynchroniser implement content = updateIgnoredSettings(remoteSettingsSyncContent.settings, fileContent ? fileContent.value.toString() : '{}', ignoredSettings, formatUtils); } + const hasLocalChanged = content !== null; + const hasRemoteChanged = false; + const hasConflicts = false; + + const resourcePreviews: IResourcePreview[] = [{ + hasConflicts, + hasLocalChanged, + hasRemoteChanged, + localResouce: this.file, + remoteResource: this.remotePreviewResource, + }]; + return { fileContent, remoteUserData, lastSyncUserData, content, - hasLocalChanged: content !== null, - hasRemoteChanged: false, - hasConflicts: false, - isLastSyncFromCurrentMachine: false + hasLocalChanged, + hasRemoteChanged, + hasConflicts, + isLastSyncFromCurrentMachine: false, + resourcePreviews }; } @@ -95,15 +108,28 @@ export class SettingsSynchroniser extends AbstractJsonFileSynchroniser implement content = updateIgnoredSettings(fileContent.value.toString(), '{}', ignoredSettings, formatUtils); } + const hasLocalChanged = false; + const hasRemoteChanged = content !== null; + const hasConflicts = false; + + const resourcePreviews: IResourcePreview[] = [{ + hasConflicts, + hasLocalChanged, + hasRemoteChanged, + localResouce: this.file, + remoteResource: this.remotePreviewResource, + }]; + return { fileContent, remoteUserData, lastSyncUserData, content, - hasLocalChanged: false, - hasRemoteChanged: content !== null, - hasConflicts: false, - isLastSyncFromCurrentMachine: false + hasLocalChanged, + hasRemoteChanged, + hasConflicts, + isLastSyncFromCurrentMachine: false, + resourcePreviews }; } @@ -119,14 +145,27 @@ export class SettingsSynchroniser extends AbstractJsonFileSynchroniser implement content = updateIgnoredSettings(settingsSyncContent.settings, fileContent ? fileContent.value.toString() : '{}', ignoredSettings, formatUtils); } + const hasLocalChanged = content !== null; + const hasRemoteChanged = content !== null; + const hasConflicts = false; + + const resourcePreviews: IResourcePreview[] = [{ + hasConflicts, + hasLocalChanged, + hasRemoteChanged, + localResouce: this.file, + remoteResource: this.remotePreviewResource, + }]; + return { fileContent, remoteUserData, lastSyncUserData, content, - hasLocalChanged: content !== null, - hasRemoteChanged: content !== null, - hasConflicts: false, + hasLocalChanged, + hasRemoteChanged, + hasConflicts, + resourcePreviews, isLastSyncFromCurrentMachine: false }; } @@ -177,8 +216,16 @@ export class SettingsSynchroniser extends AbstractJsonFileSynchroniser implement } this.setConflicts(hasConflicts && !token.isCancellationRequested ? [{ local: this.localPreviewResource, remote: this.remotePreviewResource }] : []); + const resourcePreviews: IResourcePreview[] = [{ + hasConflicts, + hasLocalChanged, + hasRemoteChanged, + localResouce: this.file, + remoteResource: this.remotePreviewResource, + previewResource: this.localPreviewResource + }]; - return { fileContent, remoteUserData, lastSyncUserData, content, hasLocalChanged, hasRemoteChanged, hasConflicts, isLastSyncFromCurrentMachine }; + return { fileContent, remoteUserData, lastSyncUserData, content, hasLocalChanged, hasRemoteChanged, hasConflicts, isLastSyncFromCurrentMachine, resourcePreviews }; } protected async updatePreviewWithConflict(preview: IFileSyncPreview, conflictResource: URI, conflictContent: string, token: CancellationToken): Promise { @@ -256,7 +303,7 @@ export class SettingsSynchroniser extends AbstractJsonFileSynchroniser implement async resolveContent(uri: URI): Promise { if (isEqual(this.remotePreviewResource, uri)) { - return this.getConflictContent(uri); + return this.resolvePreviewContent(uri); } let content = await super.resolveContent(uri); if (content) { @@ -278,8 +325,8 @@ export class SettingsSynchroniser extends AbstractJsonFileSynchroniser implement return null; } - protected async getConflictContent(conflictResource: URI): Promise { - let content = await super.getConflictContent(conflictResource); + protected async resolvePreviewContent(conflictResource: URI): Promise { + let content = await super.resolvePreviewContent(conflictResource); if (content !== null) { const settingsSyncContent = this.parseSettingsSyncContent(content); content = settingsSyncContent ? settingsSyncContent.settings : null; diff --git a/src/vs/platform/userDataSync/common/snippetsSync.ts b/src/vs/platform/userDataSync/common/snippetsSync.ts index 3759d8ef11..f70e71ff4b 100644 --- a/src/vs/platform/userDataSync/common/snippetsSync.ts +++ b/src/vs/platform/userDataSync/common/snippetsSync.ts @@ -5,22 +5,22 @@ import { IUserDataSyncStoreService, IUserDataSyncLogService, IUserDataSynchroniser, SyncResource, IUserDataSyncResourceEnablementService, IUserDataSyncBackupStoreService, - Conflict, USER_DATA_SYNC_SCHEME, PREVIEW_DIR_NAME, ISyncResourceHandle, IRemoteUserData, ISyncData, ISyncPreview + Conflict, USER_DATA_SYNC_SCHEME, ISyncResourceHandle, IRemoteUserData, ISyncData, IResourcePreview } from 'vs/platform/userDataSync/common/userDataSync'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { IFileService, FileChangesEvent, IFileStat, IFileContent, FileOperationError, FileOperationResult } from 'vs/platform/files/common/files'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; -import { AbstractSynchroniser } from 'vs/platform/userDataSync/common/abstractSynchronizer'; +import { AbstractSynchroniser, ISyncResourcePreview } from 'vs/platform/userDataSync/common/abstractSynchronizer'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { IStringDictionary } from 'vs/base/common/collections'; import { URI } from 'vs/base/common/uri'; import { joinPath, extname, relativePath, isEqualOrParent, isEqual, basename, dirname } from 'vs/base/common/resources'; import { VSBuffer } from 'vs/base/common/buffer'; -import { merge } from 'vs/platform/userDataSync/common/snippetsMerge'; +import { merge, IMergeResult } from 'vs/platform/userDataSync/common/snippetsMerge'; import { CancellationToken } from 'vs/base/common/cancellation'; import { IStorageService } from 'vs/platform/storage/common/storage'; -interface ISinppetsSyncPreview extends ISyncPreview { +interface ISinppetsSyncPreview extends ISyncResourcePreview { readonly local: IStringDictionary; readonly added: IStringDictionary; readonly updated: IStringDictionary; @@ -34,7 +34,6 @@ export class SnippetsSynchroniser extends AbstractSynchroniser implements IUserD protected readonly version: number = 1; private readonly snippetsFolder: URI; - private readonly snippetsPreviewFolder: URI; constructor( @IEnvironmentService environmentService: IEnvironmentService, @@ -49,7 +48,6 @@ export class SnippetsSynchroniser extends AbstractSynchroniser implements IUserD ) { super(SyncResource.Snippets, fileService, environmentService, storageService, userDataSyncStoreService, userDataSyncBackupStoreService, userDataSyncResourceEnablementService, telemetryService, logService, configurationService); this.snippetsFolder = environmentService.snippetsHome; - this.snippetsPreviewFolder = joinPath(this.syncFolder, PREVIEW_DIR_NAME); this._register(this.fileService.watch(environmentService.userRoamingDataHome)); this._register(this.fileService.watch(this.snippetsFolder)); this._register(this.fileService.onDidFilesChange(e => this.onFileChanges(e))); @@ -67,7 +65,8 @@ export class SnippetsSynchroniser extends AbstractSynchroniser implements IUserD const local = await this.getSnippetsFileContents(); const localSnippets = this.toSnippetsContents(local); const remoteSnippets = this.parseSnippets(remoteUserData.syncData); - const { added, updated, remote, removed } = merge(localSnippets, remoteSnippets, localSnippets); + const mergeResult = merge(localSnippets, remoteSnippets, localSnippets); + const { added, updated, remote, removed } = mergeResult; return { remoteUserData, lastSyncUserData, added, removed, updated, remote, local, @@ -75,6 +74,7 @@ export class SnippetsSynchroniser extends AbstractSynchroniser implements IUserD hasRemoteChanged: remote !== null, conflicts: [], resolvedConflicts: {}, hasConflicts: false, isLastSyncFromCurrentMachine: false, + resourcePreviews: this.getResourcePreviews(mergeResult) }; } else { return { @@ -84,6 +84,7 @@ export class SnippetsSynchroniser extends AbstractSynchroniser implements IUserD hasRemoteChanged: false, conflicts: [], resolvedConflicts: {}, hasConflicts: false, isLastSyncFromCurrentMachine: false, + resourcePreviews: [] }; } } @@ -91,13 +92,15 @@ export class SnippetsSynchroniser extends AbstractSynchroniser implements IUserD protected async generatePushPreview(remoteUserData: IRemoteUserData, lastSyncUserData: IRemoteUserData | null, token: CancellationToken): Promise { const local = await this.getSnippetsFileContents(); const localSnippets = this.toSnippetsContents(local); - const { added, removed, updated, remote } = merge(localSnippets, null, null); + const mergeResult = merge(localSnippets, null, null); + const { added, updated, remote, removed } = mergeResult; return { added, removed, updated, remote, remoteUserData, local, lastSyncUserData, conflicts: [], resolvedConflicts: {}, hasLocalChanged: Object.keys(added).length > 0 || removed.length > 0 || Object.keys(updated).length > 0, hasRemoteChanged: remote !== null, isLastSyncFromCurrentMachine: false, hasConflicts: false, + resourcePreviews: this.getResourcePreviews(mergeResult) }; } @@ -105,12 +108,14 @@ export class SnippetsSynchroniser extends AbstractSynchroniser implements IUserD const local = await this.getSnippetsFileContents(); const localSnippets = this.toSnippetsContents(local); const snippets = this.parseSnippets(syncData); - const { added, updated, removed } = merge(localSnippets, snippets, localSnippets); + const mergeResult = merge(localSnippets, snippets, localSnippets); + const { added, updated, removed } = mergeResult; return { added, removed, updated, remote: snippets, remoteUserData, local, lastSyncUserData, conflicts: [], resolvedConflicts: {}, hasConflicts: false, hasLocalChanged: Object.keys(added).length > 0 || removed.length > 0 || Object.keys(updated).length > 0, hasRemoteChanged: true, isLastSyncFromCurrentMachine: false, + resourcePreviews: this.getResourcePreviews(mergeResult) }; } @@ -140,10 +145,11 @@ export class SnippetsSynchroniser extends AbstractSynchroniser implements IUserD } const mergeResult = merge(localSnippets, remoteSnippets, lastSyncSnippets, resolvedConflicts); + const resourcePreviews = this.getResourcePreviews(mergeResult); const conflicts: Conflict[] = []; for (const key of mergeResult.conflicts) { - const localPreview = joinPath(this.snippetsPreviewFolder, key); + const localPreview = joinPath(this.syncPreviewFolder, key); conflicts.push({ local: localPreview, remote: localPreview.with({ scheme: USER_DATA_SYNC_SCHEME }) }); const content = local[key]; if (!token.isCancellationRequested) { @@ -177,14 +183,15 @@ export class SnippetsSynchroniser extends AbstractSynchroniser implements IUserD resolvedConflicts, hasLocalChanged: Object.keys(mergeResult.added).length > 0 || mergeResult.removed.length > 0 || Object.keys(mergeResult.updated).length > 0, hasRemoteChanged: mergeResult.remote !== null, - isLastSyncFromCurrentMachine + isLastSyncFromCurrentMachine, + resourcePreviews }; } protected async updatePreviewWithConflict(preview: ISinppetsSyncPreview, conflictResource: URI, content: string, token: CancellationToken): Promise { const conflict = this.conflicts.filter(({ local, remote }) => isEqual(local, conflictResource) || isEqual(remote, conflictResource))[0]; if (conflict) { - const key = relativePath(this.snippetsPreviewFolder, conflict.local)!; + const key = relativePath(this.syncPreviewFolder, conflict.local)!; preview.resolvedConflicts[key] = content || null; preview = await this.doGeneratePreview(preview.local, preview.remoteUserData, preview.lastSyncUserData, preview.resolvedConflicts, token); } @@ -221,6 +228,47 @@ export class SnippetsSynchroniser extends AbstractSynchroniser implements IUserD } + private getResourcePreviews(mergeResult: IMergeResult): IResourcePreview[] { + const resourcePreviews: IResourcePreview[] = []; + for (const key of Object.keys(mergeResult.added)) { + resourcePreviews.push({ + remoteResource: joinPath(this.syncPreviewFolder, key).with({ scheme: USER_DATA_SYNC_SCHEME }), + hasConflicts: false, + hasLocalChanged: true, + hasRemoteChanged: false + }); + } + for (const key of Object.keys(mergeResult.updated)) { + resourcePreviews.push({ + remoteResource: joinPath(this.syncPreviewFolder, key).with({ scheme: USER_DATA_SYNC_SCHEME }), + localResouce: joinPath(this.snippetsFolder, key), + hasConflicts: false, + hasLocalChanged: true, + hasRemoteChanged: true + }); + } + for (const key of mergeResult.removed) { + resourcePreviews.push({ + localResouce: joinPath(this.snippetsFolder, key), + hasConflicts: false, + hasLocalChanged: true, + hasRemoteChanged: false + }); + } + for (const key of mergeResult.conflicts) { + resourcePreviews.push({ + localResouce: joinPath(this.snippetsFolder, key), + remoteResource: joinPath(this.syncPreviewFolder, key).with({ scheme: USER_DATA_SYNC_SCHEME }), + previewResource: joinPath(this.syncPreviewFolder, key), + hasConflicts: true, + hasLocalChanged: true, + hasRemoteChanged: true + }); + } + + return resourcePreviews; + } + async stop(): Promise { await this.clearConflicts(); return super.stop(); @@ -246,8 +294,8 @@ export class SnippetsSynchroniser extends AbstractSynchroniser implements IUserD } async resolveContent(uri: URI): Promise { - if (isEqualOrParent(uri.with({ scheme: this.syncFolder.scheme }), this.snippetsPreviewFolder)) { - return this.getConflictContent(uri); + if (isEqualOrParent(uri.with({ scheme: this.syncFolder.scheme }), this.syncPreviewFolder)) { + return this.resolvePreviewContent(uri); } let content = await super.resolveContent(uri); if (content) { @@ -264,11 +312,11 @@ export class SnippetsSynchroniser extends AbstractSynchroniser implements IUserD return null; } - private async getConflictContent(conflictResource: URI): Promise { + private async resolvePreviewContent(conflictResource: URI): Promise { const syncPreview = await this.getSyncPreviewInProgress(); if (syncPreview) { - const key = relativePath(this.snippetsPreviewFolder, conflictResource.with({ scheme: this.snippetsPreviewFolder.scheme }))!; - if (conflictResource.scheme === this.snippetsPreviewFolder.scheme) { + const key = relativePath(this.syncPreviewFolder, conflictResource.with({ scheme: this.syncPreviewFolder.scheme }))!; + if (conflictResource.scheme === this.syncPreviewFolder.scheme) { return (syncPreview as ISinppetsSyncPreview).local[key] ? (syncPreview as ISinppetsSyncPreview).local[key].value.toString() : null; } else if (syncPreview.remoteUserData && syncPreview.remoteUserData.syncData) { const snippets = this.parseSnippets(syncPreview.remoteUserData.syncData); diff --git a/src/vs/platform/userDataSync/common/userDataAutoSyncService.ts b/src/vs/platform/userDataSync/common/userDataAutoSyncService.ts index 1357128ea7..fb93d7874f 100644 --- a/src/vs/platform/userDataSync/common/userDataAutoSyncService.ts +++ b/src/vs/platform/userDataSync/common/userDataAutoSyncService.ts @@ -81,6 +81,12 @@ export class UserDataAutoSyncService extends UserDataAutoSyncEnablementService i private readonly _onError: Emitter = this._register(new Emitter()); readonly onError: Event = this._onError.event; + private readonly _onTurnOnSync: Emitter = this._register(new Emitter()); + readonly onTurnOnSync: Event = this._onTurnOnSync.event; + + private readonly _onDidTurnOnSync: Emitter = this._register(new Emitter()); + readonly onDidTurnOnSync: Event = this._onDidTurnOnSync.event; + constructor( @IUserDataSyncStoreService private readonly userDataSyncStoreService: IUserDataSyncStoreService, @IUserDataSyncResourceEnablementService private readonly userDataSyncResourceEnablementService: IUserDataSyncResourceEnablementService, @@ -140,22 +146,30 @@ export class UserDataAutoSyncService extends UserDataAutoSyncEnablementService i } async turnOn(pullFirst: boolean): Promise { - this.stopDisableMachineEventually(); + this._onTurnOnSync.fire(); - if (pullFirst) { - await this.userDataSyncService.pull(); - } else { - await this.userDataSyncService.sync(); + try { + this.stopDisableMachineEventually(); + + if (pullFirst) { + await this.userDataSyncService.pull(); + } else { + await this.userDataSyncService.sync(); + } + + this.setEnablement(true); + this._onDidTurnOnSync.fire(undefined); + } catch (error) { + this._onDidTurnOnSync.fire(error); + throw error; } - - this.setEnablement(true); } async turnOff(everywhere: boolean, softTurnOffOnError?: boolean, donotRemoveMachine?: boolean): Promise { try { // Remove machine - if (!donotRemoveMachine) { + if (this.userDataSyncAccountService.account && !donotRemoveMachine) { await this.userDataSyncMachinesService.removeCurrentMachine(); } diff --git a/src/vs/platform/userDataSync/common/userDataSync.ts b/src/vs/platform/userDataSync/common/userDataSync.ts index d579848300..cb18eefc13 100644 --- a/src/vs/platform/userDataSync/common/userDataSync.ts +++ b/src/vs/platform/userDataSync/common/userDataSync.ts @@ -293,13 +293,21 @@ export interface ISyncData { content: string; } -export interface ISyncPreview { - readonly remoteUserData: IRemoteUserData; - readonly lastSyncUserData: IRemoteUserData | null; +export interface IResourcePreview { + readonly remoteResource?: URI; + readonly localResouce?: URI; + readonly previewResource?: URI; + readonly hasLocalChanged: boolean; + readonly hasRemoteChanged: boolean; + readonly hasConflicts: boolean; +} + +export interface ISyncResourcePreview { readonly isLastSyncFromCurrentMachine: boolean; readonly hasLocalChanged: boolean; readonly hasRemoteChanged: boolean; readonly hasConflicts: boolean; + readonly resourcePreviews: IResourcePreview[]; } export interface IUserDataSynchroniser { @@ -317,7 +325,7 @@ export interface IUserDataSynchroniser { replace(uri: URI): Promise; stop(): Promise; - generateSyncPreview(): Promise + generateSyncPreview(): Promise hasPreviouslySynced(): Promise hasLocalData(): Promise; resetLocal(): Promise; @@ -357,6 +365,7 @@ export interface IUserDataSyncService { readonly status: SyncStatus; readonly onDidChangeStatus: Event; + readonly onSynchronizeResource: Event; readonly conflicts: SyncResourceConflicts[]; readonly onDidChangeConflicts: Event; @@ -390,6 +399,8 @@ export interface IUserDataSyncService { export const IUserDataAutoSyncService = createDecorator('IUserDataAutoSyncService'); export interface IUserDataAutoSyncService { _serviceBrand: any; + readonly onTurnOnSync: Event + readonly onDidTurnOnSync: Event readonly onError: Event; readonly onDidChangeEnablement: Event; isEnabled(): boolean; diff --git a/src/vs/platform/userDataSync/common/userDataSyncIpc.ts b/src/vs/platform/userDataSync/common/userDataSyncIpc.ts index f9604abc8a..4a85247bab 100644 --- a/src/vs/platform/userDataSync/common/userDataSyncIpc.ts +++ b/src/vs/platform/userDataSync/common/userDataSyncIpc.ts @@ -22,6 +22,7 @@ export class UserDataSyncChannel implements IServerChannel { listen(_: unknown, event: string): Event { switch (event) { case 'onDidChangeStatus': return this.service.onDidChangeStatus; + case 'onSynchronizeResource': return this.service.onSynchronizeResource; case 'onDidChangeConflicts': return this.service.onDidChangeConflicts; case 'onDidChangeLocal': return this.service.onDidChangeLocal; case 'onDidChangeLastSyncTime': return this.service.onDidChangeLastSyncTime; @@ -68,6 +69,8 @@ export class UserDataAutoSyncChannel implements IServerChannel { listen(_: unknown, event: string): Event { switch (event) { + case 'onTurnOnSync': return this.service.onTurnOnSync; + case 'onDidTurnOnSync': return this.service.onDidTurnOnSync; case 'onError': return this.service.onError; } throw new Error(`Event not found: ${event}`); diff --git a/src/vs/platform/userDataSync/common/userDataSyncService.ts b/src/vs/platform/userDataSync/common/userDataSyncService.ts index 006c2b063a..a0100cb66b 100644 --- a/src/vs/platform/userDataSync/common/userDataSyncService.ts +++ b/src/vs/platform/userDataSync/common/userDataSyncService.ts @@ -22,8 +22,9 @@ import { CancellationToken } from 'vs/base/common/cancellation'; import { IHeaders } from 'vs/base/parts/request/common/request'; import { generateUuid } from 'vs/base/common/uuid'; -type SyncClassification = { +type SyncErrorClassification = { resource?: { classification: 'SystemMetaData', purpose: 'FeatureInsight', isMeasurement: true }; + executionId?: { classification: 'SystemMetaData', purpose: 'FeatureInsight', isMeasurement: true }; }; const LAST_SYNC_TIME_KEY = 'sync.lastSyncTime'; @@ -39,6 +40,9 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ private _onDidChangeStatus: Emitter = this._register(new Emitter()); readonly onDidChangeStatus: Event = this._onDidChangeStatus.event; + private _onSynchronizeResource: Emitter = this._register(new Emitter()); + readonly onSynchronizeResource: Event = this._onSynchronizeResource.event; + readonly onDidChangeLocal: Event; private _conflicts: SyncResourceConflicts[] = []; @@ -91,6 +95,7 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ try { for (const synchroniser of this.synchronisers) { try { + this._onSynchronizeResource.fire(synchroniser.resource); await synchroniser.pull(); } catch (e) { this.handleSynchronizerError(e, synchroniser.resource); @@ -99,7 +104,7 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ this.updateLastSyncTime(); } catch (error) { if (error instanceof UserDataSyncError) { - this.telemetryService.publicLog2<{ resource?: string }, SyncClassification>(`sync/error/${error.code}`, { resource: error.resource }); + this.telemetryService.publicLog2<{ resource?: string, executionId?: string }, SyncErrorClassification>(`sync/error/${error.code}`, { resource: error.resource }); } throw error; } @@ -118,7 +123,7 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ this.updateLastSyncTime(); } catch (error) { if (error instanceof UserDataSyncError) { - this.telemetryService.publicLog2<{ resource?: string }, SyncClassification>(`sync/error/${error.code}`, { resource: error.resource }); + this.telemetryService.publicLog2<{ resource?: string, executionId?: string }, SyncErrorClassification>(`sync/error/${error.code}`, { resource: error.resource }); } throw error; } @@ -132,8 +137,16 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ async createSyncTask(): Promise { this.telemetryService.publicLog2('sync/getmanifest'); - const syncHeaders: IHeaders = { 'X-Execution-Id': generateUuid() }; - const manifest = await this.userDataSyncStoreService.manifest(syncHeaders); + const executionId = generateUuid(); + let manifest: IUserDataManifest | null; + try { + manifest = await this.userDataSyncStoreService.manifest({ 'X-Execution-Id': executionId }); + } catch (error) { + if (error instanceof UserDataSyncError) { + this.telemetryService.publicLog2<{ resource?: string, executionId?: string }, SyncErrorClassification>(`sync/error/${error.code}`, { resource: error.resource, executionId }); + } + throw error; + } let executed = false; const that = this; @@ -143,12 +156,12 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ if (executed) { throw new Error('Can run a task only once'); } - return that.doSync(manifest, syncHeaders, token); + return that.doSync(manifest, executionId, token); } }; } - private async doSync(manifest: IUserDataManifest | null, syncHeaders: IHeaders, token: CancellationToken): Promise { + private async doSync(manifest: IUserDataManifest | null, executionId: string, token: CancellationToken): Promise { await this.checkEnablement(); if (!this.recoveredSettings) { @@ -169,12 +182,15 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ this.setStatus(SyncStatus.Syncing); } + const syncHeaders: IHeaders = { 'X-Execution-Id': executionId }; + for (const synchroniser of this.synchronisers) { // Return if cancellation is requested if (token.isCancellationRequested) { return; } try { + this._onSynchronizeResource.fire(synchroniser.resource); await synchroniser.sync(manifest, syncHeaders); } catch (e) { this.handleSynchronizerError(e, synchroniser.resource); @@ -186,7 +202,7 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ this.updateLastSyncTime(); } catch (error) { if (error instanceof UserDataSyncError) { - this.telemetryService.publicLog2<{ resource?: string }, SyncClassification>(`sync/error/${error.code}`, { resource: error.resource }); + this.telemetryService.publicLog2<{ resource?: string, executionId?: string }, SyncErrorClassification>(`sync/error/${error.code}`, { resource: error.resource, executionId }); } throw error; } finally { diff --git a/src/vs/platform/userDataSync/test/common/synchronizer.test.ts b/src/vs/platform/userDataSync/test/common/synchronizer.test.ts index f31171521a..ea1cdb1830 100644 --- a/src/vs/platform/userDataSync/test/common/synchronizer.test.ts +++ b/src/vs/platform/userDataSync/test/common/synchronizer.test.ts @@ -4,16 +4,16 @@ *--------------------------------------------------------------------------------------------*/ import * as assert from 'assert'; -import { IUserDataSyncStoreService, SyncResource, SyncStatus, IUserDataSyncResourceEnablementService, IRemoteUserData, ISyncData, ISyncPreview } from 'vs/platform/userDataSync/common/userDataSync'; +import { IUserDataSyncStoreService, SyncResource, SyncStatus, IUserDataSyncResourceEnablementService, IRemoteUserData, ISyncData } from 'vs/platform/userDataSync/common/userDataSync'; import { UserDataSyncClient, UserDataSyncTestServer } from 'vs/platform/userDataSync/test/common/userDataSyncClient'; import { DisposableStore, toDisposable } from 'vs/base/common/lifecycle'; -import { AbstractSynchroniser } from 'vs/platform/userDataSync/common/abstractSynchronizer'; +import { AbstractSynchroniser, ISyncResourcePreview } from 'vs/platform/userDataSync/common/abstractSynchronizer'; import { Barrier } from 'vs/base/common/async'; import { Emitter, Event } from 'vs/base/common/event'; import { CancellationToken } from 'vs/base/common/cancellation'; import { URI } from 'vs/base/common/uri'; -interface ITestSyncPreview extends ISyncPreview { +interface ITestSyncPreview extends ISyncResourcePreview { ref?: string; } @@ -41,25 +41,25 @@ class TestSynchroniser extends AbstractSynchroniser { } protected async generatePullPreview(remoteUserData: IRemoteUserData, lastSyncUserData: IRemoteUserData | null, token: CancellationToken): Promise { - return { hasLocalChanged: false, hasRemoteChanged: false, isLastSyncFromCurrentMachine: false, hasConflicts: this.syncResult.hasConflicts, remoteUserData, lastSyncUserData }; + return { hasLocalChanged: false, hasRemoteChanged: false, isLastSyncFromCurrentMachine: false, hasConflicts: this.syncResult.hasConflicts, remoteUserData, lastSyncUserData, resourcePreviews: [] }; } protected async generatePushPreview(remoteUserData: IRemoteUserData, lastSyncUserData: IRemoteUserData | null, token: CancellationToken): Promise { - return { hasLocalChanged: false, hasRemoteChanged: false, isLastSyncFromCurrentMachine: false, hasConflicts: this.syncResult.hasConflicts, remoteUserData, lastSyncUserData }; + return { hasLocalChanged: false, hasRemoteChanged: false, isLastSyncFromCurrentMachine: false, hasConflicts: this.syncResult.hasConflicts, remoteUserData, lastSyncUserData, resourcePreviews: [] }; } protected async generateReplacePreview(syncData: ISyncData, remoteUserData: IRemoteUserData, lastSyncUserData: IRemoteUserData | null): Promise { - return { hasLocalChanged: false, hasRemoteChanged: false, isLastSyncFromCurrentMachine: false, hasConflicts: this.syncResult.hasConflicts, remoteUserData, lastSyncUserData }; + return { hasLocalChanged: false, hasRemoteChanged: false, isLastSyncFromCurrentMachine: false, hasConflicts: this.syncResult.hasConflicts, remoteUserData, lastSyncUserData, resourcePreviews: [] }; } protected async generatePreview(remoteUserData: IRemoteUserData, lastSyncUserData: IRemoteUserData | null, token: CancellationToken): Promise { if (this.syncResult.hasError) { throw new Error('failed'); } - return { ref: remoteUserData.ref, hasLocalChanged: false, hasRemoteChanged: false, isLastSyncFromCurrentMachine: false, hasConflicts: this.syncResult.hasConflicts, remoteUserData, lastSyncUserData }; + return { ref: remoteUserData.ref, hasLocalChanged: false, hasRemoteChanged: false, isLastSyncFromCurrentMachine: false, hasConflicts: this.syncResult.hasConflicts, remoteUserData, lastSyncUserData, resourcePreviews: [] }; } - protected async updatePreviewWithConflict(preview: ISyncPreview, conflictResource: URI, conflictContent: string): Promise { + protected async updatePreviewWithConflict(preview: ISyncResourcePreview, conflictResource: URI, conflictContent: string): Promise { return preview; } diff --git a/src/vs/platform/webview/common/resourceLoader.ts b/src/vs/platform/webview/common/resourceLoader.ts index bfe7831f09..77b02ab46a 100644 --- a/src/vs/platform/webview/common/resourceLoader.ts +++ b/src/vs/platform/webview/common/resourceLoader.ts @@ -3,7 +3,7 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { VSBuffer, VSBufferReadableStream } from 'vs/base/common/buffer'; +import { VSBufferReadableStream } from 'vs/base/common/buffer'; import { CancellationToken } from 'vs/base/common/cancellation'; import { isUNC } from 'vs/base/common/extpath'; import { Schemas } from 'vs/base/common/network'; @@ -11,14 +11,12 @@ import { sep } from 'vs/base/common/path'; import { URI } from 'vs/base/common/uri'; import { IFileService } from 'vs/platform/files/common/files'; import { IRemoteConnectionData } from 'vs/platform/remote/common/remoteAuthorityResolver'; -import { REMOTE_HOST_SCHEME } from 'vs/platform/remote/common/remoteHosts'; import { IRequestService } from 'vs/platform/request/common/request'; import { getWebviewContentMimeType } from 'vs/platform/webview/common/mimeTypes'; export const webviewPartitionId = 'webview'; - export namespace WebviewResourceResponse { export enum Type { Success, Failed, AccessDenied } @@ -31,73 +29,41 @@ export namespace WebviewResourceResponse { ) { } } - export class BufferSuccess { - readonly type = Type.Success; - - constructor( - public readonly buffer: VSBuffer, - public readonly mimeType: string - ) { } - } - export const Failed = { type: Type.Failed } as const; export const AccessDenied = { type: Type.AccessDenied } as const; - export type BufferResponse = BufferSuccess | typeof Failed | typeof AccessDenied; export type StreamResponse = StreamSuccess | typeof Failed | typeof AccessDenied; } export async function loadLocalResource( - requestUri: URI, - fileService: IFileService, - extensionLocation: URI | undefined, - roots: ReadonlyArray -): Promise { - const resourceToLoad = getResourceToLoad(requestUri, extensionLocation, roots); - if (!resourceToLoad) { - return WebviewResourceResponse.AccessDenied; - } - - try { - const data = await fileService.readFile(resourceToLoad); - const mime = getWebviewContentMimeType(requestUri); // Use the original path for the mime - return new WebviewResourceResponse.BufferSuccess(data.value, mime); - } catch (err) { - console.log(err); - return WebviewResourceResponse.Failed; - } -} - -export async function loadLocalResourceStream( requestUri: URI, options: { extensionLocation: URI | undefined; roots: ReadonlyArray; remoteConnectionData?: IRemoteConnectionData | null; + rewriteUri?: (uri: URI) => URI, }, fileService: IFileService, requestService: IRequestService, ): Promise { - const resourceToLoad = getResourceToLoad(requestUri, options.extensionLocation, options.roots); + let resourceToLoad = getResourceToLoad(requestUri, options.roots); if (!resourceToLoad) { return WebviewResourceResponse.AccessDenied; } + const mime = getWebviewContentMimeType(requestUri); // Use the original path for the mime - if (options.remoteConnectionData) { - // Remote uris must go to the resolved server. - if (resourceToLoad.scheme === Schemas.vscodeRemote || (options.extensionLocation?.scheme === REMOTE_HOST_SCHEME)) { - const uri = URI.parse(`http://${options.remoteConnectionData.host}:${options.remoteConnectionData.port}`).with({ - path: '/vscode-remote-resource', - query: `tkn=${options.remoteConnectionData.connectionToken}&path=${encodeURIComponent(resourceToLoad.path)}`, - }); + // Perform extra normalization if needed + if (options.rewriteUri) { + resourceToLoad = options.rewriteUri(resourceToLoad); + } - const response = await requestService.request({ url: uri.toString(true) }, CancellationToken.None); - if (response.res.statusCode === 200) { - return new WebviewResourceResponse.StreamSuccess(response.stream, mime); - } - return WebviewResourceResponse.Failed; + if (resourceToLoad.scheme === Schemas.http || resourceToLoad.scheme === Schemas.https) { + const response = await requestService.request({ url: resourceToLoad.toString(true) }, CancellationToken.None); + if (response.res.statusCode === 200) { + return new WebviewResourceResponse.StreamSuccess(response.stream, mime); } + return WebviewResourceResponse.Failed; } try { @@ -111,7 +77,6 @@ export async function loadLocalResourceStream( function getResourceToLoad( requestUri: URI, - extensionLocation: URI | undefined, roots: ReadonlyArray ): URI | undefined { const normalizedPath = normalizeRequestPath(requestUri); diff --git a/src/vs/platform/webview/common/webviewManagerService.ts b/src/vs/platform/webview/common/webviewManagerService.ts index 41ca056d5d..0e7efc53b8 100644 --- a/src/vs/platform/webview/common/webviewManagerService.ts +++ b/src/vs/platform/webview/common/webviewManagerService.ts @@ -13,7 +13,7 @@ export const IWebviewManagerService = createDecorator('w export interface IWebviewManagerService { _serviceBrand: unknown; - registerWebview(id: string, webContentsId: number, metadata: RegisterWebviewMetadata): Promise; + registerWebview(id: string, webContentsId: number | undefined, metadata: RegisterWebviewMetadata): Promise; unregisterWebview(id: string): Promise; updateWebviewMetadata(id: string, metadataDelta: Partial): Promise; diff --git a/src/vs/platform/webview/common/webviewPortMapping.ts b/src/vs/platform/webview/common/webviewPortMapping.ts index 9652f096c1..fe52c93fb1 100644 --- a/src/vs/platform/webview/common/webviewPortMapping.ts +++ b/src/vs/platform/webview/common/webviewPortMapping.ts @@ -72,7 +72,7 @@ export class WebviewPortMappingManager implements IDisposable { if (existing) { return existing; } - const tunnel = this.tunnelService.openTunnel(remoteAuthority, undefined, remotePort); + const tunnel = this.tunnelService.openTunnel({ getAddress: async () => remoteAuthority }, undefined, remotePort); if (tunnel) { this._tunnels.set(remotePort, tunnel); } diff --git a/src/vs/platform/webview/electron-main/webviewMainService.ts b/src/vs/platform/webview/electron-main/webviewMainService.ts index 44f7724006..bc1a061f95 100644 --- a/src/vs/platform/webview/electron-main/webviewMainService.ts +++ b/src/vs/platform/webview/electron-main/webviewMainService.ts @@ -30,7 +30,7 @@ export class WebviewMainService extends Disposable implements IWebviewManagerSer this.portMappingProvider = this._register(new WebviewPortMappingProvider(tunnelService)); } - public async registerWebview(id: string, webContentsId: number, metadata: RegisterWebviewMetadata): Promise { + public async registerWebview(id: string, webContentsId: number | undefined, metadata: RegisterWebviewMetadata): Promise { const extensionLocation = metadata.extensionLocation ? URI.from(metadata.extensionLocation) : undefined; this.protocolProvider.registerWebview(id, { diff --git a/src/vs/platform/webview/electron-main/webviewPortMappingProvider.ts b/src/vs/platform/webview/electron-main/webviewPortMappingProvider.ts index 358f4be0bd..c0140d9dbe 100644 --- a/src/vs/platform/webview/electron-main/webviewPortMappingProvider.ts +++ b/src/vs/platform/webview/electron-main/webviewPortMappingProvider.ts @@ -20,7 +20,7 @@ interface PortMappingData { export class WebviewPortMappingProvider extends Disposable { private readonly _webviewData = new Map(); @@ -56,14 +56,16 @@ export class WebviewPortMappingProvider extends Disposable { }); } - public async registerWebview(id: string, webContentsId: number, metadata: PortMappingData): Promise { + public async registerWebview(id: string, webContentsId: number | undefined, metadata: PortMappingData): Promise { const manager = new WebviewPortMappingManager( () => this._webviewData.get(id)?.metadata.extensionLocation, () => this._webviewData.get(id)?.metadata.mappings || [], this._tunnelService); this._webviewData.set(id, { webContentsId, metadata, manager }); - this._webContentsIdsToWebviewIds.set(webContentsId, id); + if (typeof webContentsId === 'number') { + this._webContentsIdsToWebviewIds.set(webContentsId, id); + } } public unregisterWebview(id: string): void { @@ -71,7 +73,9 @@ export class WebviewPortMappingProvider extends Disposable { if (existing) { existing.manager.dispose(); this._webviewData.delete(id); - this._webContentsIdsToWebviewIds.delete(existing.webContentsId); + if (typeof existing.webContentsId === 'number') { + this._webContentsIdsToWebviewIds.delete(existing.webContentsId); + } } } diff --git a/src/vs/platform/webview/electron-main/webviewProtocolProvider.ts b/src/vs/platform/webview/electron-main/webviewProtocolProvider.ts index 3e879d4cca..39f68f11e3 100644 --- a/src/vs/platform/webview/electron-main/webviewProtocolProvider.ts +++ b/src/vs/platform/webview/electron-main/webviewProtocolProvider.ts @@ -3,7 +3,7 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { session } from 'electron'; +import { session, protocol } from 'electron'; import { Readable } from 'stream'; import { VSBufferReadableStream } from 'vs/base/common/buffer'; import { Disposable, toDisposable } from 'vs/base/common/lifecycle'; @@ -12,7 +12,8 @@ import { URI } from 'vs/base/common/uri'; import { IFileService } from 'vs/platform/files/common/files'; import { IRemoteConnectionData } from 'vs/platform/remote/common/remoteAuthorityResolver'; import { IRequestService } from 'vs/platform/request/common/request'; -import { loadLocalResourceStream, webviewPartitionId, WebviewResourceResponse } from 'vs/platform/webview/common/resourceLoader'; +import { loadLocalResource, webviewPartitionId, WebviewResourceResponse } from 'vs/platform/webview/common/resourceLoader'; +import { REMOTE_HOST_SCHEME } from 'vs/platform/remote/common/remoteHosts'; interface WebviewMetadata { readonly extensionLocation: URI | undefined; @@ -22,6 +23,13 @@ interface WebviewMetadata { export class WebviewProtocolProvider extends Disposable { + private static validWebviewFilePaths = new Map([ + ['/index.html', 'index.html'], + ['/electron-browser/index.html', 'index.html'], + ['/main.js', 'main.js'], + ['/host.js', 'host.js'], + ]); + private readonly webviewMetadata = new Map(); constructor( @@ -32,42 +40,22 @@ export class WebviewProtocolProvider extends Disposable { const sess = session.fromPartition(webviewPartitionId); - sess.protocol.registerStreamProtocol(Schemas.vscodeWebviewResource, async (request, callback): Promise => { - try { - const uri = URI.parse(request.url); + // Register the protocol loading webview html + const webviewHandler = this.handleWebviewRequest.bind(this); + protocol.registerFileProtocol(Schemas.vscodeWebview, webviewHandler); + sess.protocol.registerFileProtocol(Schemas.vscodeWebview, webviewHandler); - const id = uri.authority; - const metadata = this.webviewMetadata.get(id); - if (metadata) { - const result = await loadLocalResourceStream(uri, { - extensionLocation: metadata.extensionLocation, - roots: metadata.localResourceRoots, - remoteConnectionData: metadata.remoteConnectionData, - }, this.fileService, this.requestService); - if (result.type === WebviewResourceResponse.Type.Success) { - return callback({ - statusCode: 200, - data: this.streamToNodeReadable(result.stream), - headers: { - 'Content-Type': result.mimeType, - 'Access-Control-Allow-Origin': '*', - } - }); - } + // Register the protocol loading webview resources both inside the webview and at the top level + const webviewResourceHandler = this.handleWebviewResourceRequest.bind(this); + protocol.registerStreamProtocol(Schemas.vscodeWebviewResource, webviewResourceHandler); + sess.protocol.registerStreamProtocol(Schemas.vscodeWebviewResource, webviewResourceHandler); - if (result.type === WebviewResourceResponse.Type.AccessDenied) { - console.error('Webview: Cannot load resource outside of protocol root'); - return callback({ data: null, statusCode: 401 }); - } - } - } catch { - // noop - } - - return callback({ data: null, statusCode: 404 }); - }); - - this._register(toDisposable(() => sess.protocol.unregisterProtocol(Schemas.vscodeWebviewResource))); + this._register(toDisposable(() => { + protocol.unregisterProtocol(Schemas.vscodeWebviewResource); + sess.protocol.unregisterProtocol(Schemas.vscodeWebviewResource); + protocol.unregisterProtocol(Schemas.vscodeWebview); + sess.protocol.unregisterProtocol(Schemas.vscodeWebview); + })); } private streamToNodeReadable(stream: VSBufferReadableStream): Readable { @@ -131,4 +119,81 @@ export class WebviewProtocolProvider extends Disposable { }); } } + + private async handleWebviewRequest(request: Electron.Request, callback: any) { + try { + const uri = URI.parse(request.url); + const entry = WebviewProtocolProvider.validWebviewFilePaths.get(uri.path); + if (typeof entry === 'string') { + let url: string; + if (uri.path.startsWith('/electron-browser')) { + url = require.toUrl(`vs/workbench/contrib/webview/electron-browser/pre/${entry}`); + } else { + url = require.toUrl(`vs/workbench/contrib/webview/browser/pre/${entry}`); + } + return callback(decodeURIComponent(url.replace('file://', ''))); + } + } catch { + // noop + } + callback({ error: -10 /* ACCESS_DENIED - https://cs.chromium.org/chromium/src/net/base/net_error_list.h?l=32 */ }); + } + + private async handleWebviewResourceRequest( + request: Electron.Request, + callback: (stream?: NodeJS.ReadableStream | Electron.StreamProtocolResponse | undefined) => void + ) { + try { + const uri = URI.parse(request.url); + + const id = uri.authority; + const metadata = this.webviewMetadata.get(id); + if (metadata) { + + // Try to further rewrite remote uris so that they go to the resolved server on the main thread + let rewriteUri: undefined | ((uri: URI) => URI); + if (metadata.remoteConnectionData) { + rewriteUri = (uri) => { + if (metadata.remoteConnectionData) { + if (uri.scheme === Schemas.vscodeRemote || (metadata.extensionLocation?.scheme === REMOTE_HOST_SCHEME)) { + const scheme = metadata.remoteConnectionData.host === 'localhost' || metadata.remoteConnectionData.host === '127.0.0.1' ? 'http' : 'https'; + return URI.parse(`${scheme}://${metadata.remoteConnectionData.host}:${metadata.remoteConnectionData.port}`).with({ + path: '/vscode-remote-resource', + query: `tkn=${metadata.remoteConnectionData.connectionToken}&path=${encodeURIComponent(uri.path)}`, + }); + } + } + return uri; + }; + } + + const result = await loadLocalResource(uri, { + extensionLocation: metadata.extensionLocation, + roots: metadata.localResourceRoots, + remoteConnectionData: metadata.remoteConnectionData, + rewriteUri, + }, this.fileService, this.requestService); + + if (result.type === WebviewResourceResponse.Type.Success) { + return callback({ + statusCode: 200, + data: this.streamToNodeReadable(result.stream), + headers: { + 'Content-Type': result.mimeType, + 'Access-Control-Allow-Origin': '*', + } + }); + } + + if (result.type === WebviewResourceResponse.Type.AccessDenied) { + console.error('Webview: Cannot load resource outside of protocol root'); + return callback({ data: null, statusCode: 401 }); + } + } + } catch { + // noop + } + + return callback({ data: null, statusCode: 404 }); + } } diff --git a/src/vs/platform/windows/electron-main/windowsMainService.ts b/src/vs/platform/windows/electron-main/windowsMainService.ts index 687b47d800..da068cb60f 100644 --- a/src/vs/platform/windows/electron-main/windowsMainService.ts +++ b/src/vs/platform/windows/electron-main/windowsMainService.ts @@ -252,13 +252,13 @@ export class WindowsMainService extends Disposable implements IWindowsMainServic // Note that onBeforeShutdown() and onBeforeWindowClose() are fired in different order depending on the OS: // - macOS: since the app will not quit when closing the last window, you will always first get - // the onBeforeShutdown() event followed by N onbeforeWindowClose() events for each window + // the onBeforeShutdown() event followed by N onBeforeWindowClose() events for each window // - other: on other OS, closing the last window will quit the app so the order depends on the // user interaction: closing the last window will first trigger onBeforeWindowClose() // and then onBeforeShutdown(). Using the quit action however will first issue onBeforeShutdown() // and then onBeforeWindowClose(). // - // Here is the behaviour on different OS dependig on action taken (Electron 1.7.x): + // Here is the behavior on different OS depending on action taken (Electron 1.7.x): // // Legend // - quit(N): quit application with N windows opened @@ -320,7 +320,7 @@ export class WindowsMainService extends Disposable implements IWindowsMainServic // 3.) All windows (except extension host) for N >= 2 to support restoreWindows: all or for auto update // - // Carefull here: asking a window for its window state after it has been closed returns bogus values (width: 0, height: 0) + // Careful here: asking a window for its window state after it has been closed returns bogus values (width: 0, height: 0) // so if we ever want to persist the UI state of the last closed window (window count === 1), it has // to come from the stored lastClosedWindowState on Win/Linux at least if (this.getWindowCount() > 1) { diff --git a/src/vs/platform/workspaces/common/workspaces.ts b/src/vs/platform/workspaces/common/workspaces.ts index e0297e509b..1d9aa1838f 100644 --- a/src/vs/platform/workspaces/common/workspaces.ts +++ b/src/vs/platform/workspaces/common/workspaces.ts @@ -319,22 +319,7 @@ interface ISerializedRecentlyOpened { fileLabels?: Array; // added in 1.33 } -interface ILegacySerializedRecentlyOpened { - workspaces2: Array; // legacy, configPath as file path - workspaces: Array; // legacy (UriComponents was also supported for a few insider builds) - files: string[]; // files as paths -} - interface ISerializedWorkspace { id: string; configURIPath: string; } -interface ILegacySerializedWorkspace { id: string; configPath: string; } - -function isLegacySerializedWorkspace(curr: any): curr is ILegacySerializedWorkspace { - return typeof curr === 'object' && typeof curr['id'] === 'string' && typeof curr['configPath'] === 'string'; -} - -function isUriComponents(curr: any): curr is UriComponents { - return curr && typeof curr['path'] === 'string' && typeof curr['scheme'] === 'string'; -} export type RecentlyOpenedStorageData = object; @@ -351,7 +336,7 @@ export function restoreRecentlyOpened(data: RecentlyOpenedStorageData | undefine } }; - const storedRecents = data as ISerializedRecentlyOpened & ILegacySerializedRecentlyOpened; + const storedRecents = data as ISerializedRecentlyOpened; if (Array.isArray(storedRecents.workspaces3)) { restoreGracefully(storedRecents.workspaces3, (workspace, i) => { const label: string | undefined = (Array.isArray(storedRecents.workspaceLabels) && storedRecents.workspaceLabels[i]) || undefined; @@ -361,27 +346,6 @@ export function restoreRecentlyOpened(data: RecentlyOpenedStorageData | undefine result.workspaces.push({ label, folderUri: URI.parse(workspace) }); } }); - } else if (Array.isArray(storedRecents.workspaces2)) { - restoreGracefully(storedRecents.workspaces2, workspace => { - if (typeof workspace === 'object' && typeof workspace.id === 'string' && typeof workspace.configPath === 'string') { - result.workspaces.push({ workspace: { id: workspace.id, configPath: URI.file(workspace.configPath) } }); - } else if (typeof workspace === 'string') { - result.workspaces.push({ folderUri: URI.parse(workspace) }); - } - }); - } else if (Array.isArray(storedRecents.workspaces)) { - // TODO@martin legacy support can be removed at some point (6 month?) - // format of 1.25 and before - restoreGracefully(storedRecents.workspaces, workspace => { - if (typeof workspace === 'string') { - result.workspaces.push({ folderUri: URI.file(workspace) }); - } else if (isLegacySerializedWorkspace(workspace)) { - result.workspaces.push({ workspace: { id: workspace.id, configPath: URI.file(workspace.configPath) } }); - } else if (isUriComponents(workspace)) { - // added by 1.26-insiders - result.workspaces.push({ folderUri: URI.revive(workspace) }); - } - }); } if (Array.isArray(storedRecents.files2)) { restoreGracefully(storedRecents.files2, (file, i) => { @@ -390,12 +354,6 @@ export function restoreRecentlyOpened(data: RecentlyOpenedStorageData | undefine result.files.push({ label, fileUri: URI.parse(file) }); } }); - } else if (Array.isArray(storedRecents.files)) { - restoreGracefully(storedRecents.files, file => { - if (typeof file === 'string') { - result.files.push({ fileUri: URI.file(file) }); - } - }); } } diff --git a/src/vs/platform/workspaces/test/electron-main/workspacesHistoryStorage.test.ts b/src/vs/platform/workspaces/test/electron-main/workspacesHistoryStorage.test.ts index e0dc4bd1a7..4dcb17e0c6 100644 --- a/src/vs/platform/workspaces/test/electron-main/workspacesHistoryStorage.test.ts +++ b/src/vs/platform/workspaces/test/electron-main/workspacesHistoryStorage.test.ts @@ -98,92 +98,6 @@ suite('History Storage', () => { assertRestoring(ro, 'labels'); }); - test('open 1_25', () => { - const v1_25_win = `{ - "workspaces": [ - { - "id": "2fa677dbdf5f771e775af84dea9feaea", - "configPath": "C:\\\\workspaces\\\\testing\\\\test.code-workspace" - }, - "C:\\\\workspaces\\\\testing\\\\test-ext", - { - "id": "d87a0241f8abc86b95c4e5481ebcbf56", - "configPath": "C:\\\\workspaces\\\\test.code-workspace" - } - ], - "files": [ - "C:\\\\workspaces\\\\test.code-workspace", - "C:\\\\workspaces\\\\testing\\\\test-ext\\\\.gitignore" - ] - }`; - - let actual = restoreRecentlyOpened(JSON.parse(v1_25_win), new NullLogService()); - let expected: IRecentlyOpened = { - files: [{ fileUri: URI.file('C:\\workspaces\\test.code-workspace') }, { fileUri: URI.file('C:\\workspaces\\testing\\test-ext\\.gitignore') }], - workspaces: [ - { workspace: { id: '2fa677dbdf5f771e775af84dea9feaea', configPath: URI.file('C:\\workspaces\\testing\\test.code-workspace') } }, - { folderUri: URI.file('C:\\workspaces\\testing\\test-ext') }, - { workspace: { id: 'd87a0241f8abc86b95c4e5481ebcbf56', configPath: URI.file('C:\\workspaces\\test.code-workspace') } } - ] - }; - - assertEqualRecentlyOpened(actual, expected, 'v1_31_win'); - }); - - test('open 1_31', () => { - const v1_31_win = `{ - "workspaces2": [ - "file:///c%3A/workspaces/testing/test-ext", - "file:///c%3A/WINDOWS/system32", - { - "id": "d87a0241f8abc86b95c4e5481ebcbf56", - "configPath": "c:\\\\workspaces\\\\test.code-workspace" - } - ], - "files2": [ - "file:///c%3A/workspaces/vscode/.yarnrc" - ] - }`; - - let actual = restoreRecentlyOpened(JSON.parse(v1_31_win), new NullLogService()); - let expected: IRecentlyOpened = { - files: [{ fileUri: URI.parse('file:///c%3A/workspaces/vscode/.yarnrc') }], - workspaces: [ - { folderUri: URI.parse('file:///c%3A/workspaces/testing/test-ext') }, - { folderUri: URI.parse('file:///c%3A/WINDOWS/system32') }, - { workspace: { id: 'd87a0241f8abc86b95c4e5481ebcbf56', configPath: URI.file('c:\\workspaces\\test.code-workspace') } } - ] - }; - - assertEqualRecentlyOpened(actual, expected, 'v1_31_win'); - }); - - test('open 1_32', () => { - const v1_32 = `{ - "workspaces3": [ - { - "id": "53b714b46ef1a2d4346568b4f591028c", - "configURIPath": "file:///home/user/workspaces/testing/custom.code-workspace" - }, - "file:///home/user/workspaces/testing/folding" - ], - "files2": [ - "file:///home/user/.config/code-oss-dev/storage.json" - ] - }`; - - let windowsState = restoreRecentlyOpened(JSON.parse(v1_32), new NullLogService()); - let expected: IRecentlyOpened = { - files: [{ fileUri: URI.parse('file:///home/user/.config/code-oss-dev/storage.json') }], - workspaces: [ - { workspace: { id: '53b714b46ef1a2d4346568b4f591028c', configPath: URI.parse('file:///home/user/workspaces/testing/custom.code-workspace') } }, - { folderUri: URI.parse('file:///home/user/workspaces/testing/folding') } - ] - }; - - assertEqualRecentlyOpened(windowsState, expected, 'v1_32'); - }); - test('open 1_33', () => { const v1_33 = `{ "workspaces3": [ diff --git a/src/vs/vscode.d.ts b/src/vs/vscode.d.ts index a70c6398be..1e38a3de30 100644 --- a/src/vs/vscode.d.ts +++ b/src/vs/vscode.d.ts @@ -1730,6 +1730,14 @@ declare module 'vscode' { * ``` */ filters?: { [name: string]: string[] }; + + /** + * Dialog title. + * + * Depending on the underlying operating system this parameter might be ignored, since some + * systems do not present title on open dialogs. + */ + title?: string; } /** @@ -1757,6 +1765,14 @@ declare module 'vscode' { * ``` */ filters?: { [name: string]: string[] }; + + /** + * Dialog title. + * + * Depending on the underlying operating system this parameter might be ignored, since some + * systems do not present title on save dialogs. + */ + title?: string; } /** @@ -2228,6 +2244,40 @@ declare module 'vscode' { * such as `[CodeActionKind.Refactor.Extract.append('function'), CodeActionKind.Refactor.Extract.append('constant'), ...]`. */ readonly providedCodeActionKinds?: ReadonlyArray; + + /** + * Static documentation for a class of code actions. + * + * Documentation from the provider is shown in the code actions menu if either: + * + * - Code actions of `kind` are requested by VS Code. In this case, VS Code will show the documentation that + * most closely matches the requested code action kind. For example, if a provider has documentation for + * both `Refactor` and `RefactorExtract`, when the user requests code actions for `RefactorExtract`, + * VS Code will use the documentation for `RefactorExtract` instead of the documentation for `Refactor`. + * + * - Any code actions of `kind` are returned by the provider. + * + * At most one documentation entry will be shown per provider. + */ + readonly documentation?: ReadonlyArray<{ + /** + * The kind of the code action being documented. + * + * If the kind is generic, such as `CodeActionKind.Refactor`, the documentation will be shown whenever any + * refactorings are returned. If the kind if more specific, such as `CodeActionKind.RefactorExtract`, the + * documentation will only be shown when extract refactoring code actions are returned. + */ + readonly kind: CodeActionKind; + + /** + * Command that displays the documentation to the user. + * + * This can display the documentation directly in VS Code or open a website using [`env.openExternal`](#env.openExternal); + * + * The title of this documentation code action is taken from [`Command.title`](#Command.title) + */ + readonly command: Command; + }>; } /** @@ -2270,7 +2320,7 @@ declare module 'vscode' { * A code lens provider adds [commands](#Command) to source text. The commands will be shown * as dedicated horizontal lines in between the source text. */ - export interface CodeLensProvider { + export interface CodeLensProvider { /** * An optional event to signal that the code lenses from this provider have changed. @@ -2802,7 +2852,7 @@ declare module 'vscode' { * The workspace symbol provider interface defines the contract between extensions and * the [symbol search](https://code.visualstudio.com/docs/editor/editingevolved#_open-symbol-by-name)-feature. */ - export interface WorkspaceSymbolProvider { + export interface WorkspaceSymbolProvider { /** * Project-wide search for a symbol matching the given query string. @@ -3861,7 +3911,7 @@ declare module 'vscode' { * Represents a collection of [completion items](#CompletionItem) to be presented * in the editor. */ - export class CompletionList { + export class CompletionList { /** * This list is not complete. Further typing should result in recomputing @@ -3934,7 +3984,7 @@ declare module 'vscode' { * Providers are asked for completions either explicitly by a user gesture or -depending on the configuration- * implicitly when typing words or trigger characters. */ - export interface CompletionItemProvider { + export interface CompletionItemProvider { /** * Provide completion items for the given position and document. @@ -4009,7 +4059,7 @@ declare module 'vscode' { * The document link provider defines the contract between extensions and feature of showing * links in the editor. */ - export interface DocumentLinkProvider { + export interface DocumentLinkProvider { /** * Provide links for the given document. Note that the editor ships with a default provider that detects @@ -5188,6 +5238,24 @@ declare module 'vscode' { dispose(): void; } + /** + * Accessibility information which controls screen reader behavior. + */ + export interface AccessibilityInformation { + /** + * Label to be read out by a screen reader once the item has focus. + */ + label: string; + + /** + * Role of the widget which defines how a screen reader interacts with it. + * The role should be set in special cases when for example a tree-like element behaves like a checkbox. + * If role is not specified VS Code will pick the appropriate role automatically. + * More about aria roles can be found here https://w3c.github.io/aria/#widget_roles + */ + role?: string; + } + /** * Represents the alignment of status bar items. */ @@ -5251,6 +5319,11 @@ declare module 'vscode' { */ command: string | Command | undefined; + /** + * Accessibility information used when screen reader interacts with this StatusBar item + */ + accessibilityInformation?: AccessibilityInformation; + /** * Shows the entry in the status bar. */ @@ -6072,7 +6145,7 @@ declare module 'vscode' { * A task provider allows to add tasks to the task service. * A task provider is registered via #tasks.registerTaskProvider. */ - export interface TaskProvider { + export interface TaskProvider { /** * Provides tasks. * @param token A cancellation token. @@ -8342,6 +8415,13 @@ declare module 'vscode' { */ contextValue?: string; + /** + * Accessibility information used when screen reader interacts with this tree item. + * Generally, a TreeItem has no need to set the `role` of the accessibilityInformation; + * however, there are cases where a TreeItem is not displayed in a tree-like way where setting the `role` may make sense. + */ + accessibilityInformation?: AccessibilityInformation; + /** * @param label A human-readable string describing this item * @param collapsibleState [TreeItemCollapsibleState](#TreeItemCollapsibleState) of the tree item. Default is [TreeItemCollapsibleState.None](#TreeItemCollapsibleState.None) @@ -9315,7 +9395,7 @@ declare module 'vscode' { /** * A workspace folder is one of potentially many roots opened by the editor. All workspace folders - * are equal which means there is no notion of an active or master workspace folder. + * are equal which means there is no notion of an active or primary workspace folder. */ export interface WorkspaceFolder { diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 6dd9e759fb..1db78c002b 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -3,6 +3,8 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ +import { MarkdownString } from 'vscode'; + /** * This is the place for API experiments and proposals. * These API are NOT stable and subject to change. They are only available in the Insiders @@ -18,17 +20,7 @@ declare module 'vscode' { // #region auth provider: https://github.com/microsoft/vscode/issues/88309 - export interface AuthenticationSession { - id: string; - getAccessToken(): Thenable; - account: { - displayName: string; - id: string; - }; - scopes: string[]; - } - - export class AuthenticationSession2 { + export class AuthenticationSession { /** * The identifier of the authentication session. */ @@ -146,12 +138,12 @@ declare module 'vscode' { /** * Returns an array of current sessions. */ - getSessions(): Thenable>; + getSessions(): Thenable>; /** * Prompts a user to login. */ - login(scopes: string[]): Thenable; + login(scopes: string[]): Thenable; /** * Removes the session corresponding to session id. @@ -184,13 +176,14 @@ declare module 'vscode' { export function getProviderIds(): Thenable>; /** + * @deprecated * An array of the ids of authentication providers that are currently registered. */ export const providerIds: string[]; /** * Returns whether a provider has any sessions matching the requested scopes. This request - * is transparent to the user, not UI is shown. Rejects if a provider with providerId is not + * is transparent to the user, no UI is shown. Rejects if a provider with providerId is not * registered. * @param providerId The id of the provider * @param scopes A list of scopes representing the permissions requested. These are dependent on the authentication @@ -209,7 +202,7 @@ declare module 'vscode' { * @param options The [getSessionOptions](#GetSessionOptions) to use * @returns A thenable that resolves to an authentication session */ - export function getSession(providerId: string, scopes: string[], options: AuthenticationGetSessionOptions & { createIfNone: true }): Thenable; + export function getSession(providerId: string, scopes: string[], options: AuthenticationGetSessionOptions & { createIfNone: true }): Thenable; /** * Get an authentication session matching the desired scopes. Rejects if a provider with providerId is not @@ -221,29 +214,7 @@ declare module 'vscode' { * @param options The [getSessionOptions](#GetSessionOptions) to use * @returns A thenable that resolves to an authentication session if available, or undefined if there are no sessions */ - export function getSession(providerId: string, scopes: string[], options: AuthenticationGetSessionOptions): Thenable; - - /** - * @deprecated - * Get existing authentication sessions. Rejects if a provider with providerId is not - * registered, or if the user does not consent to sharing authentication information with - * the extension. - * @param providerId The id of the provider to use - * @param scopes A list of scopes representing the permissions requested. These are dependent on the authentication - * provider - */ - export function getSessions(providerId: string, scopes: string[]): Thenable>; - - /** - * @deprecated - * Prompt a user to login to create a new authenticaiton session. Rejects if a provider with - * providerId is not registered, or if the user does not consent to sharing authentication - * information with the extension. - * @param providerId The id of the provider to use - * @param scopes A list of scopes representing the permissions requested. These are dependent on the authentication - * provider - */ - export function login(providerId: string, scopes: string[]): Thenable; + export function getSession(providerId: string, scopes: string[], options: AuthenticationGetSessionOptions): Thenable; /** * @deprecated @@ -857,6 +828,14 @@ declare module 'vscode' { * When this property is not specified, the value from the parent session (if there is one) is used. */ noDebug?: boolean; + + /** + * Controls if the debug session created will be compacted with the parent in the CALL STACK view. + * Compact with the parent is only done if the session is the only child of it's parent session. + * Default is to compact. + * + */ + noCompact?: boolean; } // deprecated debug API @@ -1054,6 +1033,60 @@ declare module 'vscode' { //#endregion + //#region Terminal link provider https://github.com/microsoft/vscode/issues/91606 + + export namespace window { + export function registerTerminalLinkProvider(provider: TerminalLinkProvider): Disposable; + } + + export interface TerminalLinkContext { + /** + * This is the text from the unwrapped line in the terminal. + */ + line: string; + + /** + * The terminal the link belongs to. + */ + terminal: Terminal; + } + + export interface TerminalLinkProvider { + /** + * Provide terminal links for the given context. + * @param context Information about what links are being provided for. + */ + provideTerminalLinks(context: TerminalLinkContext): ProviderResult + + /** + * Handle an activated terminal link. + */ + handleTerminalLink(link: T): void; + } + + export interface TerminalLink { + /** + * The 0-based start index of the link on [TerminalLinkContext.line](#TerminalLinkContext.line]. + */ + startIndex: number; + + /** + * The 0-based end index of the link on [TerminalLinkContext.line](#TerminalLinkContext.line]. + */ + endIndex: number; + + /** + * The tooltip text when you hover over this link. + * + * If a tooltip is provided, is will be displayed in a string that includes instructions on + * how to trigger the link, such as `{0} (ctrl + click)`. The specific instructions vary + * depending on OS, user settings, and localization. + */ + tooltip?: string; + } + + //#endregion + //#region @jrieken -> exclusive document filters export interface DocumentFilter { @@ -1090,6 +1123,11 @@ declare module 'vscode' { } + // https://github.com/microsoft/vscode/issues/100741 + export interface TreeDataProvider { + resolveTreeItem?(element: T, item: TreeItem2): TreeItem2 | Thenable; + } + export class TreeItem2 extends TreeItem { /** * Label describing this item. When `falsy`, it is derived from [resourceUri](#TreeItem.resourceUri). @@ -1097,11 +1135,9 @@ declare module 'vscode' { label?: string | TreeItemLabel | /* for compilation */ any; /** - * Accessibility information used when screen reader interacts with this tree item. - * Generally, a TreeItem has no need to set the `role` of the accessibilityInformation; - * however, there are cases where a TreeItem is not displayed in a tree-like way where setting the `role` may make sense. + * Content to be shown when you hover over the tree item. */ - accessibilityInformation?: AccessibilityInformation; + tooltip?: string | MarkdownString | /* for compilation */ any; /** * @param label Label describing this item @@ -1461,10 +1497,15 @@ declare module 'vscode' { version: number; getText(): string; getText(range: Range): string; + offsetAt(position: Position): number; positionAt(offset: number): Position; + validateRange(range: Range): Range; + validatePosition(position: Position): Position; + locationAt(positionOrRange: Position | Range): Location; positionAt(location: Location): Position; + contains(uri: Uri): boolean } export interface NotebookEditorCellEdit { @@ -1542,6 +1583,20 @@ declare module 'vscode' { */ render(document: NotebookDocument, request: NotebookRenderRequest): string; + /** + * Call before HTML from the renderer is executed, and will be called for + * every editor associated with notebook documents where the renderer + * is or was used. + * + * The communication object will only send and receive messages to the + * render API, retrieved via `acquireNotebookRendererApi`, acquired with + * this specific renderer's ID. + * + * If you need to keep an association between the communication object + * and the document for use in the `render()` method, you can use a WeakMap. + */ + resolveNotebook?(document: NotebookDocument, communication: NotebookCommunication): void; + readonly preloads?: Uri[]; } @@ -1670,30 +1725,44 @@ declare module 'vscode' { readonly backupId?: string; } + /** + * Communication object passed to the {@link NotebookContentProvider} and + * {@link NotebookOutputRenderer} to communicate with the webview. + */ + export interface NotebookCommunication { + /** + * ID of the editor this object communicates with. A single notebook + * document can have multiple attached webviews and editors, when the + * notebook is split for instance. The editor ID lets you differentiate + * between them. + */ + readonly editorId: string; + + /** + * Fired when the output hosting webview posts a message. + */ + readonly onDidReceiveMessage: Event; + /** + * Post a message to the output hosting webview. + * + * Messages are only delivered if the editor is live. + * + * @param message Body of the message. This must be a string or other json serilizable object. + */ + postMessage(message: any): Thenable; + + /** + * Convert a uri for the local file system to one that can be used inside outputs webview. + */ + asWebviewUri(localResource: Uri): Uri; + } + export interface NotebookContentProvider { openNotebook(uri: Uri, openContext: NotebookDocumentOpenContext): NotebookData | Promise; - resolveNotebook(document: NotebookDocument, webview: { - /** - * Fired when the output hosting webview posts a message. - */ - readonly onDidReceiveMessage: Event; - /** - * Post a message to the output hosting webview. - * - * Messages are only delivered if the editor is live. - * - * @param message Body of the message. This must be a string or other json serilizable object. - */ - postMessage(message: any): Thenable; - - /** - * Convert a uri for the local file system to one that can be used inside outputs webview. - */ - asWebviewUri(localResource: Uri): Uri; - }): Promise; + resolveNotebook(document: NotebookDocument, webview: NotebookCommunication): Promise; saveNotebook(document: NotebookDocument, cancellation: CancellationToken): Promise; saveNotebookAs(targetResource: Uri, document: NotebookDocument, cancellation: CancellationToken): Promise; - readonly onDidChangeNotebook: Event; + readonly onDidChangeNotebook: Event; backupNotebook(document: NotebookDocument, context: NotebookDocumentBackupContext, cancellation: CancellationToken): Promise; kernel?: NotebookKernel; @@ -1943,80 +2012,6 @@ declare module 'vscode' { //#endregion - //#region https://github.com/microsoft/vscode/issues/86788 - - export interface CodeActionProviderMetadata { - /** - * Static documentation for a class of code actions. - * - * The documentation is shown in the code actions menu if either: - * - * - Code actions of `kind` are requested by VS Code. In this case, VS Code will show the documentation that - * most closely matches the requested code action kind. For example, if a provider has documentation for - * both `Refactor` and `RefactorExtract`, when the user requests code actions for `RefactorExtract`, - * VS Code will use the documentation for `RefactorExtract` intead of the documentation for `Refactor`. - * - * - Any code actions of `kind` are returned by the provider. - */ - readonly documentation?: ReadonlyArray<{ readonly kind: CodeActionKind, readonly command: Command; }>; - } - - //#endregion - - //#region Dialog title: https://github.com/microsoft/vscode/issues/82871 - - /** - * Options to configure the behaviour of a file open dialog. - * - * * Note 1: A dialog can select files, folders, or both. This is not true for Windows - * which enforces to open either files or folder, but *not both*. - * * Note 2: Explicitly setting `canSelectFiles` and `canSelectFolders` to `false` is futile - * and the editor then silently adjusts the options to select files. - */ - export interface OpenDialogOptions { - /** - * Dialog title. - * - * Depending on the underlying operating system this parameter might be ignored, since some - * systems do not present title on open dialogs. - */ - title?: string; - } - - /** - * Options to configure the behaviour of a file save dialog. - */ - export interface SaveDialogOptions { - /** - * Dialog title. - * - * Depending on the underlying operating system this parameter might be ignored, since some - * systems do not present title on save dialogs. - */ - title?: string; - } - - //#endregion - - //#region Accessibility information: https://github.com/microsoft/vscode/issues/95360 - - /** - * Accessibility information which controls screen reader behavior. - */ - export interface AccessibilityInformation { - label: string; - role?: string; - } - - export interface StatusBarItem { - /** - * Accessibility information used when screen reader interacts with this StatusBar item - */ - accessibilityInformation?: AccessibilityInformation; - } - - //#endregion - //#region https://github.com/microsoft/vscode/issues/91555 export enum StandardTokenType { diff --git a/src/vs/workbench/api/browser/mainThreadAuthentication.ts b/src/vs/workbench/api/browser/mainThreadAuthentication.ts index cdaf6a2a70..4830f340d7 100644 --- a/src/vs/workbench/api/browser/mainThreadAuthentication.ts +++ b/src/vs/workbench/api/browser/mainThreadAuthentication.ts @@ -18,7 +18,7 @@ import { IStorageKeysSyncRegistryService } from 'vs/platform/userDataSync/common import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService'; import { fromNow } from 'vs/base/common/date'; -const VSO_ALLOWED_EXTENSIONS = ['github.vscode-pull-request-github', 'github.vscode-pull-request-github-insiders', 'vscode.git', 'ms-vsonline.vsonline']; +const VSO_ALLOWED_EXTENSIONS = ['github.vscode-pull-request-github', 'github.vscode-pull-request-github-insiders', 'vscode.git', 'ms-vsonline.vsonline', 'vscode.github-browser']; interface IAccountUsage { extensionId: string; @@ -104,7 +104,7 @@ export class MainThreadAuthenticationProvider extends Disposable { return { label: extension.name, description: usage - ? nls.localize('accountLastUsedDate', "Last used this account {0}", fromNow(usage.lastUsed, true)) + ? nls.localize({ key: 'accountLastUsedDate', comment: ['The placeholder {0} is a string with time information, such as "3 days ago"'] }, "Last used this account {0}", fromNow(usage.lastUsed, true)) : nls.localize('notUsed', "Has not used this account"), extension }; @@ -336,7 +336,14 @@ export class MainThreadAuthentication extends Disposable implements MainThreadAu }); quickPick.items = items; - quickPick.title = nls.localize('selectAccount', "The extension '{0}' wants to access a {1} account", extensionName, providerName); + quickPick.title = nls.localize( + { + key: 'selectAccount', + comment: ['The placeholder {0} is the name of an extension. {1} is the name of the type of account, such as Microsoft or GitHub.'] + }, + "The extension '{0}' wants to access a {1} account", + extensionName, + providerName); quickPick.placeholder = nls.localize('getSessionPlateholder', "Select an account for '{0}' to use or Esc to cancel", extensionName); quickPick.onDidAccept(async _ => { diff --git a/src/vs/workbench/api/browser/mainThreadComments.ts b/src/vs/workbench/api/browser/mainThreadComments.ts index 89e9d78961..e9ae590f14 100644 --- a/src/vs/workbench/api/browser/mainThreadComments.ts +++ b/src/vs/workbench/api/browser/mainThreadComments.ts @@ -6,7 +6,6 @@ import { CancellationToken } from 'vs/base/common/cancellation'; import { Emitter, Event } from 'vs/base/common/event'; import { Disposable, DisposableStore, dispose, IDisposable } from 'vs/base/common/lifecycle'; -import { keys } from 'vs/base/common/map'; import { URI, UriComponents } from 'vs/base/common/uri'; import { generateUuid } from 'vs/base/common/uuid'; import { IRange } from 'vs/editor/common/core/range'; @@ -284,7 +283,7 @@ export class MainThreadCommentController { async getDocumentComments(resource: URI, token: CancellationToken) { let ret: modes.CommentThread[] = []; - for (let thread of keys(this._threads)) { + for (let thread of [...this._threads.keys()]) { const commentThread = this._threads.get(thread)!; if (commentThread.resource === resource.toString()) { ret.push(commentThread); @@ -315,7 +314,7 @@ export class MainThreadCommentController { getAllComments(): MainThreadCommentThread[] { let ret: MainThreadCommentThread[] = []; - for (let thread of keys(this._threads)) { + for (let thread of [...this._threads.keys()]) { ret.push(this._threads.get(thread)!); } @@ -486,7 +485,7 @@ export class MainThreadComments extends Disposable implements MainThreadComments if (!commentsPanelAlreadyConstructed && !this._openViewListener) { this._openViewListener = this._viewsService.onDidChangeViewVisibility(e => { if (e.id === COMMENTS_VIEW_ID && e.visible) { - keys(this._commentControllers).forEach(handle => { + [...this._commentControllers.keys()].forEach(handle => { let threads = this._commentControllers.get(handle)!.getAllComments(); if (threads.length) { diff --git a/src/vs/workbench/api/browser/mainThreadDebugService.ts b/src/vs/workbench/api/browser/mainThreadDebugService.ts index 5115ee9a3c..343b42a568 100644 --- a/src/vs/workbench/api/browser/mainThreadDebugService.ts +++ b/src/vs/workbench/api/browser/mainThreadDebugService.ts @@ -231,7 +231,8 @@ export class MainThreadDebugService implements MainThreadDebugServiceShape, IDeb const debugOptions: IDebugSessionOptions = { noDebug: options.noDebug, parentSession: this.getSession(options.parentSessionID), - repl: options.repl + repl: options.repl, + noCompact: options.noCompact }; return this.debugService.startDebugging(launch, nameOrConfig, debugOptions).then(success => { return success; diff --git a/src/vs/workbench/api/browser/mainThreadDecorations.ts b/src/vs/workbench/api/browser/mainThreadDecorations.ts index 80aa05d61c..61b8876f7b 100644 --- a/src/vs/workbench/api/browser/mainThreadDecorations.ts +++ b/src/vs/workbench/api/browser/mainThreadDecorations.ts @@ -9,33 +9,33 @@ import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import { ExtHostContext, MainContext, IExtHostContext, MainThreadDecorationsShape, ExtHostDecorationsShape, DecorationData, DecorationRequest } from '../common/extHost.protocol'; import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers'; import { IDecorationsService, IDecorationData } from 'vs/workbench/services/decorations/browser/decorations'; -import { values } from 'vs/base/common/collections'; import { CancellationToken } from 'vs/base/common/cancellation'; class DecorationRequestsQueue { private _idPool = 0; - private _requests: { [id: number]: DecorationRequest } = Object.create(null); - private _resolver: { [id: number]: (data: DecorationData) => any } = Object.create(null); + private _requests = new Map(); + private _resolver = new Map any>(); private _timer: any; constructor( - private readonly _proxy: ExtHostDecorationsShape + private readonly _proxy: ExtHostDecorationsShape, + private readonly _handle: number ) { // } - enqueue(handle: number, uri: URI, token: CancellationToken): Promise { + enqueue(uri: URI, token: CancellationToken): Promise { const id = ++this._idPool; const result = new Promise(resolve => { - this._requests[id] = { id, handle, uri }; - this._resolver[id] = resolve; + this._requests.set(id, { id, uri }); + this._resolver.set(id, resolve); this._processQueue(); }); token.onCancellationRequested(() => { - delete this._requests[id]; - delete this._resolver[id]; + this._requests.delete(id); + this._resolver.delete(id); }); return result; } @@ -49,15 +49,15 @@ class DecorationRequestsQueue { // make request const requests = this._requests; const resolver = this._resolver; - this._proxy.$provideDecorations(values(requests), CancellationToken.None).then(data => { - for (const id in resolver) { - resolver[id](data[id]); + this._proxy.$provideDecorations(this._handle, [...requests.values()], CancellationToken.None).then(data => { + for (let [id, resolve] of resolver) { + resolve(data[id]); } }); // reset - this._requests = []; - this._resolver = []; + this._requests = new Map(); + this._resolver = new Map(); this._timer = undefined; }, 0); } @@ -68,14 +68,12 @@ export class MainThreadDecorations implements MainThreadDecorationsShape { private readonly _provider = new Map, IDisposable]>(); private readonly _proxy: ExtHostDecorationsShape; - private readonly _requestQueue: DecorationRequestsQueue; constructor( context: IExtHostContext, @IDecorationsService private readonly _decorationsService: IDecorationsService ) { this._proxy = context.getProxy(ExtHostContext.ExtHostDecorations); - this._requestQueue = new DecorationRequestsQueue(this._proxy); } dispose() { @@ -85,23 +83,23 @@ export class MainThreadDecorations implements MainThreadDecorationsShape { $registerDecorationProvider(handle: number, label: string): void { const emitter = new Emitter(); + const queue = new DecorationRequestsQueue(this._proxy, handle); const registration = this._decorationsService.registerDecorationsProvider({ label, onDidChange: emitter.event, - provideDecorations: (uri, token) => { - return this._requestQueue.enqueue(handle, uri, token).then(data => { - if (!data) { - return undefined; - } - const [weight, bubble, tooltip, letter, themeColor] = data; - return { - weight: weight || 0, - bubble: bubble || false, - color: themeColor && themeColor.id, - tooltip, - letter - }; - }); + provideDecorations: async (uri, token) => { + const data = await queue.enqueue(uri, token); + if (!data) { + return undefined; + } + const [weight, bubble, tooltip, letter, themeColor] = data; + return { + weight: weight ?? 0, + bubble: bubble ?? false, + color: themeColor?.id, + tooltip, + letter + }; } }); this._provider.set(handle, [emitter, registration]); diff --git a/src/vs/workbench/api/browser/mainThreadDocuments.ts b/src/vs/workbench/api/browser/mainThreadDocuments.ts index 7abb72fbeb..d44626d9dd 100644 --- a/src/vs/workbench/api/browser/mainThreadDocuments.ts +++ b/src/vs/workbench/api/browser/mainThreadDocuments.ts @@ -126,8 +126,12 @@ export class MainThreadDocuments implements MainThreadDocumentsShape { })); this._toDispose.add(workingCopyFileService.onDidRunWorkingCopyFileOperation(e => { - if (e.source && (e.operation === FileOperation.MOVE || e.operation === FileOperation.DELETE)) { - this._modelReferenceCollection.remove(e.source); + if (e.operation === FileOperation.MOVE || e.operation === FileOperation.DELETE) { + for (const { source } of e.files) { + if (source) { + this._modelReferenceCollection.remove(source); + } + } } })); diff --git a/src/vs/workbench/api/browser/mainThreadEditors.ts b/src/vs/workbench/api/browser/mainThreadEditors.ts index ef71fc250b..e50b4bfb90 100644 --- a/src/vs/workbench/api/browser/mainThreadEditors.ts +++ b/src/vs/workbench/api/browser/mainThreadEditors.ts @@ -24,9 +24,9 @@ import { ExtHostContext, ExtHostEditorsShape, IApplyEditsOptions, IExtHostContex import { EditorViewColumn, editorGroupToViewColumn, viewColumnToEditorGroup } from 'vs/workbench/api/common/shared/editor'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService'; -import { openEditorWith } from 'vs/workbench/contrib/files/common/openWith'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IQuickInputService } from 'vs/platform/quickinput/common/quickInput'; +import { openEditorWith } from 'vs/workbench/services/editor/common/editorOpenWith'; export class MainThreadTextEditors implements MainThreadTextEditorsShape { diff --git a/src/vs/workbench/api/browser/mainThreadFileSystemEventService.ts b/src/vs/workbench/api/browser/mainThreadFileSystemEventService.ts index 0170d46620..ce4829ade6 100644 --- a/src/vs/workbench/api/browser/mainThreadFileSystemEventService.ts +++ b/src/vs/workbench/api/browser/mainThreadFileSystemEventService.ts @@ -4,10 +4,9 @@ *--------------------------------------------------------------------------------------------*/ import { DisposableStore } from 'vs/base/common/lifecycle'; -import { FileChangeType, IFileService, FileOperation } from 'vs/platform/files/common/files'; +import { FileChangeType, IFileService } from 'vs/platform/files/common/files'; import { extHostCustomer } from 'vs/workbench/api/common/extHostCustomers'; import { ExtHostContext, FileSystemEvents, IExtHostContext } from '../common/extHost.protocol'; -import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles'; import { localize } from 'vs/nls'; import { Extensions, IConfigurationRegistry } from 'vs/platform/configuration/common/configurationRegistry'; import { Registry } from 'vs/platform/registry/common/platform'; @@ -21,7 +20,6 @@ export class MainThreadFileSystemEventService { constructor( extHostContext: IExtHostContext, @IFileService fileService: IFileService, - @ITextFileService textFileService: ITextFileService, @IWorkingCopyFileService workingCopyFileService: IWorkingCopyFileService ) { @@ -57,14 +55,13 @@ export class MainThreadFileSystemEventService { // BEFORE file operation workingCopyFileService.addFileOperationParticipant({ - participate: (target, source, operation, progress, timeout, token) => { - return proxy.$onWillRunFileOperation(operation, target, source, timeout, token); + participate: (files, operation, progress, timeout, token) => { + return proxy.$onWillRunFileOperation(operation, files, timeout, token); } }); // AFTER file operation - this._listener.add(textFileService.onDidCreateTextFile(e => proxy.$onDidRunFileOperation(FileOperation.CREATE, e.resource, undefined))); - this._listener.add(workingCopyFileService.onDidRunWorkingCopyFileOperation(e => proxy.$onDidRunFileOperation(e.operation, e.target, e.source))); + this._listener.add(workingCopyFileService.onDidRunWorkingCopyFileOperation(e => proxy.$onDidRunFileOperation(e.operation, e.files))); } dispose(): void { diff --git a/src/vs/workbench/api/browser/mainThreadNotebook.ts b/src/vs/workbench/api/browser/mainThreadNotebook.ts index 3fb138afb6..8d3f107c10 100644 --- a/src/vs/workbench/api/browser/mainThreadNotebook.ts +++ b/src/vs/workbench/api/browser/mainThreadNotebook.ts @@ -4,6 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import * as nls from 'vs/nls'; +import * as DOM from 'vs/base/browser/dom'; import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers'; import { MainContext, MainThreadNotebookShape, NotebookExtensionDescription, IExtHostContext, ExtHostNotebookShape, ExtHostContext, INotebookDocumentsAndEditorsDelta, INotebookModelAddedData } from '../common/extHost.protocol'; import { Disposable, IDisposable, combinedDisposable } from 'vs/base/common/lifecycle'; @@ -40,7 +41,7 @@ export class MainThreadNotebookDocument extends Disposable { ) { super(); - this._textModel = new NotebookTextModel(handle, viewType, supportBackup, uri); + this._textModel = new NotebookTextModel(handle, viewType, supportBackup, uri, undoRedoService); this._register(this._textModel.onDidModelChangeProxy(e => { this._proxy.$acceptModelChanged(this.uri, e); this._proxy.$acceptEditorPropertiesChanged(uri, { selections: { selections: this._textModel.selections }, metadata: null }); @@ -51,9 +52,18 @@ export class MainThreadNotebookDocument extends Disposable { })); } - async applyEdit(modelVersionId: number, edits: ICellEditOperation[], emitToExtHost: boolean): Promise { + async applyEdit(modelVersionId: number, edits: ICellEditOperation[], emitToExtHost: boolean, synchronous: boolean): Promise { await this.notebookService.transformEditsOutputs(this.textModel, edits); - return this._textModel.$applyEdit(modelVersionId, edits); + if (synchronous) { + return this._textModel.$applyEdit(modelVersionId, edits, emitToExtHost, synchronous); + } else { + return new Promise(resolve => { + this._register(DOM.scheduleAtNextAnimationFrame(() => { + const ret = this._textModel.$applyEdit(modelVersionId, edits, emitToExtHost, true); + resolve(ret); + })); + }); + } } async spliceNotebookCellOutputs(cellHandle: number, splices: NotebookCellOutputsSplice[]) { @@ -250,10 +260,10 @@ export class MainThreadNotebooks extends Disposable implements MainThreadNoteboo private _emitDelta(delta: INotebookDocumentsAndEditorsDelta) { if (this._isDeltaEmpty(delta)) { - return; + return undefined; // {{SQL CARBON EDIT}} strict-null-checks } - this._proxy.$acceptDocumentAndEditorsDelta(delta); + return this._proxy.$acceptDocumentAndEditorsDelta(delta); } registerListeners() { @@ -476,16 +486,11 @@ export class MainThreadNotebooks extends Disposable implements MainThreadNoteboo return this._proxy.$executeNotebook(viewType, uri, undefined, useAttachedKernel, token); } - async $postMessage(handle: number, value: any): Promise { - - const activeEditorPane = this.editorService.activeEditorPane as any | undefined; - if (activeEditorPane?.isNotebookEditor) { - const notebookEditor = (activeEditorPane.getControl() as INotebookEditor); - - if (notebookEditor.viewModel?.handle === handle) { - notebookEditor.postMessage(value); - return true; - } + async $postMessage(editorId: string, forRendererId: string | undefined, value: any): Promise { + const editor = this._notebookService.getNotebookEditor(editorId) as INotebookEditor | undefined; + if (editor?.isNotebookEditor) { + editor.postMessage(forRendererId, value); + return true; } return false; @@ -533,7 +538,7 @@ export class MainThreadNotebookController implements IMainNotebookController { await mainthreadNotebook.applyEdit(mainthreadNotebook.textModel.versionId, [ { editType: CellEditType.Delete, count: mainthreadNotebook.textModel.cells.length, index: 0 }, { editType: CellEditType.Insert, index: 0, cells: data.cells } - ], true); + ], true, false); } return mainthreadNotebook.textModel; } @@ -553,7 +558,7 @@ export class MainThreadNotebookController implements IMainNotebookController { index: 0, cells: backup.cells || [] } - ], false); + ], false, true); // create document in ext host with cells data await this._mainThreadNotebook.addNotebookDocument({ @@ -630,7 +635,7 @@ export class MainThreadNotebookController implements IMainNotebookController { let mainthreadNotebook = this._mapping.get(URI.from(resource).toString()); if (mainthreadNotebook) { - return await mainthreadNotebook.applyEdit(modelVersionId, edits, true); + return await mainthreadNotebook.applyEdit(modelVersionId, edits, true, true); } return false; @@ -645,8 +650,8 @@ export class MainThreadNotebookController implements IMainNotebookController { return this._mainThreadNotebook.executeNotebook(viewType, uri, useAttachedKernel, token); } - onDidReceiveMessage(editorId: string, message: any): void { - this._proxy.$onDidReceiveMessage(editorId, message); + onDidReceiveMessage(editorId: string, rendererType: string | undefined, message: unknown): void { + this._proxy.$onDidReceiveMessage(editorId, rendererType, message); } async removeNotebookDocument(notebook: INotebookTextModel): Promise { diff --git a/src/vs/workbench/api/browser/mainThreadSCM.ts b/src/vs/workbench/api/browser/mainThreadSCM.ts index 070f5e8a4e..1838ddacc5 100644 --- a/src/vs/workbench/api/browser/mainThreadSCM.ts +++ b/src/vs/workbench/api/browser/mainThreadSCM.ts @@ -6,7 +6,7 @@ import { URI, UriComponents } from 'vs/base/common/uri'; import { Event, Emitter } from 'vs/base/common/event'; import { assign } from 'vs/base/common/objects'; -import { IDisposable, DisposableStore } from 'vs/base/common/lifecycle'; +import { IDisposable, DisposableStore, combinedDisposable } from 'vs/base/common/lifecycle'; import { ISCMService, ISCMRepository, ISCMProvider, ISCMResource, ISCMResourceGroup, ISCMResourceDecorations, IInputValidation } from 'vs/workbench/contrib/scm/common/scm'; import { ExtHostContext, MainThreadSCMShape, ExtHostSCMShape, SCMProviderFeatures, SCMRawResourceSplices, SCMGroupFeatures, MainContext, IExtHostContext } from '../common/extHost.protocol'; import { Command } from 'vs/editor/common/modes'; @@ -264,7 +264,7 @@ export class MainThreadSCM implements MainThreadSCMShape { private readonly _proxy: ExtHostSCMShape; private _repositories = new Map(); - private _inputDisposables = new Map(); + private _repositoryDisposables = new Map(); private readonly _disposables = new DisposableStore(); constructor( @@ -272,17 +272,14 @@ export class MainThreadSCM implements MainThreadSCMShape { @ISCMService private readonly scmService: ISCMService ) { this._proxy = extHostContext.getProxy(ExtHostContext.ExtHostSCM); - - Event.debounce(scmService.onDidChangeSelectedRepositories, (_, e) => e, 100) - (this.onDidChangeSelectedRepositories, this, this._disposables); } dispose(): void { this._repositories.forEach(r => r.dispose()); this._repositories.clear(); - this._inputDisposables.forEach(d => d.dispose()); - this._inputDisposables.clear(); + this._repositoryDisposables.forEach(d => d.dispose()); + this._repositoryDisposables.clear(); this._disposables.dispose(); } @@ -292,8 +289,16 @@ export class MainThreadSCM implements MainThreadSCMShape { const repository = this.scmService.registerSCMProvider(provider); this._repositories.set(handle, repository); - const inputDisposable = repository.input.onDidChange(value => this._proxy.$onInputBoxValueChange(handle, value)); - this._inputDisposables.set(handle, inputDisposable); + const disposable = combinedDisposable( + Event.filter(repository.onDidChangeSelection, selected => selected)(_ => this._proxy.$setSelectedSourceControl(handle)), + repository.input.onDidChange(value => this._proxy.$onInputBoxValueChange(handle, value)) + ); + + if (repository.selected) { + setTimeout(() => this._proxy.$setSelectedSourceControl(handle), 0); + } + + this._repositoryDisposables.set(handle, disposable); } $updateSourceControl(handle: number, features: SCMProviderFeatures): void { @@ -314,8 +319,8 @@ export class MainThreadSCM implements MainThreadSCMShape { return; } - this._inputDisposables.get(handle)!.dispose(); - this._inputDisposables.delete(handle); + this._repositoryDisposables.get(handle)!.dispose(); + this._repositoryDisposables.delete(handle); repository.dispose(); this._repositories.delete(handle); @@ -422,12 +427,4 @@ export class MainThreadSCM implements MainThreadSCMShape { repository.input.validateInput = async () => undefined; } } - - private onDidChangeSelectedRepositories(repositories: ISCMRepository[]): void { - const handles = repositories - .filter(r => r.provider instanceof MainThreadSCMProvider) - .map(r => (r.provider as MainThreadSCMProvider).handle); - - this._proxy.$setSelectedSourceControls(handles); - } } diff --git a/src/vs/workbench/api/browser/mainThreadStatusBar.ts b/src/vs/workbench/api/browser/mainThreadStatusBar.ts index a456c38f0d..a6eeaa27f9 100644 --- a/src/vs/workbench/api/browser/mainThreadStatusBar.ts +++ b/src/vs/workbench/api/browser/mainThreadStatusBar.ts @@ -15,6 +15,7 @@ import { IAccessibilityInformation } from 'vs/platform/accessibility/common/acce export class MainThreadStatusBar implements MainThreadStatusBarShape { private readonly entries: Map = new Map(); + static readonly CODICON_REGEXP = /\$\((.*?)\)/g; constructor( _extHostContext: IExtHostContext, @@ -32,7 +33,7 @@ export class MainThreadStatusBar implements MainThreadStatusBarShape { if (accessibilityInformation) { ariaLabel = accessibilityInformation.label; } else { - ariaLabel = text && text.indexOf('$(') === -1 ? text : tooltip || text; + ariaLabel = text ? text.replace(MainThreadStatusBar.CODICON_REGEXP, (_match, codiconName) => codiconName) : ''; } const entry: IStatusbarEntry = { text, tooltip, command, color, ariaLabel }; diff --git a/src/vs/workbench/api/browser/mainThreadTask.ts b/src/vs/workbench/api/browser/mainThreadTask.ts index 3fce3075c9..7a2d67679f 100644 --- a/src/vs/workbench/api/browser/mainThreadTask.ts +++ b/src/vs/workbench/api/browser/mainThreadTask.ts @@ -328,10 +328,10 @@ namespace TaskDTO { result.detail = task.configurationProperties.detail; } if (!ConfiguringTask.is(task) && task.command) { - if (task.command.runtime === RuntimeType.Process) { - result.execution = ProcessExecutionDTO.from(task.command); - } else if (task.command.runtime === RuntimeType.Shell) { - result.execution = ShellExecutionDTO.from(task.command); + switch (task.command.runtime) { + case RuntimeType.Process: result.execution = ProcessExecutionDTO.from(task.command); break; + case RuntimeType.Shell: result.execution = ShellExecutionDTO.from(task.command); break; + case RuntimeType.CustomExecution: result.execution = CustomExecutionDTO.from(task.command); break; } } if (task.configurationProperties.problemMatchers) { diff --git a/src/vs/workbench/api/browser/mainThreadTerminalService.ts b/src/vs/workbench/api/browser/mainThreadTerminalService.ts index d0d7349eb8..aab8f0d109 100644 --- a/src/vs/workbench/api/browser/mainThreadTerminalService.ts +++ b/src/vs/workbench/api/browser/mainThreadTerminalService.ts @@ -9,7 +9,7 @@ import { ExtHostContext, ExtHostTerminalServiceShape, MainThreadTerminalServiceS import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers'; import { URI } from 'vs/base/common/uri'; import { StopWatch } from 'vs/base/common/stopwatch'; -import { ITerminalInstanceService, ITerminalService, ITerminalInstance, ITerminalBeforeHandleLinkEvent } from 'vs/workbench/contrib/terminal/browser/terminal'; +import { ITerminalInstanceService, ITerminalService, ITerminalInstance, ITerminalBeforeHandleLinkEvent, ITerminalExternalLinkProvider, ITerminalLink } from 'vs/workbench/contrib/terminal/browser/terminal'; import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { TerminalDataBufferer } from 'vs/workbench/contrib/terminal/common/terminalDataBuffering'; @@ -25,6 +25,13 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape private readonly _terminalProcessProxies = new Map(); private _dataEventTracker: TerminalDataEventTracker | undefined; private _linkHandler: IDisposable | undefined; + /** + * A single shared terminal link provider for the exthost. When an ext registers a link + * provider, this is registered with the terminal on the renderer side and all links are + * provided through this, even from multiple ext link providers. Xterm should remove lower + * priority intersecting links itself. + */ + private _linkProvider: IDisposable | undefined; constructor( extHostContext: IExtHostContext, @@ -81,11 +88,13 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape this._proxy.$initEnvironmentVariableCollections(serializedCollections); } - this._terminalService.extHostReady(extHostContext.remoteAuthority); + this._terminalService.extHostReady(extHostContext.remoteAuthority!); // TODO@Tyriar: remove null assertion } public dispose(): void { this._toDispose.dispose(); + this._linkHandler?.dispose(); + this._linkProvider?.dispose(); // TODO@Daniel: Should all the previously created terminals be disposed // when the extension host process goes down ? @@ -162,6 +171,17 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape public $stopHandlingLinks(): void { this._linkHandler?.dispose(); + this._linkHandler = undefined; + } + + public $startLinkProvider(): void { + this._linkProvider?.dispose(); + this._linkProvider = this._terminalService.registerLinkProvider(new ExtensionTerminalLinkProvider(this._proxy)); + } + + public $stopLinkProvider(): void { + this._linkProvider?.dispose(); + this._linkProvider = undefined; } private async _handleLink(e: ITerminalBeforeHandleLinkEvent): Promise { @@ -395,3 +415,22 @@ class TerminalDataEventTracker extends Disposable { this._register(this._bufferer.startBuffering(instance.id, instance.onData)); } } + +class ExtensionTerminalLinkProvider implements ITerminalExternalLinkProvider { + constructor( + private readonly _proxy: ExtHostTerminalServiceShape + ) { + } + + async provideLinks(instance: ITerminalInstance, line: string): Promise { + const proxy = this._proxy; + const extHostLinks = await proxy.$provideLinks(instance.id, line); + return extHostLinks.map(dto => ({ + id: dto.id, + startIndex: dto.startIndex, + length: dto.length, + label: dto.label, + activate: () => proxy.$activateLink(instance.id, dto.id) + })); + } +} diff --git a/src/vs/workbench/api/browser/mainThreadTreeViews.ts b/src/vs/workbench/api/browser/mainThreadTreeViews.ts index 36dc52299f..41f05b9866 100644 --- a/src/vs/workbench/api/browser/mainThreadTreeViews.ts +++ b/src/vs/workbench/api/browser/mainThreadTreeViews.ts @@ -5,7 +5,7 @@ import { Disposable } from 'vs/base/common/lifecycle'; import { ExtHostContext, MainThreadTreeViewsShape, ExtHostTreeViewsShape, MainContext, IExtHostContext } from 'vs/workbench/api/common/extHost.protocol'; -import { ITreeViewDataProvider, ITreeItem, IViewsService, ITreeView, IViewsRegistry, ITreeViewDescriptor, IRevealOptions, Extensions } from 'vs/workbench/common/views'; +import { ITreeViewDataProvider, ITreeItem, IViewsService, ITreeView, IViewsRegistry, ITreeViewDescriptor, IRevealOptions, Extensions, ResolvableTreeItem } from 'vs/workbench/common/views'; import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers'; import { distinct } from 'vs/base/common/arrays'; import { INotificationService } from 'vs/platform/notification/common/notification'; @@ -165,12 +165,14 @@ export type TreeItemHandle = string; export class TreeViewDataProvider implements ITreeViewDataProvider { private readonly itemsMap: Map = new Map(); + private hasResolve: Promise; // {{SQL CARBON EDIT}} constructor(protected readonly treeViewId: string, protected readonly _proxy: ExtHostTreeViewsShape, private readonly notificationService: INotificationService ) { + this.hasResolve = this._proxy.$hasResolve(this.treeViewId); } getChildren(treeItem?: ITreeItem): Promise { @@ -217,12 +219,16 @@ export class TreeViewDataProvider implements ITreeViewDataProvider { return this.itemsMap.size === 0; } - private postGetChildren(elements: ITreeItem[]): ITreeItem[] { - const result: ITreeItem[] = []; + private async postGetChildren(elements: ITreeItem[]): Promise { + const result: ResolvableTreeItem[] = []; + const hasResolve = await this.hasResolve; if (elements) { for (const element of elements) { + const resolvable = new ResolvableTreeItem(element, hasResolve ? () => { + return this._proxy.$resolve(this.treeViewId, element.handle); + } : undefined); this.itemsMap.set(element.handle, element); - result.push(element); + result.push(resolvable); } } return result; diff --git a/src/vs/workbench/api/browser/mainThreadWebview.ts b/src/vs/workbench/api/browser/mainThreadWebview.ts index 3e61118bdf..bb0cbf04c5 100644 --- a/src/vs/workbench/api/browser/mainThreadWebview.ts +++ b/src/vs/workbench/api/browser/mainThreadWebview.ts @@ -141,7 +141,7 @@ export class MainThreadWebviews extends Disposable implements extHostProtocol.Ma this._register(_editorService.onDidActiveEditorChange(() => { const activeInput = this._editorService.activeEditor; - if (activeInput instanceof DiffEditorInput && activeInput.master instanceof WebviewInput && activeInput.details instanceof WebviewInput) { + if (activeInput instanceof DiffEditorInput && activeInput.primary instanceof WebviewInput && activeInput.secondary instanceof WebviewInput) { this.registerWebviewFromDiffEditorListeners(activeInput); } @@ -185,6 +185,15 @@ export class MainThreadWebviews extends Disposable implements extHostProtocol.Ma }); } + dispose() { + super.dispose(); + + for (const disposable of this._editorProviders.values()) { + disposable.dispose(); + } + this._editorProviders.clear(); + } + public $createWebviewPanel( extensionData: extHostProtocol.WebviewExtensionDescription, handle: extHostProtocol.WebviewPanelHandle, @@ -320,7 +329,7 @@ export class MainThreadWebviews extends Disposable implements extHostProtocol.Ma options: modes.IWebviewPanelOptions, capabilities: extHostProtocol.CustomTextEditorCapabilities, supportsMultipleEditorsPerDocument: boolean, - ): DisposableStore { + ): void { if (this._editorProviders.has(viewType)) { throw new Error(`Provider for ${viewType} already registered`); } @@ -396,8 +405,6 @@ export class MainThreadWebviews extends Disposable implements extHostProtocol.Ma })); this._editorProviders.set(viewType, disposables); - - return disposables; } public $unregisterEditorProvider(viewType: string): void { @@ -468,22 +475,22 @@ export class MainThreadWebviews extends Disposable implements extHostProtocol.Ma } private registerWebviewFromDiffEditorListeners(diffEditorInput: DiffEditorInput): void { - const master = diffEditorInput.master as WebviewInput; - const details = diffEditorInput.details as WebviewInput; + const primary = diffEditorInput.primary as WebviewInput; + const secondary = diffEditorInput.secondary as WebviewInput; - if (this._webviewFromDiffEditorHandles.has(master.id) || this._webviewFromDiffEditorHandles.has(details.id)) { + if (this._webviewFromDiffEditorHandles.has(primary.id) || this._webviewFromDiffEditorHandles.has(secondary.id)) { return; } - this._webviewFromDiffEditorHandles.add(master.id); - this._webviewFromDiffEditorHandles.add(details.id); + this._webviewFromDiffEditorHandles.add(primary.id); + this._webviewFromDiffEditorHandles.add(secondary.id); const disposables = new DisposableStore(); - disposables.add(master.webview.onDidFocus(() => this.updateWebviewViewStates(master))); - disposables.add(details.webview.onDidFocus(() => this.updateWebviewViewStates(details))); + disposables.add(primary.webview.onDidFocus(() => this.updateWebviewViewStates(primary))); + disposables.add(secondary.webview.onDidFocus(() => this.updateWebviewViewStates(secondary))); disposables.add(diffEditorInput.onDispose(() => { - this._webviewFromDiffEditorHandles.delete(master.id); - this._webviewFromDiffEditorHandles.delete(details.id); + this._webviewFromDiffEditorHandles.delete(primary.id); + this._webviewFromDiffEditorHandles.delete(secondary.id); dispose(disposables); })); } @@ -515,8 +522,8 @@ export class MainThreadWebviews extends Disposable implements extHostProtocol.Ma for (const group of this._editorGroupService.groups) { for (const input of group.editors) { if (input instanceof DiffEditorInput) { - updateViewStatesForInput(group, input, input.master); - updateViewStatesForInput(group, input, input.details); + updateViewStatesForInput(group, input, input.primary); + updateViewStatesForInput(group, input, input.secondary); } else { updateViewStatesForInput(group, input, input); } diff --git a/src/vs/workbench/api/browser/viewsExtensionPoint.ts b/src/vs/workbench/api/browser/viewsExtensionPoint.ts index a85e72f3ae..c3e629d5b5 100644 --- a/src/vs/workbench/api/browser/viewsExtensionPoint.ts +++ b/src/vs/workbench/api/browser/viewsExtensionPoint.ts @@ -9,7 +9,7 @@ import { IJSONSchema } from 'vs/base/common/jsonSchema'; import * as resources from 'vs/base/common/resources'; import { ExtensionMessageCollector, ExtensionsRegistry, IExtensionPoint, IExtensionPointUser } from 'vs/workbench/services/extensions/common/extensionsRegistry'; import { ViewContainer, IViewsRegistry, ITreeViewDescriptor, IViewContainersRegistry, Extensions as ViewContainerExtensions, TEST_VIEW_CONTAINER_ID, IViewDescriptor, ViewContainerLocation } from 'vs/workbench/common/views'; -import { TreeViewPane, CustomTreeView } from 'vs/workbench/browser/parts/views/treeView'; +import { TreeViewPane } from 'vs/workbench/browser/parts/views/treeView'; import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; import { coalesce, } from 'vs/base/common/arrays'; import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions, IWorkbenchContribution } from 'vs/workbench/common/contributions'; @@ -32,6 +32,7 @@ import { SyncActionDescriptor } from 'vs/platform/actions/common/actions'; import { ViewPaneContainer } from 'vs/workbench/browser/parts/views/viewPaneContainer'; import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors'; import { Codicon } from 'vs/base/common/codicons'; +import { CustomTreeView } from 'vs/workbench/contrib/views/browser/treeView'; export interface IUserFriendlyViewsContainerDescriptor { id: string; diff --git a/src/vs/workbench/api/common/extHost.api.impl.ts b/src/vs/workbench/api/common/extHost.api.impl.ts index 47cb847964..5d13ee1f1d 100644 --- a/src/vs/workbench/api/common/extHost.api.impl.ts +++ b/src/vs/workbench/api/common/extHost.api.impl.ts @@ -46,7 +46,7 @@ import * as typeConverters from 'vs/workbench/api/common/extHostTypeConverters'; import * as extHostTypes from 'vs/workbench/api/common/extHostTypes'; import { ExtHostUrls } from 'vs/workbench/api/common/extHostUrls'; import { ExtHostWebviews } from 'vs/workbench/api/common/extHostWebview'; -import { ExtHostWindow } from 'vs/workbench/api/common/extHostWindow'; +import { IExtHostWindow } from 'vs/workbench/api/common/extHostWindow'; import { IExtHostWorkspace } from 'vs/workbench/api/common/extHostWorkspace'; import { throwProposedApiError, checkProposedApiEnabled } from 'vs/workbench/services/extensions/common/extensions'; import { ProxyIdentifier } from 'vs/workbench/services/extensions/common/proxyIdentifier'; @@ -98,6 +98,7 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I const extHostLogService = accessor.get(ILogService); const extHostTunnelService = accessor.get(IExtHostTunnelService); const extHostApiDeprecation = accessor.get(IExtHostApiDeprecationService); + const extHostWindow = accessor.get(IExtHostWindow); // register addressable instances rpcProtocol.set(ExtHostContext.ExtHostLogService, extHostLogService); @@ -106,6 +107,7 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I rpcProtocol.set(ExtHostContext.ExtHostExtensionService, extensionService); rpcProtocol.set(ExtHostContext.ExtHostStorage, extHostStorage); rpcProtocol.set(ExtHostContext.ExtHostTunnelService, extHostTunnelService); + rpcProtocol.set(ExtHostContext.ExtHostWindow, extHostWindow); // automatically create and register addressable instances const extHostDecorations = rpcProtocol.set(ExtHostContext.ExtHostDecorations, accessor.get(IExtHostDecorations)); @@ -132,10 +134,9 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I const extHostQuickOpen = rpcProtocol.set(ExtHostContext.ExtHostQuickOpen, new ExtHostQuickOpen(rpcProtocol, extHostWorkspace, extHostCommands)); const extHostSCM = rpcProtocol.set(ExtHostContext.ExtHostSCM, new ExtHostSCM(rpcProtocol, extHostCommands, extHostLogService)); const extHostComment = rpcProtocol.set(ExtHostContext.ExtHostComments, new ExtHostComments(rpcProtocol, extHostCommands, extHostDocuments)); - const extHostWindow = rpcProtocol.set(ExtHostContext.ExtHostWindow, new ExtHostWindow(rpcProtocol)); const extHostProgress = rpcProtocol.set(ExtHostContext.ExtHostProgress, new ExtHostProgress(rpcProtocol.getProxy(MainContext.MainThreadProgress))); const extHostLabelService = rpcProtocol.set(ExtHostContext.ExtHosLabelService, new ExtHostLabelService(rpcProtocol)); - const extHostNotebook = rpcProtocol.set(ExtHostContext.ExtHostNotebook, new ExtHostNotebookController(rpcProtocol, extHostCommands, extHostDocumentsAndEditors, initData.environment, extensionStoragePaths)); + const extHostNotebook = rpcProtocol.set(ExtHostContext.ExtHostNotebook, initData.uiKind === UIKind.Web ? new ExtHostNotebookController(rpcProtocol, extHostCommands, extHostDocumentsAndEditors, initData.environment) : new ExtHostNotebookController(rpcProtocol, extHostCommands, extHostDocumentsAndEditors, initData.environment, extensionStoragePaths)); const extHostTheming = rpcProtocol.set(ExtHostContext.ExtHostTheming, new ExtHostTheming(rpcProtocol)); const extHostAuthentication = rpcProtocol.set(ExtHostContext.ExtHostAuthentication, new ExtHostAuthentication(rpcProtocol)); const extHostTimeline = rpcProtocol.set(ExtHostContext.ExtHostTimeline, new ExtHostTimeline(rpcProtocol, extHostCommands)); @@ -208,12 +209,6 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I getSession(providerId: string, scopes: string[], options: vscode.AuthenticationGetSessionOptions) { return extHostAuthentication.getSession(extension, providerId, scopes, options as any); }, - getSessions(providerId: string, scopes: string[]): Thenable { - return extHostAuthentication.getSessions(extension, providerId, scopes); - }, - login(providerId: string, scopes: string[]): Thenable { - return extHostAuthentication.login(extension, providerId, scopes); - }, logout(providerId: string, sessionId: string): Thenable { return extHostAuthentication.logout(providerId, sessionId); }, @@ -589,6 +584,10 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I checkProposedApiEnabled(extension); return extHostTerminalService.registerLinkHandler(handler); }, + registerTerminalLinkProvider(handler: vscode.TerminalLinkProvider): vscode.Disposable { + checkProposedApiEnabled(extension); + return extHostTerminalService.registerLinkProvider(handler); + }, registerTreeDataProvider(viewId: string, treeDataProvider: vscode.TreeDataProvider): vscode.Disposable { return extHostTreeViews.registerTreeDataProvider(viewId, treeDataProvider, extension); }, @@ -1119,7 +1118,7 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I CellKind: extHostTypes.CellKind, CellOutputKind: extHostTypes.CellOutputKind, NotebookCellRunState: extHostTypes.NotebookCellRunState, - AuthenticationSession2: extHostTypes.AuthenticationSession + AuthenticationSession: extHostTypes.AuthenticationSession }; }; } diff --git a/src/vs/workbench/api/common/extHost.protocol.ts b/src/vs/workbench/api/common/extHost.protocol.ts index 51c538405c..b3fde309ae 100644 --- a/src/vs/workbench/api/common/extHost.protocol.ts +++ b/src/vs/workbench/api/common/extHost.protocol.ts @@ -112,7 +112,7 @@ export interface IConfigurationInitData extends IConfigurationData { } export interface IExtHostContext extends IRPCProtocol { - remoteAuthority: string; + remoteAuthority: string | null; } export interface IMainContext extends IRPCProtocol { @@ -454,6 +454,8 @@ export interface MainThreadTerminalServiceShape extends IDisposable { $stopSendingDataEvents(): void; $startHandlingLinks(): void; $stopHandlingLinks(): void; + $startLinkProvider(): void; + $stopLinkProvider(): void; $setEnvironmentVariableCollection(extensionIdentifier: string, persistent: boolean, collection: ISerializableEnvironmentVariableCollection | undefined): void; // Process @@ -713,7 +715,7 @@ export interface MainThreadNotebookShape extends IDisposable { $updateNotebookMetadata(viewType: string, resource: UriComponents, metadata: NotebookDocumentMetadata): Promise; $updateNotebookCellMetadata(viewType: string, resource: UriComponents, handle: number, metadata: NotebookCellMetadata | undefined): Promise; $spliceNotebookCellOutputs(viewType: string, resource: UriComponents, cellHandle: number, splices: NotebookCellOutputsSplice[], renderers: number[]): Promise; - $postMessage(handle: number, value: any): Promise; + $postMessage(editorId: string, forRendererId: string | undefined, value: any): Promise; $onDidEdit(resource: UriComponents, viewType: string, editId: number, label: string | undefined): void; $onContentChange(resource: UriComponents, viewType: string): void; @@ -860,6 +862,7 @@ export interface IStartDebuggingOptions { parentSessionID?: DebugSessionUUID; repl?: IDebugSessionReplMode; noDebug?: boolean; + noCompact?: boolean; } export interface MainThreadDebugServiceShape extends IDisposable { @@ -990,6 +993,8 @@ export interface ExtHostTreeViewsShape { $setExpanded(treeViewId: string, treeItemHandle: string, expanded: boolean): void; $setSelection(treeViewId: string, treeItemHandles: string[]): void; $setVisible(treeViewId: string, visible: boolean): void; + $hasResolve(treeViewId: string): Promise; + $resolve(treeViewId: string, treeItemHandle: string): Promise; } export interface ExtHostWorkspaceShape { @@ -1071,10 +1076,15 @@ export interface FileSystemEvents { deleted: UriComponents[]; } +export interface SourceTargetPair { + source?: UriComponents; + target: UriComponents; +} + export interface ExtHostFileSystemEventServiceShape { $onFileEvent(events: FileSystemEvents): void; - $onWillRunFileOperation(operation: files.FileOperation, target: UriComponents, source: UriComponents | undefined, timeout: number, token: CancellationToken): Promise; - $onDidRunFileOperation(operation: files.FileOperation, target: UriComponents, source: UriComponents | undefined): void; + $onWillRunFileOperation(operation: files.FileOperation, files: SourceTargetPair[], timeout: number, token: CancellationToken): Promise; + $onDidRunFileOperation(operation: files.FileOperation, files: SourceTargetPair[]): void; } export interface ObjectIdentifier { @@ -1385,6 +1395,17 @@ export interface IShellAndArgsDto { args: string[] | string | undefined; } +export interface ITerminalLinkDto { + /** The ID of the link to enable activation and disposal. */ + id: number; + /** The startIndex of the link in the line. */ + startIndex: number; + /** The length of the link in the line. */ + length: number; + /** The descriptive label for what the link does when activated. */ + label?: string; +} + export interface ITerminalDimensionsDto { columns: number; rows: number; @@ -1411,6 +1432,8 @@ export interface ExtHostTerminalServiceShape { $getAvailableShells(): Promise; $getDefaultShellAndArgs(useAutomationShell: boolean): Promise; $handleLink(id: number, link: string): Promise; + $provideLinks(id: number, line: string): Promise; + $activateLink(id: number, linkId: number): void; $initEnvironmentVariableCollections(collections: [string, ISerializableEnvironmentVariableCollection][]): void; } @@ -1419,7 +1442,7 @@ export interface ExtHostSCMShape { $onInputBoxValueChange(sourceControlHandle: number, value: string): void; $executeResourceCommand(sourceControlHandle: number, groupHandle: number, handle: number, preserveFocus: boolean): Promise; $validateInput(sourceControlHandle: number, value: string, cursorPosition: number): Promise<[string, number] | undefined>; - $setSelectedSourceControls(selectedSourceControlHandles: number[]): Promise; + $setSelectedSourceControl(selectedSourceControlHandle: number | undefined): Promise; } export interface ExtHostTaskShape { @@ -1514,7 +1537,6 @@ export interface ExtHostDebugServiceShape { export interface DecorationRequest { readonly id: number; - readonly handle: number; readonly uri: UriComponents; } @@ -1522,7 +1544,7 @@ export type DecorationData = [number, boolean, string, string, ThemeColor]; export type DecorationReply = { [id: number]: DecorationData; }; export interface ExtHostDecorationsShape { - $provideDecorations(requests: DecorationRequest[], token: CancellationToken): Promise; + $provideDecorations(handle: number, requests: DecorationRequest[], token: CancellationToken): Promise; } export interface ExtHostWindowShape { @@ -1599,7 +1621,7 @@ export interface ExtHostNotebookShape { $acceptDisplayOrder(displayOrder: INotebookDisplayOrder): void; $renderOutputs(uriComponents: UriComponents, id: string, request: IOutputRenderRequest): Promise | undefined>; $renderOutputs2(uriComponents: UriComponents, id: string, request: IOutputRenderRequest): Promise | undefined>; - $onDidReceiveMessage(editorId: string, message: any): void; + $onDidReceiveMessage(editorId: string, rendererId: string | undefined, message: unknown): void; $acceptModelChanged(uriComponents: UriComponents, event: NotebookCellsChangedEvent): void; $acceptEditorPropertiesChanged(uriComponents: UriComponents, data: INotebookEditorPropertiesChangeData): void; $acceptDocumentAndEditorsDelta(delta: INotebookDocumentsAndEditorsDelta): Promise; diff --git a/src/vs/workbench/api/common/extHostAuthentication.ts b/src/vs/workbench/api/common/extHostAuthentication.ts index c5295fd209..2aba3555e7 100644 --- a/src/vs/workbench/api/common/extHostAuthentication.ts +++ b/src/vs/workbench/api/common/extHostAuthentication.ts @@ -56,8 +56,8 @@ export class ExtHostAuthentication implements ExtHostAuthenticationShape { return !!(sessions.filter(session => session.scopes.sort().join(' ') === orderedScopes).length); } - async getSession(requestingExtension: IExtensionDescription, providerId: string, scopes: string[], options: vscode.AuthenticationGetSessionOptions & { createIfNone: true }): Promise; - async getSession(requestingExtension: IExtensionDescription, providerId: string, scopes: string[], options: vscode.AuthenticationGetSessionOptions): Promise { + async getSession(requestingExtension: IExtensionDescription, providerId: string, scopes: string[], options: vscode.AuthenticationGetSessionOptions & { createIfNone: true }): Promise; + async getSession(requestingExtension: IExtensionDescription, providerId: string, scopes: string[], options: vscode.AuthenticationGetSessionOptions): Promise { const provider = this._authenticationProviders.get(providerId); const extensionName = requestingExtension.displayName || requestingExtension.name; const extensionId = ExtensionIdentifier.toKey(requestingExtension.identifier); @@ -100,71 +100,6 @@ export class ExtHostAuthentication implements ExtHostAuthenticationShape { } } - async getSessions(requestingExtension: IExtensionDescription, providerId: string, scopes: string[]): Promise { - const extensionId = ExtensionIdentifier.toKey(requestingExtension.identifier); - const orderedScopes = scopes.sort().join(' '); - const sessions = await this.resolveSessions(providerId); - return sessions - .filter(session => session.scopes.sort().join(' ') === orderedScopes) - .map(session => { - return { - id: session.id, - account: session.account, - scopes: session.scopes, - getAccessToken: async () => { - const isAllowed = await this._proxy.$getSessionsPrompt( - providerId, - session.account.displayName, - '', // TODO - // provider.displayName, - extensionId, - requestingExtension.displayName || requestingExtension.name); - - if (!isAllowed) { - throw new Error('User did not consent to token access.'); - } - - return session.accessToken; - } - }; - }); - } - - async login(requestingExtension: IExtensionDescription, providerId: string, scopes: string[]): Promise { - const provider = this._authenticationProviders.get(providerId); - if (!provider) { - throw new Error(`No authentication provider with id '${providerId}' is currently registered.`); - } - - const extensionName = requestingExtension.displayName || requestingExtension.name; - const isAllowed = await this._proxy.$loginPrompt(provider.displayName, extensionName); - if (!isAllowed) { - throw new Error('User did not consent to login.'); - } - - const session = await provider.login(scopes); - await this._proxy.$setTrustedExtension(provider.id, session.account.displayName, ExtensionIdentifier.toKey(requestingExtension.identifier), extensionName); - return { - id: session.id, - account: session.account, - scopes: session.scopes, - getAccessToken: async () => { - const isAllowed = await this._proxy.$getSessionsPrompt( - provider.id, - session.account.displayName, - provider.displayName, - ExtensionIdentifier.toKey(requestingExtension.identifier), - requestingExtension.displayName || requestingExtension.name); - - if (!isAllowed) { - throw new Error('User did not consent to token access.'); - } - - return session.accessToken; - } - }; - } - async logout(providerId: string, sessionId: string): Promise { const provider = this._authenticationProviders.get(providerId); if (!provider) { diff --git a/src/vs/workbench/api/common/extHostDebugService.ts b/src/vs/workbench/api/common/extHostDebugService.ts index bac0a8a2c2..8f195da15b 100644 --- a/src/vs/workbench/api/common/extHostDebugService.ts +++ b/src/vs/workbench/api/common/extHostDebugService.ts @@ -296,7 +296,8 @@ export abstract class ExtHostDebugServiceBase implements IExtHostDebugService, E return this._debugServiceProxy.$startDebugging(folder ? folder.uri : undefined, nameOrConfig, { parentSessionID: options.parentSession ? options.parentSession.id : undefined, repl: options.consoleMode === DebugConsoleMode.MergeWithParent ? 'mergeWithParent' : 'separate', - noDebug: options.noDebug + noDebug: options.noDebug, + noCompact: options.noCompact }); } diff --git a/src/vs/workbench/api/common/extHostDecorations.ts b/src/vs/workbench/api/common/extHostDecorations.ts index 74e9967239..828ab9c756 100644 --- a/src/vs/workbench/api/common/extHostDecorations.ts +++ b/src/vs/workbench/api/common/extHostDecorations.ts @@ -52,17 +52,20 @@ export class ExtHostDecorations implements IExtHostDecorations { }); } - $provideDecorations(requests: DecorationRequest[], token: CancellationToken): Promise { + async $provideDecorations(handle: number, requests: DecorationRequest[], token: CancellationToken): Promise { + + if (!this._provider.has(handle)) { + // might have been unregistered in the meantime + return Object.create(null); + } + const result: DecorationReply = Object.create(null); - return Promise.all(requests.map(request => { - const { handle, uri, id } = request; - const entry = this._provider.get(handle); - if (!entry) { - // might have been unregistered in the meantime - return undefined; - } - const { provider, extensionId } = entry; - return Promise.resolve(provider.provideDecoration(URI.revive(uri), token)).then(data => { + const { provider, extensionId } = this._provider.get(handle)!; + + await Promise.all(requests.map(async request => { + try { + const { uri, id } = request; + const data = await Promise.resolve(provider.provideDecoration(URI.revive(uri), token)); if (!data) { return; } @@ -72,13 +75,12 @@ export class ExtHostDecorations implements IExtHostDecorations { } catch (e) { this._logService.warn(`INVALID decoration from extension '${extensionId.value}': ${e}`); } - }, err => { + } catch (err) { this._logService.error(err); - }); + } + })); - })).then(() => { - return result; - }); + return result; } } diff --git a/src/vs/workbench/api/common/extHostFileSystemEventService.ts b/src/vs/workbench/api/common/extHostFileSystemEventService.ts index 4e442cc86f..cb52390c3e 100644 --- a/src/vs/workbench/api/common/extHostFileSystemEventService.ts +++ b/src/vs/workbench/api/common/extHostFileSystemEventService.ts @@ -5,10 +5,10 @@ import { AsyncEmitter, Emitter, Event, IWaitUntil } from 'vs/base/common/event'; import { IRelativePattern, parse } from 'vs/base/common/glob'; -import { URI, UriComponents } from 'vs/base/common/uri'; +import { URI } from 'vs/base/common/uri'; import { ExtHostDocumentsAndEditors } from 'vs/workbench/api/common/extHostDocumentsAndEditors'; import type * as vscode from 'vscode'; -import { ExtHostFileSystemEventServiceShape, FileSystemEvents, IMainContext, MainContext, MainThreadTextEditorsShape, IWorkspaceFileEditDto, IWorkspaceTextEditDto } from './extHost.protocol'; +import { ExtHostFileSystemEventServiceShape, FileSystemEvents, IMainContext, MainContext, MainThreadTextEditorsShape, IWorkspaceFileEditDto, IWorkspaceTextEditDto, SourceTargetPair } from './extHost.protocol'; import * as typeConverter from './extHostTypeConverters'; import { Disposable, WorkspaceEdit } from './extHostTypes'; import { IExtensionDescription } from 'vs/platform/extensions/common/extensions'; @@ -142,16 +142,16 @@ export class ExtHostFileSystemEventService implements ExtHostFileSystemEventServ //--- file operations - $onDidRunFileOperation(operation: FileOperation, target: UriComponents, source: UriComponents | undefined): void { + $onDidRunFileOperation(operation: FileOperation, files: SourceTargetPair[]): void { switch (operation) { case FileOperation.MOVE: - this._onDidRenameFile.fire(Object.freeze({ files: [{ oldUri: URI.revive(source!), newUri: URI.revive(target) }] })); + this._onDidRenameFile.fire(Object.freeze({ files: files.map(f => ({ oldUri: URI.revive(f.source!), newUri: URI.revive(f.target) })) })); break; case FileOperation.DELETE: - this._onDidDeleteFile.fire(Object.freeze({ files: [URI.revive(target)] })); + this._onDidDeleteFile.fire(Object.freeze({ files: files.map(f => URI.revive(f.target)) })); break; case FileOperation.CREATE: - this._onDidCreateFile.fire(Object.freeze({ files: [URI.revive(target)] })); + this._onDidCreateFile.fire(Object.freeze({ files: files.map(f => URI.revive(f.target)) })); break; default: //ignore, dont send @@ -179,16 +179,16 @@ export class ExtHostFileSystemEventService implements ExtHostFileSystemEventServ }; } - async $onWillRunFileOperation(operation: FileOperation, target: UriComponents, source: UriComponents | undefined, timeout: number, token: CancellationToken): Promise { + async $onWillRunFileOperation(operation: FileOperation, files: SourceTargetPair[], timeout: number, token: CancellationToken): Promise { switch (operation) { case FileOperation.MOVE: - await this._fireWillEvent(this._onWillRenameFile, { files: [{ oldUri: URI.revive(source!), newUri: URI.revive(target) }] }, timeout, token); + await this._fireWillEvent(this._onWillRenameFile, { files: files.map(f => ({ oldUri: URI.revive(f.source!), newUri: URI.revive(f.target) })) }, timeout, token); break; case FileOperation.DELETE: - await this._fireWillEvent(this._onWillDeleteFile, { files: [URI.revive(target)] }, timeout, token); + await this._fireWillEvent(this._onWillDeleteFile, { files: files.map(f => URI.revive(f.target)) }, timeout, token); break; case FileOperation.CREATE: - await this._fireWillEvent(this._onWillCreateFile, { files: [URI.revive(target)] }, timeout, token); + await this._fireWillEvent(this._onWillCreateFile, { files: files.map(f => URI.revive(f.target)) }, timeout, token); break; default: //ignore, dont send diff --git a/src/vs/workbench/api/common/extHostLanguageFeatures.ts b/src/vs/workbench/api/common/extHostLanguageFeatures.ts index 811d2c1d79..902b08abcb 100644 --- a/src/vs/workbench/api/common/extHostLanguageFeatures.ts +++ b/src/vs/workbench/api/common/extHostLanguageFeatures.ts @@ -73,7 +73,7 @@ class DocumentSymbolAdapter { const element: modes.DocumentSymbol = { name: info.name || '!!MISSING: name!!', kind: typeConvert.SymbolKind.from(info.kind), - tags: info.tags ? info.tags.map(typeConvert.SymbolTag.from) : [], + tags: info.tags?.map(typeConvert.SymbolTag.from) || [], detail: '', containerName: info.containerName, range: typeConvert.Range.from(info.location.range), @@ -1287,6 +1287,7 @@ class CallHierarchyAdapter { uri: item.uri, range: typeConvert.Range.from(item.range), selectionRange: typeConvert.Range.from(item.selectionRange), + tags: item.tags?.map(typeConvert.SymbolTag.from) }; map.set(dto._itemId, item); return dto; diff --git a/src/vs/workbench/api/common/extHostNotebook.ts b/src/vs/workbench/api/common/extHostNotebook.ts index 79e2c945eb..0c86666d35 100644 --- a/src/vs/workbench/api/common/extHostNotebook.ts +++ b/src/vs/workbench/api/common/extHostNotebook.ts @@ -553,27 +553,48 @@ export class NotebookEditorCellEditBuilder implements vscode.NotebookEditorCellE } } -class ExtHostWebviewComm extends Disposable { - - onDidReceiveMessage: vscode.Event = this._onDidReceiveMessage.event; +class ExtHostWebviewCommWrapper extends Disposable { + private readonly _onDidReceiveDocumentMessage = new Emitter(); + private readonly _rendererIdToEmitters = new Map>(); constructor( - readonly id: string, + private _editorId: string, public uri: URI, private _proxy: MainThreadNotebookShape, - private _onDidReceiveMessage: Emitter, private _webviewInitData: WebviewInitData, public document: ExtHostNotebookDocument, ) { super(); } - async postMessage(message: any): Promise { - return this._proxy.$postMessage(this.document.handle, message); + public onDidReceiveMessage(forRendererId: string | undefined, message: any) { + this._onDidReceiveDocumentMessage.fire(message); + if (forRendererId !== undefined) { + this._rendererIdToEmitters.get(forRendererId)?.fire(message); + } } - asWebviewUri(localResource: vscode.Uri): vscode.Uri { - return asWebviewUri(this._webviewInitData, this.id, localResource); + public readonly contentProviderComm: vscode.NotebookCommunication = { + editorId: this._editorId, + onDidReceiveMessage: this._onDidReceiveDocumentMessage.event, + postMessage: (message: any) => this._proxy.$postMessage(this._editorId, undefined, message), + asWebviewUri: (uri: vscode.Uri) => this._asWebviewUri(uri), + }; + + public getRendererComm(rendererId: string): vscode.NotebookCommunication { + const emitter = new Emitter(); + this._rendererIdToEmitters.set(rendererId, emitter); + return { + editorId: this._editorId, + onDidReceiveMessage: emitter.event, + postMessage: (message: any) => this._proxy.$postMessage(this._editorId, rendererId, message), + asWebviewUri: (uri: vscode.Uri) => this._asWebviewUri(uri), + }; + } + + + private _asWebviewUri(localResource: vscode.Uri): vscode.Uri { + return asWebviewUri(this._webviewInitData, this._editorId, localResource); } } @@ -618,7 +639,7 @@ export class ExtHostNotebookEditor extends Disposable implements vscode.Notebook readonly id: string, public uri: URI, private _proxy: MainThreadNotebookShape, - private _webComm: ExtHostWebviewComm, + private _webComm: vscode.NotebookCommunication, public document: ExtHostNotebookDocument, private _documentsAndEditors: ExtHostDocumentsAndEditors ) { @@ -721,6 +742,7 @@ export class ExtHostNotebookEditor extends Disposable implements vscode.Notebook export class ExtHostNotebookOutputRenderer { private static _handlePool: number = 0; + private resolvedComms = new WeakSet(); readonly handle = ExtHostNotebookOutputRenderer._handlePool++; constructor( @@ -740,13 +762,19 @@ export class ExtHostNotebookOutputRenderer { return false; } + resolveNotebook(document: ExtHostNotebookDocument, comm: ExtHostWebviewCommWrapper) { + if (!this.resolvedComms.has(comm) && this.renderer.resolveNotebook) { + this.renderer.resolveNotebook(document, comm.getRendererComm(this.type)); + this.resolvedComms.add(comm); + } + } + render(document: ExtHostNotebookDocument, output: vscode.CellDisplayOutput, outputId: string, mimeType: string): string { let html = this.renderer.render(document, { output, outputId, mimeType }); return html; } } - export interface ExtHostNotebookOutputRenderingHandler { outputDisplayOrder: INotebookDisplayOrder | undefined; findBestMatchedRenderer(mimeType: string): ExtHostNotebookOutputRenderer[]; @@ -759,8 +787,9 @@ export class ExtHostNotebookController implements ExtHostNotebookShape, ExtHostN private readonly _documents = new Map(); private readonly _unInitializedDocuments = new Map(); private readonly _editors = new Map(); - private readonly _webviewComm = new Map }>(); + private readonly _webviewComm = new Map(); private readonly _notebookOutputRenderers = new Map(); + private readonly _renderersUsedInNotebooks = new WeakMap>(); private readonly _onDidChangeNotebookCells = new Emitter(); readonly onDidChangeNotebookCells = this._onDidChangeNotebookCells.event; private readonly _onDidChangeCellOutputs = new Emitter(); @@ -854,6 +883,8 @@ export class ExtHostNotebookController implements ExtHostNotebookShape, ExtHostN } const renderer = this._notebookOutputRenderers.get(id)!; + this.provideCommToNotebookRenderers(document, renderer); + const cellsResponse: IOutputRenderResponseCellInfo[] = request.items.map(cellInfo => { const cell = document.getCell2(cellInfo.key)!; const outputResponse: IOutputRenderResponseOutputInfo[] = cellInfo.outputs.map(output => { @@ -890,6 +921,8 @@ export class ExtHostNotebookController implements ExtHostNotebookShape, ExtHostN } const renderer = this._notebookOutputRenderers.get(id)!; + this.provideCommToNotebookRenderers(document, renderer); + const cellsResponse: IOutputRenderResponseCellInfo[] = request.items.map(cellInfo => { const outputResponse: IOutputRenderResponseOutputInfo[] = cellInfo.outputs.map(output => { return { @@ -1035,19 +1068,36 @@ export class ExtHostNotebookController implements ExtHostNotebookShape, ExtHostN return; } + let webComm = this._webviewComm.get(editorId); + if (!webComm) { + webComm = new ExtHostWebviewCommWrapper(editorId, revivedUri, this._proxy, this._webviewInitData, document); + this._webviewComm.set(editorId, webComm); + } + if (!provider.provider.resolveNotebook) { return; } - let webComm = this._webviewComm.get(editorId)?.comm; + await provider.provider.resolveNotebook(document, webComm.contentProviderComm); + } - if (webComm) { - await provider.provider.resolveNotebook(document, webComm); - } else { - const onDidReceiveMessage = new Emitter(); - webComm = new ExtHostWebviewComm(editorId, revivedUri, this._proxy, onDidReceiveMessage, this._webviewInitData, document); - this._webviewComm.set(editorId, { comm: webComm, onDidReceiveMessage }); - await provider.provider.resolveNotebook(document, webComm); + private provideCommToNotebookRenderers(document: ExtHostNotebookDocument, renderer: ExtHostNotebookOutputRenderer) { + let alreadyRegistered = this._renderersUsedInNotebooks.get(document); + if (!alreadyRegistered) { + alreadyRegistered = new Set(); + this._renderersUsedInNotebooks.set(document, alreadyRegistered); + } + + if (alreadyRegistered.has(renderer)) { + return; + } + + alreadyRegistered.add(renderer); + for (const editorId of this._editors.keys()) { + const comm = this._webviewComm.get(editorId); + if (comm) { + renderer.resolveNotebook(document, comm); + } } } @@ -1101,12 +1151,7 @@ export class ExtHostNotebookController implements ExtHostNotebookShape, ExtHostN } if (this._notebookContentProviders.has(viewType)) { - try { - await this._notebookContentProviders.get(viewType)!.provider.saveNotebook(document, token); - } catch (e) { - return false; - } - + await this._notebookContentProviders.get(viewType)!.provider.saveNotebook(document, token); return true; } @@ -1120,12 +1165,7 @@ export class ExtHostNotebookController implements ExtHostNotebookShape, ExtHostN } if (this._notebookContentProviders.has(viewType)) { - try { - await this._notebookContentProviders.get(viewType)!.provider.saveNotebookAs(URI.revive(target), document, token); - } catch (e) { - return false; - } - + await this._notebookContentProviders.get(viewType)!.provider.saveNotebookAs(URI.revive(target), document, token); return true; } @@ -1182,12 +1222,8 @@ export class ExtHostNotebookController implements ExtHostNotebookShape, ExtHostN return editor; } - $onDidReceiveMessage(editorId: string, message: any): void { - let messageEmitter = this._webviewComm.get(editorId)?.onDidReceiveMessage; - - if (messageEmitter) { - messageEmitter.fire(message); - } + $onDidReceiveMessage(editorId: string, forRendererType: string | undefined, message: any): void { + this._webviewComm.get(editorId)?.onDidReceiveMessage(forRendererType, message); } $acceptModelChanged(uriComponents: UriComponents, event: NotebookCellsChangedEvent): void { @@ -1226,12 +1262,11 @@ export class ExtHostNotebookController implements ExtHostNotebookShape, ExtHostN private _createExtHostEditor(document: ExtHostNotebookDocument, editorId: string, selections: number[]) { const revivedUri = document.uri; - let webComm = this._webviewComm.get(editorId)?.comm; + let webComm = this._webviewComm.get(editorId); if (!webComm) { - const onDidReceiveMessage = new Emitter(); - webComm = new ExtHostWebviewComm(editorId, revivedUri, this._proxy, onDidReceiveMessage, this._webviewInitData, document); - this._webviewComm.set(editorId, { comm: webComm!, onDidReceiveMessage }); + webComm = new ExtHostWebviewCommWrapper(editorId, revivedUri, this._proxy, this._webviewInitData, document); + this._webviewComm.set(editorId, webComm); } let editor = new ExtHostNotebookEditor( @@ -1239,7 +1274,7 @@ export class ExtHostNotebookController implements ExtHostNotebookShape, ExtHostN editorId, revivedUri, this._proxy, - webComm, + webComm.contentProviderComm, document, this._documentsAndEditors ); @@ -1255,6 +1290,10 @@ export class ExtHostNotebookController implements ExtHostNotebookShape, ExtHostN this._editors.get(editorId)?.editor.dispose(); + for (const renderer of this._renderersUsedInNotebooks.get(document) ?? []) { + renderer.resolveNotebook(document, webComm); + } + this._editors.set(editorId, { editor }); } diff --git a/src/vs/workbench/api/common/extHostNotebookConcatDocument.ts b/src/vs/workbench/api/common/extHostNotebookConcatDocument.ts index 00a9a08cee..9dd72e1750 100644 --- a/src/vs/workbench/api/common/extHostNotebookConcatDocument.ts +++ b/src/vs/workbench/api/common/extHostNotebookConcatDocument.ts @@ -12,7 +12,7 @@ import { PrefixSumComputer } from 'vs/editor/common/viewModel/prefixSumComputer' import { DisposableStore } from 'vs/base/common/lifecycle'; import { score } from 'vs/editor/common/modes/languageSelector'; import { CellKind } from 'vs/workbench/contrib/notebook/common/notebookCommon'; -import { isEqual } from 'vs/base/common/resources'; +import { ResourceMap } from 'vs/base/common/map'; export class ExtHostNotebookConcatDocument implements vscode.NotebookConcatTextDocument { @@ -20,6 +20,7 @@ export class ExtHostNotebookConcatDocument implements vscode.NotebookConcatTextD private _isClosed = false; private _cells!: ExtHostCell[]; + private _cellUris!: ResourceMap; private _cellLengths!: PrefixSumComputer; private _cellLines!: PrefixSumComputer; private _versionId = 0; @@ -36,8 +37,8 @@ export class ExtHostNotebookConcatDocument implements vscode.NotebookConcatTextD this._init(); this._disposables.add(extHostDocuments.onDidChangeDocument(e => { - let cellIdx = this._cells.findIndex(cell => isEqual(cell.uri, e.document.uri)); - if (cellIdx >= 0) { + let cellIdx = this._cellUris.get(e.document.uri); + if (cellIdx !== undefined) { this._cellLengths.changeValue(cellIdx, this._cells[cellIdx].document.getText().length + 1); this._cellLines.changeValue(cellIdx, this._cells[cellIdx].document.lineCount); this._versionId += 1; @@ -53,7 +54,6 @@ export class ExtHostNotebookConcatDocument implements vscode.NotebookConcatTextD }; this._disposables.add(extHostNotebooks.onDidChangeCellLanguage(e => documentChange(e.document))); - this._disposables.add(extHostNotebooks.onDidChangeCellOutputs(e => documentChange(e.document))); this._disposables.add(extHostNotebooks.onDidChangeNotebookCells(e => documentChange(e.document))); } @@ -68,10 +68,12 @@ export class ExtHostNotebookConcatDocument implements vscode.NotebookConcatTextD private _init() { this._cells = []; + this._cellUris = new ResourceMap(); const cellLengths: number[] = []; const cellLineCounts: number[] = []; for (let cell of this._notebook.cells) { if (cell.cellKind === CellKind.Code && (!this._selector || score(this._selector, cell.uri, cell.language, true))) { + this._cellUris.set(cell.uri, this._cells.length); this._cells.push(cell); cellLengths.push(cell.document.getText().length + 1); cellLineCounts.push(cell.document.lineCount); @@ -103,8 +105,8 @@ export class ExtHostNotebookConcatDocument implements vscode.NotebookConcatTextD // get start and end locations and create substrings const start = this.locationAt(range.start); const end = this.locationAt(range.end); - const startCell = this._cells.find(cell => isEqual(cell.uri, start.uri)); - const endCell = this._cells.find(cell => isEqual(cell.uri, end.uri)); + const startCell = this._cells[this._cellUris.get(start.uri) ?? -1]; + const endCell = this._cells[this._cellUris.get(end.uri) ?? -1]; if (!startCell || !endCell) { return ''; @@ -131,8 +133,8 @@ export class ExtHostNotebookConcatDocument implements vscode.NotebookConcatTextD return this._cells[idx.index].document.positionAt(idx.remainder).translate(lineCount); } - const idx = this._cells.findIndex(cell => isEqual(cell.uri, locationOrOffset.uri)); - if (idx >= 0) { + const idx = this._cellUris.get(locationOrOffset.uri); + if (idx !== undefined) { let line = this._cellLines.getAccumulatedValue(idx - 1); return new types.Position(line + locationOrOffset.range.start.line, locationOrOffset.range.start.character); } @@ -159,4 +161,24 @@ export class ExtHostNotebookConcatDocument implements vscode.NotebookConcatTextD const startCell = this._cells[startIdx.index]; return new types.Location(startCell.uri, startCell.document.validateRange(range)); } + + contains(uri: vscode.Uri): boolean { + return this._cellUris.has(uri); + } + + validateRange(range: vscode.Range): vscode.Range { + const start = this.validatePosition(range.start); + const end = this.validatePosition(range.end); + return range.with(start, end); + } + + validatePosition(position: vscode.Position): vscode.Position { + const startIdx = this._cellLines.getIndexOf(position.line); + + const cellPosition = new types.Position(startIdx.remainder, position.character); + const validCellPosition = this._cells[startIdx.index].document.validatePosition(cellPosition); + + const line = this._cellLines.getAccumulatedValue(startIdx.index - 1); + return new types.Position(line + validCellPosition.line, validCellPosition.character); + } } diff --git a/src/vs/workbench/api/common/extHostSCM.ts b/src/vs/workbench/api/common/extHostSCM.ts index a6126cdbf7..2955fc64d6 100644 --- a/src/vs/workbench/api/common/extHostSCM.ts +++ b/src/vs/workbench/api/common/extHostSCM.ts @@ -536,7 +536,7 @@ export class ExtHostSCM implements ExtHostSCMShape { private readonly _onDidChangeActiveProvider = new Emitter(); get onDidChangeActiveProvider(): Event { return this._onDidChangeActiveProvider.event; } - private _selectedSourceControlHandles = new Set(); + private _selectedSourceControlHandle: number | undefined; constructor( mainContext: IMainContext, @@ -681,40 +681,18 @@ export class ExtHostSCM implements ExtHostSCMShape { }); } - $setSelectedSourceControls(selectedSourceControlHandles: number[]): Promise { - this.logService.trace('ExtHostSCM#$setSelectedSourceControls', selectedSourceControlHandles); + $setSelectedSourceControl(selectedSourceControlHandle: number | undefined): Promise { + this.logService.trace('ExtHostSCM#$setSelectedSourceControl', selectedSourceControlHandle); - const set = new Set(); - - for (const handle of selectedSourceControlHandles) { - set.add(handle); + if (selectedSourceControlHandle !== undefined) { + this._sourceControls.get(selectedSourceControlHandle)?.setSelectionState(true); } - set.forEach(handle => { - if (!this._selectedSourceControlHandles.has(handle)) { - const sourceControl = this._sourceControls.get(handle); + if (this._selectedSourceControlHandle !== undefined) { + this._sourceControls.get(this._selectedSourceControlHandle)?.setSelectionState(false); + } - if (!sourceControl) { - return; - } - - sourceControl.setSelectionState(true); - } - }); - - this._selectedSourceControlHandles.forEach(handle => { - if (!set.has(handle)) { - const sourceControl = this._sourceControls.get(handle); - - if (!sourceControl) { - return; - } - - sourceControl.setSelectionState(false); - } - }); - - this._selectedSourceControlHandles = set; + this._selectedSourceControlHandle = selectedSourceControlHandle; return Promise.resolve(undefined); } } diff --git a/src/vs/workbench/api/common/extHostTerminalService.ts b/src/vs/workbench/api/common/extHostTerminalService.ts index e3b4155877..ceb76ea7c3 100644 --- a/src/vs/workbench/api/common/extHostTerminalService.ts +++ b/src/vs/workbench/api/common/extHostTerminalService.ts @@ -5,7 +5,7 @@ import type * as vscode from 'vscode'; import { Event, Emitter } from 'vs/base/common/event'; -import { ExtHostTerminalServiceShape, MainContext, MainThreadTerminalServiceShape, IShellLaunchConfigDto, IShellDefinitionDto, IShellAndArgsDto, ITerminalDimensionsDto } from 'vs/workbench/api/common/extHost.protocol'; +import { ExtHostTerminalServiceShape, MainContext, MainThreadTerminalServiceShape, IShellLaunchConfigDto, IShellDefinitionDto, IShellAndArgsDto, ITerminalDimensionsDto, ITerminalLinkDto } from 'vs/workbench/api/common/extHost.protocol'; import { ExtHostConfigProvider } from 'vs/workbench/api/common/extHostConfiguration'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { URI, UriComponents } from 'vs/base/common/uri'; @@ -39,6 +39,7 @@ export interface IExtHostTerminalService extends ExtHostTerminalServiceShape { getDefaultShell(useAutomationShell: boolean, configProvider: ExtHostConfigProvider): string; getDefaultShellArgs(useAutomationShell: boolean, configProvider: ExtHostConfigProvider): string[] | string; registerLinkHandler(handler: vscode.TerminalLinkHandler): vscode.Disposable; + registerLinkProvider(provider: vscode.TerminalLinkProvider): vscode.Disposable; getEnvironmentVariableCollection(extension: IExtensionDescription, persistent?: boolean): vscode.EnvironmentVariableCollection; } @@ -293,6 +294,13 @@ export class ExtHostPseudoterminal implements ITerminalChildProcess { } } +let nextLinkId = 1; + +interface ICachedLinkEntry { + provider: vscode.TerminalLinkProvider; + link: vscode.TerminalLink; +} + export abstract class BaseExtHostTerminalService implements IExtHostTerminalService, ExtHostTerminalServiceShape { readonly _serviceBrand: undefined; @@ -307,6 +315,8 @@ export abstract class BaseExtHostTerminalService implements IExtHostTerminalServ private readonly _bufferer: TerminalDataBufferer; private readonly _linkHandlers: Set = new Set(); + private readonly _linkProviders: Set = new Set(); + private readonly _terminalLinkCache: Map> = new Map(); public get activeTerminal(): ExtHostTerminal | undefined { return this._activeTerminal; } public get terminals(): ExtHostTerminal[] { return this._terminals; } @@ -547,17 +557,30 @@ export abstract class BaseExtHostTerminalService implements IExtHostTerminalServ public registerLinkHandler(handler: vscode.TerminalLinkHandler): vscode.Disposable { this._linkHandlers.add(handler); - if (this._linkHandlers.size === 1) { + if (this._linkHandlers.size === 1 && this._linkProviders.size === 0) { this._proxy.$startHandlingLinks(); } return new VSCodeDisposable(() => { this._linkHandlers.delete(handler); - if (this._linkHandlers.size === 0) { + if (this._linkHandlers.size === 0 && this._linkProviders.size === 0) { this._proxy.$stopHandlingLinks(); } }); } + public registerLinkProvider(provider: vscode.TerminalLinkProvider): vscode.Disposable { + this._linkProviders.add(provider); + if (this._linkProviders.size === 1) { + this._proxy.$startLinkProvider(); + } + return new VSCodeDisposable(() => { + this._linkProviders.delete(provider); + if (this._linkProviders.size === 0) { + this._proxy.$stopLinkProvider(); + } + }); + } + public async $handleLink(id: number, link: string): Promise { const terminal = this._getTerminalById(id); if (!terminal) { @@ -577,6 +600,60 @@ export abstract class BaseExtHostTerminalService implements IExtHostTerminalServ return false; } + public async $provideLinks(terminalId: number, line: string): Promise { + const terminal = this._getTerminalById(terminalId); + if (!terminal) { + return []; + } + + // Discard any cached links the terminal has been holding, currently all links are released + // when new links are provided. + this._terminalLinkCache.delete(terminalId); + + const result: ITerminalLinkDto[] = []; + const context: vscode.TerminalLinkContext = { terminal, line }; + const promises: vscode.ProviderResult<{ provider: vscode.TerminalLinkProvider, links: vscode.TerminalLink[] }>[] = []; + for (const provider of this._linkProviders) { + promises.push(new Promise(async r => { + const links = (await provider.provideTerminalLinks(context)) || []; + r({ provider, links }); + })); + } + + const provideResults = await Promise.all(promises); + const cacheLinkMap = new Map(); + for (const provideResult of provideResults) { + if (provideResult && provideResult.links.length > 0) { + result.push(...provideResult.links.map(providerLink => { + const endIndex = Math.max(providerLink.endIndex, providerLink.startIndex + 1); + const link = { + id: nextLinkId++, + startIndex: providerLink.startIndex, + length: endIndex - providerLink.startIndex, + label: providerLink.tooltip + }; + cacheLinkMap.set(link.id, { + provider: provideResult.provider, + link: providerLink + }); + return link; + })); + } + } + + this._terminalLinkCache.set(terminalId, cacheLinkMap); + + return result; + } + + $activateLink(terminalId: number, linkId: number): void { + const cachedLink = this._terminalLinkCache.get(terminalId)?.get(linkId); + if (!cachedLink) { + return; + } + cachedLink.provider.handleTerminalLink(cachedLink.link); + } + private _onProcessExit(id: number, exitCode: number | undefined): void { this._bufferer.stopBuffering(id); diff --git a/src/vs/workbench/api/common/extHostTreeViews.ts b/src/vs/workbench/api/common/extHostTreeViews.ts index a27acd285d..bb6ad49365 100644 --- a/src/vs/workbench/api/common/extHostTreeViews.ts +++ b/src/vs/workbench/api/common/extHostTreeViews.ts @@ -19,6 +19,8 @@ import { equals, coalesce } from 'vs/base/common/arrays'; import { ILogService } from 'vs/platform/log/common/log'; import { checkProposedApiEnabled } from 'vs/workbench/services/extensions/common/extensions'; import { IExtensionDescription } from 'vs/platform/extensions/common/extensions'; +import { MarkdownString } from 'vs/workbench/api/common/extHostTypeConverters'; +import { IMarkdownString } from 'vs/base/common/htmlContent'; // {{SQL CARBON EDIT}} import * as azdata from 'azdata'; @@ -119,6 +121,22 @@ export class ExtHostTreeViews implements ExtHostTreeViewsShape { return treeView.getChildren(treeItemHandle); } + async $hasResolve(treeViewId: string): Promise { + const treeView = this.treeViews.get(treeViewId); + if (!treeView) { + throw new Error(localize('treeView.notRegistered', 'No tree view with id \'{0}\' registered.', treeViewId)); + } + return treeView.hasResolve; + } + + $resolve(treeViewId: string, treeItemHandle: string): Promise { + const treeView = this.treeViews.get(treeViewId); + if (!treeView) { + throw new Error(localize('treeView.notRegistered', 'No tree view with id \'{0}\' registered.', treeViewId)); + } + return treeView.resolveTreeItem(treeItemHandle); + } + $setExpanded(treeViewId: string, treeItemHandle: string, expanded: boolean): void { const treeView = this.treeViews.get(treeViewId); if (!treeView) { @@ -160,6 +178,7 @@ type TreeData = { message: boolean, element: T | Root | false }; export interface TreeNode extends IDisposable { // {{SQL CARBON EDIT}} export interface item: ITreeItem; + extensionItem: vscode.TreeItem2; parent: TreeNode | Root; children?: TreeNode[]; } @@ -334,8 +353,28 @@ export class ExtHostTreeView extends Disposable { } } - // {{SQL CARBON EDIT}} - protected resolveUnknownParentChain(element: T): Promise { + get hasResolve(): boolean { + return !!this.dataProvider.resolveTreeItem; + } + + async resolveTreeItem(treeItemHandle: string): Promise { + if (!this.dataProvider.resolveTreeItem) { + return undefined; // {{SQL CARBON EDIT}} strict-null-checks + } + const element = this.elements.get(treeItemHandle); + if (element) { + const node = this.nodes.get(element); + if (node) { + const resolve = await this.dataProvider.resolveTreeItem(element, node.extensionItem); + // Resolvable elements. Currently only tooltip. + node.item.tooltip = resolve.tooltip; + return node.item; + } + } + return undefined; // {{SQL CARBON EDIT}} strict-null-checks + } + + protected resolveUnknownParentChain(element: T): Promise { // {{SQL CARBON EDIT}} return this.resolveParent(element) .then((parent) => { if (!parent) { @@ -498,7 +537,18 @@ export class ExtHostTreeView extends Disposable { return node; } - protected createTreeNode(element: T, extensionTreeItem: azdata.TreeItem2, parent: TreeNode | Root): TreeNode { // {{SQL CARBON EDIT}} change to protected, change to azdata.TreeItem + private getTooltip(tooltip?: string | vscode.MarkdownString): string | IMarkdownString | undefined { + if (typeof tooltip === 'string') { + return tooltip; + } else if (tooltip === undefined) { + return undefined; + } else { + checkProposedApiEnabled(this.extension); + return MarkdownString.from(tooltip); + } + } + + protected createTreeNode(element: T, extensionTreeItem: azdata.TreeItem2, parent: TreeNode | Root): TreeNode { // {{SQL CARBON EDIT}} change to protected, change to azdata.TreeItem const disposable = new DisposableStore(); const handle = this.createHandle(element, extensionTreeItem, parent); const icon = this.getLightIconPath(extensionTreeItem); @@ -508,7 +558,7 @@ export class ExtHostTreeView extends Disposable { label: toTreeItemLabel(extensionTreeItem.label, this.extension), description: extensionTreeItem.description, resourceUri: extensionTreeItem.resourceUri, - tooltip: typeof extensionTreeItem.tooltip === 'string' ? extensionTreeItem.tooltip : undefined, + tooltip: this.getTooltip(extensionTreeItem.tooltip), command: extensionTreeItem.command ? this.commands.toInternal(extensionTreeItem.command, disposable) : undefined, contextValue: extensionTreeItem.contextValue, icon, @@ -523,6 +573,7 @@ export class ExtHostTreeView extends Disposable { return { item, + extensionItem: extensionTreeItem, parent, children: undefined, dispose(): void { disposable.dispose(); } diff --git a/src/vs/workbench/api/common/extHostTypeConverters.ts b/src/vs/workbench/api/common/extHostTypeConverters.ts index f7229352ce..3e8d57c35d 100644 --- a/src/vs/workbench/api/common/extHostTypeConverters.ts +++ b/src/vs/workbench/api/common/extHostTypeConverters.ts @@ -646,7 +646,7 @@ export namespace DocumentSymbol { range: Range.from(info.range), selectionRange: Range.from(info.selectionRange), kind: SymbolKind.from(info.kind), - tags: info.tags ? info.tags.map(SymbolTag.from) : [] + tags: info.tags?.map(SymbolTag.from) ?? [] }; if (info.children) { result.children = info.children.map(from); @@ -911,7 +911,7 @@ export namespace CompletionItem { result.insertText = suggestion.insertText; result.kind = CompletionItemKind.to(suggestion.kind); - result.tags = suggestion.tags && suggestion.tags.map(CompletionItemTag.to); + result.tags = suggestion.tags?.map(CompletionItemTag.to); result.detail = suggestion.detail; result.documentation = htmlContent.isMarkdownString(suggestion.documentation) ? MarkdownString.to(suggestion.documentation) : suggestion.documentation; result.sortText = suggestion.sortText; diff --git a/src/vs/workbench/api/common/extHostTypes.ts b/src/vs/workbench/api/common/extHostTypes.ts index bd321600d9..35ad4fa63e 100644 --- a/src/vs/workbench/api/common/extHostTypes.ts +++ b/src/vs/workbench/api/common/extHostTypes.ts @@ -1252,7 +1252,7 @@ export class MarkdownString { // escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash this.value += (this.supportThemeIcons ? escapeCodicons(value) : value) .replace(/[\\`*_{}[\]()#+\-.!]/g, '\\$&') - .replace('\n', '\n\n'); + .replace(/\n/, '\n\n'); return this; } @@ -2101,7 +2101,7 @@ export class TreeItem { iconPath?: string | URI | { light: string | URI; dark: string | URI; }; command?: vscode.Command; contextValue?: string; - tooltip?: string; + tooltip?: string | vscode.MarkdownString; constructor(label: string | vscode.TreeItemLabel, collapsibleState?: vscode.TreeItemCollapsibleState); constructor(resourceUri: URI, collapsibleState?: vscode.TreeItemCollapsibleState); @@ -2769,7 +2769,7 @@ export enum ExtensionMode { //#region Authentication -export class AuthenticationSession implements vscode.AuthenticationSession2 { +export class AuthenticationSession implements vscode.AuthenticationSession { constructor(public id: string, public accessToken: string, public account: { displayName: string, id: string }, public scopes: string[]) { } } diff --git a/src/vs/workbench/api/common/extHostWindow.ts b/src/vs/workbench/api/common/extHostWindow.ts index a86e553749..4d84dd83e1 100644 --- a/src/vs/workbench/api/common/extHostWindow.ts +++ b/src/vs/workbench/api/common/extHostWindow.ts @@ -4,13 +4,15 @@ *--------------------------------------------------------------------------------------------*/ import { Event, Emitter } from 'vs/base/common/event'; -import { ExtHostWindowShape, MainContext, MainThreadWindowShape, IMainContext, IOpenUriOptions } from './extHost.protocol'; +import { ExtHostWindowShape, MainContext, MainThreadWindowShape, IOpenUriOptions } from './extHost.protocol'; import { WindowState } from 'vscode'; import { URI } from 'vs/base/common/uri'; import { Schemas } from 'vs/base/common/network'; import { isFalsyOrWhitespace } from 'vs/base/common/strings'; +import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; +import { IExtHostRpcService } from 'vs/workbench/api/common/extHostRpcService'; -export class ExtHostWindow implements ExtHostWindowShape { +export class ExtHostWindow implements IExtHostWindow { private static InitialState: WindowState = { focused: true @@ -24,8 +26,8 @@ export class ExtHostWindow implements ExtHostWindowShape { private _state = ExtHostWindow.InitialState; get state(): WindowState { return this._state; } - constructor(mainContext: IMainContext) { - this._proxy = mainContext.getProxy(MainContext.MainThreadWindow); + constructor(@IExtHostRpcService extHostRpc: IExtHostRpcService) { + this._proxy = extHostRpc.getProxy(MainContext.MainThreadWindow); this._proxy.$getWindowVisibility().then(isFocused => this.$onDidChangeWindowFocus(isFocused)); } @@ -67,3 +69,6 @@ export class ExtHostWindow implements ExtHostWindowShape { return URI.from(result); } } + +export const IExtHostWindow = createDecorator('IExtHostWindow'); +export interface IExtHostWindow extends ExtHostWindow, ExtHostWindowShape { } diff --git a/src/vs/workbench/api/node/extHost.services.ts b/src/vs/workbench/api/node/extHost.services.ts index 739b0ced96..0a3c55014d 100644 --- a/src/vs/workbench/api/node/extHost.services.ts +++ b/src/vs/workbench/api/node/extHost.services.ts @@ -29,12 +29,14 @@ import { ExtHostLogService } from 'vs/workbench/api/node/extHostLogService'; import { IExtHostTunnelService } from 'vs/workbench/api/common/extHostTunnelService'; import { ExtHostTunnelService } from 'vs/workbench/api/node/extHostTunnelService'; import { IExtHostApiDeprecationService, ExtHostApiDeprecationService } from 'vs/workbench/api/common/extHostApiDeprecationService'; +import { IExtHostWindow, ExtHostWindow } from 'vs/workbench/api/common/extHostWindow'; // register singleton services registerSingleton(ILogService, ExtHostLogService); registerSingleton(IExtHostApiDeprecationService, ExtHostApiDeprecationService); registerSingleton(IExtHostOutputService, ExtHostOutputService2); registerSingleton(IExtHostWorkspace, ExtHostWorkspace); +registerSingleton(IExtHostWindow, ExtHostWindow); registerSingleton(IExtHostDecorations, ExtHostDecorations); registerSingleton(IExtHostConfiguration, ExtHostConfiguration); registerSingleton(IExtHostCommands, ExtHostCommands); diff --git a/src/vs/workbench/api/node/extHostDebugService.ts b/src/vs/workbench/api/node/extHostDebugService.ts index e0c33681d0..91d45665b0 100644 --- a/src/vs/workbench/api/node/extHostDebugService.ts +++ b/src/vs/workbench/api/node/extHostDebugService.ts @@ -121,6 +121,6 @@ export class ExtHostDebugService extends ExtHostDebugServiceBase { } protected createVariableResolver(folders: vscode.WorkspaceFolder[], editorService: ExtHostDocumentsAndEditors, configurationService: ExtHostConfigProvider): AbstractVariableResolverService { - return new ExtHostVariableResolverService(folders, undefined, configurationService, process.env as env.IProcessEnvironment); + return new ExtHostVariableResolverService(folders, editorService, configurationService, process.env as env.IProcessEnvironment); } } diff --git a/src/vs/workbench/api/node/extHostTask.ts b/src/vs/workbench/api/node/extHostTask.ts index c31195d968..51c2674d1e 100644 --- a/src/vs/workbench/api/node/extHostTask.ts +++ b/src/vs/workbench/api/node/extHostTask.ts @@ -59,7 +59,7 @@ export class ExtHostTask extends ExtHostTaskBase { throw new Error('Task from execution DTO is undefined'); } const execution = await this.getTaskExecution(executionDTO, task); - this._proxy.$executeTask(executionDTO.task).catch(error => { throw new Error(error); }); + this._proxy.$executeTask(executionDTO.task).catch(() => { /* The error here isn't actionable. */ }); return execution; } else { const dto = TaskDTO.from(task, extension); @@ -75,7 +75,7 @@ export class ExtHostTask extends ExtHostTaskBase { } // Always get the task execution first to prevent timing issues when retrieving it later const execution = await this.getTaskExecution(await this._proxy.$getTaskExecution(dto), task); - this._proxy.$executeTask(dto).catch(error => { throw new Error(error); }); + this._proxy.$executeTask(dto).catch(() => { /* The error here isn't actionable. */ }); return execution; } } diff --git a/src/vs/workbench/api/worker/extHostExtensionService.ts b/src/vs/workbench/api/worker/extHostExtensionService.ts index 510489afba..31a39761d3 100644 --- a/src/vs/workbench/api/worker/extHostExtensionService.ts +++ b/src/vs/workbench/api/worker/extHostExtensionService.ts @@ -51,7 +51,7 @@ export class ExtHostExtensionService extends AbstractExtHostExtensionService { // fetch JS sources as text and create a new function around it const source = await response.text(); - const initFn = new Function('module', 'exports', 'require', 'window', `${source}\n//# sourceURL=${module.toString(true)}`); + const initFn = new Function('module', 'exports', 'require', `${source}\n//# sourceURL=${module.toString(true)}`); // define commonjs globals: `module`, `exports`, and `require` const _exports = {}; @@ -66,7 +66,7 @@ export class ExtHostExtensionService extends AbstractExtHostExtensionService { try { activationTimesBuilder.codeLoadingStart(); - initFn(_module, _exports, _require, self); + initFn(_module, _exports, _require); return (_module.exports !== _exports ? _module.exports : _exports); } finally { activationTimesBuilder.codeLoadingStop(); diff --git a/src/vs/workbench/browser/actions/developerActions.ts b/src/vs/workbench/browser/actions/developerActions.ts index 8deb526f0d..f1d9d8371b 100644 --- a/src/vs/workbench/browser/actions/developerActions.ts +++ b/src/vs/workbench/browser/actions/developerActions.ts @@ -249,7 +249,7 @@ class LogWorkingCopiesAction extends Action { // --- Actions Registration -const developerCategory = nls.localize('developer', "Developer"); +const developerCategory = nls.localize({ key: 'developer', comment: ['A developer on Code itself or someone diagnosing issues in Code'] }, "Developer"); const registry = Registry.as(Extensions.WorkbenchActions); registry.registerWorkbenchAction(SyncActionDescriptor.from(InspectContextKeysAction), 'Developer: Inspect Context Keys', developerCategory); registry.registerWorkbenchAction(SyncActionDescriptor.from(ToggleScreencastModeAction), 'Developer: Toggle Screencast Mode', developerCategory); diff --git a/src/vs/workbench/browser/actions/layoutActions.ts b/src/vs/workbench/browser/actions/layoutActions.ts index 0c7ee02b1c..aa0d509a7d 100644 --- a/src/vs/workbench/browser/actions/layoutActions.ts +++ b/src/vs/workbench/browser/actions/layoutActions.ts @@ -697,7 +697,7 @@ export class MoveFocusedViewAction extends Action { if (!(isViewSolo && currentLocation === ViewContainerLocation.Panel)) { items.push({ id: '_.panel.newcontainer', - label: nls.localize('moveFocusedView.newContainerInPanel', "New Panel Entry"), + label: nls.localize({ key: 'moveFocusedView.newContainerInPanel', comment: ['Creates a new top-level tab in the panel.'] }, "New Panel Entry"), }); } diff --git a/src/vs/workbench/browser/actions/quickAccessActions.ts b/src/vs/workbench/browser/actions/quickAccessActions.ts index 41e830ddf0..36246ff412 100644 --- a/src/vs/workbench/browser/actions/quickAccessActions.ts +++ b/src/vs/workbench/browser/actions/quickAccessActions.ts @@ -138,7 +138,7 @@ CommandsRegistry.registerCommand({ handler: async function (accessor: ServicesAccessor, prefix: unknown) { const quickInputService = accessor.get(IQuickInputService); - quickInputService.quickAccess.show(typeof prefix === 'string' ? prefix : undefined); + quickInputService.quickAccess.show(typeof prefix === 'string' ? prefix : undefined, { preserveValue: typeof prefix === 'string' /* preserve as is if provided */ }); }, description: { description: `Quick access`, diff --git a/src/vs/workbench/browser/actions/windowActions.ts b/src/vs/workbench/browser/actions/windowActions.ts index fa57a80cf5..b40f00872a 100644 --- a/src/vs/workbench/browser/actions/windowActions.ts +++ b/src/vs/workbench/browser/actions/windowActions.ts @@ -344,7 +344,7 @@ registry.registerWorkbenchAction(SyncActionDescriptor.from(OpenRecentAction, { p const viewCategory = nls.localize('view', "View"); registry.registerWorkbenchAction(SyncActionDescriptor.from(ToggleFullScreenAction, { primary: KeyCode.F11, mac: { primary: KeyMod.CtrlCmd | KeyMod.WinCtrl | KeyCode.KEY_F } }), 'View: Toggle Full Screen', viewCategory); -const developerCategory = nls.localize('developer', "Developer"); +const developerCategory = nls.localize({ key: 'developer', comment: ['A developer on Code itself or someone diagnosing issues in Code'] }, "Developer"); registry.registerWorkbenchAction(SyncActionDescriptor.from(ReloadWindowAction), 'Developer: Reload Window', developerCategory); const helpCategory = nls.localize('help', "Help"); diff --git a/src/vs/workbench/browser/actions/workspaceCommands.ts b/src/vs/workbench/browser/actions/workspaceCommands.ts index 7259d9d1fa..0b8b9e20f2 100644 --- a/src/vs/workbench/browser/actions/workspaceCommands.ts +++ b/src/vs/workbench/browser/actions/workspaceCommands.ts @@ -18,7 +18,6 @@ import { getIconClasses } from 'vs/editor/common/services/getIconClasses'; import { IModelService } from 'vs/editor/common/services/modelService'; import { IModeService } from 'vs/editor/common/services/modeService'; import { IFileDialogService } from 'vs/platform/dialogs/common/dialogs'; -import { IViewDescriptorService, IViewsService, ViewContainerLocation } from 'vs/workbench/common/views'; export const ADD_ROOT_FOLDER_COMMAND_ID = 'addRootFolder'; export const ADD_ROOT_FOLDER_LABEL = nls.localize('addFolderToWorkspace', "Add Folder to Workspace..."); @@ -55,8 +54,6 @@ CommandsRegistry.registerCommand({ CommandsRegistry.registerCommand({ id: ADD_ROOT_FOLDER_COMMAND_ID, handler: async (accessor) => { - const viewDescriptorService = accessor.get(IViewDescriptorService); - const viewsService = accessor.get(IViewsService); const workspaceEditingService = accessor.get(IWorkspaceEditingService); const dialogsService = accessor.get(IFileDialogService); const folders = await dialogsService.showOpenDialog({ @@ -72,7 +69,6 @@ CommandsRegistry.registerCommand({ } await workspaceEditingService.addFolders(folders.map(folder => ({ uri: resources.removeTrailingPathSeparator(folder) }))); - await viewsService.openViewContainer(viewDescriptorService.getDefaultViewContainer(ViewContainerLocation.Sidebar)!.id, true); } }); diff --git a/src/vs/workbench/browser/composite.ts b/src/vs/workbench/browser/composite.ts index 9a30051f5d..b328bf51ff 100644 --- a/src/vs/workbench/browser/composite.ts +++ b/src/vs/workbench/browser/composite.ts @@ -33,9 +33,6 @@ export abstract class Composite extends Component implements IComposite { private readonly _onTitleAreaUpdate = this._register(new Emitter()); readonly onTitleAreaUpdate = this._onTitleAreaUpdate.event; - private readonly _onDidChangeVisibility = this._register(new Emitter()); - readonly onDidChangeVisibility = this._onDidChangeVisibility.event; - private _onDidFocus: Emitter | undefined; get onDidFocus(): Event { if (!this._onDidFocus) { @@ -135,8 +132,6 @@ export abstract class Composite extends Component implements IComposite { setVisible(visible: boolean): void { if (this.visible !== !!visible) { this.visible = visible; - - this._onDidChangeVisibility.fire(visible); } } diff --git a/src/vs/workbench/browser/dnd.ts b/src/vs/workbench/browser/dnd.ts index d1ae7904fc..f3fea23e67 100644 --- a/src/vs/workbench/browser/dnd.ts +++ b/src/vs/workbench/browser/dnd.ts @@ -5,7 +5,7 @@ import { hasWorkspaceFileExtension, IWorkspaceFolderCreationData, IRecentFile, IWorkspacesService } from 'vs/platform/workspaces/common/workspaces'; import { normalize } from 'vs/base/common/path'; -import { basename } from 'vs/base/common/resources'; +import { basename, extUri } from 'vs/base/common/resources'; import { IFileService } from 'vs/platform/files/common/files'; import { IWindowOpenable } from 'vs/platform/windows/common/windows'; import { URI } from 'vs/base/common/uri'; @@ -357,7 +357,7 @@ export function fillResourceDataTransfers(accessor: ServicesAccessor, resources: for (const textEditorControl of textEditorControls) { if (isCodeEditor(textEditorControl)) { const model = textEditorControl.getModel(); - if (model?.uri?.toString() === file.resource.toString()) { + if (extUri.isEqual(model?.uri, file.resource)) { return withNullAsUndefined(textEditorControl.saveViewState()); } } diff --git a/src/vs/workbench/browser/labels.ts b/src/vs/workbench/browser/labels.ts index 8852278f79..980159a31c 100644 --- a/src/vs/workbench/browser/labels.ts +++ b/src/vs/workbench/browser/labels.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { URI } from 'vs/base/common/uri'; -import { dirname, isEqual, basenameOrAuthority } from 'vs/base/common/resources'; +import { dirname, isEqual, basenameOrAuthority, extUri } from 'vs/base/common/resources'; import { IconLabel, IIconLabelValueOptions, IIconLabelCreationOptions } from 'vs/base/browser/ui/iconLabel/iconLabel'; import { IModeService } from 'vs/editor/common/services/modeService'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; @@ -24,7 +24,7 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti import { withNullAsUndefined } from 'vs/base/common/types'; export interface IResourceLabelProps { - resource?: URI | { master?: URI, detail?: URI }; + resource?: URI | { primary?: URI, secondary?: URI }; name?: string | string[]; description?: string; } @@ -38,7 +38,7 @@ function toResource(props: IResourceLabelProps | undefined): URI | undefined { return props.resource; } - return props.resource.master; + return props.resource.primary; } export interface IResourceLabelOptions extends IIconLabelValueOptions { @@ -307,7 +307,7 @@ class ResourceLabelWidget extends IconLabel { return; // only update if resource exists } - if (model.uri.toString() === resource.toString()) { + if (extUri.isEqual(model.uri, resource)) { if (this.lastKnownDetectedModeId !== model.getModeId()) { this.render(true); // update if the language id of the model has changed from our last known state } @@ -379,9 +379,9 @@ class ResourceLabelWidget extends IconLabel { setResource(label: IResourceLabelProps, options: IResourceLabelOptions = Object.create(null)): void { /*const resource = toResource(label); {{SQL CARBON EDIT}} we don't want to special case untitled files - const isMasterDetail = label?.resource && !URI.isUri(label.resource); + const isSideBySideEditor = label?.resource && !URI.isUri(label.resource); - if (!options.forceLabel && !isMasterDetail && resource?.scheme === Schemas.untitled) { + if (!options.forceLabel && !isSideBySideEditor && resource?.scheme === Schemas.untitled) { // Untitled labels are very dynamic because they may change // whenever the content changes (unless a path is associated). // As such we always ask the actual editor for it's name and @@ -390,7 +390,7 @@ class ResourceLabelWidget extends IconLabel { // we assume that the client does not want to display them // and as such do not override. // - // We do not touch the label if it represents a master-detail + // We do not touch the label if it represents a primary-secondary // because in that case we expect it to carry a proper label // and description. const untitledModel = this.textFileService.untitled.get(resource); diff --git a/src/vs/workbench/browser/layout.ts b/src/vs/workbench/browser/layout.ts index 5e04d223ec..5e5f129f94 100644 --- a/src/vs/workbench/browser/layout.ts +++ b/src/vs/workbench/browser/layout.ts @@ -16,7 +16,7 @@ import { PanelPart } from 'vs/workbench/browser/parts/panel/panelPart'; import { PanelRegistry, Extensions as PanelExtensions } from 'vs/workbench/browser/panel'; import { Position, Parts, IWorkbenchLayoutService, positionFromString, positionToString } from 'vs/workbench/services/layout/browser/layoutService'; import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace'; -import { IStorageService, StorageScope, WillSaveStateReason, WorkspaceStorageSettings } from 'vs/platform/storage/common/storage'; +import { IStorageService, StorageScope, WillSaveStateReason } from 'vs/platform/storage/common/storage'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet'; import { IPanelService } from 'vs/workbench/services/panel/common/panelService'; @@ -568,8 +568,7 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi return; } - const firstOpen = storageService.getBoolean(WorkspaceStorageSettings.WORKSPACE_FIRST_OPEN, StorageScope.WORKSPACE); - if (!firstOpen) { + if (!storageService.isNew(StorageScope.WORKSPACE)) { return; } @@ -794,7 +793,7 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi private getInitialFilesToOpen(): { filesToOpenOrCreate?: IPath[], filesToDiff?: IPath[] } | undefined { const defaultLayout = this.environmentService.options?.defaultLayout; - if (defaultLayout?.editors?.length && this.storageService.getBoolean(WorkspaceStorageSettings.WORKSPACE_FIRST_OPEN, StorageScope.WORKSPACE)) { + if (defaultLayout?.editors?.length && this.storageService.isNew(StorageScope.WORKSPACE)) { this._openedDefaultEditors = true; return { diff --git a/src/vs/workbench/browser/media/style.css b/src/vs/workbench/browser/media/style.css index 0fcc4fad1c..afc20c5d3f 100644 --- a/src/vs/workbench/browser/media/style.css +++ b/src/vs/workbench/browser/media/style.css @@ -263,3 +263,7 @@ body.web { .monaco-workbench .monaco-list:focus { outline: 0 !important; /* tree indicates focus not via outline but through the focused item */ } + +.monaco-workbench .codicon[class*='codicon-'] { + font-size: 16px; /* sets font-size for codicons in workbench https://github.com/microsoft/vscode/issues/98495 */ +} diff --git a/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts b/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts index eee46e923e..d7efdbecbf 100644 --- a/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts +++ b/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts @@ -170,10 +170,12 @@ export class AccountsActionViewItem extends ActivityActionViewItem { menus.push(new Separator()); } - otherCommands.forEach(group => { + otherCommands.forEach((group, i) => { const actions = group[1]; menus = menus.concat(actions); - menus.push(new Separator()); + if (i !== otherCommands.length - 1) { + menus.push(new Separator()); + } }); return menus; diff --git a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts index a9e902ee5f..6a0697b6cc 100644 --- a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts +++ b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts @@ -10,7 +10,7 @@ import { GLOBAL_ACTIVITY_ID, IActivity, ACCOUNTS_ACTIIVTY_ID } from 'vs/workbenc import { Part } from 'vs/workbench/browser/part'; import { GlobalActivityActionViewItem, ViewContainerActivityAction, PlaceHolderToggleCompositePinnedAction, PlaceHolderViewContainerActivityAction, AccountsActionViewItem, HomeAction, HomeActionViewItem, DeprecatedHomeAction } from 'vs/workbench/browser/parts/activitybar/activitybarActions'; import { IBadge, NumberBadge } from 'vs/workbench/services/activity/common/activity'; -import { IWorkbenchLayoutService, Parts, Position as SideBarPosition } from 'vs/workbench/services/layout/browser/layoutService'; +import { IWorkbenchLayoutService, Parts } from 'vs/workbench/services/layout/browser/layoutService'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IDisposable, toDisposable, DisposableStore, Disposable } from 'vs/base/common/lifecycle'; import { ToggleActivityBarVisibilityAction, ToggleMenuBarAction } from 'vs/workbench/browser/actions/layoutActions'; @@ -18,7 +18,7 @@ import { IThemeService, IColorTheme } from 'vs/platform/theme/common/themeServic import { ACTIVITY_BAR_BACKGROUND, ACTIVITY_BAR_BORDER, ACTIVITY_BAR_FOREGROUND, ACTIVITY_BAR_ACTIVE_BORDER, ACTIVITY_BAR_BADGE_BACKGROUND, ACTIVITY_BAR_BADGE_FOREGROUND, ACTIVITY_BAR_INACTIVE_FOREGROUND, ACTIVITY_BAR_ACTIVE_BACKGROUND, ACTIVITY_BAR_DRAG_AND_DROP_BORDER } from 'vs/workbench/common/theme'; import { contrastBorder } from 'vs/platform/theme/common/colorRegistry'; import { CompositeBar, ICompositeBarItem, CompositeDragAndDrop } from 'vs/workbench/browser/parts/compositeBar'; -import { Dimension, addClass, removeNode, createCSSRule, asCSSUrl } from 'vs/base/browser/dom'; +import { Dimension, addClass, removeNode, createCSSRule, asCSSUrl, toggleClass } from 'vs/base/browser/dom'; import { IStorageService, StorageScope, IWorkspaceStorageChangeEvent } from 'vs/platform/storage/common/storage'; import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; import { URI, UriComponents } from 'vs/base/common/uri'; @@ -458,14 +458,8 @@ export class ActivitybarPart extends Part implements IActivityBarService { container.style.backgroundColor = background; const borderColor = this.getColor(ACTIVITY_BAR_BORDER) || this.getColor(contrastBorder) || ''; - const isPositionLeft = this.layoutService.getSideBarPosition() === SideBarPosition.LEFT; - container.style.boxSizing = borderColor && isPositionLeft ? 'border-box' : ''; - container.style.borderRightWidth = borderColor && isPositionLeft ? '1px' : ''; - container.style.borderRightStyle = borderColor && isPositionLeft ? 'solid' : ''; - container.style.borderRightColor = isPositionLeft ? borderColor : ''; - container.style.borderLeftWidth = borderColor && !isPositionLeft ? '1px' : ''; - container.style.borderLeftStyle = borderColor && !isPositionLeft ? 'solid' : ''; - container.style.borderLeftColor = !isPositionLeft ? borderColor : ''; + toggleClass(container, 'bordered', !!borderColor); + container.style.borderColor = borderColor ? borderColor : ''; } private getActivitybarItemColors(theme: IColorTheme): ICompositeBarColors { diff --git a/src/vs/workbench/browser/parts/activitybar/media/activitybarpart.css b/src/vs/workbench/browser/parts/activitybar/media/activitybarpart.css index b5a24425f7..2c4964a953 100644 --- a/src/vs/workbench/browser/parts/activitybar/media/activitybarpart.css +++ b/src/vs/workbench/browser/parts/activitybar/media/activitybarpart.css @@ -8,6 +8,28 @@ height: 100%; } +.monaco-workbench .activitybar.bordered::before { + content: ''; + float: left; + position: absolute; + box-sizing: border-box; + height: 100%; + width: 0px; + border-color: inherit; +} + +.monaco-workbench .activitybar.left.bordered::before { + right: 0; + border-right-style: solid; + border-right-width: 1px; +} + +.monaco-workbench .activitybar.right.bordered::before { + left: 0; + border-left-style: solid; + border-left-width: 1px; +} + .monaco-workbench .activitybar > .content { height: 100%; display: flex; diff --git a/src/vs/workbench/browser/parts/compositeBar.ts b/src/vs/workbench/browser/parts/compositeBar.ts index a340e4e60d..ad640525df 100644 --- a/src/vs/workbench/browser/parts/compositeBar.ts +++ b/src/vs/workbench/browser/parts/compositeBar.ts @@ -122,8 +122,7 @@ export class CompositeDragAndDrop implements ICompositeDragAndDrop { const draggedViews = this.viewDescriptorService.getViewContainerModel(currentContainer)!.allViewDescriptors; // ... all views must be movable - // Prevent moving scm explicitly TODO@joaomoreno remove when scm is moveable - return !draggedViews.some(v => !v.canMoveView) && currentContainer.id !== 'workbench.view.scm'; + return !draggedViews.some(v => !v.canMoveView); } else { // Dragging an individual view const viewDescriptor = this.viewDescriptorService.getViewDescriptorById(dragData.id); diff --git a/src/vs/workbench/browser/parts/compositePart.ts b/src/vs/workbench/browser/parts/compositePart.ts index 3ad91fd4d6..2b73322765 100644 --- a/src/vs/workbench/browser/parts/compositePart.ts +++ b/src/vs/workbench/browser/parts/compositePart.ts @@ -331,7 +331,7 @@ export abstract class CompositePart extends Part { toolBar.context = this.actionsContextProvider(); // Return fn to set into toolbar - return toolBar.setActions(prepareActions(primaryActions), prepareActions(secondaryActions)); + return () => toolBar.setActions(prepareActions(primaryActions), prepareActions(secondaryActions)); } protected getActiveComposite(): IComposite | undefined { @@ -392,7 +392,8 @@ export abstract class CompositePart extends Part { actionViewItemProvider: action => this.actionViewItemProvider(action), orientation: ActionsOrientation.HORIZONTAL, getKeyBinding: action => this.keybindingService.lookupKeybinding(action.id), - anchorAlignmentProvider: () => this.getTitleAreaDropDownAnchorAlignment() + anchorAlignmentProvider: () => this.getTitleAreaDropDownAnchorAlignment(), + toggleMenuTitle: nls.localize('viewsAndMoreActions', "Views and More Actions...") })); this.collectCompositeActions()(); diff --git a/src/vs/workbench/browser/parts/editor/baseEditor.ts b/src/vs/workbench/browser/parts/editor/baseEditor.ts index f8bac2a9f8..32bee190b2 100644 --- a/src/vs/workbench/browser/parts/editor/baseEditor.ts +++ b/src/vs/workbench/browser/parts/editor/baseEditor.ts @@ -58,7 +58,7 @@ export abstract class BaseEditor extends Composite implements IEditorPane { protected _options: EditorOptions | undefined; get options(): EditorOptions | undefined { return this._options; } - private _group?: IEditorGroup; + private _group: IEditorGroup | undefined; get group(): IEditorGroup | undefined { return this._group; } constructor( @@ -78,7 +78,8 @@ export abstract class BaseEditor extends Composite implements IEditorPane { } /** - * Called to create the editor in the parent HTMLElement. + * Called to create the editor in the parent HTMLElement. Subclasses implement + * this method to construct the editor widget. */ protected abstract createEditor(parent: HTMLElement): void; @@ -101,6 +102,12 @@ export abstract class BaseEditor extends Composite implements IEditorPane { /** * Called to indicate to the editor that the input should be cleared and * resources associated with the input should be freed. + * + * This method can be called based on different contexts, e.g. when opening + * a different editor control or when closing all editors in a group. + * + * To monitor the lifecycle of editor inputs, you should not rely on this + * method, rather refer to the listeners on `IEditorGroup` via `IEditorGroupService`. */ clearInput(): void { this._input = undefined; @@ -136,16 +143,6 @@ export abstract class BaseEditor extends Composite implements IEditorPane { this._group = group; } - /** - * Called before the editor is being removed from the DOM. - */ - onWillHide() { } - - /** - * Called after the editor has been removed from the DOM. - */ - onDidHide() { } - protected getEditorMemento(editorGroupService: IEditorGroupsService, key: string, limit: number = 10): IEditorMemento { const mementoKey = `${this.getId()}${key}`; diff --git a/src/vs/workbench/browser/parts/editor/binaryDiffEditor.ts b/src/vs/workbench/browser/parts/editor/binaryDiffEditor.ts index ea1ddff2da..4cd983e03d 100644 --- a/src/vs/workbench/browser/parts/editor/binaryDiffEditor.ts +++ b/src/vs/workbench/browser/parts/editor/binaryDiffEditor.ts @@ -29,11 +29,11 @@ export class BinaryResourceDiffEditor extends SideBySideEditor { } getMetadata(): string | undefined { - const master = this.masterEditorPane; - const details = this.detailsEditorPane; + const primary = this.primaryEditorPane; + const secondary = this.secondaryEditorPane; - if (master instanceof BaseBinaryResourceEditor && details instanceof BaseBinaryResourceEditor) { - return nls.localize('metadataDiff', "{0} ↔ {1}", details.getMetadata(), master.getMetadata()); + if (primary instanceof BaseBinaryResourceEditor && secondary instanceof BaseBinaryResourceEditor) { + return nls.localize('metadataDiff', "{0} ↔ {1}", secondary.getMetadata(), primary.getMetadata()); } return undefined; diff --git a/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts b/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts index 15da2a226b..ceee512188 100644 --- a/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts +++ b/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts @@ -234,7 +234,7 @@ export class BreadcrumbsControl { this._breadcrumbsDisposables.clear(); // honor diff editors and such - const uri = toResource(this._editorGroup.activeEditor, { supportSideBySide: SideBySideEditor.MASTER }); + const uri = toResource(this._editorGroup.activeEditor, { supportSideBySide: SideBySideEditor.PRIMARY }); if (!uri || !this._fileService.canHandleResource(uri)) { // cleanup and return when there is no input or when diff --git a/src/vs/workbench/browser/parts/editor/editor.contribution.ts b/src/vs/workbench/browser/parts/editor/editor.contribution.ts index ce93bca933..7b95537ccd 100644 --- a/src/vs/workbench/browser/parts/editor/editor.contribution.ts +++ b/src/vs/workbench/browser/parts/editor/editor.contribution.ts @@ -7,7 +7,7 @@ import { Registry } from 'vs/platform/registry/common/platform'; import * as nls from 'vs/nls'; import { URI, UriComponents } from 'vs/base/common/uri'; import { IEditorRegistry, EditorDescriptor, Extensions as EditorExtensions } from 'vs/workbench/browser/editor'; -import { EditorInput, IEditorInputFactory, SideBySideEditorInput, IEditorInputFactoryRegistry, Extensions as EditorInputExtensions, TextCompareEditorActiveContext, EditorPinnedContext, EditorGroupEditorsCountContext, EditorStickyContext } from 'vs/workbench/common/editor'; +import { EditorInput, IEditorInputFactory, SideBySideEditorInput, IEditorInputFactoryRegistry, Extensions as EditorInputExtensions, TextCompareEditorActiveContext, EditorPinnedContext, EditorGroupEditorsCountContext, EditorStickyContext, ActiveEditorAvailableEditorIdsContext } from 'vs/workbench/common/editor'; import { TextResourceEditor } from 'vs/workbench/browser/parts/editor/textResourceEditor'; import { SideBySideEditor } from 'vs/workbench/browser/parts/editor/sideBySideEditor'; import { DiffEditorInput } from 'vs/workbench/common/editor/diffEditorInput'; @@ -34,7 +34,7 @@ import { JoinAllGroupsAction, FocusLeftGroup, FocusAboveGroup, FocusRightGroup, FocusBelowGroup, EditorLayoutSingleAction, EditorLayoutTwoColumnsAction, EditorLayoutThreeColumnsAction, EditorLayoutTwoByTwoGridAction, EditorLayoutTwoRowsAction, EditorLayoutThreeRowsAction, EditorLayoutTwoColumnsBottomAction, EditorLayoutTwoRowsRightAction, NewEditorGroupLeftAction, NewEditorGroupRightAction, NewEditorGroupAboveAction, NewEditorGroupBelowAction, SplitEditorOrthogonalAction, CloseEditorInAllGroupsAction, NavigateToLastEditLocationAction, ToggleGroupSizesAction, ShowAllEditorsByMostRecentlyUsedAction, - QuickAccessPreviousRecentlyUsedEditorAction, OpenPreviousRecentlyUsedEditorInGroupAction, OpenNextRecentlyUsedEditorInGroupAction, QuickAccessLeastRecentlyUsedEditorAction, QuickAccessLeastRecentlyUsedEditorInGroupAction + QuickAccessPreviousRecentlyUsedEditorAction, OpenPreviousRecentlyUsedEditorInGroupAction, OpenNextRecentlyUsedEditorInGroupAction, QuickAccessLeastRecentlyUsedEditorAction, QuickAccessLeastRecentlyUsedEditorInGroupAction, ReopenResourcesAction, ToggleEditorTypeAction } from 'vs/workbench/browser/parts/editor/editorActions'; import * as editorCommands from 'vs/workbench/browser/parts/editor/editorCommands'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; @@ -173,28 +173,28 @@ interface ISerializedSideBySideEditorInput { name: string; description: string | undefined; - detailsSerialized: string; - masterSerialized: string; + primarySerialized: string; + secondarySerialized: string; - detailsTypeId: string; - masterTypeId: string; + primaryTypeId: string; + secondaryTypeId: string; } export abstract class AbstractSideBySideEditorInputFactory implements IEditorInputFactory { - private getInputFactories(detailsId: string, masterId: string): [IEditorInputFactory | undefined, IEditorInputFactory | undefined] { + private getInputFactories(secondaryId: string, primaryId: string): [IEditorInputFactory | undefined, IEditorInputFactory | undefined] { const registry = Registry.as(EditorInputExtensions.EditorInputFactories); - return [registry.getEditorInputFactory(detailsId), registry.getEditorInputFactory(masterId)]; + return [registry.getEditorInputFactory(secondaryId), registry.getEditorInputFactory(primaryId)]; } canSerialize(editorInput: EditorInput): boolean { const input = editorInput as SideBySideEditorInput | DiffEditorInput; - if (input.details && input.master) { - const [detailsInputFactory, masterInputFactory] = this.getInputFactories(input.details.getTypeId(), input.master.getTypeId()); + if (input.primary && input.secondary) { + const [secondaryInputFactory, primaryInputFactory] = this.getInputFactories(input.secondary.getTypeId(), input.primary.getTypeId()); - return !!(detailsInputFactory?.canSerialize(input.details) && masterInputFactory?.canSerialize(input.master)); + return !!(secondaryInputFactory?.canSerialize(input.secondary) && primaryInputFactory?.canSerialize(input.primary)); } return false; @@ -203,20 +203,20 @@ export abstract class AbstractSideBySideEditorInputFactory implements IEditorInp serialize(editorInput: EditorInput): string | undefined { const input = editorInput as SideBySideEditorInput | DiffEditorInput; - if (input.details && input.master) { - const [detailsInputFactory, masterInputFactory] = this.getInputFactories(input.details.getTypeId(), input.master.getTypeId()); - if (detailsInputFactory && masterInputFactory) { - const detailsSerialized = detailsInputFactory.serialize(input.details); - const masterSerialized = masterInputFactory.serialize(input.master); + if (input.primary && input.secondary) { + const [secondaryInputFactory, primaryInputFactory] = this.getInputFactories(input.secondary.getTypeId(), input.primary.getTypeId()); + if (primaryInputFactory && secondaryInputFactory) { + const primarySerialized = primaryInputFactory.serialize(input.primary); + const secondarySerialized = secondaryInputFactory.serialize(input.secondary); - if (detailsSerialized && masterSerialized) { + if (primarySerialized && secondarySerialized) { const serializedEditorInput: ISerializedSideBySideEditorInput = { name: input.getName(), description: input.getDescription(), - detailsSerialized, - masterSerialized, - detailsTypeId: input.details.getTypeId(), - masterTypeId: input.master.getTypeId() + primarySerialized: primarySerialized, + secondarySerialized: secondarySerialized, + primaryTypeId: input.primary.getTypeId(), + secondaryTypeId: input.secondary.getTypeId() }; return JSON.stringify(serializedEditorInput); @@ -230,33 +230,33 @@ export abstract class AbstractSideBySideEditorInputFactory implements IEditorInp deserialize(instantiationService: IInstantiationService, serializedEditorInput: string): EditorInput | undefined { const deserialized: ISerializedSideBySideEditorInput = JSON.parse(serializedEditorInput); - const [detailsInputFactory, masterInputFactory] = this.getInputFactories(deserialized.detailsTypeId, deserialized.masterTypeId); - if (detailsInputFactory && masterInputFactory) { - const detailsInput = detailsInputFactory.deserialize(instantiationService, deserialized.detailsSerialized); - const masterInput = masterInputFactory.deserialize(instantiationService, deserialized.masterSerialized); + const [secondaryInputFactory, primaryInputFactory] = this.getInputFactories(deserialized.secondaryTypeId, deserialized.primaryTypeId); + if (primaryInputFactory && secondaryInputFactory) { + const primaryInput = primaryInputFactory.deserialize(instantiationService, deserialized.primarySerialized); + const secondaryInput = secondaryInputFactory.deserialize(instantiationService, deserialized.secondarySerialized); - if (detailsInput && masterInput) { - return this.createEditorInput(deserialized.name, deserialized.description, detailsInput, masterInput); + if (primaryInput && secondaryInput) { + return this.createEditorInput(deserialized.name, deserialized.description, secondaryInput, primaryInput); } } return undefined; } - protected abstract createEditorInput(name: string, description: string | undefined, detailsInput: EditorInput, masterInput: EditorInput): EditorInput; + protected abstract createEditorInput(name: string, description: string | undefined, secondaryInput: EditorInput, primaryInput: EditorInput): EditorInput; } class SideBySideEditorInputFactory extends AbstractSideBySideEditorInputFactory { - protected createEditorInput(name: string, description: string | undefined, detailsInput: EditorInput, masterInput: EditorInput): EditorInput { - return new SideBySideEditorInput(name, description, detailsInput, masterInput); + protected createEditorInput(name: string, description: string | undefined, secondaryInput: EditorInput, primaryInput: EditorInput): EditorInput { + return new SideBySideEditorInput(name, description, secondaryInput, primaryInput); } } class DiffEditorInputFactory extends AbstractSideBySideEditorInputFactory { - protected createEditorInput(name: string, description: string | undefined, detailsInput: EditorInput, masterInput: EditorInput): EditorInput { - return new DiffEditorInput(name, description, detailsInput, masterInput); + protected createEditorInput(name: string, description: string | undefined, secondaryInput: EditorInput, primaryInput: EditorInput): EditorInput { + return new DiffEditorInput(name, description, secondaryInput, primaryInput); } } @@ -386,6 +386,8 @@ registry.registerWorkbenchAction(SyncActionDescriptor.from(EditorLayoutThreeRows registry.registerWorkbenchAction(SyncActionDescriptor.from(EditorLayoutTwoByTwoGridAction), 'View: Grid Editor Layout (2x2)', category); registry.registerWorkbenchAction(SyncActionDescriptor.from(EditorLayoutTwoRowsRightAction), 'View: Two Rows Right Editor Layout', category); registry.registerWorkbenchAction(SyncActionDescriptor.from(EditorLayoutTwoColumnsBottomAction), 'View: Two Columns Bottom Editor Layout', category); +registry.registerWorkbenchAction(SyncActionDescriptor.from(ReopenResourcesAction), 'View: Reopen Editor With...', category, ActiveEditorAvailableEditorIdsContext); +registry.registerWorkbenchAction(SyncActionDescriptor.from(ToggleEditorTypeAction), 'View: Toggle Editor Type', category, ActiveEditorAvailableEditorIdsContext); // Register Quick Editor Actions including built in quick navigate support for some @@ -458,9 +460,10 @@ MenuRegistry.appendMenuItem(MenuId.EditorTitleContext, { command: { id: editorCo // Editor Title Menu MenuRegistry.appendMenuItem(MenuId.EditorTitle, { command: { id: editorCommands.TOGGLE_DIFF_SIDE_BY_SIDE, title: nls.localize('toggleInlineView', "Toggle Inline View") }, group: '1_diff', order: 10, when: ContextKeyExpr.has('isInDiffEditor') }); -MenuRegistry.appendMenuItem(MenuId.EditorTitle, { command: { id: editorCommands.SHOW_EDITORS_IN_GROUP, title: nls.localize('showOpenedEditors', "Show Opened Editors") }, group: '3_open', order: 10, when: ContextKeyExpr.has('config.workbench.editor.showTabs') }); -MenuRegistry.appendMenuItem(MenuId.EditorTitle, { command: { id: editorCommands.CLOSE_EDITORS_IN_GROUP_COMMAND_ID, title: nls.localize('closeAll', "Close All") }, group: '5_close', order: 10, when: ContextKeyExpr.has('config.workbench.editor.showTabs') }); -MenuRegistry.appendMenuItem(MenuId.EditorTitle, { command: { id: editorCommands.CLOSE_SAVED_EDITORS_COMMAND_ID, title: nls.localize('closeAllSaved', "Close Saved") }, group: '5_close', order: 20, when: ContextKeyExpr.has('config.workbench.editor.showTabs') }); +MenuRegistry.appendMenuItem(MenuId.EditorTitle, { command: { id: editorCommands.SHOW_EDITORS_IN_GROUP, title: nls.localize('showOpenedEditors', "Show Opened Editors") }, group: '3_open', order: 10 }); +MenuRegistry.appendMenuItem(MenuId.EditorTitle, { command: { id: editorCommands.CLOSE_EDITORS_IN_GROUP_COMMAND_ID, title: nls.localize('closeAll', "Close All") }, group: '5_close', order: 10 }); +MenuRegistry.appendMenuItem(MenuId.EditorTitle, { command: { id: editorCommands.CLOSE_SAVED_EDITORS_COMMAND_ID, title: nls.localize('closeAllSaved', "Close Saved") }, group: '5_close', order: 20 }); +MenuRegistry.appendMenuItem(MenuId.EditorTitle, { command: { id: ReopenResourcesAction.ID, title: ReopenResourcesAction.LABEL }, group: '6_reopen', order: 20, when: ActiveEditorAvailableEditorIdsContext }); interface IEditorToolItem { id: string; title: string; icon?: { dark?: URI; light?: URI; } | ThemeIcon; } diff --git a/src/vs/workbench/browser/parts/editor/editorActions.ts b/src/vs/workbench/browser/parts/editor/editorActions.ts index 06a305d437..029e36aafa 100644 --- a/src/vs/workbench/browser/parts/editor/editorActions.ts +++ b/src/vs/workbench/browser/parts/editor/editorActions.ts @@ -11,7 +11,7 @@ import { IHistoryService } from 'vs/workbench/services/history/common/history'; import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { ICommandService } from 'vs/platform/commands/common/commands'; import { CLOSE_EDITOR_COMMAND_ID, MOVE_ACTIVE_EDITOR_COMMAND_ID, ActiveEditorMoveArguments, SPLIT_EDITOR_LEFT, SPLIT_EDITOR_RIGHT, SPLIT_EDITOR_UP, SPLIT_EDITOR_DOWN, splitEditor, LAYOUT_EDITOR_GROUPS_COMMAND_ID, mergeAllGroups } from 'vs/workbench/browser/parts/editor/editorCommands'; -import { IEditorGroupsService, IEditorGroup, GroupsArrangement, GroupLocation, GroupDirection, preferredSideBySideGroupDirection, IFindGroupScope, GroupOrientation, EditorGroupLayout, GroupsOrder } from 'vs/workbench/services/editor/common/editorGroupsService'; +import { IEditorGroupsService, IEditorGroup, GroupsArrangement, GroupLocation, GroupDirection, preferredSideBySideGroupDirection, IFindGroupScope, GroupOrientation, EditorGroupLayout, GroupsOrder, OpenEditorContext } from 'vs/workbench/services/editor/common/editorGroupsService'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { DisposableStore } from 'vs/base/common/lifecycle'; @@ -22,6 +22,7 @@ import { ItemActivation, IQuickInputService } from 'vs/platform/quickinput/commo import { AllEditorsByMostRecentlyUsedQuickAccess, ActiveGroupEditorsByMostRecentlyUsedQuickAccess, AllEditorsByAppearanceQuickAccess } from 'vs/workbench/browser/parts/editor/editorQuickAccess'; import { Codicon } from 'vs/base/common/codicons'; import { IFilesConfigurationService, AutoSaveMode } from 'vs/workbench/services/filesConfiguration/common/filesConfigurationService'; +import { openEditorWith, getAllAvailableEditors } from 'vs/workbench/services/editor/common/editorOpenWith'; export class ExecuteCommandAction extends Action { @@ -580,7 +581,7 @@ abstract class BaseCloseAllAction extends Action { else { let name: string; if (editor instanceof SideBySideEditorInput) { - name = editor.master.getName(); // prefer shorter names by using master's name in this case + name = editor.primary.getName(); // prefer shorter names by using primary's name in this case } else { name = editor.getName(); } @@ -1775,3 +1776,72 @@ export class NewEditorGroupBelowAction extends BaseCreateEditorGroupAction { super(id, label, GroupDirection.DOWN, editorGroupService); } } + +export class ReopenResourcesAction extends Action { + + static readonly ID = 'workbench.action.reopenWithEditor'; + static readonly LABEL = nls.localize('workbench.action.reopenWithEditor', "Reopen Editor With..."); + + constructor( + id: string, + label: string, + @IQuickInputService private readonly quickInputService: IQuickInputService, + @IEditorService private readonly editorService: IEditorService, + @IConfigurationService private readonly configurationService: IConfigurationService + ) { + super(id, label); + } + + async run(): Promise { + const activeInput = this.editorService.activeEditor; + if (!activeInput) { + return; + } + + const activeEditorPane = this.editorService.activeEditorPane; + if (!activeEditorPane) { + return; + } + + const options = activeEditorPane.options; + const group = activeEditorPane.group; + await openEditorWith(activeInput, undefined, options, group, this.editorService, this.configurationService, this.quickInputService); + } +} + +export class ToggleEditorTypeAction extends Action { + + static readonly ID = 'workbench.action.toggleEditorType'; + static readonly LABEL = nls.localize('workbench.action.toggleEditorType', "Toggle Editor Type"); + + constructor( + id: string, + label: string, + @IEditorService private readonly editorService: IEditorService, + ) { + super(id, label); + } + + async run(): Promise { + const activeEditorPane = this.editorService.activeEditorPane; + if (!activeEditorPane) { + return; + } + + const input = activeEditorPane.input; + if (!input.resource) { + return; + } + + const options = activeEditorPane.options; + const group = activeEditorPane.group; + + const overrides = getAllAvailableEditors(input.resource, options, group, this.editorService); + const firstNonActiveOverride = overrides.find(([_, entry]) => !entry.active); + if (!firstNonActiveOverride) { + return; + } + + await firstNonActiveOverride[0].open(input, { ...options, override: firstNonActiveOverride[1].id }, group, OpenEditorContext.NEW_EDITOR)?.override; + } +} diff --git a/src/vs/workbench/browser/parts/editor/editorControl.ts b/src/vs/workbench/browser/parts/editor/editorControl.ts index d1ee691e00..a1e0ec755b 100644 --- a/src/vs/workbench/browser/parts/editor/editorControl.ts +++ b/src/vs/workbench/browser/parts/editor/editorControl.ts @@ -198,19 +198,19 @@ export class EditorControl extends Disposable { // Stop any running operation this.editorOperation.stop(); - // Remove editor pane from parent and hide - const editorPaneContainer = this._activeEditorPane.getContainer(); - if (editorPaneContainer) { - this._activeEditorPane.onWillHide(); - this.parent.removeChild(editorPaneContainer); - hide(editorPaneContainer); - this._activeEditorPane.onDidHide(); - } - - // Indicate to editor pane + // Indicate to editor pane before removing the editor from + // the DOM to give a chance to persist certain state that + // might depend on still being the active DOM element. this._activeEditorPane.clearInput(); this._activeEditorPane.setVisible(false, this.groupView); + // Remove editor pane from parent + const editorPaneContainer = this._activeEditorPane.getContainer(); + if (editorPaneContainer) { + this.parent.removeChild(editorPaneContainer); + hide(editorPaneContainer); + } + // Clear active editor pane this.doSetActiveEditorPane(null); } diff --git a/src/vs/workbench/browser/parts/editor/editorDropTarget.ts b/src/vs/workbench/browser/parts/editor/editorDropTarget.ts index 067efc57ee..a58d8d45c4 100644 --- a/src/vs/workbench/browser/parts/editor/editorDropTarget.ts +++ b/src/vs/workbench/browser/parts/editor/editorDropTarget.ts @@ -548,8 +548,12 @@ class DropOverlay extends Themable { } } -export interface EditorDropTargetDelegate { - groupContainsPredicate?(groupView: IEditorGroupView): boolean; +export interface IEditorDropTargetDelegate { + + /** + * A helper to figure out if the drop target contains the provided group. + */ + containsGroup?(groupView: IEditorGroupView): boolean; } export class EditorDropTarget extends Themable { @@ -564,7 +568,7 @@ export class EditorDropTarget extends Themable { constructor( private accessor: IEditorGroupsAccessor, private container: HTMLElement, - private readonly delegate: EditorDropTargetDelegate, + private readonly delegate: IEditorDropTargetDelegate, @IThemeService themeService: IThemeService, @IInstantiationService private readonly instantiationService: IInstantiationService ) { @@ -638,7 +642,8 @@ export class EditorDropTarget extends Themable { private findTargetGroupView(child: HTMLElement): IEditorGroupView | undefined { const groups = this.accessor.groups; - return groups.find(groupView => isAncestor(child, groupView.element) || this.delegate.groupContainsPredicate?.(groupView)); + + return groups.find(groupView => isAncestor(child, groupView.element) || this.delegate.containsGroup?.(groupView)); } private updateContainer(isDraggedOver: boolean): void { diff --git a/src/vs/workbench/browser/parts/editor/editorGroupView.ts b/src/vs/workbench/browser/parts/editor/editorGroupView.ts index 4ea7a7d0e7..37f8a065c5 100644 --- a/src/vs/workbench/browser/parts/editor/editorGroupView.ts +++ b/src/vs/workbench/browser/parts/editor/editorGroupView.ts @@ -275,9 +275,9 @@ export class EditorGroupView extends Themable implements IEditorGroupView { })); // Close empty editor group via middle mouse click - this._register(addDisposableListener(this.element, EventType.MOUSE_UP, e => { + this._register(addDisposableListener(this.element, EventType.AUXCLICK, e => { if (this.isEmpty && e.button === 1 /* Middle Button */) { - EventHelper.stop(e); + EventHelper.stop(e, true); this.accessor.removeGroup(this); } @@ -527,7 +527,7 @@ export class EditorGroupView extends Themable implements IEditorGroupView { // Include both sides of side by side editors when being closed if (editor instanceof SideBySideEditorInput) { - editorsToClose.push(editor.master, editor.details); + editorsToClose.push(editor.primary, editor.secondary); } // For each editor to close, we call dispose() to free up any resources. @@ -537,7 +537,7 @@ export class EditorGroupView extends Themable implements IEditorGroupView { for (const editor of editorsToClose) { if (!this.accessor.groups.some(groupView => groupView.group.contains(editor, { strictEquals: true, // only if this input is not shared across editor groups - supportSideBySide: true // include side by side editor master & details + supportSideBySide: true // include side by side editor primary & secondary }))) { editor.dispose(); } @@ -1359,8 +1359,8 @@ export class EditorGroupView extends Themable implements IEditorGroupView { return false; // editor must be dirty and not saving } - if (editor instanceof SideBySideEditorInput && this._group.contains(editor.master)) { - return false; // master-side of editor is still opened somewhere else + if (editor instanceof SideBySideEditorInput && this._group.contains(editor.primary)) { + return false; // primary-side of editor is still opened somewhere else } // Note: we explicitly decide to ask for confirm if closing a normal editor even @@ -1378,8 +1378,8 @@ export class EditorGroupView extends Themable implements IEditorGroupView { return true; // exact editor still opened } - if (editor instanceof SideBySideEditorInput && otherGroup.contains(editor.master)) { - return true; // master side of side by side editor still opened + if (editor instanceof SideBySideEditorInput && otherGroup.contains(editor.primary)) { + return true; // primary side of side by side editor still opened } return false; @@ -1404,7 +1404,7 @@ export class EditorGroupView extends Themable implements IEditorGroupView { let name: string; if (editor instanceof SideBySideEditorInput) { - name = editor.master.getName(); // prefer shorter names by using master's name in this case + name = editor.primary.getName(); // prefer shorter names by using primary's name in this case } else { name = editor.getName(); } diff --git a/src/vs/workbench/browser/parts/editor/editorPart.ts b/src/vs/workbench/browser/parts/editor/editorPart.ts index 719bb02903..469a322065 100644 --- a/src/vs/workbench/browser/parts/editor/editorPart.ts +++ b/src/vs/workbench/browser/parts/editor/editorPart.ts @@ -21,7 +21,8 @@ import { IConfigurationService, IConfigurationChangeEvent } from 'vs/platform/co import { IDisposable, dispose, toDisposable, DisposableStore } from 'vs/base/common/lifecycle'; import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; import { ISerializedEditorGroup, isSerializedEditorGroup } from 'vs/workbench/common/editor/editorGroup'; -import { EditorDropTarget, EditorDropTargetDelegate } from 'vs/workbench/browser/parts/editor/editorDropTarget'; +import { EditorDropTarget, IEditorDropTargetDelegate } from 'vs/workbench/browser/parts/editor/editorDropTarget'; +import { IEditorDropService } from 'vs/workbench/services/editor/browser/editorDropService'; import { Color } from 'vs/base/common/color'; import { CenteredViewLayout } from 'vs/base/browser/ui/centered/centeredViewLayout'; import { onUnexpectedError } from 'vs/base/common/errors'; @@ -80,7 +81,7 @@ class GridWidgetView implements IView { } } -export class EditorPart extends Part implements IEditorGroupsService, IEditorGroupsAccessor { +export class EditorPart extends Part implements IEditorGroupsService, IEditorGroupsAccessor, IEditorDropService { declare readonly _serviceBrand: undefined; @@ -780,6 +781,14 @@ export class EditorPart extends Part implements IEditorGroupsService, IEditorGro //#endregion + //#region IEditorDropService + + createEditorDropTarget(container: HTMLElement, delegate: IEditorDropTargetDelegate): IDisposable { + return this.instantiationService.createInstance(EditorDropTarget, this, container, delegate); + } + + //#endregion + //#region Part // TODO @sbatten @joao find something better to prevent editor taking over #79897 @@ -820,7 +829,7 @@ export class EditorPart extends Part implements IEditorGroupsService, IEditorGro this.centeredLayoutWidget = this._register(new CenteredViewLayout(this.container, this.gridWidgetView, this.globalMemento[EditorPart.EDITOR_PART_CENTERED_VIEW_STORAGE_KEY])); // Drop support - this._register(this.createEditorDropTarget(this.container, {})); + this._register(this.createEditorDropTarget(this.container, Object.create(null))); // No drop in the editor const overlay = document.createElement('div'); @@ -1097,16 +1106,24 @@ export class EditorPart extends Part implements IEditorGroupsService, IEditorGro } // Persist centered view state - const centeredLayoutState = this.centeredLayoutWidget.state; - if (this.centeredLayoutWidget.isDefault(centeredLayoutState)) { - delete this.globalMemento[EditorPart.EDITOR_PART_CENTERED_VIEW_STORAGE_KEY]; - } else { - this.globalMemento[EditorPart.EDITOR_PART_CENTERED_VIEW_STORAGE_KEY] = centeredLayoutState; + if (this.centeredLayoutWidget) { + const centeredLayoutState = this.centeredLayoutWidget.state; + if (this.centeredLayoutWidget.isDefault(centeredLayoutState)) { + delete this.globalMemento[EditorPart.EDITOR_PART_CENTERED_VIEW_STORAGE_KEY]; + } else { + this.globalMemento[EditorPart.EDITOR_PART_CENTERED_VIEW_STORAGE_KEY] = centeredLayoutState; + } } super.saveState(); } + toJSON(): object { + return { + type: Parts.EDITOR_PART + }; + } + dispose(): void { // Forward to all groups @@ -1122,20 +1139,18 @@ export class EditorPart extends Part implements IEditorGroupsService, IEditorGro } //#endregion +} - toJSON(): object { - return { - type: Parts.EDITOR_PART - }; +class EditorDropService implements IEditorDropService { + + declare readonly _serviceBrand: undefined; + + constructor(@IEditorGroupsService private readonly editorPart: EditorPart) { } + + createEditorDropTarget(container: HTMLElement, delegate: IEditorDropTargetDelegate): IDisposable { + return this.editorPart.createEditorDropTarget(container, delegate); } - - //#region TODO@matt this should move into some kind of service - - createEditorDropTarget(container: HTMLElement, delegate: EditorDropTargetDelegate): IDisposable { - return this.instantiationService.createInstance(EditorDropTarget, this, container, delegate); - } - - //#endregion } registerSingleton(IEditorGroupsService, EditorPart); +registerSingleton(IEditorDropService, EditorDropService); diff --git a/src/vs/workbench/browser/parts/editor/editorQuickAccess.ts b/src/vs/workbench/browser/parts/editor/editorQuickAccess.ts index f7c4dff003..51ab8ba8d6 100644 --- a/src/vs/workbench/browser/parts/editor/editorQuickAccess.ts +++ b/src/vs/workbench/browser/parts/editor/editorQuickAccess.ts @@ -137,7 +137,7 @@ export abstract class BaseEditorQuickAccessProvider extends PickerQuickAccessPro } return this.doGetEditors().map(({ editor, groupId }): IEditorQuickPickItem => { - const resource = toResource(editor, { supportSideBySide: SideBySideEditor.MASTER }); + const resource = toResource(editor, { supportSideBySide: SideBySideEditor.PRIMARY }); const isDirty = editor.isDirty() && !editor.isSaving(); const description = editor.getDescription(); const nameAndDescription = description ? `${editor.getName()} ${description}` : editor.getName(); diff --git a/src/vs/workbench/browser/parts/editor/editorStatus.ts b/src/vs/workbench/browser/parts/editor/editorStatus.ts index d569f2a81a..698ad21982 100644 --- a/src/vs/workbench/browser/parts/editor/editorStatus.ts +++ b/src/vs/workbench/browser/parts/editor/editorStatus.ts @@ -57,22 +57,22 @@ import { themeColorFromId } from 'vs/platform/theme/common/themeService'; import { setMode } from 'sql/workbench/browser/parts/editor/editorStatusModeSelect'; // {{SQL CARBON EDIT}} class SideBySideEditorEncodingSupport implements IEncodingSupport { - constructor(private master: IEncodingSupport, private details: IEncodingSupport) { } + constructor(private primary: IEncodingSupport, private secondary: IEncodingSupport) { } getEncoding(): string | undefined { - return this.master.getEncoding(); // always report from modified (right hand) side + return this.primary.getEncoding(); // always report from modified (right hand) side } setEncoding(encoding: string, mode: EncodingMode): void { - [this.master, this.details].forEach(editor => editor.setEncoding(encoding, mode)); + [this.primary, this.secondary].forEach(editor => editor.setEncoding(encoding, mode)); } } class SideBySideEditorModeSupport implements IModeSupport { - constructor(private master: IModeSupport, private details: IModeSupport) { } + constructor(private primary: IModeSupport, private secondary: IModeSupport) { } setMode(mode: string): void { - [this.master, this.details].forEach(editor => editor.setMode(mode)); + [this.primary, this.secondary].forEach(editor => editor.setMode(mode)); } } @@ -85,14 +85,14 @@ function toEditorWithEncodingSupport(input: IEditorInput): IEncodingSupport | nu // Side by Side (diff) Editor if (input instanceof SideBySideEditorInput) { - const masterEncodingSupport = toEditorWithEncodingSupport(input.master); - const detailsEncodingSupport = toEditorWithEncodingSupport(input.details); + const primaryEncodingSupport = toEditorWithEncodingSupport(input.primary); + const secondaryEncodingSupport = toEditorWithEncodingSupport(input.secondary); - if (masterEncodingSupport && detailsEncodingSupport) { - return new SideBySideEditorEncodingSupport(masterEncodingSupport, detailsEncodingSupport); + if (primaryEncodingSupport && secondaryEncodingSupport) { + return new SideBySideEditorEncodingSupport(primaryEncodingSupport, secondaryEncodingSupport); } - return masterEncodingSupport; + return primaryEncodingSupport; } // File or Resource Editor @@ -114,14 +114,14 @@ function toEditorWithModeSupport(input: IEditorInput): IModeSupport | null { // Side by Side (diff) Editor if (input instanceof SideBySideEditorInput) { - const masterModeSupport = toEditorWithModeSupport(input.master); - const detailsModeSupport = toEditorWithModeSupport(input.details); + const primaryModeSupport = toEditorWithModeSupport(input.primary); + const secondaryModeSupport = toEditorWithModeSupport(input.secondary); - if (masterModeSupport && detailsModeSupport) { - return new SideBySideEditorModeSupport(masterModeSupport, detailsModeSupport); + if (primaryModeSupport && secondaryModeSupport) { + return new SideBySideEditorModeSupport(primaryModeSupport, secondaryModeSupport); } - return masterModeSupport; + return primaryModeSupport; } // File or Resource Editor @@ -688,14 +688,14 @@ export class EditorStatus extends Disposable implements IWorkbenchContribution { else if (activeEditorPane instanceof BaseBinaryResourceEditor || activeEditorPane instanceof BinaryResourceDiffEditor) { const binaryEditors: BaseBinaryResourceEditor[] = []; if (activeEditorPane instanceof BinaryResourceDiffEditor) { - const details = activeEditorPane.getDetailsEditorPane(); - if (details instanceof BaseBinaryResourceEditor) { - binaryEditors.push(details); + const primary = activeEditorPane.getPrimaryEditorPane(); + if (primary instanceof BaseBinaryResourceEditor) { + binaryEditors.push(primary); } - const master = activeEditorPane.getMasterEditorPane(); - if (master instanceof BaseBinaryResourceEditor) { - binaryEditors.push(master); + const secondary = activeEditorPane.getSecondaryEditorPane(); + if (secondary instanceof BaseBinaryResourceEditor) { + binaryEditors.push(secondary); } } else { binaryEditors.push(activeEditorPane); @@ -874,7 +874,7 @@ export class EditorStatus extends Disposable implements IWorkbenchContribution { private onResourceEncodingChange(resource: URI): void { const activeEditorPane = this.editorService.activeEditorPane; if (activeEditorPane) { - const activeResource = toResource(activeEditorPane.input, { supportSideBySide: SideBySideEditor.MASTER }); + const activeResource = toResource(activeEditorPane.input, { supportSideBySide: SideBySideEditor.PRIMARY }); if (activeResource && isEqual(activeResource, resource)) { const activeCodeEditor = withNullAsUndefined(getCodeEditor(activeEditorPane.getControl())); @@ -1067,7 +1067,7 @@ export class ChangeModeAction extends Action { } const textModel = activeTextEditorControl.getModel(); - const resource = this.editorService.activeEditor ? toResource(this.editorService.activeEditor, { supportSideBySide: SideBySideEditor.MASTER }) : null; + const resource = this.editorService.activeEditor ? toResource(this.editorService.activeEditor, { supportSideBySide: SideBySideEditor.PRIMARY }) : null; let hasLanguageSupport = !!resource; if (resource?.scheme === Schemas.untitled && !this.textFileService.untitled.get(resource)?.hasAssociatedFilePath) { @@ -1164,7 +1164,7 @@ export class ChangeModeAction extends Action { let languageSelection: ILanguageSelection | undefined; if (pick === autoDetectMode) { if (textModel) { - const resource = toResource(activeEditor, { supportSideBySide: SideBySideEditor.MASTER }); + const resource = toResource(activeEditor, { supportSideBySide: SideBySideEditor.PRIMARY }); if (resource) { languageSelection = this.modeService.createByFilepathOrFirstLine(resource, textModel.getLineContent(1)); } @@ -1359,7 +1359,7 @@ export class ChangeEncodingAction extends Action { await timeout(50); // quick input is sensitive to being opened so soon after another - const resource = toResource(activeEditorPane.input, { supportSideBySide: SideBySideEditor.MASTER }); + const resource = toResource(activeEditorPane.input, { supportSideBySide: SideBySideEditor.PRIMARY }); if (!resource || (!this.fileService.canHandleResource(resource) && resource.scheme !== Schemas.untitled)) { return; // encoding detection only possible for resources the file service can handle or that are untitled } diff --git a/src/vs/workbench/browser/parts/editor/editorsObserver.ts b/src/vs/workbench/browser/parts/editor/editorsObserver.ts index a03127155c..5ad244d536 100644 --- a/src/vs/workbench/browser/parts/editor/editorsObserver.ts +++ b/src/vs/workbench/browser/parts/editor/editorsObserver.ts @@ -185,7 +185,7 @@ export class EditorsObserver extends Disposable { } private updateEditorResourcesMap(editor: IEditorInput, add: boolean): void { - const resource = toResource(editor, { supportSideBySide: SideBySideEditor.MASTER }); + const resource = toResource(editor, { supportSideBySide: SideBySideEditor.PRIMARY }); if (!resource) { return; // require a resource } diff --git a/src/vs/workbench/browser/parts/editor/media/titlecontrol.css b/src/vs/workbench/browser/parts/editor/media/titlecontrol.css index 9ce2526d6b..68990c3c84 100644 --- a/src/vs/workbench/browser/parts/editor/media/titlecontrol.css +++ b/src/vs/workbench/browser/parts/editor/media/titlecontrol.css @@ -28,7 +28,7 @@ /* Title Actions */ -.monaco-workbench .part.editor > .content .editor-group-container > .title .title-actions .action-label, +.monaco-workbench .part.editor > .content .editor-group-container > .title .title-actions .action-label:not(span), .monaco-workbench .part.editor > .content .editor-group-container > .title .editor-actions .action-label:not(span) { display: flex; height: 35px; diff --git a/src/vs/workbench/browser/parts/editor/noTabsTitleControl.ts b/src/vs/workbench/browser/parts/editor/noTabsTitleControl.ts index edcbc7f457..dc674e38e3 100644 --- a/src/vs/workbench/browser/parts/editor/noTabsTitleControl.ts +++ b/src/vs/workbench/browser/parts/editor/noTabsTitleControl.ts @@ -67,10 +67,10 @@ export class NoTabsTitleControl extends TitleControl { this._register(addDisposableListener(titleContainer, EventType.DBLCLICK, (e: MouseEvent) => this.onTitleDoubleClick(e))); // Detect mouse click - this._register(addDisposableListener(titleContainer, EventType.MOUSE_UP, (e: MouseEvent) => this.onTitleClick(e))); + this._register(addDisposableListener(titleContainer, EventType.AUXCLICK, (e: MouseEvent) => this.onTitleAuxClick(e))); // Detect touch - this._register(addDisposableListener(titleContainer, TouchEventType.Tap, (e: GestureEvent) => this.onTitleClick(e))); + this._register(addDisposableListener(titleContainer, TouchEventType.Tap, (e: GestureEvent) => this.onTitleTap(e))); // Context Menu this._register(addDisposableListener(titleContainer, EventType.CONTEXT_MENU, (e: Event) => { @@ -98,25 +98,21 @@ export class NoTabsTitleControl extends TitleControl { this.group.pinEditor(); } - private onTitleClick(e: MouseEvent | GestureEvent): void { - if (e instanceof MouseEvent) { - // Close editor on middle mouse click - if (e.button === 1 /* Middle Button */) { - EventHelper.stop(e, true /* for https://github.com/Microsoft/vscode/issues/56715 */); + private onTitleAuxClick(e: MouseEvent): void { + if (e.button === 1 /* Middle Button */ && this.group.activeEditor) { + EventHelper.stop(e, true /* for https://github.com/Microsoft/vscode/issues/56715 */); - if (this.group.activeEditor) { - this.group.closeEditor(this.group.activeEditor); - } - } - } else { - // TODO@rebornix - // gesture tap should open the quick access - // editorGroupView will focus on the editor again when there are mouse/pointer/touch down events - // we need to wait a bit as `GesureEvent.Tap` is generated from `touchstart` and then `touchend` evnets, which are not an atom event. - setTimeout(() => this.quickInputService.quickAccess.show(), 50); + this.group.closeEditor(this.group.activeEditor); } } + private onTitleTap(e: GestureEvent): void { + // TODO@rebornix gesture tap should open the quick access + // editorGroupView will focus on the editor again when there are mouse/pointer/touch down events + // we need to wait a bit as `GesureEvent.Tap` is generated from `touchstart` and then `touchend` evnets, which are not an atom event. + setTimeout(() => this.quickInputService.quickAccess.show(), 50); + } + getPreferredHeight(): number { return EDITOR_TITLE_HEIGHT; } diff --git a/src/vs/workbench/browser/parts/editor/sideBySideEditor.ts b/src/vs/workbench/browser/parts/editor/sideBySideEditor.ts index 63c78c1b45..5a74c1a900 100644 --- a/src/vs/workbench/browser/parts/editor/sideBySideEditor.ts +++ b/src/vs/workbench/browser/parts/editor/sideBySideEditor.ts @@ -22,17 +22,16 @@ import { assertIsDefined } from 'vs/base/common/types'; export class SideBySideEditor extends BaseEditor { static readonly ID: string = 'workbench.editor.sidebysideEditor'; - static MASTER: SideBySideEditor | undefined; - get minimumMasterWidth() { return this.masterEditorPane ? this.masterEditorPane.minimumWidth : 0; } - get maximumMasterWidth() { return this.masterEditorPane ? this.masterEditorPane.maximumWidth : Number.POSITIVE_INFINITY; } - get minimumMasterHeight() { return this.masterEditorPane ? this.masterEditorPane.minimumHeight : 0; } - get maximumMasterHeight() { return this.masterEditorPane ? this.masterEditorPane.maximumHeight : Number.POSITIVE_INFINITY; } + private get minimumPrimaryWidth() { return this.primaryEditorPane ? this.primaryEditorPane.minimumWidth : 0; } + private get maximumPrimaryWidth() { return this.primaryEditorPane ? this.primaryEditorPane.maximumWidth : Number.POSITIVE_INFINITY; } + private get minimumPrimaryHeight() { return this.primaryEditorPane ? this.primaryEditorPane.minimumHeight : 0; } + private get maximumPrimaryHeight() { return this.primaryEditorPane ? this.primaryEditorPane.maximumHeight : Number.POSITIVE_INFINITY; } - get minimumDetailsWidth() { return this.detailsEditorPane ? this.detailsEditorPane.minimumWidth : 0; } - get maximumDetailsWidth() { return this.detailsEditorPane ? this.detailsEditorPane.maximumWidth : Number.POSITIVE_INFINITY; } - get minimumDetailsHeight() { return this.detailsEditorPane ? this.detailsEditorPane.minimumHeight : 0; } - get maximumDetailsHeight() { return this.detailsEditorPane ? this.detailsEditorPane.maximumHeight : Number.POSITIVE_INFINITY; } + private get minimumSecondaryWidth() { return this.secondaryEditorPane ? this.secondaryEditorPane.minimumWidth : 0; } + private get maximumSecondaryWidth() { return this.secondaryEditorPane ? this.secondaryEditorPane.maximumWidth : Number.POSITIVE_INFINITY; } + private get minimumSecondaryHeight() { return this.secondaryEditorPane ? this.secondaryEditorPane.minimumHeight : 0; } + private get maximumSecondaryHeight() { return this.secondaryEditorPane ? this.secondaryEditorPane.maximumHeight : Number.POSITIVE_INFINITY; } // these setters need to exist because this extends from BaseEditor set minimumWidth(value: number) { /* noop */ } @@ -40,16 +39,16 @@ export class SideBySideEditor extends BaseEditor { set minimumHeight(value: number) { /* noop */ } set maximumHeight(value: number) { /* noop */ } - get minimumWidth() { return this.minimumMasterWidth + this.minimumDetailsWidth; } - get maximumWidth() { return this.maximumMasterWidth + this.maximumDetailsWidth; } - get minimumHeight() { return this.minimumMasterHeight + this.minimumDetailsHeight; } - get maximumHeight() { return this.maximumMasterHeight + this.maximumDetailsHeight; } + get minimumWidth() { return this.minimumPrimaryWidth + this.minimumSecondaryWidth; } + get maximumWidth() { return this.maximumPrimaryWidth + this.maximumSecondaryWidth; } + get minimumHeight() { return this.minimumPrimaryHeight + this.minimumSecondaryHeight; } + get maximumHeight() { return this.maximumPrimaryHeight + this.maximumSecondaryHeight; } - protected masterEditorPane?: BaseEditor; - protected detailsEditorPane?: BaseEditor; + protected primaryEditorPane?: BaseEditor; + protected secondaryEditorPane?: BaseEditor; - private masterEditorContainer: HTMLElement | undefined; - private detailsEditorContainer: HTMLElement | undefined; + private primaryEditorContainer: HTMLElement | undefined; + private secondaryEditorContainer: HTMLElement | undefined; private splitview: SplitView | undefined; private dimension: DOM.Dimension = new DOM.Dimension(0, 0); @@ -74,19 +73,19 @@ export class SideBySideEditor extends BaseEditor { const splitview = this.splitview = this._register(new SplitView(parent, { orientation: Orientation.HORIZONTAL })); this._register(this.splitview.onDidSashReset(() => splitview.distributeViewSizes())); - this.detailsEditorContainer = DOM.$('.details-editor-container'); + this.secondaryEditorContainer = DOM.$('.secondary-editor-container'); this.splitview.addView({ - element: this.detailsEditorContainer, - layout: size => this.detailsEditorPane && this.detailsEditorPane.layout(new DOM.Dimension(size, this.dimension.height)), + element: this.secondaryEditorContainer, + layout: size => this.secondaryEditorPane && this.secondaryEditorPane.layout(new DOM.Dimension(size, this.dimension.height)), minimumSize: 220, maximumSize: Number.POSITIVE_INFINITY, onDidChange: Event.None }, Sizing.Distribute); - this.masterEditorContainer = DOM.$('.master-editor-container'); + this.primaryEditorContainer = DOM.$('.primary-editor-container'); this.splitview.addView({ - element: this.masterEditorContainer, - layout: size => this.masterEditorPane && this.masterEditorPane.layout(new DOM.Dimension(size, this.dimension.height)), + element: this.primaryEditorContainer, + layout: size => this.primaryEditorPane && this.primaryEditorPane.layout(new DOM.Dimension(size, this.dimension.height)), minimumSize: 220, maximumSize: Number.POSITIVE_INFINITY, onDidChange: Event.None @@ -103,30 +102,30 @@ export class SideBySideEditor extends BaseEditor { } setOptions(options: EditorOptions | undefined): void { - if (this.masterEditorPane) { - this.masterEditorPane.setOptions(options); + if (this.primaryEditorPane) { + this.primaryEditorPane.setOptions(options); } } protected setEditorVisible(visible: boolean, group: IEditorGroup | undefined): void { - if (this.masterEditorPane) { - this.masterEditorPane.setVisible(visible, group); + if (this.primaryEditorPane) { + this.primaryEditorPane.setVisible(visible, group); } - if (this.detailsEditorPane) { - this.detailsEditorPane.setVisible(visible, group); + if (this.secondaryEditorPane) { + this.secondaryEditorPane.setVisible(visible, group); } super.setEditorVisible(visible, group); } clearInput(): void { - if (this.masterEditorPane) { - this.masterEditorPane.clearInput(); + if (this.primaryEditorPane) { + this.primaryEditorPane.clearInput(); } - if (this.detailsEditorPane) { - this.detailsEditorPane.clearInput(); + if (this.secondaryEditorPane) { + this.secondaryEditorPane.clearInput(); } this.disposeEditors(); @@ -135,8 +134,8 @@ export class SideBySideEditor extends BaseEditor { } focus(): void { - if (this.masterEditorPane) { - this.masterEditorPane.focus(); + if (this.primaryEditorPane) { + this.primaryEditorPane.focus(); } } @@ -148,19 +147,19 @@ export class SideBySideEditor extends BaseEditor { } getControl(): IEditorControl | undefined { - if (this.masterEditorPane) { - return this.masterEditorPane.getControl(); + if (this.primaryEditorPane) { + return this.primaryEditorPane.getControl(); } return undefined; } - getMasterEditorPane(): IEditorPane | undefined { - return this.masterEditorPane; + getPrimaryEditorPane(): IEditorPane | undefined { + return this.primaryEditorPane; } - getDetailsEditorPane(): IEditorPane | undefined { - return this.detailsEditorPane; + getSecondaryEditorPane(): IEditorPane | undefined { + return this.secondaryEditorPane; } private async updateInput(oldInput: SideBySideEditorInput, newInput: SideBySideEditorInput, options: EditorOptions | undefined, token: CancellationToken): Promise { @@ -172,21 +171,21 @@ export class SideBySideEditor extends BaseEditor { return this.setNewInput(newInput, options, token); } - if (!this.detailsEditorPane || !this.masterEditorPane) { + if (!this.secondaryEditorPane || !this.primaryEditorPane) { return; } await Promise.all([ - this.detailsEditorPane.setInput(newInput.details, undefined, token), - this.masterEditorPane.setInput(newInput.master, options, token) + this.secondaryEditorPane.setInput(newInput.secondary, undefined, token), + this.primaryEditorPane.setInput(newInput.primary, options, token) ]); } private setNewInput(newInput: SideBySideEditorInput, options: EditorOptions | undefined, token: CancellationToken): Promise { - const detailsEditor = this.doCreateEditor(newInput.details, assertIsDefined(this.detailsEditorContainer)); - const masterEditor = this.doCreateEditor(newInput.master, assertIsDefined(this.masterEditorContainer)); + const secondaryEditor = this.doCreateEditor(newInput.secondary, assertIsDefined(this.secondaryEditorContainer)); + const primaryEditor = this.doCreateEditor(newInput.primary, assertIsDefined(this.primaryEditorContainer)); - return this.onEditorsCreated(detailsEditor, masterEditor, newInput.details, newInput.master, options, token); + return this.onEditorsCreated(secondaryEditor, primaryEditor, newInput.secondary, newInput.primary, options, token); } private doCreateEditor(editorInput: EditorInput, container: HTMLElement): BaseEditor { @@ -202,48 +201,48 @@ export class SideBySideEditor extends BaseEditor { return editor; } - private async onEditorsCreated(details: BaseEditor, master: BaseEditor, detailsInput: EditorInput, masterInput: EditorInput, options: EditorOptions | undefined, token: CancellationToken): Promise { - this.detailsEditorPane = details; - this.masterEditorPane = master; + private async onEditorsCreated(secondary: BaseEditor, primary: BaseEditor, secondaryInput: EditorInput, primaryInput: EditorInput, options: EditorOptions | undefined, token: CancellationToken): Promise { + this.secondaryEditorPane = secondary; + this.primaryEditorPane = primary; this._onDidSizeConstraintsChange.input = Event.any( - Event.map(details.onDidSizeConstraintsChange, () => undefined), - Event.map(master.onDidSizeConstraintsChange, () => undefined) + Event.map(secondary.onDidSizeConstraintsChange, () => undefined), + Event.map(primary.onDidSizeConstraintsChange, () => undefined) ); this.onDidCreateEditors.fire(undefined); await Promise.all([ - this.detailsEditorPane.setInput(detailsInput, undefined, token), - this.masterEditorPane.setInput(masterInput, options, token)] + this.secondaryEditorPane.setInput(secondaryInput, undefined, token), + this.primaryEditorPane.setInput(primaryInput, options, token)] ); } updateStyles(): void { super.updateStyles(); - if (this.masterEditorContainer) { - this.masterEditorContainer.style.boxShadow = `-6px 0 5px -5px ${this.getColor(scrollbarShadow)}`; + if (this.primaryEditorContainer) { + this.primaryEditorContainer.style.boxShadow = `-6px 0 5px -5px ${this.getColor(scrollbarShadow)}`; } } private disposeEditors(): void { - if (this.detailsEditorPane) { - this.detailsEditorPane.dispose(); - this.detailsEditorPane = undefined; + if (this.secondaryEditorPane) { + this.secondaryEditorPane.dispose(); + this.secondaryEditorPane = undefined; } - if (this.masterEditorPane) { - this.masterEditorPane.dispose(); - this.masterEditorPane = undefined; + if (this.primaryEditorPane) { + this.primaryEditorPane.dispose(); + this.primaryEditorPane = undefined; } - if (this.detailsEditorContainer) { - DOM.clearNode(this.detailsEditorContainer); + if (this.secondaryEditorContainer) { + DOM.clearNode(this.secondaryEditorContainer); } - if (this.masterEditorContainer) { - DOM.clearNode(this.masterEditorContainer); + if (this.primaryEditorContainer) { + DOM.clearNode(this.primaryEditorContainer); } } diff --git a/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts b/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts index 4f2255eaad..e62a1882db 100644 --- a/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts +++ b/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts @@ -605,7 +605,7 @@ export class TabsTitleControl extends TitleControl { const disposables = new DisposableStore(); const handleClickOrTouch = (e: MouseEvent | GestureEvent): void => { - tab.blur(); + tab.blur(); // prevent flicker of focus outline on tab until editor got focus if (e instanceof MouseEvent && e.button !== 0) { if (e.button === 1) { @@ -646,14 +646,17 @@ export class TabsTitleControl extends TitleControl { tabsScrollbar.setScrollPosition({ scrollLeft: tabsScrollbar.getScrollPosition().scrollLeft - e.translationX }); })); - // Close on mouse middle click + // Prevent flicker of focus outline on tab until editor got focus disposables.add(addDisposableListener(tab, EventType.MOUSE_UP, (e: MouseEvent) => { EventHelper.stop(e); tab.blur(); + })); + // Close on mouse middle click + disposables.add(addDisposableListener(tab, EventType.AUXCLICK, (e: MouseEvent) => { if (e.button === 1 /* Middle Button*/) { - e.stopPropagation(); // for https://github.com/Microsoft/vscode/issues/56715 + EventHelper.stop(e, true /* for https://github.com/Microsoft/vscode/issues/56715 */); this.blockRevealActiveTabOnce(); this.closeOneEditorAction.run({ groupId: this.group.id, editorIndex: index }); @@ -1100,7 +1103,7 @@ export class TabsTitleControl extends TitleControl { this.setEditorTabColor(editor, tabContainer, this.group.isActive(editor)); // {{SQL CARBON EDIT}} -- Display the editor's tab color // Tests helper - const resource = toResource(editor, { supportSideBySide: SideBySideEditor.MASTER }); + const resource = toResource(editor, { supportSideBySide: SideBySideEditor.PRIMARY }); if (resource) { tabContainer.setAttribute('data-resource-name', basenameOrAuthority(resource)); } else { diff --git a/src/vs/workbench/browser/parts/editor/titleControl.ts b/src/vs/workbench/browser/parts/editor/titleControl.ts index b087da6e63..7daedc4a94 100644 --- a/src/vs/workbench/browser/parts/editor/titleControl.ts +++ b/src/vs/workbench/browser/parts/editor/titleControl.ts @@ -192,7 +192,7 @@ export abstract class TitleControl extends Themable { secondaryEditorActions.some(action => action instanceof ExecuteCommandAction) // see also https://github.com/Microsoft/vscode/issues/16298 ) { const editorActionsToolbar = assertIsDefined(this.editorActionsToolbar); - editorActionsToolbar.setActions(primaryEditorActions, secondaryEditorActions)(); + editorActionsToolbar.setActions(primaryEditorActions, secondaryEditorActions); this.currentPrimaryEditorActionIds = primaryEditorActionIds; this.currentSecondaryEditorActionIds = secondaryEditorActionIds; @@ -224,7 +224,7 @@ export abstract class TitleControl extends Themable { this.editorToolBarMenuDisposables.clear(); // Update contexts - this.resourceContext.set(this.group.activeEditor ? withUndefinedAsNull(toResource(this.group.activeEditor, { supportSideBySide: SideBySideEditor.MASTER })) : null); + this.resourceContext.set(this.group.activeEditor ? withUndefinedAsNull(toResource(this.group.activeEditor, { supportSideBySide: SideBySideEditor.PRIMARY })) : null); this.editorPinnedContext.set(this.group.activeEditor ? this.group.isPinned(this.group.activeEditor) : false); this.editorStickyContext.set(this.group.activeEditor ? this.group.isSticky(this.group.activeEditor) : false); @@ -239,7 +239,7 @@ export abstract class TitleControl extends Themable { this.updateEditorActionsToolbar(); // Update editor toolbar whenever contributed actions change })); - this.editorToolBarMenuDisposables.add(createAndFillInActionBarActions(titleBarMenu, { arg: this.resourceContext.get(), shouldForwardArgs: true }, { primary, secondary })); + this.editorToolBarMenuDisposables.add(createAndFillInActionBarActions(titleBarMenu, { arg: this.resourceContext.get(), shouldForwardArgs: true }, { primary, secondary }, (group: string) => group === 'navigation' || group === '1_run')); } return { primary, secondary }; @@ -247,7 +247,7 @@ export abstract class TitleControl extends Themable { protected clearEditorActionsToolbar(): void { if (this.editorActionsToolbar) { - this.editorActionsToolbar.setActions([], [])(); + this.editorActionsToolbar.setActions([], []); } this.currentPrimaryEditorActionIds = []; @@ -299,7 +299,7 @@ export abstract class TitleControl extends Themable { } protected doFillResourceDataTransfers(editor: IEditorInput, e: DragEvent): boolean { - const resource = toResource(editor, { supportSideBySide: SideBySideEditor.MASTER }); + const resource = toResource(editor, { supportSideBySide: SideBySideEditor.PRIMARY }); if (!resource) { return false; } @@ -327,7 +327,7 @@ export abstract class TitleControl extends Themable { // Update contexts based on editor picked and remember previous to restore const currentResourceContext = this.resourceContext.get(); - this.resourceContext.set(withUndefinedAsNull(toResource(editor, { supportSideBySide: SideBySideEditor.MASTER }))); + this.resourceContext.set(withUndefinedAsNull(toResource(editor, { supportSideBySide: SideBySideEditor.PRIMARY }))); const currentPinnedContext = !!this.editorPinnedContext.get(); this.editorPinnedContext.set(this.group.isPinned(editor)); const currentStickyContext = !!this.editorStickyContext.get(); diff --git a/src/vs/workbench/browser/parts/notifications/notificationsStatus.ts b/src/vs/workbench/browser/parts/notifications/notificationsStatus.ts index ec9db4060f..7c4458f852 100644 --- a/src/vs/workbench/browser/parts/notifications/notificationsStatus.ts +++ b/src/vs/workbench/browser/parts/notifications/notificationsStatus.ts @@ -109,18 +109,18 @@ export class NotificationsStatus extends Disposable { return localize('oneNotification', "1 New Notification"); } - return localize('notifications', "{0} New Notifications", this.newNotificationsCount); + return localize({ key: 'notifications', comment: ['{0} will be replaced by a number'] }, "{0} New Notifications", this.newNotificationsCount); } if (this.newNotificationsCount === 0) { - return localize('noNotificationsWithProgress', "No New Notifications ({0} in progress)", notificationsInProgress); + return localize({ key: 'noNotificationsWithProgress', comment: ['{0} will be replaced by a number'] }, "No New Notifications ({0} in progress)", notificationsInProgress); } if (this.newNotificationsCount === 1) { - return localize('oneNotificationWithProgress', "1 New Notification ({0} in progress)", notificationsInProgress); + return localize({ key: 'oneNotificationWithProgress', comment: ['{0} will be replaced by a number'] }, "1 New Notification ({0} in progress)", notificationsInProgress); } - return localize('notificationsWithProgress', "{0} New Notifications ({0} in progress)", this.newNotificationsCount, notificationsInProgress); + return localize({ key: 'notificationsWithProgress', comment: ['{0} and {1} will be replaced by a number'] }, "{0} New Notifications ({1} in progress)", this.newNotificationsCount, notificationsInProgress); } update(isCenterVisible: boolean, isToastsVisible: boolean): void { diff --git a/src/vs/workbench/browser/parts/notifications/notificationsViewer.ts b/src/vs/workbench/browser/parts/notifications/notificationsViewer.ts index d072ae339c..5d1c14c453 100644 --- a/src/vs/workbench/browser/parts/notifications/notificationsViewer.ts +++ b/src/vs/workbench/browser/parts/notifications/notificationsViewer.ts @@ -307,9 +307,9 @@ export class NotificationTemplateRenderer extends Disposable { // Container toggleClass(this.template.container, 'expanded', notification.expanded); - this.inputDisposables.add(addDisposableListener(this.template.container, EventType.MOUSE_UP, e => { + this.inputDisposables.add(addDisposableListener(this.template.container, EventType.AUXCLICK, e => { if (!notification.hasProgress && e.button === 1 /* Middle Button */) { - EventHelper.stop(e); + EventHelper.stop(e, true); notification.close(); } diff --git a/src/vs/workbench/browser/parts/panel/media/panelpart.css b/src/vs/workbench/browser/parts/panel/media/panelpart.css index 504ffc8cd8..d888e31c76 100644 --- a/src/vs/workbench/browser/parts/panel/media/panelpart.css +++ b/src/vs/workbench/browser/parts/panel/media/panelpart.css @@ -173,19 +173,6 @@ box-sizing: border-box; } -/** Actions */ - -.monaco-workbench .panel .monaco-action-bar .action-item.select-container { - cursor: default; -} - -.monaco-workbench .panel .monaco-action-bar .action-item .monaco-select-box { - cursor: pointer; - min-width: 110px; - min-height: 18px; - padding: 2px 23px 2px 8px; -} - /* Rotate icons when panel is on right */ .monaco-workbench .part.panel.right .title-actions .codicon-split-horizontal, .monaco-workbench .part.panel.right .title-actions .codicon-panel-maximize, diff --git a/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts b/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts index 60b73f6047..d202b9f1ed 100644 --- a/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts +++ b/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts @@ -271,7 +271,7 @@ export class TitlebarPart extends Part implements ITitleService { if (this.contextService.getWorkbenchState() === WorkbenchState.FOLDER) { folder = workspace.folders[0]; } else { - const resource = toResource(editor, { supportSideBySide: SideBySideEditor.MASTER }); + const resource = toResource(editor, { supportSideBySide: SideBySideEditor.PRIMARY }); if (resource) { folder = this.contextService.getWorkspaceFolder(resource); } diff --git a/src/vs/workbench/browser/parts/views/treeView.ts b/src/vs/workbench/browser/parts/views/treeView.ts index d4c0814adb..7f1b33a45d 100644 --- a/src/vs/workbench/browser/parts/views/treeView.ts +++ b/src/vs/workbench/browser/parts/views/treeView.ts @@ -3,44 +3,18 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import 'vs/css!./media/views'; -import { Event, Emitter } from 'vs/base/common/event'; -import { IDisposable, Disposable, toDisposable } from 'vs/base/common/lifecycle'; +import { toDisposable } from 'vs/base/common/lifecycle'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; -import { IAction, ActionRunner } from 'vs/base/common/actions'; import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; -import { IMenuService, MenuId, MenuItemAction, registerAction2, Action2 } from 'vs/platform/actions/common/actions'; -import { ContextAwareMenuEntryActionViewItem, createAndFillInContextMenuActions } from 'vs/platform/actions/browser/menuEntryActionViewItem'; -import { IContextKeyService, ContextKeyExpr, ContextKeyEqualsExpr, RawContextKey, IContextKey } from 'vs/platform/contextkey/common/contextkey'; -import { ITreeView, ITreeItem, TreeItemCollapsibleState, ITreeViewDataProvider, TreeViewItemHandleArg, ITreeViewDescriptor, IViewsRegistry, ITreeItemLabel, Extensions, IViewDescriptorService, ViewContainer, ViewContainerLocation } from 'vs/workbench/common/views'; +import { MenuId } from 'vs/platform/actions/common/actions'; +import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; +import { ITreeView, ITreeViewDescriptor, IViewsRegistry, Extensions, IViewDescriptorService } from 'vs/workbench/common/views'; import { IViewletViewOptions } from 'vs/workbench/browser/parts/views/viewsViewlet'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; -import { INotificationService } from 'vs/platform/notification/common/notification'; -import { IProgressService } from 'vs/platform/progress/common/progress'; -import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; -import { ICommandService } from 'vs/platform/commands/common/commands'; -import * as DOM from 'vs/base/browser/dom'; -import { ResourceLabels, IResourceLabel } from 'vs/workbench/browser/labels'; -import { ActionBar, IActionViewItemProvider, ActionViewItem } from 'vs/base/browser/ui/actionbar/actionbar'; -import { URI } from 'vs/base/common/uri'; -import { dirname, basename } from 'vs/base/common/resources'; -import { LIGHT, FileThemeIcon, FolderThemeIcon, registerThemingParticipant, ThemeIcon, IThemeService } from 'vs/platform/theme/common/themeService'; -import { FileKind } from 'vs/platform/files/common/files'; -import { WorkbenchAsyncDataTree } from 'vs/platform/list/browser/listService'; +import { IThemeService } from 'vs/platform/theme/common/themeService'; import { ViewPane, IViewPaneOptions } from 'vs/workbench/browser/parts/views/viewPaneContainer'; -import { localize } from 'vs/nls'; -import { timeout } from 'vs/base/common/async'; -import { textLinkForeground, textCodeBlockBackground, focusBorder, listFilterMatchHighlight, listFilterMatchHighlightBorder } from 'vs/platform/theme/common/colorRegistry'; -import { isString } from 'vs/base/common/types'; -import { ILabelService } from 'vs/platform/label/common/label'; import { Registry } from 'vs/platform/registry/common/platform'; -import { IListVirtualDelegate, IIdentityProvider } from 'vs/base/browser/ui/list/list'; -import { ITreeRenderer, ITreeNode, IAsyncDataSource, ITreeContextMenuEvent } from 'vs/base/browser/ui/tree/tree'; -import { FuzzyScore, createMatches } from 'vs/base/common/filters'; -import { CollapseAllAction } from 'vs/base/browser/ui/tree/treeDefaults'; -import { isFalsyOrWhitespace } from 'vs/base/common/strings'; -import { SIDE_BAR_BACKGROUND, PANEL_BACKGROUND } from 'vs/workbench/common/theme'; import { IOpenerService } from 'vs/platform/opener/common/opener'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; @@ -81,10 +55,7 @@ export class TreeViewPane extends ViewPane { renderBody(container: HTMLElement): void { super.renderBody(container); - - if (this.treeView instanceof TreeView) { - this.treeView.show(container); - } + this.treeView.show(container); } shouldShowWelcome(): boolean { @@ -104,935 +75,3 @@ export class TreeViewPane extends ViewPane { this.treeView.setVisibility(this.isBodyVisible()); } } - -class Root implements ITreeItem { - label = { label: 'root' }; - handle = '0'; - parentHandle: string | undefined = undefined; - collapsibleState = TreeItemCollapsibleState.Expanded; - children: ITreeItem[] | undefined = undefined; -} - -const noDataProviderMessage = localize('no-dataprovider', "There is no data provider registered that can provide view data."); - -class Tree extends WorkbenchAsyncDataTree { } - -export class TreeView extends Disposable implements ITreeView { - - private isVisible: boolean = false; - private _hasIconForParentNode = false; - private _hasIconForLeafNode = false; - - private readonly collapseAllContextKey: RawContextKey; - private readonly collapseAllContext: IContextKey; - private readonly refreshContextKey: RawContextKey; - private readonly refreshContext: IContextKey; - - private focused: boolean = false; - private domNode!: HTMLElement; - private treeContainer!: HTMLElement; - private _messageValue: string | undefined; - private _canSelectMany: boolean = false; - private messageElement!: HTMLDivElement; - private tree: Tree | undefined; - private treeLabels: ResourceLabels | undefined; - - private root: ITreeItem; - private elementsToRefresh: ITreeItem[] = []; - - private readonly _onDidExpandItem: Emitter = this._register(new Emitter()); - readonly onDidExpandItem: Event = this._onDidExpandItem.event; - - private readonly _onDidCollapseItem: Emitter = this._register(new Emitter()); - readonly onDidCollapseItem: Event = this._onDidCollapseItem.event; - - private _onDidChangeSelection: Emitter = this._register(new Emitter()); - readonly onDidChangeSelection: Event = this._onDidChangeSelection.event; - - private readonly _onDidChangeVisibility: Emitter = this._register(new Emitter()); - readonly onDidChangeVisibility: Event = this._onDidChangeVisibility.event; - - private readonly _onDidChangeActions: Emitter = this._register(new Emitter()); - readonly onDidChangeActions: Event = this._onDidChangeActions.event; - - private readonly _onDidChangeWelcomeState: Emitter = this._register(new Emitter()); - readonly onDidChangeWelcomeState: Event = this._onDidChangeWelcomeState.event; - - private readonly _onDidChangeTitle: Emitter = this._register(new Emitter()); - readonly onDidChangeTitle: Event = this._onDidChangeTitle.event; - - private readonly _onDidCompleteRefresh: Emitter = this._register(new Emitter()); - - constructor( - readonly id: string, - private _title: string, - @IThemeService private readonly themeService: IThemeService, - @IInstantiationService private readonly instantiationService: IInstantiationService, - @ICommandService private readonly commandService: ICommandService, - @IConfigurationService private readonly configurationService: IConfigurationService, - @IProgressService protected readonly progressService: IProgressService, - @IContextMenuService private readonly contextMenuService: IContextMenuService, - @IKeybindingService private readonly keybindingService: IKeybindingService, - @INotificationService private readonly notificationService: INotificationService, - @IViewDescriptorService private readonly viewDescriptorService: IViewDescriptorService, - @IContextKeyService contextKeyService: IContextKeyService - ) { - super(); - this.root = new Root(); - this.collapseAllContextKey = new RawContextKey(`treeView.${this.id}.enableCollapseAll`, false); - this.collapseAllContext = this.collapseAllContextKey.bindTo(contextKeyService); - this.refreshContextKey = new RawContextKey(`treeView.${this.id}.enableRefresh`, false); - this.refreshContext = this.refreshContextKey.bindTo(contextKeyService); - - this._register(this.themeService.onDidFileIconThemeChange(() => this.doRefresh([this.root]) /** soft refresh **/)); - this._register(this.themeService.onDidColorThemeChange(() => this.doRefresh([this.root]) /** soft refresh **/)); - this._register(this.configurationService.onDidChangeConfiguration(e => { - if (e.affectsConfiguration('explorer.decorations')) { - this.doRefresh([this.root]); /** soft refresh **/ - } - })); - this._register(this.viewDescriptorService.onDidChangeLocation(({ views, from, to }) => { - if (views.some(v => v.id === this.id)) { - this.tree?.updateOptions({ overrideStyles: { listBackground: this.viewLocation === ViewContainerLocation.Sidebar ? SIDE_BAR_BACKGROUND : PANEL_BACKGROUND } }); - } - })); - this.registerActions(); - - this.create(); - } - - get viewContainer(): ViewContainer { - return this.viewDescriptorService.getViewContainerByViewId(this.id)!; - } - - get viewLocation(): ViewContainerLocation { - return this.viewDescriptorService.getViewLocationById(this.id)!; - } - - private _dataProvider: ITreeViewDataProvider | undefined; - get dataProvider(): ITreeViewDataProvider | undefined { - return this._dataProvider; - } - - set dataProvider(dataProvider: ITreeViewDataProvider | undefined) { - if (this.tree === undefined) { - this.createTree(); - } - - if (dataProvider) { - this._dataProvider = new class implements ITreeViewDataProvider { - private _isEmpty: boolean = true; - private _onDidChangeEmpty: Emitter = new Emitter(); - public onDidChangeEmpty: Event = this._onDidChangeEmpty.event; - - get isTreeEmpty(): boolean { - return this._isEmpty; - } - - async getChildren(node: ITreeItem): Promise { - let children: ITreeItem[]; - if (node && node.children) { - children = node.children; - } else { - children = await (node instanceof Root ? dataProvider.getChildren() : dataProvider.getChildren(node)); - node.children = children; - } - if (node instanceof Root) { - const oldEmpty = this._isEmpty; - this._isEmpty = children.length === 0; - if (oldEmpty !== this._isEmpty) { - this._onDidChangeEmpty.fire(); - } - } - return children; - } - }; - if (this._dataProvider.onDidChangeEmpty) { - this._register(this._dataProvider.onDidChangeEmpty(() => this._onDidChangeWelcomeState.fire())); - } - this.updateMessage(); - this.refresh(); - } else { - this._dataProvider = undefined; - this.updateMessage(); - } - - this._onDidChangeWelcomeState.fire(); - } - - private _message: string | undefined; - get message(): string | undefined { - return this._message; - } - - set message(message: string | undefined) { - this._message = message; - this.updateMessage(); - this._onDidChangeWelcomeState.fire(); - } - - get title(): string { - return this._title; - } - - set title(name: string) { - this._title = name; - this._onDidChangeTitle.fire(this._title); - } - - get canSelectMany(): boolean { - return this._canSelectMany; - } - - set canSelectMany(canSelectMany: boolean) { - this._canSelectMany = canSelectMany; - } - - get hasIconForParentNode(): boolean { - return this._hasIconForParentNode; - } - - get hasIconForLeafNode(): boolean { - return this._hasIconForLeafNode; - } - - get visible(): boolean { - return this.isVisible; - } - - get showCollapseAllAction(): boolean { - return !!this.collapseAllContext.get(); - } - - set showCollapseAllAction(showCollapseAllAction: boolean) { - this.collapseAllContext.set(showCollapseAllAction); - } - - get showRefreshAction(): boolean { - return !!this.refreshContext.get(); - } - - set showRefreshAction(showRefreshAction: boolean) { - this.refreshContext.set(showRefreshAction); - } - - private registerActions() { - const that = this; - this._register(registerAction2(class extends Action2 { - constructor() { - super({ - id: `workbench.actions.treeView.${that.id}.refresh`, - title: localize('refresh', "Refresh"), - menu: { - id: MenuId.ViewTitle, - when: ContextKeyExpr.and(ContextKeyEqualsExpr.create('view', that.id), that.refreshContextKey), - group: 'navigation', - order: Number.MAX_SAFE_INTEGER - 1, - }, - icon: { id: 'codicon/refresh' } - }); - } - async run(): Promise { - return that.refresh(); - } - })); - this._register(registerAction2(class extends Action2 { - constructor() { - super({ - id: `workbench.actions.treeView.${that.id}.collapseAll`, - title: localize('collapseAll', "Collapse All"), - menu: { - id: MenuId.ViewTitle, - when: ContextKeyExpr.and(ContextKeyEqualsExpr.create('view', that.id), that.collapseAllContextKey), - group: 'navigation', - order: Number.MAX_SAFE_INTEGER, - }, - icon: { id: 'codicon/collapse-all' } - }); - } - async run(): Promise { - if (that.tree) { - return new CollapseAllAction(that.tree, true).run(); - } - } - })); - } - - setVisibility(isVisible: boolean): void { - isVisible = !!isVisible; - if (this.isVisible === isVisible) { - return; - } - - this.isVisible = isVisible; - - if (this.tree) { - if (this.isVisible) { - DOM.show(this.tree.getHTMLElement()); - } else { - DOM.hide(this.tree.getHTMLElement()); // make sure the tree goes out of the tabindex world by hiding it - } - - if (this.isVisible && this.elementsToRefresh.length) { - this.doRefresh(this.elementsToRefresh); - this.elementsToRefresh = []; - } - } - - this._onDidChangeVisibility.fire(this.isVisible); - } - - focus(reveal: boolean = true): void { - if (this.tree && this.root.children && this.root.children.length > 0) { - // Make sure the current selected element is revealed - const selectedElement = this.tree.getSelection()[0]; - if (selectedElement && reveal) { - this.tree.reveal(selectedElement, 0.5); - } - - // Pass Focus to Viewer - this.tree.domFocus(); - } else if (this.tree) { - this.tree.domFocus(); - } else { - this.domNode.focus(); - } - } - - show(container: HTMLElement): void { - DOM.append(container, this.domNode); - } - - private create() { - this.domNode = DOM.$('.tree-explorer-viewlet-tree-view'); - this.messageElement = DOM.append(this.domNode, DOM.$('.message')); - this.treeContainer = DOM.append(this.domNode, DOM.$('.customview-tree')); - DOM.addClass(this.treeContainer, 'file-icon-themable-tree'); - DOM.addClass(this.treeContainer, 'show-file-icons'); - const focusTracker = this._register(DOM.trackFocus(this.domNode)); - this._register(focusTracker.onDidFocus(() => this.focused = true)); - this._register(focusTracker.onDidBlur(() => this.focused = false)); - } - - private createTree() { - const actionViewItemProvider = (action: IAction) => action instanceof MenuItemAction ? this.instantiationService.createInstance(ContextAwareMenuEntryActionViewItem, action) : undefined; - const treeMenus = this._register(this.instantiationService.createInstance(TreeMenus, this.id)); - this.treeLabels = this._register(this.instantiationService.createInstance(ResourceLabels, this)); - const dataSource = this.instantiationService.createInstance(TreeDataSource, this, (task: Promise) => this.progressService.withProgress({ location: this.id }, () => task)); - const aligner = new Aligner(this.themeService); - const renderer = this.instantiationService.createInstance(TreeRenderer, this.id, treeMenus, this.treeLabels, actionViewItemProvider, aligner); - const widgetAriaLabel = this._title; - - this.tree = this._register(this.instantiationService.createInstance(Tree, this.id, this.treeContainer, new TreeViewDelegate(), [renderer], - dataSource, { - identityProvider: new TreeViewIdentityProvider(), - accessibilityProvider: { - getAriaLabel(element: ITreeItem): string { - if (element.accessibilityInformation) { - return element.accessibilityInformation.label; - } - - return element.tooltip ? element.tooltip : element.label ? element.label.label : ''; - }, - getRole(element: ITreeItem): string | undefined { - return element.accessibilityInformation?.role ?? 'treeitem'; - }, - getWidgetAriaLabel(): string { - return widgetAriaLabel; - } - }, - keyboardNavigationLabelProvider: { - getKeyboardNavigationLabel: (item: ITreeItem) => { - return item.label ? item.label.label : (item.resourceUri ? basename(URI.revive(item.resourceUri)) : undefined); - } - }, - expandOnlyOnTwistieClick: (e: ITreeItem) => !!e.command, - collapseByDefault: (e: ITreeItem): boolean => { - return e.collapsibleState !== TreeItemCollapsibleState.Expanded; - }, - multipleSelectionSupport: this.canSelectMany, - overrideStyles: { - listBackground: this.viewLocation === ViewContainerLocation.Sidebar ? SIDE_BAR_BACKGROUND : PANEL_BACKGROUND - } - }) as WorkbenchAsyncDataTree); - aligner.tree = this.tree; - const actionRunner = new MultipleSelectionActionRunner(this.notificationService, () => this.tree!.getSelection()); - renderer.actionRunner = actionRunner; - - this.tree.contextKeyService.createKey(this.id, true); - this._register(this.tree.onContextMenu(e => this.onContextMenu(treeMenus, e, actionRunner))); - this._register(this.tree.onDidChangeSelection(e => this._onDidChangeSelection.fire(e.elements))); - this._register(this.tree.onDidChangeCollapseState(e => { - if (!e.node.element) { - return; - } - - const element: ITreeItem = Array.isArray(e.node.element.element) ? e.node.element.element[0] : e.node.element.element; - if (e.node.collapsed) { - this._onDidCollapseItem.fire(element); - } else { - this._onDidExpandItem.fire(element); - } - })); - this.tree.setInput(this.root).then(() => this.updateContentAreas()); - - this._register(this.tree.onDidOpen(e => { - if (!e.browserEvent) { - return; - } - const selection = this.tree!.getSelection(); - if ((selection.length === 1) && selection[0].command) { - this.commandService.executeCommand(selection[0].command.id, ...(selection[0].command.arguments || [])); - } - })); - } - - private onContextMenu(treeMenus: TreeMenus, treeEvent: ITreeContextMenuEvent, actionRunner: MultipleSelectionActionRunner): void { - const node: ITreeItem | null = treeEvent.element; - if (node === null) { - return; - } - const event: UIEvent = treeEvent.browserEvent; - - event.preventDefault(); - event.stopPropagation(); - - this.tree!.setFocus([node]); - const actions = treeMenus.getResourceContextActions(node); - if (!actions.length) { - return; - } - this.contextMenuService.showContextMenu({ - getAnchor: () => treeEvent.anchor, - - getActions: () => actions, - - getActionViewItem: (action) => { - const keybinding = this.keybindingService.lookupKeybinding(action.id); - if (keybinding) { - return new ActionViewItem(action, action, { label: true, keybinding: keybinding.getLabel() }); - } - return undefined; - }, - - onHide: (wasCancelled?: boolean) => { - if (wasCancelled) { - this.tree!.domFocus(); - } - }, - - getActionsContext: () => ({ $treeViewId: this.id, $treeItemHandle: node.handle }), - - actionRunner - }); - } - - protected updateMessage(): void { - if (this._message) { - this.showMessage(this._message); - } else if (!this.dataProvider) { - this.showMessage(noDataProviderMessage); - } else { - this.hideMessage(); - } - this.updateContentAreas(); - } - - private showMessage(message: string): void { - DOM.removeClass(this.messageElement, 'hide'); - this.resetMessageElement(); - this._messageValue = message; - if (!isFalsyOrWhitespace(this._message)) { - this.messageElement.textContent = this._messageValue; - } - this.layout(this._height, this._width); - } - - private hideMessage(): void { - this.resetMessageElement(); - DOM.addClass(this.messageElement, 'hide'); - this.layout(this._height, this._width); - } - - private resetMessageElement(): void { - DOM.clearNode(this.messageElement); - } - - private _height: number = 0; - private _width: number = 0; - layout(height: number, width: number) { - if (height && width) { - this._height = height; - this._width = width; - const treeHeight = height - DOM.getTotalHeight(this.messageElement); - this.treeContainer.style.height = treeHeight + 'px'; - if (this.tree) { - this.tree.layout(treeHeight, width); - } - } - } - - getOptimalWidth(): number { - if (this.tree) { - const parentNode = this.tree.getHTMLElement(); - const childNodes = ([] as HTMLElement[]).slice.call(parentNode.querySelectorAll('.outline-item-label > a')); - return DOM.getLargestChildWidth(parentNode, childNodes); - } - return 0; - } - - async refresh(elements?: ITreeItem[]): Promise { - if (this.dataProvider && this.tree) { - if (this.refreshing) { - await Event.toPromise(this._onDidCompleteRefresh.event); - } - if (!elements) { - elements = [this.root]; - // remove all waiting elements to refresh if root is asked to refresh - this.elementsToRefresh = []; - } - for (const element of elements) { - element.children = undefined; // reset children - } - if (this.isVisible) { - return this.doRefresh(elements); - } else { - if (this.elementsToRefresh.length) { - const seen: Set = new Set(); - this.elementsToRefresh.forEach(element => seen.add(element.handle)); - for (const element of elements) { - if (!seen.has(element.handle)) { - this.elementsToRefresh.push(element); - } - } - } else { - this.elementsToRefresh.push(...elements); - } - } - } - return undefined; - } - - async expand(itemOrItems: ITreeItem | ITreeItem[]): Promise { - const tree = this.tree; - if (tree) { - itemOrItems = Array.isArray(itemOrItems) ? itemOrItems : [itemOrItems]; - await Promise.all(itemOrItems.map(element => { - return tree.expand(element, false); - })); - } - } - - setSelection(items: ITreeItem[]): void { - if (this.tree) { - this.tree.setSelection(items); - } - } - - setFocus(item: ITreeItem): void { - if (this.tree) { - this.focus(); - this.tree.setFocus([item]); - } - } - - async reveal(item: ITreeItem): Promise { - if (this.tree) { - return this.tree.reveal(item); - } - } - - private refreshing: boolean = false; - private async doRefresh(elements: ITreeItem[]): Promise { - const tree = this.tree; - if (tree && this.visible) { - this.refreshing = true; - await Promise.all(elements.map(element => tree.updateChildren(element, true, true))); - this.refreshing = false; - this._onDidCompleteRefresh.fire(); - this.updateContentAreas(); - if (this.focused) { - this.focus(false); - } - } - } - - private updateContentAreas(): void { - const isTreeEmpty = !this.root.children || this.root.children.length === 0; - // Hide tree container only when there is a message and tree is empty and not refreshing - if (this._messageValue && isTreeEmpty && !this.refreshing) { - DOM.addClass(this.treeContainer, 'hide'); - this.domNode.setAttribute('tabindex', '0'); - } else { - DOM.removeClass(this.treeContainer, 'hide'); - this.domNode.removeAttribute('tabindex'); - } - } -} - -class TreeViewIdentityProvider implements IIdentityProvider { - getId(element: ITreeItem): { toString(): string; } { - return element.handle; - } -} - -class TreeViewDelegate implements IListVirtualDelegate { - - getHeight(element: ITreeItem): number { - return TreeRenderer.ITEM_HEIGHT; - } - - getTemplateId(element: ITreeItem): string { - return TreeRenderer.TREE_TEMPLATE_ID; - } -} - -class TreeDataSource implements IAsyncDataSource { - - constructor( - private treeView: ITreeView, - private withProgress: (task: Promise) => Promise - ) { - } - - hasChildren(element: ITreeItem): boolean { - return !!this.treeView.dataProvider && (element.collapsibleState !== TreeItemCollapsibleState.None); - } - - async getChildren(element: ITreeItem): Promise { - if (this.treeView.dataProvider) { - return this.withProgress(this.treeView.dataProvider.getChildren(element)); - } - return []; - } -} - -// todo@joh,sandy make this proper and contributable from extensions -registerThemingParticipant((theme, collector) => { - - const matchBackgroundColor = theme.getColor(listFilterMatchHighlight); - if (matchBackgroundColor) { - collector.addRule(`.file-icon-themable-tree .monaco-list-row .content .monaco-highlighted-label .highlight { color: unset !important; background-color: ${matchBackgroundColor}; }`); - collector.addRule(`.monaco-tl-contents .monaco-highlighted-label .highlight { color: unset !important; background-color: ${matchBackgroundColor}; }`); - } - const matchBorderColor = theme.getColor(listFilterMatchHighlightBorder); - if (matchBorderColor) { - collector.addRule(`.file-icon-themable-tree .monaco-list-row .content .monaco-highlighted-label .highlight { color: unset !important; border: 1px dotted ${matchBorderColor}; box-sizing: border-box; }`); - collector.addRule(`.monaco-tl-contents .monaco-highlighted-label .highlight { color: unset !important; border: 1px dotted ${matchBorderColor}; box-sizing: border-box; }`); - } - const link = theme.getColor(textLinkForeground); - if (link) { - collector.addRule(`.tree-explorer-viewlet-tree-view > .message a { color: ${link}; }`); - } - const focusBorderColor = theme.getColor(focusBorder); - if (focusBorderColor) { - collector.addRule(`.tree-explorer-viewlet-tree-view > .message a:focus { outline: 1px solid ${focusBorderColor}; outline-offset: -1px; }`); - } - const codeBackground = theme.getColor(textCodeBlockBackground); - if (codeBackground) { - collector.addRule(`.tree-explorer-viewlet-tree-view > .message code { background-color: ${codeBackground}; }`); - } -}); - -interface ITreeExplorerTemplateData { - elementDisposable: IDisposable; - container: HTMLElement; - resourceLabel: IResourceLabel; - icon: HTMLElement; - actionBar: ActionBar; -} - -class TreeRenderer extends Disposable implements ITreeRenderer { - static readonly ITEM_HEIGHT = 22; - static readonly TREE_TEMPLATE_ID = 'treeExplorer'; - - private _actionRunner: MultipleSelectionActionRunner | undefined; - - constructor( - private treeViewId: string, - private menus: TreeMenus, - private labels: ResourceLabels, - private actionViewItemProvider: IActionViewItemProvider, - private aligner: Aligner, - @IThemeService private readonly themeService: IThemeService, - @IConfigurationService private readonly configurationService: IConfigurationService, - @ILabelService private readonly labelService: ILabelService - ) { - super(); - } - - get templateId(): string { - return TreeRenderer.TREE_TEMPLATE_ID; - } - - set actionRunner(actionRunner: MultipleSelectionActionRunner) { - this._actionRunner = actionRunner; - } - - renderTemplate(container: HTMLElement): ITreeExplorerTemplateData { - DOM.addClass(container, 'custom-view-tree-node-item'); - - const icon = DOM.append(container, DOM.$('.custom-view-tree-node-item-icon')); - - const resourceLabel = this.labels.create(container, { supportHighlights: true }); - const actionsContainer = DOM.append(resourceLabel.element, DOM.$('.actions')); - const actionBar = new ActionBar(actionsContainer, { - actionViewItemProvider: this.actionViewItemProvider - }); - - return { resourceLabel, icon, actionBar, container, elementDisposable: Disposable.None }; - } - - renderElement(element: ITreeNode, index: number, templateData: ITreeExplorerTemplateData): void { - templateData.elementDisposable.dispose(); - const node = element.element; - const resource = node.resourceUri ? URI.revive(node.resourceUri) : null; - const treeItemLabel: ITreeItemLabel | undefined = node.label ? node.label : resource ? { label: basename(resource) } : undefined; - const description = isString(node.description) ? node.description : resource && node.description === true ? this.labelService.getUriLabel(dirname(resource), { relative: true }) : undefined; - const label = treeItemLabel ? treeItemLabel.label : undefined; - const matches = (treeItemLabel && treeItemLabel.highlights && label) ? treeItemLabel.highlights.map(([start, end]) => { - if (start < 0) { - start = label.length + start; - } - if (end < 0) { - end = label.length + end; - } - if ((start >= label.length) || (end > label.length)) { - return ({ start: 0, end: 0 }); - } - if (start > end) { - const swap = start; - start = end; - end = swap; - } - return ({ start, end }); - }) : undefined; - const icon = this.themeService.getColorTheme().type === LIGHT ? node.icon : node.iconDark; - const iconUrl = icon ? URI.revive(icon) : null; - const title = node.tooltip ? node.tooltip : resource ? undefined : label; - - // reset - templateData.actionBar.clear(); - - if (resource || this.isFileKindThemeIcon(node.themeIcon)) { - const fileDecorations = this.configurationService.getValue<{ colors: boolean, badges: boolean }>('explorer.decorations'); - templateData.resourceLabel.setResource({ name: label, description, resource: resource ? resource : URI.parse('missing:_icon_resource') }, { fileKind: this.getFileKind(node), title, hideIcon: !!iconUrl, fileDecorations, extraClasses: ['custom-view-tree-node-item-resourceLabel'], matches: matches ? matches : createMatches(element.filterData) }); - } else { - templateData.resourceLabel.setResource({ name: label, description }, { title, hideIcon: true, extraClasses: ['custom-view-tree-node-item-resourceLabel'], matches: matches ? matches : createMatches(element.filterData) }); - } - - templateData.icon.title = title ? title : ''; - - if (iconUrl) { - templateData.icon.className = 'custom-view-tree-node-item-icon'; - templateData.icon.style.backgroundImage = DOM.asCSSUrl(iconUrl); - - } else { - let iconClass: string | undefined; - if (node.themeIcon && !this.isFileKindThemeIcon(node.themeIcon)) { - iconClass = ThemeIcon.asClassName(node.themeIcon); - } - templateData.icon.className = iconClass ? `custom-view-tree-node-item-icon ${iconClass}` : ''; - templateData.icon.style.backgroundImage = ''; - } - - templateData.actionBar.context = { $treeViewId: this.treeViewId, $treeItemHandle: node.handle }; - templateData.actionBar.push(this.menus.getResourceActions(node), { icon: true, label: false }); - if (this._actionRunner) { - templateData.actionBar.actionRunner = this._actionRunner; - } - this.setAlignment(templateData.container, node); - templateData.elementDisposable = (this.themeService.onDidFileIconThemeChange(() => this.setAlignment(templateData.container, node))); - } - - private setAlignment(container: HTMLElement, treeItem: ITreeItem) { - DOM.toggleClass(container.parentElement!, 'align-icon-with-twisty', this.aligner.alignIconWithTwisty(treeItem)); - } - - private isFileKindThemeIcon(icon: ThemeIcon | undefined): boolean { - if (icon) { - return icon.id === FileThemeIcon.id || icon.id === FolderThemeIcon.id; - } else { - return false; - } - } - - private getFileKind(node: ITreeItem): FileKind { - if (node.themeIcon) { - switch (node.themeIcon.id) { - case FileThemeIcon.id: - return FileKind.FILE; - case FolderThemeIcon.id: - return FileKind.FOLDER; - } - } - return node.collapsibleState === TreeItemCollapsibleState.Collapsed || node.collapsibleState === TreeItemCollapsibleState.Expanded ? FileKind.FOLDER : FileKind.FILE; - } - - disposeElement(resource: ITreeNode, index: number, templateData: ITreeExplorerTemplateData): void { - templateData.elementDisposable.dispose(); - } - - disposeTemplate(templateData: ITreeExplorerTemplateData): void { - templateData.resourceLabel.dispose(); - templateData.actionBar.dispose(); - templateData.elementDisposable.dispose(); - } -} - -class Aligner extends Disposable { - private _tree: WorkbenchAsyncDataTree | undefined; - - constructor(private themeService: IThemeService) { - super(); - } - - set tree(tree: WorkbenchAsyncDataTree) { - this._tree = tree; - } - - public alignIconWithTwisty(treeItem: ITreeItem): boolean { - if (treeItem.collapsibleState !== TreeItemCollapsibleState.None) { - return false; - } - if (!this.hasIcon(treeItem)) { - return false; - } - - if (this._tree) { - const parent: ITreeItem = this._tree.getParentElement(treeItem) || this._tree.getInput(); - if (this.hasIcon(parent)) { - return false; - } - return !!parent.children && parent.children.every(c => c.collapsibleState === TreeItemCollapsibleState.None || !this.hasIcon(c)); - } else { - return false; - } - } - - private hasIcon(node: ITreeItem): boolean { - const icon = this.themeService.getColorTheme().type === LIGHT ? node.icon : node.iconDark; - if (icon) { - return true; - } - if (node.resourceUri || node.themeIcon) { - const fileIconTheme = this.themeService.getFileIconTheme(); - const isFolder = node.themeIcon ? node.themeIcon.id === FolderThemeIcon.id : node.collapsibleState !== TreeItemCollapsibleState.None; - if (isFolder) { - return fileIconTheme.hasFileIcons && fileIconTheme.hasFolderIcons; - } - return fileIconTheme.hasFileIcons; - } - return false; - } -} - -class MultipleSelectionActionRunner extends ActionRunner { - - constructor(notificationService: INotificationService, private getSelectedResources: (() => ITreeItem[])) { - super(); - this._register(this.onDidRun(e => { - if (e.error) { - notificationService.error(localize('command-error', 'Error running command {1}: {0}. This is likely caused by the extension that contributes {1}.', e.error.message, e.action.id)); - } - })); - } - - runAction(action: IAction, context: TreeViewItemHandleArg): Promise { - const selection = this.getSelectedResources(); - let selectionHandleArgs: TreeViewItemHandleArg[] | undefined = undefined; - let actionInSelected: boolean = false; - if (selection.length > 1) { - selectionHandleArgs = selection.map(selected => { - if (selected.handle === context.$treeItemHandle) { - actionInSelected = true; - } - return { $treeViewId: context.$treeViewId, $treeItemHandle: selected.handle }; - }); - } - - if (!actionInSelected) { - selectionHandleArgs = undefined; - } - - return action.run(...[context, selectionHandleArgs]); - } -} - -class TreeMenus extends Disposable implements IDisposable { - - constructor( - private id: string, - @IContextKeyService private readonly contextKeyService: IContextKeyService, - @IMenuService private readonly menuService: IMenuService, - @IContextMenuService private readonly contextMenuService: IContextMenuService - ) { - super(); - } - - getResourceActions(element: ITreeItem): IAction[] { - return this.getActions(MenuId.ViewItemContext, { key: 'viewItem', value: element.contextValue }).primary; - } - - getResourceContextActions(element: ITreeItem): IAction[] { - return this.getActions(MenuId.ViewItemContext, { key: 'viewItem', value: element.contextValue }).secondary; - } - - private getActions(menuId: MenuId, context: { key: string, value?: string }): { primary: IAction[]; secondary: IAction[]; } { - const contextKeyService = this.contextKeyService.createScoped(); - contextKeyService.createKey('view', this.id); - contextKeyService.createKey(context.key, context.value); - - const menu = this.menuService.createMenu(menuId, contextKeyService); - const primary: IAction[] = []; - const secondary: IAction[] = []; - const result = { primary, secondary }; - createAndFillInContextMenuActions(menu, { shouldForwardArgs: true }, result, this.contextMenuService, g => /^inline/.test(g)); - - menu.dispose(); - contextKeyService.dispose(); - - return result; - } -} - -export class CustomTreeView extends TreeView { - - private activated: boolean = false; - - constructor( - id: string, - title: string, - @IThemeService themeService: IThemeService, - @IInstantiationService instantiationService: IInstantiationService, - @ICommandService commandService: ICommandService, - @IConfigurationService configurationService: IConfigurationService, - @IProgressService progressService: IProgressService, - @IContextMenuService contextMenuService: IContextMenuService, - @IKeybindingService keybindingService: IKeybindingService, - @INotificationService notificationService: INotificationService, - @IViewDescriptorService viewDescriptorService: IViewDescriptorService, - @IContextKeyService contextKeyService: IContextKeyService, - @IExtensionService private readonly extensionService: IExtensionService, - ) { - super(id, title, themeService, instantiationService, commandService, configurationService, progressService, contextMenuService, keybindingService, notificationService, viewDescriptorService, contextKeyService); - } - - setVisibility(isVisible: boolean): void { - super.setVisibility(isVisible); - if (this.visible) { - this.activate(); - } - } - - private activate() { - if (!this.activated) { - this.progressService.withProgress({ location: this.id }, () => this.extensionService.activateByEvent(`onView:${this.id}`)) - .then(() => timeout(2000)) - .then(() => { - this.updateMessage(); - }); - this.activated = true; - } - } -} diff --git a/src/vs/workbench/browser/parts/views/viewPaneContainer.ts b/src/vs/workbench/browser/parts/views/viewPaneContainer.ts index d9d6a41103..a529b74b28 100644 --- a/src/vs/workbench/browser/parts/views/viewPaneContainer.ts +++ b/src/vs/workbench/browser/parts/views/viewPaneContainer.ts @@ -450,7 +450,7 @@ export abstract class ViewPane extends Pane implements IView { private setActions(): void { if (this.toolbar) { - this.toolbar.setActions(prepareActions(this.getActions()), prepareActions(this.getSecondaryActions()))(); + this.toolbar.setActions(prepareActions(this.getActions()), prepareActions(this.getSecondaryActions())); this.toolbar.context = this.getActionsContext(); } } @@ -1040,14 +1040,7 @@ export class ViewPaneContainer extends Component implements IViewPaneContainer { } } - const viewToggleActions = this.viewContainerModel.activeViewDescriptors.map(viewDescriptor => ({ - id: `${viewDescriptor.id}.toggleVisibility`, - label: viewDescriptor.name, - checked: this.viewContainerModel.isVisible(viewDescriptor.id), - enabled: viewDescriptor.canToggleVisibility && (!this.viewContainerModel.isVisible(viewDescriptor.id) || this.viewContainerModel.visibleViewDescriptors.length > 1), - run: () => this.toggleViewVisibility(viewDescriptor.id) - })); - + const viewToggleActions = this.getViewsVisibilityActions(); if (result.length && viewToggleActions.length) { result.push(new Separator()); } @@ -1073,6 +1066,16 @@ export class ViewPaneContainer extends Component implements IViewPaneContainer { return []; } + getViewsVisibilityActions(): IAction[] { + return this.viewContainerModel.activeViewDescriptors.map(viewDescriptor => ({ + id: `${viewDescriptor.id}.toggleVisibility`, + label: viewDescriptor.name, + checked: this.viewContainerModel.isVisible(viewDescriptor.id), + enabled: viewDescriptor.canToggleVisibility && (!this.viewContainerModel.isVisible(viewDescriptor.id) || this.viewContainerModel.visibleViewDescriptors.length > 1), + run: () => this.toggleViewVisibility(viewDescriptor.id) + })); + } + getActionViewItem(action: IAction): IActionViewItem | undefined { if (this.isViewMergedWithContainer()) { return this.paneItems[0].pane.getActionViewItem(action); diff --git a/src/vs/workbench/browser/parts/views/viewsService.ts b/src/vs/workbench/browser/parts/views/viewsService.ts index 510dff3e66..84688f451c 100644 --- a/src/vs/workbench/browser/parts/views/viewsService.ts +++ b/src/vs/workbench/browser/parts/views/viewsService.ts @@ -3,7 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import 'vs/css!./media/views'; import { Disposable, IDisposable, toDisposable, DisposableStore } from 'vs/base/common/lifecycle'; import { IViewDescriptorService, ViewContainer, IViewDescriptor, IView, ViewContainerLocation, IViewsService, IViewPaneContainer, getVisbileViewContextKey } from 'vs/workbench/common/views'; import { Registry } from 'vs/platform/registry/common/platform'; @@ -159,7 +158,7 @@ export class ViewsService extends Disposable implements IViewsService { constructor() { super({ id: viewDescriptor.focusCommand ? viewDescriptor.focusCommand.id : `${viewDescriptor.id}.focus`, - title: { original: `Focus on ${viewDescriptor.name} View`, value: localize('focus view', "Focus on {0} View", viewDescriptor.name) }, + title: { original: `Focus on ${viewDescriptor.name} View`, value: localize({ key: 'focus view', comment: ['{0} indicates the name of the view to be focused.'] }, "Focus on {0} View", viewDescriptor.name) }, category: composite ? composite.name : localize('view category', "View"), menu: [{ id: MenuId.CommandPalette, diff --git a/src/vs/workbench/browser/parts/views/viewsViewlet.ts b/src/vs/workbench/browser/parts/views/viewsViewlet.ts index 42f600d744..1669540188 100644 --- a/src/vs/workbench/browser/parts/views/viewsViewlet.ts +++ b/src/vs/workbench/browser/parts/views/viewsViewlet.ts @@ -139,4 +139,8 @@ export abstract class FilterViewPaneContainer extends ViewPaneContainer { } abstract getTitle(): string; + + getViewsVisibilityActions(): IAction[] { + return []; + } } diff --git a/src/vs/workbench/browser/viewlet.ts b/src/vs/workbench/browser/viewlet.ts index b4c112c895..7466c32a1e 100644 --- a/src/vs/workbench/browser/viewlet.ts +++ b/src/vs/workbench/browser/viewlet.ts @@ -27,6 +27,8 @@ import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { PaneComposite } from 'vs/workbench/browser/panecomposite'; import { Separator } from 'vs/base/browser/ui/actionbar/actionbar'; +import { ContextSubMenu } from 'vs/base/browser/contextmenu'; +import { Event } from 'vs/base/common/event'; export abstract class Viewlet extends PaneComposite implements IViewlet { @@ -43,6 +45,10 @@ export abstract class Viewlet extends PaneComposite implements IViewlet { @IConfigurationService protected configurationService: IConfigurationService ) { super(id, viewPaneContainer, telemetryService, storageService, instantiationService, themeService, contextMenuService, extensionService, contextService); + this._register(Event.any(viewPaneContainer.onDidAddViews, viewPaneContainer.onDidRemoveViews)(() => { + // Update title area since there is no better way to update secondary actions + this.updateTitleArea(); + })); } getContextMenuActions(): IAction[] { @@ -60,6 +66,24 @@ export abstract class Viewlet extends PaneComposite implements IViewlet { run: () => this.layoutService.setSideBarHidden(true) }]; } + + getSecondaryActions(): IAction[] { + const viewSecondaryActions = this.viewPaneContainer.getViewsVisibilityActions(); + const secondaryActions = this.viewPaneContainer.getSecondaryActions(); + if (viewSecondaryActions.length <= 1) { + return secondaryActions; + } + + if (secondaryActions.length === 0) { + return viewSecondaryActions; + } + + return [ + new ContextSubMenu(nls.localize('views', "Views"), viewSecondaryActions), + new Separator(), + ...secondaryActions + ]; + } } /** diff --git a/src/vs/workbench/browser/web.main.ts b/src/vs/workbench/browser/web.main.ts index f511dfed0e..4261e566fe 100644 --- a/src/vs/workbench/browser/web.main.ts +++ b/src/vs/workbench/browser/web.main.ts @@ -19,7 +19,7 @@ import { RemoteAgentService } from 'vs/workbench/services/remote/browser/remoteA import { RemoteAuthorityResolverService } from 'vs/platform/remote/browser/remoteAuthorityResolverService'; import { IRemoteAuthorityResolverService } from 'vs/platform/remote/common/remoteAuthorityResolver'; import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService'; -import { IFileService } from 'vs/platform/files/common/files'; +import { IFileService, IFileSystemProvider } from 'vs/platform/files/common/files'; import { FileService } from 'vs/platform/files/common/fileService'; import { Schemas } from 'vs/base/common/network'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; @@ -43,14 +43,13 @@ import { registerWindowDriver } from 'vs/platform/driver/browser/driver'; import { BufferLogService } from 'vs/platform/log/common/bufferLog'; import { FileLogService } from 'vs/platform/log/common/fileLogService'; import { toLocalISOString } from 'vs/base/common/date'; -import { IndexedDBLogProvider } from 'vs/workbench/services/log/browser/indexedDBLogProvider'; -import { InMemoryLogProvider } from 'vs/workbench/services/log/common/inMemoryLogProvider'; import { isWorkspaceToOpen, isFolderToOpen } from 'vs/platform/windows/common/windows'; import { getWorkspaceIdentifier } from 'vs/workbench/services/workspaces/browser/workspaces'; import { coalesce } from 'vs/base/common/arrays'; import { InMemoryFileSystemProvider } from 'vs/platform/files/common/inMemoryFilesystemProvider'; import { WebResourceIdentityService, IResourceIdentityService } from 'vs/platform/resource/common/resourceIdentityService'; import { ICommandService } from 'vs/platform/commands/common/commands'; +import { IndexedDB, INDEXEDDB_LOGS_OBJECT_STORE, INDEXEDDB_USERDATA_OBJECT_STORE } from 'vs/platform/files/browser/indexedDBFileSystemProvider'; class BrowserMain extends Disposable { @@ -178,7 +177,7 @@ class BrowserMain extends Disposable { // Files const fileService = this._register(new FileService(logService)); serviceCollection.set(IFileService, fileService); - this.registerFileSystemProviders(environmentService, fileService, remoteAgentService, logService, logsPath); + await this.registerFileSystemProviders(environmentService, fileService, remoteAgentService, logService, logsPath); // Long running services (workspace, config, storage) const services = await Promise.all([ @@ -205,24 +204,22 @@ class BrowserMain extends Disposable { return { serviceCollection, logService, storageService: services[1] }; } - private registerFileSystemProviders(environmentService: IWorkbenchEnvironmentService, fileService: IFileService, remoteAgentService: IRemoteAgentService, logService: BufferLogService, logsPath: URI): void { + private async registerFileSystemProviders(environmentService: IWorkbenchEnvironmentService, fileService: IFileService, remoteAgentService: IRemoteAgentService, logService: BufferLogService, logsPath: URI): Promise { + + const indexedDB = new IndexedDB(); // Logger (async () => { - if (browser.isEdge) { - fileService.registerProvider(logsPath.scheme, new InMemoryLogProvider(logsPath.scheme)); + let indexedDBLogProvider: IFileSystemProvider | null = null; + try { + indexedDBLogProvider = await indexedDB.createFileSystemProvider(logsPath.scheme, INDEXEDDB_LOGS_OBJECT_STORE); + } catch (error) { + console.error(error); + } + if (indexedDBLogProvider) { + fileService.registerProvider(logsPath.scheme, indexedDBLogProvider); } else { - try { - const indexedDBLogProvider = new IndexedDBLogProvider(logsPath.scheme); - await indexedDBLogProvider.database; - - fileService.registerProvider(logsPath.scheme, indexedDBLogProvider); - } catch (error) { - logService.info('Error while creating indexedDB log provider. Falling back to in-memory log provider.'); - logService.error(error); - - fileService.registerProvider(logsPath.scheme, new InMemoryLogProvider(logsPath.scheme)); - } + fileService.registerProvider(logsPath.scheme, new InMemoryFileSystemProvider()); } logService.logger = new MultiplexLogService(coalesce([ @@ -250,8 +247,19 @@ class BrowserMain extends Disposable { // User data if (!this.configuration.userDataProvider) { - this.configuration.userDataProvider = this._register(new InMemoryFileSystemProvider()); + let indexedDBUserDataProvider: IFileSystemProvider | null = null; + try { + indexedDBUserDataProvider = await indexedDB.createFileSystemProvider(Schemas.userData, INDEXEDDB_USERDATA_OBJECT_STORE); + } catch (error) { + console.error(error); + } + if (indexedDBUserDataProvider) { + this.configuration.userDataProvider = indexedDBUserDataProvider; + } else { + this.configuration.userDataProvider = new InMemoryFileSystemProvider(); + } } + fileService.registerProvider(Schemas.userData, this.configuration.userDataProvider); } diff --git a/src/vs/workbench/common/editor.ts b/src/vs/workbench/common/editor.ts index ad06cc85cd..51f1663759 100644 --- a/src/vs/workbench/common/editor.ts +++ b/src/vs/workbench/common/editor.ts @@ -649,10 +649,16 @@ export interface IModeSupport { export interface IFileEditorInput extends IEditorInput, IEncodingSupport, IModeSupport { /** - * Gets the resource this editor is about. + * Gets the resource this file input is about. */ readonly resource: URI; + /** + * Gets the label of the editor. In most cases this will + * be identical to the resource. + */ + readonly label: URI; + /** * Sets the preferred label to use for this file input. */ @@ -680,7 +686,7 @@ export interface IFileEditorInput extends IEditorInput, IEncodingSupport, IModeS } /** - * Side by side editor inputs that have a master and details side. + * Side by side editor inputs that have a primary and secondary side. */ export class SideBySideEditorInput extends EditorInput { @@ -689,8 +695,8 @@ export class SideBySideEditorInput extends EditorInput { constructor( protected readonly name: string | undefined, private readonly description: string | undefined, - private readonly _details: EditorInput, - private readonly _master: EditorInput + private readonly _secondary: EditorInput, + private readonly _primary: EditorInput ) { super(); @@ -699,36 +705,36 @@ export class SideBySideEditorInput extends EditorInput { private registerListeners(): void { - // When the details or master input gets disposed, dispose this diff editor input - const onceDetailsDisposed = Event.once(this.details.onDispose); - this._register(onceDetailsDisposed(() => { + // When the primary or secondary input gets disposed, dispose this diff editor input + const onceSecondaryDisposed = Event.once(this.secondary.onDispose); + this._register(onceSecondaryDisposed(() => { if (!this.isDisposed()) { this.dispose(); } })); - const onceMasterDisposed = Event.once(this.master.onDispose); - this._register(onceMasterDisposed(() => { + const oncePrimaryDisposed = Event.once(this.primary.onDispose); + this._register(oncePrimaryDisposed(() => { if (!this.isDisposed()) { this.dispose(); } })); - // Reemit some events from the master side to the outside - this._register(this.master.onDidChangeDirty(() => this._onDidChangeDirty.fire())); - this._register(this.master.onDidChangeLabel(() => this._onDidChangeLabel.fire())); + // Reemit some events from the primary side to the outside + this._register(this.primary.onDidChangeDirty(() => this._onDidChangeDirty.fire())); + this._register(this.primary.onDidChangeLabel(() => this._onDidChangeLabel.fire())); } get resource(): URI | undefined { return undefined; } - get master(): EditorInput { - return this._master; + get primary(): EditorInput { + return this._primary; } - get details(): EditorInput { - return this._details; + get secondary(): EditorInput { + return this._secondary; } getTypeId(): string { @@ -737,7 +743,7 @@ export class SideBySideEditorInput extends EditorInput { getName(): string { if (!this.name) { - return localize('sideBySideLabels', "{0} - {1}", this._details.getName(), this._master.getName()); + return localize('sideBySideLabels', "{0} - {1}", this._secondary.getName(), this._primary.getName()); } return this.name; @@ -748,50 +754,46 @@ export class SideBySideEditorInput extends EditorInput { } isReadonly(): boolean { - return this.master.isReadonly(); + return this.primary.isReadonly(); } isUntitled(): boolean { - return this.master.isUntitled(); + return this.primary.isUntitled(); } isDirty(): boolean { - return this.master.isDirty(); + return this.primary.isDirty(); } isSaving(): boolean { - return this.master.isSaving(); + return this.primary.isSaving(); } save(group: GroupIdentifier, options?: ISaveOptions): Promise { - return this.master.save(group, options); + return this.primary.save(group, options); } saveAs(group: GroupIdentifier, options?: ISaveOptions): Promise { - return this.master.saveAs(group, options); + return this.primary.saveAs(group, options); } revert(group: GroupIdentifier, options?: IRevertOptions): Promise { - return this.master.revert(group, options); + return this.primary.revert(group, options); } getTelemetryDescriptor(): { [key: string]: unknown } { - const descriptor = this.master.getTelemetryDescriptor(); + const descriptor = this.primary.getTelemetryDescriptor(); return Object.assign(descriptor, super.getTelemetryDescriptor()); } matches(otherInput: unknown): boolean { - if (super.matches(otherInput) === true) { + if (otherInput === this) { return true; } - if (otherInput) { - if (!(otherInput instanceof SideBySideEditorInput)) { - return false; - } - - return this.details.matches(otherInput.details) && this.master.matches(otherInput.master); + if (otherInput instanceof SideBySideEditorInput) { + return this.primary.matches(otherInput.primary) && this.secondary.matches(otherInput.secondary); } return false; @@ -1210,8 +1212,8 @@ export interface IEditorPartOptionsChangeEvent { } export enum SideBySideEditor { - MASTER = 1, - DETAILS = 2, + PRIMARY = 1, + SECONDARY = 2, BOTH = 3 } @@ -1221,9 +1223,9 @@ export interface IResourceOptions { } export function toResource(editor: IEditorInput | undefined | null): URI | undefined; -export function toResource(editor: IEditorInput | undefined | null, options: IResourceOptions & { supportSideBySide?: SideBySideEditor.MASTER | SideBySideEditor.DETAILS }): URI | undefined; -export function toResource(editor: IEditorInput | undefined | null, options: IResourceOptions & { supportSideBySide: SideBySideEditor.BOTH }): URI | { master?: URI, detail?: URI } | undefined; -export function toResource(editor: IEditorInput | undefined | null, options?: IResourceOptions): URI | { master?: URI, detail?: URI } | undefined { +export function toResource(editor: IEditorInput | undefined | null, options: IResourceOptions & { supportSideBySide?: SideBySideEditor.PRIMARY | SideBySideEditor.SECONDARY }): URI | undefined; +export function toResource(editor: IEditorInput | undefined | null, options: IResourceOptions & { supportSideBySide: SideBySideEditor.BOTH }): URI | { primary?: URI, secondary?: URI } | undefined; +export function toResource(editor: IEditorInput | undefined | null, options?: IResourceOptions): URI | { primary?: URI, secondary?: URI } | undefined { if (!editor) { return undefined; } @@ -1231,12 +1233,12 @@ export function toResource(editor: IEditorInput | undefined | null, options?: IR if (options?.supportSideBySide && editor instanceof SideBySideEditorInput) { if (options?.supportSideBySide === SideBySideEditor.BOTH) { return { - master: toResource(editor.master, { filterByScheme: options.filterByScheme }), - detail: toResource(editor.details, { filterByScheme: options.filterByScheme }) + primary: toResource(editor.primary, { filterByScheme: options.filterByScheme }), + secondary: toResource(editor.secondary, { filterByScheme: options.filterByScheme }) }; } - editor = options.supportSideBySide === SideBySideEditor.MASTER ? editor.master : editor.details; + editor = options.supportSideBySide === SideBySideEditor.PRIMARY ? editor.primary : editor.secondary; } const resource = editor.resource; diff --git a/src/vs/workbench/common/editor/editorGroup.ts b/src/vs/workbench/common/editor/editorGroup.ts index ad9926422d..aebe30b865 100644 --- a/src/vs/workbench/common/editor/editorGroup.ts +++ b/src/vs/workbench/common/editor/editorGroup.ts @@ -697,7 +697,7 @@ export class EditorGroup extends Disposable { } if (options?.supportSideBySide && editor instanceof SideBySideEditorInput) { - if (this.matches(editor.master, candidate, options?.strictEquals) || this.matches(editor.details, candidate, options?.strictEquals)) { + if (this.matches(editor.primary, candidate, options?.strictEquals) || this.matches(editor.secondary, candidate, options?.strictEquals)) { return true; } } diff --git a/src/vs/workbench/common/editor/resourceEditorInput.ts b/src/vs/workbench/common/editor/resourceEditorInput.ts index ee9cddefa6..7f6e0d3d4e 100644 --- a/src/vs/workbench/common/editor/resourceEditorInput.ts +++ b/src/vs/workbench/common/editor/resourceEditorInput.ts @@ -15,6 +15,7 @@ import { IFileService } from 'vs/platform/files/common/files'; import { ILabelService } from 'vs/platform/label/common/label'; import { IFilesConfigurationService } from 'vs/workbench/services/filesConfiguration/common/filesConfigurationService'; import { AbstractTextResourceEditorInput } from 'vs/workbench/common/editor/textResourceEditorInput'; +import { extUri } from 'vs/base/common/resources'; /** * A read-only text editor input whos contents are made of the provided resource that points to an existing @@ -109,13 +110,12 @@ export class ResourceEditorInput extends AbstractTextResourceEditorInput impleme } matches(otherInput: unknown): boolean { - if (super.matches(otherInput) === true) { + if (otherInput === this) { return true; } - // Compare by properties if (otherInput instanceof ResourceEditorInput) { - return otherInput.resource.toString() === this.resource.toString(); + return extUri.isEqual(otherInput.resource, this.resource); } return false; diff --git a/src/vs/workbench/common/editor/textResourceEditorInput.ts b/src/vs/workbench/common/editor/textResourceEditorInput.ts index 8e60c598c3..455fd09e2a 100644 --- a/src/vs/workbench/common/editor/textResourceEditorInput.ts +++ b/src/vs/workbench/common/editor/textResourceEditorInput.ts @@ -22,7 +22,8 @@ export abstract class AbstractTextResourceEditorInput extends EditorInput { private static readonly MEMOIZER = createMemoizer(); - private label: URI; + private _label: URI; + get label(): URI { return this._label; } constructor( public readonly resource: URI, @@ -36,7 +37,7 @@ export abstract class AbstractTextResourceEditorInput extends EditorInput { ) { super(); - this.label = preferredLabel || resource; + this._label = preferredLabel || resource; this.registerListeners(); } @@ -50,7 +51,7 @@ export abstract class AbstractTextResourceEditorInput extends EditorInput { } private onLabelEvent(scheme: string): void { - if (scheme === this.label.scheme) { + if (scheme === this._label.scheme) { this.updateLabel(); } } @@ -65,15 +66,15 @@ export abstract class AbstractTextResourceEditorInput extends EditorInput { } setLabel(label: URI): void { - if (!extUri.isEqual(label, this.label)) { - this.label = label; + if (!extUri.isEqual(label, this._label)) { + this._label = label; this.updateLabel(); } } getLabel(): URI { - return this.label; + return this._label; } getName(): string { @@ -82,7 +83,7 @@ export abstract class AbstractTextResourceEditorInput extends EditorInput { @AbstractTextResourceEditorInput.MEMOIZER private get basename(): string { - return this.labelService.getUriBasenameLabel(this.label); + return this.labelService.getUriBasenameLabel(this._label); } getDescription(verbosity: Verbosity = Verbosity.MEDIUM): string | undefined { @@ -99,17 +100,17 @@ export abstract class AbstractTextResourceEditorInput extends EditorInput { @AbstractTextResourceEditorInput.MEMOIZER private get shortDescription(): string { - return this.labelService.getUriBasenameLabel(dirname(this.label)); + return this.labelService.getUriBasenameLabel(dirname(this._label)); } @AbstractTextResourceEditorInput.MEMOIZER private get mediumDescription(): string { - return this.labelService.getUriLabel(dirname(this.label), { relative: true }); + return this.labelService.getUriLabel(dirname(this._label), { relative: true }); } @AbstractTextResourceEditorInput.MEMOIZER private get longDescription(): string { - return this.labelService.getUriLabel(dirname(this.label)); + return this.labelService.getUriLabel(dirname(this._label)); } @AbstractTextResourceEditorInput.MEMOIZER @@ -119,12 +120,12 @@ export abstract class AbstractTextResourceEditorInput extends EditorInput { @AbstractTextResourceEditorInput.MEMOIZER private get mediumTitle(): string { - return this.labelService.getUriLabel(this.label, { relative: true }); + return this.labelService.getUriLabel(this._label, { relative: true }); } @AbstractTextResourceEditorInput.MEMOIZER private get longTitle(): string { - return this.labelService.getUriLabel(this.label); + return this.labelService.getUriLabel(this._label); } getTitle(verbosity: Verbosity): string { @@ -163,7 +164,7 @@ export abstract class AbstractTextResourceEditorInput extends EditorInput { return false; } - async save(group: GroupIdentifier, options?: ITextFileSaveOptions): Promise { + save(group: GroupIdentifier, options?: ITextFileSaveOptions): Promise { return this.doSave(group, options, false); } @@ -185,7 +186,12 @@ export abstract class AbstractTextResourceEditorInput extends EditorInput { return undefined; // save cancelled } - return this.editorService.createEditorInput({ resource: target }); + // If the target is a different resource, return with a new editor input + if (!extUri.isEqual(target, this.resource)) { + return this.editorService.createEditorInput({ resource: target }); + } + + return this; } async revert(group: GroupIdentifier, options?: IRevertOptions): Promise { diff --git a/src/vs/workbench/common/views.ts b/src/vs/workbench/common/views.ts index cb74a369c4..8a3a595afb 100644 --- a/src/vs/workbench/common/views.ts +++ b/src/vs/workbench/common/views.ts @@ -23,6 +23,7 @@ import { IProgressIndicator } from 'vs/platform/progress/common/progress'; import Severity from 'vs/base/common/severity'; import { IPaneComposite } from 'vs/workbench/common/panecomposite'; import { IAccessibilityInformation } from 'vs/platform/accessibility/common/accessibility'; +import { IMarkdownString } from 'vs/base/common/htmlContent'; export const TEST_VIEW_CONTAINER_ID = 'workbench.view.extension.test'; @@ -580,6 +581,7 @@ export interface ITreeView extends IDisposable { setFocus(item: ITreeItem): void; + show(container: any): void; } export interface IRevealOptions { @@ -635,7 +637,7 @@ export interface ITreeItem { resourceUri?: UriComponents; - tooltip?: string; + tooltip?: string | IMarkdownString; contextValue?: string; @@ -646,6 +648,56 @@ export interface ITreeItem { accessibilityInformation?: IAccessibilityInformation; } +export class ResolvableTreeItem implements ITreeItem { + handle: string; + parentHandle?: string; + collapsibleState: TreeItemCollapsibleState; + label?: ITreeItemLabel; + description?: string | boolean; + icon?: UriComponents; + iconDark?: UriComponents; + themeIcon?: ThemeIcon; + resourceUri?: UriComponents; + tooltip?: string | IMarkdownString; + contextValue?: string; + command?: Command; + children?: ITreeItem[]; + accessibilityInformation?: IAccessibilityInformation; + resolve: () => Promise; + private resolved: boolean = false; + private _hasResolve: boolean = false; + constructor(treeItem: ITreeItem, resolve?: (() => Promise)) { + this.handle = treeItem.handle; + this.parentHandle = treeItem.parentHandle; + this.collapsibleState = treeItem.collapsibleState; + this.label = treeItem.label; + this.description = treeItem.description; + this.icon = treeItem.icon; + this.iconDark = treeItem.iconDark; + this.themeIcon = treeItem.themeIcon; + this.resourceUri = treeItem.resourceUri; + this.tooltip = treeItem.tooltip; + this.contextValue = treeItem.contextValue; + this.command = treeItem.command; + this.children = treeItem.children; + this.accessibilityInformation = treeItem.accessibilityInformation; + this._hasResolve = !!resolve; + this.resolve = async () => { + if (resolve && !this.resolved) { + const resolvedItem = await resolve(); + if (resolvedItem) { + // Resolvable elements. Currently only tooltip. + this.tooltip = resolvedItem.tooltip; + } + } + this.resolved = true; + }; + } + get hasResolve(): boolean { + return this._hasResolve; + } +} + export interface ITreeViewDataProvider { readonly isTreeEmpty?: boolean; onDidChangeEmpty?: Event; diff --git a/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.ts b/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.ts index 7a21baeb40..df23f01834 100644 --- a/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.ts +++ b/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.ts @@ -9,7 +9,7 @@ import { CancellationToken } from 'vs/base/common/cancellation'; import { IIdentityProvider, IListVirtualDelegate } from 'vs/base/browser/ui/list/list'; import { FuzzyScore, createMatches } from 'vs/base/common/filters'; import { IconLabel } from 'vs/base/browser/ui/iconLabel/iconLabel'; -import { SymbolKinds, Location } from 'vs/editor/common/modes'; +import { SymbolKinds, Location, SymbolTag } from 'vs/editor/common/modes'; import { compare } from 'vs/base/common/strings'; import { Range } from 'vs/editor/common/core/range'; import { IListAccessibilityProvider } from 'vs/base/browser/ui/list/listWidget'; @@ -116,11 +116,12 @@ export class CallRenderer implements ITreeRenderer, _index: number, template: CallRenderingTemplate): void { const { element, filterData } = node; + const deprecated = element.item.tags?.includes(SymbolTag.Deprecated); template.icon.className = SymbolKinds.toCssClassName(element.item.kind, true); template.label.setLabel( element.item.name, element.item.detail, - { labelEscapeNewLines: true, matches: createMatches(filterData) } + { labelEscapeNewLines: true, matches: createMatches(filterData), strikethrough: deprecated } ); } disposeTemplate(template: CallRenderingTemplate): void { diff --git a/src/vs/workbench/contrib/callHierarchy/common/callHierarchy.ts b/src/vs/workbench/contrib/callHierarchy/common/callHierarchy.ts index ccf5cd293d..f2aadf8d7e 100644 --- a/src/vs/workbench/contrib/callHierarchy/common/callHierarchy.ts +++ b/src/vs/workbench/contrib/callHierarchy/common/callHierarchy.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { IRange } from 'vs/editor/common/core/range'; -import { SymbolKind, ProviderResult } from 'vs/editor/common/modes'; +import { SymbolKind, ProviderResult, SymbolTag } from 'vs/editor/common/modes'; import { ITextModel } from 'vs/editor/common/model'; import { CancellationToken } from 'vs/base/common/cancellation'; import { LanguageFeatureRegistry } from 'vs/editor/common/modes/languageFeatureRegistry'; @@ -32,6 +32,7 @@ export interface CallHierarchyItem { uri: URI; range: IRange; selectionRange: IRange; + tags?: SymbolTag[] } export interface IncomingCall { diff --git a/src/vs/workbench/contrib/codeEditor/browser/codeEditor.contribution.ts b/src/vs/workbench/contrib/codeEditor/browser/codeEditor.contribution.ts index e8bb06ae83..7cea122505 100644 --- a/src/vs/workbench/contrib/codeEditor/browser/codeEditor.contribution.ts +++ b/src/vs/workbench/contrib/codeEditor/browser/codeEditor.contribution.ts @@ -12,7 +12,6 @@ import './inspectEditorTokens/inspectEditorTokens'; import './quickaccess/gotoLineQuickAccess'; import './quickaccess/gotoSymbolQuickAccess'; import './saveParticipants'; -import './semanticTokensHelp'; import './toggleColumnSelection'; import './toggleMinimap'; import './toggleMultiCursorModifier'; diff --git a/src/vs/workbench/contrib/codeEditor/browser/inspectEditorTokens/inspectEditorTokens.ts b/src/vs/workbench/contrib/codeEditor/browser/inspectEditorTokens/inspectEditorTokens.ts index 1fce28eb5a..9fc5337555 100644 --- a/src/vs/workbench/contrib/codeEditor/browser/inspectEditorTokens/inspectEditorTokens.ts +++ b/src/vs/workbench/contrib/codeEditor/browser/inspectEditorTokens/inspectEditorTokens.ts @@ -29,10 +29,7 @@ import { CancellationTokenSource } from 'vs/base/common/cancellation'; import { ColorThemeData, TokenStyleDefinitions, TokenStyleDefinition, TextMateThemingRuleDefinitions } from 'vs/workbench/services/themes/common/colorThemeData'; import { SemanticTokenRule, TokenStyleData, TokenStyle } from 'vs/platform/theme/common/tokenClassificationRegistry'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; - -export interface IEditorSemanticHighlightingOptions { - enabled?: boolean; -} +import { SEMANTIC_HIGHLIGHTING_SETTING_ID, IEditorSemanticHighlightingOptions } from 'vs/editor/common/services/modelServiceImpl'; class InspectEditorTokensController extends Disposable implements IEditorContribution { @@ -264,11 +261,11 @@ class InspectEditorTokensWidget extends Disposable implements IContentWidget { } private _isSemanticColoringEnabled() { - if (!this._themeService.getColorTheme().semanticHighlighting) { - return false; + const setting = this._configurationService.getValue(SEMANTIC_HIGHLIGHTING_SETTING_ID, { overrideIdentifier: this._model.getLanguageIdentifier().language, resource: this._model.uri })?.enabled; + if (typeof setting === 'boolean') { + return setting; } - const options = this._configurationService.getValue('editor.semanticHighlighting', { overrideIdentifier: this._model.getLanguageIdentifier().language, resource: this._model.uri }); - return options && options.enabled; + return this._themeService.getColorTheme().semanticHighlighting; } private _compute(grammar: IGrammar | null, semanticTokens: SemanticTokensResult | null, position: Position): string { diff --git a/src/vs/workbench/contrib/codeEditor/browser/inspectKeybindings.ts b/src/vs/workbench/contrib/codeEditor/browser/inspectKeybindings.ts index c7ca443810..a17549bd19 100644 --- a/src/vs/workbench/contrib/codeEditor/browser/inspectKeybindings.ts +++ b/src/vs/workbench/contrib/codeEditor/browser/inspectKeybindings.ts @@ -53,4 +53,4 @@ class InspectKeyMapJSON extends Action { } const registry = Registry.as(ActionExtensions.WorkbenchActions); -registry.registerWorkbenchAction(SyncActionDescriptor.from(InspectKeyMapJSON), 'Developer: Inspect Key Mappings (JSON)', nls.localize('developer', "Developer")); +registry.registerWorkbenchAction(SyncActionDescriptor.from(InspectKeyMapJSON), 'Developer: Inspect Key Mappings (JSON)', nls.localize({ key: 'developer', comment: ['A developer on Code itself or someone diagnosing issues in Code'] }, "Developer")); diff --git a/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.ts b/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.ts index 9dcd8d6f3a..7e9b0149c2 100644 --- a/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.ts +++ b/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.ts @@ -137,7 +137,7 @@ export class GotoSymbolQuickAccessProvider extends AbstractGotoSymbolQuickAccess picker.busy = true; - provider.provideTableOfContents(pane, cts.token).then(entries => { + provider.provideTableOfContents(pane, { disposables }, cts.token).then(entries => { picker.busy = false; @@ -256,7 +256,8 @@ export interface ITableOfContentsEntry { } export interface ITableOfContentsProvider { - provideTableOfContents(editor: T, token: CancellationToken): Promise; + + provideTableOfContents(editor: T, context: { disposables: DisposableStore }, token: CancellationToken): Promise; } class ProviderRegistry { diff --git a/src/vs/workbench/contrib/codeEditor/browser/semanticTokensHelp.ts b/src/vs/workbench/contrib/codeEditor/browser/semanticTokensHelp.ts deleted file mode 100644 index 7f497a288e..0000000000 --- a/src/vs/workbench/contrib/codeEditor/browser/semanticTokensHelp.ts +++ /dev/null @@ -1,109 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Source EULA. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import * as nls from 'vs/nls'; -import * as path from 'vs/base/common/path'; -import { Disposable, DisposableStore } from 'vs/base/common/lifecycle'; -import { ICodeEditor, isCodeEditor } from 'vs/editor/browser/editorBrowser'; -import { registerEditorContribution } from 'vs/editor/browser/editorExtensions'; -import { IEditorContribution } from 'vs/editor/common/editorCommon'; -import { INotificationService, Severity } from 'vs/platform/notification/common/notification'; -import { IOpenerService } from 'vs/platform/opener/common/opener'; -import { URI } from 'vs/base/common/uri'; -import { ITextModel } from 'vs/editor/common/model'; -import { IWorkbenchThemeService } from 'vs/workbench/services/themes/common/workbenchThemeService'; -import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; -import { IStorageKeysSyncRegistryService } from 'vs/platform/userDataSync/common/storageKeys'; -import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; - -/** - * Shows a message when semantic tokens are shown the first time. - */ -export class SemanticTokensHelp extends Disposable implements IEditorContribution { - - public static readonly ID = 'editor.contrib.semanticHighlightHelp'; - - constructor( - _editor: ICodeEditor, - @INotificationService _notificationService: INotificationService, - @IOpenerService _openerService: IOpenerService, - @IWorkbenchThemeService _themeService: IWorkbenchThemeService, - @IEditorService _editorService: IEditorService, - @IStorageService _storageService: IStorageService, - @IStorageKeysSyncRegistryService storageKeysSyncRegistryService: IStorageKeysSyncRegistryService - ) { - super(); - // opt-in to syncing - const neverShowAgainId = 'editor.contrib.semanticTokensHelp'; - - if (_storageService.getBoolean(neverShowAgainId, StorageScope.GLOBAL)) { - return; - } - - storageKeysSyncRegistryService.registerStorageKey({ key: neverShowAgainId, version: 1 }); - - const toDispose = this._register(new DisposableStore()); - const localToDispose = toDispose.add(new DisposableStore()); - const installChangeTokenListener = (model: ITextModel) => { - localToDispose.add(model.onDidChangeTokens((e) => { - if (!e.semanticTokensApplied) { - return; - } - if (_storageService.getBoolean(neverShowAgainId, StorageScope.GLOBAL)) { - toDispose.dispose(); - return; - } - const activeEditorControl = _editorService.activeTextEditorControl; - if (!isCodeEditor(activeEditorControl) || activeEditorControl.getModel() !== model) { - return; // only show if model is in the active code editor - } - - toDispose.dispose(); // uninstall all listeners, make sure the notification is only shown once per window - _storageService.store(neverShowAgainId, true, StorageScope.GLOBAL); // never show again - - const message = nls.localize( - { - key: 'semanticTokensHelp', - comment: [ - 'Variable 0 will be a file name.', - 'Variable 1 will be a theme name.' - ] - }, - "Code coloring of '{0}' has been updated as the theme '{1}' has [semantic highlighting](https://go.microsoft.com/fwlink/?linkid=2122588) enabled.", - path.basename(model.uri.path), _themeService.getColorTheme().label - ); - - _notificationService.prompt(Severity.Info, message, [ - { - label: nls.localize('learnMoreButton', "Learn More"), - run: () => { - const url = 'https://go.microsoft.com/fwlink/?linkid=2122588'; - - _openerService.open(URI.parse(url)); - } - } - ]); - })); - }; - - - const model = _editor.getModel(); - if (model !== null) { - installChangeTokenListener(model); - } - - toDispose.add(_editor.onDidChangeModel((e) => { - localToDispose.clear(); - - const model = _editor.getModel(); - if (!model) { - return; - } - installChangeTokenListener(model); - })); - } -} - -registerEditorContribution(SemanticTokensHelp.ID, SemanticTokensHelp); diff --git a/src/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.ts b/src/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.ts index cdcbbc027e..3de88f4448 100644 --- a/src/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.ts +++ b/src/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput.ts @@ -314,7 +314,6 @@ function getSuggestEnabledInputOptions(ariaLabel?: string): IEditorOptions { cursorWidth: 1, fontFamily: DEFAULT_FONT_FAMILY, ariaLabel: ariaLabel || '', - snippetSuggestions: 'none', suggest: { filterGraceful: false, showIcons: false }, autoClosingBrackets: 'never' diff --git a/src/vs/workbench/contrib/codeEditor/electron-browser/startDebugTextMate.ts b/src/vs/workbench/contrib/codeEditor/electron-browser/startDebugTextMate.ts index a0f7bd254a..d173b1954f 100644 --- a/src/vs/workbench/contrib/codeEditor/electron-browser/startDebugTextMate.ts +++ b/src/vs/workbench/contrib/codeEditor/electron-browser/startDebugTextMate.ts @@ -104,4 +104,4 @@ class StartDebugTextMate extends Action { } const registry = Registry.as(ActionExtensions.WorkbenchActions); -registry.registerWorkbenchAction(SyncActionDescriptor.from(StartDebugTextMate), 'Start Text Mate Syntax Grammar Logging', nls.localize('developer', "Developer")); +registry.registerWorkbenchAction(SyncActionDescriptor.from(StartDebugTextMate), 'Start Text Mate Syntax Grammar Logging', nls.localize({ key: 'developer', comment: ['A developer on Code itself or someone diagnosing issues in Code'] }, "Developer")); diff --git a/src/vs/workbench/contrib/comments/browser/commentNode.ts b/src/vs/workbench/contrib/comments/browser/commentNode.ts index 98d46a6552..94ceccb411 100644 --- a/src/vs/workbench/contrib/comments/browser/commentNode.ts +++ b/src/vs/workbench/contrib/comments/browser/commentNode.ts @@ -197,7 +197,7 @@ export class CommentNode extends Disposable { this.createToolbar(); } - this.toolbar!.setActions(primary, secondary)(); + this.toolbar!.setActions(primary, secondary); })); const { primary, secondary } = this.getToolbarActions(menu); @@ -205,7 +205,7 @@ export class CommentNode extends Disposable { if (actions.length || secondary.length) { this.createToolbar(); - this.toolbar!.setActions(actions, secondary)(); + this.toolbar!.setActions(actions, secondary); } } @@ -401,6 +401,10 @@ export class CommentNode extends Disposable { this._commentEditContainer!.remove(); } + layout() { + this._commentEditor?.layout(); + } + public switchToEditMode() { if (this.isEditing) { return; diff --git a/src/vs/workbench/contrib/comments/browser/commentThreadWidget.ts b/src/vs/workbench/contrib/comments/browser/commentThreadWidget.ts index f63de79381..cca200fc61 100644 --- a/src/vs/workbench/contrib/comments/browser/commentThreadWidget.ts +++ b/src/vs/workbench/contrib/comments/browser/commentThreadWidget.ts @@ -739,6 +739,11 @@ export class ReviewZoneWidget extends ZoneWidget implements ICommentThreadWidget _refresh() { if (this._isExpanded && this._bodyElement) { let dimensions = dom.getClientArea(this._bodyElement); + + this._commentElements.forEach(element => { + element.layout(); + }); + const headHeight = Math.ceil(this.editor.getOption(EditorOption.lineHeight) * 1.2); const lineHeight = this.editor.getOption(EditorOption.lineHeight); const arrowHeight = Math.round(lineHeight / 3); diff --git a/src/vs/workbench/contrib/comments/browser/commentsTreeViewer.ts b/src/vs/workbench/contrib/comments/browser/commentsTreeViewer.ts index 12457e5fab..86571fa00a 100644 --- a/src/vs/workbench/contrib/comments/browser/commentsTreeViewer.ts +++ b/src/vs/workbench/contrib/comments/browser/commentsTreeViewer.ts @@ -21,7 +21,6 @@ import { WorkbenchAsyncDataTree, IListService, IWorkbenchAsyncDataTreeOptions } import { IThemeService } from 'vs/platform/theme/common/themeService'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IColorMapping } from 'vs/platform/theme/common/styler'; -import { basename } from 'vs/base/common/resources'; export const COMMENTS_VIEW_ID = 'workbench.panel.comments'; export const COMMENTS_VIEW_TITLE = 'Comments'; @@ -182,30 +181,7 @@ export class CommentsList extends WorkbenchAsyncDataTree { renderers, dataSource, { - accessibilityProvider: { - getAriaLabel(element: any): string { - if (element instanceof CommentsModel) { - return nls.localize('rootCommentsLabel', "Comments for current workspace"); - } - if (element instanceof ResourceWithCommentThreads) { - return nls.localize('resourceWithCommentThreadsLabel', "Comments in {0}, full path {1}", basename(element.resource), element.resource.fsPath); - } - if (element instanceof CommentNode) { - return nls.localize('resourceWithCommentLabel', - "Comment from ${0} at line {1} column {2} in {3}, source: {4}", - element.comment.userName, - element.range.startLineNumber, - element.range.startColumn, - basename(element.resource), - element.comment.body.value - ); - } - return ''; - }, - getWidgetAriaLabel(): string { - return COMMENTS_VIEW_TITLE; - } - }, + accessibilityProvider: options.accessibilityProvider, keyboardSupport: true, identityProvider: { getId: (element: any) => { diff --git a/src/vs/workbench/contrib/comments/browser/commentsView.ts b/src/vs/workbench/contrib/comments/browser/commentsView.ts index cb335a4e42..2f5608a884 100644 --- a/src/vs/workbench/contrib/comments/browser/commentsView.ts +++ b/src/vs/workbench/contrib/comments/browser/commentsView.ts @@ -6,6 +6,7 @@ import 'vs/css!./media/panel'; import * as nls from 'vs/nls'; import * as dom from 'vs/base/browser/dom'; +import { basename } from 'vs/base/common/resources'; import { IAction, Action } from 'vs/base/common/actions'; import { CollapseAllAction } from 'vs/base/browser/ui/tree/treeDefaults'; import { isCodeEditor } from 'vs/editor/browser/editorBrowser'; @@ -151,9 +152,29 @@ export class CommentsPanel extends ViewPane { this.tree = this._register(this.instantiationService.createInstance(CommentsList, this.treeLabels, this.treeContainer, { overrideStyles: { listBackground: this.getBackgroundColor() }, openOnFocus: true, - accessibilityProvider: { // TODO@rebornix implement a proper accessibility provider - getAriaLabel(element: any): string | null { return null; }, - getWidgetAriaLabel(): string { return 'Comments'; } + accessibilityProvider: { + getAriaLabel(element: any): string { + if (element instanceof CommentsModel) { + return nls.localize('rootCommentsLabel', "Comments for current workspace"); + } + if (element instanceof ResourceWithCommentThreads) { + return nls.localize('resourceWithCommentThreadsLabel', "Comments in {0}, full path {1}", basename(element.resource), element.resource.fsPath); + } + if (element instanceof CommentNode) { + return nls.localize('resourceWithCommentLabel', + "Comment from ${0} at line {1} column {2} in {3}, source: {4}", + element.comment.userName, + element.range.startLineNumber, + element.range.startColumn, + basename(element.resource), + element.comment.body.value + ); + } + return ''; + }, + getWidgetAriaLabel(): string { + return COMMENTS_VIEW_TITLE; + } } })); diff --git a/src/vs/workbench/contrib/customEditor/browser/commands.ts b/src/vs/workbench/contrib/customEditor/browser/commands.ts deleted file mode 100644 index dd0b53e63e..0000000000 --- a/src/vs/workbench/contrib/customEditor/browser/commands.ts +++ /dev/null @@ -1,68 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Source EULA. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { KeyCode, KeyMod } from 'vs/base/common/keyCodes'; -import { Command } from 'vs/editor/browser/editorExtensions'; -import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; -import { InputFocusedContextKey } from 'vs/platform/contextkey/common/contextkeys'; -import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; -import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry'; -import { CustomEditorInput } from 'vs/workbench/contrib/customEditor/browser/customEditorInput'; -import { CONTEXT_FOCUSED_CUSTOM_EDITOR_IS_EDITABLE } from 'vs/workbench/contrib/customEditor/common/customEditor'; -import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; - - -(new class UndoCustomEditorCommand extends Command { - public static readonly ID = 'editor.action.customEditor.undo'; - - constructor() { - super({ - id: UndoCustomEditorCommand.ID, - precondition: ContextKeyExpr.and( - CONTEXT_FOCUSED_CUSTOM_EDITOR_IS_EDITABLE, - ContextKeyExpr.not(InputFocusedContextKey)), - kbOpts: { - primary: KeyMod.CtrlCmd | KeyCode.KEY_Z, - weight: KeybindingWeight.EditorContrib - } - }); - } - - public runCommand(accessor: ServicesAccessor): void { - const editorService = accessor.get(IEditorService); - const activeInput = editorService.activeEditorPane?.input; - if (activeInput instanceof CustomEditorInput) { - activeInput.undo(); - } - } -}).register(); - -(new class RedoWebviewEditorCommand extends Command { - public static readonly ID = 'editor.action.customEditor.redo'; - - constructor() { - super({ - id: RedoWebviewEditorCommand.ID, - precondition: ContextKeyExpr.and( - CONTEXT_FOCUSED_CUSTOM_EDITOR_IS_EDITABLE, - ContextKeyExpr.not(InputFocusedContextKey)), - kbOpts: { - primary: KeyMod.CtrlCmd | KeyCode.KEY_Y, - secondary: [KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KEY_Z], - mac: { primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KEY_Z }, - weight: KeybindingWeight.EditorContrib - } - }); - } - - public runCommand(accessor: ServicesAccessor): void { - const editorService = accessor.get(IEditorService); - const activeInput = editorService.activeEditorPane?.input; - if (activeInput instanceof CustomEditorInput) { - activeInput.redo(); - } - } -}).register(); - diff --git a/src/vs/workbench/contrib/customEditor/browser/customEditor.contribution.ts b/src/vs/workbench/contrib/customEditor/browser/customEditor.contribution.ts index 2bab3f5609..7d58c370bd 100644 --- a/src/vs/workbench/contrib/customEditor/browser/customEditor.contribution.ts +++ b/src/vs/workbench/contrib/customEditor/browser/customEditor.contribution.ts @@ -14,7 +14,6 @@ import { Extensions as EditorInputExtensions, IEditorInputFactoryRegistry } from import { CustomEditorInputFactory } from 'vs/workbench/contrib/customEditor/browser/customEditorInputFactory'; import { ICustomEditorService } from 'vs/workbench/contrib/customEditor/common/customEditor'; import { WebviewEditor } from 'vs/workbench/contrib/webview/browser/webviewEditor'; -import './commands'; import { CustomEditorInput } from './customEditorInput'; import { CustomEditorContribution, CustomEditorService } from './customEditors'; diff --git a/src/vs/workbench/contrib/customEditor/browser/customEditorInputFactory.ts b/src/vs/workbench/contrib/customEditor/browser/customEditorInputFactory.ts index deadb958c7..1ebe67dd7e 100644 --- a/src/vs/workbench/contrib/customEditor/browser/customEditorInputFactory.ts +++ b/src/vs/workbench/contrib/customEditor/browser/customEditorInputFactory.ts @@ -8,7 +8,7 @@ import { URI, UriComponents } from 'vs/base/common/uri'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IEditorInput } from 'vs/workbench/common/editor'; import { CustomEditorInput } from 'vs/workbench/contrib/customEditor/browser/customEditorInput'; -import { IWebviewService, WebviewExtensionDescription } from 'vs/workbench/contrib/webview/browser/webview'; +import { IWebviewService, WebviewExtensionDescription, WebviewContentPurpose } from 'vs/workbench/contrib/webview/browser/webview'; import { reviveWebviewExtensionDescription, SerializedWebview, WebviewEditorInputFactory, DeserializedWebview } from 'vs/workbench/contrib/webview/browser/webviewEditorInputFactory'; import { IWebviewWorkbenchService, WebviewInputOptions } from 'vs/workbench/contrib/webview/browser/webviewWorkbenchService'; import { IBackupFileService } from 'vs/workbench/services/backup/common/backup'; @@ -96,6 +96,7 @@ export class CustomEditorInputFactory extends WebviewEditorInputFactory { private static reviveWebview(data: { id: string, state: any, options: WebviewInputOptions, extension?: WebviewExtensionDescription, }, webviewService: IWebviewService) { return new Lazy(() => { const webview = webviewService.createWebviewOverlay(data.id, { + purpose: WebviewContentPurpose.CustomEditor, enableFindWidget: data.options.enableFindWidget, retainContextWhenHidden: data.options.retainContextWhenHidden }, data.options, data.extension); diff --git a/src/vs/workbench/contrib/customEditor/browser/customEditors.ts b/src/vs/workbench/contrib/customEditor/browser/customEditors.ts index 19ce08fc18..ed7ccba168 100644 --- a/src/vs/workbench/contrib/customEditor/browser/customEditors.ts +++ b/src/vs/workbench/contrib/customEditor/browser/customEditors.ts @@ -3,7 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { Registry } from 'vs/platform/registry/common/platform'; import { coalesce, distinct } from 'vs/base/common/arrays'; import { Emitter, Event } from 'vs/base/common/event'; import { Lazy } from 'vs/base/common/lazy'; @@ -11,6 +10,7 @@ import { Disposable, IDisposable, toDisposable } from 'vs/base/common/lifecycle' import { basename, extname, isEqual } from 'vs/base/common/resources'; import { URI } from 'vs/base/common/uri'; import { generateUuid } from 'vs/base/common/uuid'; +import { RedoCommand, UndoCommand } from 'vs/editor/browser/editorExtensions'; import * as nls from 'vs/nls'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; @@ -18,18 +18,18 @@ import { EditorActivation, IEditorOptions, ITextEditorOptions } from 'vs/platfor import { FileOperation, IFileService } from 'vs/platform/files/common/files'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IQuickInputService, IQuickPickItem } from 'vs/platform/quickinput/common/quickInput'; +import { Registry } from 'vs/platform/registry/common/platform'; import { IStorageService } from 'vs/platform/storage/common/storage'; import * as colorRegistry from 'vs/platform/theme/common/colorRegistry'; import { registerThemingParticipant } from 'vs/platform/theme/common/themeService'; import { IWorkbenchContribution } from 'vs/workbench/common/contributions'; -import { EditorInput, EditorOptions, GroupIdentifier, IEditorInput, IEditorPane, IEditorInputFactoryRegistry, Extensions as EditorInputExtensions } from 'vs/workbench/common/editor'; +import { EditorInput, EditorOptions, Extensions as EditorInputExtensions, GroupIdentifier, IEditorInput, IEditorInputFactoryRegistry, IEditorPane } from 'vs/workbench/common/editor'; import { DiffEditorInput } from 'vs/workbench/common/editor/diffEditorInput'; import { CONTEXT_CUSTOM_EDITORS, CONTEXT_FOCUSED_CUSTOM_EDITOR_IS_EDITABLE, CustomEditorCapabilities, CustomEditorInfo, CustomEditorInfoCollection, CustomEditorPriority, ICustomEditorService } from 'vs/workbench/contrib/customEditor/common/customEditor'; import { CustomEditorModelManager } from 'vs/workbench/contrib/customEditor/common/customEditorModelManager'; -import { defaultEditorOverrideEntry } from 'vs/workbench/contrib/files/common/openWith'; import { IWebviewService, webviewHasOwnEditFunctionsContext } from 'vs/workbench/contrib/webview/browser/webview'; -import { CustomEditorAssociation, CustomEditorsAssociations, customEditorsAssociationsSettingId } from 'vs/workbench/services/editor/common/editorAssociationsSetting'; import { IEditorGroup, IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService'; +import { CustomEditorAssociation, CustomEditorsAssociations, customEditorsAssociationsSettingId, defaultEditorOverrideEntry } from 'vs/workbench/services/editor/common/editorOpenWith'; import { ICustomEditorInfo, ICustomEditorViewTypesHandler, IEditorService, IOpenEditorOverride, IOpenEditorOverrideEntry } from 'vs/workbench/services/editor/common/editorService'; import { ContributedCustomEditors, defaultCustomEditor } from '../common/contributedCustomEditors'; import { CustomEditorInput } from './customEditorInput'; @@ -67,7 +67,6 @@ export class CustomEditorService extends Disposable implements ICustomEditorServ this._focusedCustomEditorIsEditable = CONTEXT_FOCUSED_CUSTOM_EDITOR_IS_EDITABLE.bindTo(contextKeyService); this._webviewHasOwnEditFunctions = webviewHasOwnEditFunctionsContext.bindTo(contextKeyService); - this._contributedEditors = this._register(new ContributedCustomEditors(storageService)); this._register(this._contributedEditors.onChange(() => { this.updateContexts(); @@ -82,6 +81,14 @@ export class CustomEditorService extends Disposable implements ICustomEditorServ } })); + const PRIORITY = 105; + this._register(UndoCommand.addImplementation(PRIORITY, () => { + return this.withActiveCustomEditor(editor => editor.undo()); + })); + this._register(RedoCommand.addImplementation(PRIORITY, () => { + return this.withActiveCustomEditor(editor => editor.redo()); + })); + this.updateContexts(); } @@ -89,6 +96,15 @@ export class CustomEditorService extends Disposable implements ICustomEditorServ return [...this._contributedEditors]; } + private withActiveCustomEditor(f: (editor: CustomEditorInput) => void): boolean { + const activeEditor = this.editorService.activeEditor; + if (activeEditor instanceof CustomEditorInput) { + f(activeEditor); + return true; + } + return false; + } + public get models() { return this._models; } public getCustomEditor(viewType: string): CustomEditorInfo | undefined { @@ -461,16 +477,6 @@ export class CustomEditorContribution extends Disposable implements IWorkbenchCo ]; } })); - - this._register(this.editorService.onDidCloseEditor(({ editor }) => { - if (!(editor instanceof CustomEditorInput)) { - return; - } - - if (!this.editorService.editors.some(other => other === editor)) { - editor.dispose(); - } - })); } private onEditorOpening( diff --git a/src/vs/workbench/contrib/customEditor/common/contributedCustomEditors.ts b/src/vs/workbench/contrib/customEditor/common/contributedCustomEditors.ts index ff983aeccd..3ebb52b99a 100644 --- a/src/vs/workbench/contrib/customEditor/common/contributedCustomEditors.ts +++ b/src/vs/workbench/contrib/customEditor/common/contributedCustomEditors.ts @@ -12,8 +12,8 @@ import { IStorageService, StorageScope } from 'vs/platform/storage/common/storag import { Memento } from 'vs/workbench/common/memento'; import { CustomEditorDescriptor, CustomEditorInfo, CustomEditorPriority } from 'vs/workbench/contrib/customEditor/common/customEditor'; import { customEditorsExtensionPoint, ICustomEditorsExtensionPoint } from 'vs/workbench/contrib/customEditor/common/extensionPoint'; -import { DEFAULT_EDITOR_ID } from 'vs/workbench/contrib/files/common/files'; import { IExtensionPointUser } from 'vs/workbench/services/extensions/common/extensionsRegistry'; +import { DEFAULT_EDITOR_ID } from 'vs/workbench/services/editor/common/editorOpenWith'; const builtinProviderDisplayName = nls.localize('builtinProviderDisplayName', "Built-in"); diff --git a/src/vs/workbench/contrib/debug/browser/breakpointEditorContribution.ts b/src/vs/workbench/contrib/debug/browser/breakpointEditorContribution.ts index 2b7545fb78..fb8d3bdef1 100644 --- a/src/vs/workbench/contrib/debug/browser/breakpointEditorContribution.ts +++ b/src/vs/workbench/contrib/debug/browser/breakpointEditorContribution.ts @@ -35,6 +35,7 @@ import { BrowserFeatures } from 'vs/base/browser/canIUse'; import { isSafari } from 'vs/base/browser/browser'; import { registerThemingParticipant } from 'vs/platform/theme/common/themeService'; import { registerColor } from 'vs/platform/theme/common/colorRegistry'; +import { ILabelService } from 'vs/platform/label/common/label'; const $ = dom.$; @@ -72,7 +73,7 @@ export function createBreakpointDecorations(model: ITextModel, breakpoints: Read } function getBreakpointDecorationOptions(model: ITextModel, breakpoint: IBreakpoint, state: State, breakpointsActivated: boolean, showBreakpointsInOverviewRuler: boolean): IModelDecorationOptions { - const { className, message } = getBreakpointMessageAndClassName(state, breakpointsActivated, breakpoint); + const { className, message } = getBreakpointMessageAndClassName(state, breakpointsActivated, breakpoint, undefined); let glyphMarginHoverMessage: MarkdownString | undefined; if (message) { @@ -163,7 +164,8 @@ export class BreakpointEditorContribution implements IBreakpointEditorContributi @IInstantiationService private readonly instantiationService: IInstantiationService, @IContextKeyService contextKeyService: IContextKeyService, @IDialogService private readonly dialogService: IDialogService, - @IConfigurationService private readonly configurationService: IConfigurationService + @IConfigurationService private readonly configurationService: IConfigurationService, + @ILabelService private readonly labelService: ILabelService ) { this.breakpointWidgetVisible = CONTEXT_BREAKPOINT_WIDGET_VISIBLE.bindTo(contextKeyService); this.registerListeners(); @@ -443,7 +445,7 @@ export class BreakpointEditorContribution implements IBreakpointEditorContributi // Candidate decoration has a breakpoint attached when a breakpoint is already at that location and we did not yet set a decoration there // In practice this happens for the first breakpoint that was set on a line // We could have also rendered this first decoration as part of desiredBreakpointDecorations however at that moment we have no location information - const cssClass = candidate.breakpoint ? getBreakpointMessageAndClassName(this.debugService.state, this.debugService.getModel().areBreakpointsActivated(), candidate.breakpoint).className : 'codicon-debug-breakpoint-disabled'; + const cssClass = candidate.breakpoint ? getBreakpointMessageAndClassName(this.debugService.state, this.debugService.getModel().areBreakpointsActivated(), candidate.breakpoint, this.labelService).className : 'codicon-debug-breakpoint-disabled'; const contextMenuActions = () => this.getContextMenuActions(candidate.breakpoint ? [candidate.breakpoint] : [], activeCodeEditor.getModel().uri, candidate.range.startLineNumber, candidate.range.startColumn); const inlineWidget = new InlineBreakpointWidget(activeCodeEditor, decorationId, cssClass, candidate.breakpoint, this.debugService, this.contextMenuService, contextMenuActions); diff --git a/src/vs/workbench/contrib/debug/browser/breakpointsView.ts b/src/vs/workbench/contrib/debug/browser/breakpointsView.ts index be879cdb32..950279debd 100644 --- a/src/vs/workbench/contrib/debug/browser/breakpointsView.ts +++ b/src/vs/workbench/contrib/debug/browser/breakpointsView.ts @@ -77,6 +77,7 @@ export class BreakpointsView extends ViewPane { @IContextKeyService contextKeyService: IContextKeyService, @IOpenerService openerService: IOpenerService, @ITelemetryService telemetryService: ITelemetryService, + @ILabelService private readonly labelService: ILabelService ) { super(options, keybindingService, contextMenuService, configurationService, contextKeyService, viewDescriptorService, instantiationService, openerService, themeService, telemetryService); @@ -95,12 +96,12 @@ export class BreakpointsView extends ViewPane { new ExceptionBreakpointsRenderer(this.debugService), this.instantiationService.createInstance(FunctionBreakpointsRenderer), this.instantiationService.createInstance(DataBreakpointsRenderer), - new FunctionBreakpointInputRenderer(this.debugService, this.contextViewService, this.themeService) + new FunctionBreakpointInputRenderer(this.debugService, this.contextViewService, this.themeService, this.labelService) ], { identityProvider: { getId: (element: IEnablement) => element.getId() }, multipleSelectionSupport: false, keyboardNavigationLabelProvider: { getKeyboardNavigationLabel: (e: IEnablement) => e }, - accessibilityProvider: new BreakpointsAccessibilityProvider(this.debugService), + accessibilityProvider: new BreakpointsAccessibilityProvider(this.debugService, this.labelService), overrideStyles: { listBackground: this.getBackgroundColor() } @@ -379,7 +380,7 @@ class BreakpointsRenderer implements IListRenderer { constructor( - @IDebugService private readonly debugService: IDebugService + @IDebugService private readonly debugService: IDebugService, + @ILabelService private readonly labelService: ILabelService ) { // noop } @@ -474,7 +476,7 @@ class FunctionBreakpointsRenderer implements IListRenderer { constructor( - @IDebugService private readonly debugService: IDebugService + @IDebugService private readonly debugService: IDebugService, + @ILabelService private readonly labelService: ILabelService ) { // noop } @@ -529,7 +532,7 @@ class DataBreakpointsRenderer implements IListRenderer { - constructor(private readonly debugService: IDebugService) { } + constructor( + private readonly debugService: IDebugService, + private readonly labelService: ILabelService + ) { } getWidgetAriaLabel(): string { return nls.localize('breakpoints', "Breakpoints"); @@ -658,7 +665,7 @@ class BreakpointsAccessibilityProvider implements IListAccessibilityProvider 0 ? '...' : '') + stackFrame.source.uri.path.substr(from); } +async function expandTo(session: IDebugSession, tree: WorkbenchCompressibleAsyncDataTree): Promise { + if (session.parentSession) { + await expandTo(session.parentSession, tree); + } + await tree.expand(session); +} + export class CallStackView extends ViewPane { private pauseMessage!: HTMLSpanElement; private pauseMessageLabel!: HTMLSpanElement; @@ -114,7 +121,7 @@ export class CallStackView extends ViewPane { private dataSource!: CallStackDataSource; private tree!: WorkbenchCompressibleAsyncDataTree; private menu: IMenu; - private parentSessionToExpand = new Set(); + private autoExpandedSessions = new Set(); private selectionNeedsUpdate = false; constructor( @@ -139,10 +146,14 @@ export class CallStackView extends ViewPane { this._register(this.menu); // Create scheduler to prevent unnecessary flashing of tree when reacting to changes - this.onCallStackChangeScheduler = new RunOnceScheduler(() => { + this.onCallStackChangeScheduler = new RunOnceScheduler(async () => { // Only show the global pause message if we do not display threads. // Otherwise there will be a pause message per thread and there is no need for a global one. const sessions = this.debugService.getModel().getSessions(); + if (sessions.length === 0) { + this.autoExpandedSessions.clear(); + } + const thread = sessions.length === 1 && sessions[0].getAllThreads().length === 1 ? sessions[0].getAllThreads()[0] : undefined; if (thread && thread.stoppedDetails) { this.pauseMessageLabel.textContent = thread.stoppedDetails.description || nls.localize('debugStopped', "Paused on {0}", thread.stoppedDetails.reason || ''); @@ -158,18 +169,26 @@ export class CallStackView extends ViewPane { this.needsRefresh = false; this.dataSource.deemphasizedStackFramesToShow = []; - this.tree.updateChildren().then(() => { - try { - this.parentSessionToExpand.forEach(s => this.tree.expand(s)); - } catch (e) { - // Ignore tree expand errors if element no longer present + await this.tree.updateChildren(); + try { + const toExpand = new Set(); + sessions.forEach(s => { + // Automatically expand sessions that have children, but only do this once. + if (s.parentSession && !this.autoExpandedSessions.has(s.parentSession)) { + toExpand.add(s.parentSession); + } + }); + for (let session of toExpand) { + await expandTo(session, this.tree); + this.autoExpandedSessions.add(session); } - this.parentSessionToExpand.clear(); - if (this.selectionNeedsUpdate) { - this.selectionNeedsUpdate = false; - this.updateTreeSelection(); - } - }); + } catch (e) { + // Ignore tree expand errors if element no longer present + } + if (this.selectionNeedsUpdate) { + this.selectionNeedsUpdate = false; + await this.updateTreeSelection(); + } }, 50); } @@ -208,6 +227,7 @@ export class CallStackView extends ViewPane { ], this.dataSource, { accessibilityProvider: new CallStackAccessibilityProvider(), compressionEnabled: true, + autoExpandSingleChildren: true, identityProvider: { getId: (element: CallStackItem) => { if (typeof element === 'string') { @@ -303,7 +323,7 @@ export class CallStackView extends ViewPane { } })); const onFocusChange = Event.any(this.debugService.getViewModel().onDidFocusStackFrame, this.debugService.getViewModel().onDidFocusSession); - this._register(onFocusChange(() => { + this._register(onFocusChange(async () => { if (this.ignoreFocusStackFrameEvent) { return; } @@ -316,7 +336,7 @@ export class CallStackView extends ViewPane { return; } - this.updateTreeSelection(); + await this.updateTreeSelection(); })); this._register(this.tree.onContextMenu(e => this.onContextMenu(e))); @@ -332,11 +352,9 @@ export class CallStackView extends ViewPane { })); this._register(this.debugService.onDidNewSession(s => { - this._register(s.onDidChangeName(() => this.tree.rerender(s))); - if (s.parentSession) { - // Auto expand sessions that have sub sessions - this.parentSessionToExpand.add(s.parentSession); - } + const sessionListeners: IDisposable[] = []; + sessionListeners.push(s.onDidChangeName(() => this.tree.rerender(s))); + sessionListeners.push(s.onDidEndAdapter(() => dispose(sessionListeners))); })); } @@ -349,7 +367,7 @@ export class CallStackView extends ViewPane { this.tree.domFocus(); } - private updateTreeSelection(): void { + private async updateTreeSelection(): Promise { if (!this.tree || !this.tree.getInput()) { // Tree not initialized yet return; @@ -382,20 +400,18 @@ export class CallStackView extends ViewPane { updateSelectionAndReveal(session); } } else { - const expandPromises = [() => ignoreErrors(this.tree.expand(thread))]; - let s: IDebugSession | undefined = thread.session; - while (s) { - const sessionToExpand = s; - expandPromises.push(() => ignoreErrors(this.tree.expand(sessionToExpand))); - s = s.parentSession; - } + // Ignore errors from this expansions because we are not aware if we rendered the threads and sessions or we hide them to declutter the view + try { + await expandTo(thread.session, this.tree); + } catch (e) { } + try { + await this.tree.expand(thread); + } catch (e) { } - sequence(expandPromises.reverse()).then(() => { - const toReveal = stackFrame || session; - if (toReveal) { - updateSelectionAndReveal(toReveal); - } - }); + const toReveal = stackFrame || session; + if (toReveal) { + updateSelectionAndReveal(toReveal); + } } } @@ -507,8 +523,7 @@ class SessionsRenderer implements ICompressibleTreeRenderer, FuzzyScore>, index: number, templateData: ISessionTemplateData, height: number | undefined): void { const lastElement = node.element.elements[node.element.elements.length - 1]; const matches = createMatches(node.filterData); - const label = node.element.elements.map(e => e.getLabel()).join(' '); - this.doRenderElement(lastElement, label, matches, templateData); + this.doRenderElement(lastElement, node.element.elements[0].getLabel(), matches, templateData); } private doRenderElement(session: IDebugSession, label: string, matches: IMatch[], data: ISessionTemplateData): void { @@ -1087,7 +1102,7 @@ class ContinueAction extends Action { class CallStackCompressionDelegate implements ITreeCompressionDelegate { isIncompressible(stat: CallStackItem): boolean { if (isDebugSession(stat)) { - return false; + return stat.noCompact; } return true; diff --git a/src/vs/workbench/contrib/debug/browser/debug.contribution.ts b/src/vs/workbench/contrib/debug/browser/debug.contribution.ts index a6d43c608e..edde171da6 100644 --- a/src/vs/workbench/contrib/debug/browser/debug.contribution.ts +++ b/src/vs/workbench/contrib/debug/browser/debug.contribution.ts @@ -185,7 +185,7 @@ Registry.as(QuickAccessExtensions.Quickaccess).registerQui }); // register service -registerSingleton(IDebugService, service.DebugService); +registerSingleton(IDebugService, service.DebugService, true); // Register configuration const configurationRegistry = Registry.as(ConfigurationExtensions.Configuration); diff --git a/src/vs/workbench/contrib/debug/browser/debugActionViewItems.ts b/src/vs/workbench/contrib/debug/browser/debugActionViewItems.ts index edef138795..77bb0d12d4 100644 --- a/src/vs/workbench/contrib/debug/browser/debugActionViewItems.ts +++ b/src/vs/workbench/contrib/debug/browser/debugActionViewItems.ts @@ -252,7 +252,9 @@ export class FocusSessionActionViewItem extends SelectActionViewItem { })); this._register(this.debugService.onDidNewSession(session => { - this._register(session.onDidChangeName(() => this.update())); + const sessionListeners: IDisposable[] = []; + sessionListeners.push(session.onDidChangeName(() => this.update())); + sessionListeners.push(session.onDidEndAdapter(() => dispose(sessionListeners))); this.update(); })); this.getSessions().forEach(session => { diff --git a/src/vs/workbench/contrib/debug/browser/debugConfigurationManager.ts b/src/vs/workbench/contrib/debug/browser/debugConfigurationManager.ts index 3790ab8dc9..7df91c09da 100644 --- a/src/vs/workbench/contrib/debug/browser/debugConfigurationManager.ts +++ b/src/vs/workbench/contrib/debug/browser/debugConfigurationManager.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import * as nls from 'vs/nls'; -import { dispose, IDisposable } from 'vs/base/common/lifecycle'; +import { dispose, IDisposable, DisposableStore } from 'vs/base/common/lifecycle'; import { Event, Emitter } from 'vs/base/common/event'; import * as strings from 'vs/base/common/strings'; import * as objects from 'vs/base/common/objects'; @@ -37,7 +37,7 @@ import { CancellationToken, CancellationTokenSource } from 'vs/base/common/cance import { withUndefinedAsNull } from 'vs/base/common/types'; import { sequence } from 'vs/base/common/async'; import { IHistoryService } from 'vs/workbench/services/history/common/history'; -import { first } from 'vs/base/common/arrays'; +import { first, flatten } from 'vs/base/common/arrays'; import { getVisibleAndSorted } from 'vs/workbench/contrib/debug/common/debugUtils'; import { DebugConfigurationProviderTriggerKind } from 'vs/workbench/api/common/extHostTypes'; @@ -47,6 +47,8 @@ jsonRegistry.registerSchema(launchSchemaId, launchSchema); const DEBUG_SELECTED_CONFIG_NAME_KEY = 'debug.selectedconfigname'; const DEBUG_SELECTED_ROOT = 'debug.selectedroot'; +interface IDynamicPickItem { label: string, launch: ILaunch, config: IConfig } + export class ConfigurationManager implements IConfigurationManager { private debuggers: Debugger[]; private breakpointModeIdsSet = new Set(); @@ -251,23 +253,60 @@ export class ConfigurationManager implements IConfigurationManager { async getDynamicProviders(): Promise<{ label: string, pick: () => Promise<{ launch: ILaunch, config: IConfig } | undefined> }[]> { const extensions = await this.extensionService.getExtensions(); const onDebugDynamicConfigurationsName = 'onDebugDynamicConfigurations'; - const debugDynamicExtensionsTypes = extensions.map(e => { - const activationEvent = e.activationEvents && e.activationEvents.find(e => e.includes(onDebugDynamicConfigurationsName)); - if (activationEvent) { - const type = activationEvent.substr(onDebugDynamicConfigurationsName.length + 1); - return type || (e.contributes && e.contributes.debuggers && e.contributes.debuggers.length ? e.contributes.debuggers[0].type : undefined); + const debugDynamicExtensionsTypes = extensions.reduce((acc, e) => { + if (!e.activationEvents) { + return acc; } - return undefined; - }).filter(type => typeof type === 'string' && !!this.getDebuggerLabel(type)) as string[]; + const explicitTypes: string[] = []; + let hasGenericEvent = false; + for (const event of e.activationEvents) { + if (event === onDebugDynamicConfigurationsName) { + hasGenericEvent = true; + } else if (event.startsWith(`${onDebugDynamicConfigurationsName}:`)) { + explicitTypes.push(event.slice(onDebugDynamicConfigurationsName.length + 1)); + } + } + + if (explicitTypes.length) { + return acc.concat(explicitTypes); + } + + if (hasGenericEvent) { + const debuggerType = e.contributes?.debuggers?.[0].type; + return debuggerType ? acc.concat(debuggerType) : acc; + } + + return acc; + }, [] as string[]); return debugDynamicExtensionsTypes.map(type => { return { label: this.getDebuggerLabel(type)!, pick: async () => { + const disposables = new DisposableStore(); + const input = disposables.add(this.quickInputService.createQuickPick()); + input.busy = true; + input.placeholder = nls.localize('selectConfiguration', "Select Launch Configuration"); + input.show(); + + let chosenDidCancel = false; + const chosenPromise = new Promise(resolve => { + disposables.add(input.onDidAccept(() => resolve(input.activeItems[0]))); + disposables.add(input.onDidTriggerItemButton(async (context) => { + resolve(undefined); + const { launch, config } = context.item; + await launch.openConfigFile(false, config.type); + // Only Launch have a pin trigger button + await (launch as Launch).writeConfiguration(config); + this.selectConfiguration(launch, config.name); + })); + disposables.add(input.onDidHide(() => { chosenDidCancel = true; resolve(); })); + }); + await this.activateDebuggers(onDebugDynamicConfigurationsName, type); const token = new CancellationTokenSource(); - const picks: Promise<{ label: string, launch: ILaunch, config: IConfig }[]>[] = []; + const picks: Promise[] = []; const provider = this.configProviders.filter(p => p.type === type && p.triggerKind === DebugConfigurationProviderTriggerKind.Dynamic && p.provideDebugConfigurations)[0]; this.getLaunches().forEach(launch => { if (launch.workspace && provider) { @@ -282,25 +321,30 @@ export class ConfigurationManager implements IConfigurationManager { })))); } }); - const promiseOfPicks = Promise.all(picks).then(result => result.reduce((first, second) => first.concat(second), [])); - const result = await this.quickInputService.pick<{ label: string, launch: ILaunch, config: IConfig }>(promiseOfPicks, { - placeHolder: nls.localize('selectConfiguration', "Select Launch Configuration"), - onDidTriggerItemButton: async (context) => { - await this.quickInputService.cancel(); - const { launch, config } = context.item; - await launch.openConfigFile(false, config.type); - // Only Launch have a pin trigger button - await (launch as Launch).writeConfiguration(config); - this.selectConfiguration(launch, config.name); - } - }); - if (!result) { - // User canceled quick input we should notify the provider to cancel computing configurations - token.cancel(); + const nestedPicks = await Promise.all(picks); + const items = flatten(nestedPicks); + + let chosen: IDynamicPickItem | undefined; + + // If there's exactly one item to choose from, pick it automatically + if (items.length === 1 && !chosenDidCancel) { + chosen = items[0]; + } else { + input.items = items; + input.busy = false; + chosen = await chosenPromise; } - return result; + disposables.dispose(); + + if (!chosen) { + // User canceled quick input we should notify the provider to cancel computing configurations + token.cancel(); + return undefined; // {{SQL CARBON EDIT}} strict-null-checks + } + + return chosen; } }; }); diff --git a/src/vs/workbench/contrib/debug/browser/debugProgress.ts b/src/vs/workbench/contrib/debug/browser/debugProgress.ts index 734290af88..5dec6eeda0 100644 --- a/src/vs/workbench/contrib/debug/browser/debugProgress.ts +++ b/src/vs/workbench/contrib/debug/browser/debugProgress.ts @@ -8,14 +8,16 @@ import { IWorkbenchContribution } from 'vs/workbench/common/contributions'; import { IDebugService, VIEWLET_ID, IDebugSession } from 'vs/workbench/contrib/debug/common/debug'; import { IProgressService, ProgressLocation } from 'vs/platform/progress/common/progress'; import { dispose, IDisposable } from 'vs/base/common/lifecycle'; +import { IViewsService } from 'vs/workbench/common/views'; export class DebugProgressContribution implements IWorkbenchContribution { private toDispose: IDisposable[] = []; constructor( - @IDebugService private readonly debugService: IDebugService, - @IProgressService private readonly progressService: IProgressService + @IDebugService debugService: IDebugService, + @IProgressService progressService: IProgressService, + @IViewsService viewsService: IViewsService ) { let progressListener: IDisposable | undefined; const listenOnProgress = (session: IDebugSession | undefined) => { @@ -34,9 +36,11 @@ export class DebugProgressContribution implements IWorkbenchContribution { }); }); - this.progressService.withProgress({ location: VIEWLET_ID }, () => promise); - const source = this.debugService.getConfigurationManager().getDebuggerLabel(session.configuration.type); - this.progressService.withProgress({ + if (viewsService.isViewContainerVisible(VIEWLET_ID)) { + progressService.withProgress({ location: VIEWLET_ID }, () => promise); + } + const source = debugService.getConfigurationManager().getDebuggerLabel(session.configuration.type); + progressService.withProgress({ location: ProgressLocation.Notification, title: progressStartEvent.body.title, cancellable: progressStartEvent.body.cancellable, @@ -72,9 +76,9 @@ export class DebugProgressContribution implements IWorkbenchContribution { }); } }; - this.toDispose.push(this.debugService.getViewModel().onDidFocusSession(listenOnProgress)); - listenOnProgress(this.debugService.getViewModel().focusedSession); - this.toDispose.push(this.debugService.onWillNewSession(session => { + this.toDispose.push(debugService.getViewModel().onDidFocusSession(listenOnProgress)); + listenOnProgress(debugService.getViewModel().focusedSession); + this.toDispose.push(debugService.onWillNewSession(session => { if (!progressListener) { listenOnProgress(session); } diff --git a/src/vs/workbench/contrib/debug/browser/debugSession.ts b/src/vs/workbench/contrib/debug/browser/debugSession.ts index 96dd51ce31..f8689e410e 100644 --- a/src/vs/workbench/contrib/debug/browser/debugSession.ts +++ b/src/vs/workbench/contrib/debug/browser/debugSession.ts @@ -129,6 +129,10 @@ export class DebugSession implements IDebugSession { return this._options.parentSession; } + get noCompact(): boolean { + return !!this._options.noCompact; + } + setConfiguration(configuration: { resolved: IConfig, unresolved: IConfig | undefined }) { this._configuration = configuration; } diff --git a/src/vs/workbench/contrib/debug/browser/debugTaskRunner.ts b/src/vs/workbench/contrib/debug/browser/debugTaskRunner.ts index 236937ec3a..5cde5219dc 100644 --- a/src/vs/workbench/contrib/debug/browser/debugTaskRunner.ts +++ b/src/vs/workbench/contrib/debug/browser/debugTaskRunner.ts @@ -69,7 +69,7 @@ export class DebugTaskRunner { return TaskRunResult.Success; } if (onTaskErrors === 'showErrors') { - await this.viewsService.openView(Constants.MARKERS_VIEW_ID); + await this.viewsService.openView(Constants.MARKERS_VIEW_ID, true); return Promise.resolve(TaskRunResult.Failure); } if (onTaskErrors === 'abort') { @@ -106,7 +106,7 @@ export class DebugTaskRunner { return TaskRunResult.Success; } - await this.viewsService.openView(Constants.MARKERS_VIEW_ID); + await this.viewsService.openView(Constants.MARKERS_VIEW_ID, true); return Promise.resolve(TaskRunResult.Failure); } catch (err) { await onError(err.message, [this.taskService.configureAction()]); diff --git a/src/vs/workbench/contrib/debug/browser/debugToolBar.ts b/src/vs/workbench/contrib/debug/browser/debugToolBar.ts index 0f1185ae73..917a3dda12 100644 --- a/src/vs/workbench/contrib/debug/browser/debugToolBar.ts +++ b/src/vs/workbench/contrib/debug/browser/debugToolBar.ts @@ -364,7 +364,7 @@ registerThemingParticipant((theme, collector) => { const debugIconStopColor = theme.getColor(debugIconStopForeground); if (debugIconStopColor) { - collector.addRule(`.monaco-workbench .codicon-debug-stop { color: ${debugIconStopColor} !important; }`); + collector.addRule(`.monaco-workbench .codicon-debug-stop, .monaco-workbench .debug-view-content .codicon-record { color: ${debugIconStopColor} !important; }`); } const debugIconDisconnectColor = theme.getColor(debugIconDisconnectForeground); diff --git a/src/vs/workbench/contrib/debug/browser/extensionHostDebugService.ts b/src/vs/workbench/contrib/debug/browser/extensionHostDebugService.ts index 571a574f5f..f40171e68c 100644 --- a/src/vs/workbench/contrib/debug/browser/extensionHostDebugService.ts +++ b/src/vs/workbench/contrib/debug/browser/extensionHostDebugService.ts @@ -6,7 +6,7 @@ import { ExtensionHostDebugChannelClient, ExtensionHostDebugBroadcastChannel } from 'vs/platform/debug/common/extensionHostDebugIpc'; import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; -import { IExtensionHostDebugService } from 'vs/platform/debug/common/extensionHostDebug'; +import { IExtensionHostDebugService, IOpenExtensionWindowResult } from 'vs/platform/debug/common/extensionHostDebug'; import { IDebugHelperService } from 'vs/workbench/contrib/debug/common/debug'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { TelemetryService } from 'vs/platform/telemetry/common/telemetryService'; @@ -62,7 +62,7 @@ class BrowserExtensionHostDebugService extends ExtensionHostDebugChannelClient i })); } - openExtensionDevelopmentHostWindow(args: string[], env: IProcessEnvironment): Promise { + async openExtensionDevelopmentHostWindow(args: string[], env: IProcessEnvironment): Promise { // Find out which workspace to open debug window on let debugWorkspace: IWorkspace = undefined; @@ -110,10 +110,12 @@ class BrowserExtensionHostDebugService extends ExtensionHostDebugChannelClient i } // Open debug window as new window. Pass ParsedArgs over. - return this.workspaceProvider.open(debugWorkspace, { + await this.workspaceProvider.open(debugWorkspace, { reuse: false, // debugging always requires a new window payload: Array.from(environment.entries()) // mandatory properties to enable debugging }); + + return {}; } private findArgument(key: string, args: string[]): string | undefined { @@ -128,7 +130,7 @@ class BrowserExtensionHostDebugService extends ExtensionHostDebugChannelClient i } } -registerSingleton(IExtensionHostDebugService, BrowserExtensionHostDebugService); +registerSingleton(IExtensionHostDebugService, BrowserExtensionHostDebugService, true); class BrowserDebugHelperService implements IDebugHelperService { @@ -139,4 +141,4 @@ class BrowserDebugHelperService implements IDebugHelperService { } } -registerSingleton(IDebugHelperService, BrowserDebugHelperService); +registerSingleton(IDebugHelperService, BrowserDebugHelperService, true); diff --git a/src/vs/workbench/contrib/debug/browser/loadedScriptsView.ts b/src/vs/workbench/contrib/debug/browser/loadedScriptsView.ts index 8e36cda158..47dd86fce8 100644 --- a/src/vs/workbench/contrib/debug/browser/loadedScriptsView.ts +++ b/src/vs/workbench/contrib/debug/browser/loadedScriptsView.ts @@ -310,7 +310,7 @@ class SessionTreeItem extends BaseTreeItem { return 999; } - addPath(source: Source): void { + async addPath(source: Source): Promise { let folder: IWorkspaceFolder | null; let url: string; @@ -347,9 +347,8 @@ class SessionTreeItem extends BaseTreeItem { } else { // on unix try to tildify absolute paths path = normalize(path); - const userHome = this._pathService.resolvedUserHome; - if (userHome && !isWindows) { - path = tildify(path, userHome.fsPath); + if (!isWindows) { + path = tildify(path, (await this._pathService.userHome()).fsPath); } } } @@ -518,27 +517,28 @@ export class LoadedScriptsView extends ViewPane { } }; - const addSourcePathsToSession = (session: IDebugSession) => { + const addSourcePathsToSession = async (session: IDebugSession) => { const sessionNode = root.add(session); - return session.getLoadedSources().then(paths => { - paths.forEach(path => sessionNode.addPath(path)); - scheduleRefreshOnVisible(); - }); + const paths = await session.getLoadedSources(); + for (const path of paths) { + await sessionNode.addPath(path); + } + scheduleRefreshOnVisible(); }; const registerSessionListeners = (session: IDebugSession) => { - this._register(session.onDidChangeName(() => { + this._register(session.onDidChangeName(async () => { // Re-add session, this will trigger proper sorting and id recalculation. root.remove(session.getId()); - addSourcePathsToSession(session); + await addSourcePathsToSession(session); })); - this._register(session.onDidLoadedSource(event => { + this._register(session.onDidLoadedSource(async event => { let sessionRoot: SessionTreeItem; switch (event.reason) { case 'new': case 'changed': sessionRoot = root.add(session); - sessionRoot.addPath(event.source); + await sessionRoot.addPath(event.source); scheduleRefreshOnVisible(); if (event.reason === 'changed') { DebugContentProvider.refreshDebugContent(event.source.uri); diff --git a/src/vs/workbench/contrib/debug/browser/media/debugViewlet.css b/src/vs/workbench/contrib/debug/browser/media/debugViewlet.css index e9d0935297..2394c299e3 100644 --- a/src/vs/workbench/contrib/debug/browser/media/debugViewlet.css +++ b/src/vs/workbench/contrib/debug/browser/media/debugViewlet.css @@ -51,6 +51,8 @@ margin-top: 0px; cursor: pointer; line-height: inherit; + padding-top: 0; + padding-bottom: 0; } .monaco-workbench .monaco-action-bar .start-debug-action-item .configuration.disabled .monaco-select-box { @@ -75,7 +77,8 @@ cursor: initial; } -/* Make icons the same color as the list foreground on focus selection */ +/* Make icons and text the same color as the list foreground on focus selection */ +.debug-pane .monaco-list:focus .monaco-list-row.selected.focused .state > .label, .debug-pane .monaco-list:focus .monaco-list-row.selected.focused .codicon { color: inherit !important; } diff --git a/src/vs/workbench/contrib/debug/browser/rawDebugSession.ts b/src/vs/workbench/contrib/debug/browser/rawDebugSession.ts index 26d62e6365..2be19eca4d 100644 --- a/src/vs/workbench/contrib/debug/browser/rawDebugSession.ts +++ b/src/vs/workbench/contrib/debug/browser/rawDebugSession.ts @@ -12,7 +12,7 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { formatPII, isUri } from 'vs/workbench/contrib/debug/common/debugUtils'; import { IDebugAdapter, IConfig, AdapterEndEvent, IDebugger } from 'vs/workbench/contrib/debug/common/debug'; import { createErrorWithActions } from 'vs/base/common/errorsWithActions'; -import { IExtensionHostDebugService } from 'vs/platform/debug/common/extensionHostDebug'; +import { IExtensionHostDebugService, IOpenExtensionWindowResult } from 'vs/platform/debug/common/extensionHostDebug'; import { URI } from 'vs/base/common/uri'; import { IProcessEnvironment } from 'vs/base/common/platform'; import { env as processEnv } from 'vs/base/common/process'; @@ -33,6 +33,7 @@ interface ILaunchVSCodeArgument { interface ILaunchVSCodeArguments { args: ILaunchVSCodeArgument[]; + debugRenderer?: boolean; env?: { [key: string]: string | null; }; } @@ -550,8 +551,9 @@ export class RawDebugSession implements IDisposable { switch (request.command) { case 'launchVSCode': - this.launchVsCode(request.arguments).then(_ => { + this.launchVsCode(request.arguments).then(result => { response.body = { + rendererDebugPort: result.rendererDebugPort, //processId: pid }; safeSendResponse(response); @@ -584,7 +586,7 @@ export class RawDebugSession implements IDisposable { } } - private launchVsCode(vscodeArgs: ILaunchVSCodeArguments): Promise { + private launchVsCode(vscodeArgs: ILaunchVSCodeArguments): Promise { const args: string[] = []; @@ -612,7 +614,7 @@ export class RawDebugSession implements IDisposable { Object.keys(env).filter(k => env[k] === null).forEach(key => delete env[key]); } - return this.extensionHostDebugService.openExtensionDevelopmentHostWindow(args, env); + return this.extensionHostDebugService.openExtensionDevelopmentHostWindow(args, env, !!vscodeArgs.debugRenderer); } private send(command: string, args: any, token?: CancellationToken, timeout?: number): Promise { diff --git a/src/vs/workbench/contrib/debug/common/debug.ts b/src/vs/workbench/contrib/debug/common/debug.ts index 4a8793bed0..7bddb2e643 100644 --- a/src/vs/workbench/contrib/debug/common/debug.ts +++ b/src/vs/workbench/contrib/debug/common/debug.ts @@ -157,6 +157,7 @@ export interface IDebugSessionOptions { parentSession?: IDebugSession; repl?: IDebugSessionReplMode; compoundRoot?: DebugCompoundRoot; + noCompact?: boolean; } export interface IDebugSession extends ITreeElement { @@ -167,6 +168,7 @@ export interface IDebugSession extends ITreeElement { readonly root: IWorkspaceFolder | undefined; readonly parentSession: IDebugSession | undefined; readonly subId: string | undefined; + readonly noCompact: boolean; setSubId(subId: string | undefined): void; diff --git a/src/vs/workbench/contrib/debug/node/debugHelperService.ts b/src/vs/workbench/contrib/debug/node/debugHelperService.ts index 62b7b6dc78..63ecba3475 100644 --- a/src/vs/workbench/contrib/debug/node/debugHelperService.ts +++ b/src/vs/workbench/contrib/debug/node/debugHelperService.ts @@ -47,4 +47,4 @@ export class NodeDebugHelperService implements IDebugHelperService { } } -registerSingleton(IDebugHelperService, NodeDebugHelperService); +registerSingleton(IDebugHelperService, NodeDebugHelperService, true); diff --git a/src/vs/workbench/contrib/debug/test/common/mockDebug.ts b/src/vs/workbench/contrib/debug/test/common/mockDebug.ts index 3e43baaf86..0c267d0b65 100644 --- a/src/vs/workbench/contrib/debug/test/common/mockDebug.ts +++ b/src/vs/workbench/contrib/debug/test/common/mockDebug.ts @@ -135,7 +135,6 @@ export class MockDebugService implements IDebugService { } export class MockSession implements IDebugSession { - stepInTargets(frameId: number): Promise<{ id: number; label: string; }[]> { throw new Error('Method not implemented.'); } @@ -158,6 +157,10 @@ export class MockSession implements IDebugSession { subId: string | undefined; + get noCompact(): boolean { + return false; + } + setSubId(subId: string | undefined): void { throw new Error('Method not implemented.'); } diff --git a/src/vs/workbench/contrib/extensions/browser/extensionRecommendations.ts b/src/vs/workbench/contrib/extensions/browser/extensionRecommendations.ts index 0dccbaa4d3..d4e9e4f467 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionRecommendations.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionRecommendations.ts @@ -8,12 +8,13 @@ import { INotificationService, Severity } from 'vs/platform/notification/common/ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { localize } from 'vs/nls'; -import { InstallRecommendedExtensionAction, ShowRecommendedExtensionsAction } from 'vs/workbench/contrib/extensions/browser/extensionsActions'; +import { InstallRecommendedExtensionAction, ShowRecommendedExtensionAction } from 'vs/workbench/contrib/extensions/browser/extensionsActions'; import { ExtensionRecommendationSource, IExtensionRecommendationReson } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; import { IExtensionsConfiguration, ConfigurationKey } from 'vs/workbench/contrib/extensions/common/extensions'; import { IConfigurationService, ConfigurationTarget } from 'vs/platform/configuration/common/configuration'; import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; import { IStorageKeysSyncRegistryService } from 'vs/platform/userDataSync/common/storageKeys'; +import { IAction } from 'vs/base/common/actions'; type ExtensionRecommendationsNotificationClassification = { userReaction: { classification: 'SystemMetaData', purpose: 'FeatureInsight' }; @@ -56,22 +57,27 @@ export abstract class ExtensionRecommendations extends Disposable { return this._activationPromise; } + private runAction(action: IAction) { + try { + action.run(); + } finally { + action.dispose(); + } + } + protected promptImportantExtensionInstallNotification(extensionId: string, message: string): void { this.notificationService.prompt(Severity.Info, message, [{ label: localize('install', 'Install'), run: () => { this.telemetryService.publicLog2<{ userReaction: string, extensionId: string }, ExtensionRecommendationsNotificationClassification>('extensionRecommendations:popup', { userReaction: 'install', extensionId }); - this.instantiationService.createInstance(InstallRecommendedExtensionAction, extensionId).run(); + this.runAction(this.instantiationService.createInstance(InstallRecommendedExtensionAction, extensionId)); } }, { - label: localize('showRecommendations', "Show Recommendations"), + label: localize('moreInformation', "More Information"), run: () => { this.telemetryService.publicLog2<{ userReaction: string, extensionId: string }, ExtensionRecommendationsNotificationClassification>('extensionRecommendations:popup', { userReaction: 'show', extensionId }); - - const recommendationsAction = this.instantiationService.createInstance(ShowRecommendedExtensionsAction, ShowRecommendedExtensionsAction.ID, localize('showRecommendations', "Show Recommendations")); - recommendationsAction.run(); - recommendationsAction.dispose(); + this.runAction(this.instantiationService.createInstance(ShowRecommendedExtensionAction, extensionId)); } }, { label: choiceNever, diff --git a/src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts b/src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts index 432e6ca0d5..f8251ef534 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts @@ -153,7 +153,7 @@ actionRegistry.registerWorkbenchAction(checkForUpdatesAction, `Extensions: Check actionRegistry.registerWorkbenchAction(SyncActionDescriptor.from(EnableAutoUpdateAction), `Extensions: Enable Auto Updating Extensions`, ExtensionsLabel); actionRegistry.registerWorkbenchAction(SyncActionDescriptor.from(DisableAutoUpdateAction), `Extensions: Disable Auto Updating Extensions`, ExtensionsLabel); actionRegistry.registerWorkbenchAction(SyncActionDescriptor.from(InstallSpecificVersionOfExtensionAction), 'Install Specific Version of Extension...', ExtensionsLabel); -actionRegistry.registerWorkbenchAction(SyncActionDescriptor.from(ReinstallAction), 'Reinstall Extension...', localize('developer', "Developer")); +actionRegistry.registerWorkbenchAction(SyncActionDescriptor.from(ReinstallAction), 'Reinstall Extension...', localize({ key: 'developer', comment: ['A developer on Code itself or someone diagnosing issues in Code'] }, "Developer")); Registry.as(ConfigurationExtensions.Configuration) .registerConfiguration({ @@ -202,6 +202,11 @@ Registry.as(ConfigurationExtensions.Configuration) type: 'array', description: localize('handleUriConfirmedExtensions', "When an extension is listed here, a confirmation prompt will not be shown when that extension handles a URI."), default: [] + }, + 'extensions.webWorker': { + type: 'boolean', + description: localize('extensionsWebWorker', "Enable web worker extension host."), + default: false } } }); @@ -473,9 +478,10 @@ class ExtensionsContributions implements IWorkbenchContribution { @IExtensionManagementServerService extensionManagementServerService: IExtensionManagementServerService ) { - const canManageExtensions = extensionManagementServerService.localExtensionManagementServer || extensionManagementServerService.remoteExtensionManagementServer; - - if (canManageExtensions) { + if (extensionManagementServerService.localExtensionManagementServer + || extensionManagementServerService.remoteExtensionManagementServer + || extensionManagementServerService.webExtensionManagementServer + ) { Registry.as(Extensions.Quickaccess).registerQuickAccessProvider({ ctor: InstallExtensionQuickAccessProvider, prefix: InstallExtensionQuickAccessProvider.PREFIX, diff --git a/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts b/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts index 9456b5dafc..344628760d 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts @@ -26,7 +26,7 @@ import { Query } from 'vs/workbench/contrib/extensions/common/extensionQuery'; import { IFileService, IFileContent } from 'vs/platform/files/common/files'; import { IWorkspaceContextService, WorkbenchState, IWorkspaceFolder } from 'vs/platform/workspace/common/workspace'; import { IHostService } from 'vs/workbench/services/host/browser/host'; -import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; +import { IExtensionService, toExtension } from 'vs/workbench/services/extensions/common/extensions'; import { URI } from 'vs/base/common/uri'; import { CommandsRegistry, ICommandService } from 'vs/platform/commands/common/commands'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; @@ -1280,7 +1280,7 @@ export class ReloadAction extends ExtensionAction { const isUninstalled = this.extension.state === ExtensionState.Uninstalled; const runningExtension = this._runningExtensions.filter(e => areSameExtensions({ id: e.identifier.value, uuid: e.uuid }, this.extension!.identifier))[0]; - const isSameExtensionRunning = runningExtension && this.extension.server === this.extensionManagementServerService.getExtensionManagementServer(runningExtension.extensionLocation); + const isSameExtensionRunning = runningExtension && this.extension.server === this.extensionManagementServerService.getExtensionManagementServer(toExtension(runningExtension)); if (isUninstalled) { if (isSameExtensionRunning && !this.extensionService.canRemoveExtension(runningExtension)) { @@ -1302,7 +1302,7 @@ export class ReloadAction extends ExtensionAction { if (this.extensionService.canAddExtension(toExtensionDescription(this.extension.local))) { return; } - const runningExtensionServer = this.extensionManagementServerService.getExtensionManagementServer(runningExtension.extensionLocation); + const runningExtensionServer = this.extensionManagementServerService.getExtensionManagementServer(toExtension(runningExtension)); if (isSameExtensionRunning) { // Different version of same extension is running. Requires reload to run the current version @@ -1665,7 +1665,7 @@ export class ShowDisabledExtensionsAction extends Action { export class ClearExtensionsInputAction extends Action { static readonly ID = 'workbench.extensions.action.clearExtensionsInput'; - static readonly LABEL = localize('clearExtensionsInput', "Clear Extensions Input"); + static readonly LABEL = localize('clearExtensionsInput', "Clear Extensions Search Results"); constructor( id: string, @@ -1848,6 +1848,40 @@ export class InstallWorkspaceRecommendedExtensionsAction extends Action { } } +export class ShowRecommendedExtensionAction extends Action { + + static readonly ID = 'workbench.extensions.action.showRecommendedExtension'; + static readonly LABEL = localize('showRecommendedExtension', "Show Recommended Extension"); + + private extensionId: string; + + constructor( + extensionId: string, + @IViewletService private readonly viewletService: IViewletService, + @IExtensionsWorkbenchService private readonly extensionWorkbenchService: IExtensionsWorkbenchService, + ) { + super(InstallRecommendedExtensionAction.ID, InstallRecommendedExtensionAction.LABEL, undefined, false); + this.extensionId = extensionId; + } + + run(): Promise { + return this.viewletService.openViewlet(VIEWLET_ID, true) + .then(viewlet => viewlet?.getViewPaneContainer() as IExtensionsViewPaneContainer) + .then(viewlet => { + viewlet.search(`@id:${this.extensionId}`); + viewlet.focus(); + return this.extensionWorkbenchService.queryGallery({ names: [this.extensionId], source: 'install-recommendation', pageSize: 1 }, CancellationToken.None) + .then(pager => { + if (pager && pager.firstPage && pager.firstPage.length) { + const extension = pager.firstPage[0]; + return this.extensionWorkbenchService.open(extension); + } + return null; + }); + }); + } +} + export class InstallRecommendedExtensionAction extends Action { static readonly ID = 'workbench.extensions.action.installRecommendedExtension'; @@ -1876,6 +1910,7 @@ export class InstallRecommendedExtensionAction extends Action { if (pager && pager.firstPage && pager.firstPage.length) { const extension = pager.firstPage[0]; return this.extensionWorkbenchService.install(extension) + .then(() => this.extensionWorkbenchService.open(extension)) .then(() => null, err => { console.error(err); return promptDownloadManually(extension.gallery, localize('failedToInstall', "Failed to install \'{0}\'.", extension.identifier.id), err, this.instantiationService); @@ -2612,7 +2647,7 @@ export class StatusLabelAction extends Action implements IExtensionContainer { }; const canRemoveExtension = () => { if (this.extension!.local) { - if (runningExtensions.every(e => !(areSameExtensions({ id: e.identifier.value, uuid: e.uuid }, this.extension!.identifier) && this.extension!.server === this.extensionManagementServerService.getExtensionManagementServer(e.extensionLocation)))) { + if (runningExtensions.every(e => !(areSameExtensions({ id: e.identifier.value, uuid: e.uuid }, this.extension!.identifier) && this.extension!.server === this.extensionManagementServerService.getExtensionManagementServer(toExtension(e))))) { return true; } return this.extensionService.canRemoveExtension(toExtensionDescription(this.extension!.local)); @@ -2657,7 +2692,7 @@ export class MaliciousStatusLabelAction extends ExtensionAction { constructor(long: boolean) { const tooltip = localize('malicious tooltip', "This extension was reported to be problematic."); - const label = long ? tooltip : localize('malicious', "Malicious"); + const label = long ? tooltip : localize({ key: 'malicious', comment: ['Refers to a malicious extension'] }, "Malicious"); super('extensions.install', label, '', false); this.tooltip = localize('malicious tooltip', "This extension was reported to be problematic."); } @@ -2844,7 +2879,7 @@ export class SystemDisabledWarningAction extends ExtensionAction { } if (this.extensionManagementServerService.localExtensionManagementServer && this.extensionManagementServerService.remoteExtensionManagementServer) { const runningExtension = this._runningExtensions.filter(e => areSameExtensions({ id: e.identifier.value, uuid: e.uuid }, this.extension!.identifier))[0]; - const runningExtensionServer = runningExtension ? this.extensionManagementServerService.getExtensionManagementServer(runningExtension.extensionLocation) : null; + const runningExtensionServer = runningExtension ? this.extensionManagementServerService.getExtensionManagementServer(toExtension(runningExtension)) : null; if (this.extension.server === this.extensionManagementServerService.localExtensionManagementServer && runningExtensionServer === this.extensionManagementServerService.remoteExtensionManagementServer) { if (prefersExecuteOnWorkspace(this.extension.local!.manifest, this.productService, this.configurationService)) { this.class = `${SystemDisabledWarningAction.INFO_CLASS}`; diff --git a/src/vs/workbench/contrib/extensions/browser/extensionsList.ts b/src/vs/workbench/contrib/extensions/browser/extensionsList.ts index b9d235c01a..1116e959a0 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionsList.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionsList.ts @@ -16,8 +16,8 @@ import { domEvent } from 'vs/base/browser/event'; import { IExtension, ExtensionContainers, ExtensionState, IExtensionsWorkbenchService } from 'vs/workbench/contrib/extensions/common/extensions'; import { InstallAction, UpdateAction, ManageExtensionAction, ReloadAction, MaliciousStatusLabelAction, ExtensionActionViewItem, StatusLabelAction, RemoteInstallAction, SystemDisabledWarningAction, ExtensionToolTipAction, LocalInstallAction, SyncIgnoredIconAction } from 'vs/workbench/contrib/extensions/browser/extensionsActions'; import { areSameExtensions } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; -import { Label, RatingsWidget, /*InstallCountWidget, */RecommendationWidget, RemoteBadgeWidget, TooltipWidget, ExtensionPackCountWidget as ExtensionPackBadgeWidget } from 'vs/workbench/contrib/extensions/browser/extensionsWidgets'; -import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; +import { Label, RatingsWidget, /*InstallCountWidget,*/ RecommendationWidget, RemoteBadgeWidget, TooltipWidget, ExtensionPackCountWidget as ExtensionPackBadgeWidget } from 'vs/workbench/contrib/extensions/browser/extensionsWidgets'; +import { IExtensionService, toExtension } from 'vs/workbench/services/extensions/common/extensions'; import { IExtensionManagementServerService } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; import { INotificationService } from 'vs/platform/notification/common/notification'; import { isLanguagePackExtension } from 'vs/platform/extensions/common/extensions'; @@ -167,7 +167,7 @@ export class Renderer implements IPagedRenderer { isDisabled = false; if (extension.local && !isLanguagePackExtension(extension.local.manifest)) { const runningExtension = runningExtensions.filter(e => areSameExtensions({ id: e.identifier.value, uuid: e.uuid }, extension.identifier))[0]; - isDisabled = !(runningExtension && extension.server === this.extensionManagementServerService.getExtensionManagementServer(runningExtension.extensionLocation)); + isDisabled = !(runningExtension && extension.server === this.extensionManagementServerService.getExtensionManagementServer(toExtension(runningExtension))); } toggleClass(data.root, 'disabled', isDisabled); }; diff --git a/src/vs/workbench/contrib/extensions/browser/extensionsViewlet.ts b/src/vs/workbench/contrib/extensions/browser/extensionsViewlet.ts index cb38aa9ec2..2c89be7afd 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionsViewlet.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionsViewlet.ts @@ -199,19 +199,19 @@ export class ExtensionsViewletViewsContribution implements IWorkbenchContributio const getOutdatedViewName = (): string => getViewName(localize('outdated', "Outdated"), server); const onDidChangeServerLabel: EventOf = EventOf.map(this.labelService.onDidChangeFormatters, () => undefined); return [{ - id: `extensions.${server.authority}.installed`, + id: `extensions.${server.id}.installed`, get name() { return getInstalledViewName(); }, ctorDescriptor: new SyncDescriptor(ServerExtensionsView, [server, EventOf.map(onDidChangeServerLabel, () => getInstalledViewName())]), when: ContextKeyExpr.and(ContextKeyExpr.has('searchInstalledExtensions')), weight: 100 }, { - id: `extensions.${server.authority}.outdated`, + id: `extensions.${server.id}.outdated`, get name() { return getOutdatedViewName(); }, ctorDescriptor: new SyncDescriptor(ServerExtensionsView, [server, EventOf.map(onDidChangeServerLabel, () => getOutdatedViewName())]), when: ContextKeyExpr.and(ContextKeyExpr.has('searchOutdatedExtensions')), weight: 100 }, { - id: `extensions.${server.authority}.default`, + id: `extensions.${server.id}.default`, get name() { return getInstalledViewName(); }, ctorDescriptor: new SyncDescriptor(ServerExtensionsView, [server, EventOf.map(onDidChangeServerLabel, () => getInstalledViewName())]), when: ContextKeyExpr.and(ContextKeyExpr.has('defaultExtensionViews'), ContextKeyExpr.has('hasInstalledExtensions'), RemoteNameContext.notEqualsTo('')), diff --git a/src/vs/workbench/contrib/extensions/browser/extensionsViews.ts b/src/vs/workbench/contrib/extensions/browser/extensionsViews.ts index 9774189012..d663d3289d 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionsViews.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionsViews.ts @@ -19,7 +19,7 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti import { Delegate, Renderer, IExtensionsViewState } from 'vs/workbench/contrib/extensions/browser/extensionsList'; import { IExtension, IExtensionsWorkbenchService, ExtensionState } from 'vs/workbench/contrib/extensions/common/extensions'; import { Query } from 'vs/workbench/contrib/extensions/common/extensionQuery'; -import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; +import { IExtensionService, toExtension } from 'vs/workbench/services/extensions/common/extensions'; import { IThemeService } from 'vs/platform/theme/common/themeService'; import { attachBadgeStyler } from 'vs/platform/theme/common/styler'; import { IViewletViewOptions } from 'vs/workbench/browser/parts/views/viewsViewlet'; @@ -373,9 +373,9 @@ export class ExtensionsListView extends ViewPane { const runningExtensionsById = runningExtensions.reduce((result, e) => { result.set(ExtensionIdentifier.toKey(e.identifier.value), e); return result; }, new Map()); result = result.sort((e1, e2) => { const running1 = runningExtensionsById.get(ExtensionIdentifier.toKey(e1.identifier.id)); - const isE1Running = running1 && this.extensionManagementServerService.getExtensionManagementServer(running1.extensionLocation) === e1.server; + const isE1Running = running1 && this.extensionManagementServerService.getExtensionManagementServer(toExtension(running1)) === e1.server; const running2 = runningExtensionsById.get(ExtensionIdentifier.toKey(e2.identifier.id)); - const isE2Running = running2 && this.extensionManagementServerService.getExtensionManagementServer(running2.extensionLocation) === e2.server; + const isE2Running = running2 && this.extensionManagementServerService.getExtensionManagementServer(toExtension(running2)) === e2.server; if ((isE1Running && isE2Running)) { return e1.displayName.localeCompare(e2.displayName); } diff --git a/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts b/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts index 43ae672d0b..fddaec2ab0 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts @@ -39,6 +39,7 @@ import { IModeService } from 'vs/editor/common/services/modeService'; import { IProductService } from 'vs/platform/product/common/productService'; import { asDomUri } from 'vs/base/browser/dom'; import { getIgnoredExtensions } from 'vs/platform/userDataSync/common/extensionsMerge'; +import { isWeb } from 'vs/base/common/platform'; import { isEngineValid } from 'vs/platform/extensions/common/extensionValidator'; // {{SQL CARBON EDIT}} import { IOpenerService } from 'vs/platform/opener/common/opener'; // {{SQL CARBON EDIT}} @@ -508,6 +509,7 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension private readonly localExtensions: Extensions | null = null; private readonly remoteExtensions: Extensions | null = null; + private readonly webExtensions: Extensions | null = null; private syncDelayer: ThrottledDelayer; private autoUpdateDelayer: ThrottledDelayer; @@ -543,6 +545,10 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension this.remoteExtensions = this._register(instantiationService.createInstance(Extensions, extensionManagementServerService.remoteExtensionManagementServer, ext => this.getExtensionState(ext))); this._register(this.remoteExtensions.onChange(e => this._onChange.fire(e ? e.extension : undefined))); } + if (extensionManagementServerService.webExtensionManagementServer) { + this.webExtensions = this._register(instantiationService.createInstance(Extensions, extensionManagementServerService.webExtensionManagementServer, ext => this.getExtensionState(ext))); + this._register(this.webExtensions.onChange(e => this._onChange.fire(e ? e.extension : undefined))); + } this.syncDelayer = new ThrottledDelayer(ExtensionsWorkbenchService.SyncPeriod); this.autoUpdateDelayer = new ThrottledDelayer(1000); @@ -584,6 +590,9 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension if (this.remoteExtensions) { result.push(...this.remoteExtensions.local); } + if (this.webExtensions) { + result.push(...this.webExtensions.local); + } return result; } @@ -595,6 +604,9 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension if (this.remoteExtensions) { allLocal.push(...this.remoteExtensions.local); } + if (this.webExtensions) { + allLocal.push(...this.webExtensions.local); + } return allLocal.filter(e => e.outdated && e.local && e.state === ExtensionState.Installed); } @@ -606,6 +618,9 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension if (this.remoteExtensions && this.extensionManagementServerService.remoteExtensionManagementServer === server) { return this.remoteExtensions.queryInstalled(); } + if (this.webExtensions && this.extensionManagementServerService.webExtensionManagementServer === server) { + return this.webExtensions.queryInstalled(); + } } if (this.localExtensions) { @@ -614,6 +629,9 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension if (this.remoteExtensions) { await this.remoteExtensions.queryInstalled(); } + if (this.webExtensions) { + await this.webExtensions.queryInstalled(); + } return this.local; } @@ -668,18 +686,21 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension if (extensions.length === 1) { return extensions[0]; } - const pickRemoteOrFirstExtension = (from: IExtension[]): IExtension => { - const remoteExtension = from.filter(e => e.server === this.extensionManagementServerService.remoteExtensionManagementServer)[0]; - return remoteExtension ? remoteExtension : from[0]; - }; const enabledExtensions = extensions.filter(e => e.local && this.extensionEnablementService.isEnabled(e.local)); - return enabledExtensions.length === 1 ? enabledExtensions[0] : pickRemoteOrFirstExtension(extensions); + if (enabledExtensions.length === 0) { + return extensions[0]; + } + if (enabledExtensions.length === 1) { + return enabledExtensions[0]; + } + return enabledExtensions.find(e => e.server === this.extensionManagementServerService.remoteExtensionManagementServer) || enabledExtensions[0]; } private fromGallery(gallery: IGalleryExtension, maliciousExtensionSet: Set): IExtension { Promise.all([ this.localExtensions ? this.localExtensions.syncLocalWithGalleryExtension(gallery, maliciousExtensionSet) : Promise.resolve(false), - this.remoteExtensions ? this.remoteExtensions.syncLocalWithGalleryExtension(gallery, maliciousExtensionSet) : Promise.resolve(false) + this.remoteExtensions ? this.remoteExtensions.syncLocalWithGalleryExtension(gallery, maliciousExtensionSet) : Promise.resolve(false), + this.webExtensions ? this.webExtensions.syncLocalWithGalleryExtension(gallery, maliciousExtensionSet) : Promise.resolve(false) ]) .then(result => { if (result[0] || result[1]) { @@ -716,7 +737,8 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension private getExtensionState(extension: Extension): ExtensionState { const isInstalling = this.installing.some(i => areSameExtensions(i.identifier, extension.identifier)); if (extension.server) { - const state = (extension.server === this.extensionManagementServerService.localExtensionManagementServer ? this.localExtensions! : this.remoteExtensions!).getExtensionState(extension); + const state = (extension.server === this.extensionManagementServerService.localExtensionManagementServer + ? this.localExtensions! : extension.server === this.extensionManagementServerService.remoteExtensionManagementServer ? this.remoteExtensions! : this.webExtensions!).getExtensionState(extension); return state === ExtensionState.Uninstalled && isInstalling ? ExtensionState.Installing : state; } else if (isInstalling) { return ExtensionState.Installing; @@ -727,6 +749,12 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension return state; } } + if (this.webExtensions) { + const state = this.webExtensions.getExtensionState(extension); + if (state !== ExtensionState.Uninstalled) { + return state; + } + } if (this.localExtensions) { return this.localExtensions.getExtensionState(extension); } @@ -805,7 +833,9 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension return false; } - if (this.extensionManagementServerService.localExtensionManagementServer || this.extensionManagementServerService.remoteExtensionManagementServer) { + if (this.extensionManagementServerService.localExtensionManagementServer + || this.extensionManagementServerService.remoteExtensionManagementServer + || this.extensionManagementServerService.webExtensionManagementServer) { return true; } @@ -920,9 +950,7 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension } isExtensionIgnoredToSync(extension: IExtension): boolean { - const localExtensions = (this.extensionManagementServerService.localExtensionManagementServer && this.extensionManagementServerService.remoteExtensionManagementServer - ? this.local.filter(i => i.server === this.extensionManagementServerService.localExtensionManagementServer) - : this.local) + const localExtensions = (!isWeb && this.localExtensions ? this.localExtensions.local : this.local) .filter(l => !!l.local) .map(l => l.local!); @@ -1112,7 +1140,8 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension private _activityCallBack: (() => void) | null = null; private updateActivity(): void { if ((this.localExtensions && this.localExtensions.local.some(e => e.state === ExtensionState.Installing || e.state === ExtensionState.Uninstalling)) - || (this.remoteExtensions && this.remoteExtensions.local.some(e => e.state === ExtensionState.Installing || e.state === ExtensionState.Uninstalling))) { + || (this.remoteExtensions && this.remoteExtensions.local.some(e => e.state === ExtensionState.Installing || e.state === ExtensionState.Uninstalling)) + || (this.webExtensions && this.webExtensions.local.some(e => e.state === ExtensionState.Installing || e.state === ExtensionState.Uninstalling))) { if (!this._activityCallBack) { this.progressService.withProgress({ location: ProgressLocation.Extensions }, () => new Promise(c => this._activityCallBack = c)); } diff --git a/src/vs/workbench/contrib/extensions/common/extensionQuery.ts b/src/vs/workbench/contrib/extensions/common/extensionQuery.ts index 9d1318cd12..5ffa88f0da 100644 --- a/src/vs/workbench/contrib/extensions/common/extensionQuery.ts +++ b/src/vs/workbench/contrib/extensions/common/extensionQuery.ts @@ -4,6 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { flatten } from 'vs/base/common/arrays'; +import { EXTENSION_CATEGORIES } from 'vs/platform/extensions/common/extensions'; export class Query { @@ -15,7 +16,7 @@ export class Query { const commands = ['installed', 'outdated', 'enabled', 'disabled', 'builtin', 'recommended', 'sort', 'category', 'tag', 'ext', 'id'] as const; const subcommands = { 'sort': ['installs', 'rating', 'name'], - 'category': ['"programming languages"', 'snippets', 'linters', 'themes', 'debuggers', 'formatters', 'keymaps', '"scm providers"', 'other', '"extension packs"', '"language packs"'], + 'category': EXTENSION_CATEGORIES.map(c => `"${c.toLowerCase()}"`), 'tag': [''], 'ext': [''], 'id': [''] diff --git a/src/vs/workbench/contrib/extensions/electron-browser/extensions.contribution.ts b/src/vs/workbench/contrib/extensions/electron-browser/extensions.contribution.ts index e9a60d4ed8..cf551b2b8b 100644 --- a/src/vs/workbench/contrib/extensions/electron-browser/extensions.contribution.ts +++ b/src/vs/workbench/contrib/extensions/electron-browser/extensions.contribution.ts @@ -60,7 +60,7 @@ Registry.as(EditorInputExtensions.EditorInputFactor // Global actions const actionRegistry = Registry.as(WorkbenchActionExtensions.WorkbenchActions); -actionRegistry.registerWorkbenchAction(SyncActionDescriptor.from(ShowRuntimeExtensionsAction), 'Show Running Extensions', localize('developer', "Developer")); +actionRegistry.registerWorkbenchAction(SyncActionDescriptor.from(ShowRuntimeExtensionsAction), 'Show Running Extensions', localize({ key: 'developer', comment: ['A developer on Code itself or someone diagnosing issues in Code'] }, "Developer")); class ExtensionsContributions implements IWorkbenchContribution { diff --git a/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsActions.test.ts b/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsActions.test.ts index da724253b3..94efcc49e2 100644 --- a/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsActions.test.ts +++ b/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsActions.test.ts @@ -34,7 +34,7 @@ import { URI } from 'vs/base/common/uri'; import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService'; import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService'; import { RemoteAgentService } from 'vs/workbench/services/remote/electron-browser/remoteAgentServiceImpl'; -import { ExtensionIdentifier, IExtensionContributions, ExtensionType, IExtensionDescription } from 'vs/platform/extensions/common/extensions'; +import { ExtensionIdentifier, IExtensionContributions, ExtensionType, IExtensionDescription, IExtension } from 'vs/platform/extensions/common/extensions'; import { ISharedProcessService } from 'vs/platform/ipc/electron-browser/sharedProcessService'; import { CancellationToken } from 'vs/base/common/cancellation'; import { ILabelService, IFormatterChangeEvent } from 'vs/platform/label/common/label'; @@ -99,7 +99,7 @@ async function setupTest() { instantiationService.stub(IRemoteAgentService, RemoteAgentService); instantiationService.stub(IExtensionManagementServerService, new class extends ExtensionManagementServerService { - #localExtensionManagementServer: IExtensionManagementServer = { extensionManagementService: instantiationService.get(IExtensionManagementService), label: 'local', authority: 'vscode-local' }; + #localExtensionManagementServer: IExtensionManagementServer = { extensionManagementService: instantiationService.get(IExtensionManagementService), label: 'local', id: 'vscode-local' }; constructor() { super(instantiationService.get(ISharedProcessService), instantiationService.get(IRemoteAgentService), instantiationService.get(IExtensionGalleryService), instantiationService.get(IConfigurationService), instantiationService.get(IProductService), instantiationService.get(ILogService), instantiationService.get(ILabelService)); } @@ -1122,7 +1122,7 @@ suite('ReloadAction', () => { test('Test ReloadAction when extension is newly installed', async () => { const onDidChangeExtensionsEmitter: Emitter = new Emitter(); - const runningExtensions = [{ identifier: new ExtensionIdentifier('pub.b'), extensionLocation: URI.file('pub.b') }]; + const runningExtensions = [ExtensionsActions.toExtensionDescription(aLocalExtension('b'))]; instantiationService.stub(IExtensionService, >{ getExtensions: () => Promise.resolve(runningExtensions), onDidChangeExtensions: onDidChangeExtensionsEmitter.event, @@ -1145,7 +1145,7 @@ suite('ReloadAction', () => { test('Test ReloadAction when extension is newly installed and reload is not required', async () => { const onDidChangeExtensionsEmitter: Emitter = new Emitter(); - const runningExtensions = [{ identifier: new ExtensionIdentifier('pub.b'), extensionLocation: URI.file('pub.b') }]; + const runningExtensions = [ExtensionsActions.toExtensionDescription(aLocalExtension('b'))]; instantiationService.stub(IExtensionService, >{ getExtensions: () => Promise.resolve(runningExtensions), onDidChangeExtensions: onDidChangeExtensionsEmitter.event, @@ -1166,7 +1166,7 @@ suite('ReloadAction', () => { }); test('Test ReloadAction when extension is installed and uninstalled', async () => { - instantiationService.stubPromise(IExtensionService, 'getExtensions', [{ identifier: new ExtensionIdentifier('pub.b'), extensionLocation: URI.file('pub.b') }]); + instantiationService.stubPromise(IExtensionService, 'getExtensions', [ExtensionsActions.toExtensionDescription(aLocalExtension('b'))]); const testObject: ExtensionsActions.ReloadAction = instantiationService.createInstance(ExtensionsActions.ReloadAction); instantiationService.createInstance(ExtensionContainers, [testObject]); const gallery = aGalleryExtension('a'); @@ -1184,7 +1184,7 @@ suite('ReloadAction', () => { }); test('Test ReloadAction when extension is uninstalled', async () => { - instantiationService.stubPromise(IExtensionService, 'getExtensions', [{ identifier: new ExtensionIdentifier('pub.a'), extensionLocation: URI.file('pub.a'), version: '1.0.0' }]); + instantiationService.stubPromise(IExtensionService, 'getExtensions', [ExtensionsActions.toExtensionDescription(aLocalExtension('a', { version: '1.0.0' }))]); const testObject: ExtensionsActions.ReloadAction = instantiationService.createInstance(ExtensionsActions.ReloadAction); instantiationService.createInstance(ExtensionContainers, [testObject]); const local = aLocalExtension('a'); @@ -1218,7 +1218,7 @@ suite('ReloadAction', () => { }); test('Test ReloadAction when extension is uninstalled and installed', async () => { - instantiationService.stubPromise(IExtensionService, 'getExtensions', [{ identifier: new ExtensionIdentifier('pub.a'), version: '1.0.0', extensionLocation: URI.file('pub.a') }]); + instantiationService.stubPromise(IExtensionService, 'getExtensions', [ExtensionsActions.toExtensionDescription(aLocalExtension('a', { version: '1.0.0' }))]); const testObject: ExtensionsActions.ReloadAction = instantiationService.createInstance(ExtensionsActions.ReloadAction); instantiationService.createInstance(ExtensionContainers, [testObject]); const local = aLocalExtension('a'); @@ -1238,7 +1238,7 @@ suite('ReloadAction', () => { }); test('Test ReloadAction when extension is updated while running', async () => { - instantiationService.stubPromise(IExtensionService, 'getExtensions', [{ identifier: new ExtensionIdentifier('pub.a'), version: '1.0.1', extensionLocation: URI.file('pub.a') }]); + instantiationService.stubPromise(IExtensionService, 'getExtensions', [ExtensionsActions.toExtensionDescription(aLocalExtension('a', { version: '1.0.1' }))]); const testObject: ExtensionsActions.ReloadAction = instantiationService.createInstance(ExtensionsActions.ReloadAction); instantiationService.createInstance(ExtensionContainers, [testObject]); const local = aLocalExtension('a', { version: '1.0.1' }); @@ -1260,7 +1260,7 @@ suite('ReloadAction', () => { }); test('Test ReloadAction when extension is updated when not running', async () => { - instantiationService.stubPromise(IExtensionService, 'getExtensions', [{ identifier: new ExtensionIdentifier('pub.b'), extensionLocation: URI.file('pub.b') }]); + instantiationService.stubPromise(IExtensionService, 'getExtensions', [ExtensionsActions.toExtensionDescription(aLocalExtension('b'))]); const local = aLocalExtension('a', { version: '1.0.1' }); await instantiationService.get(IWorkbenchExtensionEnablementService).setEnablement([local], EnablementState.DisabledGlobally); const testObject: ExtensionsActions.ReloadAction = instantiationService.createInstance(ExtensionsActions.ReloadAction); @@ -1278,7 +1278,7 @@ suite('ReloadAction', () => { }); test('Test ReloadAction when extension is disabled when running', async () => { - instantiationService.stubPromise(IExtensionService, 'getExtensions', [{ identifier: new ExtensionIdentifier('pub.a'), extensionLocation: URI.file('pub.a') }]); + instantiationService.stubPromise(IExtensionService, 'getExtensions', [ExtensionsActions.toExtensionDescription(aLocalExtension('a'))]); const testObject: ExtensionsActions.ReloadAction = instantiationService.createInstance(ExtensionsActions.ReloadAction); instantiationService.createInstance(ExtensionContainers, [testObject]); const local = aLocalExtension('a'); @@ -1294,7 +1294,7 @@ suite('ReloadAction', () => { }); test('Test ReloadAction when extension enablement is toggled when running', async () => { - instantiationService.stubPromise(IExtensionService, 'getExtensions', [{ identifier: new ExtensionIdentifier('pub.a'), version: '1.0.0', extensionLocation: URI.file('pub.a') }]); + instantiationService.stubPromise(IExtensionService, 'getExtensions', [ExtensionsActions.toExtensionDescription(aLocalExtension('a', { version: '1.0.0' }))]); const testObject: ExtensionsActions.ReloadAction = instantiationService.createInstance(ExtensionsActions.ReloadAction); instantiationService.createInstance(ExtensionContainers, [testObject]); const local = aLocalExtension('a'); @@ -1308,7 +1308,7 @@ suite('ReloadAction', () => { }); test('Test ReloadAction when extension is enabled when not running', async () => { - instantiationService.stubPromise(IExtensionService, 'getExtensions', [{ identifier: new ExtensionIdentifier('pub.b'), extensionLocation: URI.file('pub.b') }]); + instantiationService.stubPromise(IExtensionService, 'getExtensions', [ExtensionsActions.toExtensionDescription(aLocalExtension('b'))]); const local = aLocalExtension('a'); await instantiationService.get(IWorkbenchExtensionEnablementService).setEnablement([local], EnablementState.DisabledGlobally); const testObject: ExtensionsActions.ReloadAction = instantiationService.createInstance(ExtensionsActions.ReloadAction); @@ -1324,7 +1324,7 @@ suite('ReloadAction', () => { }); test('Test ReloadAction when extension enablement is toggled when not running', async () => { - instantiationService.stubPromise(IExtensionService, 'getExtensions', [{ identifier: new ExtensionIdentifier('pub.b'), extensionLocation: URI.file('pub.b') }]); + instantiationService.stubPromise(IExtensionService, 'getExtensions', [ExtensionsActions.toExtensionDescription(aLocalExtension('b'))]); const local = aLocalExtension('a'); await instantiationService.get(IWorkbenchExtensionEnablementService).setEnablement([local], EnablementState.DisabledGlobally); const testObject: ExtensionsActions.ReloadAction = instantiationService.createInstance(ExtensionsActions.ReloadAction); @@ -1339,7 +1339,7 @@ suite('ReloadAction', () => { }); test('Test ReloadAction when extension is updated when not running and enabled', async () => { - instantiationService.stubPromise(IExtensionService, 'getExtensions', [{ identifier: new ExtensionIdentifier('pub.b'), extensionLocation: URI.file('pub.b') }]); + instantiationService.stubPromise(IExtensionService, 'getExtensions', [ExtensionsActions.toExtensionDescription(aLocalExtension('b'))]); const local = aLocalExtension('a', { version: '1.0.1' }); await instantiationService.get(IWorkbenchExtensionEnablementService).setEnablement([local], EnablementState.DisabledGlobally); const testObject: ExtensionsActions.ReloadAction = instantiationService.createInstance(ExtensionsActions.ReloadAction); @@ -1359,7 +1359,7 @@ suite('ReloadAction', () => { }); test('Test ReloadAction when a localization extension is newly installed', async () => { - instantiationService.stubPromise(IExtensionService, 'getExtensions', [{ identifier: new ExtensionIdentifier('pub.b'), extensionLocation: URI.file('pub.b') }]); + instantiationService.stubPromise(IExtensionService, 'getExtensions', [ExtensionsActions.toExtensionDescription(aLocalExtension('b'))]); const testObject: ExtensionsActions.ReloadAction = instantiationService.createInstance(ExtensionsActions.ReloadAction); instantiationService.createInstance(ExtensionContainers, [testObject]); const gallery = aGalleryExtension('a'); @@ -1375,7 +1375,7 @@ suite('ReloadAction', () => { }); test('Test ReloadAction when a localization extension is updated while running', async () => { - instantiationService.stubPromise(IExtensionService, 'getExtensions', [{ identifier: new ExtensionIdentifier('pub.a'), version: '1.0.1', extensionLocation: URI.file('pub.a') }]); + instantiationService.stubPromise(IExtensionService, 'getExtensions', [ExtensionsActions.toExtensionDescription(aLocalExtension('a', { version: '1.0.1' }))]); const testObject: ExtensionsActions.ReloadAction = instantiationService.createInstance(ExtensionsActions.ReloadAction); instantiationService.createInstance(ExtensionContainers, [testObject]); const local = aLocalExtension('a', { version: '1.0.1', contributes: { localizations: [{ languageId: 'de', translations: [] }] } }); @@ -2518,7 +2518,7 @@ function aPage(...objects: T[]): IPager { function aSingleRemoteExtensionManagementServerService(instantiationService: TestInstantiationService, remoteExtensionManagementService?: IExtensionManagementService): IExtensionManagementServerService { const remoteExtensionManagementServer: IExtensionManagementServer = { - authority: 'vscode-remote', + id: 'vscode-remote', label: 'remote', extensionManagementService: remoteExtensionManagementService || createExtensionManagementService() }; @@ -2526,8 +2526,9 @@ function aSingleRemoteExtensionManagementServerService(instantiationService: Tes _serviceBrand: undefined, localExtensionManagementServer: null, remoteExtensionManagementServer, - getExtensionManagementServer: (location: URI) => { - if (location.scheme === REMOTE_HOST_SCHEME) { + webExtensionManagementServer: null, + getExtensionManagementServer: (extension: IExtension) => { + if (extension.location.scheme === REMOTE_HOST_SCHEME) { return remoteExtensionManagementServer; } return null; @@ -2537,12 +2538,12 @@ function aSingleRemoteExtensionManagementServerService(instantiationService: Tes function aMultiExtensionManagementServerService(instantiationService: TestInstantiationService, localExtensionManagementService?: IExtensionManagementService, remoteExtensionManagementService?: IExtensionManagementService): IExtensionManagementServerService { const localExtensionManagementServer: IExtensionManagementServer = { - authority: 'vscode-local', + id: 'vscode-local', label: 'local', extensionManagementService: localExtensionManagementService || createExtensionManagementService() }; const remoteExtensionManagementServer: IExtensionManagementServer = { - authority: 'vscode-remote', + id: 'vscode-remote', label: 'remote', extensionManagementService: remoteExtensionManagementService || createExtensionManagementService() }; @@ -2550,14 +2551,15 @@ function aMultiExtensionManagementServerService(instantiationService: TestInstan _serviceBrand: undefined, localExtensionManagementServer, remoteExtensionManagementServer, - getExtensionManagementServer: (location: URI) => { - if (location.scheme === Schemas.file) { + webExtensionManagementServer: null, + getExtensionManagementServer: (extension: IExtension) => { + if (extension.location.scheme === Schemas.file) { return localExtensionManagementServer; } - if (location.scheme === REMOTE_HOST_SCHEME) { + if (extension.location.scheme === REMOTE_HOST_SCHEME) { return remoteExtensionManagementServer; } - return null; + throw new Error(''); } }; } diff --git a/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsViews.test.ts b/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsViews.test.ts index 9b8d02abc0..697fd1c4b9 100644 --- a/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsViews.test.ts +++ b/src/vs/workbench/contrib/extensions/test/electron-browser/extensionsViews.test.ts @@ -99,7 +99,7 @@ suite('ExtensionsListView Tests', () => { instantiationService.stub(IMenuService, new TestMenuService()); instantiationService.stub(IExtensionManagementServerService, new class extends ExtensionManagementServerService { - #localExtensionManagementServer: IExtensionManagementServer = { extensionManagementService: instantiationService.get(IExtensionManagementService), label: 'local', authority: 'vscode-local' }; + #localExtensionManagementServer: IExtensionManagementServer = { extensionManagementService: instantiationService.get(IExtensionManagementService), label: 'local', id: 'vscode-local' }; constructor() { super(instantiationService.get(ISharedProcessService), instantiationService.get(IRemoteAgentService), instantiationService.get(IExtensionGalleryService), instantiationService.get(IConfigurationService), instantiationService.get(IProductService), instantiationService.get(ILogService), instantiationService.get(ILabelService)); } diff --git a/src/vs/workbench/contrib/externalTerminal/node/externalTerminal.contribution.ts b/src/vs/workbench/contrib/externalTerminal/node/externalTerminal.contribution.ts index 8012660dd9..b89af69c36 100644 --- a/src/vs/workbench/contrib/externalTerminal/node/externalTerminal.contribution.ts +++ b/src/vs/workbench/contrib/externalTerminal/node/externalTerminal.contribution.ts @@ -40,7 +40,7 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({ terminalService.openTerminal(paths.dirname(activeFile.fsPath)); } else { const pathService = accessor.get(IPathService); - const userHome = await pathService.userHome; + const userHome = await pathService.userHome(); terminalService.openTerminal(userHome.fsPath); } } diff --git a/src/vs/workbench/contrib/feedback/browser/feedback.ts b/src/vs/workbench/contrib/feedback/browser/feedback.ts index c1e733dc93..af95a8a6a3 100644 --- a/src/vs/workbench/contrib/feedback/browser/feedback.ts +++ b/src/vs/workbench/contrib/feedback/browser/feedback.ts @@ -385,6 +385,8 @@ export class FeedbackDropdown extends Dropdown { if (this.options.onFeedbackVisibilityChange) { this.options.onFeedbackVisibilityChange(true); } + + this.updateCharCountText(); } protected onHide(): void { diff --git a/src/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler.ts b/src/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler.ts index d1ae686825..09bee56e9c 100644 --- a/src/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler.ts +++ b/src/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler.ts @@ -5,7 +5,7 @@ import * as nls from 'vs/nls'; import { toErrorMessage } from 'vs/base/common/errorMessage'; -import { basename } from 'vs/base/common/resources'; +import { basename, extUri } from 'vs/base/common/resources'; import { Action, IAction } from 'vs/base/common/actions'; import { URI } from 'vs/base/common/uri'; import { FileOperationError, FileOperationResult } from 'vs/platform/files/common/files'; @@ -115,7 +115,7 @@ export class TextFileSaveErrorHandler extends Disposable implements ISaveErrorHa if (fileOperationError.fileOperationResult === FileOperationResult.FILE_MODIFIED_SINCE) { // If the user tried to save from the opened conflict editor, show its message again - if (this.activeConflictResolutionResource && this.activeConflictResolutionResource.toString() === model.resource.toString()) { + if (this.activeConflictResolutionResource && extUri.isEqual(this.activeConflictResolutionResource, model.resource)) { if (this.storageService.getBoolean(LEARN_MORE_DIRTY_WRITE_IGNORE_KEY, StorageScope.GLOBAL)) { return; // return if this message is ignored } diff --git a/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts b/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts index 170fa3373f..29bffd8306 100644 --- a/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts +++ b/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts @@ -5,7 +5,7 @@ import * as nls from 'vs/nls'; import { Registry } from 'vs/platform/registry/common/platform'; -import { ToggleAutoSaveAction, FocusFilesExplorer, GlobalCompareResourcesAction, SaveAllAction, ShowActiveFileInExplorer, CollapseExplorerView, RefreshExplorerView, CompareWithClipboardAction, NEW_FILE_COMMAND_ID, NEW_FILE_LABEL, NEW_FOLDER_COMMAND_ID, NEW_FOLDER_LABEL, TRIGGER_RENAME_LABEL, MOVE_FILE_TO_TRASH_LABEL, COPY_FILE_LABEL, PASTE_FILE_LABEL, FileCopiedContext, renameHandler, moveFileToTrashHandler, copyFileHandler, pasteFileHandler, deleteFileHandler, cutFileHandler, DOWNLOAD_COMMAND_ID, openFilePreserveFocusHandler, DOWNLOAD_LABEL, ShowOpenedFileInNewWindow, ReopenResourcesAction, ToggleEditorTypeCommand as ToggleEditorTypeAction } from 'vs/workbench/contrib/files/browser/fileActions'; +import { ToggleAutoSaveAction, FocusFilesExplorer, GlobalCompareResourcesAction, SaveAllAction, ShowActiveFileInExplorer, CollapseExplorerView, RefreshExplorerView, CompareWithClipboardAction, NEW_FILE_COMMAND_ID, NEW_FILE_LABEL, NEW_FOLDER_COMMAND_ID, NEW_FOLDER_LABEL, TRIGGER_RENAME_LABEL, MOVE_FILE_TO_TRASH_LABEL, COPY_FILE_LABEL, PASTE_FILE_LABEL, FileCopiedContext, renameHandler, moveFileToTrashHandler, copyFileHandler, pasteFileHandler, deleteFileHandler, cutFileHandler, DOWNLOAD_COMMAND_ID, openFilePreserveFocusHandler, DOWNLOAD_LABEL, ShowOpenedFileInNewWindow } from 'vs/workbench/contrib/files/browser/fileActions'; import { revertLocalChangesCommand, acceptLocalChangesCommand, CONFLICT_RESOLUTION_CONTEXT } from 'vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler'; import { SyncActionDescriptor, MenuId, MenuRegistry, ILocalizedString } from 'vs/platform/actions/common/actions'; import { IWorkbenchActionRegistry, Extensions as ActionExtensions } from 'vs/workbench/common/actions'; @@ -26,7 +26,7 @@ import { WorkspaceFolderCountContext } from 'vs/workbench/browser/contextkeys'; import { IsWebContext } from 'vs/platform/contextkey/common/contextkeys'; import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; import { OpenFileFolderAction, OpenFileAction, OpenFolderAction, OpenWorkspaceAction } from 'vs/workbench/browser/actions/workspaceActions'; -import { ActiveEditorIsReadonlyContext, DirtyWorkingCopiesContext, ActiveEditorContext, ActiveEditorAvailableEditorIdsContext } from 'vs/workbench/common/editor'; +import { ActiveEditorIsReadonlyContext, DirtyWorkingCopiesContext, ActiveEditorContext } from 'vs/workbench/common/editor'; import { SidebarFocusContext } from 'vs/workbench/common/viewlet'; import { ThemeIcon } from 'vs/platform/theme/common/themeService'; @@ -36,8 +36,6 @@ const category = { value: nls.localize('filesCategory', "File"), original: 'File const registry = Registry.as(ActionExtensions.WorkbenchActions); registry.registerWorkbenchAction(SyncActionDescriptor.from(SaveAllAction, { primary: undefined, mac: { primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.KEY_S }, win: { primary: KeyChord(KeyMod.CtrlCmd | KeyCode.KEY_K, KeyCode.KEY_S) } }), 'File: Save All', category.value); registry.registerWorkbenchAction(SyncActionDescriptor.from(GlobalCompareResourcesAction), 'File: Compare Active File With...', category.value); -registry.registerWorkbenchAction(SyncActionDescriptor.from(ReopenResourcesAction), 'File: Reopen With...', category.value, ActiveEditorAvailableEditorIdsContext); -registry.registerWorkbenchAction(SyncActionDescriptor.from(ToggleEditorTypeAction), 'File: Toggle Editor Type', category.value, ActiveEditorAvailableEditorIdsContext); registry.registerWorkbenchAction(SyncActionDescriptor.from(FocusFilesExplorer), 'File: Focus on Files Explorer', category.value); registry.registerWorkbenchAction(SyncActionDescriptor.from(ShowActiveFileInExplorer), 'File: Reveal Active File in Side Bar', category.value); registry.registerWorkbenchAction(SyncActionDescriptor.from(CollapseExplorerView), 'File: Collapse Folders in Explorer', category.value); @@ -182,19 +180,6 @@ export function appendEditorTitleContextMenuItem(id: string, title: string, when }); } -// Reopen with editor title - -MenuRegistry.appendMenuItem(MenuId.EditorTitle, { - command: { - id: ReopenResourcesAction.ID, - title: ReopenResourcesAction.LABEL, - category: fileCategory, - }, - group: '6_reopen', - order: 20, - when: ActiveEditorAvailableEditorIdsContext, -}); - // Editor Title Menu for Conflict Resolution appendSaveConflictEditorTitleAction('workbench.files.action.acceptLocalChanges', nls.localize('acceptLocalChanges', "Use your changes and overwrite file contents"), { id: 'codicon/check' }, -10, acceptLocalChangesCommand); appendSaveConflictEditorTitleAction('workbench.files.action.revertLocalChanges', nls.localize('revertLocalChanges', "Discard your changes and revert to file contents"), { id: 'codicon/discard' }, -9, revertLocalChangesCommand); diff --git a/src/vs/workbench/contrib/files/browser/fileActions.ts b/src/vs/workbench/contrib/files/browser/fileActions.ts index e6f04f52ff..8da39a1552 100644 --- a/src/vs/workbench/contrib/files/browser/fileActions.ts +++ b/src/vs/workbench/contrib/files/browser/fileActions.ts @@ -15,7 +15,7 @@ import { Action } from 'vs/base/common/actions'; import { dispose, IDisposable } from 'vs/base/common/lifecycle'; import { VIEWLET_ID, IExplorerService, IFilesConfiguration, VIEW_ID } from 'vs/workbench/contrib/files/common/files'; import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles'; -import { IFileService } from 'vs/platform/files/common/files'; +import { IFileService, IFileStatWithMetadata } from 'vs/platform/files/common/files'; import { toResource, SideBySideEditor } from 'vs/workbench/common/editor'; import { ExplorerViewPaneContainer } from 'vs/workbench/contrib/files/browser/explorerViewlet'; import { IQuickInputService, ItemActivation } from 'vs/platform/quickinput/common/quickInput'; @@ -47,10 +47,8 @@ import { IWorkingCopyService, IWorkingCopy } from 'vs/workbench/services/working import { sequence, timeout } from 'vs/base/common/async'; import { IWorkingCopyFileService } from 'vs/workbench/services/workingCopy/common/workingCopyFileService'; import { once } from 'vs/base/common/functional'; -import { OpenEditorContext } from 'vs/workbench/services/editor/common/editorGroupsService'; import { Codicon } from 'vs/base/common/codicons'; import { IViewsService } from 'vs/workbench/common/views'; -import { openEditorWith, getAllAvailableEditors } from 'vs/workbench/contrib/files/common/openWith'; export const NEW_FILE_COMMAND_ID = 'explorer.newFile'; export const NEW_FILE_LABEL = nls.localize('newFile', "New File"); @@ -224,7 +222,7 @@ async function deleteFiles(workingCopyFileService: IWorkingCopyFileService, dial // Call function try { - await Promise.all(distinctElements.map(e => workingCopyFileService.delete(e.resource, { useTrash: useTrash, recursive: true }))); + await workingCopyFileService.delete(distinctElements.map(e => e.resource), { useTrash, recursive: true }); } catch (error) { // Handle error to delete file(s) from a modal confirmation dialog @@ -499,75 +497,6 @@ export class GlobalCompareResourcesAction extends Action { } } -export class ReopenResourcesAction extends Action { - - static readonly ID = 'workbench.files.action.reopenWithEditor'; - static readonly LABEL = nls.localize('workbench.files.action.reopenWithEditor', "Reopen With..."); - - constructor( - id: string, - label: string, - @IQuickInputService private readonly quickInputService: IQuickInputService, - @IEditorService private readonly editorService: IEditorService, - @IConfigurationService private readonly configurationService: IConfigurationService - ) { - super(id, label); - } - - async run(): Promise { - const activeInput = this.editorService.activeEditor; - if (!activeInput) { - return; - } - - const activeEditorPane = this.editorService.activeEditorPane; - if (!activeEditorPane) { - return; - } - - const options = activeEditorPane.options; - const group = activeEditorPane.group; - await openEditorWith(activeInput, undefined, options, group, this.editorService, this.configurationService, this.quickInputService); - } -} - -export class ToggleEditorTypeCommand extends Action { - - static readonly ID = 'workbench.files.action.toggleEditorType'; - static readonly LABEL = nls.localize('workbench.files.action.toggleEditorType', "Toggle Editor Type"); - - constructor( - id: string, - label: string, - @IEditorService private readonly editorService: IEditorService, - ) { - super(id, label); - } - - async run(): Promise { - const activeEditorPane = this.editorService.activeEditorPane; - if (!activeEditorPane) { - return; - } - - const input = activeEditorPane.input; - if (!input.resource) { - return; - } - - const options = activeEditorPane.options; - const group = activeEditorPane.group; - - const overrides = getAllAvailableEditors(input.resource, options, group, this.editorService); - const firstNonActiveOverride = overrides.find(([_, entry]) => !entry.active); - if (!firstNonActiveOverride) { - return; - } - - await firstNonActiveOverride[0].open(input, { ...options, override: firstNonActiveOverride[1].id }, group, OpenEditorContext.NEW_EDITOR)?.override; - } -} - export class ToggleAutoSaveAction extends Action { static readonly ID = 'workbench.action.toggleAutoSave'; static readonly LABEL = nls.localize('toggleAutoSave', "Toggle Auto Save"); @@ -704,7 +633,7 @@ export class ShowActiveFileInExplorer extends Action { } async run(): Promise { - const resource = toResource(this.editorService.activeEditor, { supportSideBySide: SideBySideEditor.MASTER }); + const resource = toResource(this.editorService.activeEditor, { supportSideBySide: SideBySideEditor.PRIMARY }); if (resource) { this.commandService.executeCommand(REVEAL_IN_EXPLORER_COMMAND_ID, resource); } else { @@ -772,7 +701,7 @@ export class ShowOpenedFileInNewWindow extends Action { } async run(): Promise { - const fileResource = toResource(this.editorService.activeEditor, { supportSideBySide: SideBySideEditor.MASTER }); + const fileResource = toResource(this.editorService.activeEditor, { supportSideBySide: SideBySideEditor.PRIMARY }); if (fileResource) { if (this.fileService.canHandleResource(fileResource)) { this.hostService.openWindow([{ fileUri: fileResource }], { forceNewWindow: true }); @@ -884,7 +813,7 @@ export class CompareWithClipboardAction extends Action { } async run(): Promise { - const resource = toResource(this.editorService.activeEditor, { supportSideBySide: SideBySideEditor.MASTER }); + const resource = toResource(this.editorService.activeEditor, { supportSideBySide: SideBySideEditor.PRIMARY }); const scheme = `clipboardCompare${CompareWithClipboardAction.SCHEME_COUNTER++}`; if (resource && (this.fileService.canHandleResource(resource) || resource.scheme === Schemas.untitled)) { if (!this.registrationDisposal) { @@ -1018,7 +947,7 @@ export const renameHandler = async (accessor: ServicesAccessor) => { const targetResource = resources.joinPath(parentResource, value); if (stat.resource.toString() !== targetResource.toString()) { try { - await workingCopyFileService.move(stat.resource, targetResource); + await workingCopyFileService.move([{ source: stat.resource, target: targetResource }]); await refreshIfSeparator(value, explorerService); } catch (e) { notificationService.error(e); @@ -1104,7 +1033,7 @@ const downloadFileHandler = (accessor: ServicesAccessor) => { defaultUri }); if (destination) { - await workingCopyFileService.copy(s.resource, destination, true); + await workingCopyFileService.copy([{ source: s.resource, target: destination }], { overwrite: true }); } else { // User canceled a download. In case there were multiple files selected we should cancel the remainder of the prompts #86100 canceled = true; @@ -1131,14 +1060,13 @@ export const pasteFileHandler = async (accessor: ServicesAccessor) => { const toPaste = resources.distinctParents(await clipboardService.readResources(), r => r); const element = context.length ? context[0] : explorerService.roots[0]; - // Check if target is ancestor of pasted folder - const stats = await Promise.all(toPaste.map(async fileToPaste => { + try { + // Check if target is ancestor of pasted folder + const sourceTargetPairs = await Promise.all(toPaste.map(async fileToPaste => { - if (element.resource.toString() !== fileToPaste.toString() && resources.isEqualOrParent(element.resource, fileToPaste)) { - throw new Error(nls.localize('fileIsAncestor', "File to paste is an ancestor of the destination folder")); - } - - try { + if (element.resource.toString() !== fileToPaste.toString() && resources.isEqualOrParent(element.resource, fileToPaste)) { + throw new Error(nls.localize('fileIsAncestor', "File to paste is an ancestor of the destination folder")); + } const fileToPasteStat = await fileService.resolve(fileToPaste); // Find target @@ -1152,30 +1080,33 @@ export const pasteFileHandler = async (accessor: ServicesAccessor) => { const incrementalNaming = configurationService.getValue().explorer.incrementalNaming; const targetFile = findValidPasteFileTarget(explorerService, target, { resource: fileToPaste, isDirectory: fileToPasteStat.isDirectory, allowOverwrite: pasteShouldMove }, incrementalNaming); - // Move/Copy File - if (pasteShouldMove) { - return await workingCopyFileService.move(fileToPaste, targetFile); - } else { - return await workingCopyFileService.copy(fileToPaste, targetFile); - } - } catch (e) { - onError(notificationService, new Error(nls.localize('fileDeleted', "The file to paste has been deleted or moved since you copied it. {0}", getErrorMessage(e)))); - return undefined; - } - })); + return { source: fileToPaste, target: targetFile }; + })); - if (pasteShouldMove) { - // Cut is done. Make sure to clear cut state. - await explorerService.setToCopy([], false); - pasteShouldMove = false; - } - if (stats.length >= 1) { - const stat = stats[0]; - if (stat && !stat.isDirectory && stats.length === 1) { - await editorService.openEditor({ resource: stat.resource, options: { pinned: true, preserveFocus: true } }); + // Move/Copy File + let stats: IFileStatWithMetadata[] = []; + if (pasteShouldMove) { + stats = await workingCopyFileService.move(sourceTargetPairs); + } else { + stats = await workingCopyFileService.copy(sourceTargetPairs); } - if (stat) { - await explorerService.select(stat.resource); + + if (stats.length >= 1) { + const stat = stats[0]; + if (stat && !stat.isDirectory && stats.length === 1) { + await editorService.openEditor({ resource: stat.resource, options: { pinned: true, preserveFocus: true } }); + } + if (stat) { + await explorerService.select(stat.resource); + } + } + } catch (e) { + onError(notificationService, new Error(nls.localize('fileDeleted', "The file(s) to paste have been deleted or moved since you copied them. {0}", getErrorMessage(e)))); + } finally { + if (pasteShouldMove) { + // Cut is done. Make sure to clear cut state. + await explorerService.setToCopy([], false); + pasteShouldMove = false; } } }; diff --git a/src/vs/workbench/contrib/files/browser/fileCommands.ts b/src/vs/workbench/contrib/files/browser/fileCommands.ts index c78af344ce..858c611aea 100644 --- a/src/vs/workbench/contrib/files/browser/fileCommands.ts +++ b/src/vs/workbench/contrib/files/browser/fileCommands.ts @@ -40,10 +40,10 @@ import { coalesce } from 'vs/base/common/arrays'; import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService'; import { EmbeddedCodeEditorWidget } from 'vs/editor/browser/widget/embeddedCodeEditorWidget'; import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles'; -import { openEditorWith } from 'vs/workbench/contrib/files/common/openWith'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IQuickInputService } from 'vs/platform/quickinput/common/quickInput'; import { IUriIdentityService } from 'vs/workbench/services/uriIdentity/common/uriIdentity'; +import { openEditorWith } from 'vs/workbench/services/editor/common/editorOpenWith'; // Commands @@ -179,7 +179,7 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({ // Dispose once no more diff editor is opened with the scheme if (registerEditorListener) { providerDisposables.push(editorService.onDidVisibleEditorsChange(() => { - if (!editorService.editors.some(editor => !!toResource(editor, { supportSideBySide: SideBySideEditor.DETAILS, filterByScheme: COMPARE_WITH_SAVED_SCHEMA }))) { + if (!editorService.editors.some(editor => !!toResource(editor, { supportSideBySide: SideBySideEditor.SECONDARY, filterByScheme: COMPARE_WITH_SAVED_SCHEMA }))) { providerDisposables = dispose(providerDisposables); } })); @@ -357,8 +357,8 @@ async function saveSelectedEditors(accessor: ServicesAccessor, options?: ISaveEd // We only allow this when saving, not for "Save As". // See also https://github.com/microsoft/vscode/issues/4180 if (activeGroup.activeEditor instanceof SideBySideEditorInput && !options?.saveAs) { - editors.push({ groupId: activeGroup.id, editor: activeGroup.activeEditor.master }); - editors.push({ groupId: activeGroup.id, editor: activeGroup.activeEditor.details }); + editors.push({ groupId: activeGroup.id, editor: activeGroup.activeEditor.primary }); + editors.push({ groupId: activeGroup.id, editor: activeGroup.activeEditor.secondary }); } else { editors.push({ groupId: activeGroup.id, editor: activeGroup.activeEditor }); } @@ -381,7 +381,7 @@ async function saveSelectedEditors(accessor: ServicesAccessor, options?: ISaveEd const resource = focusedCodeEditor.getModel()?.uri; // Check that the resource of the model was not saved already - if (resource && !editors.some(({ editor }) => isEqual(toResource(editor, { supportSideBySide: SideBySideEditor.MASTER }), resource))) { + if (resource && !editors.some(({ editor }) => isEqual(toResource(editor, { supportSideBySide: SideBySideEditor.PRIMARY }), resource))) { const model = textFileService.files.get(resource); if (!model?.isReadonly()) { await textFileService.save(resource, options); diff --git a/src/vs/workbench/contrib/files/browser/files.ts b/src/vs/workbench/contrib/files/browser/files.ts index e3d0341815..2d014619dd 100644 --- a/src/vs/workbench/contrib/files/browser/files.ts +++ b/src/vs/workbench/contrib/files/browser/files.ts @@ -50,7 +50,7 @@ export function getResourceForCommand(resource: URI | object | undefined, listSe return focus.getResource(); } - return editorService.activeEditor ? toResource(editorService.activeEditor, { supportSideBySide: SideBySideEditor.MASTER }) : undefined; + return editorService.activeEditor ? toResource(editorService.activeEditor, { supportSideBySide: SideBySideEditor.PRIMARY }) : undefined; } export function getMultiSelectedResources(resource: URI | object | undefined, listService: IListService, editorService: IEditorService, explorerService: IExplorerService): Array { diff --git a/src/vs/workbench/contrib/files/browser/views/explorerView.ts b/src/vs/workbench/contrib/files/browser/views/explorerView.ts index 6bbf977527..b72c4653f8 100644 --- a/src/vs/workbench/contrib/files/browser/views/explorerView.ts +++ b/src/vs/workbench/contrib/files/browser/views/explorerView.ts @@ -450,6 +450,16 @@ export class ExplorerView extends ViewPane { } })); + this._register(this.tree.onDidChangeCollapseState(e => { + const element = e.node.element?.element; + if (element) { + const navigationController = this.renderer.getCompressedNavigationController(element instanceof Array ? element[0] : element); + if (navigationController) { + navigationController.updateCollapsed(e.node.collapsed); + } + } + })); + // save view state this._register(this.storageService.onWillSaveState(() => { this.storageService.store(ExplorerView.TREE_VIEW_STATE_STORAGE_KEY, JSON.stringify(this.tree.getViewState()), StorageScope.WORKSPACE); @@ -658,7 +668,7 @@ export class ExplorerView extends ViewPane { } // check for files - return withNullAsUndefined(toResource(input, { supportSideBySide: SideBySideEditor.MASTER })); + return withNullAsUndefined(toResource(input, { supportSideBySide: SideBySideEditor.PRIMARY })); } public async selectResource(resource: URI | undefined, reveal = this.autoReveal, retry = 0): Promise { diff --git a/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts b/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts index 26993c7414..ce8a85b387 100644 --- a/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts +++ b/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts @@ -134,6 +134,7 @@ export interface ICompressedNavigationController { first(): void; last(): void; setIndex(index: number): void; + updateCollapsed(collapsed: boolean): void; } export class CompressedNavigationController implements ICompressedNavigationController, IDisposable { @@ -153,7 +154,7 @@ export class CompressedNavigationController implements ICompressedNavigationCont private _onDidChange = new Emitter(); readonly onDidChange = this._onDidChange.event; - constructor(private id: string, readonly items: ExplorerItem[], templateData: IFileTemplateData) { + constructor(private id: string, readonly items: ExplorerItem[], templateData: IFileTemplateData, private depth: number, private collapsed: boolean) { this._index = items.length - 1; this.updateLabels(templateData); @@ -165,7 +166,9 @@ export class CompressedNavigationController implements ICompressedNavigationCont for (let i = 0; i < this.labels.length; i++) { this.labels[i].setAttribute('aria-label', this.items[i].name); + this.labels[i].setAttribute('aria-level', `${this.depth + i}`); } + this.updateCollapsed(this.collapsed); if (this._index < this.labels.length) { DOM.addClass(this.labels[this._index], 'active'); @@ -216,6 +219,13 @@ export class CompressedNavigationController implements ICompressedNavigationCont this._onDidChange.fire(); } + updateCollapsed(collapsed: boolean): void { + this.collapsed = collapsed; + for (let i = 0; i < this.labels.length; i++) { + this.labels[i].setAttribute('aria-expanded', collapsed ? 'false' : 'true'); + } + } + dispose(): void { this._onDidChange.dispose(); this._updateLabelDisposable.dispose(); @@ -308,7 +318,7 @@ export class FilesRenderer implements ICompressibleTreeRenderer e.name); disposables.add(this.renderStat(stat, label, id, node.filterData, templateData)); - const compressedNavigationController = new CompressedNavigationController(id, node.element.elements, templateData); + const compressedNavigationController = new CompressedNavigationController(id, node.element.elements, templateData, node.depth, node.collapsed); disposables.add(compressedNavigationController); this.compressedNavigationControllers.set(stat, compressedNavigationController); @@ -704,14 +714,27 @@ export class FileSorter implements ITreeSorter { } } -const getFileOverwriteConfirm = (name: string) => { - return { +function getFileOverwriteConfirm(name: string): IConfirmation { + return { message: localize('confirmOverwrite', "A file or folder with the name '{0}' already exists in the destination folder. Do you want to replace it?", name), detail: localize('irreversible', "This action is irreversible!"), primaryButton: localize({ key: 'replaceButtonLabel', comment: ['&& denotes a mnemonic'] }, "&&Replace"), type: 'warning' }; -}; +} + +function getMultipleFilesOverwriteConfirm(files: URI[]): IConfirmation { + if (files.length > 1) { + return { + message: localize('confirmManyOverwrites', "The following {0} files and/or folders already exist in the destination folder. Do you want to replace them?", files.length), + detail: getFileNamesMessage(files) + '\n' + localize('irreversible', "This action is irreversible!"), + primaryButton: localize({ key: 'replaceButtonLabel', comment: ['&& denotes a mnemonic'] }, "&&Replace"), + type: 'warning' + }; + } + + return getFileOverwriteConfirm(basename(files[0])); +} interface IWebkitDataTransfer { items: IWebkitDataTransferItem[]; @@ -1000,7 +1023,7 @@ export class FileDragAndDrop implements ITreeDragAndDrop { continue; } - await this.workingCopyFileService.delete(joinPath(target.resource, entry.name), { recursive: true }); + await this.workingCopyFileService.delete([joinPath(target.resource, entry.name)], { recursive: true }); } // Upload entry @@ -1253,7 +1276,7 @@ export class FileDragAndDrop implements ITreeDragAndDrop { const sourceFile = resource; const targetFile = joinPath(target.resource, basename(sourceFile)); - const stat = await this.workingCopyFileService.copy(sourceFile, targetFile, true); + const stat = (await this.workingCopyFileService.copy([{ source: sourceFile, target: targetFile }], { overwrite: true }))[0]; // if we only add one file, just open it directly if (resources.length === 1 && !stat.isDirectory) { this.editorService.openEditor({ resource: stat.resource, options: { pinned: true } }); @@ -1299,8 +1322,14 @@ export class FileDragAndDrop implements ITreeDragAndDrop { } } - const rootDropPromise = this.doHandleRootDrop(items.filter(s => s.isRoot), target); - await Promise.all(items.filter(s => !s.isRoot).map(source => this.doHandleExplorerDrop(source, target, isCopy)).concat(rootDropPromise)); + await this.doHandleRootDrop(items.filter(s => s.isRoot), target); + + const sources = items.filter(s => !s.isRoot); + if (isCopy) { + await this.doHandleExplorerDropOnCopy(sources, target); + } else { + return this.doHandleExplorerDropOnMove(sources, target); + } } private doHandleRootDrop(roots: ExplorerItem[], target: ExplorerItem): Promise { @@ -1336,36 +1365,40 @@ export class FileDragAndDrop implements ITreeDragAndDrop { return this.workspaceEditingService.updateFolders(0, workspaceCreationData.length, workspaceCreationData); } - private async doHandleExplorerDrop(source: ExplorerItem, target: ExplorerItem, isCopy: boolean): Promise { - // Reuse duplicate action if user copies - if (isCopy) { - const incrementalNaming = this.configurationService.getValue().explorer.incrementalNaming; - const stat = await this.workingCopyFileService.copy(source.resource, findValidPasteFileTarget(this.explorerService, target, { resource: source.resource, isDirectory: source.isDirectory, allowOverwrite: false }, incrementalNaming)); - if (!stat.isDirectory) { - await this.editorService.openEditor({ resource: stat.resource, options: { pinned: true } }); - } + private async doHandleExplorerDropOnCopy(sources: ExplorerItem[], target: ExplorerItem): Promise { + // Reuse duplicate action when user copies + const incrementalNaming = this.configurationService.getValue().explorer.incrementalNaming; + const sourceTargetPairs = sources.map(({ resource, isDirectory }) => ({ source: resource, target: findValidPasteFileTarget(this.explorerService, target, { resource, isDirectory, allowOverwrite: false }, incrementalNaming) })); + const stats = await this.workingCopyFileService.copy(sourceTargetPairs); + const editors = stats.filter(stat => !stat.isDirectory).map(({ resource }) => ({ resource, options: { pinned: true } })); - return; - } + await this.editorService.openEditors(editors); + } - // Otherwise move - const targetResource = joinPath(target.resource, source.name); - if (source.isReadonly) { - // Do not allow moving readonly items - return Promise.resolve(); - } + private async doHandleExplorerDropOnMove(sources: ExplorerItem[], target: ExplorerItem): Promise { + + // Do not allow moving readonly items + const sourceTargetPairs = sources.filter(source => !source.isReadonly).map(source => ({ source: source.resource, target: joinPath(target.resource, source.name) })); try { - await this.workingCopyFileService.move(source.resource, targetResource); + await this.workingCopyFileService.move(sourceTargetPairs); } catch (error) { // Conflict if ((error).fileOperationResult === FileOperationResult.FILE_MOVE_CONFLICT) { - const confirm = getFileOverwriteConfirm(source.name); + + const overwrites: URI[] = []; + for (const { target } of sourceTargetPairs) { + if (await this.fileService.exists(target)) { + overwrites.push(target); + } + } + + const confirm = getMultipleFilesOverwriteConfirm(overwrites); // Move with overwrite if the user confirms const { confirmed } = await this.dialogService.confirm(confirm); if (confirmed) { try { - await this.workingCopyFileService.move(source.resource, targetResource, true /* overwrite */); + await this.workingCopyFileService.move(sourceTargetPairs, { overwrite: true }); } catch (error) { this.notificationService.error(error); } diff --git a/src/vs/workbench/contrib/files/browser/views/openEditorsView.ts b/src/vs/workbench/contrib/files/browser/views/openEditorsView.ts index ca8e284a6e..fbdb7a38d5 100644 --- a/src/vs/workbench/contrib/files/browser/views/openEditorsView.ts +++ b/src/vs/workbench/contrib/files/browser/views/openEditorsView.ts @@ -271,7 +271,7 @@ export class OpenEditorsView extends ViewPane { })); const resourceNavigator = this._register(new ListResourceNavigator(this.list, { configurationService: this.configurationService })); this._register(resourceNavigator.onDidOpen(e => { - if (!e.element) { + if (typeof e.element !== 'number') { return; } diff --git a/src/vs/workbench/contrib/files/common/editors/fileEditorInput.ts b/src/vs/workbench/contrib/files/common/editors/fileEditorInput.ts index 7fff2db949..1cd73a811b 100644 --- a/src/vs/workbench/contrib/files/common/editors/fileEditorInput.ts +++ b/src/vs/workbench/contrib/files/common/editors/fileEditorInput.ts @@ -314,12 +314,12 @@ export class FileEditorInput extends AbstractTextResourceEditorInput implements } matches(otherInput: unknown): boolean { - if (super.matches(otherInput) === true) { + if (otherInput === this) { return true; } - if (otherInput) { - return otherInput instanceof FileEditorInput && otherInput.resource.toString() === this.resource.toString(); + if (otherInput instanceof FileEditorInput) { + return extUri.isEqual(otherInput.resource, this.resource); } return false; diff --git a/src/vs/workbench/contrib/files/common/files.ts b/src/vs/workbench/contrib/files/common/files.ts index 94576a0d11..d8e0f5ef3e 100644 --- a/src/vs/workbench/contrib/files/common/files.ts +++ b/src/vs/workbench/contrib/files/common/files.ts @@ -33,11 +33,6 @@ export const VIEWLET_ID = 'workbench.view.explorer'; */ export const VIEW_ID = 'workbench.explorer.fileView'; -/** - * Id of the default editor for open with. - */ -export const DEFAULT_EDITOR_ID = 'default'; - export interface IExplorerService { readonly _serviceBrand: undefined; readonly roots: ExplorerItem[]; @@ -256,6 +251,6 @@ export class OpenEditor implements IEditorIdentifier { } getResource(): URI | undefined { - return toResource(this.editor, { supportSideBySide: SideBySideEditor.MASTER }); + return toResource(this.editor, { supportSideBySide: SideBySideEditor.PRIMARY }); } } diff --git a/src/vs/workbench/contrib/files/test/browser/explorerView.test.ts b/src/vs/workbench/contrib/files/test/browser/explorerView.test.ts index 67b1e4d8f9..4fa94156fb 100644 --- a/src/vs/workbench/contrib/files/test/browser/explorerView.test.ts +++ b/src/vs/workbench/contrib/files/test/browser/explorerView.test.ts @@ -87,7 +87,7 @@ suite('Files - ExplorerView', () => { container: label, onDidRender: emitter.event } - }); + }, 1, false); assert.equal(navigationController.count, 3); assert.equal(navigationController.index, 2); diff --git a/src/vs/workbench/contrib/hover/browser/hoverService.ts b/src/vs/workbench/contrib/hover/browser/hoverService.ts deleted file mode 100644 index f25c9b56ce..0000000000 --- a/src/vs/workbench/contrib/hover/browser/hoverService.ts +++ /dev/null @@ -1,55 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Source EULA. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { IHoverService, IHoverOptions } from 'vs/workbench/contrib/hover/browser/hover'; -import { IContextViewService } from 'vs/platform/contextview/browser/contextView'; -import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; -import { HoverWidget } from 'vs/workbench/contrib/hover/browser/hoverWidget'; -import { IContextViewProvider, IDelegate } from 'vs/base/browser/ui/contextview/contextview'; - -export class HoverService implements IHoverService { - declare readonly _serviceBrand: undefined; - - private _currentHoverOptions: IHoverOptions | undefined; - - constructor( - @IInstantiationService private readonly _instantiationService: IInstantiationService, - @IContextViewService private readonly _contextViewService: IContextViewService - ) { - } - - showHover(options: IHoverOptions, focus?: boolean): void { - if (this._currentHoverOptions === options) { - return; - } - this._currentHoverOptions = options; - - const hover = this._instantiationService.createInstance(HoverWidget, options); - const provider = this._contextViewService as IContextViewProvider; - const contextViewDelegate: IDelegate = { - render: container => { - hover.render(container); - hover.onDispose(() => this._currentHoverOptions = undefined); - if (focus) { - hover.focus(); - } - return hover; - }, - anchorPosition: hover.anchor, - getAnchor: () => ({ x: hover.x, y: hover.y }), - layout: () => hover.layout() - }; - provider.showContextView(contextViewDelegate); - hover.onRequestLayout(() => provider.layout()); - } - - hideHover(): void { - if (!this._currentHoverOptions) { - return; - } - this._currentHoverOptions = undefined; - this._contextViewService.hideContextView(); - } -} diff --git a/src/vs/workbench/contrib/issue/electron-browser/issue.contribution.ts b/src/vs/workbench/contrib/issue/electron-browser/issue.contribution.ts index 47bdbee95c..4c355a5aa9 100644 --- a/src/vs/workbench/contrib/issue/electron-browser/issue.contribution.ts +++ b/src/vs/workbench/contrib/issue/electron-browser/issue.contribution.ts @@ -42,7 +42,7 @@ if (!!product.reportIssueUrl) { MenuRegistry.appendMenuItem(MenuId.CommandPalette, { command }); } -const developerCategory = nls.localize('developer', "Developer"); +const developerCategory = nls.localize({ key: 'developer', comment: ['A developer on Code itself or someone diagnosing issues in Code'] }, "Developer"); workbenchActionsRegistry.registerWorkbenchAction(SyncActionDescriptor.from(OpenProcessExplorer), 'Developer: Open Process Explorer', developerCategory); registerSingleton(IWorkbenchIssueService, WorkbenchIssueService, true); diff --git a/src/vs/workbench/contrib/logs/common/logs.contribution.ts b/src/vs/workbench/contrib/logs/common/logs.contribution.ts index 0975cd46ad..87a01ad9f7 100644 --- a/src/vs/workbench/contrib/logs/common/logs.contribution.ts +++ b/src/vs/workbench/contrib/logs/common/logs.contribution.ts @@ -24,7 +24,7 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti import { LogsDataCleaner } from 'vs/workbench/contrib/logs/common/logsDataCleaner'; const workbenchActionsRegistry = Registry.as(WorkbenchActionExtensions.WorkbenchActions); -const devCategory = nls.localize('developer', "Developer"); +const devCategory = nls.localize({ key: 'developer', comment: ['A developer on Code itself or someone diagnosing issues in Code'] }, "Developer"); workbenchActionsRegistry.registerWorkbenchAction(SyncActionDescriptor.from(SetLogLevelAction), 'Developer: Set Log Level...', devCategory); class LogOutputChannels extends Disposable implements IWorkbenchContribution { @@ -53,7 +53,7 @@ class LogOutputChannels extends Disposable implements IWorkbenchContribution { this.instantiationService.createInstance(LogsDataCleaner); const workbenchActionsRegistry = Registry.as(WorkbenchActionExtensions.WorkbenchActions); - const devCategory = nls.localize('developer', "Developer"); + const devCategory = nls.localize({ key: 'developer', comment: ['A developer on Code itself or someone diagnosing issues in Code'] }, "Developer"); workbenchActionsRegistry.registerWorkbenchAction(SyncActionDescriptor.from(OpenWindowSessionLogFileAction), 'Developer: Open Window Log File (Session)...', devCategory); } diff --git a/src/vs/workbench/contrib/logs/electron-browser/logs.contribution.ts b/src/vs/workbench/contrib/logs/electron-browser/logs.contribution.ts index cba9aa48d2..f1e21bf7fa 100644 --- a/src/vs/workbench/contrib/logs/electron-browser/logs.contribution.ts +++ b/src/vs/workbench/contrib/logs/electron-browser/logs.contribution.ts @@ -10,6 +10,6 @@ import { SyncActionDescriptor } from 'vs/platform/actions/common/actions'; import { OpenLogsFolderAction, OpenExtensionLogsFolderAction } from 'vs/workbench/contrib/logs/electron-browser/logsActions'; const workbenchActionsRegistry = Registry.as(WorkbenchActionExtensions.WorkbenchActions); -const devCategory = nls.localize('developer', "Developer"); +const devCategory = nls.localize({ key: 'developer', comment: ['A developer on Code itself or someone diagnosing issues in Code'] }, "Developer"); workbenchActionsRegistry.registerWorkbenchAction(SyncActionDescriptor.from(OpenLogsFolderAction), 'Developer: Open Logs Folder', devCategory); workbenchActionsRegistry.registerWorkbenchAction(SyncActionDescriptor.from(OpenExtensionLogsFolderAction), 'Developer: Open Extension Logs Folder', devCategory); diff --git a/src/vs/workbench/contrib/markers/browser/markersTreeViewer.ts b/src/vs/workbench/contrib/markers/browser/markersTreeViewer.ts index 55dff139bd..28d8196cfc 100644 --- a/src/vs/workbench/contrib/markers/browser/markersTreeViewer.ts +++ b/src/vs/workbench/contrib/markers/browser/markersTreeViewer.ts @@ -16,7 +16,7 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti import { attachBadgeStyler } from 'vs/platform/theme/common/styler'; import { IThemeService, registerThemingParticipant } from 'vs/platform/theme/common/themeService'; import { IDisposable, dispose, Disposable, toDisposable, DisposableStore } from 'vs/base/common/lifecycle'; -import { ActionBar } from 'vs/base/browser/ui/actionbar/actionbar'; +import { ActionBar, ActionViewItem } from 'vs/base/browser/ui/actionbar/actionbar'; import { QuickFixAction, QuickFixActionViewItem } from 'vs/workbench/contrib/markers/browser/markersViewActions'; import { ILabelService } from 'vs/platform/label/common/label'; import { dirname, basename, isEqual } from 'vs/base/common/resources'; @@ -254,6 +254,30 @@ export class MarkerRenderer implements ITreeRenderer action.id === QuickFixAction.ID ? _instantiationService.createInstance(QuickFixActionViewItem, action) : undefined })); this.icon = dom.append(parent, dom.$('')); - this.multilineActionbar = this._register(new ActionBar(dom.append(parent, dom.$('.multiline-actions')))); + this.multilineActionbar = this._register(new ActionBar(dom.append(parent, dom.$('.multiline-actions')), { + actionViewItemProvider: (action) => { + if (action.id === toggleMultilineAction) { + return new ToggleMultilineActionViewItem(undefined, action, { icon: true }); + } + return undefined; + } + })); this.messageAndDetailsContainer = dom.append(parent, dom.$('.marker-message-details-container')); this._clickModifierKey = this._getClickModifierKey(); @@ -332,10 +363,10 @@ class MarkerWidget extends Disposable { private renderMultilineActionbar(marker: Marker): void { const viewModel = this.markersViewModel.getViewModel(marker); const multiline = viewModel && viewModel.multiline; - const action = new Action('problems.action.toggleMultiline'); + const action = new Action(toggleMultilineAction); action.enabled = !!viewModel && marker.lines.length > 1; action.tooltip = multiline ? localize('single line', "Show message in single line") : localize('multi line', "Show message in multiple lines"); - action.class = multiline ? 'codicon codicon-chevron-up' : 'codicon codicon-chevron-down'; + action.class = multiline ? expandedClass : collapsedClass; action.run = () => { if (viewModel) { viewModel.multiline = !viewModel.multiline; } return Promise.resolve(); }; this.multilineActionbar.push([action], { icon: true, label: false }); } diff --git a/src/vs/workbench/contrib/markers/browser/media/markers.css b/src/vs/workbench/contrib/markers/browser/media/markers.css index 9bb3dd918a..5e57e8b580 100644 --- a/src/vs/workbench/contrib/markers/browser/media/markers.css +++ b/src/vs/workbench/contrib/markers/browser/media/markers.css @@ -20,6 +20,11 @@ flex: 1; } +.pane-header .monaco-action-bar .markers-panel-action-filter .monaco-inputbox { + height: 20px; + line-height: 18px; +} + .monaco-workbench.vs .monaco-action-bar .markers-panel-action-filter .monaco-inputbox { height: 25px; } @@ -44,13 +49,21 @@ display: none; } -.markers-panel-action-filter > .markers-panel-filter-controls > .monaco-action-bar .action-label.markers-filters { +.markers-panel-action-filter > .markers-panel-filter-controls > .monaco-action-bar .action-item .action-label.codicon.markers-filters { line-height: 20px; height: 20px; min-width: 22px; margin-left: 4px; } +.pane-header .markers-panel-action-filter > .markers-panel-filter-controls > .monaco-action-bar .action-item .action-label.codicon.markers-filters { + line-height: 18px; + height: 18px; + width: 28px; + margin-right: 0px; + justify-content: center; +} + .panel > .title .monaco-action-bar .action-item.markers-panel-action-filter-container { max-width: 600px; min-width: 300px; diff --git a/src/vs/workbench/contrib/notebook/browser/constants.ts b/src/vs/workbench/contrib/notebook/browser/constants.ts index 398b772de9..83736270b3 100644 --- a/src/vs/workbench/contrib/notebook/browser/constants.ts +++ b/src/vs/workbench/contrib/notebook/browser/constants.ts @@ -8,15 +8,17 @@ export const SCROLLABLE_ELEMENT_PADDING_TOP = 20; // Cell sizing related -export const CELL_MARGIN = 20; +export const CELL_MARGIN = 24; export const CELL_RUN_GUTTER = 32; +export const CODE_CELL_LEFT_MARGIN = 45; export const EDITOR_TOOLBAR_HEIGHT = 0; export const BOTTOM_CELL_TOOLBAR_HEIGHT = 32; export const CELL_STATUSBAR_HEIGHT = 22; -// Top margin of editor -export const EDITOR_TOP_MARGIN = 0; +// Margin above editor +export const EDITOR_TOP_MARGIN = 8; +export const CELL_BOTTOM_MARGIN = 8; // Top and bottom padding inside the monaco editor in a cell, which are included in `cell.editorHeight` export const EDITOR_TOP_PADDING = 12; diff --git a/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts b/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts index 27bd40f546..0058703221 100644 --- a/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts +++ b/src/vs/workbench/contrib/notebook/browser/contrib/coreActions.ts @@ -22,6 +22,7 @@ import { BaseCellRenderTemplate, CellEditState, ICellViewModel, INotebookEditor, import { CellKind, NOTEBOOK_EDITOR_CURSOR_BOUNDARY, NotebookCellRunState } from 'vs/workbench/contrib/notebook/common/notebookCommon'; import { INotebookService } from 'vs/workbench/contrib/notebook/common/notebookService'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; +import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService'; // Notebook Commands const EXECUTE_NOTEBOOK_COMMAND_ID = 'notebook.execute'; @@ -123,8 +124,8 @@ abstract class NotebookAction extends Action2 { abstract async runWithContext(accessor: ServicesAccessor, context: INotebookCellActionContext): Promise; - private isCellActionContext(context: any): context is INotebookCellActionContext { - return context && !!context.cell && !!context.notebookEditor; + private isCellActionContext(context?: INotebookCellActionContext): context is INotebookCellActionContext { + return !!context && !!context.cell && !!context.notebookEditor; } private getActiveCellContext(accessor: ServicesAccessor): INotebookCellActionContext | undefined { @@ -165,7 +166,7 @@ registerAction2(class extends NotebookAction { } async runWithContext(accessor: ServicesAccessor, context: INotebookCellActionContext): Promise { - return runCell(context); + return runCell(accessor, context); } }); @@ -241,7 +242,7 @@ registerAction2(class extends NotebookAction { const newFocusMode = context.cell.focusMode === CellFocusMode.Editor ? 'editor' : 'container'; - const executionP = runCell(context); + const executionP = runCell(accessor, context); // Try to select below, fall back on inserting const nextCell = context.notebookEditor.viewModel?.viewCells[idx + 1]; @@ -274,7 +275,7 @@ registerAction2(class extends NotebookAction { async runWithContext(accessor: ServicesAccessor, context: INotebookCellActionContext): Promise { const newFocusMode = context.cell.focusMode === CellFocusMode.Editor ? 'editor' : 'container'; - const executionP = runCell(context); + const executionP = runCell(accessor, context); const newCell = context.notebookEditor.insertNotebookCell(context.cell, CellKind.Code, 'below'); if (newCell) { context.notebookEditor.focusNotebookCell(newCell, newFocusMode); @@ -307,6 +308,16 @@ registerAction2(class extends NotebookAction { async runWithContext(accessor: ServicesAccessor, context: INotebookCellActionContext): Promise { renderAllMarkdownCells(context); + + const editorGroupService = accessor.get(IEditorGroupsService); + const group = editorGroupService.activeGroup; + + if (group) { + if (group.activeEditor) { + group.pinEditor(group.activeEditor); + } + } + return context.notebookEditor.executeNotebook(); } }); @@ -393,15 +404,24 @@ registerAction2(class extends NotebookAction { export function getActiveNotebookEditor(editorService: IEditorService): INotebookEditor | undefined { // TODO can `isNotebookEditor` be on INotebookEditor to avoid a circular dependency? - const activeEditorPane = editorService.activeEditorPane as any | undefined; - return activeEditorPane?.isNotebookEditor ? activeEditorPane.getControl() : undefined; + const activeEditorPane = editorService.activeEditorPane as unknown as { isNotebookEditor?: boolean } | undefined; + return activeEditorPane?.isNotebookEditor ? (editorService.activeEditorPane?.getControl() as INotebookEditor) : undefined; } -async function runCell(context: INotebookCellActionContext): Promise { +async function runCell(accessor: ServicesAccessor, context: INotebookCellActionContext): Promise { if (context.cell.metadata?.runState === NotebookCellRunState.Running) { return; } + const editorGroupService = accessor.get(IEditorGroupsService); + const group = editorGroupService.activeGroup; + + if (group) { + if (group.activeEditor) { + group.pinEditor(group.activeEditor); + } + } + return context.notebookEditor.executeNotebookCell(context.cell); } @@ -654,7 +674,7 @@ async function moveCell(context: INotebookCellActionContext, direction: 'up' | ' if (result) { // move cell command only works when the cell container has focus - await context.notebookEditor.focusNotebookCell(context.cell, 'container'); + await context.notebookEditor.focusNotebookCell(result, 'container'); } } @@ -1005,13 +1025,7 @@ registerAction2(class extends NotebookAction { } async runWithContext(accessor: ServicesAccessor, context: INotebookCellActionContext): Promise { - const viewModel = context.notebookEditor.viewModel; - - if (!viewModel) { - return; - } - - viewModel.undo(); + await context.notebookEditor.viewModel?.undo(); } }); @@ -1029,7 +1043,7 @@ registerAction2(class extends NotebookAction { } async runWithContext(accessor: ServicesAccessor, context: INotebookCellActionContext): Promise { - context.notebookEditor.viewModel?.redo(); + await context.notebookEditor.viewModel?.redo(); } }); diff --git a/src/vs/workbench/contrib/notebook/browser/contrib/find/findController.ts b/src/vs/workbench/contrib/notebook/browser/contrib/find/findController.ts index 997015a025..057284f1b6 100644 --- a/src/vs/workbench/contrib/notebook/browser/contrib/find/findController.ts +++ b/src/vs/workbench/contrib/notebook/browser/contrib/find/findController.ts @@ -3,6 +3,7 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ +import 'vs/css!./media/notebookFind'; import { IContextViewService } from 'vs/platform/contextview/browser/contextView'; import { IContextKeyService, IContextKey, ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; import { KEYBINDING_CONTEXT_NOTEBOOK_FIND_WIDGET_FOCUSED, INotebookEditor, CellFindMatch, CellEditState, INotebookEditorContribution, NOTEBOOK_EDITOR_FOCUSED } from 'vs/workbench/contrib/notebook/browser/notebookBrowser'; @@ -24,6 +25,10 @@ import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { getActiveNotebookEditor } from 'vs/workbench/contrib/notebook/browser/contrib/coreActions'; +const FIND_HIDE_TRANSITION = 'find-hide-transition'; +const FIND_SHOW_TRANSITION = 'find-show-transition'; + + export class NotebookFindWidget extends SimpleFindReplaceWidget implements INotebookEditorContribution { static id: string = 'workbench.notebook.find'; protected _findWidgetFocused: IContextKey; @@ -32,6 +37,8 @@ export class NotebookFindWidget extends SimpleFindReplaceWidget implements INote private _currentMatch: number = -1; private _allMatchesDecorations: ICellModelDecorations[] = []; private _currentMatchDecorations: ICellModelDecorations[] = []; + private _showTimeout: number | null = null; + private _hideTimeout: number | null = null; constructor( private readonly _notebookEditor: INotebookEditor, @@ -136,11 +143,6 @@ export class NotebookFindWidget extends SimpleFindReplaceWidget implements INote this._notebookEditor.revealRangeInCenterIfOutsideViewportAsync(this._findMatches[cellIndex].cell, this._findMatches[cellIndex].matches[matchIndex].range); } - hide() { - super.hide(); - this.set([]); - } - protected findFirst(): void { } protected onFocusTrackerFocus() { @@ -243,10 +245,56 @@ export class NotebookFindWidget extends SimpleFindReplaceWidget implements INote }); } + show(initialInput?: string): void { + super.show(initialInput); + + if (this._showTimeout === null) { + if (this._hideTimeout !== null) { + window.clearTimeout(this._hideTimeout); + this._hideTimeout = null; + this._notebookEditor.removeClassName(FIND_HIDE_TRANSITION); + } + + this._notebookEditor.addClassName(FIND_SHOW_TRANSITION); + this._showTimeout = window.setTimeout(() => { + this._notebookEditor.removeClassName(FIND_SHOW_TRANSITION); + this._showTimeout = null; + }, 200); + } else { + // no op + } + } + + hide() { + super.hide(); + this.set([]); + + if (this._hideTimeout === null) { + if (this._showTimeout !== null) { + window.clearTimeout(this._showTimeout); + this._showTimeout = null; + this._notebookEditor.removeClassName(FIND_SHOW_TRANSITION); + } + this._notebookEditor.addClassName(FIND_HIDE_TRANSITION); + this._hideTimeout = window.setTimeout(() => { + this._notebookEditor.removeClassName(FIND_HIDE_TRANSITION); + }, 200); + } else { + // no op + } + } + clear() { this._currentMatch = -1; this._findMatches = []; } + + dispose() { + this._notebookEditor?.removeClassName(FIND_SHOW_TRANSITION); + this._notebookEditor?.removeClassName(FIND_HIDE_TRANSITION); + super.dispose(); + } + } registerNotebookContribution(NotebookFindWidget.id, NotebookFindWidget); diff --git a/src/vs/workbench/contrib/notebook/browser/contrib/find/media/notebookFind.css b/src/vs/workbench/contrib/notebook/browser/contrib/find/media/notebookFind.css new file mode 100644 index 0000000000..1d8c82e279 --- /dev/null +++ b/src/vs/workbench/contrib/notebook/browser/contrib/find/media/notebookFind.css @@ -0,0 +1,12 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +.monaco-workbench .notebookOverlay.notebook-editor.find-hide-transition { + overflow-y: hidden; +} + +.monaco-workbench .notebookOverlay.notebook-editor.find-show-transition { + overflow-y: hidden; +} diff --git a/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts b/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts index 5e75afe012..70685b23e7 100644 --- a/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts +++ b/src/vs/workbench/contrib/notebook/browser/contrib/fold/folding.ts @@ -56,7 +56,7 @@ export class FoldingController extends Disposable implements INotebookEditorCont })); } - saveViewState(): any { + saveViewState(): ICellRange[] { return this._foldingModel?.getMemento() || []; } diff --git a/src/vs/workbench/contrib/notebook/browser/contrib/status/editorStatus.ts b/src/vs/workbench/contrib/notebook/browser/contrib/status/editorStatus.ts index ff9b3876b9..c2eee04cf8 100644 --- a/src/vs/workbench/contrib/notebook/browser/contrib/status/editorStatus.ts +++ b/src/vs/workbench/contrib/notebook/browser/contrib/status/editorStatus.ts @@ -37,11 +37,11 @@ registerAction2(class extends Action2 { const notebookService = accessor.get(INotebookService); const quickInputService = accessor.get(IQuickInputService); - const activeEditorPane = editorService.activeEditorPane as any | undefined; + const activeEditorPane = editorService.activeEditorPane as unknown as { isNotebookEditor?: boolean } | undefined; if (!activeEditorPane?.isNotebookEditor) { return; } - const editor = activeEditorPane.getControl() as INotebookEditor; + const editor = editorService.activeEditorPane?.getControl() as INotebookEditor; const activeKernel = editor.activeKernel; const availableKernels = notebookService.getContributedNotebookKernels(editor.viewModel!.viewType, editor.viewModel!.uri); diff --git a/src/vs/workbench/contrib/notebook/browser/contrib/toc/tocProvider.ts b/src/vs/workbench/contrib/notebook/browser/contrib/toc/tocProvider.ts index 41a071a847..0e14f61719 100644 --- a/src/vs/workbench/contrib/notebook/browser/contrib/toc/tocProvider.ts +++ b/src/vs/workbench/contrib/notebook/browser/contrib/toc/tocProvider.ts @@ -7,14 +7,28 @@ import { TableOfContentsProviderRegistry, ITableOfContentsProvider, ITableOfCont import { NotebookEditor } from 'vs/workbench/contrib/notebook/browser/notebookEditor'; import { CellKind } from 'vs/workbench/contrib/notebook/common/notebookCommon'; import { Codicon } from 'vs/base/common/codicons'; +import { DisposableStore, toDisposable } from 'vs/base/common/lifecycle'; TableOfContentsProviderRegistry.register(NotebookEditor.ID, new class implements ITableOfContentsProvider { - async provideTableOfContents(editor: NotebookEditor) { + async provideTableOfContents(editor: NotebookEditor, context: { disposables: DisposableStore }) { if (!editor.viewModel) { return undefined; } // return an entry per markdown header const notebookWidget = editor.getControl(); + if (!notebookWidget) { + return undefined; + } + + // restore initial view state when no item was picked + let didPickOne = false; + const viewState = notebookWidget.getEditorViewState(); + context.disposables.add(toDisposable(() => { + if (!didPickOne) { + notebookWidget.restoreListViewState(viewState); + } + })); + const result: ITableOfContentsEntry[] = []; for (const cell of editor.viewModel.viewCells) { const content = cell.getText(); @@ -29,13 +43,14 @@ TableOfContentsProviderRegistry.register(NotebookEditor.ID, new class implements icon: cell.cellKind === CellKind.Markdown ? Codicon.markdown : Codicon.code, label: matches[j].replace(/^[ \t]*(\#+)/, ''), pick() { - notebookWidget?.revealInCenterIfOutsideViewport(cell); - notebookWidget?.selectElement(cell); - notebookWidget?.focusNotebookCell(cell, cell.cellKind === CellKind.Markdown ? 'container' : 'editor'); + didPickOne = true; + notebookWidget.revealInCenterIfOutsideViewport(cell); + notebookWidget.selectElement(cell); + notebookWidget.focusNotebookCell(cell, cell.cellKind === CellKind.Markdown ? 'container' : 'editor'); }, preview() { - notebookWidget?.revealInCenterIfOutsideViewport(cell); - notebookWidget?.selectElement(cell); + notebookWidget.revealInCenterIfOutsideViewport(cell); + notebookWidget.selectElement(cell); } }); } diff --git a/src/vs/workbench/contrib/notebook/browser/media/notebook.css b/src/vs/workbench/contrib/notebook/browser/media/notebook.css index 90e02e980c..b51d27ac56 100644 --- a/src/vs/workbench/contrib/notebook/browser/media/notebook.css +++ b/src/vs/workbench/contrib/notebook/browser/media/notebook.css @@ -58,11 +58,11 @@ padding-top: 8px; } -.monaco-workbench .notebookOverlay > .cell-list-container > .monaco-list > .monaco-scrollable-element > .monaco-list-rows > .monaco-list-row.cell-drag-image .notebook-cell-focus-indicator { - top: 8px !important; +.monaco-workbench .notebookOverlay > .cell-list-container > .monaco-list > .monaco-scrollable-element > .monaco-list-rows > .monaco-list-row.cell-drag-image .cell-focus-indicator { + display: none; } -.monaco-workbench .notebookOverlay > .cell-list-container > .monaco-list > .monaco-scrollable-element > .monaco-list-rows > .monaco-list-row.cell-drag-image.markdown-cell-row .notebook-cell-focus-indicator { +.monaco-workbench .notebookOverlay > .cell-list-container > .monaco-list > .monaco-scrollable-element > .monaco-list-rows > .monaco-list-row.cell-drag-image.markdown-cell-row .cell-focus-indicator { bottom: 8px; } @@ -114,7 +114,6 @@ .monaco-workbench .notebookOverlay .output { position: absolute; height: 0px; - width: 100%; user-select: text; transform: translate3d(0px, 0px, 0px); cursor: auto; @@ -143,6 +142,7 @@ .monaco-workbench .notebookOverlay .output > div.foreground .output-plaintext { font-family: var(--monaco-monospace-font); white-space: pre-wrap; + word-wrap: break-word; } .monaco-workbench .notebookOverlay .cell-drag-image .output .multi-mimetype-output { @@ -202,7 +202,6 @@ outline: none !important; } -.monaco-workbench .notebookOverlay > .cell-list-container > .monaco-list > .monaco-scrollable-element > .monaco-list-rows > .monaco-list-row.selected, .monaco-workbench .notebookOverlay > .cell-list-container > .monaco-list > .monaco-scrollable-element > .monaco-list-rows > .monaco-list-row.focused { outline: none !important; } @@ -217,8 +216,8 @@ display: inline-block; position: absolute; height: 26px; - right: 32px; - top: -20px; + right: 44px; + top: -12px; /* this lines up the bottom toolbar border with the current line when on line 01 */ z-index: 30; } @@ -301,10 +300,10 @@ position: relative; height: 22px; flex-shrink: 0; + top: 9px; } .monaco-workbench .notebookOverlay > .cell-list-container > .monaco-list > .monaco-scrollable-element > .monaco-list-rows > .monaco-list-row .cell .run-button-container .monaco-toolbar { - margin-top: 4px; visibility: hidden; } @@ -371,39 +370,62 @@ outline: none !important; } +.monaco-workbench .notebookOverlay .monaco-list .monaco-list-row .cell-shadow-container { + height: 10px; + left: 0px; + right: 0px; + overflow: hidden; + position: absolute; +} -.monaco-workbench .notebookOverlay .monaco-list .monaco-list-row .notebook-cell-focus-indicator { +.monaco-workbench .notebookOverlay .monaco-list .monaco-list-row .cell-shadow-container-top { + top: -10px; +} + +.monaco-workbench .notebookOverlay .monaco-list .monaco-list-row .cell-shadow-top { + margin-top: 10px; + width: 100%; +} + +.monaco-workbench .notebookOverlay .monaco-list .monaco-list-row .cell-focus-indicator { display: block; content: ' '; position: absolute; - width: 32px; box-sizing: border-box; - border-left-width: 2px; - border-left-style: solid; - top: 22px; + top: 0px; visibility: hidden; - opacity: 0.6; + opacity: 1; } -.monaco-workbench .notebookOverlay .monaco-list .monaco-list-row .notebook-cell-focus-indicator:hover { +.monaco-workbench .notebookOverlay .monaco-list .monaco-list-row .cell-focus-indicator-side { + /** Overidden for code cells */ + top: 0px; + bottom: 0px; +} + +.monaco-workbench .notebookOverlay .monaco-list .monaco-list-row .cell-focus-indicator-top, +.monaco-workbench .notebookOverlay .monaco-list .monaco-list-row .cell-focus-indicator-bottom { + width: 100%; +} + +.monaco-workbench .notebookOverlay .monaco-list .monaco-list-row .cell-focus-indicator-right { + right: 0px; +} + +.monaco-workbench .notebookOverlay .monaco-list .monaco-list-row .cell-focus-indicator:hover { cursor: grab; } -.monaco-workbench .notebookOverlay .monaco-list .monaco-list-row .notebook-cell-focus-indicator .codicon:hover { +.monaco-workbench .notebookOverlay .monaco-list .monaco-list-row .cell-focus-indicator .codicon:hover { cursor: pointer; } -.monaco-workbench .notebookOverlay .monaco-list .monaco-list-row:hover .notebook-cell-focus-indicator, -.monaco-workbench .notebookOverlay .monaco-list .monaco-list-row.cell-output-hover .notebook-cell-focus-indicator, -.monaco-workbench .notebookOverlay .monaco-list .monaco-list-row.focused .notebook-cell-focus-indicator { +.monaco-workbench .notebookOverlay .monaco-list .monaco-list-row:hover .cell-focus-indicator, +.monaco-workbench .notebookOverlay .monaco-list .monaco-list-row.cell-output-hover .cell-focus-indicator, +.monaco-workbench .notebookOverlay .monaco-list .monaco-list-row.focused .cell-focus-indicator { visibility: visible; } -.monaco-workbench .notebookOverlay .monaco-list:focus .monaco-list-row .notebook-cell-focus-indicator, -.monaco-workbench .notebookOverlay .monaco-list:focus-within .monaco-list-row .notebook-cell-focus-indicator { - opacity: 1; -} - .monaco-workbench .notebookOverlay .monaco-list-row .cell-editor-part:before { z-index: 20; content: ""; @@ -427,7 +449,6 @@ left: 0px; right: 0px; opacity: 0; - /* transition: opacity 0.2s ease-in-out; */ z-index: 10; } @@ -640,7 +661,7 @@ .monaco-workbench .notebookOverlay > .cell-list-container .notebook-folding-indicator { position: absolute; - top: 4px; + top: 11px; left: 0px; right: 0; } @@ -648,7 +669,7 @@ .monaco-workbench .notebookOverlay > .cell-list-container .notebook-folding-indicator .codicon { visibility: visible; padding: 4px; - width: calc(100% - 8px); + width: calc(100% - 30px); } /** Theming */ diff --git a/src/vs/workbench/contrib/notebook/browser/notebook.contribution.ts b/src/vs/workbench/contrib/notebook/browser/notebook.contribution.ts index 82bde5bfb2..e813dbae5e 100644 --- a/src/vs/workbench/contrib/notebook/browser/notebook.contribution.ts +++ b/src/vs/workbench/contrib/notebook/browser/notebook.contribution.ts @@ -35,7 +35,7 @@ import { NotebookProviderInfo } from 'vs/workbench/contrib/notebook/common/noteb import { IEditorGroup } from 'vs/workbench/services/editor/common/editorGroupsService'; import { IEditorService, IOpenEditorOverride } from 'vs/workbench/services/editor/common/editorService'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; -import { CustomEditorsAssociations, customEditorsAssociationsSettingId } from 'vs/workbench/services/editor/common/editorAssociationsSetting'; +import { CustomEditorsAssociations, customEditorsAssociationsSettingId } from 'vs/workbench/services/editor/common/editorOpenWith'; import { CustomEditorInfo } from 'vs/workbench/contrib/customEditor/common/customEditor'; import { NotebookEditorOptions } from 'vs/workbench/contrib/notebook/browser/notebookEditorWidget'; import { INotebookEditor } from 'vs/workbench/contrib/notebook/browser/notebookBrowser'; @@ -148,15 +148,11 @@ export class NotebookContribution extends Disposable implements IWorkbenchContri ) { super(); - this._register(undoRedoService.registerUriComparisonKeyComputer({ - getComparisonKey: (uri: URI): string | null => { - if (uri.scheme !== CellUri.scheme) { - return null; - } - + this._register(undoRedoService.registerUriComparisonKeyComputer(CellUri.scheme, { + getComparisonKey: (uri: URI): string => { const data = CellUri.parse(uri); if (!data) { - return null; + return uri.toString(); } return data.notebook.toString(); @@ -189,7 +185,7 @@ export class NotebookContribution extends Disposable implements IWorkbenchContri this._register(this.editorService.onDidVisibleEditorsChange(() => { const visibleNotebookEditors = editorService.visibleEditorPanes - .filter(pane => (pane as any).isNotebookEditor) + .filter(pane => (pane as unknown as { isNotebookEditor?: boolean }).isNotebookEditor) .map(pane => pane.getControl() as INotebookEditor) .filter(control => !!control) .map(editor => editor.getId()); @@ -198,8 +194,8 @@ export class NotebookContribution extends Disposable implements IWorkbenchContri })); this._register(this.editorService.onDidActiveEditorChange(() => { - const activeEditorPane = editorService.activeEditorPane as any | undefined; - const notebookEditor = activeEditorPane?.isNotebookEditor ? activeEditorPane.getControl() : undefined; + const activeEditorPane = editorService.activeEditorPane as { isNotebookEditor?: boolean } | undefined; + const notebookEditor = activeEditorPane?.isNotebookEditor ? (editorService.activeEditorPane?.getControl() as INotebookEditor) : undefined; if (notebookEditor) { this.notebookService.updateActiveNotebookEditor(notebookEditor); } else { @@ -229,7 +225,7 @@ export class NotebookContribution extends Disposable implements IWorkbenchContri private onEditorOpening2(originalInput: IEditorInput, options: IEditorOptions | ITextEditorOptions | undefined, group: IEditorGroup): IOpenEditorOverride | undefined { - const id = typeof options?.override === 'string' ? options.override : undefined; + let id = typeof options?.override === 'string' ? options.override : undefined; if (id === undefined && originalInput.isUntitled()) { return undefined; } @@ -251,6 +247,11 @@ export class NotebookContribution extends Disposable implements IWorkbenchContri cellOptions = { resource: originalInput.resource, options }; } + if (id === undefined) { + const exitingNotebookEditor = group.editors.find(editor => editor instanceof NotebookEditorInput && isEqual(editor.resource, notebookUri)); + id = exitingNotebookEditor?.viewType; + } + if (id === undefined) { const existingEditors = group.editors.filter(editor => editor.resource && isEqual(editor.resource, notebookUri) && !(editor instanceof NotebookEditorInput)); diff --git a/src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts b/src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts index 7cc22aa2e7..d5165a6b4b 100644 --- a/src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts +++ b/src/vs/workbench/contrib/notebook/browser/notebookBrowser.ts @@ -136,11 +136,11 @@ export interface INotebookEditorContribution { /** * Store view state. */ - saveViewState?(): any; + saveViewState?(): unknown; /** * Restore view state. */ - restoreViewState?(state: any): void; + restoreViewState?(state: unknown): void; } export interface INotebookEditor extends IEditor { @@ -210,17 +210,17 @@ export interface INotebookEditor extends IEditor { /** * Move a cell up one spot */ - moveCellUp(cell: ICellViewModel): Promise; + moveCellUp(cell: ICellViewModel): Promise; /** * Move a cell down one spot */ - moveCellDown(cell: ICellViewModel): Promise; + moveCellDown(cell: ICellViewModel): Promise; /** * Move a cell above or below another cell */ - moveCell(cell: ICellViewModel, relativeToCell: ICellViewModel, direction: 'above' | 'below'): Promise; + moveCell(cell: ICellViewModel, relativeToCell: ICellViewModel, direction: 'above' | 'below'): Promise; /** * Focus the container of a cell (the monaco editor inside is not focused). @@ -260,7 +260,7 @@ export interface INotebookEditor extends IEditor { /** * Render the output in webview layer */ - createInset(cell: ICellViewModel, output: IProcessedOutput, shadowContent: string, offset: number): void; + createInset(cell: ICellViewModel, output: IProcessedOutput, shadowContent: string, offset: number): Promise; /** * Remove the output from the webview layer @@ -270,7 +270,22 @@ export interface INotebookEditor extends IEditor { /** * Send message to the webview for outputs. */ - postMessage(message: any): void; + postMessage(forRendererId: string | undefined, message: any): void; + + /** + * Toggle class name on the notebook editor root DOM node. + */ + toggleClassName(className: string): void; + + /** + * Remove class name on the notebook editor root DOM node. + */ + addClassName(className: string): void; + + /** + * Remove class name on the notebook editor root DOM node. + */ + removeClassName(className: string): void; /** * Trigger the editor to scroll from scroll event programmatically @@ -333,7 +348,7 @@ export interface INotebookEditor extends IEditor { * Change the decorations on cells. * The notebook is virtualized and this method should be called to create/delete editor decorations safely. */ - changeDecorations(callback: (changeAccessor: IModelDecorationsChangeAccessor) => any): any; + changeDecorations(callback: (changeAccessor: IModelDecorationsChangeAccessor) => T): T | null; /** * An event emitted on a "mouseup". @@ -356,6 +371,7 @@ export interface INotebookEditor extends IEditor { } export interface INotebookCellList { + isDisposed: boolean readonly contextKeyService: IContextKeyService; elementAt(position: number): ICellViewModel | undefined; elementHeight(element: ICellViewModel): number; @@ -419,7 +435,7 @@ export interface BaseCellRenderTemplate { currentRenderedCell?: ICellViewModel; statusBarContainer: HTMLElement; languageStatusBarItem: CellLanguageStatusBarItem; - toJSON: () => any; + toJSON: () => object; } export interface MarkdownCellRenderTemplate extends BaseCellRenderTemplate { @@ -440,6 +456,12 @@ export interface CodeCellRenderTemplate extends BaseCellRenderTemplate { editor: ICodeEditor; progressBar: ProgressBar; timer: TimerRenderer; + focusIndicatorRight: HTMLElement; + focusIndicatorBottom: HTMLElement; +} + +export function isCodeCellRenderTemplate(templateData: BaseCellRenderTemplate): templateData is CodeCellRenderTemplate { + return !!(templateData as CodeCellRenderTemplate).runToolbar; } export interface IOutputTransformContribution { @@ -556,7 +578,7 @@ export function getVisibleCells(cells: CellViewModel[], hiddenRanges: ICellRange let start = 0; let hiddenRangeIndex = 0; - let result: any[] = []; + let result: CellViewModel[] = []; while (start < cells.length && hiddenRangeIndex < hiddenRanges.length) { if (start < hiddenRanges[hiddenRangeIndex].start) { diff --git a/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts b/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts index eb79f9c5b0..b73187ba66 100644 --- a/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts +++ b/src/vs/workbench/contrib/notebook/browser/notebookEditor.ts @@ -6,7 +6,7 @@ import * as DOM from 'vs/base/browser/dom'; import { CancellationToken } from 'vs/base/common/cancellation'; import { Emitter, Event } from 'vs/base/common/event'; -import { MutableDisposable, DisposableStore } from 'vs/base/common/lifecycle'; +import { DisposableStore } from 'vs/base/common/lifecycle'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IStorageService } from 'vs/platform/storage/common/storage'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; @@ -16,8 +16,8 @@ import { EditorOptions, IEditorMemento, IEditorInput } from 'vs/workbench/common import { NotebookEditorInput } from 'vs/workbench/contrib/notebook/browser/notebookEditorInput'; import { INotebookEditorViewState, NotebookViewModel } from 'vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel'; import { IEditorGroup, IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService'; -import { NotebookEditorWidget } from 'vs/workbench/contrib/notebook/browser/notebookEditorWidget'; -import { EditorPart } from 'vs/workbench/browser/parts/editor/editorPart'; +import { NotebookEditorWidget, NotebookEditorOptions } from 'vs/workbench/contrib/notebook/browser/notebookEditorWidget'; +import { IEditorDropService } from 'vs/workbench/services/editor/browser/editorDropService'; import { INotificationService, Severity } from 'vs/platform/notification/common/notification'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IEditorOptions, ITextEditorOptions } from 'vs/platform/editor/common/editor'; @@ -30,7 +30,7 @@ export class NotebookEditor extends BaseEditor { static readonly ID: string = 'workbench.editor.notebook'; private readonly _editorMemento: IEditorMemento; - private readonly _groupListener = this._register(new MutableDisposable()); + private readonly _groupListener = this._register(new DisposableStore()); private readonly _widgetDisposableStore: DisposableStore = new DisposableStore(); private _widget: IBorrowValue = { value: undefined }; private _rootElement!: HTMLElement; @@ -38,7 +38,7 @@ export class NotebookEditor extends BaseEditor { // todo@rebornix is there a reason that `super.fireOnDidFocus` isn't used? private readonly _onDidFocusWidget = this._register(new Emitter()); - get onDidFocus(): Event { return this._onDidFocusWidget.event; } + get onDidFocus(): Event { return this._onDidFocusWidget.event; } private readonly _onDidChangeModel = this._register(new Emitter()); readonly onDidChangeModel: Event = this._onDidChangeModel.event; @@ -50,6 +50,7 @@ export class NotebookEditor extends BaseEditor { @IStorageService storageService: IStorageService, @IEditorService private readonly _editorService: IEditorService, @IEditorGroupsService private readonly _editorGroupService: IEditorGroupsService, + @IEditorDropService private readonly _editorDropService: IEditorDropService, @INotificationService private readonly _notificationService: INotificationService, @INotebookEditorWidgetService private readonly _notebookWidgetService: INotebookEditorWidgetService, ) { @@ -97,18 +98,24 @@ export class NotebookEditor extends BaseEditor { return this._widget.value; } - onWillHide() { - this._saveEditorViewState(this.input); - if (this.input && this._widget.value) { - // the widget is not transfered to other editor inputs - this._widget.value.onWillHide(); - } - super.onWillHide(); - } - setEditorVisible(visible: boolean, group: IEditorGroup | undefined): void { super.setEditorVisible(visible, group); - this._groupListener.value = group?.onWillCloseEditor(e => this._saveEditorViewState(e.editor)); + if (group) { + this._groupListener.add(group.onWillCloseEditor(e => this._saveEditorViewState(e.editor))); + this._groupListener.add(group.onDidGroupChange(() => { + if (this._editorGroupService.activeGroup !== group) { + this._widget?.value?.updateEditorFocus(); + } + })); + } + + if (!visible) { + this._saveEditorViewState(this.input); + if (this.input && this._widget.value) { + // the widget is not transfered to other editor inputs + this._widget.value.onWillHide(); + } + } } focus() { @@ -123,6 +130,11 @@ export class NotebookEditor extends BaseEditor { this._saveEditorViewState(this.input); await super.setInput(input, options, token); + // Check for cancellation + if (token.isCancellationRequested) { + return undefined; + } + this._widgetDisposableStore.clear(); // there currently is a widget which we still own so @@ -138,11 +150,15 @@ export class NotebookEditor extends BaseEditor { } const model = await input.resolve(this._widget.value!.getId()); + // Check for cancellation + if (token.isCancellationRequested) { + return undefined; + } if (model === null) { this._notificationService.prompt( Severity.Error, - localize('fail.noEditor', "Cannot open resource with notebook editor type '${input.viewType}', please check if you have the right extension installed or enabled."), + localize('fail.noEditor', "Cannot open resource with notebook editor type '{0}', please check if you have the right extension installed or enabled.", input.viewType), [{ label: localize('fail.reOpen', "Reopen file with VS Code standard text editor"), run: async () => { @@ -157,23 +173,29 @@ export class NotebookEditor extends BaseEditor { const viewState = this._loadTextEditorViewState(input); - await this._widget.value!.setModel(model.notebook, viewState, options); + await this._widget.value!.setModel(model.notebook, viewState); + await this._widget.value!.setOptions(options instanceof NotebookEditorOptions ? options : undefined); this._widgetDisposableStore.add(this._widget.value!.onDidFocus(() => this._onDidFocusWidget.fire())); - if (this._editorGroupService instanceof EditorPart) { - this._widgetDisposableStore.add(this._editorGroupService.createEditorDropTarget(this._widget.value!.getDomNode(), { - groupContainsPredicate: (group) => this.group?.id === group.group.id - })); - } + this._widgetDisposableStore.add(this._editorDropService.createEditorDropTarget(this._widget.value!.getDomNode(), { + containsGroup: (group) => this.group?.id === group.group.id + })); } clearInput(): void { if (this._widget.value) { + this._saveEditorViewState(this.input); this._widget.value.onWillHide(); } super.clearInput(); } + setOptions(options: EditorOptions | undefined): void { + if (options instanceof NotebookEditorOptions) { + this._widget.value?.setOptions(options); + } + super.setOptions(options); + } protected saveState(): void { this._saveEditorViewState(this.input); @@ -182,6 +204,10 @@ export class NotebookEditor extends BaseEditor { private _saveEditorViewState(input: IEditorInput | undefined): void { if (this.group && this._widget.value && input instanceof NotebookEditorInput) { + if (this._widget.value.isDisposed) { + return; + } + const state = this._widget.value.getEditorViewState(); this._editorMemento.saveEditorState(this.group, input.resource, state); } @@ -227,7 +253,7 @@ export class NotebookEditor extends BaseEditor { super.dispose(); } - toJSON(): any { + toJSON(): object { return { notebookHandle: this.viewModel?.handle }; diff --git a/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts b/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts index ca7d287324..c57e360937 100644 --- a/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts +++ b/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts @@ -23,11 +23,11 @@ import { IContextKey, IContextKeyService } from 'vs/platform/contextkey/common/c import { IResourceEditorInput } from 'vs/platform/editor/common/editor'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; -import { contrastBorder, editorBackground, focusBorder, foreground, registerColor, textBlockQuoteBackground, textBlockQuoteBorder, textLinkActiveForeground, textLinkForeground, textPreformatForeground, errorForeground, transparent } from 'vs/platform/theme/common/colorRegistry'; +import { contrastBorder, editorBackground, focusBorder, foreground, registerColor, textBlockQuoteBackground, textBlockQuoteBorder, textLinkActiveForeground, textLinkForeground, textPreformatForeground, errorForeground, transparent, widgetShadow, listFocusBackground, listInactiveSelectionBackground, scrollbarSliderBackground, scrollbarSliderHoverBackground, scrollbarSliderActiveBackground } from 'vs/platform/theme/common/colorRegistry'; import { registerThemingParticipant } from 'vs/platform/theme/common/themeService'; import { EditorMemento } from 'vs/workbench/browser/parts/editor/baseEditor'; import { EditorOptions, IEditorMemento } from 'vs/workbench/common/editor'; -import { CELL_MARGIN, CELL_RUN_GUTTER, EDITOR_BOTTOM_PADDING, EDITOR_TOP_MARGIN, EDITOR_TOP_PADDING, SCROLLABLE_ELEMENT_PADDING_TOP, BOTTOM_CELL_TOOLBAR_HEIGHT } from 'vs/workbench/contrib/notebook/browser/constants'; +import { CELL_MARGIN, CELL_RUN_GUTTER, EDITOR_BOTTOM_PADDING, EDITOR_TOP_MARGIN, EDITOR_TOP_PADDING, SCROLLABLE_ELEMENT_PADDING_TOP, BOTTOM_CELL_TOOLBAR_HEIGHT, CELL_BOTTOM_MARGIN, CODE_CELL_LEFT_MARGIN } from 'vs/workbench/contrib/notebook/browser/constants'; import { CellEditState, CellFocusMode, ICellRange, ICellViewModel, INotebookCellList, INotebookEditor, INotebookEditorContribution, INotebookEditorMouseEvent, NotebookLayoutInfo, NOTEBOOK_EDITOR_EDITABLE, NOTEBOOK_EDITOR_EXECUTING_NOTEBOOK, NOTEBOOK_EDITOR_FOCUSED, NOTEBOOK_EDITOR_RUNNABLE, NOTEBOOK_HAS_MULTIPLE_KERNELS, NOTEBOOK_OUTPUT_FOCUSED } from 'vs/workbench/contrib/notebook/browser/notebookBrowser'; import { NotebookEditorExtensionsRegistry } from 'vs/workbench/contrib/notebook/browser/notebookEditorExtensions'; import { NotebookCellList } from 'vs/workbench/contrib/notebook/browser/view/notebookCellList'; @@ -69,7 +69,7 @@ export class NotebookEditorOptions extends EditorOptions { export class NotebookEditorWidget extends Disposable implements INotebookEditor { static readonly ID: string = 'workbench.editor.notebook'; - private static readonly EDITOR_MEMENTOS = new Map>(); + private static readonly EDITOR_MEMENTOS = new Map>(); private _overlayContainer!: HTMLElement; private _body!: HTMLElement; private _webview: BackLayerWebView | null = null; @@ -98,6 +98,7 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor private _cellContextKeyManager: CellContextKeyManager | null = null; private _isVisible = false; private readonly _uuid = generateUuid(); + private _webiewFocused: boolean = false; private _isDisposed: boolean = false; @@ -105,10 +106,10 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor return this._isDisposed; } - private readonly _onDidChangeModel = new Emitter(); + private readonly _onDidChangeModel = this._register(new Emitter()); readonly onDidChangeModel: Event = this._onDidChangeModel.event; - private readonly _onDidFocusEditorWidget = new Emitter(); + private readonly _onDidFocusEditorWidget = this._register(new Emitter()); readonly onDidFocusEditorWidget = this._onDidFocusEditorWidget.event; set viewModel(newModel: NotebookViewModel | undefined) { @@ -129,7 +130,7 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor } private _activeKernel: INotebookKernelInfo | undefined = undefined; - private readonly _onDidChangeKernel = new Emitter(); + private readonly _onDidChangeKernel = this._register(new Emitter()); readonly onDidChangeKernel: Event = this._onDidChangeKernel.event; get activeKernel() { @@ -204,7 +205,7 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor NotebookEditorWidget.EDITOR_MEMENTOS.set(mementoKey, editorMemento); } - return editorMemento; + return editorMemento as IEditorMemento; } protected getMemento(scope: StorageScope): MementoObject { @@ -218,7 +219,9 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor updateEditorFocus() { // Note - focus going to the webview will fire 'blur', but the webview element will be // a descendent of the notebook editor root. - this._editorFocus?.set(DOM.isAncestor(document.activeElement, this._overlayContainer)); + const focused = DOM.isAncestor(document.activeElement, this._overlayContainer); + this._editorFocus?.set(focused); + this._notebookViewModel?.setFocus(focused); } hasFocus() { @@ -302,21 +305,21 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor transformOptimization: false, styleController: (_suffix: string) => { return this._list!; }, overrideStyles: { - listBackground: editorBackground, - listActiveSelectionBackground: editorBackground, + listBackground: Color.transparent, + listActiveSelectionBackground: Color.transparent, listActiveSelectionForeground: foreground, - listFocusAndSelectionBackground: editorBackground, + listFocusAndSelectionBackground: Color.transparent, listFocusAndSelectionForeground: foreground, - listFocusBackground: editorBackground, + listFocusBackground: Color.transparent, listFocusForeground: foreground, listHoverForeground: foreground, - listHoverBackground: editorBackground, + listHoverBackground: Color.transparent, listHoverOutline: focusBorder, listFocusOutline: focusBorder, - listInactiveSelectionBackground: editorBackground, + listInactiveSelectionBackground: Color.transparent, listInactiveSelectionForeground: foreground, - listInactiveFocusBackground: editorBackground, - listInactiveFocusOutline: editorBackground, + listInactiveFocusBackground: Color.transparent, + listInactiveFocusOutline: Color.transparent, }, accessibilityProvider: { getAriaLabel() { return null; }, @@ -387,14 +390,34 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor focus() { this._isVisible = true; this._editorFocus?.set(true); - this._list?.domFocus(); + + if (this._webiewFocused) { + this._webview?.focusWebview(); + } else { + const focus = this._list?.getFocus()[0]; + if (typeof focus === 'number') { + const element = this._notebookViewModel!.viewCells[focus]; + + if (element.focusMode === CellFocusMode.Editor) { + element.editState = CellEditState.Editing; + element.focusMode = CellFocusMode.Editor; + this._onDidFocusEditorWidget.fire(); + return; + } + + } + this._list?.domFocus(); + } + this._onDidFocusEditorWidget.fire(); } - async setModel(textModel: NotebookTextModel, viewState: INotebookEditorViewState | undefined, options: EditorOptions | undefined): Promise { + async setModel(textModel: NotebookTextModel, viewState: INotebookEditorViewState | undefined): Promise { if (this._notebookViewModel === undefined || !this._notebookViewModel.equal(textModel)) { this._detachModel(); await this._attachModel(textModel, viewState); + } else { + this.restoreListViewState(viewState); } // clear state @@ -412,15 +435,17 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor const focused = this._list!.getFocusedElements()[0]; if (focused) { if (!this._cellContextKeyManager) { - this._cellContextKeyManager = this._localStore.add(new CellContextKeyManager(this.contextKeyService, textModel, focused as any)); + this._cellContextKeyManager = this._localStore.add(new CellContextKeyManager(this.contextKeyService, textModel, focused as CellViewModel)); } - this._cellContextKeyManager.updateForElement(focused as any); + this._cellContextKeyManager.updateForElement(focused as CellViewModel); } })); + } + async setOptions(options: NotebookEditorOptions | undefined) { // reveal cell if editor options tell to do so - if (options instanceof NotebookEditorOptions && options.cellOptions) { + if (options?.cellOptions) { const cellOptions = options.cellOptions; const cell = this._notebookViewModel!.viewCells.find(cell => cell.uri.toString() === cellOptions.resource.toString()); if (cell) { @@ -445,7 +470,7 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor } } } - } else if (this._notebookViewModel!.viewCells.length === 1 && this._notebookViewModel!.viewCells[0].cellKind === CellKind.Code) { + } else if (this._notebookViewModel && this._notebookViewModel.viewCells.length === 1 && this._notebookViewModel.viewCells[0].cellKind === CellKind.Code) { // there is only one code cell in the document const cell = this._notebookViewModel!.viewCells[0]; if (cell.getTextLength() === 0) { @@ -512,24 +537,32 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor DOM.toggleClass(this.getDomNode(), 'notebook-editor-editable', !!this.viewModel!.metadata?.editable); } - private async _createWebview(id: string, document: URI): Promise { - this._webview = this.instantiationService.createInstance(BackLayerWebView, this, id, document); + private async _createWebview(id: string, resource: URI): Promise { + this._webview = this.instantiationService.createInstance(BackLayerWebView, this, id, resource); // attach the webview container to the DOM tree first this._list?.rowsContainer.insertAdjacentElement('afterbegin', this._webview.element); await this._webview.createWebview(); this._webview.webview.onDidBlur(() => { this._outputFocus?.set(false); this.updateEditorFocus(); + + if (this._overlayContainer.contains(document.activeElement)) { + this._webiewFocused = false; + } }); this._webview.webview.onDidFocus(() => { this._outputFocus?.set(true); this.updateEditorFocus(); this._onDidFocusEmitter.fire(); + + if (this._overlayContainer.contains(document.activeElement)) { + this._webiewFocused = true; + } }); - this._localStore.add(this._webview.onMessage(message => { + this._localStore.add(this._webview.onMessage(({ message, forRenderer }) => { if (this.viewModel) { - this.notebookService.onDidReceiveMessage(this.viewModel.viewType, this.getId(), message); + this.notebookService.onDidReceiveMessage(this.viewModel.viewType, this.getId(), forRenderer, message); } })); } @@ -629,10 +662,10 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor this._dndController?.clearGlobalDragState(); // restore list state at last, it must be after list layout - this._restoreListViewState(viewState); + this.restoreListViewState(viewState); } - private _restoreListViewState(viewState: INotebookEditorViewState | undefined): void { + restoreListViewState(viewState: INotebookEditorViewState | undefined): void { if (viewState?.scrollPosition !== undefined) { this._list!.scrollTop = viewState!.scrollPosition.top; this._list!.scrollLeft = viewState!.scrollPosition.left; @@ -684,19 +717,18 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor const focus = this._list.getFocus()[0]; if (typeof focus === 'number') { const element = this._notebookViewModel!.viewCells[focus]; - const itemDOM = this._list?.domElementOfElement(element!); - let editorFocused = false; - if (document.activeElement && itemDOM && itemDOM.contains(document.activeElement)) { - editorFocused = true; - } + if (element) { + const itemDOM = this._list?.domElementOfElement(element); + let editorFocused = !!(document.activeElement && itemDOM && itemDOM.contains(document.activeElement)); - state.editorFocused = editorFocused; - state.focus = focus; + state.editorFocused = editorFocused; + state.focus = focus; + } } } // Save contribution view states - const contributionsState: { [key: string]: any } = {}; + const contributionsState: { [key: string]: unknown } = {}; const keys = Object.keys(this._contributions); for (const id of keys) { @@ -814,8 +846,8 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor this._list?.setCellSelection(cell, range); } - changeDecorations(callback: (changeAccessor: IModelDecorationsChangeAccessor) => any): any { - return this._notebookViewModel?.changeDecorations(callback); + changeDecorations(callback: (changeAccessor: IModelDecorationsChangeAccessor) => T): T | null { + return this._notebookViewModel?.changeDecorations(callback) || null; } setHiddenAreas(_ranges: ICellRange[]): boolean { @@ -880,15 +912,17 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor return null; } - const newLanguages = this._notebookViewModel!.languages; - const language = (type === CellKind.Code && newLanguages && newLanguages.length) ? newLanguages[0] : 'markdown'; const index = cell ? this._notebookViewModel!.getCellIndex(cell) : 0; const nextIndex = ui ? this._notebookViewModel!.getNextVisibleCellIndex(index) : index + 1; + const newLanguages = this._notebookViewModel!.languages; + const language = (cell?.cellKind === CellKind.Code && type === CellKind.Code) + ? cell.language + : ((type === CellKind.Code && newLanguages && newLanguages.length) ? newLanguages[0] : 'markdown'); const insertIndex = cell ? (direction === 'above' ? index : nextIndex) : index; const newCell = this._notebookViewModel!.createCell(insertIndex, initialText.split(/\r?\n/g), language, type, cell?.metadata, true); - return newCell; + return newCell as CellViewModel; } async splitNotebookCell(cell: ICellViewModel): Promise { @@ -928,41 +962,41 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor return true; } - async moveCellDown(cell: ICellViewModel): Promise { + async moveCellDown(cell: ICellViewModel): Promise { if (!this._notebookViewModel!.metadata.editable) { - return false; + return null; } const index = this._notebookViewModel!.getCellIndex(cell); if (index === this._notebookViewModel!.length - 1) { - return false; + return null; } const newIdx = index + 1; return this._moveCellToIndex(index, newIdx); } - async moveCellUp(cell: ICellViewModel): Promise { + async moveCellUp(cell: ICellViewModel): Promise { if (!this._notebookViewModel!.metadata.editable) { - return false; + return null; } const index = this._notebookViewModel!.getCellIndex(cell); if (index === 0) { - return false; + return null; } const newIdx = index - 1; return this._moveCellToIndex(index, newIdx); } - async moveCell(cell: ICellViewModel, relativeToCell: ICellViewModel, direction: 'above' | 'below'): Promise { + async moveCell(cell: ICellViewModel, relativeToCell: ICellViewModel, direction: 'above' | 'below'): Promise { if (!this._notebookViewModel!.metadata.editable) { - return false; + return null; } if (cell === relativeToCell) { - return false; + return null; } const originalIdx = this._notebookViewModel!.getCellIndex(cell); @@ -976,23 +1010,24 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor return this._moveCellToIndex(originalIdx, newIdx); } - private async _moveCellToIndex(index: number, newIdx: number): Promise { + private async _moveCellToIndex(index: number, newIdx: number): Promise { if (index === newIdx) { - return false; + return null; } if (!this._notebookViewModel!.moveCellToIdx(index, newIdx, true)) { throw new Error('Notebook Editor move cell, index out of range'); } - let r: (val: boolean) => void; + let r: (val: ICellViewModel | null) => void; DOM.scheduleAtNextAnimationFrame(() => { if (this._isDisposed) { - r(false); + r(null); } - this._list?.revealElementInView(this._notebookViewModel!.viewCells[newIdx]); - r(true); + const viewCell = this._notebookViewModel!.viewCells[newIdx]; + this._list?.revealElementInView(viewCell); + r(viewCell); }); return new Promise(resolve => { r = resolve; }); @@ -1174,7 +1209,7 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor this._list?.triggerScrollFromMouseWheelEvent(event); } - createInset(cell: CodeCellViewModel, output: IProcessedOutput, shadowContent: string, offset: number) { + async createInset(cell: CodeCellViewModel, output: IProcessedOutput, shadowContent: string, offset: number) { if (!this._webview) { return; } @@ -1183,7 +1218,7 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor if (!this._webview!.insetMapping.has(output)) { let cellTop = this._list?.getAbsoluteTopOfElement(cell) || 0; - this._webview!.createInset(cell, output, cellTop, offset, shadowContent, preloads); + await this._webview!.createInset(cell, output, cellTop, offset, shadowContent, preloads); } else { let cellTop = this._list?.getAbsoluteTopOfElement(cell) || 0; let scrollTop = this._list?.scrollTop || 0; @@ -1212,10 +1247,27 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor return this._outputRenderer; } - postMessage(message: any) { - this._webview?.webview.postMessage(message); + postMessage(forRendererId: string | undefined, message: any) { + if (forRendererId === undefined) { + this._webview?.webview.postMessage(message); + } else { + this._webview?.postRendererMessage(forRendererId, message); + } } + toggleClassName(className: string) { + DOM.toggleClass(this._overlayContainer, className); + } + + addClassName(className: string) { + DOM.addClass(this._overlayContainer, className); + } + + removeClassName(className: string) { + DOM.removeClass(this._overlayContainer, className); + } + + //#endregion //#region Editor Contributions @@ -1227,6 +1279,9 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor dispose() { this._isDisposed = true; + // dispose webview first + this._webview?.dispose(); + this.notebookService.removeNotebookEditor(this); const keys = Object.keys(this._contributions); for (let i = 0, len = keys.length; i < len; i++) { @@ -1236,7 +1291,6 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor this._localStore.clear(); this._list?.dispose(); - this._webview?.dispose(); this._overlayContainer.remove(); this.viewModel?.dispose(); @@ -1246,7 +1300,7 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor super.dispose(); } - toJSON(): any { + toJSON(): object { return { notebookHandle: this.viewModel?.handle }; @@ -1254,17 +1308,11 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor } export const notebookCellBorder = registerColor('notebook.cellBorderColor', { - dark: transparent(PANEL_BORDER, .6), - light: transparent(PANEL_BORDER, .4), + dark: transparent(PANEL_BORDER, .4), + light: transparent(listInactiveSelectionBackground, 1), hc: PANEL_BORDER }, nls.localize('notebook.cellBorderColor', "The border color for notebook cells.")); -export const focusedCellIndicator = registerColor('notebook.focusedCellIndicator', { - light: focusBorder, - dark: focusBorder, - hc: focusBorder -}, nls.localize('notebook.focusedCellIndicator', "The color of the notebook cell indicator.")); - export const focusedEditorIndicator = registerColor('notebook.focusedEditorIndicator', { light: focusBorder, dark: focusBorder, @@ -1291,7 +1339,7 @@ export const cellStatusIconRunning = registerColor('notebookStatusRunningIcon.fo export const notebookOutputContainerColor = registerColor('notebook.outputContainerBackgroundColor', { dark: notebookCellBorder, - light: notebookCellBorder, + light: transparent(listFocusBackground, .4), hc: null }, nls.localize('notebook.outputContainerBackgroundColor', "The Color of the notebook output container background.")); @@ -1300,7 +1348,19 @@ export const CELL_TOOLBAR_SEPERATOR = registerColor('notebook.cellToolbarSeperat dark: Color.fromHex('#808080').transparent(0.35), light: Color.fromHex('#808080').transparent(0.35), hc: contrastBorder -}, nls.localize('cellToolbarSeperator', "The color of seperator in Cell bottom toolbar")); +}, nls.localize('cellToolbarSeperator', "The color of the seperator in the cell bottom toolbar")); + +export const cellFocusBackground = registerColor('notebook.cellFocusBackground', { + dark: transparent(PANEL_BORDER, .4), + light: transparent(listFocusBackground, .4), + hc: PANEL_BORDER +}, nls.localize('cellFocusBackground', "The background color of focused or hovered cells")); + +export const focusedCellShadow = registerColor('notebook.focusedCellShadow', { + dark: transparent(widgetShadow, 0.6), + light: transparent(widgetShadow, 0.4), + hc: Color.transparent +}, nls.localize('cellShadow', "The color of the shadow on the focused or hovered cell")); export const cellStatusBarItemHover = registerColor('notebook.cellStatusBarItemHoverBackground', { light: new Color(new RGBA(0, 0, 0, 0.08)), @@ -1308,6 +1368,33 @@ export const cellStatusBarItemHover = registerColor('notebook.cellStatusBarItemH hc: new Color(new RGBA(255, 255, 255, 0.15)), }, nls.localize('notebook.cellStatusBarItemHoverBackground', "The background color of notebook cell status bar items.")); +export const cellInsertionIndicator = registerColor('notebook.cellInsertionIndicator', { + light: focusBorder, + dark: focusBorder, + hc: focusBorder +}, nls.localize('notebook.cellInsertionIndicator', "The color of the notebook cell insertion indicator.")); + + +export const listScrollbarSliderBackground = registerColor('notebookScrollbarSlider.background', { + dark: scrollbarSliderBackground, + light: scrollbarSliderBackground, + hc: scrollbarSliderBackground +}, nls.localize('notebookScrollbarSliderBackground', "Notebook scrollbar slider background color.")); + +export const listScrollbarSliderHoverBackground = registerColor('notebookScrollbarSlider.hoverBackground', { + dark: scrollbarSliderHoverBackground, + light: scrollbarSliderHoverBackground, + hc: scrollbarSliderHoverBackground +}, nls.localize('notebookScrollbarSliderHoverBackground', "Notebook scrollbar slider background color when hovering.")); + +export const listScrollbarSliderActiveBackground = registerColor('notebookScrollbarSlider.activeBackground', { + dark: scrollbarSliderActiveBackground, + light: scrollbarSliderActiveBackground, + hc: scrollbarSliderActiveBackground +}, nls.localize('notebookScrollbarSliderActiveBackground', "Notebook scrollbar slider background color when clicked on.")); + + + registerThemingParticipant((theme, collector) => { collector.addRule(`.notebookOverlay > .cell-list-container > .monaco-list > .monaco-scrollable-element { padding-top: ${SCROLLABLE_ELEMENT_PADDING_TOP}px; @@ -1368,15 +1455,15 @@ registerThemingParticipant((theme, collector) => { collector.addRule(`.notebookOverlay .cell-bottom-toolbar-container .separator { background-color: ${cellToolbarSeperator} }`); collector.addRule(`.notebookOverlay .cell-bottom-toolbar-container .action-item:first-child::after { background-color: ${cellToolbarSeperator} }`); collector.addRule(`.notebookOverlay .monaco-list-row > .monaco-toolbar { border: solid 1px ${cellToolbarSeperator}; }`); - collector.addRule(`.notebookOverlay .monaco-list-row:hover .notebook-cell-focus-indicator, - .notebookOverlay .monaco-list-row.cell-output-hover .notebook-cell-focus-indicator { border-color: ${cellToolbarSeperator}; }`); } - const focusedCellIndicatorColor = theme.getColor(focusedCellIndicator); - if (focusedCellIndicatorColor) { - collector.addRule(`.notebookOverlay .monaco-list-row.focused .notebook-cell-focus-indicator { border-color: ${focusedCellIndicatorColor}; }`); - collector.addRule(`.notebookOverlay .monaco-list-row .notebook-cell-focus-indicator { border-color: ${focusedCellIndicatorColor}; }`); - collector.addRule(`.notebookOverlay > .cell-list-container > .cell-list-insertion-indicator { background-color: ${focusedCellIndicatorColor}; }`); + const cellFocusBackgroundColor = theme.getColor(cellFocusBackground); + if (cellFocusBackgroundColor) { + collector.addRule(`.notebookOverlay .code-cell-row:hover .cell-focus-indicator, + .notebookOverlay .code-cell-row.focused .cell-focus-indicator, + .notebookOverlay .code-cell-row.cell-output-hover .cell-focus-indicator { background-color: ${cellFocusBackgroundColor} !important; }`); + collector.addRule(`.notebookOverlay .markdown-cell-row:hover, + .notebookOverlay .markdown-cell-row.focused { background-color: ${cellFocusBackgroundColor} !important; }`); } const focusedEditorIndicatorColor = theme.getColor(focusedEditorIndicator); @@ -1414,23 +1501,56 @@ registerThemingParticipant((theme, collector) => { collector.addRule(`.monaco-workbench .notebookOverlay .cell-statusbar-container .cell-language-picker:hover { background-color: ${cellStatusBarHoverBg}; }`); } - // const widgetShadowColor = theme.getColor(widgetShadow); - // if (widgetShadowColor) { - // collector.addRule(`.notebookOverlay > .cell-list-container > .monaco-list > .monaco-scrollable-element > .monaco-list-rows > .monaco-list-row > .monaco-toolbar { - // box-shadow: 0 0 8px 4px ${widgetShadowColor} - // }`) - // } + const cellShadowColor = theme.getColor(focusedCellShadow); + if (cellShadowColor) { + // Code cells + collector.addRule(`.monaco-workbench .notebookOverlay .monaco-list .monaco-list-row.focused .cell-shadow { box-shadow: 0px 0px 4px 2px ${cellShadowColor} }`); + + // Markdown cells + collector.addRule(`.monaco-workbench .notebookOverlay .monaco-list .markdown-cell-row.focused { box-shadow: 0px 0px 4px 2px ${cellShadowColor} }`); + } + + const cellInsertionIndicatorColor = theme.getColor(cellInsertionIndicator); + if (cellInsertionIndicatorColor) { + collector.addRule(`.notebookOverlay > .cell-list-container > .cell-list-insertion-indicator { background-color: ${cellInsertionIndicatorColor}; }`); + } + + const scrollbarSliderBackgroundColor = theme.getColor(listScrollbarSliderBackground); + if (scrollbarSliderBackgroundColor) { + collector.addRule(` .notebookOverlay .cell-list-container > .monaco-list > .monaco-scrollable-element > .scrollbar > .slider { background: ${editorBackgroundColor}; } `); + collector.addRule(` .notebookOverlay .cell-list-container > .monaco-list > .monaco-scrollable-element > .scrollbar > .slider:before { content: ""; width: 100%; height: 100%; position: absolute; background: ${scrollbarSliderBackgroundColor}; } `); /* hack to not have cells see through scroller */ + } + + const scrollbarSliderHoverBackgroundColor = theme.getColor(listScrollbarSliderHoverBackground); + if (scrollbarSliderHoverBackgroundColor) { + collector.addRule(` .notebookOverlay .cell-list-container > .monaco-list > .monaco-scrollable-element > .scrollbar > .slider:hover { background: ${editorBackgroundColor}; } `); + collector.addRule(` .notebookOverlay .cell-list-container > .monaco-list > .monaco-scrollable-element > .scrollbar > .slider:hover:before { content: ""; width: 100%; height: 100%; position: absolute; background: ${scrollbarSliderHoverBackgroundColor}; } `); /* hack to not have cells see through scroller */ + } + + const scrollbarSliderActiveBackgroundColor = theme.getColor(listScrollbarSliderActiveBackground); + if (scrollbarSliderActiveBackgroundColor) { + collector.addRule(` .notebookOverlay .cell-list-container > .monaco-list > .monaco-scrollable-element > .scrollbar > .slider.active { background: ${editorBackgroundColor}; } `); + collector.addRule(` .notebookOverlay .cell-list-container > .monaco-list > .monaco-scrollable-element > .scrollbar > .slider.active:before { content: ""; width: 100%; height: 100%; position: absolute; background: ${scrollbarSliderActiveBackgroundColor}; } `); /* hack to not have cells see through scroller */ + } // Cell Margin collector.addRule(`.notebookOverlay .cell-list-container > .monaco-list > .monaco-scrollable-element > .monaco-list-rows > .monaco-list-row > div.cell { margin: 0px ${CELL_MARGIN}px 0px ${CELL_MARGIN}px; }`); + collector.addRule(`.notebookOverlay .cell-list-container > .monaco-list > .monaco-scrollable-element > .monaco-list-rows > .monaco-list-row > div.cell.code { margin-left: ${CODE_CELL_LEFT_MARGIN}px; }`); collector.addRule(`.notebookOverlay .cell-list-container > .monaco-list > .monaco-scrollable-element > .monaco-list-rows > .monaco-list-row { padding-top: ${EDITOR_TOP_MARGIN}px; }`); - collector.addRule(`.notebookOverlay .output { margin: 0px ${CELL_MARGIN}px 0px ${CELL_MARGIN + CELL_RUN_GUTTER}px }`); - collector.addRule(`.notebookOverlay .cell-bottom-toolbar-container { width: calc(100% - ${CELL_MARGIN * 2 + CELL_RUN_GUTTER}px); margin: 0px ${CELL_MARGIN}px 0px ${CELL_MARGIN + CELL_RUN_GUTTER}px }`); + collector.addRule(`.notebookOverlay .cell-list-container > .monaco-list > .monaco-scrollable-element > .monaco-list-rows > .markdown-cell-row { padding-bottom: ${CELL_BOTTOM_MARGIN}px; }`); + collector.addRule(`.notebookOverlay .cell-list-container > .monaco-list > .monaco-scrollable-element > .monaco-list-rows > .markdown-cell-row .cell-bottom-toolbar-container { margin-top: ${CELL_BOTTOM_MARGIN}px; }`); + collector.addRule(`.notebookOverlay .output { margin: 0px ${CELL_MARGIN}px 0px ${CODE_CELL_LEFT_MARGIN + CELL_RUN_GUTTER}px; }`); + collector.addRule(`.notebookOverlay .output { width: calc(100% - ${CODE_CELL_LEFT_MARGIN + CELL_RUN_GUTTER + CELL_MARGIN}px); }`); + collector.addRule(`.notebookOverlay .cell-bottom-toolbar-container { width: calc(100% - ${CELL_MARGIN * 2 + CELL_RUN_GUTTER}px); margin: 0px ${CELL_MARGIN}px 0px ${CELL_MARGIN + CELL_RUN_GUTTER}px; }`); collector.addRule(`.notebookOverlay .markdown-cell-row .cell .cell-editor-part { margin-left: ${CELL_RUN_GUTTER}px; }`); collector.addRule(`.notebookOverlay .cell-list-container > .monaco-list > .monaco-scrollable-element > .monaco-list-rows > .monaco-list-row > div.cell.markdown { padding-left: ${CELL_RUN_GUTTER}px; }`); collector.addRule(`.notebookOverlay .cell .run-button-container { width: ${CELL_RUN_GUTTER}px; }`); - collector.addRule(`.notebookOverlay > .cell-list-container > .cell-list-insertion-indicator { left: ${CELL_MARGIN + CELL_RUN_GUTTER}px; right: ${CELL_MARGIN}px; }`); collector.addRule(`.notebookOverlay .cell-drag-image .cell-editor-container > div { padding: ${EDITOR_TOP_PADDING}px 16px ${EDITOR_BOTTOM_PADDING}px 16px; }`); - collector.addRule(`.notebookOverlay .monaco-list .monaco-list-row .notebook-cell-focus-indicator { left: ${CELL_MARGIN}px; bottom: ${BOTTOM_CELL_TOOLBAR_HEIGHT}px; }`); + collector.addRule(`.notebookOverlay .monaco-list .monaco-list-row .cell-focus-indicator-top { height: ${EDITOR_TOP_MARGIN}px; }`); + collector.addRule(`.notebookOverlay .monaco-list .monaco-list-row .cell-focus-indicator-side { bottom: ${BOTTOM_CELL_TOOLBAR_HEIGHT}px; }`); + collector.addRule(`.notebookOverlay .monaco-list .monaco-list-row .cell-focus-indicator { width: ${CODE_CELL_LEFT_MARGIN + CELL_RUN_GUTTER}px; }`); + collector.addRule(`.notebookOverlay .monaco-list .monaco-list-row .cell-focus-indicator.cell-focus-indicator-right { width: ${CELL_MARGIN}px; }`); + collector.addRule(`.notebookOverlay .monaco-list .monaco-list-row .cell-focus-indicator-bottom { height: ${CELL_BOTTOM_MARGIN}px; }`); + collector.addRule(`.notebookOverlay .monaco-list .monaco-list-row .cell-shadow-container-bottom { top: ${CELL_BOTTOM_MARGIN}px; }`); }); diff --git a/src/vs/workbench/contrib/notebook/browser/notebookEditorWidgetService.ts b/src/vs/workbench/contrib/notebook/browser/notebookEditorWidgetService.ts index b2135ac6c9..58214472c4 100644 --- a/src/vs/workbench/contrib/notebook/browser/notebookEditorWidgetService.ts +++ b/src/vs/workbench/contrib/notebook/browser/notebookEditorWidgetService.ts @@ -92,8 +92,9 @@ class NotebookEditorWidgetService implements INotebookEditorWidgetService { private _disposeWidget(widget: NotebookEditorWidget): void { widget.onWillHide(); - widget.getDomNode().remove(); + const domNode = widget.getDomNode(); widget.dispose(); + domNode.remove(); } private _freeWidget(input: NotebookEditorInput, source: IEditorGroup, target: IEditorGroup): void { diff --git a/src/vs/workbench/contrib/notebook/browser/notebookServiceImpl.ts b/src/vs/workbench/contrib/notebook/browser/notebookServiceImpl.ts index 420c6c0d11..d8c603aa0c 100644 --- a/src/vs/workbench/contrib/notebook/browser/notebookServiceImpl.ts +++ b/src/vs/workbench/contrib/notebook/browser/notebookServiceImpl.ts @@ -33,21 +33,38 @@ function MODEL_ID(resource: URI): string { return resource.toString(); } -export class NotebookProviderInfoStore implements IDisposable { +export class NotebookProviderInfoStore extends Disposable { private static readonly CUSTOM_EDITORS_STORAGE_ID = 'notebookEditors'; private static readonly CUSTOM_EDITORS_ENTRY_ID = 'editors'; private readonly _memento: Memento; - constructor(storageService: IStorageService) { + private _handled: boolean = false; + constructor( + storageService: IStorageService, + extensionService: IExtensionService + + ) { + super(); this._memento = new Memento(NotebookProviderInfoStore.CUSTOM_EDITORS_STORAGE_ID, storageService); const mementoObject = this._memento.getMemento(StorageScope.GLOBAL); for (const info of (mementoObject[NotebookProviderInfoStore.CUSTOM_EDITORS_ENTRY_ID] || []) as NotebookEditorDescriptor[]) { this.add(new NotebookProviderInfo(info)); } + + this._register(extensionService.onDidRegisterExtensions(() => { + if (!this._handled) { + // there is no extension point registered for notebook content provider + // clear the memento and cache + this.clear(); + mementoObject[NotebookProviderInfoStore.CUSTOM_EDITORS_ENTRY_ID] = []; + this._memento.saveMemento(); + } + })); } - update(extensions: readonly IExtensionPointUser[]) { + setupHandler(extensions: readonly IExtensionPointUser[]) { + this._handled = true; this.clear(); for (const extension of extensions) { @@ -81,9 +98,6 @@ export class NotebookProviderInfoStore implements IDisposable { } - dispose(): void { - } - private readonly _contributedEditors = new Map(); clear() { @@ -188,13 +202,11 @@ export class NotebookService extends Disposable implements INotebookService, ICu ) { super(); - this.notebookProviderInfoStore = new NotebookProviderInfoStore(this._storageService); + this.notebookProviderInfoStore = new NotebookProviderInfoStore(this._storageService, this._extensionService); this._register(this.notebookProviderInfoStore); notebookProviderExtensionPoint.setHandler((extensions) => { - this.notebookProviderInfoStore.update(extensions); - - // console.log(this._notebookProviderInfoStore); + this.notebookProviderInfoStore.setupHandler(extensions); }); notebookRendererExtensionPoint.setHandler((renderers) => { @@ -683,13 +695,17 @@ export class NotebookService extends Disposable implements INotebookService, ICu this._onNotebookEditorAdd.fire(editor); } + getNotebookEditor(editorId: string) { + return this._notebookEditors.get(editorId); + } + listNotebookEditors(): INotebookEditor[] { return [...this._notebookEditors].map(e => e[1]); } listVisibleNotebookEditors(): INotebookEditor[] { return this._editorService.visibleEditorPanes - .filter(pane => (pane as any).isNotebookEditor) + .filter(pane => (pane as unknown as { isNotebookEditor?: boolean }).isNotebookEditor) .map(pane => pane.getControl() as INotebookEditor) .filter(editor => !!editor) .filter(editor => this._notebookEditors.has(editor.getId())); @@ -750,11 +766,11 @@ export class NotebookService extends Disposable implements INotebookService, ICu return undefined; // {{SQL CARBON EDIT}} strict-null-check } - onDidReceiveMessage(viewType: string, editorId: string, message: any): void { + onDidReceiveMessage(viewType: string, editorId: string, rendererType: string | undefined, message: any): void { let provider = this._notebookProviders.get(viewType); if (provider) { - return provider.controller.onDidReceiveMessage(editorId, message); + return provider.controller.onDidReceiveMessage(editorId, rendererType, message); } } diff --git a/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts b/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts index 4de0ab6ee2..87c6efb702 100644 --- a/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts +++ b/src/vs/workbench/contrib/notebook/browser/view/notebookCellList.ts @@ -19,7 +19,7 @@ import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { IListService, IWorkbenchListOptions, WorkbenchList } from 'vs/platform/list/browser/listService'; import { IThemeService } from 'vs/platform/theme/common/themeService'; -import { CellRevealPosition, CellRevealType, CursorAtBoundary, getVisibleCells, ICellRange, ICellViewModel, INotebookCellList, reduceCellRanges, CellEditState, CellFocusMode } from 'vs/workbench/contrib/notebook/browser/notebookBrowser'; +import { CellRevealPosition, CellRevealType, CursorAtBoundary, getVisibleCells, ICellRange, ICellViewModel, INotebookCellList, reduceCellRanges, CellEditState, CellFocusMode, BaseCellRenderTemplate } from 'vs/workbench/contrib/notebook/browser/notebookBrowser'; import { CellViewModel, NotebookViewModel } from 'vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel'; import { diff, IProcessedOutput, NOTEBOOK_EDITOR_CURSOR_BOUNDARY, CellKind } from 'vs/workbench/contrib/notebook/common/notebookCommon'; import { clamp } from 'vs/base/common/numbers'; @@ -45,11 +45,17 @@ export class NotebookCellList extends WorkbenchList implements ID private _hiddenRangeIds: string[] = []; private hiddenRangesPrefixSum: PrefixSumComputer | null = null; + private _isDisposed = false; + + get isDisposed() { + return this._isDisposed; + } + constructor( private listUser: string, container: HTMLElement, delegate: IListVirtualDelegate, - renderers: IListRenderer[], + renderers: IListRenderer[], contextKeyService: IContextKeyService, options: IWorkbenchListOptions, @IListService listService: IListService, @@ -162,6 +168,10 @@ export class NotebookCellList extends WorkbenchList implements ID attachViewModel(model: NotebookViewModel) { this._viewModel = model; this._viewModelStore.add(model.onDidChangeViewCells((e) => { + if (this._isDisposed) { + return; + } + const currentRanges = this._hiddenRangeIds.map(id => this._viewModel!.getTrackedRange(id)).filter(range => range !== null) as ICellRange[]; const newVisibleViewCells: CellViewModel[] = getVisibleCells(this._viewModel!.viewCells as CellViewModel[], currentRanges); @@ -197,7 +207,11 @@ export class NotebookCellList extends WorkbenchList implements ID deletedOutputs.forEach(output => this._onDidRemoveOutput.fire(output)); }); } else { - DOM.scheduleAtNextAnimationFrame(() => { + this._viewModelStore.add(DOM.scheduleAtNextAnimationFrame(() => { + if (this._isDisposed) { + return; + } + viewDiffs.reverse().forEach((diff) => { const hideOutputs: IProcessedOutput[] = []; const deletedOutputs: IProcessedOutput[] = []; @@ -216,7 +230,7 @@ export class NotebookCellList extends WorkbenchList implements ID hideOutputs.forEach(output => this._onDidHideOutput.fire(output)); deletedOutputs.forEach(output => this._onDidRemoveOutput.fire(output)); }); - }); + })); } })); @@ -373,7 +387,7 @@ export class NotebookCellList extends WorkbenchList implements ID } - private _getViewIndexUpperBound(cell: ICellViewModel) { + private _getViewIndexUpperBound(cell: ICellViewModel): number { const modelIndex = this._viewModel!.getCellIndex(cell); if (!this.hiddenRangesPrefixSum) { return modelIndex; @@ -387,7 +401,7 @@ export class NotebookCellList extends WorkbenchList implements ID focusElement(cell: ICellViewModel) { const index = this._getViewIndexUpperBound(cell); - if (index !== undefined) { + if (index >= 0) { this.setFocus([index]); } } @@ -398,7 +412,7 @@ export class NotebookCellList extends WorkbenchList implements ID } const index = this._getViewIndexUpperBound(cell); - if (index !== undefined) { + if (index >= 0) { this.setSelection([index]); this.setFocus([index]); } @@ -419,7 +433,7 @@ export class NotebookCellList extends WorkbenchList implements ID revealElementInView(cell: ICellViewModel) { const index = this._getViewIndexUpperBound(cell); - if (index !== undefined) { + if (index >= 0) { this._revealInView(index); } } @@ -427,7 +441,7 @@ export class NotebookCellList extends WorkbenchList implements ID revealElementInCenterIfOutsideViewport(cell: ICellViewModel) { const index = this._getViewIndexUpperBound(cell); - if (index !== undefined) { + if (index >= 0) { this._revealInCenterIfOutsideViewport(index); } } @@ -435,7 +449,7 @@ export class NotebookCellList extends WorkbenchList implements ID revealElementInCenter(cell: ICellViewModel) { const index = this._getViewIndexUpperBound(cell); - if (index !== undefined) { + if (index >= 0) { this._revealInCenter(index); } } @@ -443,7 +457,7 @@ export class NotebookCellList extends WorkbenchList implements ID async revealElementLineInViewAsync(cell: ICellViewModel, line: number): Promise { const index = this._getViewIndexUpperBound(cell); - if (index !== undefined) { + if (index >= 0) { return this._revealLineInViewAsync(index, line); } } @@ -451,7 +465,7 @@ export class NotebookCellList extends WorkbenchList implements ID async revealElementLineInCenterAsync(cell: ICellViewModel, line: number): Promise { const index = this._getViewIndexUpperBound(cell); - if (index !== undefined) { + if (index >= 0) { return this._revealLineInCenterAsync(index, line); } } @@ -459,7 +473,7 @@ export class NotebookCellList extends WorkbenchList implements ID async revealElementLineInCenterIfOutsideViewportAsync(cell: ICellViewModel, line: number): Promise { const index = this._getViewIndexUpperBound(cell); - if (index !== undefined) { + if (index >= 0) { return this._revealLineInCenterIfOutsideViewportAsync(index, line); } } @@ -467,7 +481,7 @@ export class NotebookCellList extends WorkbenchList implements ID async revealElementRangeInViewAsync(cell: ICellViewModel, range: Range): Promise { const index = this._getViewIndexUpperBound(cell); - if (index !== undefined) { + if (index >= 0) { return this._revealRangeInView(index, range); } } @@ -475,7 +489,7 @@ export class NotebookCellList extends WorkbenchList implements ID async revealElementRangeInCenterAsync(cell: ICellViewModel, range: Range): Promise { const index = this._getViewIndexUpperBound(cell); - if (index !== undefined) { + if (index >= 0) { return this._revealRangeInCenterAsync(index, range); } } @@ -483,14 +497,14 @@ export class NotebookCellList extends WorkbenchList implements ID async revealElementRangeInCenterIfOutsideViewportAsync(cell: ICellViewModel, range: Range): Promise { const index = this._getViewIndexUpperBound(cell); - if (index !== undefined) { + if (index >= 0) { return this._revealRangeInCenterIfOutsideViewportAsync(index, range); } } domElementOfElement(element: ICellViewModel): HTMLElement | null { const index = this._getViewIndexUpperBound(element); - if (index !== undefined) { + if (index >= 0) { return this.view.domElement(index); } @@ -518,7 +532,7 @@ export class NotebookCellList extends WorkbenchList implements ID updateElementHeight2(element: ICellViewModel, size: number): void { const index = this._getViewIndexUpperBound(element); - if (index === undefined) { + if (index === undefined || index < 0 || index >= this.length) { return; } @@ -529,7 +543,7 @@ export class NotebookCellList extends WorkbenchList implements ID // override domFocus() { const focused = this.getFocusedElements()[0]; - const focusedDomElement = this.domElementOfElement(focused); + const focusedDomElement = focused && this.domElementOfElement(focused); if (document.activeElement && focusedDomElement && focusedDomElement.contains(document.activeElement)) { // for example, when focus goes into monaco editor, if we refocus the list view, the editor will lose focus. @@ -874,6 +888,7 @@ export class NotebookCellList extends WorkbenchList implements ID } dispose() { + this._isDisposed = true; this._viewModelStore.dispose(); this._localDisposableStore.dispose(); super.dispose(); diff --git a/src/vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform.ts b/src/vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform.ts index 68f3e51e9a..850399dafd 100644 --- a/src/vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform.ts +++ b/src/vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform.ts @@ -3,7 +3,7 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { IRenderOutput, CellOutputKind } from 'vs/workbench/contrib/notebook/common/notebookCommon'; +import { IRenderOutput, CellOutputKind, ITransformedDisplayOutputDto } from 'vs/workbench/contrib/notebook/common/notebookCommon'; import { NotebookRegistry } from 'vs/workbench/contrib/notebook/browser/notebookRegistry'; import * as DOM from 'vs/base/browser/dom'; import { INotebookEditor, IOutputTransformContribution } from 'vs/workbench/contrib/notebook/browser/notebookBrowser'; @@ -20,7 +20,7 @@ import { handleANSIOutput } from 'vs/workbench/contrib/notebook/browser/view/out class RichRenderer implements IOutputTransformContribution { private _mdRenderer: MarkdownRenderer; - private _richMimeTypeRenderers = new Map IRenderOutput>(); + private _richMimeTypeRenderers = new Map IRenderOutput>(); constructor( public notebookEditor: INotebookEditor, @@ -36,12 +36,12 @@ class RichRenderer implements IOutputTransformContribution { this._richMimeTypeRenderers.set('image/svg+xml', this.renderSVG.bind(this)); this._richMimeTypeRenderers.set('text/markdown', this.renderMarkdown.bind(this)); this._richMimeTypeRenderers.set('image/png', this.renderPNG.bind(this)); - this._richMimeTypeRenderers.set('image/jpeg', this.renderJavaScript.bind(this)); + this._richMimeTypeRenderers.set('image/jpeg', this.renderJPEG.bind(this)); this._richMimeTypeRenderers.set('text/plain', this.renderPlainText.bind(this)); this._richMimeTypeRenderers.set('text/x-javascript', this.renderCode.bind(this)); } - render(output: any, container: HTMLElement, preferredMimeType: string | undefined): IRenderOutput { + render(output: ITransformedDisplayOutputDto, container: HTMLElement, preferredMimeType: string | undefined): IRenderOutput { if (!output.data) { const contentNode = document.createElement('p'); contentNode.innerText = `No data could be found for output.`; @@ -61,7 +61,12 @@ class RichRenderer implements IOutputTransformContribution { let mimeTypesMessage = mimeTypes.join(', '); - contentNode.innerText = `No renderer could be found for output. It has the following MIME types: ${mimeTypesMessage}`; + if (preferredMimeType) { + contentNode.innerText = `No renderer could be found for MIME type: ${preferredMimeType}`; + } else { + contentNode.innerText = `No renderer could be found for output. It has the following MIME types: ${mimeTypesMessage}`; + } + container.appendChild(contentNode); return { @@ -73,7 +78,7 @@ class RichRenderer implements IOutputTransformContribution { return renderer!(output, container); } - renderJSON(output: any, container: HTMLElement) { + renderJSON(output: ITransformedDisplayOutputDto, container: HTMLElement) { let data = output.data['application/json']; let str = JSON.stringify(data, null, '\t'); @@ -108,9 +113,9 @@ class RichRenderer implements IOutputTransformContribution { }; } - renderCode(output: any, container: HTMLElement) { + renderCode(output: ITransformedDisplayOutputDto, container: HTMLElement) { let data = output.data['text/x-javascript']; - let str = isArray(data) ? data.join('') : data; + let str = (isArray(data) ? data.join('') : data) as string; const editor = this.instantiationService.createInstance(CodeEditorWidget, container, { ...getOutputSimpleEditorOptions(), @@ -143,7 +148,7 @@ class RichRenderer implements IOutputTransformContribution { }; } - renderJavaScript(output: any, container: HTMLElement) { + renderJavaScript(output: ITransformedDisplayOutputDto, container: HTMLElement) { let data = output.data['application/javascript']; let str = isArray(data) ? data.join('') : data; let scriptVal = ``; @@ -153,9 +158,9 @@ class RichRenderer implements IOutputTransformContribution { }; } - renderHTML(output: any, container: HTMLElement) { + renderHTML(output: ITransformedDisplayOutputDto, container: HTMLElement) { let data = output.data['text/html']; - let str = isArray(data) ? data.join('') : data; + let str = (isArray(data) ? data.join('') : data) as string; return { shadowContent: str, hasDynamicHeight: false @@ -163,20 +168,20 @@ class RichRenderer implements IOutputTransformContribution { } - renderSVG(output: any, container: HTMLElement) { + renderSVG(output: ITransformedDisplayOutputDto, container: HTMLElement) { let data = output.data['image/svg+xml']; - let str = isArray(data) ? data.join('') : data; + let str = (isArray(data) ? data.join('') : data) as string; return { shadowContent: str, hasDynamicHeight: false }; } - renderMarkdown(output: any, container: HTMLElement) { + renderMarkdown(output: ITransformedDisplayOutputDto, container: HTMLElement) { let data = output.data['text/markdown']; - const str = isArray(data) ? data.join('') : data; + const str = (isArray(data) ? data.join('') : data) as string; const mdOutput = document.createElement('div'); - mdOutput.appendChild(this._mdRenderer.render({ value: str, isTrusted: false, supportThemeIcons: true }).element); + mdOutput.appendChild(this._mdRenderer.render({ value: str, isTrusted: true, supportThemeIcons: true }).element); container.appendChild(mdOutput); return { @@ -184,7 +189,7 @@ class RichRenderer implements IOutputTransformContribution { }; } - renderPNG(output: any, container: HTMLElement) { + renderPNG(output: ITransformedDisplayOutputDto, container: HTMLElement) { const image = document.createElement('img'); image.src = `data:image/png;base64,${output.data['image/png']}`; const display = document.createElement('div'); @@ -197,7 +202,7 @@ class RichRenderer implements IOutputTransformContribution { } - renderJPEG(output: any, container: HTMLElement) { + renderJPEG(output: ITransformedDisplayOutputDto, container: HTMLElement) { const image = document.createElement('img'); image.src = `data:image/jpeg;base64,${output.data['image/jpeg']}`; const display = document.createElement('div'); @@ -209,9 +214,9 @@ class RichRenderer implements IOutputTransformContribution { }; } - renderPlainText(output: any, container: HTMLElement) { + renderPlainText(output: ITransformedDisplayOutputDto, container: HTMLElement) { let data = output.data['text/plain']; - let str = isArray(data) ? data.join('') : data; + let str = (isArray(data) ? data.join('') : data) as string; const contentNode = DOM.$('.output-plaintext'); contentNode.appendChild(handleANSIOutput(str, this.themeService)); container.appendChild(contentNode); diff --git a/src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts b/src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts index 215e85a868..2e3c7f9286 100644 --- a/src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts +++ b/src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts @@ -13,12 +13,12 @@ import { URI } from 'vs/base/common/uri'; import * as UUID from 'vs/base/common/uuid'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { IOpenerService, matchesScheme } from 'vs/platform/opener/common/opener'; -import { CELL_MARGIN, CELL_RUN_GUTTER } from 'vs/workbench/contrib/notebook/browser/constants'; +import { CELL_MARGIN, CELL_RUN_GUTTER, CODE_CELL_LEFT_MARGIN } from 'vs/workbench/contrib/notebook/browser/constants'; import { INotebookEditor } from 'vs/workbench/contrib/notebook/browser/notebookBrowser'; import { CodeCellViewModel } from 'vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel'; import { CellOutputKind, IProcessedOutput } from 'vs/workbench/contrib/notebook/common/notebookCommon'; import { INotebookService } from 'vs/workbench/contrib/notebook/common/notebookService'; -import { IWebviewService, WebviewElement } from 'vs/workbench/contrib/webview/browser/webview'; +import { IWebviewService, WebviewElement, WebviewContentPurpose } from 'vs/workbench/contrib/webview/browser/webview'; import { asWebviewUri } from 'vs/workbench/contrib/webview/common/webviewUri'; import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; import { dirname, joinPath } from 'vs/base/common/resources'; @@ -76,7 +76,7 @@ export interface IBlurOutputMessage { } export interface IClickedDataUrlMessage { - __vscode_notebook_message: string; + __vscode_notebook_message: boolean; type: 'clicked-data-url'; data: string; downloadName?: string; @@ -86,18 +86,14 @@ export interface IClearMessage { type: 'clear'; } -export interface IFocusOutputMessage { - type: 'focus-output'; - id: string; -} - export interface ICreationRequestMessage { type: 'html'; content: string; - id: string; + cellId: string; outputId: string; top: number; left: number; + requiredPreloads: IPreloadResource[]; initiallyHidden?: boolean; apiNamespace?: string | undefined; } @@ -125,25 +121,28 @@ export interface IScrollRequestMessage { export interface IClearOutputRequestMessage { type: 'clearOutput'; - id: string; + cellId: string; + outputId: string; cellUri: string; apiNamespace: string | undefined; } export interface IHideOutputMessage { type: 'hideOutput'; - id: string; + outputId: string; + cellId: string; } export interface IShowOutputMessage { type: 'showOutput'; - id: string; + cellId: string; + outputId: string; top: number; } export interface IFocusOutputMessage { type: 'focus-output'; - id: string; + cellId: string; } export interface IPreloadResource { @@ -156,6 +155,13 @@ export interface IUpdatePreloadResourceMessage { source: 'renderer' | 'kernel'; } +export interface ICustomRendererMessage { + __vscode_notebook_message: boolean; + type: 'customRendererMessage'; + rendererId: string; + message: unknown; +} + export type FromWebviewMessage = | WebviewIntialized | IDimensionMessage @@ -163,7 +169,9 @@ export type FromWebviewMessage = | IMouseLeaveMessage | IWheelMessage | IScrollAckMessage - | IBlurOutputMessage; + | IBlurOutputMessage + | ICustomRendererMessage + | IClickedDataUrlMessage; export type ToWebviewMessage = | IClearMessage @@ -175,7 +183,8 @@ export type ToWebviewMessage = | IHideOutputMessage | IShowOutputMessage | IUpdatePreloadResourceMessage - | IFocusOutputMessage; + | IFocusOutputMessage + | ICustomRendererMessage; export type AnyMessage = FromWebviewMessage | ToWebviewMessage; @@ -194,7 +203,10 @@ function html(strings: TemplateStringsArray, ...values: any[]): string { return str; } -type IMessage = IDimensionMessage | IScrollAckMessage | IWheelMessage | IMouseEnterMessage | IMouseLeaveMessage | IBlurOutputMessage | WebviewIntialized | IClickedDataUrlMessage; +export interface INotebookWebviewMessage { + message: unknown; + forRenderer?: string; +} let version = 0; export class BackLayerWebView extends Disposable { @@ -207,8 +219,8 @@ export class BackLayerWebView extends Disposable { localResourceRootsCache: URI[] | undefined = undefined; rendererRootsCache: URI[] = []; kernelRootsCache: URI[] = []; - private readonly _onMessage = this._register(new Emitter()); - public readonly onMessage: Event = this._onMessage.event; + private readonly _onMessage = this._register(new Emitter()); + public readonly onMessage: Event = this._onMessage.event; private _loaded!: Promise; private _initalized?: Promise; private _disposed = false; @@ -230,10 +242,10 @@ export class BackLayerWebView extends Disposable { this.element = document.createElement('div'); - this.element.style.width = `calc(100% - ${CELL_MARGIN * 2 + CELL_RUN_GUTTER}px)`; + this.element.style.width = `calc(100% - ${CODE_CELL_LEFT_MARGIN + CELL_MARGIN + CELL_RUN_GUTTER}px)`; this.element.style.height = '1400px'; this.element.style.position = 'absolute'; - this.element.style.margin = `0px 0 0px ${CELL_MARGIN + CELL_RUN_GUTTER}px`; + this.element.style.margin = `0px 0 0px ${CODE_CELL_LEFT_MARGIN + CELL_RUN_GUTTER}px`; } generateContent(outputNodePadding: number, coreDependencies: string, baseUrl: string) { return html` @@ -267,6 +279,15 @@ export class BackLayerWebView extends Disposable { `; } + postRendererMessage(rendererId: string, message: any) { + this._sendMessageToWebview({ + __vscode_notebook_message: true, + type: 'customRendererMessage', + message, + rendererId + }); + } + private resolveOutputId(id: string): { cell: CodeCellViewModel, output: IProcessedOutput } | undefined { const output = this.reversedInsetMapping.get(id); if (!output) { @@ -318,11 +339,19 @@ ${loaderJs} } async initialize(content: string) { + if (!document.body.contains(this.element)) { + throw new Error('Element is already detached from the DOM tree'); + } + this.webview = this._createInset(this.webviewService, content); this.webview.mountTo(this.element); this._register(this.webview); this._register(this.webview.onDidClickLink(link => { + if (this._disposed) { + return; + } + if (!link) { return; } @@ -334,6 +363,10 @@ ${loaderJs} })); this._register(this.webview.onDidReload(() => { + if (this._disposed) { + return; + } + this.preloadsCache.clear(); for (const [output, inset] of this.insetMapping.entries()) { this.updateRendererPreloads(inset.preloads); @@ -341,7 +374,11 @@ ${loaderJs} } })); - this._register(this.webview.onMessage((data: IMessage) => { + this._register(this.webview.onMessage((data: FromWebviewMessage) => { + if (this._disposed) { + return; + } + if (data.__vscode_notebook_message) { if (data.type === 'dimension') { let height = data.data.height; @@ -397,11 +434,13 @@ ${loaderJs} } } else if (data.type === 'clicked-data-url') { this._onDidClickDataLink(data); + } else if (data.type === 'customRendererMessage') { + this._onMessage.fire({ message: data.message, forRenderer: data.rendererId }); } return; } - this._onMessage.fire(data); + this._onMessage.fire({ message: data }); })); } @@ -447,6 +486,7 @@ ${loaderJs} this.localResourceRootsCache = [...this.notebookService.getNotebookProviderResourceRoots(), ...workspaceFolders, rootPath]; const webview = webviewService.createWebviewElement(this.id, { + purpose: WebviewContentPurpose.NotebookRenderer, enableFindWidget: false, }, { allowMultipleAPIAcquire: true, @@ -459,7 +499,7 @@ ${loaderJs} resolveFunc = resolve; }); - let dispose = webview.onMessage((data: IMessage) => { + let dispose = webview.onMessage((data: FromWebviewMessage) => { if (data.__vscode_notebook_message && data.type === 'initialized') { resolveFunc(); dispose.dispose(); @@ -519,12 +559,12 @@ ${loaderJs} }); } - createInset(cell: CodeCellViewModel, output: IProcessedOutput, cellTop: number, offset: number, shadowContent: string, preloads: Set) { + async createInset(cell: CodeCellViewModel, output: IProcessedOutput, cellTop: number, offset: number, shadowContent: string, preloads: Set) { if (this._disposed) { return; } - this.updateRendererPreloads(preloads); + const requiredPreloads = await this.updateRendererPreloads(preloads); let initialTop = cellTop + offset; if (this.insetMapping.has(output)) { @@ -534,7 +574,8 @@ ${loaderJs} this.hiddenInsetMapping.delete(output); this._sendMessageToWebview({ type: 'showOutput', - id: outputCache.outputId, + cellId: outputCache.cell.id, + outputId: outputCache.outputId, top: initialTop }); return; @@ -553,10 +594,11 @@ ${loaderJs} let message: ICreationRequestMessage = { type: 'html', content: shadowContent, - id: cell.id, + cellId: cell.id, apiNamespace, outputId: outputId, top: initialTop, + requiredPreloads, left: 0 }; @@ -582,7 +624,8 @@ ${loaderJs} type: 'clearOutput', apiNamespace: outputCache.cachedCreation.apiNamespace, cellUri: outputCache.cell.uri.toString(), - id: id + outputId: id, + cellId: outputCache.cell.id }); this.insetMapping.delete(output); this.reversedInsetMapping.delete(id); @@ -598,12 +641,12 @@ ${loaderJs} return; } - let id = outputCache.outputId; this.hiddenInsetMapping.add(output); this._sendMessageToWebview({ type: 'hideOutput', - id: id + outputId: outputCache.outputId, + cellId: outputCache.cell.id, }); } @@ -620,6 +663,14 @@ ${loaderJs} this.reversedInsetMapping = new Map(); } + focusWebview() { + if (this._disposed) { + return; + } + + this.webview.focus(); + } + focusOutput(cellId: string) { if (this._disposed) { return; @@ -629,7 +680,7 @@ ${loaderJs} setTimeout(() => { // Need this, or focus decoration is not shown. No clue. this._sendMessageToWebview({ type: 'focus-output', - id: cellId + cellId, }); }, 50); } @@ -666,11 +717,12 @@ ${loaderJs} async updateRendererPreloads(preloads: ReadonlySet) { if (this._disposed) { - return; + return []; } await this._loaded; + let requiredPreloads: IPreloadResource[] = []; let resources: IPreloadResource[] = []; let extensionLocations: URI[] = []; preloads.forEach(preload => { @@ -685,8 +737,11 @@ ${loaderJs} }); extensionLocations.push(rendererInfo.extensionLocation); preloadResources.forEach(e => { + const resource: IPreloadResource = { uri: e.toString() }; + requiredPreloads.push(resource); + if (!this.preloadsCache.has(e.toString())) { - resources.push({ uri: e.toString() }); + resources.push(resource); this.preloadsCache.set(e.toString(), true); } }); @@ -694,11 +749,12 @@ ${loaderJs} }); if (!resources.length) { - return; + return requiredPreloads; } this.rendererRootsCache = extensionLocations; this._updatePreloads(resources, 'renderer'); + return requiredPreloads; } private _updatePreloads(resources: IPreloadResource[], source: 'renderer' | 'kernel') { @@ -714,6 +770,10 @@ ${loaderJs} } private _sendMessageToWebview(message: ToWebviewMessage) { + if (this._disposed) { + return; + } + this.webview.postMessage(message); } @@ -723,6 +783,7 @@ ${loaderJs} dispose() { this._disposed = true; + this.webview.dispose(); super.dispose(); } } diff --git a/src/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer.ts b/src/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer.ts index 227313b68f..71ea4ca113 100644 --- a/src/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer.ts +++ b/src/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer.ts @@ -38,9 +38,9 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection'; import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { INotificationService } from 'vs/platform/notification/common/notification'; -import { BOTTOM_CELL_TOOLBAR_HEIGHT, EDITOR_BOTTOM_PADDING, EDITOR_TOOLBAR_HEIGHT, EDITOR_TOP_MARGIN, EDITOR_TOP_PADDING } from 'vs/workbench/contrib/notebook/browser/constants'; +import { BOTTOM_CELL_TOOLBAR_HEIGHT, EDITOR_BOTTOM_PADDING, EDITOR_TOOLBAR_HEIGHT, EDITOR_TOP_MARGIN, EDITOR_TOP_PADDING, CELL_BOTTOM_MARGIN } from 'vs/workbench/contrib/notebook/browser/constants'; import { CancelCellAction, ChangeCellLanguageAction, ExecuteCellAction, INotebookCellActionContext, CELL_TITLE_GROUP_ID } from 'vs/workbench/contrib/notebook/browser/contrib/coreActions'; -import { BaseCellRenderTemplate, CellEditState, CodeCellRenderTemplate, ICellViewModel, INotebookCellList, INotebookEditor, MarkdownCellRenderTemplate } from 'vs/workbench/contrib/notebook/browser/notebookBrowser'; +import { BaseCellRenderTemplate, CellEditState, CodeCellRenderTemplate, ICellViewModel, INotebookCellList, INotebookEditor, MarkdownCellRenderTemplate, isCodeCellRenderTemplate } from 'vs/workbench/contrib/notebook/browser/notebookBrowser'; import { CellMenus } from 'vs/workbench/contrib/notebook/browser/view/renderers/cellMenus'; import { CodeCell } from 'vs/workbench/contrib/notebook/browser/view/renderers/codeCell'; import { StatefullMarkdownCell } from 'vs/workbench/contrib/notebook/browser/view/renderers/markdownCell'; @@ -199,14 +199,13 @@ abstract class AbstractCellRenderer { }); toolbar.getContainer().style.height = `${BOTTOM_CELL_TOOLBAR_HEIGHT}px`; - container.style.height = `${BOTTOM_CELL_TOOLBAR_HEIGHT}px`; const cellMenu = this.instantiationService.createInstance(CellMenus); const menu = disposables.add(cellMenu.getCellInsertionMenu(contextKeyService)); const actions = this.getCellToolbarActions(menu); - toolbar.setActions(actions.primary, actions.secondary)(); + toolbar.setActions(actions.primary, actions.secondary); return toolbar; } @@ -223,9 +222,6 @@ abstract class AbstractCellRenderer { const bottomToolbarOffset = element.layoutInfo.bottomToolbarOffset; container.style.top = `${bottomToolbarOffset}px`; })); - } else { - container.style.position = 'static'; - container.style.height = `${BOTTOM_CELL_TOOLBAR_HEIGHT}`; } } @@ -267,18 +263,22 @@ abstract class AbstractCellRenderer { const actions = this.getCellToolbarActions(menu); const hadFocus = DOM.isAncestor(document.activeElement, templateData.toolbar.getContainer()); - templateData.toolbar.setActions(actions.primary, actions.secondary)(); + templateData.toolbar.setActions(actions.primary, actions.secondary); if (hadFocus) { this.notebookEditor.focus(); } - if (templateData.focusIndicator) { - if (actions.primary.length || actions.secondary.length) { - templateData.container.classList.add('cell-has-toolbar-actions'); + if (actions.primary.length || actions.secondary.length) { + templateData.container.classList.add('cell-has-toolbar-actions'); + if (isCodeCellRenderTemplate(templateData)) { templateData.focusIndicator.style.top = `${EDITOR_TOOLBAR_HEIGHT + EDITOR_TOP_MARGIN}px`; - } else { - templateData.container.classList.remove('cell-has-toolbar-actions'); + templateData.focusIndicatorRight.style.top = `${EDITOR_TOOLBAR_HEIGHT + EDITOR_TOP_MARGIN}px`; + } + } else { + templateData.container.classList.remove('cell-has-toolbar-actions'); + if (isCodeCellRenderTemplate(templateData)) { templateData.focusIndicator.style.top = `${EDITOR_TOP_MARGIN}px`; + templateData.focusIndicatorRight.style.top = `${EDITOR_TOP_MARGIN}px`; } } }; @@ -336,7 +336,7 @@ export class MarkdownCellRenderer extends AbstractCellRenderer implements IListR const disposables = new DisposableStore(); const contextKeyService = disposables.add(this.contextKeyServiceProvider(container)); const toolbar = disposables.add(this.createToolbar(container)); - const focusIndicator = DOM.append(container, DOM.$('.notebook-cell-focus-indicator')); + const focusIndicator = DOM.append(container, DOM.$('.cell-focus-indicator.cell-focus-indicator-side')); focusIndicator.setAttribute('draggable', 'true'); const codeInnerContent = DOM.append(container, $('.cell.code')); @@ -665,9 +665,9 @@ export class CellDragAndDropController extends Disposable { })); } - private moveCell(draggedCell: ICellViewModel, ontoCell: ICellViewModel, direction: 'above' | 'below') { + private async moveCell(draggedCell: ICellViewModel, ontoCell: ICellViewModel, direction: 'above' | 'below') { const editState = draggedCell.editState; - this.notebookEditor.moveCell(draggedCell, ontoCell, direction); + await this.notebookEditor.moveCell(draggedCell, ontoCell, direction); this.notebookEditor.focusNotebookCell(draggedCell, editState === CellEditState.Editing ? 'editor' : 'container'); } @@ -715,7 +715,8 @@ export class CellLanguageStatusBarItem extends Disposable { } private render(): void { - this.labelElement.textContent = this.modeService.getLanguageName(this.cell!.language!); + const modeId = this.modeService.getModeIdForLanguageName(this.cell!.language) || this.cell!.language; + this.labelElement.textContent = this.modeService.getLanguageName(modeId) || this.modeService.getLanguageName('plaintext'); } } @@ -803,11 +804,6 @@ class CodeCellDragImageRenderer { return null; } - const focusIndicator = dragImageContainer.querySelector('.notebook-cell-focus-indicator') as HTMLElement; - if (focusIndicator) { - focusIndicator.style.height = '40px'; - } - const richEditorText = new EditorTextRenderer().getRichText(editor, new Range(1, 1, 1, 1000)); if (!richEditorText) { return null; @@ -865,8 +861,13 @@ export class CodeCellRenderer extends AbstractCellRenderer implements IListRende container.classList.add('code-cell-row'); const disposables = new DisposableStore(); const contextKeyService = disposables.add(this.contextKeyServiceProvider(container)); + + const focusIndicatorTop = DOM.append(container, $('.cell-focus-indicator.cell-focus-indicator-top')); + DOM.append( + DOM.append(focusIndicatorTop, $('.cell-shadow-container.cell-shadow-container-top')), + $('.cell-shadow.cell-shadow-top')); const toolbar = disposables.add(this.createToolbar(container)); - const focusIndicator = DOM.append(container, DOM.$('.notebook-cell-focus-indicator')); + const focusIndicator = DOM.append(container, DOM.$('.cell-focus-indicator.cell-focus-indicator-side')); focusIndicator.setAttribute('draggable', 'true'); const cellContainer = DOM.append(container, $('.cell.code')); @@ -901,6 +902,10 @@ export class CodeCellRenderer extends AbstractCellRenderer implements IListRende const timer = new TimerRenderer(statusBar.durationContainer); const outputContainer = DOM.append(container, $('.output')); + + const focusIndicatorRight = DOM.append(container, DOM.$('.cell-focus-indicator.cell-focus-indicator-side.cell-focus-indicator-right')); + focusIndicatorRight.setAttribute('draggable', 'true'); + const focusSinkElement = DOM.append(container, $('.cell-editor-focus-sink')); focusSinkElement.setAttribute('tabindex', '0'); const bottomCellContainer = DOM.append(container, $('.cell-bottom-toolbar-container')); @@ -908,6 +913,11 @@ export class CodeCellRenderer extends AbstractCellRenderer implements IListRende const betweenCellToolbar = this.createBetweenCellToolbar(bottomCellContainer, disposables, contextKeyService); DOM.append(bottomCellContainer, $('.separator')); + const focusIndicatorBottom = DOM.append(container, $('.cell-focus-indicator.cell-focus-indicator-bottom')); + DOM.append( + DOM.append(focusIndicatorBottom, $('.cell-shadow-container.cell-shadow-container-bottom')), + $('.cell-shadow.cell-shadow-bottom')); + const templateData: CodeCellRenderTemplate = { contextKeyService, container, @@ -918,6 +928,8 @@ export class CodeCellRenderer extends AbstractCellRenderer implements IListRende languageStatusBarItem: statusBar.languageStatusBarItem, progressBar, focusIndicator, + focusIndicatorRight, + focusIndicatorBottom, toolbar, betweenCellToolbar, focusSinkElement, @@ -956,13 +968,13 @@ export class CodeCellRenderer extends AbstractCellRenderer implements IListRende templateData.runToolbar.setActions([ this.instantiationService.createInstance(CancelCellAction) - ])(); + ]); } else { templateData.progressBar.hide(); templateData.runToolbar.setActions([ this.instantiationService.createInstance(ExecuteCellAction) - ])(); + ]); } } @@ -1024,6 +1036,13 @@ export class CodeCellRenderer extends AbstractCellRenderer implements IListRende DOM.toggleClass(templateData.container, 'cell-output-hover', element.outputIsHovered); } + private updateForLayout(element: CodeCellViewModel, templateData: CodeCellRenderTemplate): void { + templateData.focusIndicator.style.height = `${element.layoutInfo.indicatorHeight}px`; + templateData.focusIndicatorRight.style.height = `${element.layoutInfo.indicatorHeight}px`; + templateData.focusIndicatorBottom.style.top = `${element.layoutInfo.totalHeight - BOTTOM_CELL_TOOLBAR_HEIGHT - CELL_BOTTOM_MARGIN}px`; + templateData.outputContainer.style.top = `${element.layoutInfo.outputContainerOffset}px`; + } + renderElement(element: CodeCellViewModel, index: number, templateData: CodeCellRenderTemplate, height: number | undefined): void { this.commonRenderElement(element, index, templateData); @@ -1042,14 +1061,13 @@ export class CodeCellRenderer extends AbstractCellRenderer implements IListRende elementDisposables.add(new CellContextKeyManager(templateData.contextKeyService, this.notebookEditor.viewModel?.notebookDocument!, element)); - templateData.focusIndicator.style.height = `${element.layoutInfo.indicatorHeight}px`; - templateData.outputContainer.style.top = `${element.layoutInfo.outputContainerOffset}px`; + this.updateForLayout(element, templateData); elementDisposables.add(element.onDidChangeLayout(() => { - templateData.focusIndicator.style.height = `${element.layoutInfo.indicatorHeight}px`; - templateData.outputContainer.style.top = `${element.layoutInfo.outputContainerOffset}px`; + this.updateForLayout(element, templateData); })); this.updateForMetadata(element, templateData); + this.updateForHover(element, templateData); elementDisposables.add(element.onDidChangeState((e) => { if (e.metadataChanged) { this.updateForMetadata(element, templateData); @@ -1086,7 +1104,6 @@ export class CodeCellRenderer extends AbstractCellRenderer implements IListRende disposeElement(element: ICellViewModel, index: number, templateData: CodeCellRenderTemplate, height: number | undefined): void { templateData.elementDisposables.clear(); this.renderedEditors.delete(element); - templateData.focusIndicator.style.height = 'initial'; } } @@ -1105,7 +1122,7 @@ export class TimerRenderer { const duration = Date.now() - startTime; this.container.textContent = this.formatDuration(duration); }, 100); - this.intervalTimer = intervalTimer as any; + this.intervalTimer = intervalTimer as unknown as number | undefined; return toDisposable(() => { clearInterval(intervalTimer); diff --git a/src/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.ts b/src/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.ts index 172b27d5cd..4b086d7103 100644 --- a/src/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.ts +++ b/src/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.ts @@ -327,7 +327,7 @@ export class CodeCell extends Disposable { if (pickedMimeTypeRenderer.isResolved) { // html - result = this.notebookEditor.getOutputRenderer().render({ outputKind: CellOutputKind.Rich, data: { 'text/html': pickedMimeTypeRenderer.output! } } as any, innerContainer, 'text/html'); + result = this.notebookEditor.getOutputRenderer().render({ outputId: currOutput.outputId, outputKind: CellOutputKind.Rich, data: { 'text/html': pickedMimeTypeRenderer.output! } }, innerContainer, 'text/html'); } else { result = this.notebookEditor.getOutputRenderer().render(currOutput, innerContainer, pickedMimeTypeRenderer.mimeType); } @@ -364,6 +364,8 @@ export class CodeCell extends Disposable { let hasDynamicHeight = result.hasDynamicHeight; if (hasDynamicHeight) { + this.viewCell.selfSizeMonitoring = true; + let clientHeight = outputItemDiv.clientHeight; let dimension = { width: this.viewCell.layoutInfo.editorWidth, @@ -482,14 +484,17 @@ export class CodeCell extends Disposable { this.notebookEditor.layoutNotebookCell(this.viewCell, this.viewCell.layoutInfo.totalHeight); } - private _timer: any = null; + private _timer: number | null = null; relayoutCellDebounced() { - clearTimeout(this._timer); + if (this._timer !== null) { + clearTimeout(this._timer); + } + this._timer = setTimeout(() => { this.notebookEditor.layoutNotebookCell(this.viewCell, this.viewCell.layoutInfo.totalHeight); this._timer = null; - }, 200); + }, 200) as unknown as number | null; } dispose() { diff --git a/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts b/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts index c3c7bea5a5..eeb8949c98 100644 --- a/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts +++ b/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell.ts @@ -57,7 +57,7 @@ export class StatefullMarkdownCell extends Disposable { this._register(getResizesObserver(this.markdownContainer, undefined, () => { if (viewCell.editState === CellEditState.Preview) { - this.viewCell.totalHeight = templateData.container.clientHeight; + this.viewCell.renderedMarkdownHeight = templateData.container.clientHeight; } })).startObserving(); @@ -96,8 +96,8 @@ export class StatefullMarkdownCell extends Disposable { this._register(viewCell.onDidChangeLayout((e) => { const layoutInfo = this.editor?.getLayoutInfo(); if (e.outerWidth && layoutInfo && layoutInfo.width !== viewCell.layoutInfo.editorWidth) { - this.onCellWidthChange(); - } else if (e.totalHeight) { + this.onCellEditorWidthChange(); + } else if (e.totalHeight || e.outerWidth) { this.relayoutCell(); } })); @@ -202,15 +202,13 @@ export class StatefullMarkdownCell extends Disposable { if (this.editor) { // switch from editing mode - const clientHeight = this.templateData.container.clientHeight; - this.viewCell.totalHeight = clientHeight; - this.notebookEditor.layoutNotebookCell(this.viewCell, clientHeight); + this.viewCell.renderedMarkdownHeight = this.templateData.container.clientHeight; + this.relayoutCell(); } else { // first time, readonly mode this.localDisposables.add(markdownRenderer.onDidUpdateRender(() => { - const clientHeight = this.templateData.container.clientHeight; - this.viewCell.totalHeight = clientHeight; - this.notebookEditor.layoutNotebookCell(this.viewCell, clientHeight); + this.viewCell.renderedMarkdownHeight = this.templateData.container.clientHeight; + this.relayoutCell(); })); this.localDisposables.add(this.viewCell.textBuffer.onDidChangeContent(() => { @@ -222,9 +220,8 @@ export class StatefullMarkdownCell extends Disposable { } })); - const clientHeight = this.templateData.container.clientHeight; - this.viewCell.totalHeight = clientHeight; - this.notebookEditor.layoutNotebookCell(this.viewCell, clientHeight); + this.viewCell.renderedMarkdownHeight = this.templateData.container.clientHeight; + this.relayoutCell(); } } @@ -239,7 +236,7 @@ export class StatefullMarkdownCell extends Disposable { this.templateData.statusBarContainer.style.width = `${dimension.width}px`; } - private onCellWidthChange(): void { + private onCellEditorWidthChange(): void { const realContentHeight = this.editor!.getContentHeight(); this.layoutEditor( { @@ -256,7 +253,7 @@ export class StatefullMarkdownCell extends Disposable { this.notebookEditor.layoutNotebookCell(this.viewCell, this.viewCell.layoutInfo.totalHeight); } - updateEditorOptions(newValue: IEditorOptions): any { + updateEditorOptions(newValue: IEditorOptions): void { this.editorOptions = newValue; if (this.editor) { this.editor.updateOptions(this.editorOptions); diff --git a/src/vs/workbench/contrib/notebook/browser/view/renderers/webviewPreloads.ts b/src/vs/workbench/contrib/notebook/browser/view/renderers/webviewPreloads.ts index e72408cf26..1ed8d0da2c 100644 --- a/src/vs/workbench/contrib/notebook/browser/view/renderers/webviewPreloads.ts +++ b/src/vs/workbench/contrib/notebook/browser/view/renderers/webviewPreloads.ts @@ -11,17 +11,17 @@ import { ToWebviewMessage } from 'vs/workbench/contrib/notebook/browser/view/ren // function. Imports are not allowed. This is stringifies and injected into // the webview. -declare const acquireVsCodeApi: () => ({ getState(): { [key: string]: unknown }, setState(data: { [key: string]: unknown }): void, postMessage: (msg: unknown) => void }); +declare const acquireVsCodeApi: () => ({ getState(): { [key: string]: unknown; }, setState(data: { [key: string]: unknown; }): void, postMessage: (msg: unknown) => void; }); declare class ResizeObserver { - constructor(onChange: (entries: { target: HTMLElement, contentRect?: ClientRect }[]) => void); + constructor(onChange: (entries: { target: HTMLElement, contentRect?: ClientRect; }[]) => void); observe(element: Element): void; disconnect(): void; } declare const __outputNodePadding__: number; -type Listener = { fn: (evt: T) => void; thisArg: unknown }; +type Listener = { fn: (evt: T) => void; thisArg: unknown; }; interface EmitterLike { fire(data: T): void; @@ -262,6 +262,7 @@ function webviewPreloads() { const onWillDestroyOutput = createEmitter<[string | undefined /* namespace */, IDestroyCellInfo | undefined /* cell uri */]>(); const onDidCreateOutput = createEmitter<[string | undefined /* namespace */, ICreateCellInfo]>(); + const onDidReceiveMessage = createEmitter<[string, unknown]>(); const matchesNs = (namespace: string, query: string | undefined) => namespace === '*' || query === namespace || query === 'undefined'; @@ -271,7 +272,14 @@ function webviewPreloads() { } return { - postMessage: vscode.postMessage, + postMessage(message: unknown) { + vscode.postMessage({ + __vscode_notebook_message: true, + type: 'customRendererMessage', + rendererId: namespace, + message, + }); + }, setState(newState: T) { vscode.setState({ ...vscode.getState(), [namespace]: newState }); }, @@ -279,55 +287,89 @@ function webviewPreloads() { const state = vscode.getState(); return typeof state === 'object' && state ? state[namespace] as T : undefined; }, + onDidReceiveMessage: mapEmitter(onDidReceiveMessage, ([ns, data]) => ns === namespace ? data : dontEmit), onWillDestroyOutput: mapEmitter(onWillDestroyOutput, ([ns, data]) => matchesNs(namespace, ns) ? data : dontEmit), onDidCreateOutput: mapEmitter(onDidCreateOutput, ([ns, data]) => matchesNs(namespace, ns) ? data : dontEmit), }; }; + /** + * Map of preload resource URIs to promises that resolve one the resource + * loads or errors. + */ + const preloadPromises = new Map>(); + const queuedOuputActions = new Map>(); + + /** + * Enqueues an action that affects a output. This blocks behind renderer load + * requests that affect the same output. This should be called whenever you + * do something that affects output to ensure it runs in + * the correct order. + */ + const enqueueOutputAction = (event: T, fn: (event: T) => Promise | void) => { + const queued = queuedOuputActions.get(event.outputId); + const maybePromise = queued ? queued.then(() => fn(event)) : fn(event); + if (typeof maybePromise === 'undefined') { + return; // a synchonrously-called function, we're done + } + + const promise = maybePromise.then(() => { + if (queuedOuputActions.get(event.outputId) === promise) { + queuedOuputActions.delete(event.outputId); + } + }); + + queuedOuputActions.set(event.outputId, promise); + }; + window.addEventListener('wheel', handleWheel); window.addEventListener('message', rawEvent => { - const event = rawEvent as ({ data: ToWebviewMessage }); + const event = rawEvent as ({ data: ToWebviewMessage; }); switch (event.data.type) { case 'html': - { - const id = event.data.id; - let cellOutputContainer = document.getElementById(id); - let outputId = event.data.outputId; + enqueueOutputAction(event.data, async data => { + await Promise.all(data.requiredPreloads.map(p => preloadPromises.get(p.uri))); + if (!queuedOuputActions.has(data.outputId)) { // output was cleared while loading + return; + } + + let cellOutputContainer = document.getElementById(data.cellId); + let outputId = data.outputId; if (!cellOutputContainer) { const container = document.getElementById('container')!; - const upperWrapperElement = createFocusSink(id, outputId); + const upperWrapperElement = createFocusSink(data.cellId, outputId); container.appendChild(upperWrapperElement); let newElement = document.createElement('div'); - newElement.id = id; + newElement.id = data.cellId; container.appendChild(newElement); cellOutputContainer = newElement; - const lowerWrapperElement = createFocusSink(id, outputId, true); + const lowerWrapperElement = createFocusSink(data.cellId, outputId, true); container.appendChild(lowerWrapperElement); } let outputNode = document.createElement('div'); outputNode.style.position = 'absolute'; - outputNode.style.top = event.data.top + 'px'; - outputNode.style.left = event.data.left + 'px'; - outputNode.style.width = 'calc(100% - ' + event.data.left + 'px)'; + outputNode.style.top = data.top + 'px'; + outputNode.style.left = data.left + 'px'; + outputNode.style.width = 'calc(100% - ' + data.left + 'px)'; outputNode.style.minHeight = '32px'; outputNode.id = outputId; addMouseoverListeners(outputNode, outputId); - let content = event.data.content; + let content = data.content; outputNode.innerHTML = content; cellOutputContainer.appendChild(outputNode); // eval domEval(outputNode); resizeObserve(outputNode, outputId); - onDidCreateOutput.fire([event.data.apiNamespace, { element: outputNode, outputId }]); + onDidCreateOutput.fire([data.apiNamespace, { element: outputNode, outputId }]); vscode.postMessage({ __vscode_notebook_message: true, @@ -339,8 +381,8 @@ function webviewPreloads() { }); // don't hide until after this step so that the height is right - cellOutputContainer.style.display = event.data.initiallyHidden ? 'none' : 'block'; - } + cellOutputContainer.style.display = data.initiallyHidden ? 'none' : 'block'; + }); break; case 'view-scroll': { @@ -355,6 +397,7 @@ function webviewPreloads() { break; } case 'clear': + queuedOuputActions.clear(); // stop all loading outputs onWillDestroyOutput.fire([undefined, undefined]); document.getElementById('container')!.innerHTML = ''; for (let i = 0; i < observers.length; i++) { @@ -364,32 +407,29 @@ function webviewPreloads() { observers = []; break; case 'clearOutput': - { - const id = event.data.id; - onWillDestroyOutput.fire([event.data.apiNamespace, { outputId: id }]); - let output = document.getElementById(id); - if (output && output.parentNode) { - document.getElementById(id)!.parentNode!.removeChild(output); - } - // @TODO remove observer + let output = document.getElementById(event.data.outputId); + queuedOuputActions.delete(event.data.outputId); // stop any in-progress rendering + if (output && output.parentNode) { + onWillDestroyOutput.fire([event.data.apiNamespace, { outputId: event.data.outputId }]); + output.parentNode.removeChild(output); } break; case 'hideOutput': - { - const container = document.getElementById(event.data.id)?.parentElement; + enqueueOutputAction(event.data, ({ outputId }) => { + const container = document.getElementById(outputId)?.parentElement; if (container) { container.style.display = 'none'; } - } + }); break; case 'showOutput': - { - let output = document.getElementById(event.data.id); + enqueueOutputAction(event.data, ({ outputId, top }) => { + let output = document.getElementById(outputId); if (output) { output.parentElement!.style.display = 'block'; - output.style.top = event.data.top + 'px'; + output.style.top = top + 'px'; } - } + }); break; case 'preload': let resources = event.data.resources; @@ -399,13 +439,18 @@ function webviewPreloads() { const scriptTag = document.createElement('script'); scriptTag.setAttribute('src', uri); preloadsContainer.appendChild(scriptTag); + preloadPromises.set(uri, new Promise(resolve => { + scriptTag.addEventListener('load', () => resolve()); + scriptTag.addEventListener('error', () => resolve()); + })); } break; case 'focus-output': - { - focusFirstFocusableInCell(event.data.id); - break; - } + focusFirstFocusableInCell(event.data.cellId); + break; + case 'customRendererMessage': + onDidReceiveMessage.fire([event.data.rendererId, event.data.message]); + break; } }); diff --git a/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts b/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts index 6e2e01f853..361f682d95 100644 --- a/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts +++ b/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel.ts @@ -75,12 +75,8 @@ export abstract class BaseCellViewModel extends Disposable { return this._focusMode; } set focusMode(newMode: CellFocusMode) { - const changed = this._focusMode !== newMode; this._focusMode = newMode; - - if (changed) { - this._onDidChangeState.fire({ focusModeChanged: true }); - } + this._onDidChangeState.fire({ focusModeChanged: true }); } protected _textEditor?: ICodeEditor; @@ -94,14 +90,17 @@ export abstract class BaseCellViewModel extends Disposable { options: model.IModelDeltaDecoration; }>(); private _lastDecorationId: number = 0; - protected _textModel?: model.ITextModel; get textModel(): model.ITextModel | undefined { - return this._textModel; + return this.model.textModel; + } + + set textModel(m: model.ITextModel | undefined) { + this.model.textModel = m; } hasModel(): this is IEditableCellViewModel { - return !!this._textModel; + return !!this.model.textModel; } private _dragging: boolean = false; @@ -131,7 +130,7 @@ export abstract class BaseCellViewModel extends Disposable { abstract onDeselect(): void; assertTextModelAttached(): boolean { - if (this._textModel && this._textEditor && this._textEditor.getModel() === this._textModel) { + if (this.textModel && this._textEditor && this._textEditor.getModel() === this.textModel) { return true; } @@ -152,7 +151,7 @@ export abstract class BaseCellViewModel extends Disposable { } this._textEditor = editor; - this._textModel = this._textEditor.getModel() || undefined; + this.textModel = this._textEditor.getModel() || undefined; if (this._editorViewStates) { this._restoreViewState(this._editorViewStates); @@ -187,7 +186,7 @@ export abstract class BaseCellViewModel extends Disposable { }); this._textEditor = undefined; - this._textModel = undefined; + this.textModel = undefined; this._cursorChangeListener?.dispose(); this._cursorChangeListener = null; this._onDidChangeEditorAttachState.fire(); @@ -310,6 +309,10 @@ export abstract class BaseCellViewModel extends Disposable { return CursorAtBoundary.None; } + if (!this.textModel) { + return CursorAtBoundary.None; + } + // only validate primary cursor const selection = this._textEditor.getSelection(); @@ -319,7 +322,7 @@ export abstract class BaseCellViewModel extends Disposable { } const firstViewLineTop = this._textEditor.getTopForPosition(1, 1); - const lastViewLineTop = this._textEditor.getTopForPosition(this._textModel!.getLineCount(), this._textModel!.getLineLength(this._textModel!.getLineCount())); + const lastViewLineTop = this._textEditor.getTopForPosition(this.textModel!.getLineCount(), this.textModel!.getLineLength(this.textModel!.getLineCount())); const selectionTop = this._textEditor.getTopForPosition(selection.startLineNumber, selection.startColumn); if (selectionTop === lastViewLineTop) { @@ -347,7 +350,7 @@ export abstract class BaseCellViewModel extends Disposable { let cellMatches: model.FindMatch[] = []; if (this.assertTextModelAttached()) { - cellMatches = this._textModel!.findMatches(value, false, false, false, null, false); + cellMatches = this.textModel!.findMatches(value, false, false, false, null, false); } else { const lineCount = this.textBuffer.getLineCount(); const fullRange = new Range(1, 1, lineCount, this.textBuffer.getLineLength(lineCount) + 1); @@ -388,7 +391,7 @@ export abstract class BaseCellViewModel extends Disposable { super.dispose(); } - toJSON(): any { + toJSON(): object { return { handle: this.handle }; diff --git a/src/vs/workbench/contrib/notebook/browser/viewModel/cellEdit.ts b/src/vs/workbench/contrib/notebook/browser/viewModel/cellEdit.ts index 8a1f7bef37..e6f35391bc 100644 --- a/src/vs/workbench/contrib/notebook/browser/viewModel/cellEdit.ts +++ b/src/vs/workbench/contrib/notebook/browser/viewModel/cellEdit.ts @@ -5,181 +5,24 @@ import { Range } from 'vs/editor/common/core/range'; import { Selection } from 'vs/editor/common/core/selection'; -import { ICell, CellKind } from 'vs/workbench/contrib/notebook/common/notebookCommon'; +import { CellKind } from 'vs/workbench/contrib/notebook/common/notebookCommon'; import { IResourceUndoRedoElement, UndoRedoElementType } from 'vs/platform/undoRedo/common/undoRedo'; import { URI } from 'vs/base/common/uri'; import { BaseCellViewModel } from 'vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel'; -import { CellViewModel } from 'vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel'; import { CellFocusMode } from 'vs/workbench/contrib/notebook/browser/notebookBrowser'; +import { NotebookCellTextModel } from 'vs/workbench/contrib/notebook/common/model/notebookCellTextModel'; +import { ITextCellEditingDelegate } from 'vs/workbench/contrib/notebook/common/model/cellEdit'; -/** - * It should not modify Undo/Redo stack - */ -export interface ICellEditingDelegate { - insertCell?(index: number, viewCell: BaseCellViewModel): void; - deleteCell?(index: number): void; - moveCell?(fromIndex: number, toIndex: number): void; - createCellViewModel?(cell: ICell): BaseCellViewModel; + +export interface IViewCellEditingDelegate extends ITextCellEditingDelegate { + createCellViewModel?(cell: NotebookCellTextModel): BaseCellViewModel; createCell?(index: number, source: string | string[], language: string, type: CellKind): BaseCellViewModel; - setSelections(selections: number[]): void; -} - -export class InsertCellEdit implements IResourceUndoRedoElement { - type: UndoRedoElementType.Resource = UndoRedoElementType.Resource; - label: string = 'Insert Cell'; - constructor( - public resource: URI, - private insertIndex: number, - private cell: BaseCellViewModel, - private editingDelegate: ICellEditingDelegate, - private beforedSelections: number[], - private endSelections: number[] - ) { - } - - undo(): void | Promise { - if (!this.editingDelegate.deleteCell) { - throw new Error('Notebook Delete Cell not implemented for Undo/Redo'); - } - - this.editingDelegate.deleteCell(this.insertIndex); - this.editingDelegate.setSelections(this.beforedSelections); - } - redo(): void | Promise { - if (!this.editingDelegate.insertCell) { - throw new Error('Notebook Insert Cell not implemented for Undo/Redo'); - } - - this.editingDelegate.insertCell(this.insertIndex, this.cell); - this.editingDelegate.setSelections(this.endSelections); - } -} - -export class DeleteCellEdit implements IResourceUndoRedoElement { - type: UndoRedoElementType.Resource = UndoRedoElementType.Resource; - label: string = 'Delete Cell'; - - private _rawCell: ICell; - constructor( - public resource: URI, - private insertIndex: number, - cell: BaseCellViewModel, - private editingDelegate: ICellEditingDelegate, - private beforedSelections: number[], - private endSelections: number[] - ) { - this._rawCell = cell.model; - - // save inmem text to `ICell` - // no needed any more as the text buffer is transfered to `raw_cell` - // this._rawCell.source = [cell.getText()]; - } - - undo(): void | Promise { - if (!this.editingDelegate.insertCell || !this.editingDelegate.createCellViewModel) { - throw new Error('Notebook Insert Cell not implemented for Undo/Redo'); - } - - const cell = this.editingDelegate.createCellViewModel(this._rawCell); - this.editingDelegate.insertCell(this.insertIndex, cell); - this.editingDelegate.setSelections(this.beforedSelections); - } - - redo(): void | Promise { - if (!this.editingDelegate.deleteCell) { - throw new Error('Notebook Delete Cell not implemented for Undo/Redo'); - } - - this.editingDelegate.deleteCell(this.insertIndex); - this.editingDelegate.setSelections(this.endSelections); - } -} - -export class MoveCellEdit implements IResourceUndoRedoElement { - type: UndoRedoElementType.Resource = UndoRedoElementType.Resource; - label: string = 'Delete Cell'; - - constructor( - public resource: URI, - private fromIndex: number, - private toIndex: number, - private editingDelegate: ICellEditingDelegate, - private beforedSelections: number[], - private endSelections: number[] - ) { - } - - undo(): void | Promise { - if (!this.editingDelegate.moveCell) { - throw new Error('Notebook Move Cell not implemented for Undo/Redo'); - } - - this.editingDelegate.moveCell(this.toIndex, this.fromIndex); - this.editingDelegate.setSelections(this.beforedSelections); - } - - redo(): void | Promise { - if (!this.editingDelegate.moveCell) { - throw new Error('Notebook Move Cell not implemented for Undo/Redo'); - } - - this.editingDelegate.moveCell(this.fromIndex, this.toIndex); - this.editingDelegate.setSelections(this.endSelections); - } -} - -export class SpliceCellsEdit implements IResourceUndoRedoElement { - type: UndoRedoElementType.Resource = UndoRedoElementType.Resource; - label: string = 'Insert Cell'; - constructor( - public resource: URI, - private diffs: [number, CellViewModel[], CellViewModel[]][], - private editingDelegate: ICellEditingDelegate, - private beforeHandles: number[], - private endHandles: number[] - ) { - } - - undo(): void | Promise { - if (!this.editingDelegate.deleteCell || !this.editingDelegate.insertCell) { - throw new Error('Notebook Insert/Delete Cell not implemented for Undo/Redo'); - } - - this.diffs.forEach(diff => { - for (let i = 0; i < diff[2].length; i++) { - this.editingDelegate.deleteCell!(diff[0]); - } - - diff[1].reverse().forEach(cell => { - this.editingDelegate.insertCell!(diff[0], cell); - }); - }); - this.editingDelegate.setSelections(this.beforeHandles); - } - - redo(): void | Promise { - if (!this.editingDelegate.deleteCell || !this.editingDelegate.insertCell) { - throw new Error('Notebook Insert/Delete Cell not implemented for Undo/Redo'); - } - - this.diffs.reverse().forEach(diff => { - for (let i = 0; i < diff[1].length; i++) { - this.editingDelegate.deleteCell!(diff[0]); - } - - diff[2].reverse().forEach(cell => { - this.editingDelegate.insertCell!(diff[0], cell); - }); - }); - - this.editingDelegate.setSelections(this.endHandles); - } } export class JoinCellEdit implements IResourceUndoRedoElement { type: UndoRedoElementType.Resource = UndoRedoElementType.Resource; label: string = 'Join Cell'; - private _deletedRawCell: ICell; + private _deletedRawCell: NotebookCellTextModel; constructor( public resource: URI, private index: number, @@ -189,7 +32,7 @@ export class JoinCellEdit implements IResourceUndoRedoElement { private inverseRange: Range, private insertContent: string, private removedCell: BaseCellViewModel, - private editingDelegate: ICellEditingDelegate, + private editingDelegate: IViewCellEditingDelegate, ) { this._deletedRawCell = this.removedCell.model; } @@ -209,12 +52,12 @@ export class JoinCellEdit implements IResourceUndoRedoElement { const cell = this.editingDelegate.createCellViewModel(this._deletedRawCell); if (this.direction === 'above') { - this.editingDelegate.insertCell(this.index, cell); - this.editingDelegate.setSelections([cell.handle]); + this.editingDelegate.insertCell(this.index, this._deletedRawCell); + this.editingDelegate.emitSelections([cell.handle]); cell.focusMode = CellFocusMode.Editor; } else { - this.editingDelegate.insertCell(this.index, cell); - this.editingDelegate.setSelections([this.cell.handle]); + this.editingDelegate.insertCell(this.index, cell.model); + this.editingDelegate.emitSelections([this.cell.handle]); this.cell.focusMode = CellFocusMode.Editor; } } @@ -230,7 +73,7 @@ export class JoinCellEdit implements IResourceUndoRedoElement { ]); this.editingDelegate.deleteCell(this.index); - this.editingDelegate.setSelections([this.cell.handle]); + this.editingDelegate.emitSelections([this.cell.handle]); this.cell.focusMode = CellFocusMode.Editor; } } @@ -247,13 +90,13 @@ export class SplitCellEdit implements IResourceUndoRedoElement { private cellContents: string[], private language: string, private cellKind: CellKind, - private editingDelegate: ICellEditingDelegate + private editingDelegate: IViewCellEditingDelegate ) { } async undo(): Promise { - if (!this.editingDelegate.deleteCell || !this.editingDelegate.createCellViewModel) { + if (!this.editingDelegate.deleteCell) { throw new Error('Notebook Delete Cell not implemented for Undo/Redo'); } @@ -270,12 +113,12 @@ export class SplitCellEdit implements IResourceUndoRedoElement { this.editingDelegate.deleteCell(this.index + 1); } - this.editingDelegate.setSelections([this.cell.handle]); + this.editingDelegate.emitSelections([this.cell.handle]); this.cell.focusMode = CellFocusMode.Editor; } async redo(): Promise { - if (!this.editingDelegate.insertCell || !this.editingDelegate.createCell) { + if (!this.editingDelegate.createCell) { throw new Error('Notebook Insert Cell not implemented for Undo/Redo'); } @@ -291,7 +134,7 @@ export class SplitCellEdit implements IResourceUndoRedoElement { } if (lastCell) { - this.editingDelegate.setSelections([lastCell.handle]); + this.editingDelegate.emitSelections([lastCell.handle]); lastCell.focusMode = CellFocusMode.Editor; } } diff --git a/src/vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel.ts b/src/vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel.ts index 565e79a681..5f740c62eb 100644 --- a/src/vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel.ts +++ b/src/vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel.ts @@ -9,7 +9,7 @@ import * as editorCommon from 'vs/editor/common/editorCommon'; import * as model from 'vs/editor/common/model'; import { ITextModelService } from 'vs/editor/common/services/resolverService'; import { PrefixSumComputer } from 'vs/editor/common/viewModel/prefixSumComputer'; -import { BOTTOM_CELL_TOOLBAR_HEIGHT, CELL_MARGIN, CELL_RUN_GUTTER, CELL_STATUSBAR_HEIGHT, EDITOR_BOTTOM_PADDING, EDITOR_TOOLBAR_HEIGHT, EDITOR_TOP_MARGIN, EDITOR_TOP_PADDING } from 'vs/workbench/contrib/notebook/browser/constants'; +import { BOTTOM_CELL_TOOLBAR_HEIGHT, CELL_MARGIN, CELL_RUN_GUTTER, CELL_STATUSBAR_HEIGHT, EDITOR_BOTTOM_PADDING, EDITOR_TOOLBAR_HEIGHT, EDITOR_TOP_MARGIN, EDITOR_TOP_PADDING, CELL_BOTTOM_MARGIN, CODE_CELL_LEFT_MARGIN } from 'vs/workbench/contrib/notebook/browser/constants'; import { CellEditState, CellFindMatch, CodeCellLayoutChangeEvent, CodeCellLayoutInfo, ICellViewModel, NotebookLayoutInfo } from 'vs/workbench/contrib/notebook/browser/notebookBrowser'; import { NotebookCellTextModel } from 'vs/workbench/contrib/notebook/common/model/notebookCellTextModel'; import { CellKind, NotebookCellOutputsSplice } from 'vs/workbench/contrib/notebook/common/notebookCommon'; @@ -94,14 +94,14 @@ export class CodeCellViewModel extends BaseCellViewModel implements ICellViewMod } private computeEditorWidth(outerWidth: number): number { - return outerWidth - (CELL_MARGIN * 2 + CELL_RUN_GUTTER); + return outerWidth - (CODE_CELL_LEFT_MARGIN + CELL_MARGIN + CELL_RUN_GUTTER); } layoutChange(state: CodeCellLayoutChangeEvent) { // recompute this._ensureOutputsTop(); const outputTotalHeight = this._outputsTop!.getTotalValue(); - const totalHeight = EDITOR_TOOLBAR_HEIGHT + this.editorHeight + EDITOR_TOP_MARGIN + outputTotalHeight + BOTTOM_CELL_TOOLBAR_HEIGHT + CELL_STATUSBAR_HEIGHT; + const totalHeight = EDITOR_TOOLBAR_HEIGHT + this.editorHeight + EDITOR_TOP_MARGIN + outputTotalHeight + BOTTOM_CELL_TOOLBAR_HEIGHT + CELL_STATUSBAR_HEIGHT + CELL_BOTTOM_MARGIN; const indicatorHeight = this.editorHeight + CELL_STATUSBAR_HEIGHT + outputTotalHeight; const outputContainerOffset = EDITOR_TOOLBAR_HEIGHT + EDITOR_TOP_MARGIN + this.editorHeight + CELL_STATUSBAR_HEIGHT; const bottomToolbarOffset = totalHeight - BOTTOM_CELL_TOOLBAR_HEIGHT; @@ -173,17 +173,17 @@ export class CodeCellViewModel extends BaseCellViewModel implements ICellViewMod * Text model is used for editing. */ async resolveTextModel(): Promise { - if (!this._textModel) { + if (!this.textModel) { const ref = await this._modelService.createModelReference(this.model.uri); - this._textModel = ref.object.textEditorModel; + this.textModel = ref.object.textEditorModel; this._register(ref); - this._register(this._textModel.onDidChangeContent(() => { + this._register(this.textModel.onDidChangeContent(() => { this.editState = CellEditState.Editing; this._onDidChangeState.fire({ contentChanged: true }); })); } - return this._textModel; + return this.textModel; } onDeselect() { diff --git a/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts b/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts index 0a77af5505..a138c5b512 100644 --- a/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts +++ b/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel.ts @@ -26,13 +26,18 @@ export class MarkdownCellViewModel extends BaseCellViewModel implements ICellVie return this._layoutInfo; } - set totalHeight(newHeight: number) { + set renderedMarkdownHeight(newHeight: number) { + const newTotalHeight = newHeight + BOTTOM_CELL_TOOLBAR_HEIGHT; + this.totalHeight = newTotalHeight; + } + + private set totalHeight(newHeight: number) { if (newHeight !== this.layoutInfo.totalHeight) { this.layoutChange({ totalHeight: newHeight }); } } - get totalHeight() { + private get totalHeight() { throw new Error('MarkdownCellViewModel.totalHeight is write only'); } @@ -114,7 +119,7 @@ export class MarkdownCellViewModel extends BaseCellViewModel implements ICellVie } hasDynamicHeight() { - return true; + return false; } getHeight(lineHeight: number) { @@ -142,16 +147,16 @@ export class MarkdownCellViewModel extends BaseCellViewModel implements ICellVie } async resolveTextModel(): Promise { - if (!this._textModel) { + if (!this.textModel) { const ref = await this._modelService.createModelReference(this.model.uri); - this._textModel = ref.object.textEditorModel; + this.textModel = ref.object.textEditorModel; this._register(ref); - this._register(this._textModel.onDidChangeContent(() => { + this._register(this.textModel.onDidChangeContent(() => { this._html = null; this._onDidChangeState.fire({ contentChanged: true }); })); } - return this._textModel; + return this.textModel; } onDeselect() { diff --git a/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts b/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts index b4d7c596d4..51d397bd53 100644 --- a/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts +++ b/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts @@ -19,7 +19,6 @@ import { WorkspaceTextEdit } from 'vs/editor/common/modes'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IUndoRedoService } from 'vs/platform/undoRedo/common/undoRedo'; import { CellEditState, CellFindMatch, ICellRange, ICellViewModel, NotebookLayoutInfo, IEditableCellViewModel } from 'vs/workbench/contrib/notebook/browser/notebookBrowser'; -import { DeleteCellEdit, InsertCellEdit, MoveCellEdit, SpliceCellsEdit, JoinCellEdit, SplitCellEdit } from 'vs/workbench/contrib/notebook/browser/viewModel/cellEdit'; import { CodeCellViewModel } from 'vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel'; import { NotebookEventDispatcher, NotebookMetadataChangedEvent } from 'vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher'; import { CellFoldingState, EditorFoldingStateDelegate } from 'vs/workbench/contrib/notebook/browser/contrib/fold/foldingModel'; @@ -31,6 +30,8 @@ import { NotebookTextModel } from 'vs/workbench/contrib/notebook/common/model/no import { MarkdownRenderer } from 'vs/workbench/contrib/notebook/browser/view/renderers/mdRenderer'; import { dirname } from 'vs/base/common/resources'; import { IPosition, Position } from 'vs/editor/common/core/position'; +import { SplitCellEdit, JoinCellEdit } from 'vs/workbench/contrib/notebook/browser/viewModel/cellEdit'; +import { BaseCellViewModel } from 'vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel'; import { PieceTreeTextBuffer } from 'vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer'; export interface INotebookEditorViewState { @@ -41,7 +42,7 @@ export interface INotebookEditorViewState { scrollPosition?: { left: number; top: number; }; focus?: number; editorFocused?: boolean; - contributionsState?: { [id: string]: any }; + contributionsState?: { [id: string]: unknown }; } export interface ICellModelDecorations { @@ -199,7 +200,7 @@ export class NotebookViewModel extends Disposable implements EditorFoldingStateD return this._notebook.metadata; } - private readonly _onDidChangeViewCells = new Emitter(); + private readonly _onDidChangeViewCells = this._register(new Emitter()); get onDidChangeViewCells(): Event { return this._onDidChangeViewCells.event; } private _lastNotebookEditResource: URI[] = []; @@ -215,7 +216,7 @@ export class NotebookViewModel extends Disposable implements EditorFoldingStateD return this._layoutInfo; } - private readonly _onDidChangeSelection = new Emitter(); + private readonly _onDidChangeSelection = this._register(new Emitter()); get onDidChangeSelection(): Event { return this._onDidChangeSelection.event; } private _selections: number[] = []; @@ -242,6 +243,11 @@ export class NotebookViewModel extends Disposable implements EditorFoldingStateD public readonly id: string; private _foldingRanges: FoldingRegions | null = null; private _hiddenRanges: ICellRange[] = []; + private _focused: boolean = true; + + get focused() { + return this._focused; + } constructor( public viewType: string, @@ -259,23 +265,20 @@ export class NotebookViewModel extends Disposable implements EditorFoldingStateD this._instanceId = strings.singleLetterHash(MODEL_ID); this._register(this._notebook.onDidChangeCells(e => { - const diffs = e.map(splice => { + const diffs = e.splices.map(splice => { return [splice[0], splice[1], splice[2].map(cell => { return createCellViewModel(this._instantiationService, this, cell as NotebookCellTextModel); })] as [number, number, CellViewModel[]]; }); - const undoDiff = diffs.map(diff => { - const deletedCells = this.viewCells.slice(diff[0], diff[0] + diff[1]); - - return [diff[0], deletedCells, diff[2]] as [number, CellViewModel[], CellViewModel[]]; - }); - diffs.reverse().forEach(diff => { const deletedCells = this._viewCells.splice(diff[0], diff[1], ...diff[2]); + this._decorationsTree.acceptReplace(diff[0], diff[1], diff[2].length, true); deletedCells.forEach(cell => { this._handleToViewCellMapping.delete(cell.handle); + // dispsoe the cell to release ref to the cell text document + cell.dispose(); }); diff[2].forEach(cell => { @@ -285,7 +288,7 @@ export class NotebookViewModel extends Disposable implements EditorFoldingStateD }); this._onDidChangeViewCells.fire({ - synchronous: true, + synchronous: e.synchronous, splices: diffs }); @@ -315,12 +318,6 @@ export class NotebookViewModel extends Disposable implements EditorFoldingStateD } } - this._undoService.pushElement(new SpliceCellsEdit(this.uri, undoDiff, { - insertCell: this._insertCellDelegate.bind(this), - deleteCell: this._deleteCellDelegate.bind(this), - setSelections: this._setSelectionsDelegate.bind(this) - }, this.selectionHandles, endSelectionHandles)); - this.selectionHandles = endSelectionHandles; })); @@ -328,6 +325,13 @@ export class NotebookViewModel extends Disposable implements EditorFoldingStateD this.eventDispatcher.emit([new NotebookMetadataChangedEvent(e)]); })); + this._register(this._notebook.emitSelections(selections => { + // text model emit selection change (for example, undo/redo) + // we should update the selection handle wisely + // TODO, if the editor is note selected, undo/redo should not change the focused element selection + this.updateSelectionsFromEdits(selections); + })); + this._register(this.eventDispatcher.onDidChangeLayout((e) => { this._layoutInfo = e.value; @@ -353,6 +357,16 @@ export class NotebookViewModel extends Disposable implements EditorFoldingStateD }); } + setFocus(focused: boolean) { + this._focused = focused; + } + + updateSelectionsFromEdits(selections: number[]) { + if (this._focused) { + this.selectionHandles = selections; + } + } + getFoldingStartIndex(index: number): number { if (!this._foldingRanges) { return -1; @@ -582,87 +596,20 @@ export class NotebookViewModel extends Disposable implements EditorFoldingStateD return result; } - private _createCellDelegate(index: number, source: string | string[], language: string, type: CellKind) { - const cell = this._notebook.createCellTextModel(source, language, type, [], undefined); - let newCell: CellViewModel = createCellViewModel(this._instantiationService, this, cell); - this._viewCells!.splice(index, 0, newCell); - this._handleToViewCellMapping.set(newCell.handle, newCell); - this._notebook.insertNewCell(index, [cell]); - this._localStore.add(newCell); - this._decorationsTree.acceptReplace(index, 0, 1, true); - this._onDidChangeViewCells.fire({ synchronous: true, splices: [[index, 0, [newCell]]] }); - return newCell; - } - - private _insertCellDelegate(insertIndex: number, insertCell: CellViewModel) { - this._viewCells!.splice(insertIndex, 0, insertCell); - this._handleToViewCellMapping.set(insertCell.handle, insertCell); - this._notebook.insertNewCell(insertIndex, [insertCell.model as NotebookCellTextModel]); - this._localStore.add(insertCell); - this._onDidChangeViewCells.fire({ synchronous: true, splices: [[insertIndex, 0, [insertCell]]] }); - } - - private _deleteCellDelegate(deleteIndex: number) { - const deleteCell = this._viewCells[deleteIndex]; - this._viewCells.splice(deleteIndex, 1); - this._handleToViewCellMapping.delete(deleteCell.handle); - - this._notebook.removeCell(deleteIndex, 1); - this._decorationsTree.acceptReplace(deleteIndex, 1, 0, true); - this._onDidChangeViewCells.fire({ synchronous: true, splices: [[deleteIndex, 1, []]] }); - } - - private _setSelectionsDelegate(selections: number[]) { - this.selectionHandles = selections; - } - createCell(index: number, source: string | string[], language: string, type: CellKind, metadata: NotebookCellMetadata | undefined, synchronous: boolean, pushUndoStop: boolean = true) { - const cell = this._notebook.createCellTextModel(source, language, type, [], metadata); - let newCell: CellViewModel = createCellViewModel(this._instantiationService, this, cell); - this._viewCells!.splice(index, 0, newCell); - this._handleToViewCellMapping.set(newCell.handle, newCell); - this._notebook.insertNewCell(index, [cell]); - this._localStore.add(newCell); - - if (pushUndoStop) { - this._undoService.pushElement(new InsertCellEdit(this.uri, index, newCell, { - insertCell: this._insertCellDelegate.bind(this), - deleteCell: this._deleteCellDelegate.bind(this), - setSelections: this._setSelectionsDelegate.bind(this) - }, this.selectionHandles, this.selectionHandles)); - } - - this._decorationsTree.acceptReplace(index, 0, 1, true); - this._onDidChangeViewCells.fire({ synchronous: synchronous, splices: [[index, 0, [newCell]]] }); - return newCell; + this._notebook.createCell2(index, source, language, type, metadata, synchronous, pushUndoStop, undefined, undefined); + // TODO, rely on createCell to be sync + return this.viewCells[index]; } - insertCell(index: number, cell: NotebookCellTextModel, synchronous: boolean): CellViewModel { - let newCell: CellViewModel = createCellViewModel(this._instantiationService, this, cell); - this._viewCells!.splice(index, 0, newCell); - this._handleToViewCellMapping.set(newCell.handle, newCell); - - this._notebook.insertNewCell(index, [newCell.model]); - this._localStore.add(newCell); - this._undoService.pushElement(new InsertCellEdit(this.uri, index, newCell, { - insertCell: this._insertCellDelegate.bind(this), - deleteCell: this._deleteCellDelegate.bind(this), - setSelections: this._setSelectionsDelegate.bind(this) - }, this.selectionHandles, this.selectionHandles)); - - this._decorationsTree.acceptReplace(index, 0, 1, true); - this._onDidChangeViewCells.fire({ synchronous: synchronous, splices: [[index, 0, [newCell]]] }); - return newCell; + insertCell(index: number, cell: NotebookCellTextModel, synchronous: boolean, pushUndoStop: boolean = true): CellViewModel { + this._notebook.insertCell2(index, cell, synchronous, pushUndoStop); + // TODO, rely on createCell to be sync // this will trigger it to synchronous update + return this._viewCells[index]; } deleteCell(index: number, synchronous: boolean, pushUndoStop: boolean = true) { const primarySelectionIndex = this.selectionHandles.length ? this._viewCells.indexOf(this.getCellByHandle(this.selectionHandles[0])!) : null; - - let viewCell = this._viewCells[index]; - this._viewCells.splice(index, 1); - this._handleToViewCellMapping.delete(viewCell.handle); - this._notebook.removeCell(index, 1); - let endSelections: number[] = []; if (this.selectionHandles.length) { const primarySelectionHandle = this.selectionHandles[0]; @@ -680,23 +627,7 @@ export class NotebookViewModel extends Disposable implements EditorFoldingStateD } } - if (pushUndoStop) { - this._undoService.pushElement(new DeleteCellEdit(this.uri, index, viewCell, { - insertCell: this._insertCellDelegate.bind(this), - deleteCell: this._deleteCellDelegate.bind(this), - createCellViewModel: (cell: NotebookCellTextModel) => { - return createCellViewModel(this._instantiationService, this, cell); - }, - setSelections: this._setSelectionsDelegate.bind(this) - }, this.selectionHandles, endSelections)); - } - - this.selectionHandles = endSelections; - - this._decorationsTree.acceptReplace(index, 1, 0, true); - - this._onDidChangeViewCells.fire({ synchronous: synchronous, splices: [[index, 1, []]] }); - viewCell.dispose(); + this._notebook.deleteCell2(index, synchronous, pushUndoStop, this.selectionHandles, endSelections); } moveCellToIdx(index: number, newIdx: number, synchronous: boolean, pushedToUndoStack: boolean = true): boolean { @@ -705,24 +636,7 @@ export class NotebookViewModel extends Disposable implements EditorFoldingStateD return false; } - this.viewCells.splice(index, 1); - this.viewCells!.splice(newIdx, 0, viewCell); - this._notebook.moveCellToIdx(index, newIdx); - - if (pushedToUndoStack) { - this._undoService.pushElement(new MoveCellEdit(this.uri, index, newIdx, { - moveCell: (fromIndex: number, toIndex: number) => { - this.moveCellToIdx(fromIndex, toIndex, true, false); - }, - setSelections: this._setSelectionsDelegate.bind(this) - }, this.selectionHandles, this.selectionHandles)); - } - - this.selectionHandles = this.selectionHandles; - - this._onDidChangeViewCells.fire({ synchronous: synchronous, splices: [[index, 1, []]] }); - this._onDidChangeViewCells.fire({ synchronous: synchronous, splices: [[newIdx, 0, [viewCell]]] }); - + this._notebook.moveCellToIdx2(index, newIdx, synchronous, pushedToUndoStack, undefined, [viewCell.handle]); return true; } @@ -806,23 +720,10 @@ export class NotebookViewModel extends Disposable implements EditorFoldingStateD let newLinesContents = this._computeCellLinesContents(cell, splitPoints); if (newLinesContents) { - const editorSelections = cell.getSelections(); - // update the contents of the first cell - cell.textModel.applyEdits([ - { range: cell.textModel.getFullModelRange(), text: newLinesContents[0] } - ], false); - - // create new cells based on the new text models - const language = cell.model.language; + this._notebook.splitNotebookCell(index, newLinesContents, this.selectionHandles); + const language = cell.language; const kind = cell.cellKind; - let insertIndex = this.getCellIndex(cell) + 1; - const newCells = []; - for (let j = 1; j < newLinesContents.length; j++, insertIndex++) { - newCells.push(this.createCell(insertIndex, newLinesContents[j], language, kind, undefined, true, false)); - } - - this.selectionHandles = [cell.handle]; this._undoService.pushElement(new SplitCellEdit( this.uri, @@ -833,16 +734,17 @@ export class NotebookViewModel extends Disposable implements EditorFoldingStateD language, kind, { - insertCell: this._insertCellDelegate.bind(this), - deleteCell: this._deleteCellDelegate.bind(this), - createCellViewModel: (cell: NotebookCellTextModel) => { - return createCellViewModel(this._instantiationService, this, cell); + createCell: (index: number, source: string | string[], language: string, type: CellKind) => { + return this.createCell(index, source, language, type, undefined, true, false) as BaseCellViewModel; }, - createCell: this._createCellDelegate.bind(this), - setSelections: this._setSelectionsDelegate.bind(this) + deleteCell: (index: number) => { + this.deleteCell(index, true, false); + }, + emitSelections: (selections: number[]) => { + this.updateSelectionsFromEdits(selections); + } } )); - return newCells; } } @@ -908,12 +810,18 @@ export class NotebookViewModel extends Disposable implements EditorFoldingStateD insertContent, cell, { - insertCell: this._insertCellDelegate.bind(this), - deleteCell: this._deleteCellDelegate.bind(this), + insertCell: (index: number, cell: NotebookCellTextModel) => { + this.insertCell(index, cell, true, false); + }, + deleteCell: (index: number) => { + this.deleteCell(index, true, false); + }, createCellViewModel: (cell: NotebookCellTextModel) => { return createCellViewModel(this._instantiationService, this, cell); }, - setSelections: this._setSelectionsDelegate.bind(this) + emitSelections: (selections: number[]) => { + this.updateSelectionsFromEdits(selections); + } }) ); @@ -956,12 +864,18 @@ export class NotebookViewModel extends Disposable implements EditorFoldingStateD insertContent, below, { - insertCell: this._insertCellDelegate.bind(this), - deleteCell: this._deleteCellDelegate.bind(this), + insertCell: (index: number, cell: NotebookCellTextModel) => { + this.insertCell(index, cell, true, false); + }, + deleteCell: (index: number) => { + this.deleteCell(index, true, false); + }, createCellViewModel: (cell: NotebookCellTextModel) => { return createCellViewModel(this._instantiationService, this, cell); }, - setSelections: this._setSelectionsDelegate.bind(this) + emitSelections: (selections: number[]) => { + this.updateSelectionsFromEdits(selections); + } }) ); @@ -1121,16 +1035,12 @@ export class NotebookViewModel extends Disposable implements EditorFoldingStateD }); } - canUndo(): boolean { - return this._undoService.canUndo(this.uri); + async undo() { + await this._undoService.undo(this.uri); } - undo() { - this._undoService.undo(this.uri); - } - - redo() { - this._undoService.redo(this.uri); + async redo() { + await this._undoService.redo(this.uri); } equal(notebook: NotebookTextModel) { diff --git a/src/vs/workbench/contrib/notebook/common/model/cellEdit.ts b/src/vs/workbench/contrib/notebook/common/model/cellEdit.ts new file mode 100644 index 0000000000..6adc6bc981 --- /dev/null +++ b/src/vs/workbench/contrib/notebook/common/model/cellEdit.ts @@ -0,0 +1,184 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { IResourceUndoRedoElement, UndoRedoElementType } from 'vs/platform/undoRedo/common/undoRedo'; +import { URI } from 'vs/base/common/uri'; +import { NotebookCellTextModel } from 'vs/workbench/contrib/notebook/common/model/notebookCellTextModel'; + +/** + * It should not modify Undo/Redo stack + */ +export interface ITextCellEditingDelegate { + insertCell?(index: number, cell: NotebookCellTextModel): void; + deleteCell?(index: number): void; + moveCell?(fromIndex: number, toIndex: number, beforeSelections: number[] | undefined, endSelections: number[] | undefined): void; + emitSelections(selections: number[]): void; +} + + +export class InsertCellEdit implements IResourceUndoRedoElement { + type: UndoRedoElementType.Resource = UndoRedoElementType.Resource; + label: string = 'Insert Cell'; + constructor( + public resource: URI, + private insertIndex: number, + private cell: NotebookCellTextModel, + private editingDelegate: ITextCellEditingDelegate, + private beforedSelections: number[] | undefined, + private endSelections: number[] | undefined + ) { + } + + undo(): void | Promise { + if (!this.editingDelegate.deleteCell) { + throw new Error('Notebook Delete Cell not implemented for Undo/Redo'); + } + + this.editingDelegate.deleteCell(this.insertIndex); + if (this.beforedSelections) { + this.editingDelegate.emitSelections(this.beforedSelections); + } + } + redo(): void | Promise { + if (!this.editingDelegate.insertCell) { + throw new Error('Notebook Insert Cell not implemented for Undo/Redo'); + } + + this.editingDelegate.insertCell(this.insertIndex, this.cell); + if (this.endSelections) { + this.editingDelegate.emitSelections(this.endSelections); + } + } +} + +export class DeleteCellEdit implements IResourceUndoRedoElement { + type: UndoRedoElementType.Resource = UndoRedoElementType.Resource; + label: string = 'Delete Cell'; + constructor( + public resource: URI, + private insertIndex: number, + private _cell: NotebookCellTextModel, + private editingDelegate: ITextCellEditingDelegate, + private beforedSelections: number[] | undefined, + private endSelections: number[] | undefined + ) { + + // save inmem text to `ICell` + // no needed any more as the text buffer is transfered to `raw_cell` + // this._rawCell.source = [cell.getText()]; + } + + undo(): void | Promise { + if (!this.editingDelegate.insertCell) { + throw new Error('Notebook Insert Cell not implemented for Undo/Redo'); + } + + this.editingDelegate.insertCell(this.insertIndex, this._cell); + if (this.beforedSelections) { + this.editingDelegate.emitSelections(this.beforedSelections); + } + } + + redo(): void | Promise { + if (!this.editingDelegate.deleteCell) { + throw new Error('Notebook Delete Cell not implemented for Undo/Redo'); + } + + this.editingDelegate.deleteCell(this.insertIndex); + if (this.endSelections) { + this.editingDelegate.emitSelections(this.endSelections); + } + } +} + +export class MoveCellEdit implements IResourceUndoRedoElement { + type: UndoRedoElementType.Resource = UndoRedoElementType.Resource; + label: string = 'Delete Cell'; + + constructor( + public resource: URI, + private fromIndex: number, + private toIndex: number, + private editingDelegate: ITextCellEditingDelegate, + private beforedSelections: number[] | undefined, + private endSelections: number[] | undefined + ) { + } + + undo(): void | Promise { + if (!this.editingDelegate.moveCell) { + throw new Error('Notebook Move Cell not implemented for Undo/Redo'); + } + + this.editingDelegate.moveCell(this.toIndex, this.fromIndex, this.endSelections, this.beforedSelections); + if (this.beforedSelections) { + this.editingDelegate.emitSelections(this.beforedSelections); + } + } + + redo(): void | Promise { + if (!this.editingDelegate.moveCell) { + throw new Error('Notebook Move Cell not implemented for Undo/Redo'); + } + + this.editingDelegate.moveCell(this.fromIndex, this.toIndex, this.beforedSelections, this.endSelections); + if (this.endSelections) { + this.editingDelegate.emitSelections(this.endSelections); + } + } +} + +export class SpliceCellsEdit implements IResourceUndoRedoElement { + type: UndoRedoElementType.Resource = UndoRedoElementType.Resource; + label: string = 'Insert Cell'; + constructor( + public resource: URI, + private diffs: [number, NotebookCellTextModel[], NotebookCellTextModel[]][], + private editingDelegate: ITextCellEditingDelegate, + private beforeHandles: number[] | undefined, + private endHandles: number[] | undefined + ) { + } + + undo(): void | Promise { + if (!this.editingDelegate.deleteCell || !this.editingDelegate.insertCell) { + throw new Error('Notebook Insert/Delete Cell not implemented for Undo/Redo'); + } + + this.diffs.forEach(diff => { + for (let i = 0; i < diff[2].length; i++) { + this.editingDelegate.deleteCell!(diff[0]); + } + + diff[1].reverse().forEach(cell => { + this.editingDelegate.insertCell!(diff[0], cell); + }); + }); + + if (this.beforeHandles) { + this.editingDelegate.emitSelections(this.beforeHandles); + } + } + + redo(): void | Promise { + if (!this.editingDelegate.deleteCell || !this.editingDelegate.insertCell) { + throw new Error('Notebook Insert/Delete Cell not implemented for Undo/Redo'); + } + + this.diffs.reverse().forEach(diff => { + for (let i = 0; i < diff[1].length; i++) { + this.editingDelegate.deleteCell!(diff[0]); + } + + diff[2].reverse().forEach(cell => { + this.editingDelegate.insertCell!(diff[0], cell); + }); + }); + + if (this.endHandles) { + this.editingDelegate.emitSelections(this.endHandles); + } + } +} diff --git a/src/vs/workbench/contrib/notebook/common/model/notebookCellTextModel.ts b/src/vs/workbench/contrib/notebook/common/model/notebookCellTextModel.ts index edc2b86ea4..4a9f342505 100644 --- a/src/vs/workbench/contrib/notebook/common/model/notebookCellTextModel.ts +++ b/src/vs/workbench/contrib/notebook/common/model/notebookCellTextModel.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { Emitter, Event } from 'vs/base/common/event'; -import { ICell, IProcessedOutput, NotebookCellOutputsSplice, CellKind, NotebookCellMetadata } from 'vs/workbench/contrib/notebook/common/notebookCommon'; +import { ICell, IProcessedOutput, NotebookCellOutputsSplice, CellKind, NotebookCellMetadata, NotebookDocumentMetadata } from 'vs/workbench/contrib/notebook/common/notebookCommon'; import { PieceTreeTextBufferBuilder } from 'vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBufferBuilder'; import { URI } from 'vs/base/common/uri'; import * as model from 'vs/editor/common/model'; @@ -69,6 +69,16 @@ export class NotebookCellTextModel extends Disposable implements ICell { return this._textBuffer; } + private _textModel?: model.ITextModel; + + get textModel(): model.ITextModel | undefined { + return this._textModel; + } + + set textModel(m: model.ITextModel | undefined) { + this._textModel = m; + } + constructor( readonly uri: URI, public handle: number, @@ -109,4 +119,24 @@ export class NotebookCellTextModel extends Disposable implements ICell { this._onDidChangeOutputs.fire(splices); } + + getEvaluatedMetadata(documentMetadata: NotebookDocumentMetadata): NotebookCellMetadata { + const editable = this.metadata?.editable ?? + documentMetadata.cellEditable; + + const runnable = this.metadata?.runnable ?? + documentMetadata.cellRunnable; + + const hasExecutionOrder = this.metadata?.hasExecutionOrder ?? + documentMetadata.cellHasExecutionOrder; + + return { + ...(this.metadata || {}), + ...{ + editable, + runnable, + hasExecutionOrder + } + }; + } } diff --git a/src/vs/workbench/contrib/notebook/common/model/notebookTextModel.ts b/src/vs/workbench/contrib/notebook/common/model/notebookTextModel.ts index b029851b88..7bedf791f1 100644 --- a/src/vs/workbench/contrib/notebook/common/model/notebookTextModel.ts +++ b/src/vs/workbench/contrib/notebook/common/model/notebookTextModel.ts @@ -9,6 +9,8 @@ import { URI } from 'vs/base/common/uri'; import { NotebookCellTextModel } from 'vs/workbench/contrib/notebook/common/model/notebookCellTextModel'; import { INotebookTextModel, NotebookCellOutputsSplice, NotebookCellTextModelSplice, NotebookDocumentMetadata, NotebookCellMetadata, ICellEditOperation, CellEditType, CellUri, ICellInsertEdit, NotebookCellsChangedEvent, CellKind, IProcessedOutput, notebookDocumentMetadataDefaults, diff, ICellDeleteEdit, NotebookCellsChangeType, ICellDto2, IMainCellDto } from 'vs/workbench/contrib/notebook/common/notebookCommon'; import { ITextSnapshot } from 'vs/editor/common/model'; +import { IUndoRedoService } from 'vs/platform/undoRedo/common/undoRedo'; +import { InsertCellEdit, DeleteCellEdit, MoveCellEdit, SpliceCellsEdit } from 'vs/workbench/contrib/notebook/common/model/cellEdit'; function compareRangesUsingEnds(a: [number, number], b: [number, number]): number { if (a[1] === b[1]) { @@ -68,15 +70,17 @@ export class NotebookTextModel extends Disposable implements INotebookTextModel private readonly _onWillDispose: Emitter = this._register(new Emitter()); readonly onWillDispose: Event = this._onWillDispose.event; - private readonly _onDidChangeCells = new Emitter(); - get onDidChangeCells(): Event { return this._onDidChangeCells.event; } - private _onDidModelChangeProxy = new Emitter(); + private readonly _onDidChangeCells = this._register(new Emitter<{ synchronous: boolean, splices: NotebookCellTextModelSplice[] }>()); + get onDidChangeCells() { return this._onDidChangeCells.event; } + private readonly _emitSelections = this._register(new Emitter()); + get emitSelections() { return this._emitSelections.event; } + private _onDidModelChangeProxy = this._register(new Emitter()); get onDidModelChangeProxy(): Event { return this._onDidModelChangeProxy.event; } - private _onDidSelectionChangeProxy = new Emitter(); + private _onDidSelectionChangeProxy = this._register(new Emitter()); get onDidSelectionChange(): Event { return this._onDidSelectionChangeProxy.event; } - private _onDidChangeContent = new Emitter(); + private _onDidChangeContent = this._register(new Emitter()); onDidChangeContent: Event = this._onDidChangeContent.event; - private _onDidChangeMetadata = new Emitter(); + private _onDidChangeMetadata = this._register(new Emitter()); onDidChangeMetadata: Event = this._onDidChangeMetadata.event; private _mapping: Map = new Map(); private _cellListeners: Map = new Map(); @@ -110,7 +114,8 @@ export class NotebookTextModel extends Disposable implements INotebookTextModel public handle: number, public viewType: string, public supportBackup: boolean, - public uri: URI + public uri: URI, + private _undoService: IUndoRedoService ) { super(); this.cells = []; @@ -165,7 +170,7 @@ export class NotebookTextModel extends Disposable implements INotebookTextModel this._increaseVersionId(); } - $applyEdit(modelVersionId: number, rawEdits: ICellEditOperation[], emitToExtHost: boolean = true): boolean { + $applyEdit(modelVersionId: number, rawEdits: ICellEditOperation[], emitToExtHost: boolean, synchronous: boolean): boolean { if (modelVersionId !== this._versionId) { return false; } @@ -242,7 +247,19 @@ export class NotebookTextModel extends Disposable implements INotebookTextModel }); } - this._onDidChangeCells.fire(diffs); + const undoDiff = diffs.map(diff => { + const deletedCells = this.cells.slice(diff[0], diff[0] + diff[1]); + + return [diff[0], deletedCells, diff[2]] as [number, NotebookCellTextModel[], NotebookCellTextModel[]]; + }); + + this._undoService.pushElement(new SpliceCellsEdit(this.uri, undoDiff, { + insertCell: this._insertCellDelegate.bind(this), + deleteCell: this._deleteCellDelegate.bind(this), + emitSelections: this._emitSelectionsDelegate.bind(this) + }, undefined, undefined)); + + this._onDidChangeCells.fire({ synchronous: synchronous, splices: diffs }); return true; } @@ -302,7 +319,7 @@ export class NotebookTextModel extends Disposable implements INotebookTextModel }); this._cellListeners.set(cell.handle, dirtyStateListener); - this.setDirty(true); + this.setDirty(false); this._onDidChangeContent.fire(); this._onDidModelChangeProxy.fire({ @@ -446,6 +463,123 @@ export class NotebookTextModel extends Disposable implements INotebookTextModel this._onDidModelChangeProxy.fire({ kind: NotebookCellsChangeType.CellsClearOutput, versionId: this._versionId }); } + //#region Notebook Text Model Edit API + + private _insertCellDelegate(insertIndex: number, insertCell: NotebookCellTextModel) { + this.insertNewCell(insertIndex, [insertCell]); + this._onDidChangeCells.fire({ synchronous: true, splices: [[insertIndex, 0, [insertCell]]] }); + } + + private _deleteCellDelegate(deleteIndex: number) { + this.removeCell(deleteIndex, 1); + this._onDidChangeCells.fire({ synchronous: true, splices: [[deleteIndex, 1, []]] }); + } + + private _emitSelectionsDelegate(selections: number[]) { + this._emitSelections.fire(selections); + } + + createCell2(index: number, source: string | string[], language: string, type: CellKind, metadata: NotebookCellMetadata | undefined, synchronous: boolean, pushUndoStop: boolean, beforeSelections: number[] | undefined, endSelections: number[] | undefined) { + const cell = this.createCellTextModel(source, language, type, [], metadata); + + if (pushUndoStop) { + this._undoService.pushElement(new InsertCellEdit(this.uri, index, cell, { + insertCell: this._insertCellDelegate.bind(this), + deleteCell: this._deleteCellDelegate.bind(this), + emitSelections: this._emitSelectionsDelegate.bind(this) + }, beforeSelections, endSelections)); + } + + + this.insertNewCell(index, [cell]); + + this._onDidChangeCells.fire({ synchronous, splices: [[index, 0, [cell]]] }); + + if (endSelections) { + this._emitSelections.fire(endSelections); + } + return cell; + } + + insertCell2(index: number, cell: NotebookCellTextModel, synchronous: boolean, pushUndoStop: boolean): void { + if (pushUndoStop) { + this._undoService.pushElement(new InsertCellEdit(this.uri, index, cell, { + insertCell: this._insertCellDelegate.bind(this), + deleteCell: this._deleteCellDelegate.bind(this), + emitSelections: this._emitSelectionsDelegate.bind(this) + }, undefined, undefined)); + } + + this.insertNewCell(index, [cell]); + this._onDidChangeCells.fire({ synchronous: synchronous, splices: [[index, 0, [cell]]] }); + } + + deleteCell2(index: number, synchronous: boolean, pushUndoStop: boolean, beforeSelections: number[] | undefined, endSelections: number[] | undefined) { + const cell = this.cells[index]; + if (pushUndoStop) { + this._undoService.pushElement(new DeleteCellEdit(this.uri, index, cell, { + insertCell: this._insertCellDelegate.bind(this), + deleteCell: this._deleteCellDelegate.bind(this), + emitSelections: this._emitSelectionsDelegate.bind(this) + }, beforeSelections, endSelections)); + } + + this.removeCell(index, 1); + this._onDidChangeCells.fire({ synchronous: synchronous, splices: [[index, 1, []]] }); + if (endSelections) { + this._emitSelections.fire(endSelections); + } + } + + moveCellToIdx2(index: number, newIdx: number, synchronous: boolean, pushedToUndoStack: boolean, beforeSelections: number[] | undefined, endSelections: number[] | undefined): boolean { + const cell = this.cells[index]; + if (pushedToUndoStack) { + this._undoService.pushElement(new MoveCellEdit(this.uri, index, newIdx, { + moveCell: (fromIndex: number, toIndex: number, beforeSelections: number[] | undefined, endSelections: number[] | undefined) => { + this.moveCellToIdx2(fromIndex, toIndex, true, false, beforeSelections, endSelections); + }, + emitSelections: this._emitSelectionsDelegate.bind(this) + }, beforeSelections, endSelections)); + } + + this.moveCellToIdx(index, newIdx); + // todo, we can't emit this change as it will create a new view model and that will hold + // a new reference to the document, thus + this._onDidChangeCells.fire({ synchronous: synchronous, splices: [[index, 1, []]] }); + this._onDidChangeCells.fire({ synchronous: synchronous, splices: [[newIdx, 0, [cell]]] }); + if (endSelections) { + this._emitSelections.fire(endSelections); + } + + return true; + } + + async splitNotebookCell(index: number, newLinesContents: string[], endSelections: number[]) { + const cell = this.cells[index]; + + if (!cell.textModel) { + return; + } + + cell.textModel.applyEdits([ + { range: cell.textModel.getFullModelRange(), text: newLinesContents[0] } + ], false); + + // create new cells based on the new text models + const language = cell.language; + const kind = cell.cellKind; + let insertIndex = index + 1; + const newCells = []; + for (let j = 1; j < newLinesContents.length; j++, insertIndex++) { + newCells.push(this.createCell2(insertIndex, newLinesContents[j], language, kind, undefined, true, false, undefined, undefined)); + } + + if (endSelections) { + this._emitSelections.fire(endSelections); + } + } + //#endregion + dispose() { this._onWillDispose.fire(); this._cellListeners.forEach(val => val.dispose()); diff --git a/src/vs/workbench/contrib/notebook/common/notebookCommon.ts b/src/vs/workbench/contrib/notebook/common/notebookCommon.ts index 624c399057..e5eec7008b 100644 --- a/src/vs/workbench/contrib/notebook/common/notebookCommon.ts +++ b/src/vs/workbench/contrib/notebook/common/notebookCommon.ts @@ -70,7 +70,7 @@ export interface NotebookDocumentMetadata { cellRunnable: boolean; cellHasExecutionOrder: boolean; displayOrder?: GlobPattern[]; - custom?: { [key: string]: any }; + custom?: { [key: string]: unknown }; } export enum NotebookCellRunState { @@ -90,7 +90,7 @@ export interface NotebookCellMetadata { runState?: NotebookCellRunState; runStartTime?: number; lastRunDuration?: number; - custom?: { [key: string]: any }; + custom?: { [key: string]: unknown }; } export interface INotebookDisplayOrder { @@ -157,7 +157,7 @@ export interface NotebookCellOutputMetadata { /** * Additional attributes of a cell metadata. */ - custom?: { [key: string]: any }; + custom?: { [key: string]: unknown }; } export interface IDisplayOutput { @@ -165,7 +165,7 @@ export interface IDisplayOutput { /** * { mime_type: value } */ - data: { [key: string]: any; } + data: { [key: string]: unknown; } metadata?: NotebookCellOutputMetadata; } @@ -186,7 +186,7 @@ export interface IOrderedMimeType { export interface ITransformedDisplayOutputDto { outputKind: CellOutputKind.Rich; outputId: string; - data: { [key: string]: any; } + data: { [key: string]: unknown; } metadata?: NotebookCellOutputMetadata; orderedMimeTypes?: IOrderedMimeType[]; @@ -269,7 +269,7 @@ export interface INotebookTextModel { languages: string[]; cells: ICell[]; renderers: Set; - onDidChangeCells?: Event; + onDidChangeCells?: Event<{ synchronous: boolean, splices: NotebookCellTextModelSplice[] }>; onDidChangeContent: Event; onWillDispose(listener: () => void): IDisposable; } diff --git a/src/vs/workbench/contrib/notebook/common/notebookService.ts b/src/vs/workbench/contrib/notebook/common/notebookService.ts index fc6157b726..4ae97585b1 100644 --- a/src/vs/workbench/contrib/notebook/common/notebookService.ts +++ b/src/vs/workbench/contrib/notebook/common/notebookService.ts @@ -21,7 +21,7 @@ export interface IMainNotebookController { createNotebook(viewType: string, uri: URI, backup: INotebookTextModelBackup | undefined, forceReload: boolean, editorId?: string, backupId?: string): Promise; resolveNotebookEditor(viewType: string, uri: URI, editorId: string): Promise; executeNotebook(viewType: string, uri: URI, useAttachedKernel: boolean, token: CancellationToken): Promise; - onDidReceiveMessage(editorId: string, message: any): void; + onDidReceiveMessage(editorId: string, rendererType: string | undefined, message: any): void; executeNotebookCell(uri: URI, handle: number, useAttachedKernel: boolean, token: CancellationToken): Promise; removeNotebookDocument(notebook: INotebookTextModel): Promise; save(uri: URI, token: CancellationToken): Promise; @@ -65,13 +65,14 @@ export interface INotebookService { save(viewType: string, resource: URI, token: CancellationToken): Promise; saveAs(viewType: string, resource: URI, target: URI, token: CancellationToken): Promise; backup(viewType: string, uri: URI, token: CancellationToken): Promise; - onDidReceiveMessage(viewType: string, editorId: string, message: any): void; + onDidReceiveMessage(viewType: string, editorId: string, rendererType: string | undefined, message: unknown): void; setToCopy(items: NotebookCellTextModel[]): void; getToCopy(): NotebookCellTextModel[] | undefined; // editor events addNotebookEditor(editor: IEditor): void; removeNotebookEditor(editor: IEditor): void; + getNotebookEditor(editorId: string): IEditor | undefined; listNotebookEditors(): readonly IEditor[]; listVisibleNotebookEditors(): readonly IEditor[]; listNotebookDocuments(): readonly NotebookTextModel[]; diff --git a/src/vs/workbench/contrib/notebook/electron-browser/notebook.contribution.ts b/src/vs/workbench/contrib/notebook/electron-browser/notebook.contribution.ts index 5fa014bb6f..78e68f3fbc 100644 --- a/src/vs/workbench/contrib/notebook/electron-browser/notebook.contribution.ts +++ b/src/vs/workbench/contrib/notebook/electron-browser/notebook.contribution.ts @@ -4,40 +4,56 @@ *--------------------------------------------------------------------------------------------*/ import { isMacintosh } from 'vs/base/common/platform'; -import { registerAction2 } from 'vs/platform/actions/common/actions'; -import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; -import * as webviewCommands from 'vs/workbench/contrib/webview/electron-browser/webviewCommands'; -import { NotebookEditor } from 'vs/workbench/contrib/notebook/browser/notebookEditor'; +import { CopyAction, CutAction, PasteAction } from 'vs/editor/contrib/clipboard/clipboard'; import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; +import { getActiveNotebookEditor } from 'vs/workbench/contrib/notebook/browser/contrib/coreActions'; import { ElectronWebviewBasedWebview } from 'vs/workbench/contrib/webview/electron-browser/webviewElement'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; -import { getActiveNotebookEditor } from 'vs/workbench/contrib/notebook/browser/contrib/coreActions'; - -function getActiveElectronBasedWebviewDelegate(accessor: ServicesAccessor): ElectronWebviewBasedWebview | undefined { +import { UndoCommand, RedoCommand } from 'vs/editor/browser/editorExtensions'; +function getFocusedElectronBasedWebviewDelegate(accessor: ServicesAccessor): ElectronWebviewBasedWebview | undefined { const editorService = accessor.get(IEditorService); const editor = getActiveNotebookEditor(editorService); + if (!editor?.hasFocus()) { + return undefined; // {{SQL CARBON EDIT}} struct-null-checks + } const webview = editor?.getInnerWebview(); - if (webview && webview instanceof ElectronWebviewBasedWebview) { return webview; } - return undefined; // {{SQL CARBON EDIT}} struct-null-checks } -function registerNotebookCommands(editorId: string): void { - const contextKeyExpr = ContextKeyExpr.and(ContextKeyExpr.equals('activeEditor', editorId), ContextKeyExpr.not('editorFocus') /* https://github.com/Microsoft/vscode/issues/58668 */)!; - - // These commands are only needed on MacOS where we have to disable the menu bar commands - if (isMacintosh) { - registerAction2(class extends webviewCommands.CopyWebviewEditorCommand { constructor() { super(contextKeyExpr, getActiveElectronBasedWebviewDelegate); } }); - registerAction2(class extends webviewCommands.PasteWebviewEditorCommand { constructor() { super(contextKeyExpr, getActiveElectronBasedWebviewDelegate); } }); - registerAction2(class extends webviewCommands.CutWebviewEditorCommand { constructor() { super(contextKeyExpr, getActiveElectronBasedWebviewDelegate); } }); - registerAction2(class extends webviewCommands.UndoWebviewEditorCommand { constructor() { super(contextKeyExpr, getActiveElectronBasedWebviewDelegate); } }); - registerAction2(class extends webviewCommands.RedoWebviewEditorCommand { constructor() { super(contextKeyExpr, getActiveElectronBasedWebviewDelegate); } }); +if (isMacintosh) { + function withWebview(accessor: ServicesAccessor, f: (webviewe: ElectronWebviewBasedWebview) => void) { + const webview = getFocusedElectronBasedWebviewDelegate(accessor); + if (webview) { + f(webview); + return true; + } + return false; } -} -registerNotebookCommands(NotebookEditor.ID); + const PRIORITY = 100; + + UndoCommand.addImplementation(PRIORITY, accessor => { + return withWebview(accessor, webview => webview.undo()); + }); + + RedoCommand.addImplementation(PRIORITY, accessor => { + return withWebview(accessor, webview => webview.redo()); + }); + + CopyAction?.addImplementation(PRIORITY, accessor => { + return withWebview(accessor, webview => webview.copy()); + }); + + PasteAction?.addImplementation(PRIORITY, accessor => { + return withWebview(accessor, webview => webview.paste()); + }); + + CutAction?.addImplementation(PRIORITY, accessor => { + return withWebview(accessor, webview => webview.cut()); + }); +} diff --git a/src/vs/workbench/contrib/notebook/test/notebookTextModel.test.ts b/src/vs/workbench/contrib/notebook/test/notebookTextModel.test.ts index f21fc4a5e9..ff01699346 100644 --- a/src/vs/workbench/contrib/notebook/test/notebookTextModel.test.ts +++ b/src/vs/workbench/contrib/notebook/test/notebookTextModel.test.ts @@ -31,7 +31,7 @@ suite('NotebookTextModel', () => { textModel.$applyEdit(textModel.versionId, [ { editType: CellEditType.Insert, index: 1, cells: [new TestCell(viewModel.viewType, 5, ['var e = 5;'], 'javascript', CellKind.Code, [])] }, { editType: CellEditType.Insert, index: 3, cells: [new TestCell(viewModel.viewType, 6, ['var f = 6;'], 'javascript', CellKind.Code, [])] }, - ]); + ], true, true); assert.equal(textModel.cells.length, 6); @@ -56,7 +56,7 @@ suite('NotebookTextModel', () => { textModel.$applyEdit(textModel.versionId, [ { editType: CellEditType.Insert, index: 1, cells: [new TestCell(viewModel.viewType, 5, ['var e = 5;'], 'javascript', CellKind.Code, [])] }, { editType: CellEditType.Insert, index: 1, cells: [new TestCell(viewModel.viewType, 6, ['var f = 6;'], 'javascript', CellKind.Code, [])] }, - ]); + ], true, true); assert.equal(textModel.cells.length, 6); @@ -81,7 +81,7 @@ suite('NotebookTextModel', () => { textModel.$applyEdit(textModel.versionId, [ { editType: CellEditType.Delete, index: 1, count: 1 }, { editType: CellEditType.Delete, index: 3, count: 1 }, - ]); + ], true, true); assert.equal(textModel.cells[0].getValue(), 'var a = 1;'); assert.equal(textModel.cells[1].getValue(), 'var c = 3;'); @@ -104,7 +104,7 @@ suite('NotebookTextModel', () => { textModel.$applyEdit(textModel.versionId, [ { editType: CellEditType.Delete, index: 1, count: 1 }, { editType: CellEditType.Insert, index: 3, cells: [new TestCell(viewModel.viewType, 5, ['var e = 5;'], 'javascript', CellKind.Code, [])] }, - ]); + ], true, true); assert.equal(textModel.cells.length, 4); @@ -129,7 +129,7 @@ suite('NotebookTextModel', () => { textModel.$applyEdit(textModel.versionId, [ { editType: CellEditType.Delete, index: 1, count: 1 }, { editType: CellEditType.Insert, index: 1, cells: [new TestCell(viewModel.viewType, 5, ['var e = 5;'], 'javascript', CellKind.Code, [])] }, - ]); + ], true, true); assert.equal(textModel.cells.length, 4); assert.equal(textModel.cells[0].getValue(), 'var a = 1;'); diff --git a/src/vs/workbench/contrib/notebook/test/notebookViewModel.test.ts b/src/vs/workbench/contrib/notebook/test/notebookViewModel.test.ts index f27c81928d..c4bfdb2bb7 100644 --- a/src/vs/workbench/contrib/notebook/test/notebookViewModel.test.ts +++ b/src/vs/workbench/contrib/notebook/test/notebookViewModel.test.ts @@ -23,7 +23,7 @@ suite('NotebookViewModel', () => { instantiationService.spy(IUndoRedoService, 'pushElement'); test('ctor', function () { - const notebook = new NotebookTextModel(0, 'notebook', false, URI.parse('test')); + const notebook = new NotebookTextModel(0, 'notebook', false, URI.parse('test'), undoRedoService); const model = new NotebookEditorTestModel(notebook); const eventDispatcher = new NotebookEventDispatcher(); const viewModel = new NotebookViewModel('notebook', model.notebook, eventDispatcher, null, instantiationService, blukEditService, undoRedoService); @@ -232,14 +232,14 @@ suite('NotebookViewModel', () => { }); }); -function getVisibleCells(cells: any[], hiddenRanges: ICellRange[]) { +function getVisibleCells(cells: T[], hiddenRanges: ICellRange[]) { if (!hiddenRanges.length) { return cells; } let start = 0; let hiddenRangeIndex = 0; - let result: any[] = []; + let result: T[] = []; while (start < cells.length && hiddenRangeIndex < hiddenRanges.length) { if (start < hiddenRanges[hiddenRangeIndex].start) { @@ -380,10 +380,10 @@ suite('NotebookViewModel Decorations', () => { }); test('diff hidden ranges', function () { - assert.deepEqual(getVisibleCells([1, 2, 3, 4, 5], []), [1, 2, 3, 4, 5]); + assert.deepEqual(getVisibleCells([1, 2, 3, 4, 5], []), [1, 2, 3, 4, 5]); assert.deepEqual( - getVisibleCells( + getVisibleCells( [1, 2, 3, 4, 5], [{ start: 1, end: 2 }] ), @@ -391,7 +391,7 @@ suite('NotebookViewModel Decorations', () => { ); assert.deepEqual( - getVisibleCells( + getVisibleCells( [1, 2, 3, 4, 5, 6, 7, 8, 9], [ { start: 1, end: 2 }, @@ -401,7 +401,7 @@ suite('NotebookViewModel Decorations', () => { [1, 4, 7, 8, 9] ); - const original = getVisibleCells( + const original = getVisibleCells( [1, 2, 3, 4, 5, 6, 7, 8, 9], [ { start: 1, end: 2 }, @@ -409,7 +409,7 @@ suite('NotebookViewModel Decorations', () => { ] ); - const modified = getVisibleCells( + const modified = getVisibleCells( [1, 2, 3, 4, 5, 6, 7, 8, 9], [ { start: 2, end: 4 } diff --git a/src/vs/workbench/contrib/notebook/test/testNotebookEditor.ts b/src/vs/workbench/contrib/notebook/test/testNotebookEditor.ts index e9072d5e23..f9c99b4d4f 100644 --- a/src/vs/workbench/contrib/notebook/test/testNotebookEditor.ts +++ b/src/vs/workbench/contrib/notebook/test/testNotebookEditor.ts @@ -52,6 +52,9 @@ export class TestNotebookEditor implements INotebookEditor { constructor( ) { } + uri?: URI | undefined; + textModel?: NotebookTextModel | undefined; + hasModel(): boolean { return true; } @@ -110,7 +113,19 @@ export class TestNotebookEditor implements INotebookEditor { isNotebookEditor = true; - postMessage(message: any): void { + postMessage(): void { + throw new Error('Method not implemented.'); + } + + toggleClassName(className: string): void { + throw new Error('Method not implemented.'); + } + + addClassName(className: string): void { + throw new Error('Method not implemented.'); + } + + removeClassName(className: string): void { throw new Error('Method not implemented.'); } @@ -122,15 +137,15 @@ export class TestNotebookEditor implements INotebookEditor { throw new Error('Method not implemented.'); } - moveCellDown(cell: CellViewModel): Promise { + moveCellDown(cell: CellViewModel): Promise { throw new Error('Method not implemented.'); } - moveCellUp(cell: CellViewModel): Promise { + moveCellUp(cell: CellViewModel): Promise { throw new Error('Method not implemented.'); } - moveCell(cell: ICellViewModel, relativeToCell: ICellViewModel, direction: 'above' | 'below'): Promise { + moveCell(cell: ICellViewModel, relativeToCell: ICellViewModel, direction: 'above' | 'below'): Promise { throw new Error('Method not implemented.'); } @@ -202,8 +217,8 @@ export class TestNotebookEditor implements INotebookEditor { // throw new Error('Method not implemented.'); return; } - createInset(cell: CellViewModel, output: IProcessedOutput, shadowContent: string, offset: number): void { - // throw new Error('Method not implemented.'); + createInset(cell: CellViewModel, output: IProcessedOutput, shadowContent: string, offset: number): Promise { + return Promise.resolve(); } removeInset(output: IProcessedOutput): void { // throw new Error('Method not implemented.'); @@ -220,7 +235,7 @@ export class TestNotebookEditor implements INotebookEditor { throw new Error('Method not implemented.'); } - changeDecorations(callback: (changeAccessor: IModelDecorationsChangeAccessor) => any): any { + changeDecorations(callback: (changeAccessor: IModelDecorationsChangeAccessor) => T): T | null { throw new Error('Method not implemented.'); } @@ -305,7 +320,7 @@ export class NotebookEditorTestModel extends EditorModel implements INotebookEdi export function withTestNotebook(instantiationService: IInstantiationService, blukEditService: IBulkEditService, undoRedoService: IUndoRedoService, cells: [string[], string, CellKind, IProcessedOutput[], NotebookCellMetadata][], callback: (editor: TestNotebookEditor, viewModel: NotebookViewModel, textModel: NotebookTextModel) => void) { const viewType = 'notebook'; const editor = new TestNotebookEditor(); - const notebook = new NotebookTextModel(0, viewType, false, URI.parse('test')); + const notebook = new NotebookTextModel(0, viewType, false, URI.parse('test'), undoRedoService); notebook.cells = cells.map((cell, index) => { return new NotebookCellTextModel(notebook.uri, index, cell[0], cell[1], cell[2], cell[3], cell[4]); }); diff --git a/src/vs/workbench/contrib/output/browser/output.contribution.ts b/src/vs/workbench/contrib/output/browser/output.contribution.ts index f3436e3749..ad42145577 100644 --- a/src/vs/workbench/contrib/output/browser/output.contribution.ts +++ b/src/vs/workbench/contrib/output/browser/output.contribution.ts @@ -243,7 +243,7 @@ registerAction2(class extends Action2 { } }); -const devCategory = { value: nls.localize('developer', "Developer"), original: 'Developer' }; +const devCategory = { value: nls.localize({ key: 'developer', comment: ['A developer on Code itself or someone diagnosing issues in Code'] }, "Developer"), original: 'Developer' }; registerAction2(class extends Action2 { constructor() { super({ diff --git a/src/vs/workbench/contrib/performance/electron-browser/performance.contribution.ts b/src/vs/workbench/contrib/performance/electron-browser/performance.contribution.ts index f1f20e8063..535f48784f 100644 --- a/src/vs/workbench/contrib/performance/electron-browser/performance.contribution.ts +++ b/src/vs/workbench/contrib/performance/electron-browser/performance.contribution.ts @@ -46,7 +46,7 @@ CommandsRegistry.registerCommand('perfview.show', accessor => { MenuRegistry.addCommand({ id: 'perfview.show', - category: localize('show.cat', "Developer"), + category: localize({ key: 'show.cat', comment: ['A developer on Code itself or someone diagnosing issues in Code'] }, "Developer"), title: localize('show.label', "Startup Performance") }); diff --git a/src/vs/workbench/contrib/preferences/browser/media/settingsEditor2.css b/src/vs/workbench/contrib/preferences/browser/media/settingsEditor2.css index 5e67ad0994..8e7b8afa21 100644 --- a/src/vs/workbench/contrib/preferences/browser/media/settingsEditor2.css +++ b/src/vs/workbench/contrib/preferences/browser/media/settingsEditor2.css @@ -42,7 +42,8 @@ .settings-editor > .settings-header > .search-container > .settings-count-widget { position: absolute; right: 35px; - top: 6px; + top: 0px; + margin: 6px 0px; } .settings-editor > .settings-header > .search-container > .settings-count-widget:empty { diff --git a/src/vs/workbench/contrib/preferences/browser/media/settingsWidgets.css b/src/vs/workbench/contrib/preferences/browser/media/settingsWidgets.css index d6cdcadc0e..368378574c 100644 --- a/src/vs/workbench/contrib/preferences/browser/media/settingsWidgets.css +++ b/src/vs/workbench/contrib/preferences/browser/media/settingsWidgets.css @@ -28,13 +28,17 @@ .settings-editor > .settings-body > .settings-tree-container .setting-item.setting-item-list .setting-list-sibling { max-width: 10%; } -.settings-editor > .settings-body > .settings-tree-container .setting-item.setting-item-list .setting-list-object-widget .setting-list-object-key { +.settings-editor > .settings-body > .settings-tree-container .setting-item.setting-item-list .setting-list-object-widget .setting-list-object-key, +.settings-editor > .settings-body > .settings-tree-container .setting-item.setting-item-list .setting-list-object-widget .setting-list-object-input-key { margin-left: 4px; - flex: 2; min-width: 40%; } +.settings-editor > .settings-body > .settings-tree-container .setting-item.setting-item-list .setting-list-object-widget .setting-list-object-input-key { + margin-left: 0; +} +.settings-editor > .settings-body > .settings-tree-container .setting-item.setting-item-list .setting-list-object-widget .setting-list-object-input-value, .settings-editor > .settings-body > .settings-tree-container .setting-item.setting-item-list .setting-list-object-widget .setting-list-object-value { - flex: 3; + width: 100%; } .settings-editor > .settings-body > .settings-tree-container .setting-item.setting-item-list .setting-list-object-widget .setting-list-row:hover .setting-list-object-value, .settings-editor > .settings-body > .settings-tree-container .setting-item.setting-item-list .setting-list-object-widget .setting-list-row:focus .setting-list-object-value, @@ -139,17 +143,17 @@ .settings-editor > .settings-body > .settings-tree-container .setting-item.setting-item-list .setting-list-object-widget .setting-list-object-input { height: 24px; max-width: 320px; - flex: 3; margin-right: 4px; } - -.settings-editor > .settings-body > .settings-tree-container .setting-item.setting-item-list .setting-list-object-widget .setting-list-object-input-key { - flex: 2; - min-width: 40%; +.settings-editor > .settings-body > .settings-tree-container .setting-item.setting-item-list .setting-list-object-widget .setting-list-object-input { + max-width: unset; +} +.settings-editor > .settings-body > .settings-tree-container .setting-item.setting-item-list .setting-list-object-widget .setting-list-object-value-container .setting-list-object-input { + margin-right: 0; } -.settings-editor > .settings-body > .settings-tree-container .setting-item.setting-item-list .setting-list-okButton { - margin-right: 4px; +.settings-editor > .settings-body > .settings-tree-container .setting-item.setting-item-list .setting-list-ok-button { + margin: 0 4px; } .settings-editor > .settings-body > .settings-tree-container .setting-item.setting-item-list .setting-list-widget, @@ -159,6 +163,7 @@ padding: 1px; } +.settings-editor > .settings-body > .settings-tree-container .setting-item.setting-item-list .setting-list-object-widget .setting-list-object-value-container, .settings-editor > .settings-body > .settings-tree-container .setting-item.setting-item-list .setting-list-object-widget .setting-list-object-input select { width: 100%; height: 24px; diff --git a/src/vs/workbench/contrib/preferences/browser/preferences.contribution.ts b/src/vs/workbench/contrib/preferences/browser/preferences.contribution.ts index 002d975011..5e766fa0e7 100644 --- a/src/vs/workbench/contrib/preferences/browser/preferences.contribution.ts +++ b/src/vs/workbench/contrib/preferences/browser/preferences.contribution.ts @@ -93,8 +93,8 @@ Registry.as(EditorExtensions.Editors).registerEditor( // Register Preferences Editor Input Factory class PreferencesEditorInputFactory extends AbstractSideBySideEditorInputFactory { - protected createEditorInput(name: string, description: string | undefined, detailsInput: EditorInput, masterInput: EditorInput): EditorInput { - return new PreferencesEditorInput(name, description, detailsInput, masterInput); + protected createEditorInput(name: string, description: string | undefined, secondaryInput: EditorInput, primaryInput: EditorInput): EditorInput { + return new PreferencesEditorInput(name, description, secondaryInput, primaryInput); } } diff --git a/src/vs/workbench/contrib/preferences/browser/preferencesEditor.ts b/src/vs/workbench/contrib/preferences/browser/preferencesEditor.ts index e0ad99502e..42b44a0243 100644 --- a/src/vs/workbench/contrib/preferences/browser/preferencesEditor.ts +++ b/src/vs/workbench/contrib/preferences/browser/preferencesEditor.ts @@ -206,7 +206,7 @@ export class PreferencesEditor extends BaseEditor { } private updateInput(newInput: PreferencesEditorInput, options: EditorOptions | undefined, token: CancellationToken): Promise { - return this.sideBySidePreferencesWidget.setInput(newInput.details, newInput.master, options, token).then(({ defaultPreferencesRenderer, editablePreferencesRenderer }) => { + return this.sideBySidePreferencesWidget.setInput(newInput.secondary, newInput.primary, options, token).then(({ defaultPreferencesRenderer, editablePreferencesRenderer }) => { if (token.isCancellationRequested) { return; } diff --git a/src/vs/workbench/contrib/preferences/browser/preferencesRenderers.ts b/src/vs/workbench/contrib/preferences/browser/preferencesRenderers.ts index 10d73a8f20..213d5a6935 100644 --- a/src/vs/workbench/contrib/preferences/browser/preferencesRenderers.ts +++ b/src/vs/workbench/contrib/preferences/browser/preferencesRenderers.ts @@ -651,7 +651,7 @@ class EditSettingRenderer extends Disposable { private readonly _onUpdateSetting: Emitter<{ key: string, value: any, source: IIndexedSetting }> = new Emitter<{ key: string, value: any, source: IIndexedSetting }>(); readonly onUpdateSetting: Event<{ key: string, value: any, source: IIndexedSetting }> = this._onUpdateSetting.event; - constructor(private editor: ICodeEditor, private masterSettingsModel: ISettingsEditorModel, + constructor(private editor: ICodeEditor, private primarySettingsModel: ISettingsEditorModel, private settingHighlighter: SettingHighlighter, @IInstantiationService private readonly instantiationService: IInstantiationService, @IContextMenuService private readonly contextMenuService: IContextMenuService @@ -683,7 +683,7 @@ class EditSettingRenderer extends Disposable { } private isDefaultSettings(): boolean { - return this.masterSettingsModel instanceof DefaultSettingsEditorModel; + return this.primarySettingsModel instanceof DefaultSettingsEditorModel; } private onConfigurationChanged(): void { @@ -769,7 +769,7 @@ class EditSettingRenderer extends Disposable { return true; } if (configurationNode.type === 'boolean' || configurationNode.enum) { - if ((this.masterSettingsModel).configurationTarget !== ConfigurationTarget.WORKSPACE_FOLDER) { + if ((this.primarySettingsModel).configurationTarget !== ConfigurationTarget.WORKSPACE_FOLDER) { return true; } if (configurationNode.scope === ConfigurationScope.RESOURCE || configurationNode.scope === ConfigurationScope.LANGUAGE_OVERRIDABLE) { diff --git a/src/vs/workbench/contrib/preferences/browser/settingsEditor2.ts b/src/vs/workbench/contrib/preferences/browser/settingsEditor2.ts index fa531b7f30..f4467f6ff9 100644 --- a/src/vs/workbench/contrib/preferences/browser/settingsEditor2.ts +++ b/src/vs/workbench/contrib/preferences/browser/settingsEditor2.ts @@ -50,7 +50,7 @@ import { ISettingsEditorViewState, parseQuery, SearchResultIdx, SearchResultMode import { settingsTextInputBorder } from 'vs/workbench/contrib/preferences/browser/settingsWidgets'; import { createTOCIterator, TOCTree, TOCTreeModel } from 'vs/workbench/contrib/preferences/browser/tocTree'; import { CONTEXT_SETTINGS_EDITOR, CONTEXT_SETTINGS_SEARCH_FOCUS, CONTEXT_TOC_ROW_FOCUS, EXTENSION_SETTING_TAG, IPreferencesSearchService, ISearchProvider, MODIFIED_SETTING_TAG, SETTINGS_EDITOR_COMMAND_SHOW_CONTEXT_MENU, SETTINGS_EDITOR_COMMAND_CLEAR_SEARCH_RESULTS } from 'vs/workbench/contrib/preferences/common/preferences'; -import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService'; +import { IEditorGroupsService, IEditorGroup } from 'vs/workbench/services/editor/common/editorGroupsService'; import { IPreferencesService, ISearchResult, ISettingsEditorModel, ISettingsEditorOptions, SettingsEditorOptions, SettingValueType } from 'vs/workbench/services/preferences/common/preferences'; import { SettingsEditor2Input } from 'vs/workbench/services/preferences/common/preferencesEditorInput'; import { Settings2EditorModel } from 'vs/workbench/services/preferences/common/preferencesModels'; @@ -346,8 +346,12 @@ export class SettingsEditor2 extends BaseEditor { this.focusSearch(); } - onDidHide(): void { - this.searchWidget.onHide(); + protected setEditorVisible(visible: boolean, group: IEditorGroup | undefined): void { + super.setEditorVisible(visible, group); + + if (!visible) { + this.searchWidget.onHide(); + } } focusSettings(): void { diff --git a/src/vs/workbench/contrib/preferences/browser/settingsTree.ts b/src/vs/workbench/contrib/preferences/browser/settingsTree.ts index f75efce0f4..116ed0f242 100644 --- a/src/vs/workbench/contrib/preferences/browser/settingsTree.ts +++ b/src/vs/workbench/contrib/preferences/browser/settingsTree.ts @@ -28,7 +28,6 @@ import { Emitter, Event } from 'vs/base/common/event'; import { KeyCode } from 'vs/base/common/keyCodes'; import { Disposable, DisposableStore, dispose } from 'vs/base/common/lifecycle'; import { isIOS } from 'vs/base/common/platform'; -import { ISpliceable } from 'vs/base/common/sequence'; import { escapeRegExpCharacters, startsWith } from 'vs/base/common/strings'; import { isArray, isDefined, isUndefinedOrNull } from 'vs/base/common/types'; import { localize } from 'vs/nls'; @@ -45,7 +44,7 @@ import { ICssStyleCollector, IColorTheme, IThemeService, registerThemingParticip import { getIgnoredSettings } from 'vs/platform/userDataSync/common/settingsMerge'; import { ITOCEntry } from 'vs/workbench/contrib/preferences/browser/settingsLayout'; import { ISettingsEditorViewState, settingKeyToDisplayFormat, SettingsTreeElement, SettingsTreeGroupChild, SettingsTreeGroupElement, SettingsTreeNewExtensionsElement, SettingsTreeSettingElement } from 'vs/workbench/contrib/preferences/browser/settingsTreeModels'; -import { ExcludeSettingWidget, ISettingListChangeEvent, IListDataItem, ListSettingWidget, settingsHeaderForeground, settingsNumberInputBackground, settingsNumberInputBorder, settingsNumberInputForeground, settingsSelectBackground, settingsSelectBorder, settingsSelectForeground, settingsSelectListBorder, settingsTextInputBackground, settingsTextInputBorder, settingsTextInputForeground, ObjectSettingWidget, IObjectDataItem, IObjectEnumOption } from 'vs/workbench/contrib/preferences/browser/settingsWidgets'; +import { ExcludeSettingWidget, ISettingListChangeEvent, IListDataItem, ListSettingWidget, settingsHeaderForeground, settingsNumberInputBackground, settingsNumberInputBorder, settingsNumberInputForeground, settingsSelectBackground, settingsSelectBorder, settingsSelectForeground, settingsSelectListBorder, settingsTextInputBackground, settingsTextInputBorder, settingsTextInputForeground, ObjectSettingWidget, IObjectDataItem, IObjectEnumOption, ObjectValue, IObjectValueSuggester, IObjectKeySuggester } from 'vs/workbench/contrib/preferences/browser/settingsWidgets'; import { SETTINGS_EDITOR_COMMAND_SHOW_CONTEXT_MENU } from 'vs/workbench/contrib/preferences/common/preferences'; import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; import { ISetting, ISettingsGroup, SettingValueType } from 'vs/workbench/services/preferences/common/preferences'; @@ -54,6 +53,7 @@ import { getInvalidTypeError } from 'vs/workbench/services/preferences/common/pr import { Codicon } from 'vs/base/common/codicons'; import { CodiconLabel } from 'vs/base/browser/ui/codicons/codiconLabel'; import { IJSONSchema } from 'vs/base/common/jsonSchema'; +import { IList } from 'vs/base/browser/ui/tree/indexTreeModel'; const $ = DOM.$; @@ -94,6 +94,16 @@ function getEnumOptionsFromSchema(schema: IJSONSchema): IObjectEnumOption[] { }); } +function getObjectValueType(schema: IJSONSchema): ObjectValue['type'] { + if (schema.type === 'boolean') { + return 'boolean'; + } else if (schema.type === 'string' && isDefined(schema.enum) && schema.enum.length > 0) { + return 'enum'; + } else { + return 'string'; + } +} + function getObjectDisplayValue(element: SettingsTreeSettingElement): IObjectDataItem[] { const data = element.isConfigured ? { ...element.defaultValue, ...element.scopeValue } : @@ -129,7 +139,7 @@ function getObjectDisplayValue(element: SettingsTreeSettingElement): IObjectData options: wellDefinedKeyEnumOptions, }, value: { - type: valueEnumOptions.length > 0 ? 'enum' : 'string', + type: getObjectValueType(objectProperties[key]), data: data[key], options: valueEnumOptions, }, @@ -144,7 +154,7 @@ function getObjectDisplayValue(element: SettingsTreeSettingElement): IObjectData return { key: { type: 'string', data: key }, value: { - type: valueEnumOptions.length > 0 ? 'enum' : 'string', + type: getObjectValueType(schema), data: data[key], options: valueEnumOptions, }, @@ -155,7 +165,7 @@ function getObjectDisplayValue(element: SettingsTreeSettingElement): IObjectData return { key: { type: 'string', data: key }, value: { - type: additionalValueEnums.length > 0 ? 'enum' : 'string', + type: typeof objectAdditionalProperties === 'object' ? getObjectValueType(objectAdditionalProperties) : 'string', data: data[key], options: additionalValueEnums, }, @@ -164,6 +174,68 @@ function getObjectDisplayValue(element: SettingsTreeSettingElement): IObjectData }); } +function createObjectKeySuggester(element: SettingsTreeSettingElement): IObjectKeySuggester { + const { objectProperties } = element.setting; + const allStaticKeys = Object.keys(objectProperties ?? {}); + + return keys => { + const existingKeys = new Set(keys); + const enumOptions: IObjectEnumOption[] = []; + + allStaticKeys.forEach(staticKey => { + if (!existingKeys.has(staticKey)) { + enumOptions.push({ value: staticKey, description: objectProperties![staticKey].description }); + } + }); + + return enumOptions.length > 0 + ? { type: 'enum', data: enumOptions[0].value, options: enumOptions } + : undefined; + }; +} + +function createObjectValueSuggester(element: SettingsTreeSettingElement): IObjectValueSuggester { + const { objectProperties, objectPatternProperties, objectAdditionalProperties } = element.setting; + + const patternsAndSchemas = Object + .entries(objectPatternProperties ?? {}) + .map(([pattern, schema]) => ({ + pattern: new RegExp(pattern), + schema + })); + + return (key: string) => { + let suggestedSchema: IJSONSchema | undefined; + + if (isDefined(objectProperties) && key in objectProperties) { + suggestedSchema = objectProperties[key]; + } + + const patternSchema = suggestedSchema ?? patternsAndSchemas.find(({ pattern }) => pattern.test(key))?.schema; + + if (isDefined(patternSchema)) { + suggestedSchema = patternSchema; + } else if (isDefined(objectAdditionalProperties) && typeof objectAdditionalProperties === 'object') { + suggestedSchema = objectAdditionalProperties; + } + + if (isDefined(suggestedSchema)) { + const type = getObjectValueType(suggestedSchema); + + if (type === 'boolean') { + return { type, data: suggestedSchema.default ?? true }; + } else if (type === 'enum') { + const options = getEnumOptionsFromSchema(suggestedSchema); + return { type, data: suggestedSchema.default ?? options[0].value, options }; + } else { + return { type, data: suggestedSchema.default ?? '' }; + } + } + + return undefined; // {{SQL CARBON EDIT}} strict-null-checks + }; +} + function getListDisplayValue(element: SettingsTreeSettingElement): IListDataItem[] { if (!element.value || !isArray(element.value)) { return []; @@ -541,7 +613,7 @@ export abstract class AbstractSettingRenderer extends Disposable implements ITre template.toolbar.context = element; const actions = this.disposableActionFactory(element.setting); actions.forEach(a => template.elementDisposables?.add(a)); - template.toolbar.setActions([], [...this.settingActions, ...actions])(); + template.toolbar.setActions([], [...this.settingActions, ...actions]); this.fixToolbarIcon(template.toolbar); const setting = element.setting; @@ -690,6 +762,11 @@ export abstract class AbstractSettingRenderer extends Disposable implements ITre itemElement.setAttribute('role', 'combobox'); label += modifiedText; } + } else if (templateId === SETTINGS_OBJECT_TEMPLATE_ID) { + if (itemElement = (template).objectWidget.domNode) { + itemElement.setAttribute('role', 'list'); + label += modifiedText; + } } else { // Don't change attributes if we don't know what we areFunctions return ''; @@ -981,25 +1058,39 @@ export class SettingObjectRenderer extends AbstractSettingRenderer implements IT const defaultValue: Record = template.context.defaultValue; const scopeValue: Record = template.context.scopeValue; const newValue: Record = {}; + let newItems: IObjectDataItem[] = []; - template.objectWidget.items.forEach(item => { + template.objectWidget.items.forEach((item, idx) => { // Item was updated - if (isDefined(e.item) && e.originalItem.key.data === item.key.data) { + if (isDefined(e.item) && e.targetIndex === idx) { newValue[e.item.key.data] = e.item.value.data; + newItems.push(e.item); } - // All remaining items - else { + // All remaining items, but skip the one that we just updated + else if (isUndefinedOrNull(e.item) || e.item.key.data !== item.key.data) { newValue[item.key.data] = item.value.data; + newItems.push(item); } }); // Item was deleted if (isUndefinedOrNull(e.item)) { delete newValue[e.originalItem.key.data]; + + const itemToDelete = newItems.findIndex(item => item.key.data === e.originalItem.key.data); + const defaultItemValue = defaultValue[e.originalItem.key.data] as string | boolean; + + // Item does not have a default + if (isUndefinedOrNull(defaultValue[e.originalItem.key.data]) && itemToDelete > -1) { + newItems.splice(itemToDelete, 1); + } else if (itemToDelete > -1) { + newItems[itemToDelete].value.data = defaultItemValue; + } } // New item was added else if (template.objectWidget.isItemNew(e.originalItem)) { newValue[e.item.key.data] = e.item.value.data; + newItems.push(e.item); } Object.entries(newValue).forEach(([key, value]) => { @@ -1014,6 +1105,8 @@ export class SettingObjectRenderer extends AbstractSettingRenderer implements IT value: Object.keys(newValue).length === 0 ? undefined : newValue, type: template.context.valueType }); + + template.objectWidget.setValue(newItems); } } @@ -1026,11 +1119,16 @@ export class SettingObjectRenderer extends AbstractSettingRenderer implements IT template.objectWidget.setValue(items, { showAddButton: ( - isDefined(dataElement.setting.objectAdditionalProperties) || + typeof dataElement.setting.objectAdditionalProperties === 'object' || isDefined(dataElement.setting.objectPatternProperties) || !areAllPropertiesDefined(Object.keys(dataElement.setting.objectProperties ?? {}), items) ), + keySuggester: createObjectKeySuggester(dataElement), + valueSuggester: createObjectValueSuggester(dataElement), }); + + this.setElementAriaLabels(dataElement, this.templateId, template); + template.context = dataElement; } } @@ -1849,7 +1947,7 @@ export class SettingsTree extends ObjectTree { })); } - protected createModel(user: string, view: ISpliceable>, options: IObjectTreeOptions): ITreeModel { + protected createModel(user: string, view: IList>, options: IObjectTreeOptions): ITreeModel { return new NonCollapsibleObjectTreeModel(user, view, options); } } diff --git a/src/vs/workbench/contrib/preferences/browser/settingsTreeModels.ts b/src/vs/workbench/contrib/preferences/browser/settingsTreeModels.ts index 26714a8bab..e4966e8899 100644 --- a/src/vs/workbench/contrib/preferences/browser/settingsTreeModels.ts +++ b/src/vs/workbench/contrib/preferences/browser/settingsTreeModels.ts @@ -469,7 +469,7 @@ export function isExcludeSetting(setting: ISetting): boolean { } function isObjectRenderableSchema({ type }: IJSONSchema): boolean { - return type === 'string'; + return type === 'string' || type === 'boolean'; } function isObjectSetting({ @@ -496,13 +496,14 @@ function isObjectSetting({ return false; } - return Object.values(objectProperties ?? {}).every(isObjectRenderableSchema) && - Object.values(objectPatternProperties ?? {}).every(isObjectRenderableSchema) && - ( - typeof objectAdditionalProperties === 'object' - ? isObjectRenderableSchema(objectAdditionalProperties) - : true - ); + const schemas = [...Object.values(objectProperties ?? {}), ...Object.values(objectPatternProperties ?? {})]; + + if (typeof objectAdditionalProperties === 'object') { + schemas.push(objectAdditionalProperties); + } + + // This should not render boolean only objects + return schemas.every(isObjectRenderableSchema) && schemas.some(({ type }) => type === 'string'); } function settingTypeEnumRenderable(_type: string | string[]) { diff --git a/src/vs/workbench/contrib/preferences/browser/settingsWidgets.ts b/src/vs/workbench/contrib/preferences/browser/settingsWidgets.ts index 4031e363e0..0bdc899f37 100644 --- a/src/vs/workbench/contrib/preferences/browser/settingsWidgets.ts +++ b/src/vs/workbench/contrib/preferences/browser/settingsWidgets.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import * as DOM from 'vs/base/browser/dom'; -import { StandardKeyboardEvent, IKeyboardEvent } from 'vs/base/browser/keyboardEvent'; +import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { ActionBar } from 'vs/base/browser/ui/actionbar/actionbar'; import { Button } from 'vs/base/browser/ui/button/button'; import { InputBox } from 'vs/base/browser/ui/inputbox/inputBox'; @@ -20,11 +20,12 @@ import { foreground, inputBackground, inputBorder, inputForeground, listActiveSe import { attachButtonStyler, attachInputBoxStyler, attachSelectBoxStyler } from 'vs/platform/theme/common/styler'; import { ICssStyleCollector, IColorTheme, IThemeService, registerThemingParticipant } from 'vs/platform/theme/common/themeService'; import { disposableTimeout } from 'vs/base/common/async'; -import { isUndefinedOrNull } from 'vs/base/common/types'; +import { isUndefinedOrNull, isDefined } from 'vs/base/common/types'; import { preferencesEditIcon } from 'vs/workbench/contrib/preferences/browser/preferencesWidgets'; import { SelectBox } from 'vs/base/browser/ui/selectBox/selectBox'; import { isIOS } from 'vs/base/common/platform'; import { BrowserFeatures } from 'vs/base/browser/canIUse'; +import { debounce } from 'vs/base/common/decorators'; const $ = DOM.$; export const settingsHeaderForeground = registerColor('settings.headerForeground', { light: '#444444', dark: '#e7e7e7', hc: '#ffffff' }, localize('headerForeground', "The foreground color for a section header or active title.")); @@ -218,14 +219,9 @@ export interface ISettingListChangeEvent { targetIndex?: number; } -interface IEditHandlers { - onKeydown(event: IKeyboardEvent, updatedItem: TDataItem): void - onSubmit(updatedItem: TDataItem): void - onCancel(): void -} - abstract class AbstractListSettingWidget extends Disposable { private listElement: HTMLElement; + private rowElements: HTMLElement[] = []; protected readonly _onDidChangeList = this._register(new Emitter>()); protected readonly model = new ListSettingListModel(this.getEmptyItem()); @@ -257,24 +253,17 @@ abstract class AbstractListSettingWidget extends Dispo this._register(DOM.addDisposableListener(this.listElement, DOM.EventType.CLICK, e => this.onListClick(e))); this._register(DOM.addDisposableListener(this.listElement, DOM.EventType.DBLCLICK, e => this.onListDoubleClick(e))); - this._register(DOM.addStandardDisposableListener(this.listElement, 'keydown', (e: KeyboardEvent) => { - if (e.keyCode === KeyCode.UpArrow) { - const selectedIndex = this.model.getSelected(); - this.model.selectPrevious(); - if (this.model.getSelected() !== selectedIndex) { - this.renderList(); - } - e.preventDefault(); - e.stopPropagation(); - } else if (e.keyCode === KeyCode.DownArrow) { - const selectedIndex = this.model.getSelected(); - this.model.selectNext(); - if (this.model.getSelected() !== selectedIndex) { - this.renderList(); - } - e.preventDefault(); - e.stopPropagation(); + this._register(DOM.addStandardDisposableListener(this.listElement, 'keydown', (e: StandardKeyboardEvent) => { + if (e.equals(KeyCode.UpArrow)) { + this.selectPreviousRow(); + } else if (e.equals(KeyCode.DownArrow)) { + this.selectNextRow(); + } else { + return; } + + e.preventDefault(); + e.stopPropagation(); })); } @@ -287,7 +276,7 @@ abstract class AbstractListSettingWidget extends Dispo protected abstract getContainerClasses(): string[]; protected abstract getActionsForItem(item: TDataItem, idx: number): IAction[]; protected abstract renderItem(item: TDataItem): HTMLElement; - protected abstract renderEdit(item: TDataItem, handlers: IEditHandlers): HTMLElement; + protected abstract renderEdit(item: TDataItem, idx: number): HTMLElement; protected abstract isItemNew(item: TDataItem): boolean; protected abstract getLocalizedRowTitle(item: TDataItem): string; protected abstract getLocalizedStrings(): { @@ -322,9 +311,8 @@ abstract class AbstractListSettingWidget extends Dispo this.listElement.appendChild(header); } - this.model.items - .map((item, i) => this.renderDataOrEditItem(item, i, focused)) - .forEach(itemElement => this.listElement.appendChild(itemElement)); + this.rowElements = this.model.items.map((item, i) => this.renderDataOrEditItem(item, i, focused)); + this.rowElements.forEach(rowElement => this.listElement.appendChild(rowElement)); this.listElement.style.height = listHeight + 'px'; } @@ -334,10 +322,31 @@ abstract class AbstractListSettingWidget extends Dispo this.renderList(); } + protected cancelEdit(): void { + this.model.setEditKey('none'); + this.renderList(); + } + + protected handleItemChange(originalItem: TDataItem, changedItem: TDataItem, idx: number) { + this.model.setEditKey('none'); + + this._onDidChangeList.fire({ + originalItem, + item: changedItem, + targetIndex: idx, + }); + + this.renderList(); + } + private renderDataOrEditItem(item: IListViewItem, idx: number, listFocused: boolean): HTMLElement { - return item.editing ? - this.renderEditItem(item, idx) : + const rowElement = item.editing ? + this.renderEdit(item, idx) : this.renderDataItem(item, idx, listFocused); + + rowElement.setAttribute('role', 'listitem'); + + return rowElement; } private renderDataItem(item: IListViewItem, idx: number, listFocused: boolean): HTMLElement { @@ -353,54 +362,13 @@ abstract class AbstractListSettingWidget extends Dispo actionBar.push(this.getActionsForItem(item, idx), { icon: true, label: true }); rowElement.title = this.getLocalizedRowTitle(item); - if (item.selected) { - if (listFocused) { - setTimeout(() => { - rowElement.focus(); - }, 10); - } + if (item.selected && listFocused) { + this.listDisposables.add(disposableTimeout(() => rowElement.focus())); } return rowElement; } - private renderEditItem(item: IListViewItem, idx: number): HTMLElement { - let rowElement: HTMLElement | undefined; - - const onCancel = () => { - this.model.setEditKey('none'); - this.renderList(); - }; - - const onSubmit = (updatedItem: TDataItem) => { - this.model.setEditKey('none'); - - if (!isUndefinedOrNull(updatedItem)) { - this._onDidChangeList.fire({ - originalItem: item, - item: updatedItem, - targetIndex: idx, - }); - } - - this.renderList(); - }; - - const onKeydown = (e: StandardKeyboardEvent, updatedItem: TDataItem) => { - if (e.equals(KeyCode.Enter)) { - onSubmit(updatedItem); - } else if (e.equals(KeyCode.Escape)) { - onCancel(); - e.preventDefault(); - } - rowElement?.focus(); - }; - - rowElement = this.renderEdit(item, { onSubmit, onKeydown, onCancel }); - - return rowElement; - } - private renderAddButton(): HTMLElement { const rowElement = $('.setting-list-new-row'); @@ -427,8 +395,7 @@ abstract class AbstractListSettingWidget extends Dispo return; } - this.model.select(targetIdx); - this.renderList(); + this.selectRow(targetIdx); e.preventDefault(); e.stopPropagation(); } @@ -471,6 +438,26 @@ abstract class AbstractListSettingWidget extends Dispo const targetIdx = parseInt(targetIdxStr); return targetIdx; } + + private selectRow(idx: number): void { + this.model.select(idx); + this.rowElements.forEach(row => row.classList.remove('selected')); + + const selectedRow = this.rowElements[this.model.getSelected()!]; + + selectedRow.classList.add('selected'); + selectedRow.focus(); + } + + private selectNextRow(): void { + this.model.selectNext(); + this.selectRow(this.model.getSelected()!); + } + + private selectPreviousRow(): void { + this.model.selectPrevious(); + this.selectRow(this.model.getSelected()!); + } } export interface IListDataItem { @@ -508,7 +495,6 @@ export class ListSettingWidget extends AbstractListSettingWidget protected renderItem(item: IListDataItem): HTMLElement { const rowElement = $('.setting-list-row'); - const valueElement = DOM.append(rowElement, $('.setting-list-value')); const siblingElement = DOM.append(rowElement, $('.setting-list-sibling')); @@ -518,7 +504,7 @@ export class ListSettingWidget extends AbstractListSettingWidget return rowElement; } - protected renderEdit(item: IListDataItem, { onKeydown, onSubmit, onCancel }: IEditHandlers): HTMLElement { + protected renderEdit(item: IListDataItem, idx: number): HTMLElement { const rowElement = $('.setting-list-edit-row'); const updatedItem = () => ({ @@ -526,6 +512,16 @@ export class ListSettingWidget extends AbstractListSettingWidget sibling: siblingInput?.value }); + const onKeyDown = (e: StandardKeyboardEvent) => { + if (e.equals(KeyCode.Enter)) { + this.handleItemChange(item, updatedItem(), idx); + } else if (e.equals(KeyCode.Escape)) { + this.cancelEdit(); + e.preventDefault(); + } + rowElement?.focus(); + }; + const valueInput = new InputBox(rowElement, this.contextViewService, { placeholder: this.getLocalizedStrings().inputPlaceholder }); @@ -539,7 +535,9 @@ export class ListSettingWidget extends AbstractListSettingWidget this.listDisposables.add(valueInput); valueInput.value = item.value; - this.listDisposables.add(DOM.addStandardDisposableListener(valueInput.inputElement, DOM.EventType.KEY_DOWN, e => onKeydown(e, updatedItem()))); + this.listDisposables.add( + DOM.addStandardDisposableListener(valueInput.inputElement, DOM.EventType.KEY_DOWN, onKeyDown) + ); let siblingInput: InputBox | undefined; if (!isUndefinedOrNull(item.sibling)) { @@ -555,20 +553,24 @@ export class ListSettingWidget extends AbstractListSettingWidget })); siblingInput.value = item.sibling; - this.listDisposables.add(DOM.addStandardDisposableListener(siblingInput.inputElement, DOM.EventType.KEY_DOWN, e => onKeydown(e, updatedItem()))); + this.listDisposables.add( + DOM.addStandardDisposableListener(siblingInput.inputElement, DOM.EventType.KEY_DOWN, onKeyDown) + ); } const okButton = this._register(new Button(rowElement)); okButton.label = localize('okButton', "OK"); - okButton.element.classList.add('setting-list-okButton'); + okButton.element.classList.add('setting-list-ok-button'); + this.listDisposables.add(attachButtonStyler(okButton, this.themeService)); - this.listDisposables.add(okButton.onDidClick(() => onSubmit(updatedItem()))); + this.listDisposables.add(okButton.onDidClick(() => this.handleItemChange(item, updatedItem(), idx))); const cancelButton = this._register(new Button(rowElement)); cancelButton.label = localize('cancelButton', "Cancel"); - cancelButton.element.classList.add('setting-list-okButton'); + cancelButton.element.classList.add('setting-list-cancel-button'); + this.listDisposables.add(attachButtonStyler(cancelButton, this.themeService)); - this.listDisposables.add(cancelButton.onDidClick(onCancel)); + this.listDisposables.add(cancelButton.onDidClick(() => this.cancelEdit())); this.listDisposables.add( disposableTimeout(() => { @@ -639,23 +641,51 @@ interface IObjectEnumData { options: IObjectEnumOption[]; } -type ObjectKeyOrValue = IObjectStringData | IObjectEnumData; +interface IObjectBoolData { + type: 'boolean'; + data: boolean; +} + +type ObjectKey = IObjectStringData | IObjectEnumData; +export type ObjectValue = IObjectStringData | IObjectEnumData | IObjectBoolData; export interface IObjectDataItem { - key: ObjectKeyOrValue; - value: ObjectKeyOrValue; + key: ObjectKey; + value: ObjectValue; removable: boolean; } +export interface IObjectValueSuggester { + (key: string): ObjectValue | undefined; +} + +export interface IObjectKeySuggester { + (existingKeys: string[]): IObjectEnumData | undefined; +} + interface IObjectSetValueOptions { - showAddButton?: boolean; + showAddButton: boolean; + keySuggester: IObjectKeySuggester; + valueSuggester: IObjectValueSuggester; +} + +interface IObjectRenderEditWidgetOptions { + isKey: boolean; + idx: number; + readonly originalItem: IObjectDataItem; + readonly changedItem: IObjectDataItem; + update(keyOrValue: ObjectKey | ObjectValue): void; } export class ObjectSettingWidget extends AbstractListSettingWidget { private showAddButton: boolean = true; + private keySuggester: IObjectKeySuggester = () => undefined; + private valueSuggester: IObjectValueSuggester = () => undefined; setValue(listData: IObjectDataItem[], options?: IObjectSetValueOptions): void { this.showAddButton = options?.showAddButton ?? this.showAddButton; + this.keySuggester = options?.keySuggester ?? this.keySuggester; + this.valueSuggester = options?.valueSuggester ?? this.valueSuggester; super.setValue(listData); } @@ -712,19 +742,15 @@ export class ObjectSettingWidget extends AbstractListSettingWidget 0) { - const header = $('.setting-list-row-header'); - const keyHeader = DOM.append(header, $('.setting-list-object-key')); - const valueHeader = DOM.append(header, $('.setting-list-object-value')); - const { keyHeaderText, valueHeaderText } = this.getLocalizedStrings(); + const header = $('.setting-list-row-header'); + const keyHeader = DOM.append(header, $('.setting-list-object-key')); + const valueHeader = DOM.append(header, $('.setting-list-object-value')); + const { keyHeaderText, valueHeaderText } = this.getLocalizedStrings(); - keyHeader.textContent = keyHeaderText; - valueHeader.textContent = valueHeaderText; + keyHeader.textContent = keyHeaderText; + valueHeader.textContent = valueHeaderText; - return header; - } - - return undefined; // {{SQL CARBON EDIT}} strict-null-checks + return header; } protected renderItem(item: IObjectDataItem): HTMLElement { @@ -735,81 +761,91 @@ export class ObjectSettingWidget extends AbstractListSettingWidget): HTMLElement { - const rowElement = $('.setting-list-edit-row'); - rowElement.classList.add('setting-list-object-row'); + protected renderEdit(item: IObjectDataItem, idx: number): HTMLElement { + const rowElement = $('.setting-list-edit-row.setting-list-object-row'); + + const changedItem = { ...item }; + const onKeyChange = (key: ObjectKey) => { + changedItem.key = key; + this.updateValueUsingSuggestion(key.data, item.value, newValue => { + if (this.shouldUseSuggestion(item.value, changedItem.value, newValue)) { + onValueChange(newValue); + renderLatestValue(); + } + }); + }; + const onValueChange = (value: ObjectValue) => { + changedItem.value = value; + }; let keyWidget: InputBox | SelectBox | undefined; + let keyElement: HTMLElement; if (this.showAddButton) { - keyWidget = this.renderEditWidget(item.key, rowElement, true); + if (this.isItemNew(item)) { + const suggestedKey = this.keySuggester(this.model.items.map(({ key: { data } }) => data)); + + if (isDefined(suggestedKey)) { + changedItem.key = suggestedKey; + const suggestedValue = this.valueSuggester(changedItem.key.data); + onValueChange(suggestedValue ?? changedItem.value); + } + } + + const { widget, element } = this.renderEditWidget(changedItem.key, { + idx, + isKey: true, + originalItem: item, + changedItem, + update: onKeyChange, + }); + keyWidget = widget; + keyElement = element; } else { - const keyElement = DOM.append(rowElement, $('.setting-list-object-key')); + keyElement = $('.setting-list-object-key'); keyElement.textContent = item.key.data; } - const valueWidget = this.renderEditWidget(item.value, rowElement, false); + let valueWidget: InputBox | SelectBox; + const valueContainer = $('.setting-list-object-value-container'); - const updatedItem = () => { - const newItem = { ...item }; + const renderLatestValue = () => { + const { widget, element } = this.renderEditWidget(changedItem.value, { + idx, + isKey: false, + originalItem: item, + changedItem, + update: onValueChange, + }); - if (keyWidget instanceof InputBox) { - newItem.key = { type: 'string', data: keyWidget.value }; - } + valueWidget = widget; - if (valueWidget instanceof InputBox) { - newItem.value = { type: 'string', data: valueWidget.value }; - } - - return newItem; + DOM.clearNode(valueContainer); + valueContainer.append(element); }; - if (keyWidget instanceof InputBox) { - keyWidget.setPlaceHolder(this.getLocalizedStrings().keyInputPlaceholder); - this.listDisposables.add(DOM.addStandardDisposableListener(keyWidget.inputElement, DOM.EventType.KEY_DOWN, e => onKeydown(e, updatedItem()))); - } else if (keyWidget instanceof SelectBox) { - this.listDisposables.add( - keyWidget.onDidSelect(({ selected }) => { - const editKey = this.model.items.findIndex(({ key }) => selected === key.data); + renderLatestValue(); - if (editKey >= 0) { - this.model.select(editKey); - this.model.setEditKey(editKey); - this.renderList(); - } else { - onSubmit({ ...item, key: { ...item.key, data: selected } }); - } - }) - ); - } - - if (valueWidget instanceof InputBox) { - valueWidget.setPlaceHolder(this.getLocalizedStrings().valueInputPlaceholder); - this.listDisposables.add(DOM.addStandardDisposableListener(valueWidget.inputElement, DOM.EventType.KEY_DOWN, e => onKeydown(e, updatedItem()))); - } else if (valueWidget instanceof SelectBox) { - this.listDisposables.add( - valueWidget.onDidSelect(({ selected }) => { - onSubmit({ ...item, value: { ...item.value, data: selected } }); - }) - ); - } + rowElement.append(keyElement, valueContainer); const okButton = this._register(new Button(rowElement)); okButton.label = localize('okButton', "OK"); - okButton.element.classList.add('setting-list-okButton'); + okButton.element.classList.add('setting-list-ok-button'); + this.listDisposables.add(attachButtonStyler(okButton, this.themeService)); - this.listDisposables.add(okButton.onDidClick(() => onSubmit(updatedItem()))); + this.listDisposables.add(okButton.onDidClick(() => this.handleItemChange(item, changedItem, idx))); const cancelButton = this._register(new Button(rowElement)); cancelButton.label = localize('cancelButton', "Cancel"); - cancelButton.element.classList.add('setting-list-okButton'); + cancelButton.element.classList.add('setting-list-cancel-button'); + this.listDisposables.add(attachButtonStyler(cancelButton, this.themeService)); - this.listDisposables.add(cancelButton.onDidClick(onCancel)); + this.listDisposables.add(cancelButton.onDidClick(() => this.cancelEdit())); this.listDisposables.add( disposableTimeout(() => { @@ -826,43 +862,39 @@ export class ObjectSettingWidget extends AbstractListSettingWidget item.key.data === value)?.description - : undefined; - - return enumDescription ?? localize('objectPairHintLabel', "The key `{0}` maps to `{1}`", item.key.data, item.value.data); - } - - protected getLocalizedStrings() { - return { - deleteActionTooltip: localize('removeItem', "Remove Item"), - resetActionTooltip: localize('resetItem', "Reset Item"), - editActionTooltip: localize('editItem', "Edit Item"), - addButtonLabel: localize('addItem', "Add Item"), - keyHeaderText: localize('objectKeyHeader', "Item"), - valueHeaderText: localize('objectValueHeader', "Value"), - keyInputPlaceholder: localize('objectKeyInputPlaceholder', "Key"), - valueInputPlaceholder: localize('objectValueInputPlaceholder', "Value"), - }; - } - - private renderEditWidget(keyOrValue: ObjectKeyOrValue, rowElement: HTMLElement, isKey: boolean) { + private renderEditWidget( + keyOrValue: ObjectKey | ObjectValue, + options: IObjectRenderEditWidgetOptions, + ) { switch (keyOrValue.type) { case 'string': - return this.renderStringEditWidget(keyOrValue, rowElement, isKey); + return this.renderStringEditWidget(keyOrValue, options); case 'enum': - return this.renderEnumEditWidget(keyOrValue, rowElement, isKey); + return this.renderEnumEditWidget(keyOrValue, options); + case 'boolean': + return this.renderEnumEditWidget( + { + type: 'enum', + data: keyOrValue.data.toString(), + options: [{ value: 'true' }, { value: 'false' }], + }, + options, + ); } } - private renderStringEditWidget(keyOrValue: IObjectStringData, rowElement: HTMLElement, isKey: boolean) { - const inputBox = new InputBox(rowElement, this.contextViewService); + private renderStringEditWidget( + keyOrValue: IObjectStringData, + { idx, isKey, originalItem, changedItem, update }: IObjectRenderEditWidgetOptions, + ) { + const wrapper = $(isKey ? '.setting-list-object-input-key' : '.setting-list-object-input-value'); + const inputBox = new InputBox(wrapper, this.contextViewService, { + placeholder: isKey + ? localize('objectKeyInputPlaceholder', "Key") + : localize('objectValueInputPlaceholder', "Value"), + }); inputBox.element.classList.add('setting-list-object-input'); - if (isKey) { - inputBox.element.classList.add('setting-list-object-input-key'); - } this.listDisposables.add(attachInputBoxStyler(inputBox, this.themeService, { inputBackground: settingsTextInputBackground, @@ -872,13 +904,30 @@ export class ObjectSettingWidget extends AbstractListSettingWidget update({ ...keyOrValue, data: value }))); + + const onKeyDown = (e: StandardKeyboardEvent) => { + if (e.equals(KeyCode.Enter)) { + this.handleItemChange(originalItem, changedItem, idx); + } else if (e.equals(KeyCode.Escape)) { + this.cancelEdit(); + e.preventDefault(); + } + }; + + this.listDisposables.add( + DOM.addStandardDisposableListener(inputBox.inputElement, DOM.EventType.KEY_DOWN, onKeyDown) + ); + + return { widget: inputBox, element: wrapper }; } - private renderEnumEditWidget(keyOrValue: IObjectEnumData, rowElement: HTMLElement, isKey: boolean) { + private renderEnumEditWidget( + keyOrValue: IObjectEnumData, + { isKey, originalItem, update }: IObjectRenderEditWidgetOptions, + ) { const selectBoxOptions = keyOrValue.options.map(({ value, description }) => ({ text: value, description })); - const dataIndex = keyOrValue.options.findIndex(option => keyOrValue.data === option.value); - const selected = dataIndex >= 0 ? dataIndex : 0; + const selected = keyOrValue.options.findIndex(option => keyOrValue.data === option.value); const selectBox = new SelectBox(selectBoxOptions, selected, this.contextViewService, undefined, { useCustomDrawn: !(isIOS && BrowserFeatures.pointerEvents) @@ -891,14 +940,85 @@ export class ObjectSettingWidget extends AbstractListSettingWidget + update( + originalKeyOrValue.type === 'boolean' + ? { ...originalKeyOrValue, data: selected === 'true' ? true : false } + : { ...originalKeyOrValue, data: selected }, + ) + ) + ); + const wrapper = $('.setting-list-object-input'); - if (isKey) { - wrapper.classList.add('setting-list-object-input-key'); - } + wrapper.classList.add( + isKey ? 'setting-list-object-input-key' : 'setting-list-object-input-value', + ); selectBox.render(wrapper); - rowElement.append(wrapper); - return selectBox; + return { widget: selectBox, element: wrapper }; + } + + @debounce(300) + private updateValueUsingSuggestion(key: string, defaultValue: ObjectValue, onUpdate: (value: ObjectValue) => void) { + const suggestion = this.valueSuggester(key); + onUpdate(suggestion ?? defaultValue); + } + + private shouldUseSuggestion(originalValue: ObjectValue, previousValue: ObjectValue, newValue: ObjectValue): boolean { + if (previousValue === newValue) { + return false; + } + + // item is new, use suggestion + if (originalValue.data === '') { + return true; + } + + if (previousValue.type === newValue.type && newValue.type !== 'enum') { + return false; + } + + // check if all enum options are the same + if (previousValue.type === 'enum' && newValue.type === 'enum') { + const previousEnums = new Set(previousValue.options.map(({ value }) => value)); + newValue.options.forEach(({ value }) => previousEnums.delete(value)); + + // all options are the same + if (previousEnums.size === 0) { + return false; + } + } + + return true; + } + + protected getLocalizedRowTitle(item: IObjectDataItem): string { + let enumDescription = item.key.type === 'enum' + ? item.key.options.find(({ value }) => item.key.data === value)?.description + : undefined; + + // avoid rendering double '.' + if (isDefined(enumDescription) && enumDescription.endsWith('.')) { + enumDescription = enumDescription.slice(0, enumDescription.length - 1); + } + + return isDefined(enumDescription) + ? `${enumDescription}. Currently set to ${item.value.data}.` + : localize('objectPairHintLabel', "The property `{0}` is set to `{1}`.", item.key.data, item.value.data); + } + + protected getLocalizedStrings() { + return { + deleteActionTooltip: localize('removeItem', "Remove Item"), + resetActionTooltip: localize('resetItem', "Reset Item"), + editActionTooltip: localize('editItem', "Edit Item"), + addButtonLabel: localize('addItem', "Add Item"), + keyHeaderText: localize('objectKeyHeader', "Item"), + valueHeaderText: localize('objectValueHeader', "Value"), + }; } } diff --git a/src/vs/workbench/contrib/remote/browser/explorerViewItems.ts b/src/vs/workbench/contrib/remote/browser/explorerViewItems.ts index 1f879f9473..19c7f602ba 100644 --- a/src/vs/workbench/contrib/remote/browser/explorerViewItems.ts +++ b/src/vs/workbench/contrib/remote/browser/explorerViewItems.ts @@ -9,9 +9,8 @@ import * as dom from 'vs/base/browser/dom'; import { IAction, Action } from 'vs/base/common/actions'; import { SelectActionViewItem } from 'vs/base/browser/ui/actionbar/actionbar'; import { IThemeService } from 'vs/platform/theme/common/themeService'; -import { attachSelectBoxStyler, attachStylerCallback } from 'vs/platform/theme/common/styler'; +import { attachSelectBoxStyler } from 'vs/platform/theme/common/styler'; import { IContextViewService } from 'vs/platform/contextview/browser/contextView'; -import { selectBorder } from 'vs/platform/theme/common/colorRegistry'; import { IRemoteExplorerService, REMOTE_EXPLORER_TYPE_KEY } from 'vs/workbench/services/remote/common/remoteExplorerService'; import { ISelectOptionItem } from 'vs/base/browser/ui/selectBox/selectBox'; import { IViewDescriptor } from 'vs/workbench/common/views'; @@ -30,7 +29,7 @@ export class SwitchRemoteViewItem extends SelectActionViewItem { constructor( action: IAction, private readonly optionsItems: IRemoteSelectItem[], - @IThemeService private readonly themeService: IThemeService, + @IThemeService themeService: IThemeService, @IContextViewService contextViewService: IContextViewService, @IRemoteExplorerService remoteExplorerService: IRemoteExplorerService, @IWorkbenchEnvironmentService environmentService: IWorkbenchEnvironmentService, @@ -75,9 +74,6 @@ export class SwitchRemoteViewItem extends SelectActionViewItem { if (this.optionsItems.length > 1) { super.render(container); dom.addClass(container, 'switch-remote'); - this._register(attachStylerCallback(this.themeService, { selectBorder }, colors => { - container.style.border = colors.selectBorder ? `1px solid ${colors.selectBorder}` : ''; - })); } } diff --git a/src/vs/workbench/contrib/remote/browser/remote.ts b/src/vs/workbench/contrib/remote/browser/remote.ts index dcaf87c892..15bc25a9ef 100644 --- a/src/vs/workbench/contrib/remote/browser/remote.ts +++ b/src/vs/workbench/contrib/remote/browser/remote.ts @@ -74,19 +74,19 @@ const remoteHelpExtPoint = ExtensionsRegistry.registerExtensionPoint ({ - extensionDescription: info.extensionDescription, - url: info.getStarted!, - remoteAuthority: (typeof info.remoteName === 'string') ? [info.remoteName] : info.remoteName - })), + getStarted.map((info: HelpInformation) => (new HelpItemValue(commandService, + info.extensionDescription, + (typeof info.remoteName === 'string') ? [info.remoteName] : info.remoteName, + info.getStarted!) + )), quickInputService, environmentService, openerService, @@ -200,11 +200,11 @@ class HelpModel { helpItems.push(new HelpItem( documentationIcon, nls.localize('remote.help.documentation', "Read Documentation"), - documentation.map((info: HelpInformation) => ({ - extensionDescription: info.extensionDescription, - url: info.documentation!, - remoteAuthority: (typeof info.remoteName === 'string') ? [info.remoteName] : info.remoteName - })), + documentation.map((info: HelpInformation) => (new HelpItemValue(commandService, + info.extensionDescription, + (typeof info.remoteName === 'string') ? [info.remoteName] : info.remoteName, + info.documentation!) + )), quickInputService, environmentService, openerService, @@ -218,11 +218,11 @@ class HelpModel { helpItems.push(new HelpItem( feedbackIcon, nls.localize('remote.help.feedback', "Provide Feedback"), - feedback.map((info: HelpInformation) => ({ - extensionDescription: info.extensionDescription, - url: info.feedback!, - remoteAuthority: (typeof info.remoteName === 'string') ? [info.remoteName] : info.remoteName - })), + feedback.map((info: HelpInformation) => (new HelpItemValue(commandService, + info.extensionDescription, + (typeof info.remoteName === 'string') ? [info.remoteName] : info.remoteName, + info.feedback!) + )), quickInputService, environmentService, openerService, @@ -236,11 +236,11 @@ class HelpModel { helpItems.push(new HelpItem( reviewIssuesIcon, nls.localize('remote.help.issues', "Review Issues"), - issues.map((info: HelpInformation) => ({ - extensionDescription: info.extensionDescription, - url: info.issues!, - remoteAuthority: (typeof info.remoteName === 'string') ? [info.remoteName] : info.remoteName - })), + issues.map((info: HelpInformation) => (new HelpItemValue(commandService, + info.extensionDescription, + (typeof info.remoteName === 'string') ? [info.remoteName] : info.remoteName, + info.issues!) + )), quickInputService, environmentService, openerService, @@ -252,10 +252,10 @@ class HelpModel { helpItems.push(new IssueReporterItem( reportIssuesIcon, nls.localize('remote.help.report', "Report Issue"), - viewModel.helpInformation.map(info => ({ - extensionDescription: info.extensionDescription, - remoteAuthority: (typeof info.remoteName === 'string') ? [info.remoteName] : info.remoteName - })), + viewModel.helpInformation.map(info => (new HelpItemValue(commandService, + info.extensionDescription, + (typeof info.remoteName === 'string') ? [info.remoteName] : info.remoteName + ))), quickInputService, environmentService, commandService, @@ -269,12 +269,35 @@ class HelpModel { } } +class HelpItemValue { + private _url: string | undefined; + constructor(private commandService: ICommandService, public extensionDescription: IExtensionDescription, public remoteAuthority: string[] | undefined, private urlOrCommand?: string) { } + + get url(): Promise { + return new Promise(async (resolve) => { + if (this._url === undefined) { + if (this.urlOrCommand) { + let url = URI.parse(this.urlOrCommand); + if (url.authority) { + this._url = this.urlOrCommand; + } else { + this._url = await this.commandService.executeCommand(this.urlOrCommand); + } + } else { + this._url = ''; + } + } + resolve(this._url); + }); + } +} + abstract class HelpItemBase implements IHelpItem { public iconClasses: string[] = []; constructor( public icon: Codicon, public label: string, - public values: { extensionDescription: IExtensionDescription, url?: string, remoteAuthority: string[] | undefined }[], + public values: HelpItemValue[], private quickInputService: IQuickInputService, private environmentService: IWorkbenchEnvironmentService, private remoteExplorerService: IRemoteExplorerService @@ -285,17 +308,16 @@ abstract class HelpItemBase implements IHelpItem { async handleClick() { const remoteAuthority = this.environmentService.configuration.remoteAuthority; - if (!remoteAuthority) { - return; - } - for (let i = 0; i < this.remoteExplorerService.targetType.length; i++) { - if (startsWith(remoteAuthority, this.remoteExplorerService.targetType[i])) { - for (let value of this.values) { - if (value.remoteAuthority) { - for (let authority of value.remoteAuthority) { - if (startsWith(remoteAuthority, authority)) { - await this.takeAction(value.extensionDescription, value.url); - return; + if (remoteAuthority) { + for (let i = 0; i < this.remoteExplorerService.targetType.length; i++) { + if (startsWith(remoteAuthority, this.remoteExplorerService.targetType[i])) { + for (let value of this.values) { + if (value.remoteAuthority) { + for (let authority of value.remoteAuthority) { + if (startsWith(remoteAuthority, authority)) { + await this.takeAction(value.extensionDescription, await value.url); + return; + } } } } @@ -304,13 +326,13 @@ abstract class HelpItemBase implements IHelpItem { } if (this.values.length > 1) { - let actions = this.values.map(value => { + let actions = await Promise.all(this.values.map(async (value) => { return { label: value.extensionDescription.displayName || value.extensionDescription.identifier.value, - description: value.url, + description: await value.url, extensionDescription: value.extensionDescription }; - }); + })); const action = await this.quickInputService.pick(actions, { placeHolder: nls.localize('pickRemoteExtension', "Select url to open") }); @@ -318,7 +340,7 @@ abstract class HelpItemBase implements IHelpItem { await this.takeAction(action.extensionDescription, action.description); } } else { - await this.takeAction(this.values[0].extensionDescription, this.values[0].url); + await this.takeAction(this.values[0].extensionDescription, await this.values[0].url); } } @@ -329,7 +351,7 @@ class HelpItem extends HelpItemBase { constructor( icon: Codicon, label: string, - values: { extensionDescription: IExtensionDescription; url: string, remoteAuthority: string[] | undefined }[], + values: HelpItemValue[], quickInputService: IQuickInputService, environmentService: IWorkbenchEnvironmentService, private openerService: IOpenerService, @@ -347,7 +369,7 @@ class IssueReporterItem extends HelpItemBase { constructor( icon: Codicon, label: string, - values: { extensionDescription: IExtensionDescription; remoteAuthority: string[] | undefined }[], + values: HelpItemValue[], quickInputService: IQuickInputService, environmentService: IWorkbenchEnvironmentService, private commandService: ICommandService, diff --git a/src/vs/workbench/contrib/scm/browser/activity.ts b/src/vs/workbench/contrib/scm/browser/activity.ts index 5e198abcf6..195c07c2df 100644 --- a/src/vs/workbench/contrib/scm/browser/activity.ts +++ b/src/vs/workbench/contrib/scm/browser/activity.ts @@ -92,7 +92,7 @@ export class SCMStatusController implements IWorkbenchContribution { } private onDidAddRepository(repository: ISCMRepository): void { - const focusDisposable = repository.onDidFocus(() => this.focusRepository(repository)); + const selectedDisposable = Event.filter(repository.onDidChangeSelection, selected => selected)(() => this.focusRepository(repository)); const onDidChange = Event.any(repository.provider.onDidChange, repository.provider.onDidChangeResources); const changeDisposable = onDidChange(() => this.renderActivityCount()); @@ -104,14 +104,12 @@ export class SCMStatusController implements IWorkbenchContribution { if (this.scmService.repositories.length === 0) { this.focusRepository(undefined); - } else if (this.focusedRepository === repository) { - this.scmService.repositories[0].focus(); } this.renderActivityCount(); }); - const disposable = combinedDisposable(focusDisposable, changeDisposable, removeDisposable); + const disposable = combinedDisposable(selectedDisposable, changeDisposable, removeDisposable); this.disposables.push(disposable); if (this.focusedRepository) { diff --git a/src/vs/workbench/contrib/scm/browser/mainPane.ts b/src/vs/workbench/contrib/scm/browser/mainPane.ts deleted file mode 100644 index 791c487f14..0000000000 --- a/src/vs/workbench/contrib/scm/browser/mainPane.ts +++ /dev/null @@ -1,362 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Source EULA. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import 'vs/css!./media/scmViewlet'; -import { localize } from 'vs/nls'; -import { Event, Emitter } from 'vs/base/common/event'; -import { basename } from 'vs/base/common/resources'; -import { IDisposable, dispose, Disposable, DisposableStore, combinedDisposable } from 'vs/base/common/lifecycle'; -import { ViewPane, IViewPaneOptions } from 'vs/workbench/browser/parts/views/viewPaneContainer'; -import { append, $, toggleClass } from 'vs/base/browser/dom'; -import { IListVirtualDelegate, IListRenderer, IListContextMenuEvent, IListEvent } from 'vs/base/browser/ui/list/list'; -import { ISCMRepository } from 'vs/workbench/contrib/scm/common/scm'; -import { CountBadge } from 'vs/base/browser/ui/countBadge/countBadge'; -import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; -import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; -import { IContextKeyService, ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; -import { ICommandService } from 'vs/platform/commands/common/commands'; -import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; -import { IMenuService, MenuId } from 'vs/platform/actions/common/actions'; -import { IAction, Action } from 'vs/base/common/actions'; -import { createAndFillInContextMenuActions } from 'vs/platform/actions/browser/menuEntryActionViewItem'; -import { ActionBar, ActionViewItem } from 'vs/base/browser/ui/actionbar/actionbar'; -import { IThemeService } from 'vs/platform/theme/common/themeService'; -import { attachBadgeStyler } from 'vs/platform/theme/common/styler'; -import { Command } from 'vs/editor/common/modes'; -import { renderCodicons, Codicon } from 'vs/base/common/codicons'; -import { escape } from 'vs/base/common/strings'; -import { WorkbenchList } from 'vs/platform/list/browser/listService'; -import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; -import { IViewDescriptor, IViewDescriptorService } from 'vs/workbench/common/views'; -import { SIDE_BAR_BACKGROUND } from 'vs/workbench/common/theme'; -import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors'; -import { IOpenerService } from 'vs/platform/opener/common/opener'; -import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; - -export interface ISpliceEvent { - index: number; - deleteCount: number; - elements: T[]; -} - -export interface IViewModel { - readonly repositories: ISCMRepository[]; - readonly onDidSplice: Event>; - - readonly visibleRepositories: ISCMRepository[]; - readonly onDidChangeVisibleRepositories: Event; - setVisibleRepositories(repositories: ISCMRepository[]): void; - - isVisible(): boolean; - readonly onDidChangeVisibility: Event; -} - -class ProvidersListDelegate implements IListVirtualDelegate { - - getHeight(): number { - return 22; - } - - getTemplateId(): string { - return 'provider'; - } -} - -class StatusBarAction extends Action { - - constructor( - private command: Command, - private commandService: ICommandService - ) { - super(`statusbaraction{${command.id}}`, command.title, '', true); - this.tooltip = command.tooltip || ''; - } - - run(): Promise { - return this.commandService.executeCommand(this.command.id, ...(this.command.arguments || [])); - } -} - -class StatusBarActionViewItem extends ActionViewItem { - - constructor(action: StatusBarAction) { - super(null, action, {}); - } - - updateLabel(): void { - if (this.options.label && this.label) { - this.label.innerHTML = renderCodicons(escape(this.getAction().label)); - } - } -} - -interface RepositoryTemplateData { - title: HTMLElement; - type: HTMLElement; - countContainer: HTMLElement; - count: CountBadge; - actionBar: ActionBar; - disposable: IDisposable; - templateDisposable: IDisposable; -} - -class ProviderRenderer implements IListRenderer { - - readonly templateId = 'provider'; - - private readonly _onDidRenderElement = new Emitter(); - readonly onDidRenderElement = this._onDidRenderElement.event; - - constructor( - @ICommandService protected commandService: ICommandService, - @IThemeService protected themeService: IThemeService - ) { } - - renderTemplate(container: HTMLElement): RepositoryTemplateData { - const provider = append(container, $('.scm-provider')); - const name = append(provider, $('.name')); - const title = append(name, $('span.title')); - const type = append(name, $('span.type')); - const countContainer = append(provider, $('.count')); - const count = new CountBadge(countContainer); - const badgeStyler = attachBadgeStyler(count, this.themeService); - const actionBar = new ActionBar(provider, { actionViewItemProvider: a => new StatusBarActionViewItem(a as StatusBarAction) }); - const disposable = Disposable.None; - const templateDisposable = combinedDisposable(actionBar, badgeStyler); - - return { title, type, countContainer, count, actionBar, disposable, templateDisposable }; - } - - renderElement(repository: ISCMRepository, index: number, templateData: RepositoryTemplateData): void { - templateData.disposable.dispose(); - const disposables = new DisposableStore(); - - if (repository.provider.rootUri) { - templateData.title.textContent = basename(repository.provider.rootUri); - templateData.type.textContent = repository.provider.label; - } else { - templateData.title.textContent = repository.provider.label; - templateData.type.textContent = ''; - } - - const actions: IAction[] = []; - const disposeActions = () => dispose(actions); - disposables.add({ dispose: disposeActions }); - - const update = () => { - disposeActions(); - - const commands = repository.provider.statusBarCommands || []; - actions.splice(0, actions.length, ...commands.map(c => new StatusBarAction(c, this.commandService))); - templateData.actionBar.clear(); - templateData.actionBar.push(actions); - - const count = repository.provider.count || 0; - toggleClass(templateData.countContainer, 'hidden', count === 0); - templateData.count.setCount(count); - - this._onDidRenderElement.fire(repository); - }; - - disposables.add(repository.provider.onDidChange(update, null)); - update(); - - templateData.disposable = disposables; - } - - disposeTemplate(templateData: RepositoryTemplateData): void { - templateData.disposable.dispose(); - templateData.templateDisposable.dispose(); - } -} - -export class MainPane extends ViewPane { - - static readonly ID = 'scm.mainPane'; - static readonly TITLE = localize('scm providers', "Source Control Providers"); - - private list!: WorkbenchList; - - constructor( - protected viewModel: IViewModel, - options: IViewPaneOptions, - @IKeybindingService protected keybindingService: IKeybindingService, - @IContextMenuService protected contextMenuService: IContextMenuService, - @IInstantiationService instantiationService: IInstantiationService, - @IViewDescriptorService viewDescriptorService: IViewDescriptorService, - @IContextKeyService contextKeyService: IContextKeyService, - @IMenuService private readonly menuService: IMenuService, - @IConfigurationService configurationService: IConfigurationService, - @IOpenerService openerService: IOpenerService, - @IThemeService themeService: IThemeService, - @ITelemetryService telemetryService: ITelemetryService, - @ICommandService private readonly commandService: ICommandService - ) { - super(options, keybindingService, contextMenuService, configurationService, contextKeyService, viewDescriptorService, instantiationService, openerService, themeService, telemetryService); - } - - protected renderBody(container: HTMLElement): void { - super.renderBody(container); - - const delegate = new ProvidersListDelegate(); - const renderer = this.instantiationService.createInstance(ProviderRenderer); - const identityProvider = { getId: (r: ISCMRepository) => r.provider.id }; - - this.list = this.instantiationService.createInstance(WorkbenchList, `SCM Main`, container, delegate, [renderer], { - identityProvider, - horizontalScrolling: false, - overrideStyles: { - listBackground: SIDE_BAR_BACKGROUND - }, - accessibilityProvider: { - getAriaLabel(r: ISCMRepository) { - return r.provider.label; - }, - getWidgetAriaLabel() { - return MainPane.TITLE; - } - } - }) as WorkbenchList; - - this._register(renderer.onDidRenderElement(e => this.list.updateWidth(this.viewModel.repositories.indexOf(e)), null)); - this._register(this.list.onDidChangeSelection(this.onListSelectionChange, this)); - this._register(this.list.onDidChangeFocus(this.onListFocusChange, this)); - this._register(this.list.onContextMenu(this.onListContextMenu, this)); - - this._register(this.viewModel.onDidChangeVisibleRepositories(this.updateListSelection, this)); - - this._register(this.viewModel.onDidSplice(({ index, deleteCount, elements }) => this.splice(index, deleteCount, elements), null)); - this.splice(0, 0, this.viewModel.repositories); - - this._register(this.list); - - this._register(this.configurationService.onDidChangeConfiguration(e => { - if (e.affectsConfiguration('scm.providers.visible')) { - this.updateBodySize(); - } - })); - - this.updateListSelection(); - } - - private splice(index: number, deleteCount: number, repositories: ISCMRepository[] = []): void { - this.list.splice(index, deleteCount, repositories); - - const empty = this.list.length === 0; - toggleClass(this.element, 'empty', empty); - - this.updateBodySize(); - } - - focus(): void { - this.list.domFocus(); - } - - protected layoutBody(height: number, width: number): void { - super.layoutBody(height, width); - this.list.layout(height, width); - } - - private updateBodySize(): void { - const visibleCount = this.configurationService.getValue('scm.providers.visible'); - const empty = this.list.length === 0; - const size = Math.min(this.viewModel.repositories.length, visibleCount) * 22; - - this.minimumBodySize = visibleCount === 0 ? 22 : size; - this.maximumBodySize = visibleCount === 0 ? Number.POSITIVE_INFINITY : empty ? Number.POSITIVE_INFINITY : size; - } - - private onListContextMenu(e: IListContextMenuEvent): void { - if (!e.element) { - return; - } - - const repository = e.element; - const contextKeyService = this.contextKeyService.createScoped(); - const scmProviderKey = contextKeyService.createKey('scmProvider', undefined); - scmProviderKey.set(repository.provider.contextValue); - - const menu = this.menuService.createMenu(MenuId.SCMSourceControl, contextKeyService); - const primary: IAction[] = []; - const secondary: IAction[] = []; - const result = { primary, secondary }; - - const disposable = createAndFillInContextMenuActions(menu, { shouldForwardArgs: true }, result, this.contextMenuService, g => g === 'inline'); - - menu.dispose(); - contextKeyService.dispose(); - - if (repository.provider.rootUri) { - secondary.push(new Action('_openInTerminal', localize('open in terminal', "Open In Terminal"), undefined, true, async () => { - await this.commandService.executeCommand('openInTerminal', repository.provider.rootUri); - })); - } - - if (secondary.length === 0) { - return; - } - - this.contextMenuService.showContextMenu({ - getAnchor: () => e.anchor, - getActions: () => secondary, - getActionsContext: () => repository.provider - }); - - disposable.dispose(); - } - - private onListSelectionChange(e: IListEvent): void { - if (e.browserEvent && e.elements.length > 0) { - const scrollTop = this.list.scrollTop; - this.viewModel.setVisibleRepositories(e.elements); - this.list.scrollTop = scrollTop; - } - } - - private onListFocusChange(e: IListEvent): void { - if (e.browserEvent && e.elements.length > 0) { - e.elements[0].focus(); - } - } - - private updateListSelection(): void { - const set = new Set(); - - for (const repository of this.viewModel.visibleRepositories) { - set.add(repository); - } - - const selection: number[] = []; - - for (let i = 0; i < this.list.length; i++) { - if (set.has(this.list.element(i))) { - selection.push(i); - } - } - - this.list.setSelection(selection); - - if (selection.length > 0) { - this.list.setFocus([selection[0]]); - } - } -} - -export class MainPaneDescriptor implements IViewDescriptor { - - readonly id = MainPane.ID; - readonly name = MainPane.TITLE; - readonly containerIcon = Codicon.sourceControl.classNames; - readonly ctorDescriptor: SyncDescriptor; - readonly canToggleVisibility = true; - readonly hideByDefault = false; - readonly order = -1000; - readonly workspace = true; - readonly when = ContextKeyExpr.or(ContextKeyExpr.equals('config.scm.alwaysShowProviders', true), ContextKeyExpr.and(ContextKeyExpr.notEquals('scm.providerCount', 0), ContextKeyExpr.notEquals('scm.providerCount', 1))); - - constructor(viewModel: IViewModel) { - this.ctorDescriptor = new SyncDescriptor(MainPane, [viewModel]); - } -} diff --git a/src/vs/workbench/contrib/scm/browser/media/scm.css b/src/vs/workbench/contrib/scm/browser/media/scm.css new file mode 100644 index 0000000000..325557f09e --- /dev/null +++ b/src/vs/workbench/contrib/scm/browser/media/scm.css @@ -0,0 +1,216 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +.scm-view { + height: 100%; + position: relative; +} + +.scm-view .monaco-tl-contents > div { + margin-right: 12px; + overflow: hidden; +} + +.scm-view .count { + display: flex; +} + +.scm-view .count { + margin-left: 6px; +} + +.scm-view .count.hidden { + display: none; +} + +.scm-view .scm-provider { + display: flex; + flex-direction: column; + height: 100%; + align-items: center; + flex-flow: nowrap; +} + +.scm-view .scm-provider > .label { + display: flex; + flex-shrink: 1; + overflow: hidden; +} + +.scm-view .scm-provider > .actions { + flex: 1; + padding-left: 10px; + overflow: hidden; + justify-content: flex-end; +} + +.scm-view .scm-provider > .actions .monaco-action-bar .action-item { + margin-left: 4px; + text-overflow: ellipsis; + display: flex; + align-items: center; + min-width: 14px; +} + +.scm-view .scm-provider > .actions .monaco-action-bar .action-label { + text-overflow: ellipsis; + overflow: hidden; + min-width: 14px; /* for flex */ + height: 100%; +} + +.scm-view .scm-provider > .actions .monaco-action-bar .action-label .codicon { + vertical-align: sub; + display: inline-flex; +} + +.scm-view .scm-provider > .actions .monaco-action-bar .action-item:last-of-type { + padding-right: 0; +} + +.scm-view .scm-provider > .body { + flex-grow: 1; +} + +.scm-view .monaco-list-row { + line-height: 22px; +} + +.scm-view .monaco-list-row .resource-group { + display: flex; + height: 100%; + align-items: center; +} + +.scm-view .monaco-list-row .resource-group > .name { + flex: 1; + overflow: hidden; + text-overflow: ellipsis; +} + +.scm-view .monaco-list-row .resource { + display: flex; + height: 100%; +} + +.scm-view .monaco-list-row .resource.faded { + opacity: 0.7; +} + +.scm-view .monaco-list-row .resource > .name { + flex: 1; + overflow: hidden; +} + +.scm-view .monaco-list-row .resource > .name > .monaco-icon-label::after { + padding-right: 3px; +} + +.scm-view .monaco-list-row .resource > .name.strike-through > .monaco-icon-label > .monaco-icon-label-container > .monaco-icon-name-container > .label-name { + text-decoration: line-through; +} + +.scm-view .monaco-list-row .resource > .decoration-icon { + width: 16px; + height: 100%; + background-repeat: no-repeat; + background-position: 50% 50%; + margin-right: 8px; +} + +.scm-view .monaco-list .monaco-list-row .resource > .name > .monaco-icon-label > .actions { + flex-grow: 100; +} + +.scm-view .monaco-list .monaco-list-row .resource-group > .actions, +.scm-view .monaco-list .monaco-list-row .resource > .name > .monaco-icon-label > .actions { + display: none; + max-width: fit-content; +} + +.scm-view .monaco-list .monaco-list-row:hover .resource-group > .actions, +.scm-view .monaco-list .monaco-list-row.selected .resource-group > .actions, +.scm-view .monaco-list .monaco-list-row.focused .resource-group > .actions, +.scm-view .monaco-list .monaco-list-row:hover .resource > .name > .monaco-icon-label > .actions, +.scm-view .monaco-list .monaco-list-row.selected .resource > .name > .monaco-icon-label > .actions, +.scm-view .monaco-list .monaco-list-row.focused .resource > .name > .monaco-icon-label > .actions, +.scm-view .monaco-list:not(.selection-multiple) .monaco-list-row .resource:hover > .actions { + display: block; +} + +.scm-view.show-actions .scm-provider > .actions, +.scm-view.show-actions > .monaco-list .monaco-list-row .resource-group > .actions, +.scm-view.show-actions > .monaco-list .monaco-list-row .resource > .name > .monaco-icon-label > .actions { + display: block; +} + +.scm-view .monaco-list-row .resource > .name > .monaco-icon-label > .actions .action-label, +.scm-view .monaco-list-row .resource-group > .actions .action-label { + width: 16px; + height: 100%; + background-position: 50% 50%; + background-repeat: no-repeat; +} + +.scm-view .monaco-list-row .resource > .name > .monaco-icon-label > .actions .action-label.codicon { + line-height: 22px; +} + +.scm-view .scm-input { + height: 100%; + margin-left: 9px; +} + +.scm-view .scm-editor { + box-sizing: border-box; + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + justify-content: center; +} + +.scm-view .scm-editor.hidden { + display: none; +} + +.scm-view .scm-editor-container { + position: relative; + box-sizing: border-box; + padding: 1px; + outline-offset: -1px; +} + +.scm-editor-validation { + box-sizing: border-box; + font-size: 0.9em; + padding: 1px 3px; + display: block; + border-width: 1px; + border-style: solid; + border-top: none; +} + +.scm-view .scm-editor-placeholder { + position: absolute; + pointer-events: none; + z-index: 1; + padding: 2px 4px 3px 4px; + box-sizing: border-box; + width: 100%; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.scm-view .scm-editor-placeholder.hidden { + display: none; +} + +.scm-view .scm-editor-container .monaco-editor-background, +.scm-view .scm-editor-container .monaco-editor, +.scm-view .scm-editor-container .mtk1 { + color: inherit; +} diff --git a/src/vs/workbench/contrib/scm/browser/media/scmViewlet.css b/src/vs/workbench/contrib/scm/browser/media/scmViewlet.css deleted file mode 100644 index 2bc2e0de9f..0000000000 --- a/src/vs/workbench/contrib/scm/browser/media/scmViewlet.css +++ /dev/null @@ -1,215 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Source EULA. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-workbench .viewlet.scm-viewlet .collapsible.header .actions { - width: initial; - flex: 1; -} - -.scm-viewlet .scm-status { - height: 100%; - position: relative; -} - -.scm-viewlet .monaco-list-row > .scm-provider { - display: flex; - align-items: center; - flex-wrap: wrap; - height: 100%; - padding: 0 12px 0 20px; -} - -.scm-viewlet .monaco-list-row > .scm-provider > .monaco-action-bar { - flex: 1; -} - -.scm-viewlet .monaco-list-row > .scm-provider > .monaco-action-bar .action-item { - padding: 0 4px; - overflow: hidden; - text-overflow: ellipsis; - display: flex; - align-items: center; - min-width: 14px; -} - -.scm-viewlet .monaco-list-row > .scm-provider > .monaco-action-bar .action-label { - text-overflow: ellipsis; - overflow: hidden; - min-width: 14px; /* minimum size of icons */ -} - -.scm-viewlet .monaco-list-row > .scm-provider > .monaco-action-bar .action-label .codicon { - font-size: 14px; - vertical-align: sub; - display: inline-flex; -} - -.scm-viewlet .monaco-list-row > .scm-provider > .monaco-action-bar .action-item:last-of-type { - padding-right: 0; -} - -.scm-viewlet .scm-provider > .name, -.scm-viewlet .scm-provider > .count { - display: flex; - align-items: center; -} - -.scm-viewlet .scm-provider > .count { - margin: 0 0.5em; -} - -.scm-viewlet .scm-provider > .count.hidden { - display: none; -} - -.scm-viewlet .scm-provider > .type, -.scm-viewlet .scm-provider > .name > .type { - opacity: 0.7; - margin-left: 0.5em; - font-size: 0.9em; -} - -.scm-viewlet .monaco-list-row { - line-height: 22px; -} - -.scm-viewlet .monaco-list-row .resource-group { - display: flex; - height: 100%; - align-items: center; -} - -.scm-viewlet .monaco-list-row .resource-group > .name { - flex: 1; - font-size: 11px; - font-weight: bold; - overflow: hidden; - text-overflow: ellipsis; -} - -.scm-viewlet .monaco-list-row .resource { - display: flex; - height: 100%; -} - -.scm-viewlet .monaco-list-row .resource.faded { - opacity: 0.7; -} - -.scm-viewlet .monaco-list-row .resource > .name { - flex: 1; - overflow: hidden; -} - -.scm-viewlet .monaco-list-row .resource > .name.strike-through > .monaco-icon-label > .monaco-icon-label-container > .monaco-icon-name-container > .label-name { - text-decoration: line-through; -} - -.scm-viewlet .monaco-list-row .resource-group > .count { - padding: 0 12px 0 8px; - display: flex; -} - -.scm-viewlet .monaco-list-row .resource > .decoration-icon { - width: 16px; - height: 100%; - background-repeat: no-repeat; - background-position: 50% 50%; - margin-right: 8px; -} - -.scm-viewlet .monaco-list .monaco-list-row .resource > .name > .monaco-icon-label > .actions { - flex-grow: 100; -} - -.scm-viewlet .monaco-list .monaco-list-row .resource-group > .actions, -.scm-viewlet .monaco-list .monaco-list-row .resource > .name > .monaco-icon-label > .actions { - display: none; - max-width: fit-content; -} - -.scm-viewlet .monaco-list .monaco-list-row:hover .resource-group > .actions, -.scm-viewlet .monaco-list .monaco-list-row:hover .resource > .name > .monaco-icon-label > .actions, -.scm-viewlet .monaco-list .monaco-list-row.selected .resource-group > .actions, -.scm-viewlet .monaco-list .monaco-list-row.focused .resource-group > .actions, -.scm-viewlet .monaco-list .monaco-list-row.selected .resource > .name > .monaco-icon-label > .actions, -.scm-viewlet .monaco-list .monaco-list-row.focused .resource > .name > .monaco-icon-label > .actions, -.scm-viewlet .monaco-list:not(.selection-multiple) .monaco-list-row .resource:hover > .actions { - display: block; -} - -.scm-viewlet .scm-status.show-actions > .monaco-list .monaco-list-row .resource-group > .actions, -.scm-viewlet .scm-status.show-actions > .monaco-list .monaco-list-row .resource > .name > .monaco-icon-label > .actions { - display: block; -} - -.scm-viewlet .monaco-list-row .resource > .name > .monaco-icon-label > .actions .action-label, -.scm-viewlet .monaco-list-row .resource-group > .actions .action-label { - width: 16px; - height: 100%; - background-position: 50% 50%; - background-repeat: no-repeat; -} - -.scm-viewlet .monaco-list-row .resource > .name > .monaco-icon-label > .actions .action-label.codicon { - line-height: 22px; -} - -.scm-viewlet .scm-editor { - box-sizing: border-box; - padding: 5px 12px 5px 16px; -} - -.scm-viewlet .scm-editor.hidden { - display: none; -} - -.scm-viewlet .scm-editor-container { - padding: 1px; - position: relative; - outline-offset: -1px; -} - -.scm-viewlet .scm-editor-container > .scm-editor-validation { - position: absolute; - width: 100%; - z-index: 10; - left: 0px; - box-sizing: border-box; - font-size: 0.9em; - padding: 1px 3px; - display: none; -} - -.scm-viewlet .scm-editor-container.synthetic-focus > .scm-editor-validation { - display: block; -} - -.scm-viewlet .scm-editor-placeholder { - position: absolute; - pointer-events: none; - z-index: 1; - margin: 1px; - padding: 3px 4px; - box-sizing: border-box; - width: 100%; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -.scm-viewlet .scm-editor-placeholder.hidden { - display: none; -} - -.scm-viewlet .scm-editor-container .monaco-editor-background, -.scm-viewlet .scm-editor-container .monaco-editor, -.scm-viewlet .scm-editor-container .mtk1 { - color: inherit; -} - -.scm-viewlet .scm-status.show-file-icons.hide-arrows.tree-view-mode .monaco-tl-indent .indent-guide:first-child { - border: none; -} diff --git a/src/vs/workbench/contrib/scm/browser/menus.ts b/src/vs/workbench/contrib/scm/browser/menus.ts index 44ab7feea7..bc67998592 100644 --- a/src/vs/workbench/contrib/scm/browser/menus.ts +++ b/src/vs/workbench/contrib/scm/browser/menus.ts @@ -3,18 +3,21 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import 'vs/css!./media/scmViewlet'; +import 'vs/css!./media/scm'; import { Event, Emitter } from 'vs/base/common/event'; import { IDisposable, Disposable, DisposableStore, combinedDisposable } from 'vs/base/common/lifecycle'; import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { IMenuService, MenuId, IMenu } from 'vs/platform/actions/common/actions'; -import { IAction } from 'vs/base/common/actions'; +import { IAction, Action } from 'vs/base/common/actions'; import { createAndFillInContextMenuActions, createAndFillInActionBarActions } from 'vs/platform/actions/browser/menuEntryActionViewItem'; -import { ISCMProvider, ISCMResource, ISCMResourceGroup } from 'vs/workbench/contrib/scm/common/scm'; +import { ISCMResource, ISCMResourceGroup, ISCMProvider, ISCMRepository } from 'vs/workbench/contrib/scm/common/scm'; import { isSCMResource } from './util'; import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; import { equals } from 'vs/base/common/arrays'; -import { ISplice } from 'vs/base/common/sequence'; +import { ISplice, ISequence } from 'vs/base/common/sequence'; +import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; +import { localize } from 'vs/nls'; +import { ICommandService } from 'vs/platform/commands/common/commands'; function actionEquals(a: IAction, b: IAction): boolean { return a.id === b.id; @@ -35,11 +38,11 @@ export function getSCMResourceContextKey(resource: ISCMResourceGroup | ISCMResou return isSCMResource(resource) ? resource.resourceGroup.id : resource.id; } -export class SCMMenus implements IDisposable { +export class SCMRepositoryMenus implements IDisposable { private contextKeyService: IContextKeyService; - private titleMenu: IMenu; + readonly titleMenu: IMenu; private titleActionDisposable: IDisposable = Disposable.None; private titleActions: IAction[] = []; private titleSecondaryActions: IAction[] = []; @@ -53,8 +56,9 @@ export class SCMMenus implements IDisposable { private readonly disposables = new DisposableStore(); constructor( - provider: ISCMProvider | undefined, + readonly provider: ISCMProvider | undefined, @IContextKeyService contextKeyService: IContextKeyService, + @ICommandService private readonly commandService: ICommandService, @IMenuService private readonly menuService: IMenuService, @IContextMenuService private readonly contextMenuService: IContextMenuService ) { @@ -63,15 +67,14 @@ export class SCMMenus implements IDisposable { if (provider) { scmProviderKey.set(provider.contextValue); - this.onDidSpliceGroups({ start: 0, deleteCount: 0, toInsert: provider.groups.elements }); provider.groups.onDidSplice(this.onDidSpliceGroups, this, this.disposables); + this.onDidSpliceGroups({ start: 0, deleteCount: 0, toInsert: provider.groups.elements }); } else { scmProviderKey.set(''); } this.titleMenu = this.menuService.createMenu(MenuId.SCMTitle, this.contextKeyService); this.disposables.add(this.titleMenu); - this.titleMenu.onDidChange(this.updateTitleActions, this, this.disposables); this.updateTitleActions(); } @@ -103,6 +106,34 @@ export class SCMMenus implements IDisposable { return this.titleSecondaryActions; } + getRepositoryContextActions(): IAction[] { + if (!this.provider) { + return []; + } + + const contextKeyService = this.contextKeyService.createScoped(); + const scmProviderKey = contextKeyService.createKey('scmProvider', undefined); + scmProviderKey.set(this.provider.contextValue); + + const menu = this.menuService.createMenu(MenuId.SCMSourceControl, contextKeyService); + const primary: IAction[] = []; + const secondary: IAction[] = []; + const result = { primary, secondary }; + const disposable = createAndFillInContextMenuActions(menu, { shouldForwardArgs: true }, result, this.contextMenuService, g => g === 'inline'); + + disposable.dispose(); + menu.dispose(); + contextKeyService.dispose(); + + if (this.provider.rootUri) { + secondary.push(new Action('_openInTerminal', localize('open in terminal', "Open In Terminal"), undefined, true, async () => { + await this.commandService.executeCommand('openInTerminal', this.provider!.rootUri); + })); + } + + return secondary; + } + getResourceGroupContextActions(group: ISCMResourceGroup): IAction[] { return this.getActions(MenuId.SCMResourceGroupContext, group).secondary; } @@ -183,3 +214,49 @@ export class SCMMenus implements IDisposable { this.resourceGroupMenuEntries.forEach(e => e.disposable.dispose()); } } + +export class SCMMenus { + + private readonly disposables = new DisposableStore(); + private readonly entries: { repository: ISCMRepository, dispose: () => void }[] = []; + private readonly menus = new Map(); + + constructor( + repositories: ISequence, + @IInstantiationService private instantiationService: IInstantiationService + ) { + repositories.onDidSplice(this.onDidSplice, this, this.disposables); + this.onDidSplice({ start: 0, deleteCount: 0, toInsert: repositories.elements }); + } + + getRepositoryMenus(provider: ISCMProvider): SCMRepositoryMenus { + if (!this.menus.has(provider)) { + throw new Error('SCM Repository menu not found'); + } + + return this.menus.get(provider)!; + } + + private onDidSplice({ start, deleteCount, toInsert }: ISplice): void { + const entriesToInsert = toInsert.map(repository => { + const menus = this.instantiationService.createInstance(SCMRepositoryMenus, repository.provider); + const dispose = () => { + menus.dispose(); + this.menus.delete(repository.provider); + }; + + this.menus.set(repository.provider, menus); + return { repository, dispose }; + }); + + const deletedEntries = this.entries.splice(start, deleteCount, ...entriesToInsert); + + for (const entry of deletedEntries) { + entry.dispose(); + } + } + + dispose(): void { + this.disposables.dispose(); + } +} diff --git a/src/vs/workbench/contrib/scm/browser/scm.contribution.ts b/src/vs/workbench/contrib/scm/browser/scm.contribution.ts index 4afe319040..a67e0b439f 100644 --- a/src/vs/workbench/contrib/scm/browser/scm.contribution.ts +++ b/src/vs/workbench/contrib/scm/browser/scm.contribution.ts @@ -8,7 +8,7 @@ import { Registry } from 'vs/platform/registry/common/platform'; import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions } from 'vs/workbench/common/contributions'; import { DirtyDiffWorkbenchController } from './dirtydiffDecorator'; import { ShowViewletAction } from 'vs/workbench/browser/viewlet'; -import { VIEWLET_ID, ISCMRepository, ISCMService } from 'vs/workbench/contrib/scm/common/scm'; +import { VIEWLET_ID, ISCMRepository, ISCMService, VIEW_PANE_ID } from 'vs/workbench/contrib/scm/common/scm'; import { IWorkbenchActionRegistry, Extensions as WorkbenchActionExtensions } from 'vs/workbench/common/actions'; import { KeyMod, KeyCode } from 'vs/base/common/keyCodes'; import { SyncActionDescriptor, MenuRegistry, MenuId } from 'vs/platform/actions/common/actions'; @@ -23,11 +23,12 @@ import { KeybindingsRegistry, KeybindingWeight } from 'vs/platform/keybinding/co import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { SCMService } from 'vs/workbench/contrib/scm/common/scmService'; -import { IViewContainersRegistry, ViewContainerLocation, Extensions as ViewContainerExtensions } from 'vs/workbench/common/views'; -import { SCMViewPaneContainer } from 'vs/workbench/contrib/scm/browser/scmViewlet'; +import { IViewContainersRegistry, ViewContainerLocation, Extensions as ViewContainerExtensions, IViewsRegistry } from 'vs/workbench/common/views'; +import { SCMViewPaneContainer } from 'vs/workbench/contrib/scm/browser/scmViewPaneContainer'; import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors'; import { ModesRegistry } from 'vs/editor/common/modes/modesRegistry'; import { Codicon } from 'vs/base/common/codicons'; +import { SCMViewPane } from 'vs/workbench/contrib/scm/browser/scmViewPane'; class OpenSCMViewletAction extends ShowViewletAction { @@ -48,16 +49,33 @@ ModesRegistry.registerLanguage({ Registry.as(WorkbenchExtensions.Workbench) .registerWorkbenchContribution(DirtyDiffWorkbenchController, LifecyclePhase.Restored); -Registry.as(ViewContainerExtensions.ViewContainersRegistry).registerViewContainer({ +const viewContainer = Registry.as(ViewContainerExtensions.ViewContainersRegistry).registerViewContainer({ id: VIEWLET_ID, name: localize('source control', "Source Control"), ctorDescriptor: new SyncDescriptor(SCMViewPaneContainer), storageId: 'workbench.scm.views.state', icon: Codicon.sourceControl.classNames, alwaysUseContainerInfo: true, - order: 12 // {{SQL CARBON EDIT}} + order: 12, // {{SQL CARBON EDIT}} + hideIfEmpty: true }, ViewContainerLocation.Sidebar); +const viewsRegistry = Registry.as(ViewContainerExtensions.ViewsRegistry); + +viewsRegistry.registerViewWelcomeContent(VIEW_PANE_ID, { + content: localize('no open repo', "No source control providers registered."), + when: 'default' +}); + +viewsRegistry.registerViews([{ + id: VIEW_PANE_ID, + name: localize('source control', "Source Control"), + ctorDescriptor: new SyncDescriptor(SCMViewPane), + canToggleVisibility: true, + workspace: true, + canMoveView: true +}], viewContainer); + Registry.as(WorkbenchExtensions.Workbench) .registerWorkbenchContribution(SCMStatusController, LifecyclePhase.Restored); @@ -80,16 +98,6 @@ Registry.as(ConfigurationExtensions.Configuration).regis type: 'object', scope: ConfigurationScope.RESOURCE, properties: { - 'scm.alwaysShowProviders': { - type: 'boolean', - description: localize('alwaysShowProviders', "Controls whether to show the Source Control Provider section even when there's only one Provider registered."), - default: false - }, - 'scm.providers.visible': { - type: 'number', - description: localize('providersVisible', "Controls how many providers are visible in the Source Control Provider section. Set to `0` to be able to manually resize the view."), - default: 10 - }, 'scm.diffDecorations': { type: 'string', enum: ['all', 'gutter', 'overview', 'minimap', 'none'], diff --git a/src/vs/workbench/contrib/scm/browser/repositoryPane.ts b/src/vs/workbench/contrib/scm/browser/scmViewPane.ts similarity index 53% rename from src/vs/workbench/contrib/scm/browser/repositoryPane.ts rename to src/vs/workbench/contrib/scm/browser/scmViewPane.ts index 9ff03562bc..a656b419d3 100644 --- a/src/vs/workbench/contrib/scm/browser/repositoryPane.ts +++ b/src/vs/workbench/contrib/scm/browser/scmViewPane.ts @@ -3,29 +3,29 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import 'vs/css!./media/scmViewlet'; +import 'vs/css!./media/scm'; import { Event, Emitter } from 'vs/base/common/event'; import { basename, dirname, isEqual } from 'vs/base/common/resources'; import { IDisposable, Disposable, DisposableStore, combinedDisposable } from 'vs/base/common/lifecycle'; import { ViewPane, IViewPaneOptions } from 'vs/workbench/browser/parts/views/viewPaneContainer'; -import { append, $, addClass, toggleClass, trackFocus, removeClass } from 'vs/base/browser/dom'; +import { append, $, addClass, toggleClass, removeClass, Dimension } from 'vs/base/browser/dom'; import { IListVirtualDelegate, IIdentityProvider } from 'vs/base/browser/ui/list/list'; -import { ISCMRepository, ISCMResourceGroup, ISCMResource, InputValidationType } from 'vs/workbench/contrib/scm/common/scm'; +import { ISCMResourceGroup, ISCMResource, InputValidationType, ISCMService, ISCMRepository, ISCMInput, IInputValidation } from 'vs/workbench/contrib/scm/common/scm'; import { ResourceLabels, IResourceLabel } from 'vs/workbench/browser/labels'; import { CountBadge } from 'vs/base/browser/ui/countBadge/countBadge'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IContextViewService, IContextMenuService } from 'vs/platform/contextview/browser/contextView'; -import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; +import { IContextKeyService, IContextKey } from 'vs/platform/contextkey/common/contextkey'; import { ICommandService } from 'vs/platform/commands/common/commands'; import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { MenuItemAction, IMenuService } from 'vs/platform/actions/common/actions'; import { IAction, IActionViewItem, ActionRunner, Action, RadioGroup } from 'vs/base/common/actions'; import { ContextAwareMenuEntryActionViewItem } from 'vs/platform/actions/browser/menuEntryActionViewItem'; import { SCMMenus } from './menus'; -import { ActionBar, IActionViewItemProvider, Separator } from 'vs/base/browser/ui/actionbar/actionbar'; +import { ActionBar, IActionViewItemProvider, Separator, ActionViewItem } from 'vs/base/browser/ui/actionbar/actionbar'; import { IThemeService, LIGHT, registerThemingParticipant, IFileIconTheme } from 'vs/platform/theme/common/themeService'; -import { isSCMResource, isSCMResourceGroup, connectPrimaryMenuToInlineActionBar } from './util'; +import { isSCMResource, isSCMResourceGroup, connectPrimaryMenuToInlineActionBar, isSCMRepository, isSCMInput, connectPrimaryMenu } from './util'; import { attachBadgeStyler } from 'vs/platform/theme/common/styler'; import { WorkbenchCompressibleObjectTree, IOpenEvent } from 'vs/platform/list/browser/listService'; import { IConfigurationService, ConfigurationTarget } from 'vs/platform/configuration/common/configuration'; @@ -33,7 +33,7 @@ import { disposableTimeout, ThrottledDelayer } from 'vs/base/common/async'; import { INotificationService } from 'vs/platform/notification/common/notification'; import { ITreeNode, ITreeFilter, ITreeSorter, ITreeContextMenuEvent } from 'vs/base/browser/ui/tree/tree'; import { ResourceTree, IResourceNode } from 'vs/base/common/resourceTree'; -import { ISequence, ISplice } from 'vs/base/common/sequence'; +import { ISequence, ISplice, SimpleSequence } from 'vs/base/common/sequence'; import { ICompressibleTreeRenderer, ICompressibleKeyboardNavigationLabelProvider } from 'vs/base/browser/ui/tree/objectTree'; import { Iterable } from 'vs/base/common/iterator'; import { ICompressedTreeNode, ICompressedTreeElement } from 'vs/base/browser/ui/tree/compressedObjectTreeModel'; @@ -41,14 +41,13 @@ import { URI } from 'vs/base/common/uri'; import { FileKind } from 'vs/platform/files/common/files'; import { compareFileNames, comparePaths } from 'vs/base/common/comparers'; import { FuzzyScore, createMatches, IMatch } from 'vs/base/common/filters'; -import { IViewDescriptor, IViewDescriptorService } from 'vs/workbench/common/views'; +import { IViewDescriptorService, ViewContainerLocation } from 'vs/workbench/common/views'; import { localize } from 'vs/nls'; -import { flatten, find } from 'vs/base/common/arrays'; +import { flatten } from 'vs/base/common/arrays'; import { memoize } from 'vs/base/common/decorators'; import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; import { toResource, SideBySideEditor } from 'vs/workbench/common/editor'; -import { SIDE_BAR_BACKGROUND } from 'vs/workbench/common/theme'; -import { Hasher } from 'vs/base/common/hash'; +import { SIDE_BAR_BACKGROUND, SIDE_BAR_BORDER, PANEL_BACKGROUND } from 'vs/workbench/common/theme'; import { CodeEditorWidget, ICodeEditorWidgetOptions } from 'vs/editor/browser/widget/codeEditorWidget'; import { ITextModel } from 'vs/editor/common/model'; import { IEditorConstructionOptions } from 'vs/editor/common/config/editorOptions'; @@ -58,9 +57,8 @@ import { EditorExtensionsRegistry } from 'vs/editor/browser/editorExtensions'; import { MenuPreventer } from 'vs/workbench/contrib/codeEditor/browser/menuPreventer'; import { SelectionClipboardContributionID } from 'vs/workbench/contrib/codeEditor/browser/selectionClipboard'; import { ContextMenuController } from 'vs/editor/contrib/contextmenu/contextmenu'; -import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors'; import * as platform from 'vs/base/common/platform'; -import { format, compare } from 'vs/base/common/strings'; +import { escape, compare, format } from 'vs/base/common/strings'; import { inputPlaceholderForeground, inputValidationInfoBorder, inputValidationWarningBorder, inputValidationErrorBorder, inputValidationInfoBackground, inputValidationInfoForeground, inputValidationWarningBackground, inputValidationWarningForeground, inputValidationErrorBackground, inputValidationErrorForeground, inputBackground, inputForeground, inputBorder, focusBorder } from 'vs/platform/theme/common/colorRegistry'; import { SuggestController } from 'vs/editor/contrib/suggest/suggestController'; import { SnippetController2 } from 'vs/editor/contrib/snippet/snippetController2'; @@ -77,8 +75,12 @@ import { ILabelService } from 'vs/platform/label/common/label'; import { ContextSubMenu } from 'vs/base/browser/contextmenu'; import { KeyCode } from 'vs/base/common/keyCodes'; import { DEFAULT_FONT_FAMILY } from 'vs/workbench/browser/style'; +import { Command } from 'vs/editor/common/modes'; +import { renderCodicons } from 'vs/base/common/codicons'; +import { ToolBar } from 'vs/base/browser/ui/toolbar/toolbar'; +import { AnchorAlignment } from 'vs/base/browser/ui/contextview/contextview'; -type TreeElement = ISCMResourceGroup | IResourceNode | ISCMResource; +type TreeElement = ISCMRepository | ISCMInput | ISCMResourceGroup | IResourceNode | ISCMResource; function splitMatches(uri: URI, filterData: FuzzyScore | undefined): [IMatch[] | undefined, IMatch[] | undefined] { let matches: IMatch[] | undefined; @@ -113,6 +115,235 @@ function splitMatches(uri: URI, filterData: FuzzyScore | undefined): [IMatch[] | return [matches, descriptionMatches]; } +class StatusBarAction extends Action { + + constructor( + private command: Command, + private commandService: ICommandService + ) { + super(`statusbaraction{${command.id}}`, command.title, '', true); + this.tooltip = command.tooltip || ''; + } + + run(): Promise { + return this.commandService.executeCommand(this.command.id, ...(this.command.arguments || [])); + } +} + +class StatusBarActionViewItem extends ActionViewItem { + + constructor(action: StatusBarAction) { + super(null, action, {}); + } + + updateLabel(): void { + if (this.options.label && this.label) { + this.label.innerHTML = renderCodicons(escape(this.getAction().label)); + } + } +} + +interface ISCMLayout { + height: number | undefined; + width: number | undefined; + readonly onDidChange: Event; +} + +interface RepositoryTemplate { + readonly name: HTMLElement; + readonly countContainer: HTMLElement; + readonly count: CountBadge; + readonly toolBar: ToolBar; + disposable: IDisposable; + readonly templateDisposable: IDisposable; +} + +class RepositoryRenderer implements ICompressibleTreeRenderer { + + static readonly TEMPLATE_ID = 'repository'; + get templateId(): string { return RepositoryRenderer.TEMPLATE_ID; } + + constructor( + private actionViewItemProvider: IActionViewItemProvider, + private menus: SCMMenus, + @ICommandService private commandService: ICommandService, + @IContextMenuService private contextMenuService: IContextMenuService, + @IThemeService private themeService: IThemeService + ) { } + + renderTemplate(container: HTMLElement): RepositoryTemplate { + // hack + addClass(container.parentElement!.parentElement!.querySelector('.monaco-tl-twistie')! as HTMLElement, 'force-twistie'); + + const provider = append(container, $('.scm-provider')); + const label = append(provider, $('.label')); + const name = append(label, $('span.name')); + const actions = append(provider, $('.actions')); + const toolBar = new ToolBar(actions, this.contextMenuService, { actionViewItemProvider: this.actionViewItemProvider }); + const countContainer = append(provider, $('.count')); + const count = new CountBadge(countContainer); + const badgeStyler = attachBadgeStyler(count, this.themeService); + const visibilityDisposable = toolBar.onDidChangeDropdownVisibility(e => toggleClass(provider, 'active', e)); + + const disposable = Disposable.None; + const templateDisposable = combinedDisposable(visibilityDisposable, toolBar, badgeStyler); + + return { name, countContainer, count, toolBar, disposable, templateDisposable }; + } + + renderElement(node: ITreeNode, index: number, templateData: RepositoryTemplate, height: number | undefined): void { + templateData.disposable.dispose(); + + const disposables = new DisposableStore(); + const repository = node.element; + + if (repository.provider.rootUri) { + templateData.name.textContent = basename(repository.provider.rootUri); + } else { + templateData.name.textContent = repository.provider.label; + } + + let statusPrimaryActions: IAction[] = []; + let menuPrimaryActions: IAction[] = []; + let menuSecondaryActions: IAction[] = []; + const updateToolbar = () => { + templateData.toolBar.setActions([...statusPrimaryActions, ...menuPrimaryActions], menuSecondaryActions); + }; + + const onDidChangeProvider = () => { + const commands = repository.provider.statusBarCommands || []; + statusPrimaryActions = commands.map(c => new StatusBarAction(c, this.commandService)); + updateToolbar(); + + const count = repository.provider.count || 0; + templateData.count.setCount(count); + }; + disposables.add(repository.provider.onDidChange(onDidChangeProvider, null)); + onDidChangeProvider(); + + const menus = this.menus.getRepositoryMenus(repository.provider); + disposables.add(connectPrimaryMenu(menus.titleMenu, (primary, secondary) => { + menuPrimaryActions = primary; + menuSecondaryActions = secondary; + updateToolbar(); + })); + templateData.toolBar.context = repository.provider; + + templateData.disposable = disposables; + } + + renderCompressedElements(): void { + throw new Error('Should never happen since node is incompressible'); + } + + disposeElement(group: ITreeNode, index: number, template: RepositoryTemplate): void { + template.disposable.dispose(); + } + + disposeTemplate(templateData: RepositoryTemplate): void { + templateData.disposable.dispose(); + templateData.templateDisposable.dispose(); + } +} + +interface InputTemplate { + readonly inputWidget: SCMInputWidget; + disposable: IDisposable; + readonly templateDisposable: IDisposable; +} + +class InputRenderer implements ICompressibleTreeRenderer { + + static readonly DEFAULT_HEIGHT = 26; + + static readonly TEMPLATE_ID = 'input'; + get templateId(): string { return InputRenderer.TEMPLATE_ID; } + + private inputWidgets = new Map(); + private contentHeights = new WeakMap(); + + constructor( + private outerLayout: ISCMLayout, + private updateHeight: (input: ISCMInput, height: number) => void, + @IInstantiationService private instantiationService: IInstantiationService, + ) { } + + renderTemplate(container: HTMLElement): InputTemplate { + // hack + addClass(container.parentElement!.parentElement!.querySelector('.monaco-tl-twistie')! as HTMLElement, 'force-no-twistie'); + + const inputElement = append(container, $('.scm-input')); + const inputWidget = this.instantiationService.createInstance(SCMInputWidget, inputElement); + + return { inputWidget, disposable: Disposable.None, templateDisposable: inputWidget }; + } + + renderElement(node: ITreeNode, index: number, templateData: InputTemplate): void { + templateData.disposable.dispose(); + + const disposables = new DisposableStore(); + const input = node.element; + templateData.inputWidget.input = input; + disposables.add({ dispose: () => templateData.inputWidget.input = undefined }); + + // Remember widget + this.inputWidgets.set(input, templateData.inputWidget); + disposables.add({ dispose: () => this.inputWidgets.delete(input) }); + + // Rerender the element whenever the editor content height changes + const onDidChangeContentHeight = () => { + const contentHeight = templateData.inputWidget.getContentHeight(); + const lastContentHeight = this.contentHeights.get(input)!; + this.contentHeights.set(input, contentHeight); + + if (lastContentHeight !== contentHeight) { + if (lastContentHeight !== undefined) { + this.updateHeight(input, contentHeight + 10); + templateData.inputWidget.layout(); + } else if (contentHeight !== InputRenderer.DEFAULT_HEIGHT) { + // first time render, we must rerender on the next stack frame + const timeout = setTimeout(() => { + this.updateHeight(input, contentHeight + 10); + templateData.inputWidget.layout(); + }); + disposables.add({ dispose: () => clearTimeout(timeout) }); + } + } + }; + + disposables.add(templateData.inputWidget.onDidChangeContentHeight(onDidChangeContentHeight)); + onDidChangeContentHeight(); + + // Layout the editor whenever the outer layout happens + const layoutEditor = () => templateData.inputWidget.layout(); + disposables.add(this.outerLayout.onDidChange(layoutEditor)); + layoutEditor(); + + templateData.disposable = disposables; + } + + renderCompressedElements(): void { + throw new Error('Should never happen since node is incompressible'); + } + + disposeElement(group: ITreeNode, index: number, template: InputTemplate): void { + template.disposable.dispose(); + } + + disposeTemplate(templateData: InputTemplate): void { + templateData.disposable.dispose(); + templateData.templateDisposable.dispose(); + } + + getHeight(input: ISCMInput): number { + return (this.contentHeights.get(input) ?? InputRenderer.DEFAULT_HEIGHT) + 10; + } + + getRenderedInputWidget(input: ISCMInput): SCMInputWidget | undefined { + return this.inputWidgets.get(input); + } +} + interface ResourceGroupTemplate { readonly name: HTMLElement; readonly count: CountBadge; @@ -128,8 +359,8 @@ class ResourceGroupRenderer implements ICompressibleTreeRenderer { - getHeight() { return 22; } + constructor(private readonly inputRenderer: InputRenderer) { } + + getHeight(element: TreeElement) { + if (isSCMInput(element)) { + return this.inputRenderer.getHeight(element); + } else { + return 22; + } + } getTemplateId(element: TreeElement) { - if (ResourceTree.isResourceNode(element) || isSCMResource(element)) { + if (isSCMRepository(element)) { + return RepositoryRenderer.TEMPLATE_ID; + } else if (isSCMInput(element)) { + return InputRenderer.TEMPLATE_ID; + } else if (ResourceTree.isResourceNode(element) || isSCMResource(element)) { return ResourceRenderer.TEMPLATE_ID; } else { return ResourceGroupRenderer.TEMPLATE_ID; @@ -374,7 +622,25 @@ export class SCMTreeSorter implements ITreeSorter { constructor(private viewModelProvider: () => ViewModel) { } compare(one: TreeElement, other: TreeElement): number { - if (isSCMResourceGroup(one) && isSCMResourceGroup(other)) { + if (isSCMRepository(one)) { + if (!isSCMRepository(other)) { + throw new Error('Invalid comparison'); + } + + return 0; + } + + if (isSCMInput(one)) { + return -1; + } else if (isSCMInput(other)) { + return 1; + } + + if (isSCMResourceGroup(one)) { + if (!isSCMResourceGroup(other)) { + throw new Error('Invalid comparison'); + } + return 0; } @@ -427,6 +693,10 @@ export class SCMTreeKeyboardNavigationLabelProvider implements ICompressibleKeyb getKeyboardNavigationLabel(element: TreeElement): { toString(): string; } | undefined { if (ResourceTree.isResourceNode(element)) { return element.name; + } else if (isSCMRepository(element)) { + return undefined; + } else if (isSCMInput(element)) { + return undefined; } else if (isSCMResourceGroup(element)) { return element.label; } else { @@ -450,14 +720,20 @@ class SCMResourceIdentityProvider implements IIdentityProvider { getId(element: TreeElement): string { if (ResourceTree.isResourceNode(element)) { const group = element.context; - return `${group.provider.contextValue}/${group.id}/$FOLDER/${element.uri.toString()}`; + return `folder:${group.provider.contextValue}/${group.id}/$FOLDER/${element.uri.toString()}`; + } else if (isSCMRepository(element)) { + const provider = element.provider; + return `repo:${provider.contextValue}`; + } else if (isSCMInput(element)) { + const provider = element.repository.provider; + return `input:${provider.contextValue}`; } else if (isSCMResource(element)) { const group = element.resourceGroup; const provider = group.provider; - return `${provider.contextValue}/${group.id}/${element.sourceUri.toString()}`; + return `resource:${provider.contextValue}/${group.id}/${element.sourceUri.toString()}`; } else { const provider = element.provider; - return `${provider.contextValue}/${element.id}`; + return `group:${provider.contextValue}/${element.id}`; } } } @@ -473,6 +749,10 @@ export class SCMAccessibilityProvider implements IListAccessibilityProvider; readonly disposable: IDisposable; } -function groupItemAsTreeElement(item: IGroupItem, mode: ViewModelMode): ICompressedTreeElement { - const children = mode === ViewModelMode.List - ? Iterable.map(item.resources, element => ({ element, incompressible: true })) - : Iterable.map(item.tree.root.children, node => asTreeElement(node, true)); +interface IRepositoryItem { + readonly element: ISCMRepository; + readonly groupItems: IGroupItem[]; + readonly disposable: IDisposable; +} - return { element: item.group, children, incompressible: true, collapsible: true }; +function isRepositoryItem(item: IRepositoryItem | IGroupItem): item is IRepositoryItem { + return Array.isArray((item as IRepositoryItem).groupItems); } function asTreeElement(node: IResourceNode, forceIncompressible: boolean): ICompressedTreeElement { @@ -539,11 +821,13 @@ class ViewModel { this._mode = mode; for (const item of this.items) { - item.tree.clear(); + for (const groupItem of item.groupItems) { + groupItem.tree.clear(); - if (mode === ViewModelMode.Tree) { - for (const resource of item.resources) { - item.tree.add(resource.sourceUri, resource); + if (mode === ViewModelMode.Tree) { + for (const resource of groupItem.resources) { + groupItem.tree.add(resource.sourceUri, resource); + } } } } @@ -560,45 +844,52 @@ class ViewModel { } } - private items: IGroupItem[] = []; + private items: IRepositoryItem[] = []; private visibilityDisposables = new DisposableStore(); private scrollTop: number | undefined; private firstVisible = true; private disposables = new DisposableStore(); constructor( - private groups: ISequence, + private repositories: ISequence, private tree: WorkbenchCompressibleObjectTree, + private menus: SCMMenus, + private inputRenderer: InputRenderer, private _mode: ViewModelMode, private _sortKey: ViewModelSortKey, @IEditorService protected editorService: IEditorService, @IConfigurationService protected configurationService: IConfigurationService, ) { } - private onDidSpliceGroups({ start, deleteCount, toInsert }: ISplice): void { - const itemsToInsert: IGroupItem[] = []; - - for (const group of toInsert) { - const tree = new ResourceTree(group, group.provider.rootUri || URI.file('/')); - const resources: ISCMResource[] = [...group.elements]; + private onDidSpliceRepositories({ start, deleteCount, toInsert }: ISplice): void { + const itemsToInsert = toInsert.map(repository => { const disposable = combinedDisposable( - group.onDidChange(() => this.tree.refilter()), - group.onDidSplice(splice => this.onDidSpliceGroup(item, splice)) + repository.provider.groups.onDidSplice(splice => this.onDidSpliceGroups(item, splice)), + repository.input.onDidChangeVisibility(() => this.refresh(item)) ); + const groupItems = repository.provider.groups.elements.map(group => this.createGroupItem(group)); + const item: IRepositoryItem = { element: repository, groupItems, disposable }; - const item: IGroupItem = { group, resources, tree, disposable }; - - if (this._mode === ViewModelMode.Tree) { - for (const resource of resources) { - item.tree.add(resource.sourceUri, resource); - } - } - - itemsToInsert.push(item); - } + return item; + }); const itemsToDispose = this.items.splice(start, deleteCount, ...itemsToInsert); + for (const item of itemsToDispose) { + for (const groupItem of item.groupItems) { + groupItem.disposable.dispose(); + } + + item.disposable.dispose(); + } + + this.refresh(); + } + + private onDidSpliceGroups(item: IRepositoryItem, { start, deleteCount, toInsert }: ISplice): void { + const itemsToInsert: IGroupItem[] = toInsert.map(group => this.createGroupItem(group)); + const itemsToDispose = item.groupItems.splice(start, deleteCount, ...itemsToInsert); + for (const item of itemsToDispose) { item.disposable.dispose(); } @@ -606,8 +897,29 @@ class ViewModel { this.refresh(); } + private createGroupItem(group: ISCMResourceGroup): IGroupItem { + const tree = new ResourceTree(group, group.provider.rootUri || URI.file('/')); + const resources: ISCMResource[] = [...group.elements]; + const disposable = combinedDisposable( + group.onDidChange(() => this.tree.refilter()), + group.onDidSplice(splice => this.onDidSpliceGroup(item, splice)) + ); + + const item: IGroupItem = { element: group, resources, tree, disposable }; + + if (this._mode === ViewModelMode.Tree) { + for (const resource of resources) { + item.tree.add(resource.sourceUri, resource); + } + } + + return item; + } + private onDidSpliceGroup(item: IGroupItem, { start, deleteCount, toInsert }: ISplice): void { + const before = item.resources.length; const deleted = item.resources.splice(start, deleteCount, ...toInsert); + const after = item.resources.length; if (this._mode === ViewModelMode.Tree) { for (const resource of deleted) { @@ -619,14 +931,18 @@ class ViewModel { } } - this.refresh(item); + if (before !== after && (before === 0 || after === 0)) { + this.refresh(); + } else { + this.refresh(item); + } } setVisible(visible: boolean): void { if (visible) { this.visibilityDisposables = new DisposableStore(); - this.groups.onDidSplice(this.onDidSpliceGroups, this, this.visibilityDisposables); - this.onDidSpliceGroups({ start: 0, deleteCount: this.items.length, toInsert: this.groups.elements }); + this.repositories.onDidSplice(this.onDidSpliceRepositories, this, this.visibilityDisposables); + this.onDidSpliceRepositories({ start: 0, deleteCount: 0, toInsert: this.repositories.elements }); if (typeof this.scrollTop === 'number') { this.tree.scrollTop = this.scrollTop; @@ -637,16 +953,41 @@ class ViewModel { this.onDidActiveEditorChange(); } else { this.visibilityDisposables.dispose(); - this.onDidSpliceGroups({ start: 0, deleteCount: this.items.length, toInsert: [] }); + this.onDidSpliceRepositories({ start: 0, deleteCount: this.items.length, toInsert: [] }); this.scrollTop = this.tree.scrollTop; } } - private refresh(item?: IGroupItem): void { - if (item) { - this.tree.setChildren(item.group, groupItemAsTreeElement(item, this.mode).children); + private refresh(item?: IRepositoryItem | IGroupItem): void { + if (this.items.length === 1 && (!item || isRepositoryItem(item))) { + this.tree.setChildren(null, this.render(this.items[0]).children); + } else if (item) { + this.tree.setChildren(item.element, this.render(item).children); } else { - this.tree.setChildren(null, this.items.map(item => groupItemAsTreeElement(item, this.mode))); + this.tree.setChildren(null, this.items.map(item => this.render(item))); + } + } + + private render(item: IRepositoryItem | IGroupItem): ICompressedTreeElement { + if (isRepositoryItem(item)) { + const children: ICompressedTreeElement[] = []; + const hasSomeChanges = item.groupItems.some(item => item.element.elements.length > 0); + + if (this.items.length === 1 || hasSomeChanges) { + if (item.element.input.visible) { + children.push({ element: item.element.input, incompressible: true, collapsible: false }); + } + + children.push(...item.groupItems.map(i => this.render(i))); + } + + return { element: item.element, children, incompressible: true, collapsible: true }; + } else { + const children = this.mode === ViewModelMode.List + ? Iterable.map(item.resources, element => ({ element, incompressible: true })) + : Iterable.map(item.tree.root.children, node => asTreeElement(node, true)); + + return { element: item.element, children, incompressible: true, collapsible: true }; } } @@ -667,26 +1008,76 @@ class ViewModel { return; } - const uri = toResource(editor, { supportSideBySide: SideBySideEditor.MASTER }); + const uri = toResource(editor, { supportSideBySide: SideBySideEditor.PRIMARY }); if (!uri) { return; } - // go backwards from last group - for (let i = this.items.length - 1; i >= 0; i--) { + for (let i = 0; i < this.items.length; i++) { const item = this.items[i]; - const resource = this.mode === ViewModelMode.Tree - ? item.tree.getNode(uri)?.element - : find(item.resources, r => isEqual(r.sourceUri, uri)); + // go backwards from last group + for (let j = item.groupItems.length - 1; j >= 0; j--) { + const groupItem = item.groupItems[j]; + const resource = this.mode === ViewModelMode.Tree + ? groupItem.tree.getNode(uri)?.element + : groupItem.resources.find(r => isEqual(r.sourceUri, uri)); - if (resource) { - this.tree.reveal(resource); - this.tree.setSelection([resource]); - this.tree.setFocus([resource]); + if (resource) { + this.tree.reveal(resource); + this.tree.setSelection([resource]); + this.tree.setFocus([resource]); + return; + } + } + } + } + + focus() { + for (const repository of this.repositories.elements) { + const widget = this.inputRenderer.getRenderedInputWidget(repository.input); + + if (widget) { + widget.focus(); return; } } + + this.tree.domFocus(); + } + + getViewActions(): IAction[] { + if (this.repositories.elements.length !== 1) { + return []; + } + + const menus = this.menus.getRepositoryMenus(this.repositories.elements[0].provider); + return menus.getTitleActions(); + } + + getViewSecondaryActions(): IAction[] { + const viewAction = new SCMViewSubMenuAction(this); + + if (this.repositories.elements.length !== 1) { + return viewAction.entries; + } + + const menus = this.menus.getRepositoryMenus(this.repositories.elements[0].provider); + const secondaryActions = menus.getTitleSecondaryActions(); + + if (secondaryActions.length === 0) { + return [viewAction]; + } + + return [viewAction, new Separator(), ...secondaryActions]; + } + + getViewActionsContext(): any { + if (this.repositories.elements.length !== 1) { + return undefined; + } + + return this.repositories.elements[0].provider; } dispose(): void { @@ -805,127 +1196,156 @@ class SCMSortByStatusAction extends SCMSortAction { } } -export class RepositoryPane extends ViewPane { +class SCMInputWidget extends Disposable { + private readonly defaultInputFontFamily = DEFAULT_FONT_FAMILY; - private cachedHeight: number | undefined = undefined; - private cachedWidth: number | undefined = undefined; - private inputContainer!: HTMLElement; - private validationContainer!: HTMLElement; - private inputEditor!: CodeEditorWidget; - private inputModel!: ITextModel; - private listContainer!: HTMLElement; - private tree!: WorkbenchCompressibleObjectTree; - private viewModel!: ViewModel; - private listLabels!: ResourceLabels; - private menus: SCMMenus; - protected contextKeyService: IContextKeyService; - private commitTemplate = ''; + private element: HTMLElement; + private editorContainer: HTMLElement; + private placeholderTextContainer: HTMLElement; + private inputEditor: CodeEditorWidget; - constructor( - readonly repository: ISCMRepository, - options: IViewPaneOptions, - @IKeybindingService protected keybindingService: IKeybindingService, - @IThemeService protected themeService: IThemeService, - @IContextMenuService protected contextMenuService: IContextMenuService, - @IContextViewService protected contextViewService: IContextViewService, - @ICommandService protected commandService: ICommandService, - @INotificationService private readonly notificationService: INotificationService, - @IEditorService protected editorService: IEditorService, - @IInstantiationService protected instantiationService: IInstantiationService, - @IViewDescriptorService viewDescriptorService: IViewDescriptorService, - @IConfigurationService protected configurationService: IConfigurationService, - @IContextKeyService contextKeyService: IContextKeyService, - @IMenuService protected menuService: IMenuService, - @IStorageService private storageService: IStorageService, - @IModelService private modelService: IModelService, - @IModeService private modeService: IModeService, - @IOpenerService openerService: IOpenerService, - @ITelemetryService telemetryService: ITelemetryService, - ) { - super(options, keybindingService, contextMenuService, configurationService, contextKeyService, viewDescriptorService, instantiationService, openerService, themeService, telemetryService); + private model: { readonly input: ISCMInput; readonly textModel: ITextModel; } | undefined; + private repositoryContextKey: IContextKey; + private repositoryDisposables = new DisposableStore(); - this.menus = instantiationService.createInstance(SCMMenus, this.repository.provider); - this._register(this.menus); - this._register(this.menus.onDidChangeTitle(this._onDidChangeTitleArea.fire, this._onDidChangeTitleArea)); + private validation: IInputValidation | undefined; + private validationDisposable: IDisposable = Disposable.None; - this.contextKeyService = contextKeyService.createScoped(this.element); - this.contextKeyService.createKey('scmRepository', this.repository); + readonly onDidChangeContentHeight: Event; + + get input(): ISCMInput | undefined { + return this.model?.input; } - render(): void { - super.render(); - this._register(this.menus.onDidChangeTitle(this.updateActions, this)); - } + set input(input: ISCMInput | undefined) { + this.validationDisposable.dispose(); + removeClass(this.editorContainer, 'synthetic-focus'); - protected renderHeaderTitle(container: HTMLElement): void { - let title: string; - let type: string; + this.repositoryDisposables.dispose(); + this.repositoryDisposables = new DisposableStore(); + this.repositoryContextKey.set(input?.repository); - if (this.repository.provider.rootUri) { - title = basename(this.repository.provider.rootUri); - type = this.repository.provider.label; - } else { - title = this.repository.provider.label; - type = ''; + if (!input) { + this.model?.textModel.dispose(); + this.inputEditor.setModel(undefined); + this.model = undefined; + return; } - super.renderHeaderTitle(container, title); - addClass(container, 'scm-provider'); - append(container, $('span.type', undefined, type)); - } + let query: string | undefined; - protected renderBody(container: HTMLElement): void { - super.renderBody(container); + if (input.repository.provider.rootUri) { + query = `rootUri=${encodeURIComponent(input.repository.provider.rootUri.toString())}`; + } - const focusTracker = trackFocus(container); - this._register(focusTracker.onDidFocus(() => this.repository.focus())); - this._register(focusTracker); + const uri = URI.from({ + scheme: Schemas.vscode, + path: `scm/${input.repository.provider.contextValue}/${input.repository.provider.id}/input`, + query + }); - // Input - this.inputContainer = append(container, $('.scm-editor')); - const editorContainer = append(this.inputContainer, $('.scm-editor-container')); + this.configurationService.updateValue('editor.wordBasedSuggestions', false, { resource: uri }, ConfigurationTarget.MEMORY); - const placeholderTextContainer = append(editorContainer, $('.scm-editor-placeholder')); - const updatePlaceholder = () => { - const binding = this.keybindingService.lookupKeybinding('scm.acceptInput'); - const label = binding ? binding.getLabel() : (platform.isMacintosh ? 'Cmd+Enter' : 'Ctrl+Enter'); - const placeholderText = format(this.repository.input.placeholder, label); - - this.inputEditor.updateOptions({ ariaLabel: placeholderText }); - placeholderTextContainer.textContent = placeholderText; - }; - - this.validationContainer = append(editorContainer, $('.scm-editor-validation')); + const mode = this.modeService.create('scminput'); + const textModel = this.modelService.getModel(uri) || this.modelService.createModel('', mode, uri); + this.inputEditor.setModel(textModel); + // Validation const validationDelayer = new ThrottledDelayer(200); - const validate = () => { + const validate = async () => { const position = this.inputEditor.getSelection()?.getStartPosition(); - const offset = position && this.inputModel.getOffsetAt(position); - const value = this.inputModel.getValue(); + const offset = position && textModel.getOffsetAt(position); + const value = textModel.getValue(); - return this.repository.input.validateInput(value, offset || 0).then(result => { - if (!result) { - removeClass(editorContainer, 'validation-info'); - removeClass(editorContainer, 'validation-warning'); - removeClass(editorContainer, 'validation-error'); - removeClass(this.validationContainer, 'validation-info'); - removeClass(this.validationContainer, 'validation-warning'); - removeClass(this.validationContainer, 'validation-error'); - this.validationContainer.textContent = null; - } else { - toggleClass(editorContainer, 'validation-info', result.type === InputValidationType.Information); - toggleClass(editorContainer, 'validation-warning', result.type === InputValidationType.Warning); - toggleClass(editorContainer, 'validation-error', result.type === InputValidationType.Error); - toggleClass(this.validationContainer, 'validation-info', result.type === InputValidationType.Information); - toggleClass(this.validationContainer, 'validation-warning', result.type === InputValidationType.Warning); - toggleClass(this.validationContainer, 'validation-error', result.type === InputValidationType.Error); - this.validationContainer.textContent = result.message; - } - }); + this.validation = await input.validateInput(value, offset || 0); + this.renderValidation(); }; const triggerValidation = () => validationDelayer.trigger(validate); + this.repositoryDisposables.add(validationDelayer); + this.repositoryDisposables.add(this.inputEditor.onDidChangeCursorPosition(triggerValidation)); + + // Adaptive indentation rules + const opts = this.modelService.getCreationOptions(textModel.getLanguageIdentifier().language, textModel.uri, textModel.isForSimpleWidget); + const onEnter = Event.filter(this.inputEditor.onKeyDown, e => e.keyCode === KeyCode.Enter); + this.repositoryDisposables.add(onEnter(() => textModel.detectIndentation(opts.insertSpaces, opts.tabSize))); + + // Keep model in sync with API + textModel.setValue(input.value); + this.repositoryDisposables.add(input.onDidChange(value => { + if (value === textModel.getValue()) { // circuit breaker + return; + } + textModel.setValue(value); + this.inputEditor.setPosition(textModel.getFullModelRange().getEndPosition()); + })); + + // Keep API in sync with model, update placeholder visibility and validate + const updatePlaceholderVisibility = () => toggleClass(this.placeholderTextContainer, 'hidden', textModel.getValueLength() > 0); + this.repositoryDisposables.add(textModel.onDidChangeContent(() => { + input.value = textModel.getValue(); + updatePlaceholderVisibility(); + triggerValidation(); + })); + updatePlaceholderVisibility(); + + // Update placeholder text + const updatePlaceholderText = () => { + const binding = this.keybindingService.lookupKeybinding('scm.acceptInput'); + const label = binding ? binding.getLabel() : (platform.isMacintosh ? 'Cmd+Enter' : 'Ctrl+Enter'); + const placeholderText = format(input.placeholder, label); + + this.inputEditor.updateOptions({ ariaLabel: placeholderText }); + this.placeholderTextContainer.textContent = placeholderText; + }; + this.repositoryDisposables.add(input.onDidChangePlaceholder(updatePlaceholderText)); + this.repositoryDisposables.add(this.keybindingService.onDidUpdateKeybindings(updatePlaceholderText)); + updatePlaceholderText(); + + // Update input template + let commitTemplate = ''; + const updateTemplate = () => { + if (typeof input.repository.provider.commitTemplate === 'undefined' || !input.visible) { + return; + } + + const oldCommitTemplate = commitTemplate; + commitTemplate = input.repository.provider.commitTemplate; + + const value = textModel.getValue(); + + if (value && value !== oldCommitTemplate) { + return; + } + + textModel.setValue(commitTemplate); + }; + this.repositoryDisposables.add(input.repository.provider.onDidChangeCommitTemplate(updateTemplate, this)); + updateTemplate(); + + // Save model + this.model = { input, textModel }; + } + + constructor( + container: HTMLElement, + @IContextKeyService contextKeyService: IContextKeyService, + @IModelService private modelService: IModelService, + @IModeService private modeService: IModeService, + @IKeybindingService private keybindingService: IKeybindingService, + @IConfigurationService private configurationService: IConfigurationService, + @IInstantiationService instantiationService: IInstantiationService, + @IContextViewService private readonly contextViewService: IContextViewService, + ) { + super(); + + this.element = append(container, $('.scm-editor')); + this.editorContainer = append(this.element, $('.scm-editor-container')); + this.placeholderTextContainer = append(this.editorContainer, $('.scm-editor-placeholder')); + + const contextKeyService2 = contextKeyService.createScoped(this.element); + this.repositoryContextKey = contextKeyService2.createKey('scmRepository', undefined); const editorOptions: IEditorConstructionOptions = { ...getSimpleEditorOptions(), @@ -940,6 +1360,7 @@ export class RepositoryPane extends ViewPane { padding: { top: 3, bottom: 3 }, quickSuggestions: false }; + const codeEditorWidgetOptions: ICodeEditorWidgetOptions = { isSimpleWidget: true, contributions: EditorExtensionsRegistry.getSomeEditorContributions([ @@ -954,83 +1375,154 @@ export class RepositoryPane extends ViewPane { ]) }; - const services = new ServiceCollection([IContextKeyService, this.contextKeyService]); - const instantiationService = this.instantiationService.createChild(services); - this.inputEditor = instantiationService.createInstance(CodeEditorWidget, editorContainer, editorOptions, codeEditorWidgetOptions); - + const services = new ServiceCollection([IContextKeyService, contextKeyService2]); + const instantiationService2 = instantiationService.createChild(services); + this.inputEditor = instantiationService2.createInstance(CodeEditorWidget, this.editorContainer, editorOptions, codeEditorWidgetOptions); this._register(this.inputEditor); - this._register(this.inputEditor.onDidFocusEditorText(() => addClass(editorContainer, 'synthetic-focus'))); - this._register(this.inputEditor.onDidBlurEditorText(() => removeClass(editorContainer, 'synthetic-focus'))); + this._register(this.inputEditor.onDidFocusEditorText(() => { + this.input?.repository.setSelected(true); // TODO@joao: remove + addClass(this.editorContainer, 'synthetic-focus'); + this.renderValidation(); + })); + this._register(this.inputEditor.onDidBlurEditorText(() => { + removeClass(this.editorContainer, 'synthetic-focus'); + this.validationDisposable.dispose(); + })); const onInputFontFamilyChanged = Event.filter(this.configurationService.onDidChangeConfiguration, e => e.affectsConfiguration('scm.inputFontFamily')); this._register(onInputFontFamilyChanged(() => this.inputEditor.updateOptions({ fontFamily: this.getInputEditorFontFamily() }))); - let query: string | undefined; + this.onDidChangeContentHeight = Event.signal(Event.filter(this.inputEditor.onDidContentSizeChange, e => e.contentHeightChanged)); + } - if (this.repository.provider.rootUri) { - query = `rootUri=${encodeURIComponent(this.repository.provider.rootUri.toString())}`; + getContentHeight(): number { + const editorContentHeight = this.inputEditor.getContentHeight(); + return Math.min(editorContentHeight, 134); + } + + layout(): void { + const editorHeight = this.getContentHeight(); + const dimension: Dimension = { + width: this.element.clientWidth - 2, + height: editorHeight, + }; + + this.inputEditor.layout(dimension); + this.renderValidation(); + } + + focus(): void { + this.inputEditor.focus(); + addClass(this.editorContainer, 'synthetic-focus'); + } + + private renderValidation(): void { + this.validationDisposable.dispose(); + + toggleClass(this.editorContainer, 'validation-info', this.validation?.type === InputValidationType.Information); + toggleClass(this.editorContainer, 'validation-warning', this.validation?.type === InputValidationType.Warning); + toggleClass(this.editorContainer, 'validation-error', this.validation?.type === InputValidationType.Error); + + if (!this.validation || !this.inputEditor.hasTextFocus()) { + return; } - const uri = URI.from({ - scheme: Schemas.vscode, - path: `scm/${this.repository.provider.contextValue}/${this.repository.provider.id}/input`, - query + this.validationDisposable = this.contextViewService.showContextView({ + getAnchor: () => this.editorContainer, + render: container => { + const element = append(container, $('.scm-editor-validation')); + toggleClass(element, 'validation-info', this.validation!.type === InputValidationType.Information); + toggleClass(element, 'validation-warning', this.validation!.type === InputValidationType.Warning); + toggleClass(element, 'validation-error', this.validation!.type === InputValidationType.Error); + element.style.width = `${this.editorContainer.clientWidth}px`; + element.textContent = this.validation!.message; + return Disposable.None; + }, + anchorAlignment: AnchorAlignment.LEFT }); + } - this.configurationService.updateValue('editor.wordBasedSuggestions', false, { resource: uri }, ConfigurationTarget.MEMORY); + private getInputEditorFontFamily(): string { + const inputFontFamily = this.configurationService.getValue('scm.inputFontFamily').trim(); - const mode = this.modeService.create('scminput'); - this.inputModel = this.modelService.getModel(uri) || this.modelService.createModel('', mode, uri); - this.inputEditor.setModel(this.inputModel); + if (inputFontFamily.toLowerCase() === 'editor') { + return this.configurationService.getValue('editor.fontFamily').trim(); + } - this._register(this.inputEditor.onDidChangeCursorPosition(triggerValidation)); + if (inputFontFamily.length !== 0 && inputFontFamily.toLowerCase() !== 'default') { + return inputFontFamily; + } - const opts = this.modelService.getCreationOptions(this.inputModel.getLanguageIdentifier().language, this.inputModel.uri, this.inputModel.isForSimpleWidget); - const onEnter = Event.filter(this.inputEditor.onKeyDown, e => e.keyCode === KeyCode.Enter); - this._register(onEnter(() => this.inputModel.detectIndentation(opts.insertSpaces, opts.tabSize))); + return this.defaultInputFontFamily; + } - // Keep model in sync with API - this.inputModel.setValue(this.repository.input.value); - this._register(this.repository.input.onDidChange(value => { - if (value === this.inputModel.getValue()) { - return; - } - this.inputModel.setValue(value); - this.inputEditor.setPosition(this.inputModel.getFullModelRange().getEndPosition()); - })); + dispose(): void { + this.repositoryDisposables.dispose(); + this.validationDisposable.dispose(); + super.dispose(); + } +} - // Keep API in sync with model and update placeholder and validation - toggleClass(placeholderTextContainer, 'hidden', this.inputModel.getValueLength() > 0); - this.inputModel.onDidChangeContent(() => { - this.repository.input.value = this.inputModel.getValue(); - toggleClass(placeholderTextContainer, 'hidden', this.inputModel.getValueLength() > 0); - triggerValidation(); - }); +export class SCMViewPane extends ViewPane { - updatePlaceholder(); - this._register(this.repository.input.onDidChangePlaceholder(updatePlaceholder, null)); - this._register(this.keybindingService.onDidUpdateKeybindings(updatePlaceholder, null)); + private _onDidLayout = new Emitter(); + private layoutCache: ISCMLayout = { + height: undefined, + width: undefined, + onDidChange: this._onDidLayout.event + }; - const onDidChangeContentHeight = Event.filter(this.inputEditor.onDidContentSizeChange, e => e.contentHeightChanged); - this._register(onDidChangeContentHeight(() => this.layoutBody())); + private listContainer!: HTMLElement; + private tree!: WorkbenchCompressibleObjectTree; + private viewModel!: ViewModel; + private listLabels!: ResourceLabels; + private menus!: SCMMenus; + private inputRenderer!: InputRenderer; - this._register(this.repository.provider.onDidChangeCommitTemplate(this.onDidChangeCommitTemplate, this)); + constructor( + options: IViewPaneOptions, + @ISCMService private scmService: ISCMService, + @IKeybindingService protected keybindingService: IKeybindingService, + @IThemeService protected themeService: IThemeService, + @IContextMenuService protected contextMenuService: IContextMenuService, + @IContextViewService protected contextViewService: IContextViewService, + @ICommandService protected commandService: ICommandService, + @INotificationService private readonly notificationService: INotificationService, + @IEditorService protected editorService: IEditorService, + @IInstantiationService protected instantiationService: IInstantiationService, + @IViewDescriptorService viewDescriptorService: IViewDescriptorService, + @IConfigurationService protected configurationService: IConfigurationService, + @IContextKeyService contextKeyService: IContextKeyService, + @IMenuService protected menuService: IMenuService, + @IStorageService private storageService: IStorageService, + @IOpenerService openerService: IOpenerService, + @ITelemetryService telemetryService: ITelemetryService, + ) { + super(options, keybindingService, contextMenuService, configurationService, contextKeyService, viewDescriptorService, instantiationService, openerService, themeService, telemetryService); + this._register(Event.any(this.scmService.onDidAddRepository, this.scmService.onDidRemoveRepository)(() => this._onDidChangeViewWelcomeState.fire())); + } - this.onDidChangeCommitTemplate(); - - // Input box visibility - this._register(this.repository.input.onDidChangeVisibility(this.updateInputBoxVisibility, this)); - this.updateInputBoxVisibility(); + protected renderBody(container: HTMLElement): void { + super.renderBody(container); // List - this.listContainer = append(container, $('.scm-status.show-file-icons')); + this.listContainer = append(container, $('.scm-view.show-file-icons')); const updateActionsVisibility = () => toggleClass(this.listContainer, 'show-actions', this.configurationService.getValue('scm.alwaysShowActions')); Event.filter(this.configurationService.onDidChangeConfiguration, e => e.affectsConfiguration('scm.alwaysShowActions'))(updateActionsVisibility); updateActionsVisibility(); - const delegate = new ProviderListDelegate(); + const repositories = new SimpleSequence(this.scmService.repositories, this.scmService.onDidAddRepository, this.scmService.onDidRemoveRepository); + this._register(repositories); + + this.menus = this.instantiationService.createInstance(SCMMenus, repositories); + this._register(this.menus); + + this._register(repositories.onDidSplice(() => this.updateActions())); + + this.inputRenderer = this.instantiationService.createInstance(InputRenderer, this.layoutCache, (input, height) => this.tree.updateElementHeight(input, height)); + const delegate = new ProviderListDelegate(this.inputRenderer); const actionViewItemProvider = (action: IAction) => this.getActionViewItem(action); @@ -1042,8 +1534,10 @@ export class RepositoryPane extends ViewPane { this._register(actionRunner.onDidBeforeRun(() => this.tree.domFocus())); const renderers = [ - new ResourceGroupRenderer(actionViewItemProvider, this.themeService, this.menus), - new ResourceRenderer(() => this.viewModel, this.listLabels, actionViewItemProvider, actionRunner, this.themeService, this.menus) + this.instantiationService.createInstance(RepositoryRenderer, actionViewItemProvider, this.menus), + this.inputRenderer, + this.instantiationService.createInstance(ResourceGroupRenderer, actionViewItemProvider, this.menus), + this.instantiationService.createInstance(ResourceRenderer, () => this.viewModel, this.listLabels, actionViewItemProvider, actionRunner, this.menus) ]; const filter = new SCMTreeFilter(); @@ -1060,11 +1554,13 @@ export class RepositoryPane extends ViewPane { { identityProvider, horizontalScrolling: false, + setRowLineHeight: false, filter, sorter, keyboardNavigationLabelProvider, + transformOptimization: false, overrideStyles: { - listBackground: SIDE_BAR_BACKGROUND + listBackground: this.viewDescriptorService.getViewLocationById(this.id) === ViewContainerLocation.Sidebar ? SIDE_BAR_BACKGROUND : PANEL_BACKGROUND }, accessibilityProvider: this.instantiationService.createInstance(SCMAccessibilityProvider) }) as WorkbenchCompressibleObjectTree; @@ -1075,18 +1571,13 @@ export class RepositoryPane extends ViewPane { this._register(this.tree); let viewMode = this.configurationService.getValue<'tree' | 'list'>('scm.defaultViewMode') === 'list' ? ViewModelMode.List : ViewModelMode.Tree; + const storageMode = this.storageService.get(`scm.viewMode`, StorageScope.WORKSPACE) as ViewModelMode; - const rootUri = this.repository.provider.rootUri; - - if (typeof rootUri !== 'undefined') { - const storageMode = this.storageService.get(`scm.repository.viewMode:${rootUri.toString()}`, StorageScope.WORKSPACE) as ViewModelMode; - - if (typeof storageMode === 'string') { - viewMode = storageMode; - } + if (typeof storageMode === 'string') { + viewMode = storageMode; } - this.viewModel = this.instantiationService.createInstance(ViewModel, this.repository.provider.groups, this.tree, viewMode, ViewModelSortKey.Path); + this.viewModel = this.instantiationService.createInstance(ViewModel, repositories, this.tree, this.menus, this.inputRenderer, viewMode, ViewModelSortKey.Path); this._register(this.viewModel); addClass(this.listContainer, 'file-icon-themable-tree'); @@ -1096,7 +1587,7 @@ export class RepositoryPane extends ViewPane { this._register(this.themeService.onDidFileIconThemeChange(this.updateIndentStyles, this)); this._register(this.viewModel.onDidChangeMode(this.onDidChangeMode, this)); - this._register(this.onDidChangeBodyVisibility(this._onDidChangeVisibility, this)); + this._register(this.onDidChangeBodyVisibility(this.viewModel.setVisible, this.viewModel)); this.updateActions(); } @@ -1110,17 +1601,10 @@ export class RepositoryPane extends ViewPane { private onDidChangeMode(): void { this.updateIndentStyles(this.themeService.getFileIconTheme()); - - const rootUri = this.repository.provider.rootUri; - - if (typeof rootUri === 'undefined') { - return; - } - - this.storageService.store(`scm.repository.viewMode:${rootUri.toString()}`, this.viewModel.mode, StorageScope.WORKSPACE); + this.storageService.store(`scm.viewMode`, this.viewModel.mode, StorageScope.WORKSPACE); } - layoutBody(height: number | undefined = this.cachedHeight, width: number | undefined = this.cachedWidth): void { + layoutBody(height: number | undefined = this.layoutCache.height, width: number | undefined = this.layoutCache.width): void { if (height === undefined) { return; } @@ -1129,56 +1613,28 @@ export class RepositoryPane extends ViewPane { super.layoutBody(height, width); } - this.cachedHeight = height; - this.cachedWidth = width; + this.layoutCache.height = height; + this.layoutCache.width = width; + this._onDidLayout.fire(); - if (this.repository.input.visible) { - removeClass(this.inputContainer, 'hidden'); - - const editorContentHeight = this.inputEditor.getContentHeight(); - const editorHeight = Math.min(editorContentHeight, 134); - this.inputEditor.layout({ height: editorHeight, width: width! - 12 - 16 - 2 }); - - this.validationContainer.style.top = `${editorHeight + 1}px`; - - const listHeight = height - (editorHeight + 5 + 2 + 5); - this.listContainer.style.height = `${listHeight}px`; - this.tree.layout(listHeight, width); - } else { - addClass(this.inputContainer, 'hidden'); - - this.inputEditor.onHide(); - this.listContainer.style.height = `${height}px`; - this.tree.layout(height, width); - } + this.listContainer.style.height = `${height}px`; + this.tree.layout(height, width); } focus(): void { super.focus(); if (this.isExpanded()) { - if (this.repository.input.visible) { - this.inputEditor.focus(); - } else { - this.tree.domFocus(); - } - - this.repository.focus(); - } - } - - private _onDidChangeVisibility(visible: boolean): void { - this.viewModel.setVisible(visible); - - if (this.repository.input.visible && visible) { - this.inputEditor.onVisible(); - } else { - this.inputEditor.onHide(); + this.viewModel.focus(); } } getActions(): IAction[] { - return this.menus.getTitleActions(); + if (!this.viewModel) { + return []; + } + + return this.viewModel.getViewActions(); } getSecondaryActions(): IAction[] { @@ -1186,17 +1642,14 @@ export class RepositoryPane extends ViewPane { return []; } - const result: IAction[] = [new SCMViewSubMenuAction(this.viewModel)]; - const secondaryActions = this.menus.getTitleSecondaryActions(); - - if (secondaryActions.length > 0) { - result.push(new Separator(), ...secondaryActions); - } - - return result; + return this.viewModel.getViewSecondaryActions(); } getActionViewItem(action: IAction): IActionViewItem | undefined { + if (action instanceof StatusBarAction) { + return new StatusBarActionViewItem(action); + } + if (!(action instanceof MenuItemAction)) { return undefined; } @@ -1205,14 +1658,48 @@ export class RepositoryPane extends ViewPane { } getActionsContext(): any { - return this.repository.provider; + if (!this.viewModel) { + return []; + } + + return this.viewModel.getViewActionsContext(); } private async open(e: IOpenEvent): Promise { - if (!e.element || isSCMResourceGroup(e.element) || ResourceTree.isResourceNode(e.element)) { + if (!e.element) { + return; + } else if (isSCMRepository(e.element)) { // TODO@joao: remove + e.element.setSelected(true); + return; + } else if (isSCMResourceGroup(e.element)) { // TODO@joao: remove + const provider = e.element.provider; + const repository = this.scmService.repositories.find(r => r.provider === provider); + repository?.setSelected(true); + return; + } else if (ResourceTree.isResourceNode(e.element)) { // TODO@joao: remove + const provider = e.element.context.provider; + const repository = this.scmService.repositories.find(r => r.provider === provider); + repository?.setSelected(true); + return; + } else if (isSCMInput(e.element)) { + e.element.repository.setSelected(true); // TODO@joao: remove + + const widget = this.inputRenderer.getRenderedInputWidget(e.element); + + if (widget) { + widget.focus(); + + const selection = this.tree.getSelection(); + + if (selection.length === 1 && selection[0] === e.element) { + setTimeout(() => this.tree.setSelection([])); + } + } + return; } + // ISCMResource await e.element.open(!!e.editorOptions.preserveFocus); if (e.editorOptions.pinned) { @@ -1222,6 +1709,11 @@ export class RepositoryPane extends ViewPane { activeEditorPane.group.pinEditor(activeEditorPane.input); } } + + // TODO@joao: remove + const provider = e.element.resourceGroup.provider; + const repository = this.scmService.repositories.find(r => r.provider === provider); + repository?.setSelected(true); } private onListContextMenu(e: ITreeContextMenuEvent): void { @@ -1230,18 +1722,29 @@ export class RepositoryPane extends ViewPane { } const element = e.element; + let context: any = element; let actions: IAction[] = []; - if (isSCMResourceGroup(element)) { - actions = this.menus.getResourceGroupContextActions(element); + if (isSCMRepository(element)) { + const menus = this.menus.getRepositoryMenus(element.provider); + context = element.provider; + actions = menus.getRepositoryContextActions(); + } else if (isSCMInput(element)) { + // noop + } else if (isSCMResourceGroup(element)) { + const menus = this.menus.getRepositoryMenus(element.provider); + actions = menus.getResourceGroupContextActions(element); } else if (ResourceTree.isResourceNode(element)) { if (element.element) { - actions = this.menus.getResourceContextActions(element.element); + const menus = this.menus.getRepositoryMenus(element.element.resourceGroup.provider); + actions = menus.getResourceContextActions(element.element); } else { - actions = this.menus.getResourceFolderContextActions(element.context); + const menus = this.menus.getRepositoryMenus(element.context.provider); + actions = menus.getResourceFolderContextActions(element.context); } } else { - actions = this.menus.getResourceContextActions(element); + const menus = this.menus.getRepositoryMenus(element.resourceGroup.provider); + actions = menus.getResourceContextActions(element); } const actionRunner = new RepositoryPaneActionRunner(() => this.getSelectedResources()); @@ -1250,7 +1753,7 @@ export class RepositoryPane extends ViewPane { this.contextMenuService.showContextMenu({ getAnchor: () => e.anchor, getActions: () => actions, - getActionsContext: () => element, + getActionsContext: () => context, actionRunner }); } @@ -1260,141 +1763,90 @@ export class RepositoryPane extends ViewPane { .filter(r => !!r && !isSCMResourceGroup(r))! as any; } - private onDidChangeCommitTemplate(): void { - if (typeof this.repository.provider.commitTemplate === 'undefined' || !this.repository.input.visible) { - return; - } - - const oldCommitTemplate = this.commitTemplate; - this.commitTemplate = this.repository.provider.commitTemplate; - - const value = this.inputModel.getValue(); - - if (value && value !== oldCommitTemplate) { - return; - } - - this.inputModel.setValue(this.commitTemplate); - } - - private updateInputBoxVisibility(): void { - if (this.cachedHeight) { - this.layoutBody(this.cachedHeight); - } - } - - private getInputEditorFontFamily(): string { - const inputFontFamily = this.configurationService.getValue('scm.inputFontFamily').trim(); - - if (inputFontFamily.toLowerCase() === 'editor') { - return this.configurationService.getValue('editor.fontFamily').trim(); - } - - if (inputFontFamily.length !== 0 && inputFontFamily.toLowerCase() !== 'default') { - return inputFontFamily; - } - - return this.defaultInputFontFamily; - } -} - -export class RepositoryViewDescriptor implements IViewDescriptor { - - private static counter = 0; - - readonly id: string; - readonly name: string; - readonly ctorDescriptor: SyncDescriptor; - readonly canToggleVisibility = true; - readonly order = -500; - readonly workspace = true; - - constructor(readonly repository: ISCMRepository, readonly hideByDefault: boolean) { - const repoId = repository.provider.rootUri ? repository.provider.rootUri.toString() : `#${RepositoryViewDescriptor.counter++}`; - const hasher = new Hasher(); - hasher.hash(repository.provider.label); - hasher.hash(repoId); - this.id = `scm:repository:${hasher.value}`; - this.name = repository.provider.rootUri ? basename(repository.provider.rootUri) : repository.provider.label; - - this.ctorDescriptor = new SyncDescriptor(RepositoryPane, [repository]); + shouldShowWelcome(): boolean { + return this.scmService.repositories.length === 0; } } registerThemingParticipant((theme, collector) => { const inputBackgroundColor = theme.getColor(inputBackground); if (inputBackgroundColor) { - collector.addRule(`.scm-viewlet .scm-editor-container .monaco-editor-background, - .scm-viewlet .scm-editor-container .monaco-editor, - .scm-viewlet .scm-editor-container .monaco-editor .margin + collector.addRule(`.scm-view .scm-editor-container .monaco-editor-background, + .scm-view .scm-editor-container .monaco-editor, + .scm-view .scm-editor-container .monaco-editor .margin { background-color: ${inputBackgroundColor}; }`); } const inputForegroundColor = theme.getColor(inputForeground); if (inputForegroundColor) { - collector.addRule(`.scm-viewlet .scm-editor-container .mtk1 { color: ${inputForegroundColor}; }`); + collector.addRule(`.scm-view .scm-editor-container .mtk1 { color: ${inputForegroundColor}; }`); } const inputBorderColor = theme.getColor(inputBorder); if (inputBorderColor) { - collector.addRule(`.scm-viewlet .scm-editor-container { outline: 1px solid ${inputBorderColor}; }`); + collector.addRule(`.scm-view .scm-editor-container { outline: 1px solid ${inputBorderColor}; }`); } const focusBorderColor = theme.getColor(focusBorder); if (focusBorderColor) { - collector.addRule(`.scm-viewlet .scm-editor-container.synthetic-focus { outline: 1px solid ${focusBorderColor}; }`); + collector.addRule(`.scm-view .scm-editor-container.synthetic-focus { outline: 1px solid ${focusBorderColor}; }`); } const inputPlaceholderForegroundColor = theme.getColor(inputPlaceholderForeground); if (inputPlaceholderForegroundColor) { - collector.addRule(`.scm-viewlet .scm-editor-placeholder { color: ${inputPlaceholderForegroundColor}; }`); + collector.addRule(`.scm-view .scm-editor-placeholder { color: ${inputPlaceholderForegroundColor}; }`); } const inputValidationInfoBorderColor = theme.getColor(inputValidationInfoBorder); if (inputValidationInfoBorderColor) { - collector.addRule(`.scm-viewlet .scm-editor-container.validation-info { outline: 1px solid ${inputValidationInfoBorderColor}; }`); - collector.addRule(`.scm-viewlet .scm-editor-validation.validation-info { border: 1px solid ${inputValidationInfoBorderColor}; }`); + collector.addRule(`.scm-view .scm-editor-container.validation-info { outline: 1px solid ${inputValidationInfoBorderColor}; }`); + collector.addRule(`.scm-editor-validation.validation-info { border-color: ${inputValidationInfoBorderColor}; }`); } const inputValidationInfoBackgroundColor = theme.getColor(inputValidationInfoBackground); if (inputValidationInfoBackgroundColor) { - collector.addRule(`.scm-viewlet .scm-editor-validation.validation-info { background-color: ${inputValidationInfoBackgroundColor}; }`); + collector.addRule(`.scm-editor-validation.validation-info { background-color: ${inputValidationInfoBackgroundColor}; }`); } const inputValidationInfoForegroundColor = theme.getColor(inputValidationInfoForeground); if (inputValidationInfoForegroundColor) { - collector.addRule(`.scm-viewlet .scm-editor-validation.validation-info { color: ${inputValidationInfoForegroundColor}; }`); + collector.addRule(`.scm-editor-validation.validation-info { color: ${inputValidationInfoForegroundColor}; }`); } const inputValidationWarningBorderColor = theme.getColor(inputValidationWarningBorder); if (inputValidationWarningBorderColor) { - collector.addRule(`.scm-viewlet .scm-editor-container.validation-warning { outline: 1px solid ${inputValidationWarningBorderColor}; }`); - collector.addRule(`.scm-viewlet .scm-editor-validation.validation-warning { border: 1px solid ${inputValidationWarningBorderColor}; }`); + collector.addRule(`.scm-view .scm-editor-container.validation-warning { outline: 1px solid ${inputValidationWarningBorderColor}; }`); + collector.addRule(`.scm-editor-validation.validation-warning { border-color: ${inputValidationWarningBorderColor}; }`); } const inputValidationWarningBackgroundColor = theme.getColor(inputValidationWarningBackground); if (inputValidationWarningBackgroundColor) { - collector.addRule(`.scm-viewlet .scm-editor-validation.validation-warning { background-color: ${inputValidationWarningBackgroundColor}; }`); + collector.addRule(`.scm-editor-validation.validation-warning { background-color: ${inputValidationWarningBackgroundColor}; }`); } const inputValidationWarningForegroundColor = theme.getColor(inputValidationWarningForeground); if (inputValidationWarningForegroundColor) { - collector.addRule(`.scm-viewlet .scm-editor-validation.validation-warning { color: ${inputValidationWarningForegroundColor}; }`); + collector.addRule(`.scm-editor-validation.validation-warning { color: ${inputValidationWarningForegroundColor}; }`); } const inputValidationErrorBorderColor = theme.getColor(inputValidationErrorBorder); if (inputValidationErrorBorderColor) { - collector.addRule(`.scm-viewlet .scm-editor-container.validation-error { outline: 1px solid ${inputValidationErrorBorderColor}; }`); - collector.addRule(`.scm-viewlet .scm-editor-validation.validation-error { border: 1px solid ${inputValidationErrorBorderColor}; }`); + collector.addRule(`.scm-view .scm-editor-container.validation-error { outline: 1px solid ${inputValidationErrorBorderColor}; }`); + collector.addRule(`.scm-editor-validation.validation-error { border-color: ${inputValidationErrorBorderColor}; }`); } const inputValidationErrorBackgroundColor = theme.getColor(inputValidationErrorBackground); if (inputValidationErrorBackgroundColor) { - collector.addRule(`.scm-viewlet .scm-editor-validation.validation-error { background-color: ${inputValidationErrorBackgroundColor}; }`); + collector.addRule(`.scm-editor-validation.validation-error { background-color: ${inputValidationErrorBackgroundColor}; }`); } const inputValidationErrorForegroundColor = theme.getColor(inputValidationErrorForeground); if (inputValidationErrorForegroundColor) { - collector.addRule(`.scm-viewlet .scm-editor-validation.validation-error { color: ${inputValidationErrorForegroundColor}; }`); + collector.addRule(`.scm-editor-validation.validation-error { color: ${inputValidationErrorForegroundColor}; }`); + } + + const repositoryStatusActionsBorderColor = theme.getColor(SIDE_BAR_BORDER); + if (repositoryStatusActionsBorderColor) { + collector.addRule(`.scm-view .scm-provider > .status > .monaco-action-bar > .actions-container { border-color: ${repositoryStatusActionsBorderColor}; }`); } }); diff --git a/src/vs/workbench/contrib/scm/browser/scmViewPaneContainer.ts b/src/vs/workbench/contrib/scm/browser/scmViewPaneContainer.ts new file mode 100644 index 0000000000..d7bb0e1bdb --- /dev/null +++ b/src/vs/workbench/contrib/scm/browser/scmViewPaneContainer.ts @@ -0,0 +1,64 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import 'vs/css!./media/scm'; +import { localize } from 'vs/nls'; +import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; +import { VIEWLET_ID, ISCMService } from 'vs/workbench/contrib/scm/common/scm'; +import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; +import { IContextViewService, IContextMenuService } from 'vs/platform/contextview/browser/contextView'; +import { ICommandService } from 'vs/platform/commands/common/commands'; +import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; +import { SCMRepositoryMenus } from './menus'; +import { IThemeService } from 'vs/platform/theme/common/themeService'; +import { IStorageService } from 'vs/platform/storage/common/storage'; +import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; +import { INotificationService } from 'vs/platform/notification/common/notification'; +import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService'; +import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; +import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; +import { IViewDescriptorService } from 'vs/workbench/common/views'; +import { ViewPaneContainer } from 'vs/workbench/browser/parts/views/viewPaneContainer'; +import { addClass } from 'vs/base/browser/dom'; + +export class SCMViewPaneContainer extends ViewPaneContainer { + + constructor( + @IWorkbenchLayoutService layoutService: IWorkbenchLayoutService, + @ITelemetryService telemetryService: ITelemetryService, + @ISCMService protected scmService: ISCMService, + @IInstantiationService protected instantiationService: IInstantiationService, + @IContextViewService protected contextViewService: IContextViewService, + @IKeybindingService protected keybindingService: IKeybindingService, + @INotificationService protected notificationService: INotificationService, + @IContextMenuService protected contextMenuService: IContextMenuService, + @IThemeService protected themeService: IThemeService, + @ICommandService protected commandService: ICommandService, + @IStorageService storageService: IStorageService, + @IConfigurationService configurationService: IConfigurationService, + @IExtensionService extensionService: IExtensionService, + @IWorkspaceContextService protected contextService: IWorkspaceContextService, + @IViewDescriptorService viewDescriptorService: IViewDescriptorService + ) { + super(VIEWLET_ID, { mergeViewWithContainerWhenSingleView: true }, instantiationService, configurationService, layoutService, contextMenuService, telemetryService, extensionService, themeService, storageService, contextService, viewDescriptorService); + + const menus = instantiationService.createInstance(SCMRepositoryMenus, undefined); + this._register(menus); + this._register(menus.onDidChangeTitle(this.updateTitleArea, this)); + } + + create(parent: HTMLElement): void { + super.create(parent); + addClass(parent, 'scm-viewlet'); + } + + getOptimalWidth(): number { + return 400; + } + + getTitle(): string { + return localize('source control', "Source Control"); + } +} diff --git a/src/vs/workbench/contrib/scm/browser/scmViewlet.ts b/src/vs/workbench/contrib/scm/browser/scmViewlet.ts deleted file mode 100644 index c8a1b9fe7a..0000000000 --- a/src/vs/workbench/contrib/scm/browser/scmViewlet.ts +++ /dev/null @@ -1,313 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Source EULA. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import 'vs/css!./media/scmViewlet'; -import { localize } from 'vs/nls'; -import { Event, Emitter } from 'vs/base/common/event'; -import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; -import { VIEWLET_ID, ISCMService, ISCMRepository } from 'vs/workbench/contrib/scm/common/scm'; -import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; -import { IContextViewService, IContextMenuService } from 'vs/platform/contextview/browser/contextView'; -import { IContextKeyService, IContextKey, ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; -import { ICommandService } from 'vs/platform/commands/common/commands'; -import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; -import { MenuItemAction } from 'vs/platform/actions/common/actions'; -import { IAction, IActionViewItem } from 'vs/base/common/actions'; -import { ContextAwareMenuEntryActionViewItem } from 'vs/platform/actions/browser/menuEntryActionViewItem'; -import { SCMMenus } from './menus'; -import { IThemeService } from 'vs/platform/theme/common/themeService'; -import { IStorageService } from 'vs/platform/storage/common/storage'; -import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; -import { INotificationService } from 'vs/platform/notification/common/notification'; -import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService'; -import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; -import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; -import { IViewsRegistry, Extensions, IViewDescriptorService, IViewDescriptor, IAddedViewDescriptorRef, IViewDescriptorRef } from 'vs/workbench/common/views'; -import { Registry } from 'vs/platform/registry/common/platform'; -import { RepositoryPane, RepositoryViewDescriptor } from 'vs/workbench/contrib/scm/browser/repositoryPane'; -import { MainPaneDescriptor, MainPane, IViewModel } from 'vs/workbench/contrib/scm/browser/mainPane'; -import { ViewPaneContainer, IViewPaneOptions, ViewPane } from 'vs/workbench/browser/parts/views/viewPaneContainer'; -import { debounce } from 'vs/base/common/decorators'; -import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors'; -import { IOpenerService } from 'vs/platform/opener/common/opener'; -import { addClass } from 'vs/base/browser/dom'; -import { Codicon } from 'vs/base/common/codicons'; - -export interface ISpliceEvent { - index: number; - deleteCount: number; - elements: T[]; -} - -export class EmptyPane extends ViewPane { - - static readonly ID = 'workbench.scm'; - static readonly TITLE = localize('scm', "Source Control"); - - constructor( - options: IViewPaneOptions, - @IKeybindingService keybindingService: IKeybindingService, - @IContextMenuService contextMenuService: IContextMenuService, - @IConfigurationService configurationService: IConfigurationService, - @IContextKeyService contextKeyService: IContextKeyService, - @IViewDescriptorService viewDescriptorService: IViewDescriptorService, - @IInstantiationService instantiationService: IInstantiationService, - @IOpenerService openerService: IOpenerService, - @IThemeService themeService: IThemeService, - @ITelemetryService telemetryService: ITelemetryService, - ) { - super(options, keybindingService, contextMenuService, configurationService, contextKeyService, viewDescriptorService, instantiationService, openerService, themeService, telemetryService); - } - - shouldShowWelcome(): boolean { - return true; - } -} - -export class EmptyPaneDescriptor implements IViewDescriptor { - readonly id = EmptyPane.ID; - readonly name = EmptyPane.TITLE; - readonly containerIcon = Codicon.sourceControl.classNames; - readonly ctorDescriptor = new SyncDescriptor(EmptyPane); - readonly canToggleVisibility = true; - readonly hideByDefault = false; - readonly order = -1000; - readonly workspace = true; - readonly when = ContextKeyExpr.equals('scm.providerCount', 0); -} - -export class SCMViewPaneContainer extends ViewPaneContainer implements IViewModel { - - private menus: SCMMenus; - private _repositories: ISCMRepository[] = []; - - private repositoryCountKey: IContextKey; - private viewDescriptors: RepositoryViewDescriptor[] = []; - - private readonly _onDidSplice = new Emitter>(); - readonly onDidSplice: Event> = this._onDidSplice.event; - - private _height: number | undefined = undefined; - get height(): number | undefined { return this._height; } - - get repositories(): ISCMRepository[] { - return this._repositories; - } - - get visibleRepositories(): ISCMRepository[] { - return this.panes.filter(pane => pane instanceof RepositoryPane) - .map(pane => (pane as RepositoryPane).repository); - } - - get onDidChangeVisibleRepositories(): Event { - const modificationEvent = Event.debounce(Event.any(this.viewContainerModel.onDidAddVisibleViewDescriptors, this.viewContainerModel.onDidRemoveVisibleViewDescriptors), () => null, 0); - return Event.map(modificationEvent, () => this.visibleRepositories); - } - - constructor( - @IWorkbenchLayoutService layoutService: IWorkbenchLayoutService, - @ITelemetryService telemetryService: ITelemetryService, - @ISCMService protected scmService: ISCMService, - @IInstantiationService protected instantiationService: IInstantiationService, - @IContextViewService protected contextViewService: IContextViewService, - @IKeybindingService protected keybindingService: IKeybindingService, - @INotificationService protected notificationService: INotificationService, - @IContextMenuService protected contextMenuService: IContextMenuService, - @IThemeService protected themeService: IThemeService, - @ICommandService protected commandService: ICommandService, - @IStorageService storageService: IStorageService, - @IConfigurationService configurationService: IConfigurationService, - @IExtensionService extensionService: IExtensionService, - @IWorkspaceContextService protected contextService: IWorkspaceContextService, - @IContextKeyService contextKeyService: IContextKeyService, - @IViewDescriptorService viewDescriptorService: IViewDescriptorService - ) { - super(VIEWLET_ID, { mergeViewWithContainerWhenSingleView: true }, instantiationService, configurationService, layoutService, contextMenuService, telemetryService, extensionService, themeService, storageService, contextService, viewDescriptorService); - - this.menus = instantiationService.createInstance(SCMMenus, undefined); - this._register(this.menus.onDidChangeTitle(this.updateTitleArea, this)); - - const viewsRegistry = Registry.as(Extensions.ViewsRegistry); - - viewsRegistry.registerViewWelcomeContent(EmptyPane.ID, { - content: localize('no open repo', "No source control providers registered."), - when: 'default' - }); - - viewsRegistry.registerViews([new EmptyPaneDescriptor()], this.viewContainer); - viewsRegistry.registerViews([new MainPaneDescriptor(this)], this.viewContainer); - - this._register(configurationService.onDidChangeConfiguration(e => { - if (e.affectsConfiguration('scm.alwaysShowProviders') && configurationService.getValue('scm.alwaysShowProviders')) { - this.viewContainerModel.setVisible(MainPane.ID, true); - } - })); - - this.repositoryCountKey = contextKeyService.createKey('scm.providerCount', 0); - - this._register(this.viewContainerModel.onDidAddVisibleViewDescriptors(this.onDidShowView, this)); - this._register(this.viewContainerModel.onDidRemoveVisibleViewDescriptors(this.onDidHideView, this)); - } - - create(parent: HTMLElement): void { - super.create(parent); - addClass(parent, 'scm-viewlet'); - this._register(this.scmService.onDidAddRepository(this.onDidAddRepository, this)); - this._register(this.scmService.onDidRemoveRepository(this.onDidRemoveRepository, this)); - this.scmService.repositories.forEach(r => this.onDidAddRepository(r)); - } - - private onDidAddRepository(repository: ISCMRepository): void { - const index = this._repositories.length; - this._repositories.push(repository); - - const viewDescriptor = new RepositoryViewDescriptor(repository, false); - Registry.as(Extensions.ViewsRegistry).registerViews([viewDescriptor], this.viewContainer); - this.viewDescriptors.push(viewDescriptor); - - this._onDidSplice.fire({ index, deleteCount: 0, elements: [repository] }); - this.updateTitleArea(); - - this.onDidChangeRepositories(); - } - - private onDidRemoveRepository(repository: ISCMRepository): void { - const index = this._repositories.indexOf(repository); - - if (index === -1) { - return; - } - - Registry.as(Extensions.ViewsRegistry).deregisterViews([this.viewDescriptors[index]], this.viewContainer); - - this._repositories.splice(index, 1); - this.viewDescriptors.splice(index, 1); - - this._onDidSplice.fire({ index, deleteCount: 1, elements: [] }); - this.updateTitleArea(); - - this.onDidChangeRepositories(); - } - - private onDidChangeRepositories(): void { - this.repositoryCountKey.set(this.repositories.length); - } - - private onDidShowView(e: IAddedViewDescriptorRef[]): void { - for (const ref of e) { - if (ref.viewDescriptor instanceof RepositoryViewDescriptor) { - ref.viewDescriptor.repository.setSelected(true); - } - } - } - - private onDidHideView(e: IViewDescriptorRef[]): void { - for (const ref of e) { - if (ref.viewDescriptor instanceof RepositoryViewDescriptor) { - ref.viewDescriptor.repository.setSelected(false); - } - } - - this.afterOnDidHideView(); - } - - @debounce(0) - private afterOnDidHideView(): void { - if (this.repositoryCountKey.get()! > 0 && this.viewDescriptors.every(d => !this.viewContainerModel.isVisible(d.id))) { - this.viewContainerModel.setVisible(this.viewDescriptors[0].id, true); - } - } - - focus(): void { - const repository = this.visibleRepositories[0]; - - if (repository) { - const pane = this.panes - .filter(pane => pane instanceof RepositoryPane && pane.repository === repository)[0] as RepositoryPane | undefined; - - if (pane) { - pane.focus(); - } else { - super.focus(); - } - } else { - super.focus(); - } - } - - getOptimalWidth(): number { - return 400; - } - - getTitle(): string { - const title = localize('source control', "Source Control"); - - if (this.visibleRepositories.length === 1) { - const [repository] = this.repositories; - return localize('viewletTitle', "{0}: {1}", title, repository.provider.label); - } else { - return title; - } - } - - getActionViewItem(action: IAction): IActionViewItem | undefined { - if (!(action instanceof MenuItemAction)) { - return undefined; - } - - return new ContextAwareMenuEntryActionViewItem(action, this.keybindingService, this.notificationService, this.contextMenuService); - } - - getActions(): IAction[] { - if (this.repositories.length > 0) { - return super.getActions(); - } - - return this.menus.getTitleActions(); - } - - getSecondaryActions(): IAction[] { - if (this.repositories.length > 0) { - return super.getSecondaryActions(); - } - - return this.menus.getTitleSecondaryActions(); - } - - getActionsContext(): any { - if (this.visibleRepositories.length === 1) { - return this.repositories[0].provider; - } - } - - setVisibleRepositories(repositories: ISCMRepository[]): void { - const visibleViewDescriptors = this.viewContainerModel.visibleViewDescriptors; - - const toSetVisible = this.viewContainerModel.activeViewDescriptors - .filter((d): d is RepositoryViewDescriptor => d instanceof RepositoryViewDescriptor && repositories.indexOf(d.repository) > -1 && visibleViewDescriptors.indexOf(d) === -1); - - const toSetInvisible = visibleViewDescriptors - .filter((d): d is RepositoryViewDescriptor => d instanceof RepositoryViewDescriptor && repositories.indexOf(d.repository) === -1); - - let size: number | undefined; - const oneToOne = toSetVisible.length === 1 && toSetInvisible.length === 1; - - for (const viewDescriptor of toSetInvisible) { - if (oneToOne) { - const pane = this.panes.filter(pane => pane.id === viewDescriptor.id)[0]; - - if (pane) { - size = this.getPaneSize(pane); - } - } - - this.viewContainerModel.setVisible(viewDescriptor.id, false); - } - - for (const viewDescriptor of toSetVisible) { - this.viewContainerModel.setVisible(viewDescriptor.id, true, size); - } - } -} diff --git a/src/vs/workbench/contrib/scm/browser/util.ts b/src/vs/workbench/contrib/scm/browser/util.ts index fc2a921687..a11404e23f 100644 --- a/src/vs/workbench/contrib/scm/browser/util.ts +++ b/src/vs/workbench/contrib/scm/browser/util.ts @@ -3,7 +3,7 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { ISCMResource, ISCMRepository, ISCMResourceGroup } from 'vs/workbench/contrib/scm/common/scm'; +import { ISCMResource, ISCMRepository, ISCMResourceGroup, ISCMInput } from 'vs/workbench/contrib/scm/common/scm'; import { IMenu } from 'vs/platform/actions/common/actions'; import { ActionBar } from 'vs/base/browser/ui/actionbar/actionbar'; import { IDisposable, Disposable, combinedDisposable, toDisposable } from 'vs/base/common/lifecycle'; @@ -15,6 +15,10 @@ export function isSCMRepository(element: any): element is ISCMRepository { return !!(element as ISCMRepository).provider && typeof (element as ISCMRepository).setSelected === 'function'; } +export function isSCMInput(element: any): element is ISCMInput { + return !!(element as ISCMInput).validateInput && typeof (element as ISCMInput).value === 'string'; +} + export function isSCMResourceGroup(element: any): element is ISCMResourceGroup { return !!(element as ISCMResourceGroup).provider && !!(element as ISCMResourceGroup).elements; } @@ -23,31 +27,42 @@ export function isSCMResource(element: any): element is ISCMResource { return !!(element as ISCMResource).sourceUri && isSCMResourceGroup((element as ISCMResource).resourceGroup); } -export function connectPrimaryMenuToInlineActionBar(menu: IMenu, actionBar: ActionBar): IDisposable { +const compareActions = (a: IAction, b: IAction) => a.id === b.id; + +export function connectPrimaryMenu(menu: IMenu, callback: (primary: IAction[], secondary: IAction[]) => void, isPrimaryGroup?: (group: string) => boolean): IDisposable { let cachedDisposable: IDisposable = Disposable.None; let cachedPrimary: IAction[] = []; + let cachedSecondary: IAction[] = []; const updateActions = () => { const primary: IAction[] = []; const secondary: IAction[] = []; - const disposable = createAndFillInActionBarActions(menu, { shouldForwardArgs: true }, { primary, secondary }, g => /^inline/.test(g)); + const disposable = createAndFillInActionBarActions(menu, { shouldForwardArgs: true }, { primary, secondary }, isPrimaryGroup); - if (equals(cachedPrimary, primary, (a, b) => a.id === b.id)) { + if (equals(cachedPrimary, primary, compareActions) && equals(cachedSecondary, secondary, compareActions)) { disposable.dispose(); return; } cachedDisposable = disposable; cachedPrimary = primary; + cachedSecondary = secondary; - actionBar.clear(); - actionBar.push(primary, { icon: true, label: false }); + callback(primary, secondary); }; updateActions(); - return combinedDisposable(menu.onDidChange(updateActions), toDisposable(() => { - cachedDisposable.dispose(); - })); + return combinedDisposable( + menu.onDidChange(updateActions), + toDisposable(() => cachedDisposable.dispose()) + ); +} + +export function connectPrimaryMenuToInlineActionBar(menu: IMenu, actionBar: ActionBar): IDisposable { + return connectPrimaryMenu(menu, (primary) => { + actionBar.clear(); + actionBar.push(primary, { icon: true, label: false }); + }, g => /^inline/.test(g)); } diff --git a/src/vs/workbench/contrib/scm/common/scm.ts b/src/vs/workbench/contrib/scm/common/scm.ts index 06260ae5ac..6ac9d1fa5d 100644 --- a/src/vs/workbench/contrib/scm/common/scm.ts +++ b/src/vs/workbench/contrib/scm/common/scm.ts @@ -11,6 +11,7 @@ import { Command } from 'vs/editor/common/modes'; import { ISequence } from 'vs/base/common/sequence'; export const VIEWLET_ID = 'workbench.view.scm'; +export const VIEW_PANE_ID = 'workbench.scm'; export interface IBaselineResourceProvider { getBaselineResource(resource: URI): Promise; @@ -79,6 +80,8 @@ export interface IInputValidator { } export interface ISCMInput { + readonly repository: ISCMRepository; + value: string; readonly onDidChange: Event; @@ -93,12 +96,10 @@ export interface ISCMInput { } export interface ISCMRepository extends IDisposable { - readonly onDidFocus: Event; readonly selected: boolean; readonly onDidChangeSelection: Event; readonly provider: ISCMProvider; readonly input: ISCMInput; - focus(): void; setSelected(selected: boolean): void; } @@ -107,10 +108,7 @@ export interface ISCMService { readonly _serviceBrand: undefined; readonly onDidAddRepository: Event; readonly onDidRemoveRepository: Event; - readonly repositories: ISCMRepository[]; - readonly selectedRepositories: ISCMRepository[]; - readonly onDidChangeSelectedRepositories: Event; registerSCMProvider(provider: ISCMProvider): ISCMRepository; } diff --git a/src/vs/workbench/contrib/scm/common/scmService.ts b/src/vs/workbench/contrib/scm/common/scmService.ts index 87f96651d2..da26689b4f 100644 --- a/src/vs/workbench/contrib/scm/common/scmService.ts +++ b/src/vs/workbench/contrib/scm/common/scmService.ts @@ -7,7 +7,6 @@ import { IDisposable, toDisposable } from 'vs/base/common/lifecycle'; import { Event, Emitter } from 'vs/base/common/event'; import { ISCMService, ISCMProvider, ISCMInput, ISCMRepository, IInputValidator } from './scm'; import { ILogService } from 'vs/platform/log/common/log'; -import { equals } from 'vs/base/common/arrays'; class SCMInput implements ISCMInput { @@ -70,13 +69,12 @@ class SCMInput implements ISCMInput { private readonly _onDidChangeValidateInput = new Emitter(); readonly onDidChangeValidateInput: Event = this._onDidChangeValidateInput.event; + + constructor(readonly repository: ISCMRepository) { } } class SCMRepository implements ISCMRepository { - private readonly _onDidFocus = new Emitter(); - readonly onDidFocus: Event = this._onDidFocus.event; - private _selected = false; get selected(): boolean { return this._selected; @@ -85,17 +83,13 @@ class SCMRepository implements ISCMRepository { private readonly _onDidChangeSelection = new Emitter(); readonly onDidChangeSelection: Event = this._onDidChangeSelection.event; - readonly input: ISCMInput = new SCMInput(); + readonly input: ISCMInput = new SCMInput(this); constructor( public readonly provider: ISCMProvider, private disposable: IDisposable ) { } - focus(): void { - this._onDidFocus.fire(); - } - setSelected(selected: boolean): void { if (this._selected === selected) { return; @@ -119,11 +113,10 @@ export class SCMService implements ISCMService { private _repositories: ISCMRepository[] = []; get repositories(): ISCMRepository[] { return [...this._repositories]; } - private _selectedRepositories: ISCMRepository[] = []; - get selectedRepositories(): ISCMRepository[] { return [...this._selectedRepositories]; } + private _selectedRepository: ISCMRepository | undefined; - private readonly _onDidChangeSelectedRepositories = new Emitter(); - readonly onDidChangeSelectedRepositories: Event = this._onDidChangeSelectedRepositories.event; + private readonly _onDidSelectRepository = new Emitter(); + readonly onDidSelectRepository: Event = this._onDidSelectRepository.event; private readonly _onDidAddProvider = new Emitter(); readonly onDidAddRepository: Event = this._onDidAddProvider.event; @@ -153,26 +146,31 @@ export class SCMService implements ISCMService { this._providerIds.delete(provider.id); this._repositories.splice(index, 1); this._onDidRemoveProvider.fire(repository); - this.onDidChangeSelection(); + + if (this._selectedRepository === repository) { + this.select(this._repositories[0]); + } }); const repository = new SCMRepository(provider, disposable); - const selectedDisposable = repository.onDidChangeSelection(this.onDidChangeSelection, this); + const selectedDisposable = Event.map(Event.filter(repository.onDidChangeSelection, selected => selected), _ => repository)(this.select, this); this._repositories.push(repository); this._onDidAddProvider.fire(repository); + if (!this._selectedRepository) { + repository.setSelected(true); + } + return repository; } - private onDidChangeSelection(): void { - const selectedRepositories = this._repositories.filter(r => r.selected); - - if (equals(this._selectedRepositories, selectedRepositories)) { - return; + private select(repository: ISCMRepository | undefined): void { + if (this._selectedRepository) { + this._selectedRepository.setSelected(false); } - this._selectedRepositories = this._repositories.filter(r => r.selected); - this._onDidChangeSelectedRepositories.fire(this.selectedRepositories); + this._selectedRepository = repository; + this._onDidSelectRepository.fire(this._selectedRepository); } } diff --git a/src/vs/workbench/contrib/search/browser/anythingQuickAccess.ts b/src/vs/workbench/contrib/search/browser/anythingQuickAccess.ts index 8e614a0fe2..623e3e7b1e 100644 --- a/src/vs/workbench/contrib/search/browser/anythingQuickAccess.ts +++ b/src/vs/workbench/contrib/search/browser/anythingQuickAccess.ts @@ -643,7 +643,7 @@ export class AnythingQuickAccessProvider extends PickerQuickAccessProvider toResource(editor, { supportSideBySide: SideBySideEditor.MASTER })) + .map(editor => toResource(editor, { supportSideBySide: SideBySideEditor.PRIMARY })) .filter(resource => !!resource && !contextService.isInsideWorkspace(resource) && fileService.canHandleResource(resource)); return resources as URI[]; diff --git a/src/vs/workbench/contrib/searchEditor/browser/searchEditorInput.ts b/src/vs/workbench/contrib/searchEditor/browser/searchEditorInput.ts index 63d8957dc8..96afea3f9c 100644 --- a/src/vs/workbench/contrib/searchEditor/browser/searchEditorInput.ts +++ b/src/vs/workbench/contrib/searchEditor/browser/searchEditorInput.ts @@ -280,7 +280,7 @@ export class SearchEditorInput extends EditorInput { const remoteAuthority = this.environmentService.configuration.remoteAuthority; const schemeFilter = remoteAuthority ? network.Schemas.vscodeRemote : network.Schemas.file; - return joinPath(this.fileDialogService.defaultFilePath(schemeFilter) || (await this.pathService.userHome), searchFileName); + return joinPath(this.fileDialogService.defaultFilePath(schemeFilter) || (await this.pathService.userHome()), searchFileName); } } diff --git a/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts b/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts index 82e7b564cd..8d05b1f698 100644 --- a/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts +++ b/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts @@ -1064,9 +1064,9 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer const eol = model.getEOL(); const edits = format(JSON.stringify(task), undefined, { eol, tabSize, insertSpaces }); let stringified = applyEdits(JSON.stringify(task), edits); - const regex = new RegExp(eol + '\\t', 'g'); - stringified = stringified.replace(regex, eol + '\t\t\t'); - const twoTabs = '\t\t'; + const regex = new RegExp(eol + (insertSpaces ? strings.repeat(' ', tabSize) : '\\t'), 'g'); + stringified = stringified.replace(regex, eol + (insertSpaces ? strings.repeat(' ', tabSize * 3) : '\t\t\t')); + const twoTabs = insertSpaces ? strings.repeat(' ', tabSize * 2) : '\t\t'; stringValue = twoTabs + stringified.slice(0, stringified.length - 1) + twoTabs + stringified.slice(stringified.length - 1); } finally { if (reference) { @@ -1089,7 +1089,7 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer const contentValue = content.toString(); let stringValue: string | undefined; if (configIndex !== -1) { - const json: TaskConfig.ExternalTaskRunnerConfiguration = JSON.parse(contentValue); + const json: TaskConfig.ExternalTaskRunnerConfiguration = this.configurationService.getValue('tasks', { resource }); if (json.tasks && (json.tasks.length > configIndex)) { stringValue = await this.formatTaskForJson(resource, json.tasks[configIndex]); } @@ -1874,7 +1874,7 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer } } if (isAffected) { - this._outputChannel.append(nls.localize('TaskSystem.invalidTaskJsonOther', 'Error: The content of the tasks json in {0} has syntax errors. Please correct them before executing a task.\n', location)); + this._outputChannel.append(nls.localize({ key: 'TaskSystem.invalidTaskJsonOther', comment: ['Message notifies of an error in one of several places there is tasks related json, not necessarily in a file named tasks.json'] }, 'Error: The content of the tasks json in {0} has syntax errors. Please correct them before executing a task.\n', location)); this.showOutput(); return { config, hasParseErrors: true }; } diff --git a/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts b/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts index bc87801e59..ddccd891c2 100644 --- a/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts +++ b/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts @@ -968,7 +968,7 @@ export class TerminalTaskSystem implements ITaskSystem { windowsShellArgs = true; let basename = path.basename(shellLaunchConfig.executable!).toLowerCase(); // If we don't have a cwd, then the terminal uses the home dir. - const userHome = await this.pathService.userHome; + const userHome = await this.pathService.userHome(); if (basename === 'cmd.exe' && ((options.cwd && isUNC(options.cwd)) || (!options.cwd && isUNC(userHome.fsPath)))) { return undefined; } diff --git a/src/vs/workbench/contrib/tasks/common/taskConfiguration.ts b/src/vs/workbench/contrib/tasks/common/taskConfiguration.ts index c52244a22c..65d6d7b45c 100644 --- a/src/vs/workbench/contrib/tasks/common/taskConfiguration.ts +++ b/src/vs/workbench/contrib/tasks/common/taskConfiguration.ts @@ -2024,7 +2024,7 @@ class ConfigurationParser { } context.problemReporter.error( nls.localize( - 'TaskParse.noOsSpecificGlobalTasks', + { key: 'TaskParse.noOsSpecificGlobalTasks', comment: ['\"Task version 2.0.0\" refers to the 2.0.0 version of the task system. The \"version 2.0.0\" is not localizable as it is a json key and value.'] }, 'Task version 2.0.0 doesn\'t support global OS specific tasks. Convert them to a task with a OS specific command. Affected tasks are:\n{0}', taskContent.join('\n')) ); } diff --git a/src/vs/workbench/contrib/terminal/browser/links/terminalExternalLinkProviderAdapter.ts b/src/vs/workbench/contrib/terminal/browser/links/terminalExternalLinkProviderAdapter.ts new file mode 100644 index 0000000000..66ffa4ad32 --- /dev/null +++ b/src/vs/workbench/contrib/terminal/browser/links/terminalExternalLinkProviderAdapter.ts @@ -0,0 +1,64 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { Terminal, IViewportRange, IBufferLine } from 'xterm'; +import { getXtermLineContent, convertLinkRangeToBuffer } from 'vs/workbench/contrib/terminal/browser/links/terminalLinkHelpers'; +import { TerminalLink } from 'vs/workbench/contrib/terminal/browser/links/terminalLink'; +import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; +import { TerminalBaseLinkProvider } from 'vs/workbench/contrib/terminal/browser/links/terminalBaseLinkProvider'; +import { ITerminalExternalLinkProvider, ITerminalInstance } from 'vs/workbench/contrib/terminal/browser/terminal'; + +/** + * An adapter to convert a simple external link provider into an internal link provider that + * manages link lifecycle, hovers, etc. and gets registered in xterm.js. + */ +export class TerminalExternalLinkProviderAdapter extends TerminalBaseLinkProvider { + + constructor( + private readonly _xterm: Terminal, + private readonly _instance: ITerminalInstance, + private readonly _externalLinkProvider: ITerminalExternalLinkProvider, + private readonly _tooltipCallback: (link: TerminalLink, viewportRange: IViewportRange, modifierDownCallback?: () => void, modifierUpCallback?: () => void) => void, + @IInstantiationService private readonly _instantiationService: IInstantiationService + ) { + super(); + } + + protected async _provideLinks(y: number): Promise { + let startLine = y - 1; + let endLine = startLine; + + const lines: IBufferLine[] = [ + this._xterm.buffer.active.getLine(startLine)! + ]; + + while (this._xterm.buffer.active.getLine(startLine)?.isWrapped) { + lines.unshift(this._xterm.buffer.active.getLine(startLine - 1)!); + startLine--; + } + + while (this._xterm.buffer.active.getLine(endLine + 1)?.isWrapped) { + lines.push(this._xterm.buffer.active.getLine(endLine + 1)!); + endLine++; + } + + const lineContent = getXtermLineContent(this._xterm.buffer.active, startLine, endLine, this._xterm.cols); + const externalLinks = await this._externalLinkProvider.provideLinks(this._instance, lineContent); + if (!externalLinks) { + return []; + } + + return externalLinks.map(link => { + const bufferRange = convertLinkRangeToBuffer(lines, this._xterm.cols, { + startColumn: link.startIndex + 1, + startLineNumber: 1, + endColumn: link.startIndex + link.length + 1, + endLineNumber: 1 + }, startLine); + const matchingText = lineContent.substr(link.startIndex, link.length) || ''; + return this._instantiationService.createInstance(TerminalLink, bufferRange, matchingText, this._xterm.buffer.active.viewportY, (_, text) => link.activate(text), this._tooltipCallback, true, link.label); + }); + } +} diff --git a/src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts b/src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts index 4ef18d31f0..7ac793e6fd 100644 --- a/src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts +++ b/src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts @@ -5,7 +5,7 @@ import * as nls from 'vs/nls'; import { URI } from 'vs/base/common/uri'; -import { DisposableStore, IDisposable } from 'vs/base/common/lifecycle'; +import { DisposableStore, IDisposable, dispose } from 'vs/base/common/lifecycle'; import { IOpenerService } from 'vs/platform/opener/common/opener'; import { TerminalWidgetManager } from 'vs/workbench/contrib/terminal/browser/widgets/widgetManager'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; @@ -13,10 +13,10 @@ import { ITerminalProcessManager, ITerminalConfiguration, TERMINAL_CONFIG_SECTIO import { ITextEditorSelection } from 'vs/platform/editor/common/editor'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IFileService } from 'vs/platform/files/common/files'; -import { Terminal, IViewportRange } from 'xterm'; +import { Terminal, IViewportRange, ILinkProvider } from 'xterm'; import { REMOTE_HOST_SCHEME } from 'vs/platform/remote/common/remoteHosts'; import { posix, win32 } from 'vs/base/common/path'; -import { ITerminalBeforeHandleLinkEvent, LINK_INTERCEPT_THRESHOLD } from 'vs/workbench/contrib/terminal/browser/terminal'; +import { ITerminalBeforeHandleLinkEvent, LINK_INTERCEPT_THRESHOLD, ITerminalExternalLinkProvider, ITerminalInstance } from 'vs/workbench/contrib/terminal/browser/terminal'; import { OperatingSystem, isMacintosh, OS } from 'vs/base/common/platform'; import { IMarkdownString, MarkdownString } from 'vs/base/common/htmlContent'; import { Emitter, Event } from 'vs/base/common/event'; @@ -28,6 +28,7 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti import { XTermCore } from 'vs/workbench/contrib/terminal/browser/xterm-private'; import { TerminalHover, ILinkHoverTargetOptions } from 'vs/workbench/contrib/terminal/browser/widgets/terminalHoverWidget'; import { TerminalLink } from 'vs/workbench/contrib/terminal/browser/links/terminalLink'; +import { TerminalExternalLinkProviderAdapter } from 'vs/workbench/contrib/terminal/browser/links/terminalExternalLinkProviderAdapter'; export type XtermLinkMatcherHandler = (event: MouseEvent | undefined, link: string) => Promise; export type XtermLinkMatcherValidationCallback = (uri: string, callback: (isValid: boolean) => void) => void; @@ -43,8 +44,9 @@ interface IPath { export class TerminalLinkManager extends DisposableStore { private _widgetManager: TerminalWidgetManager | undefined; private _processCwd: string | undefined; - private _linkProviders: IDisposable[] = []; private _hasBeforeHandleLinkListeners = false; + private _standardLinkProviders: ILinkProvider[] = []; + private _standardLinkProvidersDisposables: IDisposable[] = []; protected static _LINK_INTERCEPT_THRESHOLD = LINK_INTERCEPT_THRESHOLD; public static readonly LINK_INTERCEPT_THRESHOLD = TerminalLinkManager._LINK_INTERCEPT_THRESHOLD; @@ -72,7 +74,29 @@ export class TerminalLinkManager extends DisposableStore { ) { super(); - this.registerLinkProvider(); + // Protocol links + const wrappedActivateCallback = this._wrapLinkHandler((_, link) => this._handleProtocolLink(link)); + const protocolProvider = this._instantiationService.createInstance(TerminalProtocolLinkProvider, this._xterm, wrappedActivateCallback, this._tooltipCallback2.bind(this)); + this._standardLinkProviders.push(protocolProvider); + + // Validated local links + if (this._configurationService.getValue(TERMINAL_CONFIG_SECTION).enableFileLinks) { + const wrappedTextLinkActivateCallback = this._wrapLinkHandler((_, link) => this._handleLocalLink(link)); + const validatedProvider = this._instantiationService.createInstance(TerminalValidatedLocalLinkProvider, + this._xterm, + this._processManager.os || OS, + wrappedTextLinkActivateCallback, + this._wrapLinkHandler.bind(this), + this._tooltipCallback2.bind(this), + async (link, cb) => cb(await this._resolvePath(link))); + this._standardLinkProviders.push(validatedProvider); + } + + // Word links + const wordProvider = this._instantiationService.createInstance(TerminalWordLinkProvider, this._xterm, this._wrapLinkHandler.bind(this), this._tooltipCallback2.bind(this)); + this._standardLinkProviders.push(wordProvider); + + this._registerStandardLinkProviders(); } private _tooltipCallback2(link: TerminalLink, viewportRange: IViewportRange, modifierDownCallback?: () => void, modifierUpCallback?: () => void) { @@ -123,28 +147,20 @@ export class TerminalLinkManager extends DisposableStore { this._processCwd = processCwd; } - public registerLinkProvider(): void { - // Protocol links - const wrappedActivateCallback = this._wrapLinkHandler((_, link) => this._handleProtocolLink(link)); - const protocolProvider = this._instantiationService.createInstance(TerminalProtocolLinkProvider, this._xterm, wrappedActivateCallback, this._tooltipCallback2.bind(this)); - this._linkProviders.push(this._xterm.registerLinkProvider(protocolProvider)); - - // Validated local links - if (this._configurationService.getValue(TERMINAL_CONFIG_SECTION).enableFileLinks) { - const wrappedTextLinkActivateCallback = this._wrapLinkHandler((_, link) => this._handleLocalLink(link)); - const validatedProvider = this._instantiationService.createInstance(TerminalValidatedLocalLinkProvider, - this._xterm, - this._processManager.os || OS, - wrappedTextLinkActivateCallback, - this._wrapLinkHandler.bind(this), - this._tooltipCallback2.bind(this), - async (link, cb) => cb(await this._resolvePath(link))); - this._linkProviders.push(this._xterm.registerLinkProvider(validatedProvider)); + private _registerStandardLinkProviders(): void { + dispose(this._standardLinkProvidersDisposables); + this._standardLinkProvidersDisposables = []; + for (const p of this._standardLinkProviders) { + this._standardLinkProvidersDisposables.push(this._xterm.registerLinkProvider(p)); } + } - // Word links - const wordProvider = this._instantiationService.createInstance(TerminalWordLinkProvider, this._xterm, this._wrapLinkHandler.bind(this), this._tooltipCallback2.bind(this)); - this._linkProviders.push(this._xterm.registerLinkProvider(wordProvider)); + public registerExternalLinkProvider(instance: ITerminalInstance, linkProvider: ITerminalExternalLinkProvider): IDisposable { + const wrappedLinkProvider = this._instantiationService.createInstance(TerminalExternalLinkProviderAdapter, this._xterm, instance, linkProvider, this._tooltipCallback2.bind(this)); + const newLinkProvider = this._xterm.registerLinkProvider(wrappedLinkProvider); + // Re-register the standard link providers so they are a lower priority that the new one + this._registerStandardLinkProviders(); + return newLinkProvider; } protected _wrapLinkHandler(handler: (event: MouseEvent | undefined, link: string) => void): XtermLinkMatcherHandler { @@ -255,7 +271,8 @@ export class TerminalLinkManager extends DisposableStore { } } - return new MarkdownString(`[${label || nls.localize('followLink', "Follow Link")}](${uri}) (${clickLabel})`, true); + // Use 'undefined' when uri is '' so the link displays correctly + return new MarkdownString(`[${label || nls.localize('followLink', "Follow Link")}](${uri || 'undefined'}) (${clickLabel})`, true); } private get osPath(): IPath { diff --git a/src/vs/workbench/contrib/terminal/browser/media/scrollbar.css b/src/vs/workbench/contrib/terminal/browser/media/scrollbar.css index f6ad21f8dd..ee80e6a3f1 100644 --- a/src/vs/workbench/contrib/terminal/browser/media/scrollbar.css +++ b/src/vs/workbench/contrib/terminal/browser/media/scrollbar.css @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ .monaco-workbench .pane-body.integrated-terminal .xterm-viewport { - /* Use the hack presented in http://stackoverflow.com/a/38748186/1156119 to get opacity transitions working on the scrollbar */ + /* Use the hack presented in https://stackoverflow.com/a/38748186/1156119 to get opacity transitions working on the scrollbar */ -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; diff --git a/src/vs/workbench/contrib/terminal/browser/terminal.ts b/src/vs/workbench/contrib/terminal/browser/terminal.ts index 7a1930722c..237c461879 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminal.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminal.ts @@ -144,6 +144,14 @@ export interface ITerminalService { */ addLinkHandler(key: string, callback: TerminalLinkHandlerCallback): IDisposable; + /** + * Registers a link provider that enables integrators to add links to the terminal. + * @param linkProvider When registered, the link provider is asked whenever a cell is hovered + * for links at that position. This lets the terminal know all links at a given area and also + * labels for what these links are going to do. + */ + registerLinkProvider(linkProvider: ITerminalExternalLinkProvider): IDisposable; + selectDefaultShell(): Promise; setContainers(panelContainer: HTMLElement, terminalContainer: HTMLElement): void; @@ -165,22 +173,37 @@ export interface ITerminalService { requestStartExtensionTerminal(proxy: ITerminalProcessExtHostProxy, cols: number, rows: number): Promise; } +/** + * Similar to xterm.js' ILinkProvider but using promises and hides xterm.js internals (like buffer + * positions, decorations, etc.) from the rest of vscode. This is the interface to use for + * workbench integrations. + */ +export interface ITerminalExternalLinkProvider { + provideLinks(instance: ITerminalInstance, line: string): Promise; +} + +export interface ITerminalLink { + /** The startIndex of the link in the line. */ + startIndex: number; + /** The length of the link in the line. */ + length: number; + /** The descriptive label for what the link does when activated. */ + label?: string; + /** + * Activates the link. + * @param text The text of the link. + */ + activate(text: string): void; +} + export interface ISearchOptions { - /** - * Whether the find should be done as a regex. - */ + /** Whether the find should be done as a regex. */ regex?: boolean; - /** - * Whether only whole words should match. - */ + /** Whether only whole words should match. */ wholeWord?: boolean; - /** - * Whether find should pay attention to case. - */ + /** Whether find should pay attention to case. */ caseSensitive?: boolean; - /** - * Whether the search should start at the current search position (not the next row) - */ + /** Whether the search should start at the current search position (not the next row). */ incremental?: boolean; } @@ -234,6 +257,7 @@ export interface ITerminalInstance { onFocused: Event; onProcessIdReady: Event; + onLinksReady: Event; onRequestExtHostProcess: Event; onDimensionsChanged: Event; onMaximumDimensionsChanged: Event; @@ -272,6 +296,9 @@ export interface ITerminalInstance { readonly exitCode: number | undefined; + readonly areLinksReady: boolean; + + /** A promise that resolves when the terminal's pty/process have been created. */ processReady: Promise; /** @@ -480,4 +507,9 @@ export interface ITerminalInstance { getInitialCwd(): Promise; getCwd(): Promise; + + /** + * @throws when called before xterm.js is ready. + */ + registerLinkProvider(provider: ITerminalExternalLinkProvider): IDisposable; } diff --git a/src/vs/workbench/contrib/terminal/browser/terminalActions.ts b/src/vs/workbench/contrib/terminal/browser/terminalActions.ts index 748b4ac118..85fb09e0cf 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalActions.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalActions.ts @@ -38,6 +38,7 @@ import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegis import { localize } from 'vs/nls'; import { CONTEXT_ACCESSIBILITY_MODE_ENABLED } from 'vs/platform/accessibility/common/accessibility'; import { IOpenerService } from 'vs/platform/opener/common/opener'; +import { ITerminalContributionService } from 'vs/workbench/contrib/terminal/common/terminalExtensionPoints'; async function getCwdForSplit(configHelper: ITerminalConfigHelper, instance: ITerminalInstance, folders?: IWorkspaceFolder[], commandService?: ICommandService): Promise { switch (configHelper.config.splitCwd) { @@ -304,6 +305,8 @@ export class SelectDefaultShellWindowsTerminalAction extends Action { } } +const terminalIndexRe = /^([0-9]+): /; + export class SwitchTerminalAction extends Action { public static readonly ID = TERMINAL_COMMAND_ID.SWITCH_TERMINAL; @@ -311,7 +314,9 @@ export class SwitchTerminalAction extends Action { constructor( id: string, label: string, - @ITerminalService private readonly _terminalService: ITerminalService + @ITerminalService private readonly _terminalService: ITerminalService, + @ITerminalContributionService private readonly _contributions: ITerminalContributionService, + @ICommandService private readonly _commands: ICommandService, ) { super(id, label, 'terminal-action switch-terminal'); } @@ -328,9 +333,20 @@ export class SwitchTerminalAction extends Action { this._terminalService.refreshActiveTab(); return this._terminalService.selectDefaultShell(); } - const selectedTabIndex = parseInt(item.split(':')[0], 10) - 1; - this._terminalService.setActiveTabByIndex(selectedTabIndex); - return this._terminalService.showPanel(true); + + const indexMatches = terminalIndexRe.exec(item); + if (indexMatches) { + this._terminalService.setActiveTabByIndex(Number(indexMatches[1]) - 1); + return this._terminalService.showPanel(true); + } + + const customType = this._contributions.terminalTypes.find(t => t.title === item); + if (customType) { + return this._commands.executeCommand(customType.command); + } + + console.warn(`Unmatched terminal item: "${item}"`); + return Promise.resolve(); } } @@ -342,9 +358,10 @@ export class SwitchTerminalActionViewItem extends SelectActionViewItem { action: IAction, @ITerminalService private readonly _terminalService: ITerminalService, @IThemeService private readonly _themeService: IThemeService, - @IContextViewService contextViewService: IContextViewService + @ITerminalContributionService private readonly _contributions: ITerminalContributionService, + @IContextViewService contextViewService: IContextViewService, ) { - super(null, action, getTerminalSelectOpenItems(_terminalService), _terminalService.activeTabIndex, contextViewService, { ariaLabel: localize('terminals', 'Open Terminals.'), optionsAsChildren: true }); + super(null, action, getTerminalSelectOpenItems(_terminalService, _contributions), _terminalService.activeTabIndex, contextViewService, { ariaLabel: localize('terminals', 'Open Terminals.'), optionsAsChildren: true }); this._register(_terminalService.onInstancesChanged(this._updateItems, this)); this._register(_terminalService.onActiveTabChanged(this._updateItems, this)); @@ -362,13 +379,18 @@ export class SwitchTerminalActionViewItem extends SelectActionViewItem { } private _updateItems(): void { - this.setOptions(getTerminalSelectOpenItems(this._terminalService), this._terminalService.activeTabIndex); + this.setOptions(getTerminalSelectOpenItems(this._terminalService, this._contributions), this._terminalService.activeTabIndex); } } -function getTerminalSelectOpenItems(terminalService: ITerminalService): ISelectOptionItem[] { +function getTerminalSelectOpenItems(terminalService: ITerminalService, contributions: ITerminalContributionService): ISelectOptionItem[] { const items = terminalService.getTabLabels().map(label => { text: label }); items.push({ text: SwitchTerminalActionViewItem.SEPARATOR, isDisabled: true }); + + for (const contributed of contributions.terminalTypes) { + items.push({ text: contributed.title }); + } + items.push({ text: SelectDefaultShellWindowsTerminalAction.LABEL }); return items; } diff --git a/src/vs/workbench/contrib/terminal/browser/terminalConfigHelper.ts b/src/vs/workbench/contrib/terminal/browser/terminalConfigHelper.ts index 2c5196a9fc..0dbb96c8f2 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalConfigHelper.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalConfigHelper.ts @@ -214,7 +214,7 @@ export class TerminalConfigHelper implements IBrowserTerminalConfigHelper { const shellArgsConfigValue = this._configurationService.inspect(`terminal.integrated.shellArgs.${platformKey}`); const envConfigValue = this._configurationService.inspect<{ [key: string]: string }>(`terminal.integrated.env.${platformKey}`); - // Check if workspace setting exists and whether it's whitelisted + // Check if workspace setting exists and whether it's allowed let isWorkspaceShellAllowed: boolean | undefined = false; if (shellConfigValue.workspaceValue !== undefined || shellArgsConfigValue.workspaceValue !== undefined || envConfigValue.workspaceValue !== undefined) { isWorkspaceShellAllowed = this.isWorkspaceShellAllowed(undefined); @@ -226,7 +226,7 @@ export class TerminalConfigHelper implements IBrowserTerminalConfigHelper { isWorkspaceShellAllowed = true; } - // Check if the value is neither blacklisted (false) or whitelisted (true) and ask for + // Check if the value is neither on the blocklist (false) or allowlist (true) and ask for // permission if (isWorkspaceShellAllowed === undefined) { let shellString: string | undefined; diff --git a/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts b/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts index 98b56e5bd2..b0f1eb2677 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts @@ -30,7 +30,7 @@ import { ansiColorIdentifiers, TERMINAL_BACKGROUND_COLOR, TERMINAL_CURSOR_BACKGR import { TerminalConfigHelper } from 'vs/workbench/contrib/terminal/browser/terminalConfigHelper'; import { TerminalLinkManager } from 'vs/workbench/contrib/terminal/browser/links/terminalLinkManager'; import { IAccessibilityService } from 'vs/platform/accessibility/common/accessibility'; -import { ITerminalInstanceService, ITerminalInstance, TerminalShellType, WindowsShellType, ITerminalBeforeHandleLinkEvent } from 'vs/workbench/contrib/terminal/browser/terminal'; +import { ITerminalInstanceService, ITerminalInstance, TerminalShellType, WindowsShellType, ITerminalBeforeHandleLinkEvent, ITerminalExternalLinkProvider } from 'vs/workbench/contrib/terminal/browser/terminal'; import { TerminalProcessManager } from 'vs/workbench/contrib/terminal/browser/terminalProcessManager'; import { Terminal as XTermTerminal, IBuffer, ITerminalAddon } from 'xterm'; import { SearchAddon, ISearchOptions } from 'xterm-addon-search'; @@ -95,6 +95,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { private _xtermReadyPromise: Promise; private _titleReadyPromise: Promise; private _titleReadyComplete: ((title: string) => any) | undefined; + private _areLinksReady: boolean = false; private _messageTitleDisposable: IDisposable | undefined; @@ -127,6 +128,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { // TODO: How does this work with detached processes? // TODO: Should this be an event as it can fire twice? public get processReady(): Promise { return this._processManager.ptyProcessReady; } + public get areLinksReady(): boolean { return this._areLinksReady; } public get exitCode(): number | undefined { return this._exitCode; } public get title(): string { return this._title; } public get hadFocusOnExit(): boolean { return this._hadFocusOnExit; } @@ -144,6 +146,8 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { public get onFocused(): Event { return this._onFocused.event; } private readonly _onProcessIdReady = new Emitter(); public get onProcessIdReady(): Event { return this._onProcessIdReady.event; } + private readonly _onLinksReady = new Emitter(); + public get onLinksReady(): Event { return this._onLinksReady.event; } private readonly _onTitleChanged = new Emitter(); public get onTitleChanged(): Event { return this._onTitleChanged.event; } private readonly _onData = new Emitter(); @@ -201,7 +205,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { this._logService.trace(`terminalInstance#ctor (id: ${this.id})`, this._shellLaunchConfig); this._initDimensions(); - this._createProcess(); + this._createProcessManager(); this._xtermReadyPromise = this._createXterm(); this._xtermReadyPromise.then(() => { @@ -209,6 +213,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { if (_container) { this._attachToElement(_container); } + this._createProcess(); }); this.addDisposable(this._configurationService.onDidChangeConfiguration(e => { @@ -416,6 +421,8 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { e.terminal = this; this._onBeforeHandleLink.fire(e); }); + this._areLinksReady = true; + this._onLinksReady.fire(this); }); this._commandTrackerAddon = new CommandTrackerAddon(); @@ -868,9 +875,11 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { this._terminalHasTextContextKey.set(isActive && this.hasSelection()); } - protected _createProcess(): void { + protected _createProcessManager(): void { this._processManager = this._instantiationService.createInstance(TerminalProcessManager, this._id, this._configHelper); - this._processManager.onProcessReady(() => this._onProcessIdReady.fire(this)); + this._processManager.onProcessReady(() => { + this._onProcessIdReady.fire(this); + }); this._processManager.onProcessExit(exitCode => this._onProcessExit(exitCode)); this._processManager.onProcessData(data => this._onData.fire(data)); this._processManager.onProcessOverrideDimensions(e => this.setDimensions(e)); @@ -914,9 +923,9 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { }); }); } + } - // Create the process asynchronously to allow the terminal's container to be created so - // dimensions are accurate + private _createProcess(): void { this._processManager.createProcess(this._shellLaunchConfig, this._cols, this._rows, this._accessibilityService.isScreenReaderOptimized()).then(error => { if (error) { this._onProcessExit(error); @@ -1108,13 +1117,14 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { // Launch the process unless this is only a renderer. // In the renderer only cases, we still need to set the title correctly. const oldTitle = this._title; - this._createProcess(); + this._createProcessManager(); if (oldTitle !== this._title) { this.setTitle(this._title, TitleEventSource.Process); } this._processManager.onProcessData(data => this._onProcessData(data)); + this._createProcess(); } public relaunch(): void { @@ -1492,6 +1502,13 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { public getCwd(): Promise { return this._processManager.getCwd(); } + + public registerLinkProvider(provider: ITerminalExternalLinkProvider): IDisposable { + if (!this._linkManager) { + throw new Error('TerminalInstance.registerLinkProvider before link manager was ready'); + } + return this._linkManager.registerExternalLinkProvider(this, provider); + } } registerThemingParticipant((theme: IColorTheme, collector: ICssStyleCollector) => { diff --git a/src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts b/src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts index 7c6cc8f133..7bf44e1a70 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts @@ -146,7 +146,7 @@ export class TerminalProcessManager extends Disposable implements ITerminalProce this.userHome = this._pathService.resolvedUserHome?.fsPath; this.os = platform.OS; if (launchRemotely) { - const userHomeUri = await this._pathService.userHome; + const userHomeUri = await this._pathService.userHome(); this.userHome = userHomeUri.path; if (hasRemoteAuthority) { const remoteEnv = await this._remoteAgentService.getEnvironment(); diff --git a/src/vs/workbench/contrib/terminal/browser/terminalService.ts b/src/vs/workbench/contrib/terminal/browser/terminalService.ts index 4acce3be1b..7499790175 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalService.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalService.ts @@ -14,7 +14,7 @@ import { TerminalTab } from 'vs/workbench/contrib/terminal/browser/terminalTab'; import { IInstantiationService, optional } from 'vs/platform/instantiation/common/instantiation'; import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; import { TerminalInstance } from 'vs/workbench/contrib/terminal/browser/terminalInstance'; -import { ITerminalService, ITerminalInstance, ITerminalTab, TerminalShellType, WindowsShellType, TerminalLinkHandlerCallback, LINK_INTERCEPT_THRESHOLD } from 'vs/workbench/contrib/terminal/browser/terminal'; +import { ITerminalService, ITerminalInstance, ITerminalTab, TerminalShellType, WindowsShellType, TerminalLinkHandlerCallback, LINK_INTERCEPT_THRESHOLD, ITerminalExternalLinkProvider } from 'vs/workbench/contrib/terminal/browser/terminal'; import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService'; import { TerminalConfigHelper } from 'vs/workbench/contrib/terminal/browser/terminalConfigHelper'; import { IQuickInputService, IQuickPickItem, IPickOptions } from 'vs/platform/quickinput/common/quickInput'; @@ -54,6 +54,8 @@ export class TerminalService implements ITerminalService { private _extHostsReady: { [authority: string]: IExtHostReadyEntry | undefined } = {}; private _activeTabIndex: number; private _linkHandlers: { [key: string]: TerminalLinkHandlerCallback } = {}; + private _linkProviders: Set = new Set(); + private _linkProviderDisposables: Map = new Map(); public get activeTabIndex(): number { return this._activeTabIndex; } public get terminalInstances(): ITerminalInstance[] { return this._terminalInstances; } @@ -72,6 +74,8 @@ export class TerminalService implements ITerminalService { public get onInstanceDisposed(): Event { return this._onInstanceDisposed.event; } private readonly _onInstanceProcessIdReady = new Emitter(); public get onInstanceProcessIdReady(): Event { return this._onInstanceProcessIdReady.event; } + private readonly _onInstanceLinksReady = new Emitter(); + public get onInstanceLinksReady(): Event { return this._onInstanceLinksReady.event; } private readonly _onInstanceRequestSpawnExtHostProcess = new Emitter(); public get onInstanceRequestSpawnExtHostProcess(): Event { return this._onInstanceRequestSpawnExtHostProcess.event; } private readonly _onInstanceRequestStartExtensionTerminal = new Emitter(); @@ -128,6 +132,7 @@ export class TerminalService implements ITerminalService { const instance = this.getActiveInstance(); this._onActiveInstanceChanged.fire(instance ? instance : undefined); }); + this.onInstanceLinksReady(instance => this._setInstanceLinkProviders(instance)); this._handleContextKeys(); } @@ -429,6 +434,7 @@ export class TerminalService implements ITerminalService { instance.addDisposable(instance.onDisposed(this._onInstanceDisposed.fire, this._onInstanceDisposed)); instance.addDisposable(instance.onTitleChanged(this._onInstanceTitleChanged.fire, this._onInstanceTitleChanged)); instance.addDisposable(instance.onProcessIdReady(this._onInstanceProcessIdReady.fire, this._onInstanceProcessIdReady)); + instance.addDisposable(instance.onLinksReady(this._onInstanceLinksReady.fire, this._onInstanceLinksReady)); instance.addDisposable(instance.onDimensionsChanged(() => this._onInstanceDimensionsChanged.fire(instance))); instance.addDisposable(instance.onMaximumDimensionsChanged(() => this._onInstanceMaximumDimensionsChanged.fire(instance))); instance.addDisposable(instance.onFocus(this._onActiveInstanceChanged.fire, this._onActiveInstanceChanged)); @@ -478,6 +484,34 @@ export class TerminalService implements ITerminalService { }; } + public registerLinkProvider(linkProvider: ITerminalExternalLinkProvider): IDisposable { + const disposables: IDisposable[] = []; + this._linkProviders.add(linkProvider); + for (const instance of this.terminalInstances) { + if (instance.areLinksReady) { + disposables.push(instance.registerLinkProvider(linkProvider)); + } + } + this._linkProviderDisposables.set(linkProvider, disposables); + return { + dispose: () => { + const disposables = this._linkProviderDisposables.get(linkProvider) || []; + for (const disposable of disposables) { + disposable.dispose(); + } + this._linkProviders.delete(linkProvider); + } + }; + } + + private _setInstanceLinkProviders(instance: ITerminalInstance): void { + for (const linkProvider of this._linkProviders) { + const disposables = this._linkProviderDisposables.get(linkProvider); + const provider = instance.registerLinkProvider(linkProvider); + disposables?.push(provider); + } + } + private _getTabForInstance(instance: ITerminalInstance): ITerminalTab | undefined { return find(this._terminalTabs, tab => tab.terminalInstances.indexOf(instance) !== -1); } diff --git a/src/vs/workbench/contrib/terminal/browser/widgets/environmentVariableInfoWidget.ts b/src/vs/workbench/contrib/terminal/browser/widgets/environmentVariableInfoWidget.ts index 5f353ebc84..ed58b81038 100644 --- a/src/vs/workbench/contrib/terminal/browser/widgets/environmentVariableInfoWidget.ts +++ b/src/vs/workbench/contrib/terminal/browser/widgets/environmentVariableInfoWidget.ts @@ -11,7 +11,7 @@ import { RunOnceScheduler } from 'vs/base/common/async'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import * as dom from 'vs/base/browser/dom'; import { IDisposable } from 'vs/base/common/lifecycle'; -import { IHoverService, IHoverOptions } from 'vs/workbench/contrib/hover/browser/hover'; +import { IHoverService, IHoverOptions } from 'vs/workbench/services/hover/browser/hover'; export class EnvironmentVariableInfoWidget extends Widget implements ITerminalWidget { readonly id = 'env-var-info'; diff --git a/src/vs/workbench/contrib/terminal/browser/widgets/terminalHoverWidget.ts b/src/vs/workbench/contrib/terminal/browser/widgets/terminalHoverWidget.ts index c8c9ce241f..cba57b7907 100644 --- a/src/vs/workbench/contrib/terminal/browser/widgets/terminalHoverWidget.ts +++ b/src/vs/workbench/contrib/terminal/browser/widgets/terminalHoverWidget.ts @@ -9,7 +9,7 @@ import { Widget } from 'vs/base/browser/ui/widget'; import { ITerminalWidget } from 'vs/workbench/contrib/terminal/browser/widgets/widgets'; import * as dom from 'vs/base/browser/dom'; import { IViewportRange } from 'xterm'; -import { IHoverTarget, IHoverService } from 'vs/workbench/contrib/hover/browser/hover'; +import { IHoverTarget, IHoverService } from 'vs/workbench/services/hover/browser/hover'; import { registerThemingParticipant } from 'vs/platform/theme/common/themeService'; import { editorHoverHighlight } from 'vs/platform/theme/common/colorRegistry'; diff --git a/src/vs/workbench/contrib/terminal/common/terminal.ts b/src/vs/workbench/contrib/terminal/common/terminal.ts index 238c176d8f..72799dda69 100644 --- a/src/vs/workbench/contrib/terminal/common/terminal.ts +++ b/src/vs/workbench/contrib/terminal/common/terminal.ts @@ -12,6 +12,7 @@ import { URI } from 'vs/base/common/uri'; import { OperatingSystem } from 'vs/base/common/platform'; import { IOpenFileRequest } from 'vs/platform/windows/common/windows'; import { IEnvironmentVariableInfo } from 'vs/workbench/contrib/terminal/common/environmentVariable'; +import { IExtensionPointDescriptor } from 'vs/workbench/services/extensions/common/extensionsRegistry'; export const TERMINAL_VIEW_ID = 'workbench.panel.terminal'; @@ -625,3 +626,41 @@ export const DEFAULT_COMMANDS_TO_SKIP_SHELL: string[] = [ 'workbench.action.quickOpenView', 'workbench.action.toggleMaximizedPanel' ]; + +export interface ITerminalContributions { + types?: ITerminalTypeContribution[]; +} + +export interface ITerminalTypeContribution { + title: string; + command: string; +} + +export const terminalContributionsDescriptor: IExtensionPointDescriptor = { + extensionPoint: 'terminal', + defaultExtensionKind: 'workspace', + jsonSchema: { + description: nls.localize('vscode.extension.contributes.terminal', 'Contributes terminal functionality.'), + type: 'object', + properties: { + types: { + type: 'array', + description: nls.localize('vscode.extension.contributes.terminal.types', "Defines additional terminal types that the user can create."), + items: { + type: 'object', + required: ['command', 'title'], + properties: { + command: { + description: nls.localize('vscode.extension.contributes.terminal.types.command', "Command to execute when the user creates this type of terminal."), + type: 'string', + }, + title: { + description: nls.localize('vscode.extension.contributes.terminal.types.title', "Title for this type of terminal."), + type: 'string', + }, + }, + }, + }, + }, + }, +}; diff --git a/src/vs/workbench/contrib/terminal/common/terminalConfiguration.ts b/src/vs/workbench/contrib/terminal/common/terminalConfiguration.ts index 18aada72ff..91c3688281 100644 --- a/src/vs/workbench/contrib/terminal/common/terminalConfiguration.ts +++ b/src/vs/workbench/contrib/terminal/common/terminalConfiguration.ts @@ -218,7 +218,7 @@ export const terminalConfiguration: IConfigurationNode = { default: false }, 'terminal.integrated.commandsToSkipShell': { - markdownDescription: localize('terminal.integrated.commandsToSkipShell', "A set of command IDs whose keybindings will not be sent to the shell and instead always be handled by Code. This allows the use of keybindings that would normally be consumed by the shell to act the same as when the terminal is not focused, for example ctrl+p to launch Quick Open. Use the command prefixed with `-` to remove default commands from the list.\nDefault Skipped Commands:\n\n{0}", DEFAULT_COMMANDS_TO_SKIP_SHELL.sort().map(command => `- ${command}`).join('\n')), + markdownDescription: localize('terminal.integrated.commandsToSkipShell', "A set of command IDs whose keybindings will not be sent to the shell and instead always be handled by VS Code. This allows the use of keybindings that would normally be consumed by the shell to act the same as when the terminal is not focused, for example ctrl+p to launch Quick Open. Use the command prefixed with `-` to remove default commands from the list.\nDefault Skipped Commands:\n\n{0}", DEFAULT_COMMANDS_TO_SKIP_SHELL.sort().map(command => `- ${command}`).join('\n')), type: 'array', items: { type: 'string' diff --git a/src/vs/workbench/contrib/terminal/common/terminalExtensionPoints.contribution.ts b/src/vs/workbench/contrib/terminal/common/terminalExtensionPoints.contribution.ts new file mode 100644 index 0000000000..00fec942dc --- /dev/null +++ b/src/vs/workbench/contrib/terminal/common/terminalExtensionPoints.contribution.ts @@ -0,0 +1,9 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { ITerminalContributionService, TerminalContributionService } from './terminalExtensionPoints'; +import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; + +registerSingleton(ITerminalContributionService, TerminalContributionService, true); diff --git a/src/vs/workbench/contrib/terminal/common/terminalExtensionPoints.ts b/src/vs/workbench/contrib/terminal/common/terminalExtensionPoints.ts new file mode 100644 index 0000000000..02ce379300 --- /dev/null +++ b/src/vs/workbench/contrib/terminal/common/terminalExtensionPoints.ts @@ -0,0 +1,36 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as extensionsRegistry from 'vs/workbench/services/extensions/common/extensionsRegistry'; +import { ITerminalTypeContribution, ITerminalContributions, terminalContributionsDescriptor } from 'vs/workbench/contrib/terminal/common/terminal'; +import { flatten } from 'vs/base/common/arrays'; +import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; + +// terminal extension point +export const terminalsExtPoint = extensionsRegistry.ExtensionsRegistry.registerExtensionPoint(terminalContributionsDescriptor); + +export interface ITerminalContributionService { + readonly _serviceBrand: undefined; + + readonly terminalTypes: ReadonlyArray; +} + +export const ITerminalContributionService = createDecorator('terminalContributionsService'); + +export class TerminalContributionService implements ITerminalContributionService { + public readonly _serviceBrand = undefined; + + private _terminalTypes: ReadonlyArray = []; + + public get terminalTypes() { + return this._terminalTypes; + } + + constructor() { + terminalsExtPoint.setHandler(contributions => { + this._terminalTypes = flatten(contributions.filter(c => c.description.enableProposedApi).map(c => c.value?.types ?? [])); + }); + } +} diff --git a/src/vs/workbench/contrib/terminal/node/terminalEnvironment.ts b/src/vs/workbench/contrib/terminal/node/terminalEnvironment.ts index 04482009da..a20d3384a5 100644 --- a/src/vs/workbench/contrib/terminal/node/terminalEnvironment.ts +++ b/src/vs/workbench/contrib/terminal/node/terminalEnvironment.ts @@ -48,7 +48,7 @@ export async function getMainProcessParentEnv(): Promise { // For macOS we want the "root" environment as shells by default run as login shells. It // doesn't appear to be possible to get the "root" environment as `ps eww -o command` for // PID 1 (the parent of the main process when launched from the dock/finder) returns no - // environment, because of this we will fill in the root environment using a whitelist of + // environment, because of this we will fill in the root environment using a allowlist of // environment variables that we have. if (isMacintosh) { mainProcessParentEnv = {}; @@ -129,4 +129,4 @@ export async function findExecutable(command: string, cwd?: string, paths?: stri } const fullPath = path.join(cwd, command); return await exists(fullPath) ? fullPath : undefined; -} \ No newline at end of file +} diff --git a/src/vs/workbench/contrib/terminal/node/terminalProcess.ts b/src/vs/workbench/contrib/terminal/node/terminalProcess.ts index 7ab10d76b7..7556e4a6ff 100644 --- a/src/vs/workbench/contrib/terminal/node/terminalProcess.ts +++ b/src/vs/workbench/contrib/terminal/node/terminalProcess.ts @@ -3,7 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import * as os from 'os'; import * as path from 'vs/base/common/path'; import * as platform from 'vs/base/common/platform'; import * as pty from 'node-pty'; @@ -53,7 +52,7 @@ export class TerminalProcess extends Disposable implements ITerminalChildProcess ) { super(); let name: string; - if (os.platform() === 'win32') { + if (platform.isWindows) { name = path.basename(this._shellLaunchConfig.executable || ''); } else { // Using 'xterm-256color' here helps ensure that the majority of Linux distributions will use a diff --git a/src/vs/workbench/contrib/themes/browser/themes.contribution.ts b/src/vs/workbench/contrib/themes/browser/themes.contribution.ts index 572ec3de29..e20a6a4dd2 100644 --- a/src/vs/workbench/contrib/themes/browser/themes.contribution.ts +++ b/src/vs/workbench/contrib/themes/browser/themes.contribution.ts @@ -344,7 +344,7 @@ const productIconThemeDescriptor = SyncActionDescriptor.from(SelectProductIconTh Registry.as(Extensions.WorkbenchActions).registerWorkbenchAction(productIconThemeDescriptor, 'Preferences: Product Icon Theme', category); -const developerCategory = localize('developer', "Developer"); +const developerCategory = localize({ key: 'developer', comment: ['A developer on Code itself or someone diagnosing issues in Code'] }, "Developer"); const generateColorThemeDescriptor = SyncActionDescriptor.from(GenerateColorThemeAction); Registry.as(Extensions.WorkbenchActions).registerWorkbenchAction(generateColorThemeDescriptor, 'Developer: Generate Color Theme From Current Settings', developerCategory); diff --git a/src/vs/workbench/contrib/timeline/browser/timelinePane.ts b/src/vs/workbench/contrib/timeline/browser/timelinePane.ts index e594472cd6..ad7dd69002 100644 --- a/src/vs/workbench/contrib/timeline/browser/timelinePane.ts +++ b/src/vs/workbench/contrib/timeline/browser/timelinePane.ts @@ -347,7 +347,7 @@ export class TimelinePane extends ViewPane { const editor = this.editorService.activeEditor; if (editor) { - uri = toResource(editor, { supportSideBySide: SideBySideEditor.MASTER }); + uri = toResource(editor, { supportSideBySide: SideBySideEditor.PRIMARY }); } if ((uri?.toString(true) === this.uri?.toString(true) && uri !== undefined) || diff --git a/src/vs/workbench/contrib/update/browser/releaseNotesEditor.ts b/src/vs/workbench/contrib/update/browser/releaseNotesEditor.ts index 332767dbc4..73ebf9cf68 100644 --- a/src/vs/workbench/contrib/update/browser/releaseNotesEditor.ts +++ b/src/vs/workbench/contrib/update/browser/releaseNotesEditor.ts @@ -95,10 +95,10 @@ export class ReleaseNotesManager { return true; } - private loadReleaseNotes(version: string): Promise { + private async loadReleaseNotes(version: string): Promise { const match = /^(\d+\.\d+)\./.exec(version); if (!match) { - return Promise.reject(new Error('not found')); + throw new Error('not found'); } const versionLabel = match[1].replace(/\./g, '_'); @@ -138,17 +138,30 @@ export class ReleaseNotesManager { .replace(/kbstyle\(([^\)]+)\)/gi, kbstyle); }; - if (!this._releaseNotesCache.has(version)) { - this._releaseNotesCache.set(version, this._requestService.request({ url }, CancellationToken.None) - .then(asText) - .then(text => { - if (!text || !/^#\s/.test(text)) { // release notes always starts with `#` followed by whitespace - return Promise.reject(new Error('Invalid release notes')); - } + const fetchReleaseNotes = async () => { + let text; + try { + text = await asText(await this._requestService.request({ url }, CancellationToken.None)); + } catch { + throw new Error('Failed to fetch release notes'); + } - return Promise.resolve(text); - }) - .then(text => patchKeybindings(text))); + if (!text || !/^#\s/.test(text)) { // release notes always starts with `#` followed by whitespace + throw new Error('Invalid release notes'); + } + + return patchKeybindings(text); + }; + + if (!this._releaseNotesCache.has(version)) { + this._releaseNotesCache.set(version, (async () => { + try { + return await fetchReleaseNotes(); + } catch (err) { + this._releaseNotesCache.delete(version); + throw err; + } + })()); } return this._releaseNotesCache.get(version)!; diff --git a/src/vs/workbench/contrib/update/browser/update.ts b/src/vs/workbench/contrib/update/browser/update.ts index d482356943..455bdbdd1f 100644 --- a/src/vs/workbench/contrib/update/browser/update.ts +++ b/src/vs/workbench/contrib/update/browser/update.ts @@ -51,12 +51,12 @@ export class OpenLatestReleaseNotesInBrowserAction extends Action { super('update.openLatestReleaseNotes', nls.localize('releaseNotes', "Release Notes"), undefined, true); } - run(): Promise { + async run(): Promise { if (this.productService.releaseNotesUrl) { const uri = URI.parse(this.productService.releaseNotesUrl); - return this.openerService.open(uri); + await this.openerService.open(uri); } - return Promise.resolve(false); + throw new Error('This version of Visual Studio Code does not have release notes online'); } } @@ -71,18 +71,22 @@ export abstract class AbstractShowReleaseNotesAction extends Action { super(id, label, undefined, true); } - run(): Promise { + async run(): Promise { if (!this.enabled) { - return Promise.resolve(false); + return; } - this.enabled = false; - // return showReleaseNotes(this.instantiationService, this.version) // {{SQL CARBON EDIT}} just open release notes in browser - // .then(undefined, () => { - const action = this.instantiationService.createInstance(OpenLatestReleaseNotesInBrowserAction); - return action.run().then(() => false); - // }); + /*try { // {{SQL CARBON EDIT}} just open release notes in browser + await showReleaseNotes(this.instantiationService, this.version); + } catch (err) { + */const action = this.instantiationService.createInstance(OpenLatestReleaseNotesInBrowserAction); + try { + await action.run(); + } catch (err2) { + throw new Error(`${err2.message}`); + } + // } } } @@ -497,4 +501,3 @@ export class CheckForVSCodeUpdateAction extends Action { return this.updateService.checkForUpdates(this.workbenchEnvironmentService.configuration.sessionId); } } - diff --git a/src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts b/src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts index 2015d0dc1a..c65e9a930f 100644 --- a/src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts +++ b/src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts @@ -53,7 +53,7 @@ import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors'; import { Codicon } from 'vs/base/common/codicons'; import { ViewContainerLocation, IViewContainersRegistry, Extensions, ViewContainer } from 'vs/workbench/common/views'; import { UserDataSyncViewPaneContainer, UserDataSyncDataViews } from 'vs/workbench/contrib/userDataSync/browser/userDataSyncViews'; -import { IUserDataSyncWorkbenchService, CONTEXT_ENABLE_VIEWS, getSyncAreaLabel, AccountStatus, CONTEXT_SYNC_STATE, CONTEXT_SYNC_ENABLEMENT, CONTEXT_ACCOUNT_STATE, CONFIGURE_SYNC_COMMAND_ID, ENABLE_SYNC_VIEWS_COMMAND_ID, SHOW_SYNC_LOG_COMMAND_ID } from 'vs/workbench/services/userDataSync/common/userDataSync'; +import { IUserDataSyncWorkbenchService, CONTEXT_ENABLE_VIEWS, getSyncAreaLabel, AccountStatus, CONTEXT_SYNC_STATE, CONTEXT_SYNC_ENABLEMENT, CONTEXT_ACCOUNT_STATE, CONFIGURE_SYNC_COMMAND_ID, ENABLE_SYNC_VIEWS_COMMAND_ID, SHOW_SYNC_LOG_COMMAND_ID, SHOW_SYNCED_DATA_COMMAND_ID } from 'vs/workbench/services/userDataSync/common/userDataSync'; const CONTEXT_CONFLICTS_SOURCES = new RawContextKey('conflictsSources', ''); @@ -143,6 +143,8 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo this._register(userDataSyncService.onDidChangeConflicts(() => this.onDidChangeConflicts(this.userDataSyncService.conflicts))); this._register(userDataSyncService.onSyncErrors(errors => this.onSynchronizerErrors(errors))); this._register(userDataAutoSyncService.onError(error => this.onAutoSyncError(error))); + this._register(userDataAutoSyncService.onTurnOnSync(() => this.turningOnSync = true)); + this._register(userDataAutoSyncService.onDidTurnOnSync(() => this.turningOnSync = false)); this.registerActions(); this.registerViews(); @@ -176,7 +178,7 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo // close stale conflicts editor previews if (conflictsEditorInputs.length) { conflictsEditorInputs.forEach(input => { - if (!conflicts.some(({ local }) => isEqual(local, input.master.resource))) { + if (!conflicts.some(({ local }) => isEqual(local, input.primary.resource))) { input.dispose(); } }); @@ -338,7 +340,7 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo return; } const resource = source === SyncResource.Settings ? this.workbenchEnvironmentService.settingsResource : this.workbenchEnvironmentService.keybindingsResource; - if (isEqual(resource, toResource(this.editorService.activeEditor, { supportSideBySide: SideBySideEditor.MASTER }))) { + if (isEqual(resource, toResource(this.editorService.activeEditor, { supportSideBySide: SideBySideEditor.PRIMARY }))) { // Do not show notification if the file in error is active return; } @@ -402,7 +404,6 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo } private async turnOn(): Promise { - this.turningOnSync = true; try { if (!this.storageService.getBoolean('sync.donotAskPreviewConfirmation', StorageScope.GLOBAL, false)) { if (!await this.askForConfirmation()) { @@ -438,8 +439,6 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo } } this.notificationService.error(localize('turn on failed', "Error while starting Sync: {0}", toErrorMessage(e))); - } finally { - this.turningOnSync = false; } } @@ -570,9 +569,9 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo message: localize('turn off sync confirmation', "Do you want to turn off sync?"), detail: localize('turn off sync detail', "Your settings, keybindings, extensions and UI State will no longer be synced."), primaryButton: localize('turn off', "Turn Off"), - checkbox: { + checkbox: this.userDataSyncWorkbenchService.accountStatus === AccountStatus.Available ? { label: localize('turn off sync everywhere', "Turn off sync on all your devices and clear the data from the cloud.") - } + } : undefined }); if (result.confirmed) { return this.userDataSyncWorkbenchService.turnoff(!!result.checkboxChecked); @@ -591,14 +590,14 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo private getConflictsEditorInputs(syncResource: SyncResource): DiffEditorInput[] { return this.editorService.editors.filter(input => { - const resource = input instanceof DiffEditorInput ? input.master.resource : input.resource; + const resource = input instanceof DiffEditorInput ? input.primary.resource : input.resource; return resource && getSyncResourceFromLocalPreview(resource!, this.workbenchEnvironmentService) === syncResource; }) as DiffEditorInput[]; } private getAllConflictsEditorInputs(): IEditorInput[] { return this.editorService.editors.filter(input => { - const resource = input instanceof DiffEditorInput ? input.master.resource : input.resource; + const resource = input instanceof DiffEditorInput ? input.primary.resource : input.resource; return resource && getSyncResourceFromLocalPreview(resource!, this.workbenchEnvironmentService) !== undefined; }); } @@ -887,6 +886,8 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo items.push({ type: 'separator' }); } items.push({ id: configureSyncCommand.id, label: configureSyncCommand.title }); + items.push({ id: showSyncSettingsCommand.id, label: showSyncSettingsCommand.title }); + items.push({ id: SHOW_SYNCED_DATA_COMMAND_ID, label: localize('show synced data', "Preferences Sync: Show Synced Data") }); items.push({ type: 'separator' }); items.push({ id: syncNowCommand.id, label: syncNowCommand.title, description: syncNowCommand.description(that.userDataSyncService) }); if (that.userDataAutoSyncService.canToggleEnablement()) { diff --git a/src/vs/workbench/contrib/userDataSync/browser/userDataSyncViews.ts b/src/vs/workbench/contrib/userDataSync/browser/userDataSyncViews.ts index e4917aa5c9..d54c53ca05 100644 --- a/src/vs/workbench/contrib/userDataSync/browser/userDataSyncViews.ts +++ b/src/vs/workbench/contrib/userDataSync/browser/userDataSyncViews.ts @@ -7,16 +7,15 @@ import { Registry } from 'vs/platform/registry/common/platform'; import { IViewsRegistry, Extensions, ITreeViewDescriptor, ITreeViewDataProvider, ITreeItem, TreeItemCollapsibleState, IViewsService, TreeViewItemHandleArg, ViewContainer, IViewDescriptorService } from 'vs/workbench/common/views'; import { localize } from 'vs/nls'; import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors'; -import { TreeViewPane, TreeView } from 'vs/workbench/browser/parts/views/treeView'; +import { TreeViewPane } from 'vs/workbench/browser/parts/views/treeView'; import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; -import { ALL_SYNC_RESOURCES, SyncResource, IUserDataSyncService, ISyncResourceHandle, SyncStatus, IUserDataSyncResourceEnablementService, IUserDataAutoSyncService } from 'vs/platform/userDataSync/common/userDataSync'; +import { ALL_SYNC_RESOURCES, SyncResource, IUserDataSyncService, ISyncResourceHandle as IResourceHandle, SyncStatus, IUserDataSyncResourceEnablementService, IUserDataAutoSyncService } from 'vs/platform/userDataSync/common/userDataSync'; import { registerAction2, Action2, MenuId } from 'vs/platform/actions/common/actions'; -import { ContextKeyExpr, ContextKeyEqualsExpr, IContextKeyService, RawContextKey } from 'vs/platform/contextkey/common/contextkey'; +import { ContextKeyExpr, ContextKeyEqualsExpr } from 'vs/platform/contextkey/common/contextkey'; import { URI } from 'vs/base/common/uri'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { FolderThemeIcon, IThemeService } from 'vs/platform/theme/common/themeService'; import { fromNow } from 'vs/base/common/date'; -import { pad } from 'vs/base/common/strings'; import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; import { Event } from 'vs/base/common/event'; import { Disposable, DisposableStore } from 'vs/base/common/lifecycle'; @@ -35,12 +34,15 @@ import { IUserDataSyncWorkbenchService, CONTEXT_SYNC_STATE, getSyncAreaLabel, CO import { IUserDataSyncMachinesService, IUserDataSyncMachine } from 'vs/platform/userDataSync/common/userDataSyncMachines'; import { IQuickInputService } from 'vs/platform/quickinput/common/quickInput'; import { INotificationService } from 'vs/platform/notification/common/notification'; -import { generateUuid } from 'vs/base/common/uuid'; +import { TreeView } from 'vs/workbench/contrib/views/browser/treeView'; +import { flatten } from 'vs/base/common/arrays'; export class UserDataSyncViewPaneContainer extends ViewPaneContainer { constructor( containerId: string, + @IDialogService private readonly dialogService: IDialogService, + @IUserDataSyncWorkbenchService private readonly userDataSyncWorkbenchService: IUserDataSyncWorkbenchService, @ICommandService private readonly commandService: ICommandService, @IWorkbenchLayoutService layoutService: IWorkbenchLayoutService, @ITelemetryService telemetryService: ITelemetryService, @@ -63,6 +65,24 @@ export class UserDataSyncViewPaneContainer extends ViewPaneContainer { ]; } + getSecondaryActions(): IAction[] { + return [ + new Action('workbench.actions.syncData.reset', localize('workbench.actions.syncData.reset', "Reset Synced Data"), undefined, true, () => this.reset()), + ]; + } + + private async reset(): Promise { + const result = await this.dialogService.confirm({ + message: localize('reset', "This will clear your synced data from the cloud and stop sync on all your devices."), + title: localize('reset title', "Reset Synced Data"), + type: 'info', + primaryButton: localize('reset button', "Reset"), + }); + if (result.confirmed) { + await this.userDataSyncWorkbenchService.turnoff(true); + } + } + } export class UserDataSyncDataViews extends Disposable { @@ -72,33 +92,28 @@ export class UserDataSyncDataViews extends Disposable { @IInstantiationService private readonly instantiationService: IInstantiationService, @IUserDataAutoSyncService private readonly userDataAutoSyncService: IUserDataAutoSyncService, @IUserDataSyncResourceEnablementService private readonly userDataSyncResourceEnablementService: IUserDataSyncResourceEnablementService, - @IContextKeyService private readonly contextKeyService: IContextKeyService, ) { super(); this.registerViews(container); } private registerViews(container: ViewContainer): void { - const remoteView = this.registerDataView(container, true, true); - this.registerRemoteViewActions(remoteView); - - this.registerDataView(container, false, false); + this.registerSyncedDataView(container); this.registerMachinesView(container); + + this.registerActivityView(container, true); + this.registerActivityView(container, false); } - private registerDataView(container: ViewContainer, remote: boolean, showByDefault: boolean): TreeView { - const id = `workbench.views.sync.${remote ? 'remote' : 'local'}DataView`; - const showByDefaultContext = new RawContextKey(id, showByDefault); - const viewEnablementContext = showByDefaultContext.bindTo(this.contextKeyService); - const name = remote ? localize('remote title', "Synced Data") : localize('local title', "Local Backup"); + private registerSyncedDataView(container: ViewContainer): void { + const id = `workbench.views.syncedDataView`; + const name = localize('remote title', "Synced Data"); const treeView = this.instantiationService.createInstance(TreeView, id, name); - treeView.showCollapseAllAction = true; treeView.showRefreshAction = true; const disposable = treeView.onDidChangeVisibility(visible => { if (visible && !treeView.dataProvider) { disposable.dispose(); - treeView.dataProvider = remote ? this.instantiationService.createInstance(RemoteUserDataSyncHistoryViewDataProvider) - : this.instantiationService.createInstance(LocalUserDataSyncHistoryViewDataProvider); + treeView.dataProvider = this.instantiationService.createInstance(SyncedDataViewDataProvider); } }); this._register(Event.any(this.userDataSyncResourceEnablementService.onDidChangeResourceEnablement, this.userDataAutoSyncService.onDidChangeEnablement)(() => treeView.refresh())); @@ -107,9 +122,9 @@ export class UserDataSyncDataViews extends Disposable { id, name, ctorDescriptor: new SyncDescriptor(TreeViewPane), - when: ContextKeyExpr.and(CONTEXT_SYNC_STATE.notEqualsTo(SyncStatus.Uninitialized), CONTEXT_ACCOUNT_STATE.isEqualTo(AccountStatus.Available), CONTEXT_ENABLE_VIEWS, showByDefaultContext), + when: ContextKeyExpr.and(CONTEXT_SYNC_STATE.notEqualsTo(SyncStatus.Uninitialized), CONTEXT_ACCOUNT_STATE.isEqualTo(AccountStatus.Available), CONTEXT_ENABLE_VIEWS), canToggleVisibility: true, - canMoveView: true, + canMoveView: false, treeView, collapsed: false, order: 100, @@ -118,10 +133,8 @@ export class UserDataSyncDataViews extends Disposable { registerAction2(class extends Action2 { constructor() { super({ - id: remote ? SHOW_SYNCED_DATA_COMMAND_ID : 'workbench.userDataSync.actions.showLocalBackupData', - title: remote ? - { value: localize('workbench.action.showSyncRemoteBackup', "Show Synced Data"), original: `Show Synced Data` } - : { value: localize('workbench.action.showSyncLocalBackup', "Show Local Backup"), original: `Show Local Backup` }, + id: SHOW_SYNCED_DATA_COMMAND_ID, + title: { value: localize('workbench.action.showSyncRemoteBackup', "Show Synced Data"), original: `Show Synced Data` }, category: { value: localize('sync preferences', "Preferences Sync"), original: `Preferences Sync` }, menu: { id: MenuId.CommandPalette, @@ -135,7 +148,6 @@ export class UserDataSyncDataViews extends Disposable { const commandService = accessor.get(ICommandService); await commandService.executeCommand(ENABLE_SYNC_VIEWS_COMMAND_ID); - viewEnablementContext.set(true); const viewContainer = viewDescriptorService.getViewContainerByViewId(id); if (viewContainer) { @@ -155,7 +167,6 @@ export class UserDataSyncDataViews extends Disposable { }); this.registerDataViewActions(id); - return treeView; } private registerMachinesView(container: ViewContainer): void { @@ -178,7 +189,7 @@ export class UserDataSyncDataViews extends Disposable { ctorDescriptor: new SyncDescriptor(TreeViewPane), when: ContextKeyExpr.and(CONTEXT_SYNC_STATE.notEqualsTo(SyncStatus.Uninitialized), CONTEXT_ACCOUNT_STATE.isEqualTo(AccountStatus.Available), CONTEXT_ENABLE_VIEWS), canToggleVisibility: true, - canMoveView: true, + canMoveView: false, treeView, collapsed: false, order: 200, @@ -225,6 +236,37 @@ export class UserDataSyncDataViews extends Disposable { } + private registerActivityView(container: ViewContainer, remote: boolean): void { + const id = `workbench.views.sync.${remote ? 'remote' : 'local'}Activity`; + const name = remote ? localize('remote sync activity title', "Sync Activity (Remote)") : localize('local sync activity title', "Sync Activity (Local)"); + const treeView = this.instantiationService.createInstance(TreeView, id, name); + treeView.showCollapseAllAction = true; + treeView.showRefreshAction = true; + const disposable = treeView.onDidChangeVisibility(visible => { + if (visible && !treeView.dataProvider) { + disposable.dispose(); + treeView.dataProvider = remote ? this.instantiationService.createInstance(RemoteUserDataSyncActivityViewDataProvider) + : this.instantiationService.createInstance(LocalUserDataSyncActivityViewDataProvider); + } + }); + this._register(Event.any(this.userDataSyncResourceEnablementService.onDidChangeResourceEnablement, this.userDataAutoSyncService.onDidChangeEnablement)(() => treeView.refresh())); + const viewsRegistry = Registry.as(Extensions.ViewsRegistry); + viewsRegistry.registerViews([{ + id, + name, + ctorDescriptor: new SyncDescriptor(TreeViewPane), + when: ContextKeyExpr.and(CONTEXT_SYNC_STATE.notEqualsTo(SyncStatus.Uninitialized), CONTEXT_ACCOUNT_STATE.isEqualTo(AccountStatus.Available), CONTEXT_ENABLE_VIEWS), + canToggleVisibility: true, + canMoveView: false, + treeView, + collapsed: false, + order: 300, + hideByDefault: true, + }], container); + + this.registerDataViewActions(id); + } + private registerDataViewActions(viewId: string) { registerAction2(class extends Action2 { constructor() { @@ -249,7 +291,7 @@ export class UserDataSyncDataViews extends Disposable { super({ id: `workbench.actions.sync.replaceCurrent`, title: localize('workbench.actions.sync.replaceCurrent', "Restore"), - icon: { id: 'codicon/cloud-download' }, + icon: { id: 'codicon/discard' }, menu: { id: MenuId.ViewItemContext, when: ContextKeyExpr.and(ContextKeyEqualsExpr.create('view', viewId), ContextKeyExpr.regex('viewItem', /sync-resource-.*/i)), @@ -262,7 +304,7 @@ export class UserDataSyncDataViews extends Disposable { const userDataSyncService = accessor.get(IUserDataSyncService); const { resource, syncResource } = <{ resource: string, syncResource: SyncResource }>JSON.parse(handle.$treeItemHandle); const result = await dialogService.confirm({ - message: localize('confirm replace', "Would you like to replace your current {0} with selected?", getSyncAreaLabel(syncResource)), + message: localize({ key: 'confirm replace', comment: ['A confirmation message to replace current user data (settings, extensions, keybindings, snippets) with selected version'] }, "Would you like to replace your current {0} with selected?", getSyncAreaLabel(syncResource)), type: 'info', title: localize('preferences sync', "Preferences Sync") }); @@ -275,8 +317,8 @@ export class UserDataSyncDataViews extends Disposable { registerAction2(class extends Action2 { constructor() { super({ - id: `workbench.actions.sync.commpareWithLocal`, - title: localize('workbench.actions.sync.commpareWithLocal', "Open Changes"), + id: `workbench.actions.sync.compareWithLocal`, + title: localize({ key: 'workbench.actions.sync.compareWithLocal', comment: ['This is an action title to show the changes between local and remote version of resources'] }, "Open Changes"), }); } async run(accessor: ServicesAccessor, handle: TreeViewItemHandleArg): Promise { @@ -298,51 +340,23 @@ export class UserDataSyncDataViews extends Disposable { }); } - private registerRemoteViewActions(view: TreeView) { - this.registerResetAction(view); - } - - private registerResetAction(view: TreeView) { - registerAction2(class extends Action2 { - constructor() { - super({ - id: `workbench.actions.syncData.reset`, - title: localize('workbench.actions.syncData.reset', "Reset Synced Data"), - menu: { - id: MenuId.ViewTitle, - when: ContextKeyExpr.and(ContextKeyEqualsExpr.create('view', view.id)), - }, - }); - } - async run(accessor: ServicesAccessor): Promise { - const dialogService = accessor.get(IDialogService); - const userDataSyncWorkbenchService = accessor.get(IUserDataSyncWorkbenchService); - const result = await dialogService.confirm({ - message: localize('reset', "This will clear your synced data from the cloud and stop sync on all your devices."), - title: localize('reset title', "Reset Synced Data"), - type: 'info', - primaryButton: localize('reset button', "Reset"), - }); - if (result.confirmed) { - await userDataSyncWorkbenchService.turnoff(true); - await view.refresh(); - } - } - }); - } } -interface SyncResourceTreeItem extends ITreeItem { - resource: SyncResource; - resourceHandle: ISyncResourceHandle; +interface ISyncResourceHandle extends IResourceHandle { + syncResource: SyncResource } -abstract class UserDataSyncHistoryViewDataProvider implements ITreeViewDataProvider { +interface SyncResourceHandleTreeItem extends ITreeItem { + syncResourceHandle: ISyncResourceHandle; +} + +abstract class UserDataSyncActivityViewDataProvider implements ITreeViewDataProvider { + + private syncResourceHandlesPromise: Promise | undefined; constructor( @IUserDataSyncService protected readonly userDataSyncService: IUserDataSyncService, @IUserDataAutoSyncService protected readonly userDataAutoSyncService: IUserDataAutoSyncService, - @IUserDataSyncResourceEnablementService private readonly userDataSyncResourceEnablementService: IUserDataSyncResourceEnablementService, @INotificationService private readonly notificationService: INotificationService, ) { } @@ -351,12 +365,8 @@ abstract class UserDataSyncHistoryViewDataProvider implements ITreeViewDataProvi if (!element) { return await this.getRoots(); } - const syncResource = ALL_SYNC_RESOURCES.filter(key => key === element.handle)[0] as SyncResource; - if (syncResource) { - return await this.getChildrenForSyncResource(syncResource); - } - if ((element).resourceHandle) { - return await this.getChildrenForSyncResourceTreeItem(element); + if ((element).syncResourceHandle) { + return await this.getChildrenForSyncResourceTreeItem(element); } return []; } catch (error) { @@ -365,44 +375,27 @@ abstract class UserDataSyncHistoryViewDataProvider implements ITreeViewDataProvi } } - protected async getRoots(): Promise { - return ALL_SYNC_RESOURCES.map(resourceKey => ({ - handle: resourceKey, - collapsibleState: TreeItemCollapsibleState.Collapsed, - label: { label: getSyncAreaLabel(resourceKey) }, - description: !this.userDataAutoSyncService.isEnabled() || this.userDataSyncResourceEnablementService.isResourceEnabled(resourceKey) ? undefined : localize('not syncing', "Not syncing"), - themeIcon: FolderThemeIcon, - contextValue: resourceKey - })); + private async getRoots(): Promise { + this.syncResourceHandlesPromise = undefined; + + const syncResourceHandles = await this.getSyncResourceHandles(); + + return syncResourceHandles.map(syncResourceHandle => { + const handle = JSON.stringify({ resource: syncResourceHandle.uri.toString(), syncResource: syncResourceHandle.syncResource }); + return { + handle, + collapsibleState: TreeItemCollapsibleState.Collapsed, + label: { label: getSyncAreaLabel(syncResourceHandle.syncResource) }, + description: fromNow(syncResourceHandle.created, true), + themeIcon: FolderThemeIcon, + syncResourceHandle, + contextValue: `sync-resource-${syncResourceHandle.syncResource}` + }; + }); } - protected async getChildrenForSyncResource(syncResource: SyncResource): Promise { - const refHandles = await this.getSyncResourceHandles(syncResource); - if (refHandles.length) { - return refHandles.map(({ uri, created }) => { - const handle = JSON.stringify({ resource: uri.toString(), syncResource }); - return { - handle, - collapsibleState: TreeItemCollapsibleState.Collapsed, - label: { label: label(new Date(created)) }, - description: fromNow(created, true), - resourceUri: uri, - resource: syncResource, - resourceHandle: { uri, created }, - contextValue: `sync-resource-${syncResource}` - }; - }); - } else { - return [{ - handle: generateUuid(), - collapsibleState: TreeItemCollapsibleState.None, - label: { label: localize('no data', "No Data") }, - }]; - } - } - - protected async getChildrenForSyncResourceTreeItem(element: SyncResourceTreeItem): Promise { - const associatedResources = await this.userDataSyncService.getAssociatedResources((element).resource, (element).resourceHandle); + protected async getChildrenForSyncResourceTreeItem(element: SyncResourceHandleTreeItem): Promise { + const associatedResources = await this.userDataSyncService.getAssociatedResources((element).syncResourceHandle.syncResource, (element).syncResourceHandle); return associatedResources.map(({ resource, comparableResource }) => { const handle = JSON.stringify({ resource: resource.toString(), comparableResource: comparableResource?.toString() }); return { @@ -410,33 +403,42 @@ abstract class UserDataSyncHistoryViewDataProvider implements ITreeViewDataProvi collapsibleState: TreeItemCollapsibleState.None, resourceUri: resource, command: { id: `workbench.actions.sync.commpareWithLocal`, title: '', arguments: [{ $treeViewId: '', $treeItemHandle: handle }] }, - contextValue: `sync-associatedResource-${(element).resource}` + contextValue: `sync-associatedResource-${(element).syncResourceHandle.syncResource}` }; }); } - protected abstract getSyncResourceHandles(syncResource: SyncResource): Promise; + private getSyncResourceHandles(): Promise { + if (this.syncResourceHandlesPromise === undefined) { + this.syncResourceHandlesPromise = Promise.all(ALL_SYNC_RESOURCES.map(async syncResource => { + const resourceHandles = await this.getResourceHandles(syncResource); + return resourceHandles.map(resourceHandle => ({ ...resourceHandle, syncResource })); + })).then(result => flatten(result).sort((a, b) => b.created - a.created)); + } + return this.syncResourceHandlesPromise; + } + + protected abstract getResourceHandles(syncResource: SyncResource): Promise; } -class LocalUserDataSyncHistoryViewDataProvider extends UserDataSyncHistoryViewDataProvider { +class LocalUserDataSyncActivityViewDataProvider extends UserDataSyncActivityViewDataProvider { - protected getSyncResourceHandles(syncResource: SyncResource): Promise { + protected getResourceHandles(syncResource: SyncResource): Promise { return this.userDataSyncService.getLocalSyncResourceHandles(syncResource); } } -class RemoteUserDataSyncHistoryViewDataProvider extends UserDataSyncHistoryViewDataProvider { +class RemoteUserDataSyncActivityViewDataProvider extends UserDataSyncActivityViewDataProvider { private machinesPromise: Promise | undefined; constructor( @IUserDataSyncService userDataSyncService: IUserDataSyncService, @IUserDataAutoSyncService userDataAutoSyncService: IUserDataAutoSyncService, - @IUserDataSyncResourceEnablementService userDataSyncResourceEnablementService: IUserDataSyncResourceEnablementService, @IUserDataSyncMachinesService private readonly userDataSyncMachinesService: IUserDataSyncMachinesService, @INotificationService notificationService: INotificationService, ) { - super(userDataSyncService, userDataAutoSyncService, userDataSyncResourceEnablementService, notificationService); + super(userDataSyncService, userDataAutoSyncService, notificationService); } async getChildren(element?: ITreeItem): Promise { @@ -453,27 +455,30 @@ class RemoteUserDataSyncHistoryViewDataProvider extends UserDataSyncHistoryViewD return this.machinesPromise; } - protected getSyncResourceHandles(syncResource: SyncResource): Promise { + protected getResourceHandles(syncResource: SyncResource): Promise { return this.userDataSyncService.getRemoteSyncResourceHandles(syncResource); } - protected async getChildrenForSyncResourceTreeItem(element: SyncResourceTreeItem): Promise { + protected async getChildrenForSyncResourceTreeItem(element: SyncResourceHandleTreeItem): Promise { const children = await super.getChildrenForSyncResourceTreeItem(element); - const machineId = await this.userDataSyncService.getMachineId(element.resource, element.resourceHandle); + const machineId = await this.userDataSyncService.getMachineId(element.syncResourceHandle.syncResource, element.syncResourceHandle); if (machineId) { const machines = await this.getMachines(); const machine = machines.find(({ id }) => id === machineId); - children.push({ - handle: machineId, - label: { label: machine?.name || machineId }, - collapsibleState: TreeItemCollapsibleState.None, - themeIcon: Codicon.vm, - }); + children[0].description = machine?.isCurrent ? localize({ key: 'current', comment: ['Represents current machine'] }, "Current") : machine?.name; } return children; } } +class SyncedDataViewDataProvider extends RemoteUserDataSyncActivityViewDataProvider { + + protected async getResourceHandles(syncResource: SyncResource): Promise { + const resourceHandles = await this.userDataSyncService.getRemoteSyncResourceHandles(syncResource); + return resourceHandles.length ? [resourceHandles[0]] : []; + } +} + class UserDataSyncMachinesViewDataProvider implements ITreeViewDataProvider { private machinesPromise: Promise | undefined; @@ -582,10 +587,3 @@ class UserDataSyncMachinesViewDataProvider implements ITreeViewDataProvider { }); } } - -function label(date: Date): string { - return date.toLocaleDateString() + - ' ' + pad(date.getHours(), 2) + - ':' + pad(date.getMinutes(), 2) + - ':' + pad(date.getSeconds(), 2); -} diff --git a/src/vs/workbench/contrib/userDataSync/electron-browser/userDataAutoSyncService.ts b/src/vs/workbench/contrib/userDataSync/electron-browser/userDataAutoSyncService.ts index 3964f65c5e..68a28c0b99 100644 --- a/src/vs/workbench/contrib/userDataSync/electron-browser/userDataAutoSyncService.ts +++ b/src/vs/workbench/contrib/userDataSync/electron-browser/userDataAutoSyncService.ts @@ -18,6 +18,8 @@ export class UserDataAutoSyncService extends UserDataAutoSyncEnablementService i declare readonly _serviceBrand: undefined; private readonly channel: IChannel; + get onTurnOnSync(): Event { return this.channel.listen('onTurnOnSync'); } + get onDidTurnOnSync(): Event { return Event.map(this.channel.listen('onDidTurnOnSync'), e => e ? UserDataSyncError.toUserDataSyncError(e) : undefined); } get onError(): Event { return Event.map(this.channel.listen('onError'), e => UserDataSyncError.toUserDataSyncError(e)); } constructor( diff --git a/src/vs/workbench/contrib/userDataSync/electron-browser/userDataSync.contribution.ts b/src/vs/workbench/contrib/userDataSync/electron-browser/userDataSync.contribution.ts index fe1b9c4a73..3913f96347 100644 --- a/src/vs/workbench/contrib/userDataSync/electron-browser/userDataSync.contribution.ts +++ b/src/vs/workbench/contrib/userDataSync/electron-browser/userDataSync.contribution.ts @@ -50,7 +50,7 @@ class UserDataSyncReportIssueContribution extends Disposable implements IWorkben case UserDataSyncErrorCode.TooManyRequests: this.notificationService.notify({ severity: Severity.Error, - message: localize('too many requests', "Turned off syncing preferences on this device because it is making too many requests. Please report an issue by providing the sync logs."), + message: localize({ key: 'too many requests', comment: ['Preferences Sync is the name of the feature'] }, "Preferences sync is disabled because the current device is making too many requests. Please report an issue by providing the sync logs."), actions: { primary: [ new Action('Show Sync Logs', localize('show sync logs', "Show Log"), undefined, true, () => this.commandService.executeCommand(SHOW_SYNC_LOG_COMMAND_ID)), diff --git a/src/vs/workbench/browser/parts/views/media/views.css b/src/vs/workbench/contrib/views/browser/media/views.css similarity index 98% rename from src/vs/workbench/browser/parts/views/media/views.css rename to src/vs/workbench/contrib/views/browser/media/views.css index c66a764803..6adfc52db4 100644 --- a/src/vs/workbench/browser/parts/views/media/views.css +++ b/src/vs/workbench/contrib/views/browser/media/views.css @@ -7,7 +7,8 @@ .file-icon-themable-tree.align-icons-and-twisties .monaco-tl-twistie:not(.force-twistie):not(.collapsible), .file-icon-themable-tree .align-icon-with-twisty .monaco-tl-twistie:not(.force-twistie):not(.collapsible), -.file-icon-themable-tree.hide-arrows .monaco-tl-twistie:not(.force-twistie) { +.file-icon-themable-tree.hide-arrows .monaco-tl-twistie:not(.force-twistie), +.file-icon-themable-tree .monaco-tl-twistie.force-no-twistie { background-image: none !important; width: 0 !important; padding-right: 0 !important; diff --git a/src/vs/workbench/contrib/views/browser/treeView.ts b/src/vs/workbench/contrib/views/browser/treeView.ts new file mode 100644 index 0000000000..e48b9fc804 --- /dev/null +++ b/src/vs/workbench/contrib/views/browser/treeView.ts @@ -0,0 +1,1012 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import 'vs/css!./media/views'; +import { Event, Emitter } from 'vs/base/common/event'; +import { IDisposable, Disposable, DisposableStore } from 'vs/base/common/lifecycle'; +import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; +import { IAction, ActionRunner } from 'vs/base/common/actions'; +import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; +import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; +import { IMenuService, MenuId, MenuItemAction, registerAction2, Action2 } from 'vs/platform/actions/common/actions'; +import { ContextAwareMenuEntryActionViewItem, createAndFillInContextMenuActions } from 'vs/platform/actions/browser/menuEntryActionViewItem'; +import { IContextKeyService, ContextKeyExpr, ContextKeyEqualsExpr, RawContextKey, IContextKey } from 'vs/platform/contextkey/common/contextkey'; +import { ITreeView, ITreeItem, TreeItemCollapsibleState, ITreeViewDataProvider, TreeViewItemHandleArg, ITreeItemLabel, IViewDescriptorService, ViewContainer, ViewContainerLocation, ResolvableTreeItem } from 'vs/workbench/common/views'; +import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; +import { INotificationService } from 'vs/platform/notification/common/notification'; +import { IProgressService } from 'vs/platform/progress/common/progress'; +import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; +import { ICommandService } from 'vs/platform/commands/common/commands'; +import * as DOM from 'vs/base/browser/dom'; +import { ResourceLabels, IResourceLabel } from 'vs/workbench/browser/labels'; +import { ActionBar, IActionViewItemProvider, ActionViewItem } from 'vs/base/browser/ui/actionbar/actionbar'; +import { URI } from 'vs/base/common/uri'; +import { dirname, basename } from 'vs/base/common/resources'; +import { LIGHT, FileThemeIcon, FolderThemeIcon, registerThemingParticipant, ThemeIcon, IThemeService } from 'vs/platform/theme/common/themeService'; +import { FileKind } from 'vs/platform/files/common/files'; +import { WorkbenchAsyncDataTree } from 'vs/platform/list/browser/listService'; +import { localize } from 'vs/nls'; +import { timeout } from 'vs/base/common/async'; +import { textLinkForeground, textCodeBlockBackground, focusBorder, listFilterMatchHighlight, listFilterMatchHighlightBorder } from 'vs/platform/theme/common/colorRegistry'; +import { isString } from 'vs/base/common/types'; +import { ILabelService } from 'vs/platform/label/common/label'; +import { IListVirtualDelegate, IIdentityProvider } from 'vs/base/browser/ui/list/list'; +import { ITreeRenderer, ITreeNode, IAsyncDataSource, ITreeContextMenuEvent } from 'vs/base/browser/ui/tree/tree'; +import { FuzzyScore, createMatches } from 'vs/base/common/filters'; +import { CollapseAllAction } from 'vs/base/browser/ui/tree/treeDefaults'; +import { isFalsyOrWhitespace } from 'vs/base/common/strings'; +import { SIDE_BAR_BACKGROUND, PANEL_BACKGROUND } from 'vs/workbench/common/theme'; +import { IHoverService } from 'vs/workbench/services/hover/browser/hover'; + +class Root implements ITreeItem { + label = { label: 'root' }; + handle = '0'; + parentHandle: string | undefined = undefined; + collapsibleState = TreeItemCollapsibleState.Expanded; + children: ITreeItem[] | undefined = undefined; +} + +const noDataProviderMessage = localize('no-dataprovider', "There is no data provider registered that can provide view data."); + +class Tree extends WorkbenchAsyncDataTree { } + +export class TreeView extends Disposable implements ITreeView { + + private isVisible: boolean = false; + private _hasIconForParentNode = false; + private _hasIconForLeafNode = false; + + private readonly collapseAllContextKey: RawContextKey; + private readonly collapseAllContext: IContextKey; + private readonly refreshContextKey: RawContextKey; + private readonly refreshContext: IContextKey; + + private focused: boolean = false; + private domNode!: HTMLElement; + private treeContainer!: HTMLElement; + private _messageValue: string | undefined; + private _canSelectMany: boolean = false; + private messageElement!: HTMLDivElement; + private tree: Tree | undefined; + private treeLabels: ResourceLabels | undefined; + + private root: ITreeItem; + private elementsToRefresh: ITreeItem[] = []; + + private readonly _onDidExpandItem: Emitter = this._register(new Emitter()); + readonly onDidExpandItem: Event = this._onDidExpandItem.event; + + private readonly _onDidCollapseItem: Emitter = this._register(new Emitter()); + readonly onDidCollapseItem: Event = this._onDidCollapseItem.event; + + private _onDidChangeSelection: Emitter = this._register(new Emitter()); + readonly onDidChangeSelection: Event = this._onDidChangeSelection.event; + + private readonly _onDidChangeVisibility: Emitter = this._register(new Emitter()); + readonly onDidChangeVisibility: Event = this._onDidChangeVisibility.event; + + private readonly _onDidChangeActions: Emitter = this._register(new Emitter()); + readonly onDidChangeActions: Event = this._onDidChangeActions.event; + + private readonly _onDidChangeWelcomeState: Emitter = this._register(new Emitter()); + readonly onDidChangeWelcomeState: Event = this._onDidChangeWelcomeState.event; + + private readonly _onDidChangeTitle: Emitter = this._register(new Emitter()); + readonly onDidChangeTitle: Event = this._onDidChangeTitle.event; + + private readonly _onDidCompleteRefresh: Emitter = this._register(new Emitter()); + + constructor( + readonly id: string, + private _title: string, + @IThemeService private readonly themeService: IThemeService, + @IInstantiationService private readonly instantiationService: IInstantiationService, + @ICommandService private readonly commandService: ICommandService, + @IConfigurationService private readonly configurationService: IConfigurationService, + @IProgressService protected readonly progressService: IProgressService, + @IContextMenuService private readonly contextMenuService: IContextMenuService, + @IKeybindingService private readonly keybindingService: IKeybindingService, + @INotificationService private readonly notificationService: INotificationService, + @IViewDescriptorService private readonly viewDescriptorService: IViewDescriptorService, + @IContextKeyService contextKeyService: IContextKeyService + ) { + super(); + this.root = new Root(); + this.collapseAllContextKey = new RawContextKey(`treeView.${this.id}.enableCollapseAll`, false); + this.collapseAllContext = this.collapseAllContextKey.bindTo(contextKeyService); + this.refreshContextKey = new RawContextKey(`treeView.${this.id}.enableRefresh`, false); + this.refreshContext = this.refreshContextKey.bindTo(contextKeyService); + + this._register(this.themeService.onDidFileIconThemeChange(() => this.doRefresh([this.root]) /** soft refresh **/)); + this._register(this.themeService.onDidColorThemeChange(() => this.doRefresh([this.root]) /** soft refresh **/)); + this._register(this.configurationService.onDidChangeConfiguration(e => { + if (e.affectsConfiguration('explorer.decorations')) { + this.doRefresh([this.root]); /** soft refresh **/ + } + })); + this._register(this.viewDescriptorService.onDidChangeLocation(({ views, from, to }) => { + if (views.some(v => v.id === this.id)) { + this.tree?.updateOptions({ overrideStyles: { listBackground: this.viewLocation === ViewContainerLocation.Sidebar ? SIDE_BAR_BACKGROUND : PANEL_BACKGROUND } }); + } + })); + this.registerActions(); + + this.create(); + } + + get viewContainer(): ViewContainer { + return this.viewDescriptorService.getViewContainerByViewId(this.id)!; + } + + get viewLocation(): ViewContainerLocation { + return this.viewDescriptorService.getViewLocationById(this.id)!; + } + + private _dataProvider: ITreeViewDataProvider | undefined; + get dataProvider(): ITreeViewDataProvider | undefined { + return this._dataProvider; + } + + set dataProvider(dataProvider: ITreeViewDataProvider | undefined) { + if (this.tree === undefined) { + this.createTree(); + } + + if (dataProvider) { + this._dataProvider = new class implements ITreeViewDataProvider { + private _isEmpty: boolean = true; + private _onDidChangeEmpty: Emitter = new Emitter(); + public onDidChangeEmpty: Event = this._onDidChangeEmpty.event; + + get isTreeEmpty(): boolean { + return this._isEmpty; + } + + async getChildren(node: ITreeItem): Promise { + let children: ITreeItem[]; + if (node && node.children) { + children = node.children; + } else { + children = await (node instanceof Root ? dataProvider.getChildren() : dataProvider.getChildren(node)); + node.children = children; + } + if (node instanceof Root) { + const oldEmpty = this._isEmpty; + this._isEmpty = children.length === 0; + if (oldEmpty !== this._isEmpty) { + this._onDidChangeEmpty.fire(); + } + } + return children; + } + }; + if (this._dataProvider.onDidChangeEmpty) { + this._register(this._dataProvider.onDidChangeEmpty(() => this._onDidChangeWelcomeState.fire())); + } + this.updateMessage(); + this.refresh(); + } else { + this._dataProvider = undefined; + this.updateMessage(); + } + + this._onDidChangeWelcomeState.fire(); + } + + private _message: string | undefined; + get message(): string | undefined { + return this._message; + } + + set message(message: string | undefined) { + this._message = message; + this.updateMessage(); + this._onDidChangeWelcomeState.fire(); + } + + get title(): string { + return this._title; + } + + set title(name: string) { + this._title = name; + this._onDidChangeTitle.fire(this._title); + } + + get canSelectMany(): boolean { + return this._canSelectMany; + } + + set canSelectMany(canSelectMany: boolean) { + this._canSelectMany = canSelectMany; + } + + get hasIconForParentNode(): boolean { + return this._hasIconForParentNode; + } + + get hasIconForLeafNode(): boolean { + return this._hasIconForLeafNode; + } + + get visible(): boolean { + return this.isVisible; + } + + get showCollapseAllAction(): boolean { + return !!this.collapseAllContext.get(); + } + + set showCollapseAllAction(showCollapseAllAction: boolean) { + this.collapseAllContext.set(showCollapseAllAction); + } + + get showRefreshAction(): boolean { + return !!this.refreshContext.get(); + } + + set showRefreshAction(showRefreshAction: boolean) { + this.refreshContext.set(showRefreshAction); + } + + private registerActions() { + const that = this; + this._register(registerAction2(class extends Action2 { + constructor() { + super({ + id: `workbench.actions.treeView.${that.id}.refresh`, + title: localize('refresh', "Refresh"), + menu: { + id: MenuId.ViewTitle, + when: ContextKeyExpr.and(ContextKeyEqualsExpr.create('view', that.id), that.refreshContextKey), + group: 'navigation', + order: Number.MAX_SAFE_INTEGER - 1, + }, + icon: { id: 'codicon/refresh' } + }); + } + async run(): Promise { + return that.refresh(); + } + })); + this._register(registerAction2(class extends Action2 { + constructor() { + super({ + id: `workbench.actions.treeView.${that.id}.collapseAll`, + title: localize('collapseAll', "Collapse All"), + menu: { + id: MenuId.ViewTitle, + when: ContextKeyExpr.and(ContextKeyEqualsExpr.create('view', that.id), that.collapseAllContextKey), + group: 'navigation', + order: Number.MAX_SAFE_INTEGER, + }, + icon: { id: 'codicon/collapse-all' } + }); + } + async run(): Promise { + if (that.tree) { + return new CollapseAllAction(that.tree, true).run(); + } + } + })); + } + + setVisibility(isVisible: boolean): void { + isVisible = !!isVisible; + if (this.isVisible === isVisible) { + return; + } + + this.isVisible = isVisible; + + if (this.tree) { + if (this.isVisible) { + DOM.show(this.tree.getHTMLElement()); + } else { + DOM.hide(this.tree.getHTMLElement()); // make sure the tree goes out of the tabindex world by hiding it + } + + if (this.isVisible && this.elementsToRefresh.length) { + this.doRefresh(this.elementsToRefresh); + this.elementsToRefresh = []; + } + } + + this._onDidChangeVisibility.fire(this.isVisible); + } + + focus(reveal: boolean = true): void { + if (this.tree && this.root.children && this.root.children.length > 0) { + // Make sure the current selected element is revealed + const selectedElement = this.tree.getSelection()[0]; + if (selectedElement && reveal) { + this.tree.reveal(selectedElement, 0.5); + } + + // Pass Focus to Viewer + this.tree.domFocus(); + } else if (this.tree) { + this.tree.domFocus(); + } else { + this.domNode.focus(); + } + } + + show(container: HTMLElement): void { + DOM.append(container, this.domNode); + } + + private create() { + this.domNode = DOM.$('.tree-explorer-viewlet-tree-view'); + this.messageElement = DOM.append(this.domNode, DOM.$('.message')); + this.treeContainer = DOM.append(this.domNode, DOM.$('.customview-tree')); + DOM.addClass(this.treeContainer, 'file-icon-themable-tree'); + DOM.addClass(this.treeContainer, 'show-file-icons'); + const focusTracker = this._register(DOM.trackFocus(this.domNode)); + this._register(focusTracker.onDidFocus(() => this.focused = true)); + this._register(focusTracker.onDidBlur(() => this.focused = false)); + } + + private createTree() { + const actionViewItemProvider = (action: IAction) => action instanceof MenuItemAction ? this.instantiationService.createInstance(ContextAwareMenuEntryActionViewItem, action) : undefined; + const treeMenus = this._register(this.instantiationService.createInstance(TreeMenus, this.id)); + this.treeLabels = this._register(this.instantiationService.createInstance(ResourceLabels, this)); + const dataSource = this.instantiationService.createInstance(TreeDataSource, this, (task: Promise) => this.progressService.withProgress({ location: this.id }, () => task)); + const aligner = new Aligner(this.themeService); + const renderer = this.instantiationService.createInstance(TreeRenderer, this.id, treeMenus, this.treeLabels, actionViewItemProvider, aligner); + const widgetAriaLabel = this._title; + + this.tree = this._register(this.instantiationService.createInstance(Tree, this.id, this.treeContainer, new TreeViewDelegate(), [renderer], + dataSource, { + identityProvider: new TreeViewIdentityProvider(), + accessibilityProvider: { + getAriaLabel(element: ITreeItem): string { + if (element.accessibilityInformation) { + return element.accessibilityInformation.label; + } + + return isString(element.tooltip) ? element.tooltip : element.label ? element.label.label : ''; + }, + getRole(element: ITreeItem): string | undefined { + return element.accessibilityInformation?.role ?? 'treeitem'; + }, + getWidgetAriaLabel(): string { + return widgetAriaLabel; + } + }, + keyboardNavigationLabelProvider: { + getKeyboardNavigationLabel: (item: ITreeItem) => { + return item.label ? item.label.label : (item.resourceUri ? basename(URI.revive(item.resourceUri)) : undefined); + } + }, + expandOnlyOnTwistieClick: (e: ITreeItem) => !!e.command, + collapseByDefault: (e: ITreeItem): boolean => { + return e.collapsibleState !== TreeItemCollapsibleState.Expanded; + }, + multipleSelectionSupport: this.canSelectMany, + overrideStyles: { + listBackground: this.viewLocation === ViewContainerLocation.Sidebar ? SIDE_BAR_BACKGROUND : PANEL_BACKGROUND + } + }) as WorkbenchAsyncDataTree); + aligner.tree = this.tree; + const actionRunner = new MultipleSelectionActionRunner(this.notificationService, () => this.tree!.getSelection()); + renderer.actionRunner = actionRunner; + + this.tree.contextKeyService.createKey(this.id, true); + this._register(this.tree.onContextMenu(e => this.onContextMenu(treeMenus, e, actionRunner))); + this._register(this.tree.onDidChangeSelection(e => this._onDidChangeSelection.fire(e.elements))); + this._register(this.tree.onDidChangeCollapseState(e => { + if (!e.node.element) { + return; + } + + const element: ITreeItem = Array.isArray(e.node.element.element) ? e.node.element.element[0] : e.node.element.element; + if (e.node.collapsed) { + this._onDidCollapseItem.fire(element); + } else { + this._onDidExpandItem.fire(element); + } + })); + this.tree.setInput(this.root).then(() => this.updateContentAreas()); + + this._register(this.tree.onDidOpen(e => { + if (!e.browserEvent) { + return; + } + const selection = this.tree!.getSelection(); + if ((selection.length === 1) && selection[0].command) { + this.commandService.executeCommand(selection[0].command.id, ...(selection[0].command.arguments || [])); + } + })); + + } + + private onContextMenu(treeMenus: TreeMenus, treeEvent: ITreeContextMenuEvent, actionRunner: MultipleSelectionActionRunner): void { + const node: ITreeItem | null = treeEvent.element; + if (node === null) { + return; + } + const event: UIEvent = treeEvent.browserEvent; + + event.preventDefault(); + event.stopPropagation(); + + this.tree!.setFocus([node]); + const actions = treeMenus.getResourceContextActions(node); + if (!actions.length) { + return; + } + this.contextMenuService.showContextMenu({ + getAnchor: () => treeEvent.anchor, + + getActions: () => actions, + + getActionViewItem: (action) => { + const keybinding = this.keybindingService.lookupKeybinding(action.id); + if (keybinding) { + return new ActionViewItem(action, action, { label: true, keybinding: keybinding.getLabel() }); + } + return undefined; + }, + + onHide: (wasCancelled?: boolean) => { + if (wasCancelled) { + this.tree!.domFocus(); + } + }, + + getActionsContext: () => ({ $treeViewId: this.id, $treeItemHandle: node.handle }), + + actionRunner + }); + } + + protected updateMessage(): void { + if (this._message) { + this.showMessage(this._message); + } else if (!this.dataProvider) { + this.showMessage(noDataProviderMessage); + } else { + this.hideMessage(); + } + this.updateContentAreas(); + } + + private showMessage(message: string): void { + DOM.removeClass(this.messageElement, 'hide'); + this.resetMessageElement(); + this._messageValue = message; + if (!isFalsyOrWhitespace(this._message)) { + this.messageElement.textContent = this._messageValue; + } + this.layout(this._height, this._width); + } + + private hideMessage(): void { + this.resetMessageElement(); + DOM.addClass(this.messageElement, 'hide'); + this.layout(this._height, this._width); + } + + private resetMessageElement(): void { + DOM.clearNode(this.messageElement); + } + + private _height: number = 0; + private _width: number = 0; + layout(height: number, width: number) { + if (height && width) { + this._height = height; + this._width = width; + const treeHeight = height - DOM.getTotalHeight(this.messageElement); + this.treeContainer.style.height = treeHeight + 'px'; + if (this.tree) { + this.tree.layout(treeHeight, width); + } + } + } + + getOptimalWidth(): number { + if (this.tree) { + const parentNode = this.tree.getHTMLElement(); + const childNodes = ([] as HTMLElement[]).slice.call(parentNode.querySelectorAll('.outline-item-label > a')); + return DOM.getLargestChildWidth(parentNode, childNodes); + } + return 0; + } + + async refresh(elements?: ITreeItem[]): Promise { + if (this.dataProvider && this.tree) { + if (this.refreshing) { + await Event.toPromise(this._onDidCompleteRefresh.event); + } + if (!elements) { + elements = [this.root]; + // remove all waiting elements to refresh if root is asked to refresh + this.elementsToRefresh = []; + } + for (const element of elements) { + element.children = undefined; // reset children + } + if (this.isVisible) { + return this.doRefresh(elements); + } else { + if (this.elementsToRefresh.length) { + const seen: Set = new Set(); + this.elementsToRefresh.forEach(element => seen.add(element.handle)); + for (const element of elements) { + if (!seen.has(element.handle)) { + this.elementsToRefresh.push(element); + } + } + } else { + this.elementsToRefresh.push(...elements); + } + } + } + return undefined; + } + + async expand(itemOrItems: ITreeItem | ITreeItem[]): Promise { + const tree = this.tree; + if (tree) { + itemOrItems = Array.isArray(itemOrItems) ? itemOrItems : [itemOrItems]; + await Promise.all(itemOrItems.map(element => { + return tree.expand(element, false); + })); + } + } + + setSelection(items: ITreeItem[]): void { + if (this.tree) { + this.tree.setSelection(items); + } + } + + setFocus(item: ITreeItem): void { + if (this.tree) { + this.focus(); + this.tree.setFocus([item]); + } + } + + async reveal(item: ITreeItem): Promise { + if (this.tree) { + return this.tree.reveal(item); + } + } + + private refreshing: boolean = false; + private async doRefresh(elements: ITreeItem[]): Promise { + const tree = this.tree; + if (tree && this.visible) { + this.refreshing = true; + await Promise.all(elements.map(element => tree.updateChildren(element, true, true))); + this.refreshing = false; + this._onDidCompleteRefresh.fire(); + this.updateContentAreas(); + if (this.focused) { + this.focus(false); + } + } + } + + private updateContentAreas(): void { + const isTreeEmpty = !this.root.children || this.root.children.length === 0; + // Hide tree container only when there is a message and tree is empty and not refreshing + if (this._messageValue && isTreeEmpty && !this.refreshing) { + DOM.addClass(this.treeContainer, 'hide'); + this.domNode.setAttribute('tabindex', '0'); + } else { + DOM.removeClass(this.treeContainer, 'hide'); + this.domNode.removeAttribute('tabindex'); + } + } +} + +class TreeViewIdentityProvider implements IIdentityProvider { + getId(element: ITreeItem): { toString(): string; } { + return element.handle; + } +} + +class TreeViewDelegate implements IListVirtualDelegate { + + getHeight(element: ITreeItem): number { + return TreeRenderer.ITEM_HEIGHT; + } + + getTemplateId(element: ITreeItem): string { + return TreeRenderer.TREE_TEMPLATE_ID; + } +} + +class TreeDataSource implements IAsyncDataSource { + + constructor( + private treeView: ITreeView, + private withProgress: (task: Promise) => Promise + ) { + } + + hasChildren(element: ITreeItem): boolean { + return !!this.treeView.dataProvider && (element.collapsibleState !== TreeItemCollapsibleState.None); + } + + async getChildren(element: ITreeItem): Promise { + if (this.treeView.dataProvider) { + return this.withProgress(this.treeView.dataProvider.getChildren(element)); + } + return []; + } +} + +// todo@joh,sandy make this proper and contributable from extensions +registerThemingParticipant((theme, collector) => { + + const matchBackgroundColor = theme.getColor(listFilterMatchHighlight); + if (matchBackgroundColor) { + collector.addRule(`.file-icon-themable-tree .monaco-list-row .content .monaco-highlighted-label .highlight { color: unset !important; background-color: ${matchBackgroundColor}; }`); + collector.addRule(`.monaco-tl-contents .monaco-highlighted-label .highlight { color: unset !important; background-color: ${matchBackgroundColor}; }`); + } + const matchBorderColor = theme.getColor(listFilterMatchHighlightBorder); + if (matchBorderColor) { + collector.addRule(`.file-icon-themable-tree .monaco-list-row .content .monaco-highlighted-label .highlight { color: unset !important; border: 1px dotted ${matchBorderColor}; box-sizing: border-box; }`); + collector.addRule(`.monaco-tl-contents .monaco-highlighted-label .highlight { color: unset !important; border: 1px dotted ${matchBorderColor}; box-sizing: border-box; }`); + } + const link = theme.getColor(textLinkForeground); + if (link) { + collector.addRule(`.tree-explorer-viewlet-tree-view > .message a { color: ${link}; }`); + } + const focusBorderColor = theme.getColor(focusBorder); + if (focusBorderColor) { + collector.addRule(`.tree-explorer-viewlet-tree-view > .message a:focus { outline: 1px solid ${focusBorderColor}; outline-offset: -1px; }`); + } + const codeBackground = theme.getColor(textCodeBlockBackground); + if (codeBackground) { + collector.addRule(`.tree-explorer-viewlet-tree-view > .message code { background-color: ${codeBackground}; }`); + } +}); + +interface ITreeExplorerTemplateData { + elementDisposable: IDisposable; + container: HTMLElement; + resourceLabel: IResourceLabel; + icon: HTMLElement; + actionBar: ActionBar; +} + +class TreeRenderer extends Disposable implements ITreeRenderer { + static readonly ITEM_HEIGHT = 22; + static readonly TREE_TEMPLATE_ID = 'treeExplorer'; + + private _actionRunner: MultipleSelectionActionRunner | undefined; + private readonly hoverDelay: number; + + constructor( + private treeViewId: string, + private menus: TreeMenus, + private labels: ResourceLabels, + private actionViewItemProvider: IActionViewItemProvider, + private aligner: Aligner, + @IThemeService private readonly themeService: IThemeService, + @IConfigurationService private readonly configurationService: IConfigurationService, + @ILabelService private readonly labelService: ILabelService, + @IHoverService private readonly hoverService: IHoverService + ) { + super(); + this.hoverDelay = this.configurationService.getValue('editor.hover.delay'); + } + + get templateId(): string { + return TreeRenderer.TREE_TEMPLATE_ID; + } + + set actionRunner(actionRunner: MultipleSelectionActionRunner) { + this._actionRunner = actionRunner; + } + + renderTemplate(container: HTMLElement): ITreeExplorerTemplateData { + DOM.addClass(container, 'custom-view-tree-node-item'); + + const icon = DOM.append(container, DOM.$('.custom-view-tree-node-item-icon')); + + const resourceLabel = this.labels.create(container, { supportHighlights: true }); + const actionsContainer = DOM.append(resourceLabel.element, DOM.$('.actions')); + const actionBar = new ActionBar(actionsContainer, { + actionViewItemProvider: this.actionViewItemProvider + }); + + return { resourceLabel, icon, actionBar, container, elementDisposable: Disposable.None }; + } + + renderElement(element: ITreeNode, index: number, templateData: ITreeExplorerTemplateData): void { + templateData.elementDisposable.dispose(); + const node = element.element; + const resource = node.resourceUri ? URI.revive(node.resourceUri) : null; + const treeItemLabel: ITreeItemLabel | undefined = node.label ? node.label : (resource ? { label: basename(resource) } : undefined); + const description = isString(node.description) ? node.description : resource && node.description === true ? this.labelService.getUriLabel(dirname(resource), { relative: true }) : undefined; + const label = treeItemLabel ? treeItemLabel.label : undefined; + const matches = (treeItemLabel && treeItemLabel.highlights && label) ? treeItemLabel.highlights.map(([start, end]) => { + if (start < 0) { + start = label.length + start; + } + if (end < 0) { + end = label.length + end; + } + if ((start >= label.length) || (end > label.length)) { + return ({ start: 0, end: 0 }); + } + if (start > end) { + const swap = start; + start = end; + end = swap; + } + return ({ start, end }); + }) : undefined; + const icon = this.themeService.getColorTheme().type === LIGHT ? node.icon : node.iconDark; + const iconUrl = icon ? URI.revive(icon) : null; + const canResolve = node instanceof ResolvableTreeItem && node.hasResolve; + const title = node.tooltip ? (isString(node.tooltip) ? node.tooltip : undefined) : (resource ? undefined : (canResolve ? undefined : label)); + + // reset + templateData.actionBar.clear(); + + if (resource || this.isFileKindThemeIcon(node.themeIcon)) { + const fileDecorations = this.configurationService.getValue<{ colors: boolean, badges: boolean }>('explorer.decorations'); + templateData.resourceLabel.setResource({ name: label, description, resource: resource ? resource : URI.parse('missing:_icon_resource') }, { fileKind: this.getFileKind(node), title, hideIcon: !!iconUrl, fileDecorations, extraClasses: ['custom-view-tree-node-item-resourceLabel'], matches: matches ? matches : createMatches(element.filterData) }); + } else { + templateData.resourceLabel.setResource({ name: label, description }, { title, hideIcon: true, extraClasses: ['custom-view-tree-node-item-resourceLabel'], matches: matches ? matches : createMatches(element.filterData) }); + } + + templateData.icon.title = title ? title : ''; + + if (iconUrl) { + templateData.icon.className = 'custom-view-tree-node-item-icon'; + templateData.icon.style.backgroundImage = DOM.asCSSUrl(iconUrl); + + } else { + let iconClass: string | undefined; + if (node.themeIcon && !this.isFileKindThemeIcon(node.themeIcon)) { + iconClass = ThemeIcon.asClassName(node.themeIcon); + } + templateData.icon.className = iconClass ? `custom-view-tree-node-item-icon ${iconClass}` : ''; + templateData.icon.style.backgroundImage = ''; + } + + templateData.actionBar.context = { $treeViewId: this.treeViewId, $treeItemHandle: node.handle }; + templateData.actionBar.push(this.menus.getResourceActions(node), { icon: true, label: false }); + if (this._actionRunner) { + templateData.actionBar.actionRunner = this._actionRunner; + } + this.setAlignment(templateData.container, node); + const disposableStore = new DisposableStore(); + templateData.elementDisposable = disposableStore; + disposableStore.add(this.themeService.onDidFileIconThemeChange(() => this.setAlignment(templateData.container, node))); + this.setupHovers(node, templateData.container, disposableStore, label); + } + + private setupHovers(node: ITreeItem, htmlElement: HTMLElement, disposableStore: DisposableStore, label: string | undefined): void { + if ((node.tooltip && isString(node.tooltip)) || !(node instanceof ResolvableTreeItem) || !node.hasResolve) { + return; + } + const resolvableNode: ResolvableTreeItem = node; + const hoverService = this.hoverService; + const hoverDelay = this.hoverDelay; + function mouseOver(this: HTMLElement, e: MouseEvent): any { + let isHovering = true; + function mouseLeave(this: HTMLElement, e: MouseEvent): any { + isHovering = false; + } + this.addEventListener(DOM.EventType.MOUSE_LEAVE, mouseLeave, { passive: true }); + setTimeout(async () => { + await resolvableNode.resolve(); + const tooltip = resolvableNode.tooltip ?? label; + if (isHovering && tooltip) { + hoverService.showHover({ text: isString(tooltip) ? { value: tooltip } : tooltip, target: this }); + } + this.removeEventListener(DOM.EventType.MOUSE_LEAVE, mouseLeave); + }, hoverDelay); + } + htmlElement.addEventListener(DOM.EventType.MOUSE_OVER, mouseOver, { passive: true }); + disposableStore.add({ + dispose: () => { + htmlElement.removeEventListener(DOM.EventType.MOUSE_OVER, mouseOver); + } + }); + } + + private setAlignment(container: HTMLElement, treeItem: ITreeItem) { + DOM.toggleClass(container.parentElement!, 'align-icon-with-twisty', this.aligner.alignIconWithTwisty(treeItem)); + } + + private isFileKindThemeIcon(icon: ThemeIcon | undefined): boolean { + if (icon) { + return icon.id === FileThemeIcon.id || icon.id === FolderThemeIcon.id; + } else { + return false; + } + } + + private getFileKind(node: ITreeItem): FileKind { + if (node.themeIcon) { + switch (node.themeIcon.id) { + case FileThemeIcon.id: + return FileKind.FILE; + case FolderThemeIcon.id: + return FileKind.FOLDER; + } + } + return node.collapsibleState === TreeItemCollapsibleState.Collapsed || node.collapsibleState === TreeItemCollapsibleState.Expanded ? FileKind.FOLDER : FileKind.FILE; + } + + disposeElement(resource: ITreeNode, index: number, templateData: ITreeExplorerTemplateData): void { + templateData.elementDisposable.dispose(); + } + + disposeTemplate(templateData: ITreeExplorerTemplateData): void { + templateData.resourceLabel.dispose(); + templateData.actionBar.dispose(); + templateData.elementDisposable.dispose(); + } +} + +class Aligner extends Disposable { + private _tree: WorkbenchAsyncDataTree | undefined; + + constructor(private themeService: IThemeService) { + super(); + } + + set tree(tree: WorkbenchAsyncDataTree) { + this._tree = tree; + } + + public alignIconWithTwisty(treeItem: ITreeItem): boolean { + if (treeItem.collapsibleState !== TreeItemCollapsibleState.None) { + return false; + } + if (!this.hasIcon(treeItem)) { + return false; + } + + if (this._tree) { + const parent: ITreeItem = this._tree.getParentElement(treeItem) || this._tree.getInput(); + if (this.hasIcon(parent)) { + return false; + } + return !!parent.children && parent.children.every(c => c.collapsibleState === TreeItemCollapsibleState.None || !this.hasIcon(c)); + } else { + return false; + } + } + + private hasIcon(node: ITreeItem): boolean { + const icon = this.themeService.getColorTheme().type === LIGHT ? node.icon : node.iconDark; + if (icon) { + return true; + } + if (node.resourceUri || node.themeIcon) { + const fileIconTheme = this.themeService.getFileIconTheme(); + const isFolder = node.themeIcon ? node.themeIcon.id === FolderThemeIcon.id : node.collapsibleState !== TreeItemCollapsibleState.None; + if (isFolder) { + return fileIconTheme.hasFileIcons && fileIconTheme.hasFolderIcons; + } + return fileIconTheme.hasFileIcons; + } + return false; + } +} + +class MultipleSelectionActionRunner extends ActionRunner { + + constructor(notificationService: INotificationService, private getSelectedResources: (() => ITreeItem[])) { + super(); + this._register(this.onDidRun(e => { + if (e.error) { + notificationService.error(localize('command-error', 'Error running command {1}: {0}. This is likely caused by the extension that contributes {1}.', e.error.message, e.action.id)); + } + })); + } + + runAction(action: IAction, context: TreeViewItemHandleArg): Promise { + const selection = this.getSelectedResources(); + let selectionHandleArgs: TreeViewItemHandleArg[] | undefined = undefined; + let actionInSelected: boolean = false; + if (selection.length > 1) { + selectionHandleArgs = selection.map(selected => { + if (selected.handle === context.$treeItemHandle) { + actionInSelected = true; + } + return { $treeViewId: context.$treeViewId, $treeItemHandle: selected.handle }; + }); + } + + if (!actionInSelected) { + selectionHandleArgs = undefined; + } + + return action.run(...[context, selectionHandleArgs]); + } +} + +class TreeMenus extends Disposable implements IDisposable { + + constructor( + private id: string, + @IContextKeyService private readonly contextKeyService: IContextKeyService, + @IMenuService private readonly menuService: IMenuService, + @IContextMenuService private readonly contextMenuService: IContextMenuService + ) { + super(); + } + + getResourceActions(element: ITreeItem): IAction[] { + return this.getActions(MenuId.ViewItemContext, { key: 'viewItem', value: element.contextValue }).primary; + } + + getResourceContextActions(element: ITreeItem): IAction[] { + return this.getActions(MenuId.ViewItemContext, { key: 'viewItem', value: element.contextValue }).secondary; + } + + private getActions(menuId: MenuId, context: { key: string, value?: string }): { primary: IAction[]; secondary: IAction[]; } { + const contextKeyService = this.contextKeyService.createScoped(); + contextKeyService.createKey('view', this.id); + contextKeyService.createKey(context.key, context.value); + + const menu = this.menuService.createMenu(menuId, contextKeyService); + const primary: IAction[] = []; + const secondary: IAction[] = []; + const result = { primary, secondary }; + createAndFillInContextMenuActions(menu, { shouldForwardArgs: true }, result, this.contextMenuService, g => /^inline/.test(g)); + + menu.dispose(); + contextKeyService.dispose(); + + return result; + } +} + +export class CustomTreeView extends TreeView { + + private activated: boolean = false; + + constructor( + id: string, + title: string, + @IThemeService themeService: IThemeService, + @IInstantiationService instantiationService: IInstantiationService, + @ICommandService commandService: ICommandService, + @IConfigurationService configurationService: IConfigurationService, + @IProgressService progressService: IProgressService, + @IContextMenuService contextMenuService: IContextMenuService, + @IKeybindingService keybindingService: IKeybindingService, + @INotificationService notificationService: INotificationService, + @IViewDescriptorService viewDescriptorService: IViewDescriptorService, + @IContextKeyService contextKeyService: IContextKeyService, + @IHoverService hoverService: IHoverService, + @IExtensionService private readonly extensionService: IExtensionService, + ) { + super(id, title, themeService, instantiationService, commandService, configurationService, progressService, contextMenuService, keybindingService, notificationService, viewDescriptorService, contextKeyService); + } + + setVisibility(isVisible: boolean): void { + super.setVisibility(isVisible); + if (this.visible) { + this.activate(); + } + } + + private activate() { + if (!this.activated) { + this.progressService.withProgress({ location: this.id }, () => this.extensionService.activateByEvent(`onView:${this.id}`)) + .then(() => timeout(2000)) + .then(() => { + this.updateMessage(); + }); + this.activated = true; + } + } +} diff --git a/src/vs/workbench/contrib/webview/browser/baseWebviewElement.ts b/src/vs/workbench/contrib/webview/browser/baseWebviewElement.ts index 18f3791c1f..854e9de41d 100644 --- a/src/vs/workbench/contrib/webview/browser/baseWebviewElement.ts +++ b/src/vs/workbench/contrib/webview/browser/baseWebviewElement.ts @@ -86,7 +86,7 @@ export abstract class BaseWebview extends Disposable { private readonly webviewThemeDataProvider: WebviewThemeDataProvider, @ILogService private readonly _logService: ILogService, @ITelemetryService private readonly _telemetryService: ITelemetryService, - @IEnvironmentService private readonly _environementService: IEnvironmentService, + @IEnvironmentService private readonly _environmentService: IEnvironmentService, @IWorkbenchEnvironmentService protected readonly workbenchEnvironmentService: IWorkbenchEnvironmentService, ) { super(); @@ -226,7 +226,7 @@ export abstract class BaseWebview extends Disposable { this._hasAlertedAboutMissingCsp = true; if (this.extension && this.extension.id) { - if (this._environementService.isExtensionDevelopment) { + if (this._environmentService.isExtensionDevelopment) { this._onMissingCsp.fire(this.extension.id); } diff --git a/src/vs/workbench/contrib/webview/browser/pre/host.js b/src/vs/workbench/contrib/webview/browser/pre/host.js index 341733dcec..896165b3e7 100644 --- a/src/vs/workbench/contrib/webview/browser/pre/host.js +++ b/src/vs/workbench/contrib/webview/browser/pre/host.js @@ -5,6 +5,7 @@ // @ts-check (function () { const id = document.location.search.match(/\bid=([\w-]+)/)[1]; + const onElectron = /platform=electron/.test(document.location.search); const hostMessaging = new class HostMessaging { constructor() { @@ -36,6 +37,10 @@ }(); const workerReady = new Promise(async (resolveWorkerReady) => { + if (onElectron) { + return resolveWorkerReady(); + } + if (!areServiceWorkersEnabled()) { console.log('Service Workers are not enabled. Webviews will not work properly'); return resolveWorkerReady(); @@ -90,14 +95,21 @@ } } - (/** @type {any} */ (window)).createWebviewManager({ + /** @type {import('./main').WebviewHost} */ + const host = { postMessage: hostMessaging.postMessage.bind(hostMessaging), onMessage: hostMessaging.onMessage.bind(hostMessaging), ready: workerReady, - fakeLoad: true, - rewriteCSP: (csp, endpoint) => { - const endpointUrl = new URL(endpoint); - csp.setAttribute('content', csp.replace(/(vscode-webview-resource|vscode-resource):(?=(\s|;|$))/g, endpointUrl.origin)); - } - }); + fakeLoad: !onElectron, + rewriteCSP: onElectron + ? (csp) => { + return csp.replace(/vscode-resource:(?=(\s|;|$))/g, 'vscode-webview-resource:'); + } + : (csp, endpoint) => { + const endpointUrl = new URL(endpoint); + return csp.replace(/(vscode-webview-resource|vscode-resource):(?=(\s|;|$))/g, endpointUrl.origin); + } + }; + + (/** @type {any} */ (window)).createWebviewManager(host); }()); diff --git a/src/vs/workbench/contrib/webview/browser/pre/main.js b/src/vs/workbench/contrib/webview/browser/pre/main.js index c87970aa63..d5c40df3d9 100644 --- a/src/vs/workbench/contrib/webview/browser/pre/main.js +++ b/src/vs/workbench/contrib/webview/browser/pre/main.js @@ -367,7 +367,7 @@ try { csp.setAttribute('content', host.rewriteCSP(csp.getAttribute('content'), data.endpoint)); } catch (e) { - console.error('Could not rewrite csp'); + console.error(`Could not rewrite csp: ${e}`); } } diff --git a/src/vs/workbench/contrib/webview/browser/webview.ts b/src/vs/workbench/contrib/webview/browser/webview.ts index 5f3d58f580..464a90966a 100644 --- a/src/vs/workbench/contrib/webview/browser/webview.ts +++ b/src/vs/workbench/contrib/webview/browser/webview.ts @@ -53,7 +53,14 @@ export interface IWebviewService { setIcons(id: string, value: WebviewIcons | undefined): void; } +export const enum WebviewContentPurpose { + NotebookRenderer = 'notebookRenderer', + CustomEditor = 'customEditor', +} + export interface WebviewOptions { + // The purpose of the webview; this is (currently) only used for filtering in js-debug + readonly purpose?: WebviewContentPurpose; readonly customClasses?: string; readonly enableFindWidget?: boolean; readonly tryRestoreScrollPosition?: boolean; @@ -135,4 +142,4 @@ export interface WebviewOverlay extends Webview { layoutWebviewOverElement(element: HTMLElement, dimension?: Dimension): void; } -export const webviewDeveloperCategory = nls.localize('developer', "Developer"); +export const webviewDeveloperCategory = nls.localize({ key: 'developer', comment: ['A developer on Code itself or someone diagnosing issues in Code'] }, "Developer"); diff --git a/src/vs/workbench/contrib/webview/browser/webviewCommands.ts b/src/vs/workbench/contrib/webview/browser/webviewCommands.ts index 6f332660dd..56e02dd1c1 100644 --- a/src/vs/workbench/contrib/webview/browser/webviewCommands.ts +++ b/src/vs/workbench/contrib/webview/browser/webviewCommands.ts @@ -32,7 +32,7 @@ export class ShowWebViewEditorFindWidgetAction extends Action2 { } public run(accessor: ServicesAccessor): void { - getActiveWebviewEditor(accessor)?.showFind(); + getFocusedWebviewEditor(accessor)?.showFind(); } } @@ -53,7 +53,7 @@ export class HideWebViewEditorFindCommand extends Action2 { } public run(accessor: ServicesAccessor): void { - getActiveWebviewEditor(accessor)?.hideFind(); + getFocusedWebviewEditor(accessor)?.hideFind(); } } @@ -74,7 +74,7 @@ export class WebViewEditorFindNextCommand extends Action2 { } public run(accessor: ServicesAccessor): void { - getActiveWebviewEditor(accessor)?.runFindAction(false); + getFocusedWebviewEditor(accessor)?.runFindAction(false); } } @@ -95,7 +95,7 @@ export class WebViewEditorFindPreviousCommand extends Action2 { } public run(accessor: ServicesAccessor): void { - getActiveWebviewEditor(accessor)?.runFindAction(true); + getFocusedWebviewEditor(accessor)?.runFindAction(true); } } @@ -117,7 +117,7 @@ export class SelectAllWebviewEditorCommand extends Action2 { } public run(accessor: ServicesAccessor): void { - getActiveWebviewEditor(accessor)?.selectAll(); + getFocusedWebviewEditor(accessor)?.selectAll(); } } @@ -142,7 +142,7 @@ export class ReloadWebviewAction extends Action { } } -export function getActiveWebviewEditor(accessor: ServicesAccessor): Webview | undefined { +export function getFocusedWebviewEditor(accessor: ServicesAccessor): Webview | undefined { const editorService = accessor.get(IEditorService); const activeEditor = editorService.activeEditor; return activeEditor instanceof WebviewInput ? activeEditor.webview : undefined; diff --git a/src/vs/workbench/contrib/webview/browser/webviewEditor.ts b/src/vs/workbench/contrib/webview/browser/webviewEditor.ts index 98d2c8470c..38948fb85e 100644 --- a/src/vs/workbench/contrib/webview/browser/webviewEditor.ts +++ b/src/vs/workbench/contrib/webview/browser/webviewEditor.ts @@ -12,11 +12,11 @@ import { IStorageService } from 'vs/platform/storage/common/storage'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { IThemeService } from 'vs/platform/theme/common/themeService'; import { BaseEditor } from 'vs/workbench/browser/parts/editor/baseEditor'; -import { EditorPart } from 'vs/workbench/browser/parts/editor/editorPart'; +import { IEditorDropService } from 'vs/workbench/services/editor/browser/editorDropService'; import { EditorInput, EditorOptions } from 'vs/workbench/common/editor'; import { WebviewOverlay } from 'vs/workbench/contrib/webview/browser/webview'; import { WebviewInput } from 'vs/workbench/contrib/webview/browser/webviewEditorInput'; -import { IEditorGroup, IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService'; +import { IEditorGroup } from 'vs/workbench/services/editor/common/editorGroupsService'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IHostService } from 'vs/workbench/services/host/browser/host'; @@ -39,7 +39,7 @@ export class WebviewEditor extends BaseEditor { @IThemeService themeService: IThemeService, @IStorageService storageService: IStorageService, @IEditorService private readonly _editorService: IEditorService, - @IEditorGroupsService private readonly _editorGroupsService: IEditorGroupsService, + @IEditorDropService private readonly _editorDropService: IEditorDropService, @IHostService private readonly _hostService: IHostService, ) { super(WebviewEditor.ID, telemetryService, themeService, storageService); @@ -146,11 +146,9 @@ export class WebviewEditor extends BaseEditor { this._webviewVisibleDisposables.clear(); // Webviews are not part of the normal editor dom, so we have to register our own drag and drop handler on them. - if (this._editorGroupsService instanceof EditorPart) { - this._webviewVisibleDisposables.add(this._editorGroupsService.createEditorDropTarget(input.webview.container, { - groupContainsPredicate: (group) => this.group?.id === group.group.id - })); - } + this._webviewVisibleDisposables.add(this._editorDropService.createEditorDropTarget(input.webview.container, { + containsGroup: (group) => this.group?.id === group.group.id + })); this._webviewVisibleDisposables.add(DOM.addDisposableListener(window, DOM.EventType.DRAG_START, () => { this.webview?.windowDidDragStart(); diff --git a/src/vs/workbench/contrib/webview/browser/webviewElement.ts b/src/vs/workbench/contrib/webview/browser/webviewElement.ts index 196c782aa3..d35f2d873e 100644 --- a/src/vs/workbench/contrib/webview/browser/webviewElement.ts +++ b/src/vs/workbench/contrib/webview/browser/webviewElement.ts @@ -4,15 +4,17 @@ *--------------------------------------------------------------------------------------------*/ import { addDisposableListener } from 'vs/base/browser/dom'; +import { streamToBuffer } from 'vs/base/common/buffer'; import { IDisposable } from 'vs/base/common/lifecycle'; -import { isWeb } from 'vs/base/common/platform'; +import { Schemas } from 'vs/base/common/network'; import { URI } from 'vs/base/common/uri'; -import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { IFileService } from 'vs/platform/files/common/files'; import { ILogService } from 'vs/platform/log/common/log'; import { IRemoteAuthorityResolverService } from 'vs/platform/remote/common/remoteAuthorityResolver'; +import { REMOTE_HOST_SCHEME } from 'vs/platform/remote/common/remoteHosts'; import { ITunnelService } from 'vs/platform/remote/common/tunnel'; +import { IRequestService } from 'vs/platform/request/common/request'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { loadLocalResource, WebviewResourceResponse } from 'vs/platform/webview/common/resourceLoader'; import { WebviewPortMappingManager } from 'vs/platform/webview/common/webviewPortMapping'; @@ -32,7 +34,7 @@ export class IFrameWebview extends BaseWebview implements Web webviewThemeDataProvider: WebviewThemeDataProvider, @ITunnelService tunnelService: ITunnelService, @IFileService private readonly fileService: IFileService, - @IConfigurationService private readonly _configurationService: IConfigurationService, + @IRequestService private readonly requestService: IRequestService, @ITelemetryService telemetryService: ITelemetryService, @IEnvironmentService environmentService: IEnvironmentService, @IWorkbenchEnvironmentService private readonly _workbenchEnvironmentService: IWorkbenchEnvironmentService, @@ -41,10 +43,6 @@ export class IFrameWebview extends BaseWebview implements Web ) { super(id, options, contentOptions, extension, webviewThemeDataProvider, logService, telemetryService, environmentService, _workbenchEnvironmentService); - if (!this.useExternalEndpoint && (!_workbenchEnvironmentService.options || typeof _workbenchEnvironmentService.webviewExternalEndpoint !== 'string')) { - throw new Error('To use iframe based webviews, you must configure `environmentService.webviewExternalEndpoint`'); - } - this._portMappingManager = this._register(new WebviewPortMappingManager( () => this.extension?.location, () => this.content.options.portMapping || [], @@ -62,7 +60,7 @@ export class IFrameWebview extends BaseWebview implements Web this.localLocalhost(entry.origin); })); - this.element!.setAttribute('src', `${this.externalEndpoint}/index.html?id=${this.id}`); + this.initElement(extension, options); } protected createElement(options: WebviewOptions, _contentOptions: WebviewContentOptions) { @@ -77,6 +75,11 @@ export class IFrameWebview extends BaseWebview implements Web return element; } + protected initElement(extension: WebviewExtensionDescription | undefined, options: WebviewOptions) { + // The extensionId and purpose in the URL are used for filtering in js-debug: + this.element!.setAttribute('src', `${this.externalEndpoint}/index.html?id=${this.id}&extensionId=${extension?.id.value ?? ''}&purpose=${options.purpose}`); + } + private get externalEndpoint(): string { const endpoint = this.workbenchEnvironmentService.webviewExternalEndpoint!.replace('{{uuid}}', this.id); if (endpoint[endpoint.length - 1] === '/') { @@ -85,10 +88,6 @@ export class IFrameWebview extends BaseWebview implements Web return endpoint; } - private get useExternalEndpoint(): boolean { - return isWeb || this._configurationService.getValue('webview.experimental.useExternalEndpoint'); - } - public mountTo(parent: HTMLElement) { if (this.element) { parent.appendChild(this.element); @@ -99,7 +98,7 @@ export class IFrameWebview extends BaseWebview implements Web super.html = this.preprocessHtml(value); } - private preprocessHtml(value: string): string { + protected preprocessHtml(value: string): string { return value .replace(/(["'])(?:vscode-resource):(\/\/([^\s\/'"]+?)(?=\/))?([^\s'"]+?)(["'])/gi, (match, startQuote, _1, scheme, path, endQuote) => { if (scheme) { @@ -115,7 +114,7 @@ export class IFrameWebview extends BaseWebview implements Web }); } - protected get extraContentOptions() { + protected get extraContentOptions(): any { return { endpoint: this.externalEndpoint, }; @@ -141,15 +140,42 @@ export class IFrameWebview extends BaseWebview implements Web private async loadResource(requestPath: string, uri: URI) { try { - const result = await loadLocalResource(uri, this.fileService, this.extension ? this.extension.location : undefined, - this.content.options.localResourceRoots || []); + const remoteAuthority = this._workbenchEnvironmentService.configuration.remoteAuthority; + const remoteConnectionData = remoteAuthority ? this._remoteAuthorityResolverService.getConnectionData(remoteAuthority) : null; + const extensionLocation = this.extension?.location; + + // If we are loading a file resource from a remote extension, rewrite the uri to go remote + let rewriteUri: undefined | ((uri: URI) => URI); + if (extensionLocation?.scheme === REMOTE_HOST_SCHEME) { + rewriteUri = (uri) => { + if (uri.scheme === Schemas.file && extensionLocation?.scheme === REMOTE_HOST_SCHEME) { + return URI.from({ + scheme: REMOTE_HOST_SCHEME, + authority: extensionLocation.authority, + path: '/vscode-resource', + query: JSON.stringify({ + requestResourcePath: uri.path + }) + }); + } + return uri; + }; + } + + const result = await loadLocalResource(uri, { + extensionLocation: extensionLocation, + roots: this.content.options.localResourceRoots || [], + remoteConnectionData, + rewriteUri, + }, this.fileService, this.requestService); if (result.type === WebviewResourceResponse.Type.Success) { + const { buffer } = await streamToBuffer(result.stream); return this._send('did-load-resource', { status: 200, path: requestPath, mime: result.mimeType, - data: result.buffer.buffer, + data: buffer, }); } } catch { diff --git a/src/vs/workbench/contrib/webview/electron-browser/iframeWebviewElement.ts b/src/vs/workbench/contrib/webview/electron-browser/iframeWebviewElement.ts new file mode 100644 index 0000000000..66f77217b9 --- /dev/null +++ b/src/vs/workbench/contrib/webview/electron-browser/iframeWebviewElement.ts @@ -0,0 +1,138 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { ThrottledDelayer } from 'vs/base/common/async'; +import { Schemas } from 'vs/base/common/network'; +import { URI } from 'vs/base/common/uri'; +import { IEnvironmentService } from 'vs/platform/environment/common/environment'; +import { IFileService } from 'vs/platform/files/common/files'; +import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; +import { ILogService } from 'vs/platform/log/common/log'; +import { IRemoteAuthorityResolverService } from 'vs/platform/remote/common/remoteAuthorityResolver'; +import { ITunnelService } from 'vs/platform/remote/common/tunnel'; +import { IRequestService } from 'vs/platform/request/common/request'; +import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; +import { WebviewThemeDataProvider } from 'vs/workbench/contrib/webview/browser/themeing'; +import { WebviewContentOptions, WebviewExtensionDescription, WebviewOptions } from 'vs/workbench/contrib/webview/browser/webview'; +import { IFrameWebview } from 'vs/workbench/contrib/webview/browser/webviewElement'; +import { rewriteVsCodeResourceUrls, WebviewResourceRequestManager } from 'vs/workbench/contrib/webview/electron-browser/resourceLoading'; +import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; + +/** + * Webview backed by an iframe but that uses Electron APIs to power the webview. + */ +export class ElectronIframeWebview extends IFrameWebview { + + private readonly _resourceRequestManager: WebviewResourceRequestManager; + private _messagePromise = Promise.resolve(); + + private readonly _focusDelayer = this._register(new ThrottledDelayer(10)); + private _elementFocusImpl!: (options?: FocusOptions | undefined) => void; + + constructor( + id: string, + options: WebviewOptions, + contentOptions: WebviewContentOptions, + extension: WebviewExtensionDescription | undefined, + webviewThemeDataProvider: WebviewThemeDataProvider, + @ITunnelService tunnelService: ITunnelService, + @IFileService fileService: IFileService, + @IRequestService requestService: IRequestService, + @ITelemetryService telemetryService: ITelemetryService, + @IEnvironmentService environmentService: IEnvironmentService, + @IWorkbenchEnvironmentService _workbenchEnvironmentService: IWorkbenchEnvironmentService, + @IRemoteAuthorityResolverService _remoteAuthorityResolverService: IRemoteAuthorityResolverService, + @ILogService logService: ILogService, + @IInstantiationService instantiationService: IInstantiationService, + ) { + super(id, options, contentOptions, extension, webviewThemeDataProvider, + tunnelService, fileService, requestService, telemetryService, environmentService, _workbenchEnvironmentService, _remoteAuthorityResolverService, logService); + + this._resourceRequestManager = this._register(instantiationService.createInstance(WebviewResourceRequestManager, id, extension, this.content.options, Promise.resolve(undefined))); + } + + protected createElement(options: WebviewOptions, contentOptions: WebviewContentOptions) { + const element = super.createElement(options, contentOptions); + this._elementFocusImpl = element.focus.bind(element); + element.focus = () => { + this.doFocus(); + }; + return element; + } + + protected initElement(extension: WebviewExtensionDescription | undefined, options: WebviewOptions) { + // The extensionId and purpose in the URL are used for filtering in js-debug: + this.element!.setAttribute('src', `${Schemas.vscodeWebview}://${this.id}/index.html?id=${this.id}&platform=electron&extensionId=${extension?.id.value ?? ''}&purpose=${options.purpose}`); + } + + public set contentOptions(options: WebviewContentOptions) { + this._resourceRequestManager.update(options); + super.contentOptions = options; + } + + public set localResourcesRoot(resources: URI[]) { + this._resourceRequestManager.update({ + ...this.contentOptions, + localResourceRoots: resources, + }); + super.localResourcesRoot = resources; + } + + protected get extraContentOptions() { + return {}; + } + + protected async doPostMessage(channel: string, data?: any): Promise { + this._messagePromise = this._messagePromise + .then(() => this._resourceRequestManager.ensureReady()) + .then(() => { + this.element?.contentWindow!.postMessage({ channel, args: data }, '*'); + }); + } + + protected preprocessHtml(value: string): string { + return rewriteVsCodeResourceUrls(this.id, value); + } + + public focus(): void { + this.doFocus(); + + // Handle focus change programmatically (do not rely on event from ) + this.handleFocusChange(true); + } + + private doFocus() { + if (!this.element) { + return; + } + + // Workaround for https://github.com/microsoft/vscode/issues/75209 + // .focus is async for imframes so for a sequence of actions such as: + // + // 1. Open webview + // 1. Show quick pick from command palette + // + // We end up focusing the webview after showing the quick pick, which causes + // the quick pick to instantly dismiss. + // + // Workaround this by debouncing the focus and making sure we are not focused on an input + // when we try to re-focus. + this._focusDelayer.trigger(async () => { + if (!this.focused || !this.element) { + return; + } + + if (document.activeElement?.tagName === 'INPUT') { + return; + } + try { + this._elementFocusImpl(); + } catch { + // noop + } + this._send('focus'); + }); + } +} diff --git a/src/vs/workbench/contrib/webview/electron-browser/pre/index.html b/src/vs/workbench/contrib/webview/electron-browser/pre/index.html new file mode 100644 index 0000000000..591caaf7d3 --- /dev/null +++ b/src/vs/workbench/contrib/webview/electron-browser/pre/index.html @@ -0,0 +1,8 @@ + + + +Virtual Document + + + + diff --git a/src/vs/workbench/contrib/webview/electron-browser/resourceLoading.ts b/src/vs/workbench/contrib/webview/electron-browser/resourceLoading.ts new file mode 100644 index 0000000000..a3fe567b8c --- /dev/null +++ b/src/vs/workbench/contrib/webview/electron-browser/resourceLoading.ts @@ -0,0 +1,134 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { equals } from 'vs/base/common/arrays'; +import { Disposable, toDisposable } from 'vs/base/common/lifecycle'; +import { URI } from 'vs/base/common/uri'; +import { createChannelSender } from 'vs/base/parts/ipc/common/ipc'; +import * as modes from 'vs/editor/common/modes'; +import { IMainProcessService } from 'vs/platform/ipc/electron-sandbox/mainProcessService'; +import { ILogService } from 'vs/platform/log/common/log'; +import { IRemoteAuthorityResolverService } from 'vs/platform/remote/common/remoteAuthorityResolver'; +import { IWebviewManagerService } from 'vs/platform/webview/common/webviewManagerService'; +import { WebviewContentOptions, WebviewExtensionDescription } from 'vs/workbench/contrib/webview/browser/webview'; +import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; +import { Schemas } from 'vs/base/common/network'; + +/** + * Try to rewrite `vscode-resource:` urls in html + */ +export function rewriteVsCodeResourceUrls( + id: string, + html: string, +): string { + return html + .replace(/(["'])vscode-resource:(\/\/([^\s\/'"]+?)(?=\/))?([^\s'"]+?)(["'])/gi, (_match, startQuote, _1, scheme, path, endQuote) => { + if (scheme) { + return `${startQuote}${Schemas.vscodeWebviewResource}://${id}/${scheme}${path}${endQuote}`; + } + if (!path.startsWith('//')) { + // Add an empty authority if we don't already have one + path = '//' + path; + } + return `${startQuote}${Schemas.vscodeWebviewResource}://${id}/file${path}${endQuote}`; + }); +} + +/** + * Manages the loading of resources inside of a webview. + */ +export class WebviewResourceRequestManager extends Disposable { + + private readonly _webviewManagerService: IWebviewManagerService; + + private _localResourceRoots: ReadonlyArray; + private _portMappings: ReadonlyArray; + + private _ready: Promise; + + constructor( + private readonly id: string, + private readonly extension: WebviewExtensionDescription | undefined, + initialContentOptions: WebviewContentOptions, + getWebContentsId: Promise, + @ILogService private readonly _logService: ILogService, + @IRemoteAuthorityResolverService remoteAuthorityResolverService: IRemoteAuthorityResolverService, + @IWorkbenchEnvironmentService environmentService: IWorkbenchEnvironmentService, + @IMainProcessService mainProcessService: IMainProcessService, + ) { + super(); + + this._logService.debug(`WebviewResourceRequestManager(${this.id}): init`); + + this._webviewManagerService = createChannelSender(mainProcessService.getChannel('webview')); + + this._localResourceRoots = initialContentOptions.localResourceRoots || []; + this._portMappings = initialContentOptions.portMapping || []; + + const remoteAuthority = environmentService.configuration.remoteAuthority; + const remoteConnectionData = remoteAuthority ? remoteAuthorityResolverService.getConnectionData(remoteAuthority) : null; + + this._ready = getWebContentsId.then(async (webContentsId) => { + this._logService.debug(`WebviewResourceRequestManager(${this.id}): did-start-loading`); + + await this._webviewManagerService.registerWebview(this.id, webContentsId, { + extensionLocation: this.extension?.location.toJSON(), + localResourceRoots: this._localResourceRoots.map(x => x.toJSON()), + remoteConnectionData: remoteConnectionData, + portMappings: this._portMappings, + }); + + this._logService.debug(`WebviewResourceRequestManager(${this.id}): did register`); + }); + + if (remoteAuthority) { + this._register(remoteAuthorityResolverService.onDidChangeConnectionData(() => { + const update = this._webviewManagerService.updateWebviewMetadata(this.id, { + remoteConnectionData: remoteAuthority ? remoteAuthorityResolverService.getConnectionData(remoteAuthority) : null, + }); + this._ready = this._ready.then(() => update); + })); + } + + this._register(toDisposable(() => this._webviewManagerService.unregisterWebview(this.id))); + } + + public update(options: WebviewContentOptions) { + const localResourceRoots = options.localResourceRoots || []; + const portMappings = options.portMapping || []; + + if (!this.needsUpdate(localResourceRoots, portMappings)) { + return; + } + + this._localResourceRoots = localResourceRoots; + this._portMappings = portMappings; + + this._logService.debug(`WebviewResourceRequestManager(${this.id}): will update`); + + const update = this._webviewManagerService.updateWebviewMetadata(this.id, { + localResourceRoots: localResourceRoots.map(x => x.toJSON()), + portMappings: portMappings, + }).then(() => { + this._logService.debug(`WebviewResourceRequestManager(${this.id}): did update`); + }); + + this._ready = this._ready.then(() => update); + } + + private needsUpdate( + localResourceRoots: readonly URI[], + portMappings: readonly modes.IWebviewPortMapping[], + ): boolean { + return !( + equals(this._localResourceRoots, localResourceRoots, (a, b) => a.toString() === b.toString()) + && equals(this._portMappings, portMappings, (a, b) => a.extensionHostPort === b.extensionHostPort && a.webviewPort === b.webviewPort) + ); + } + + public ensureReady(): Promise { + return this._ready; + } +} diff --git a/src/vs/workbench/contrib/webview/electron-browser/webview.contribution.ts b/src/vs/workbench/contrib/webview/electron-browser/webview.contribution.ts index 102038662e..72349abc70 100644 --- a/src/vs/workbench/contrib/webview/electron-browser/webview.contribution.ts +++ b/src/vs/workbench/contrib/webview/electron-browser/webview.contribution.ts @@ -3,15 +3,17 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { isMacintosh } from 'vs/base/common/platform'; -import { SyncActionDescriptor, registerAction2 } from 'vs/platform/actions/common/actions'; -import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; +import { MultiCommand, RedoCommand, SelectAllCommand, UndoCommand } from 'vs/editor/browser/editorExtensions'; +import { CopyAction, CutAction, PasteAction } from 'vs/editor/contrib/clipboard/clipboard'; +import { SyncActionDescriptor } from 'vs/platform/actions/common/actions'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; +import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; import { Registry } from 'vs/platform/registry/common/platform'; import { Extensions as ActionExtensions, IWorkbenchActionRegistry } from 'vs/workbench/common/actions'; -import { IWebviewService, webviewDeveloperCategory } from 'vs/workbench/contrib/webview/browser/webview'; -import { WebviewEditor } from 'vs/workbench/contrib/webview/browser/webviewEditor'; +import { IWebviewService, webviewDeveloperCategory, WebviewOverlay } from 'vs/workbench/contrib/webview/browser/webview'; +import { getFocusedWebviewEditor } from 'vs/workbench/contrib/webview/browser/webviewCommands'; import * as webviewCommands from 'vs/workbench/contrib/webview/electron-browser/webviewCommands'; +import { ElectronWebviewBasedWebview } from 'vs/workbench/contrib/webview/electron-browser/webviewElement'; import { ElectronWebviewService } from 'vs/workbench/contrib/webview/electron-browser/webviewService'; registerSingleton(IWebviewService, ElectronWebviewService, true); @@ -23,17 +25,40 @@ actionRegistry.registerWorkbenchAction( webviewCommands.OpenWebviewDeveloperToolsAction.ALIAS, webviewDeveloperCategory); -function registerWebViewCommands(editorId: string): void { - const contextKeyExpr = ContextKeyExpr.and(ContextKeyExpr.equals('activeEditor', editorId), ContextKeyExpr.not('editorFocus') /* https://github.com/Microsoft/vscode/issues/58668 */)!; - - // These commands are only needed on MacOS where we have to disable the menu bar commands - if (isMacintosh) { - registerAction2(class extends webviewCommands.CopyWebviewEditorCommand { constructor() { super(contextKeyExpr); } }); - registerAction2(class extends webviewCommands.PasteWebviewEditorCommand { constructor() { super(contextKeyExpr); } }); - registerAction2(class extends webviewCommands.CutWebviewEditorCommand { constructor() { super(contextKeyExpr); } }); - registerAction2(class extends webviewCommands.UndoWebviewEditorCommand { constructor() { super(contextKeyExpr); } }); - registerAction2(class extends webviewCommands.RedoWebviewEditorCommand { constructor() { super(contextKeyExpr); } }); +function getActiveElectronBasedWebview(accessor: ServicesAccessor): ElectronWebviewBasedWebview | undefined { + const webview = getFocusedWebviewEditor(accessor); + if (!webview) { + return undefined; } + + if (webview instanceof ElectronWebviewBasedWebview) { + return webview; + } else if ('getInnerWebview' in (webview as WebviewOverlay)) { + const innerWebview = (webview as WebviewOverlay).getInnerWebview(); + if (innerWebview instanceof ElectronWebviewBasedWebview) { + return innerWebview; + } + } + + return undefined; } -registerWebViewCommands(WebviewEditor.ID); +const PRIORITY = 100; + +function overrideCommandForWebview(command: MultiCommand | undefined, f: (webview: ElectronWebviewBasedWebview) => void) { + command?.addImplementation(PRIORITY, accessor => { + const webview = getActiveElectronBasedWebview(accessor); + if (webview) { + f(webview); + return true; + } + return false; + }); +} + +overrideCommandForWebview(UndoCommand, webview => webview.undo()); +overrideCommandForWebview(RedoCommand, webview => webview.redo()); +overrideCommandForWebview(SelectAllCommand, webview => webview.selectAll()); +overrideCommandForWebview(CopyAction, webview => webview.copy()); +overrideCommandForWebview(PasteAction, webview => webview.paste()); +overrideCommandForWebview(CutAction, webview => webview.cut()); diff --git a/src/vs/workbench/contrib/webview/electron-browser/webviewCommands.ts b/src/vs/workbench/contrib/webview/electron-browser/webviewCommands.ts index fd75f64588..9a5c5a5ce2 100644 --- a/src/vs/workbench/contrib/webview/electron-browser/webviewCommands.ts +++ b/src/vs/workbench/contrib/webview/electron-browser/webviewCommands.ts @@ -5,16 +5,7 @@ import { WebviewTag } from 'electron'; import { Action } from 'vs/base/common/actions'; -import { KeyCode, KeyMod } from 'vs/base/common/keyCodes'; -import { ServicesAccessor } from 'vs/editor/browser/editorExtensions'; import * as nls from 'vs/nls'; -import { Action2 } from 'vs/platform/actions/common/actions'; -import { ContextKeyExpr, ContextKeyExpression } from 'vs/platform/contextkey/common/contextkey'; -import { InputFocusedContextKey } from 'vs/platform/contextkey/common/contextkeys'; -import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry'; -import { WebviewOverlay, webviewHasOwnEditFunctionsContextKey } from 'vs/workbench/contrib/webview/browser/webview'; -import { getActiveWebviewEditor } from 'vs/workbench/contrib/webview/browser/webviewCommands'; -import { ElectronWebviewBasedWebview } from 'vs/workbench/contrib/webview/electron-browser/webviewElement'; export class OpenWebviewDeveloperToolsAction extends Action { static readonly ID = 'workbench.action.webview.openDeveloperTools'; @@ -37,128 +28,3 @@ export class OpenWebviewDeveloperToolsAction extends Action { return true; } } - -export class CopyWebviewEditorCommand extends Action2 { - public static readonly ID = 'editor.action.webvieweditor.copy'; - public static readonly LABEL = nls.localize('editor.action.webvieweditor.copy', "Copy2"); - - constructor(contextKeyExpr: ContextKeyExpression, readonly getActiveElectronBasedWebviewDelegate: (accessor: ServicesAccessor) => ElectronWebviewBasedWebview | undefined = getActiveElectronBasedWebview) { - super({ - id: CopyWebviewEditorCommand.ID, - title: CopyWebviewEditorCommand.LABEL, - keybinding: { - when: ContextKeyExpr.and(contextKeyExpr, ContextKeyExpr.not(InputFocusedContextKey)), - primary: KeyMod.CtrlCmd | KeyCode.KEY_C, - weight: KeybindingWeight.EditorContrib - } - }); - } - - public run(accessor: ServicesAccessor): void { - this.getActiveElectronBasedWebviewDelegate(accessor)?.copy(); - } -} - -export class PasteWebviewEditorCommand extends Action2 { - public static readonly ID = 'editor.action.webvieweditor.paste'; - public static readonly LABEL = nls.localize('editor.action.webvieweditor.paste', 'Paste'); - - constructor(contextKeyExpr: ContextKeyExpression, readonly getActiveElectronBasedWebviewDelegate: (accessor: ServicesAccessor) => ElectronWebviewBasedWebview | undefined = getActiveElectronBasedWebview) { - super({ - id: PasteWebviewEditorCommand.ID, - title: PasteWebviewEditorCommand.LABEL, - keybinding: { - when: ContextKeyExpr.and(contextKeyExpr, ContextKeyExpr.not(InputFocusedContextKey)), - primary: KeyMod.CtrlCmd | KeyCode.KEY_V, - weight: KeybindingWeight.EditorContrib - } - }); - } - - public run(accessor: ServicesAccessor): void { - this.getActiveElectronBasedWebviewDelegate(accessor)?.paste(); - } -} - -export class CutWebviewEditorCommand extends Action2 { - public static readonly ID = 'editor.action.webvieweditor.cut'; - public static readonly LABEL = nls.localize('editor.action.webvieweditor.cut', 'Cut'); - - constructor(contextKeyExpr: ContextKeyExpression, readonly getActiveElectronBasedWebviewDelegate: (accessor: ServicesAccessor) => ElectronWebviewBasedWebview | undefined = getActiveElectronBasedWebview) { - super({ - id: CutWebviewEditorCommand.ID, - title: CutWebviewEditorCommand.LABEL, - keybinding: { - when: ContextKeyExpr.and(contextKeyExpr, ContextKeyExpr.not(InputFocusedContextKey)), - primary: KeyMod.CtrlCmd | KeyCode.KEY_X, - weight: KeybindingWeight.EditorContrib - } - }); - } - - public run(accessor: ServicesAccessor): void { - this.getActiveElectronBasedWebviewDelegate(accessor)?.cut(); - } -} - -export class UndoWebviewEditorCommand extends Action2 { - public static readonly ID = 'editor.action.webvieweditor.undo'; - public static readonly LABEL = nls.localize('editor.action.webvieweditor.undo', "Undo"); - - constructor(contextKeyExpr: ContextKeyExpression, readonly getActiveElectronBasedWebviewDelegate: (accessor: ServicesAccessor) => ElectronWebviewBasedWebview | undefined = getActiveElectronBasedWebview) { - super({ - id: UndoWebviewEditorCommand.ID, - title: UndoWebviewEditorCommand.LABEL, - keybinding: { - when: ContextKeyExpr.and(contextKeyExpr, ContextKeyExpr.not(InputFocusedContextKey), ContextKeyExpr.not(webviewHasOwnEditFunctionsContextKey)), - primary: KeyMod.CtrlCmd | KeyCode.KEY_Z, - weight: KeybindingWeight.EditorContrib - } - }); - } - - public run(accessor: ServicesAccessor): void { - this.getActiveElectronBasedWebviewDelegate(accessor)?.undo(); - } -} - -export class RedoWebviewEditorCommand extends Action2 { - public static readonly ID = 'editor.action.webvieweditor.redo'; - public static readonly LABEL = nls.localize('editor.action.webvieweditor.redo', "Redo"); - - constructor(contextKeyExpr: ContextKeyExpression, readonly getActiveElectronBasedWebviewDelegate: (accessor: ServicesAccessor) => ElectronWebviewBasedWebview | undefined = getActiveElectronBasedWebview) { - super({ - id: RedoWebviewEditorCommand.ID, - title: RedoWebviewEditorCommand.LABEL, - keybinding: { - when: ContextKeyExpr.and(contextKeyExpr, ContextKeyExpr.not(InputFocusedContextKey), ContextKeyExpr.not(webviewHasOwnEditFunctionsContextKey)), - primary: KeyMod.CtrlCmd | KeyCode.KEY_Y, - secondary: [KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KEY_Z], - mac: { primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KEY_Z }, - weight: KeybindingWeight.EditorContrib - } - }); - } - - public run(accessor: ServicesAccessor): void { - this.getActiveElectronBasedWebviewDelegate(accessor)?.redo(); - } -} - -function getActiveElectronBasedWebview(accessor: ServicesAccessor): ElectronWebviewBasedWebview | undefined { - const webview = getActiveWebviewEditor(accessor); - if (!webview) { - return undefined; - } - - if (webview instanceof ElectronWebviewBasedWebview) { - return webview; - } else if ('getInnerWebview' in (webview as WebviewOverlay)) { - const innerWebview = (webview as WebviewOverlay).getInnerWebview(); - if (innerWebview instanceof ElectronWebviewBasedWebview) { - return innerWebview; - } - } - - return undefined; -} diff --git a/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts b/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts index 931f2f29bd..66dad11ee8 100644 --- a/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts +++ b/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts @@ -5,22 +5,19 @@ import { FindInPageOptions, WebviewTag } from 'electron'; import { addDisposableListener } from 'vs/base/browser/dom'; -import { equals } from 'vs/base/common/arrays'; import { ThrottledDelayer } from 'vs/base/common/async'; import { Emitter, Event } from 'vs/base/common/event'; import { once } from 'vs/base/common/functional'; -import { Disposable, DisposableStore, IDisposable, toDisposable } from 'vs/base/common/lifecycle'; +import { DisposableStore, IDisposable, toDisposable } from 'vs/base/common/lifecycle'; import { Schemas } from 'vs/base/common/network'; import { isMacintosh } from 'vs/base/common/platform'; import { URI } from 'vs/base/common/uri'; import { createChannelSender } from 'vs/base/parts/ipc/common/ipc'; -import * as modes from 'vs/editor/common/modes'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IMainProcessService } from 'vs/platform/ipc/electron-sandbox/mainProcessService'; import { ILogService } from 'vs/platform/log/common/log'; -import { IRemoteAuthorityResolverService } from 'vs/platform/remote/common/remoteAuthorityResolver'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { webviewPartitionId } from 'vs/platform/webview/common/resourceLoader'; import { IWebviewManagerService } from 'vs/platform/webview/common/webviewManagerService'; @@ -29,97 +26,7 @@ import { WebviewThemeDataProvider } from 'vs/workbench/contrib/webview/browser/t import { Webview, WebviewContentOptions, WebviewExtensionDescription, WebviewOptions } from 'vs/workbench/contrib/webview/browser/webview'; import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; import { WebviewFindDelegate, WebviewFindWidget } from '../browser/webviewFindWidget'; - -class WebviewResourceRequestManager extends Disposable { - - private readonly _webviewManagerService: IWebviewManagerService; - - private _localResourceRoots: ReadonlyArray; - private _portMappings: ReadonlyArray; - - private _ready?: Promise; - - constructor( - private readonly id: string, - private readonly extension: WebviewExtensionDescription | undefined, - webview: WebviewTag, - initialContentOptions: WebviewContentOptions, - @ILogService private readonly _logService: ILogService, - @IRemoteAuthorityResolverService remoteAuthorityResolverService: IRemoteAuthorityResolverService, - @IWorkbenchEnvironmentService environmentService: IWorkbenchEnvironmentService, - @IMainProcessService mainProcessService: IMainProcessService, - ) { - super(); - - this._logService.debug(`WebviewResourceRequestManager(${this.id}): init`); - - this._webviewManagerService = createChannelSender(mainProcessService.getChannel('webview')); - - this._localResourceRoots = initialContentOptions.localResourceRoots || []; - this._portMappings = initialContentOptions.portMapping || []; - - const remoteAuthority = environmentService.configuration.remoteAuthority; - const remoteConnectionData = remoteAuthority ? remoteAuthorityResolverService.getConnectionData(remoteAuthority) : null; - - this._ready = new Promise(resolve => { - this._register(addDisposableListener(webview!, 'did-start-loading', once(() => { - this._logService.debug(`WebviewResourceRequestManager(${this.id}): did-start-loading`); - - const webContentsId = webview.getWebContentsId(); - - this._webviewManagerService.registerWebview(this.id, webContentsId, { - extensionLocation: this.extension?.location.toJSON(), - localResourceRoots: this._localResourceRoots.map(x => x.toJSON()), - remoteConnectionData: remoteConnectionData, - portMappings: this._portMappings, - }).then(() => { - this._logService.debug(`WebviewResourceRequestManager(${this.id}): did register`); - }).finally(() => resolve()); - }))); - }); - - if (remoteAuthority) { - this._register(remoteAuthorityResolverService.onDidChangeConnectionData(() => { - const update = this._webviewManagerService.updateWebviewMetadata(this.id, { - remoteConnectionData: remoteAuthority ? remoteAuthorityResolverService.getConnectionData(remoteAuthority) : null, - }); - this._ready = this._ready?.then(() => update); - })); - } - - this._register(toDisposable(() => this._webviewManagerService.unregisterWebview(this.id))); - } - - public update(options: WebviewContentOptions) { - const localResourceRoots = options.localResourceRoots || []; - const portMappings = options.portMapping || []; - - if ( - equals(this._localResourceRoots, localResourceRoots, (a, b) => a.toString() === b.toString()) - && equals(this._portMappings, portMappings, (a, b) => a.extensionHostPort === b.extensionHostPort && a.webviewPort === b.webviewPort) - ) { - return; - } - - this._localResourceRoots = localResourceRoots; - this._portMappings = portMappings; - - this._logService.debug(`WebviewResourceRequestManager(${this.id}): will update`); - - const update = this._webviewManagerService.updateWebviewMetadata(this.id, { - localResourceRoots: localResourceRoots.map(x => x.toJSON()), - portMappings: portMappings, - }).then(() => { - this._logService.debug(`WebviewResourceRequestManager(${this.id}): did update`); - }); - - this._ready = this._ready?.then(() => update); - } - - async synchronize(): Promise { - return this._ready; - } -} +import { WebviewResourceRequestManager, rewriteVsCodeResourceUrls } from './resourceLoading'; class WebviewKeyboardHandler { @@ -222,9 +129,19 @@ export class ElectronWebviewBasedWebview extends BaseWebview impleme this._myLogService.debug(`Webview(${this.id}): init`); - this._resourceRequestManager = this._register(instantiationService.createInstance(WebviewResourceRequestManager, id, extension, this.element!, this.content.options)); + const webviewId = new Promise((resolve, reject) => { + const sub = this._register(addDisposableListener(this.element!, 'dom-ready', once(() => { + if (!this.element) { + reject(); + throw new Error('No element'); + } + resolve(this.element.getWebContentsId()); + sub.dispose(); + }))); + }); + this._resourceRequestManager = this._register(instantiationService.createInstance(WebviewResourceRequestManager, id, extension, this.content.options, webviewId)); - this._register(addDisposableListener(this.element!, 'did-start-loading', once(() => { + this._register(addDisposableListener(this.element!, 'dom-ready', once(() => { this._register(ElectronWebviewBasedWebview.getWebviewKeyboardHandler(configurationService, mainProcessService).add(this.element!)); }))); @@ -289,7 +206,7 @@ export class ElectronWebviewBasedWebview extends BaseWebview impleme } this.element!.preload = require.toUrl('./pre/electron-index.js'); - this.element!.src = 'data:text/html;charset=utf-8,%3C%21DOCTYPE%20html%3E%0D%0A%3Chtml%20lang%3D%22en%22%20style%3D%22width%3A%20100%25%3B%20height%3A%20100%25%22%3E%0D%0A%3Chead%3E%0D%0A%3Ctitle%3EVirtual%20Document%3C%2Ftitle%3E%0D%0A%3C%2Fhead%3E%0D%0A%3Cbody%20style%3D%22margin%3A%200%3B%20overflow%3A%20hidden%3B%20width%3A%20100%25%3B%20height%3A%20100%25%22%20role%3D%22document%22%3E%0D%0A%3C%2Fbody%3E%0D%0A%3C%2Fhtml%3E'; + this.element!.src = `${Schemas.vscodeWebview}://${this.id}/electron-browser/index.html`; } protected createElement(options: WebviewOptions) { @@ -301,6 +218,7 @@ export class ElectronWebviewBasedWebview extends BaseWebview impleme element.focus = () => { this.doFocus(); }; + element.setAttribute('partition', webviewPartitionId); element.setAttribute('webpreferences', 'contextIsolation=yes'); element.className = `webview ${options.customClasses || ''}`; @@ -332,24 +250,9 @@ export class ElectronWebviewBasedWebview extends BaseWebview impleme public set html(value: string) { this._myLogService.debug(`Webview(${this.id}): will set html`); - super.html = this.preprocessHtml(value); + super.html = rewriteVsCodeResourceUrls(this.id, value); } - private preprocessHtml(value: string): string { - return value - .replace(/(["'])vscode-resource:(\/\/([^\s\/'"]+?)(?=\/))?([^\s'"]+?)(["'])/gi, (match, startQuote, _1, scheme, path, endQuote) => { - if (scheme) { - return `${startQuote}${Schemas.vscodeWebviewResource}://${this.id}/${scheme}${path}${endQuote}`; - } - if (!path.startsWith('//')) { - // Add an empty authority if we don't already have one - path = '//' + path; - } - return `${startQuote}${Schemas.vscodeWebviewResource}://${this.id}/file${path}${endQuote}`; - }); - } - - public mountTo(parent: HTMLElement) { if (!this.element) { return; @@ -365,7 +268,7 @@ export class ElectronWebviewBasedWebview extends BaseWebview impleme this._myLogService.debug(`Webview(${this.id}): will post message on '${channel}'`); this._messagePromise = this._messagePromise - .then(() => this._resourceRequestManager.synchronize()) + .then(() => this._resourceRequestManager.ensureReady()) .then(() => { this._myLogService.debug(`Webview(${this.id}): did post message on '${channel}'`); return this.element?.send(channel, data); diff --git a/src/vs/workbench/contrib/webview/electron-browser/webviewService.ts b/src/vs/workbench/contrib/webview/electron-browser/webviewService.ts index fa4e249238..05514a391a 100644 --- a/src/vs/workbench/contrib/webview/electron-browser/webviewService.ts +++ b/src/vs/workbench/contrib/webview/electron-browser/webviewService.ts @@ -6,10 +6,10 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { DynamicWebviewEditorOverlay } from 'vs/workbench/contrib/webview/browser/dynamicWebviewEditorOverlay'; -import { IWebviewService, WebviewContentOptions, WebviewElement, WebviewExtensionDescription, WebviewIcons, WebviewOptions, WebviewOverlay } from 'vs/workbench/contrib/webview/browser/webview'; -import { IFrameWebview } from 'vs/workbench/contrib/webview/browser/webviewElement'; -import { WebviewIconManager } from 'vs/workbench/contrib/webview/browser/webviewIconManager'; import { WebviewThemeDataProvider } from 'vs/workbench/contrib/webview/browser/themeing'; +import { IWebviewService, WebviewContentOptions, WebviewElement, WebviewExtensionDescription, WebviewIcons, WebviewOptions, WebviewOverlay } from 'vs/workbench/contrib/webview/browser/webview'; +import { WebviewIconManager } from 'vs/workbench/contrib/webview/browser/webviewIconManager'; +import { ElectronIframeWebview } from 'vs/workbench/contrib/webview/electron-browser/iframeWebviewElement'; import { ElectronWebviewBasedWebview } from 'vs/workbench/contrib/webview/electron-browser/webviewElement'; export class ElectronWebviewService implements IWebviewService { @@ -32,12 +32,8 @@ export class ElectronWebviewService implements IWebviewService { contentOptions: WebviewContentOptions, extension: WebviewExtensionDescription | undefined, ): WebviewElement { - const useExternalEndpoint = this._configService.getValue('webview.experimental.useExternalEndpoint'); - if (useExternalEndpoint) { - return this._instantiationService.createInstance(IFrameWebview, id, options, contentOptions, extension, this._webviewThemeDataProvider); - } else { - return this._instantiationService.createInstance(ElectronWebviewBasedWebview, id, options, contentOptions, extension, this._webviewThemeDataProvider); - } + const useIframes = this._configService.getValue('webview.experimental.useIframes'); + return this._instantiationService.createInstance(useIframes ? ElectronIframeWebview : ElectronWebviewBasedWebview, id, options, contentOptions, extension, this._webviewThemeDataProvider); } createWebviewOverlay( diff --git a/src/vs/workbench/contrib/welcome/page/browser/vs_code_welcome_page.ts b/src/vs/workbench/contrib/welcome/page/browser/vs_code_welcome_page.ts index 18aae9d64c..a113c260f9 100644 --- a/src/vs/workbench/contrib/welcome/page/browser/vs_code_welcome_page.ts +++ b/src/vs/workbench/contrib/welcome/page/browser/vs_code_welcome_page.ts @@ -40,7 +40,7 @@ export default () => `
  • ${escape(localize('welcomePage.tipsAndTricks', "Tips and Tricks"))}
  • ${escape(localize('welcomePage.productDocumentation', "Product documentation"))}
  • ${escape(localize('welcomePage.gitHubRepository', "GitHub repository"))}
  • -
  • ${escape(localize('welcomePage.stackOverflow', "Stack Overflow"))}
  • +
  • ${escape(localize('welcomePage.stackOverflow', "Stack Overflow"))}
  • ${escape(localize('welcomePage.newsletterSignup', "Join our Newsletter"))}
  • diff --git a/src/vs/workbench/electron-browser/actions/developerActions.ts b/src/vs/workbench/electron-browser/actions/developerActions.ts index 6d034ef725..f5d386c8f8 100644 --- a/src/vs/workbench/electron-browser/actions/developerActions.ts +++ b/src/vs/workbench/electron-browser/actions/developerActions.ts @@ -30,5 +30,5 @@ export class ToggleSharedProcessAction extends Action { const registry = Registry.as(Extensions.WorkbenchActions); -const developerCategory = nls.localize('developer', "Developer"); +const developerCategory = nls.localize({ key: 'developer', comment: ['A developer on Code itself or someone diagnosing issues in Code'] }, "Developer"); registry.registerWorkbenchAction(SyncActionDescriptor.from(ToggleSharedProcessAction), 'Developer: Toggle Shared Process', developerCategory); diff --git a/src/vs/workbench/electron-browser/window.ts b/src/vs/workbench/electron-browser/window.ts index 36d8fcaff7..bccf793a89 100644 --- a/src/vs/workbench/electron-browser/window.ts +++ b/src/vs/workbench/electron-browser/window.ts @@ -65,6 +65,7 @@ import { Event } from 'vs/base/common/event'; import { INativeWorkbenchEnvironmentService } from 'vs/workbench/services/environment/electron-browser/environmentService'; import { clearAllFontInfos } from 'vs/editor/browser/config/configuration'; import { IRemoteAuthorityResolverService } from 'vs/platform/remote/common/remoteAuthorityResolver'; +import { IAddressProvider, IAddress } from 'vs/platform/remote/common/remoteAgentConnection'; export class NativeWindow extends Disposable { @@ -138,7 +139,7 @@ export class NativeWindow extends Disposable { if (request.from === 'touchbar') { const activeEditor = this.editorService.activeEditor; if (activeEditor) { - const resource = toResource(activeEditor, { supportSideBySide: SideBySideEditor.MASTER }); + const resource = toResource(activeEditor, { supportSideBySide: SideBySideEditor.PRIMARY }); if (resource) { args.push(resource); } @@ -250,7 +251,7 @@ export class NativeWindow extends Disposable { // macOS OS integration if (isMacintosh) { this._register(this.editorService.onDidActiveEditorChange(() => { - const file = toResource(this.editorService.activeEditor, { supportSideBySide: SideBySideEditor.MASTER, filterByScheme: Schemas.file }); + const file = toResource(this.editorService.activeEditor, { supportSideBySide: SideBySideEditor.PRIMARY, filterByScheme: Schemas.file }); // Represented Filename this.updateRepresentedFilename(file?.fsPath); @@ -473,8 +474,13 @@ export class NativeWindow extends Disposable { if (options?.allowTunneling) { const portMappingRequest = extractLocalHostUriMetaDataForPortMapping(uri); if (portMappingRequest) { - const resolvedRemote = this.environmentService.configuration.remoteAuthority ? await this.remoteAuthorityResolverService.resolveAuthority(this.environmentService.configuration.remoteAuthority) : undefined; - const tunnel = await this.tunnelService.openTunnel(resolvedRemote?.authority, undefined, portMappingRequest.port); + const remoteAuthority = this.environmentService.configuration.remoteAuthority; + const addressProvider: IAddressProvider | undefined = remoteAuthority ? { + getAddress: async (): Promise => { + return (await this.remoteAuthorityResolverService.resolveAuthority(remoteAuthority)).authority; + } + } : undefined; + const tunnel = await this.tunnelService.openTunnel(addressProvider, undefined, portMappingRequest.port); if (tunnel) { return { resolved: uri.with({ authority: `127.0.0.1:${tunnel.tunnelLocalPort}` }), diff --git a/src/vs/workbench/electron-sandbox/desktop.contribution.ts b/src/vs/workbench/electron-sandbox/desktop.contribution.ts index 238c7bfbaa..5e03711455 100644 --- a/src/vs/workbench/electron-sandbox/desktop.contribution.ts +++ b/src/vs/workbench/electron-sandbox/desktop.contribution.ts @@ -92,7 +92,7 @@ import { InstallVSIXAction } from 'vs/workbench/contrib/extensions/browser/exten // Actions: Developer (function registerDeveloperActions(): void { - const developerCategory = nls.localize('developer', "Developer"); + const developerCategory = nls.localize({ key: 'developer', comment: ['A developer on Code itself or someone diagnosing issues in Code'] }, "Developer"); registry.registerWorkbenchAction(SyncActionDescriptor.from(ReloadWindowWithExtensionsDisabledAction), 'Developer: Reload With Extensions Disabled', developerCategory); registry.registerWorkbenchAction(SyncActionDescriptor.from(ToggleDevToolsAction), 'Developer: Toggle Developer Tools', developerCategory); diff --git a/src/vs/workbench/services/authentication/browser/authenticationService.ts b/src/vs/workbench/services/authentication/browser/authenticationService.ts index 5cf3eb26e5..eb81b3d8e8 100644 --- a/src/vs/workbench/services/authentication/browser/authenticationService.ts +++ b/src/vs/workbench/services/authentication/browser/authenticationService.ts @@ -237,7 +237,13 @@ export class AuthenticationService extends Disposable implements IAuthentication group: '2_signInRequests', command: { id: `${extensionId}signIn`, - title: nls.localize('signInRequest', "Sign in to use {0} (1)", extensionName) + title: nls.localize( + { + key: 'signInRequest', + comment: ['The placeholder {0} will be replaced with an extension name. (1) is to indicate that this menu item contributes to a badge count.'] + }, + "Sign in to use {0} (1)", + extensionName) } }); diff --git a/src/vs/workbench/services/bulkEdit/browser/bulkEditService.ts b/src/vs/workbench/services/bulkEdit/browser/bulkEditService.ts index 0ccd031e7d..af111d237a 100644 --- a/src/vs/workbench/services/bulkEdit/browser/bulkEditService.ts +++ b/src/vs/workbench/services/bulkEdit/browser/bulkEditService.ts @@ -3,243 +3,20 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { mergeSort } from 'vs/base/common/arrays'; -import { dispose, IDisposable, IReference, toDisposable } from 'vs/base/common/lifecycle'; -import { URI } from 'vs/base/common/uri'; +import { localize } from 'vs/nls'; +import { IDisposable, toDisposable } from 'vs/base/common/lifecycle'; import { ICodeEditor, isCodeEditor } from 'vs/editor/browser/editorBrowser'; import { IBulkEditOptions, IBulkEditResult, IBulkEditService, IBulkEditPreviewHandler } from 'vs/editor/browser/services/bulkEditService'; -import { EditOperation } from 'vs/editor/common/core/editOperation'; -import { Range } from 'vs/editor/common/core/range'; -import { Selection } from 'vs/editor/common/core/selection'; -import { EndOfLineSequence, IIdentifiedSingleEditOperation, ITextModel } from 'vs/editor/common/model'; import { WorkspaceFileEdit, WorkspaceTextEdit, WorkspaceEdit } from 'vs/editor/common/modes'; -import { IModelService } from 'vs/editor/common/services/modelService'; -import { ITextModelService, IResolvedTextEditorModel } from 'vs/editor/common/services/resolverService'; -import { localize } from 'vs/nls'; -import { IFileService, FileSystemProviderCapabilities } from 'vs/platform/files/common/files'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { ILogService } from 'vs/platform/log/common/log'; import { IProgress, IProgressStep, Progress } from 'vs/platform/progress/common/progress'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; -import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles'; -import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { EditorOption } from 'vs/editor/common/config/editorOptions'; -import { IEditorWorkerService } from 'vs/editor/common/services/editorWorkerService'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; -import { IWorkingCopyFileService } from 'vs/workbench/services/workingCopy/common/workingCopyFileService'; -import { IUndoRedoService } from 'vs/platform/undoRedo/common/undoRedo'; -import { SingleModelEditStackElement, MultiModelEditStackElement } from 'vs/editor/common/model/editStack'; - -type ValidationResult = { canApply: true } | { canApply: false, reason: URI }; - -class ModelEditTask implements IDisposable { - - public readonly model: ITextModel; - - protected _edits: IIdentifiedSingleEditOperation[]; - private _expectedModelVersionId: number | undefined; - protected _newEol: EndOfLineSequence | undefined; - - constructor(private readonly _modelReference: IReference) { - this.model = this._modelReference.object.textEditorModel; - this._edits = []; - } - - dispose() { - this._modelReference.dispose(); - } - - addEdit(resourceEdit: WorkspaceTextEdit): void { - this._expectedModelVersionId = resourceEdit.modelVersionId; - const { edit } = resourceEdit; - - if (typeof edit.eol === 'number') { - // honor eol-change - this._newEol = edit.eol; - } - if (!edit.range && !edit.text) { - // lacks both a range and the text - return; - } - if (Range.isEmpty(edit.range) && !edit.text) { - // no-op edit (replace empty range with empty text) - return; - } - - // create edit operation - let range: Range; - if (!edit.range) { - range = this.model.getFullModelRange(); - } else { - range = Range.lift(edit.range); - } - this._edits.push(EditOperation.replaceMove(range, edit.text)); - } - - validate(): ValidationResult { - if (typeof this._expectedModelVersionId === 'undefined' || this.model.getVersionId() === this._expectedModelVersionId) { - return { canApply: true }; - } - return { canApply: false, reason: this.model.uri }; - } - - getBeforeCursorState(): Selection[] | null { - return null; - } - - apply(): void { - if (this._edits.length > 0) { - this._edits = mergeSort(this._edits, (a, b) => Range.compareRangesUsingStarts(a.range, b.range)); - this.model.pushEditOperations(null, this._edits, () => null); - } - if (this._newEol !== undefined) { - this.model.pushEOL(this._newEol); - } - } -} - -class EditorEditTask extends ModelEditTask { - - private _editor: ICodeEditor; - - constructor(modelReference: IReference, editor: ICodeEditor) { - super(modelReference); - this._editor = editor; - } - - getBeforeCursorState(): Selection[] | null { - return this._editor.getSelections(); - } - - apply(): void { - if (this._edits.length > 0) { - this._edits = mergeSort(this._edits, (a, b) => Range.compareRangesUsingStarts(a.range, b.range)); - this._editor.executeEdits('', this._edits); - } - if (this._newEol !== undefined) { - if (this._editor.hasModel()) { - this._editor.getModel().pushEOL(this._newEol); - } - } - } -} - -class BulkEditModel implements IDisposable { - - private _edits = new Map(); - private _tasks: ModelEditTask[] | undefined; - - constructor( - private readonly _label: string | undefined, - private readonly _editor: ICodeEditor | undefined, - private readonly _progress: IProgress, - edits: WorkspaceTextEdit[], - @IEditorWorkerService private readonly _editorWorker: IEditorWorkerService, - @ITextModelService private readonly _textModelResolverService: ITextModelService, - @IUndoRedoService private readonly _undoRedoService: IUndoRedoService - ) { - edits.forEach(this._addEdit, this); - } - - dispose(): void { - if (this._tasks) { - dispose(this._tasks); - } - } - - private _addEdit(edit: WorkspaceTextEdit): void { - let array = this._edits.get(edit.resource.toString()); - if (!array) { - array = []; - this._edits.set(edit.resource.toString(), array); - } - array.push(edit); - } - - async prepare(): Promise { - - if (this._tasks) { - throw new Error('illegal state - already prepared'); - } - - this._tasks = []; - const promises: Promise[] = []; - - for (let [key, value] of this._edits) { - const promise = this._textModelResolverService.createModelReference(URI.parse(key)).then(async ref => { - let task: ModelEditTask; - let makeMinimal = false; - if (this._editor && this._editor.hasModel() && this._editor.getModel().uri.toString() === ref.object.textEditorModel.uri.toString()) { - task = new EditorEditTask(ref, this._editor); - makeMinimal = true; - } else { - task = new ModelEditTask(ref); - } - - for (const edit of value) { - if (makeMinimal) { - const newEdits = await this._editorWorker.computeMoreMinimalEdits(edit.resource, [edit.edit]); - if (!newEdits) { - task.addEdit(edit); - } else { - for (let moreMinialEdit of newEdits) { - task.addEdit({ ...edit, edit: moreMinialEdit }); - } - } - } else { - task.addEdit(edit); - } - } - - this._tasks!.push(task); - this._progress.report(undefined); - }); - promises.push(promise); - } - - await Promise.all(promises); - - return this; - } - - validate(): ValidationResult { - for (const task of this._tasks!) { - const result = task.validate(); - if (!result.canApply) { - return result; - } - } - return { canApply: true }; - } - - apply(): void { - const tasks = this._tasks!; - - if (tasks.length === 1) { - // This edit touches a single model => keep things simple - for (const task of tasks) { - task.model.pushStackElement(); - task.apply(); - task.model.pushStackElement(); - this._progress.report(undefined); - } - return; - } - - const multiModelEditStackElement = new MultiModelEditStackElement( - this._label || localize('workspaceEdit', "Workspace Edit"), - tasks.map(t => new SingleModelEditStackElement(t.model, t.getBeforeCursorState())) - ); - this._undoRedoService.pushElement(multiModelEditStackElement); - - for (const task of tasks) { - task.apply(); - this._progress.report(undefined); - } - - multiModelEditStackElement.close(); - } -} +import { BulkTextEdits } from 'vs/workbench/services/bulkEdit/browser/bulkTextEdits'; +import { BulkFileEdits } from 'vs/workbench/services/bulkEdit/browser/bulkFileEdits'; +import { ResourceMap } from 'vs/base/common/map'; type Edit = WorkspaceFileEdit | WorkspaceTextEdit; @@ -257,10 +34,6 @@ class BulkEdit { edits: Edit[], @IInstantiationService private readonly _instaService: IInstantiationService, @ILogService private readonly _logService: ILogService, - @IFileService private readonly _fileService: IFileService, - @ITextFileService private readonly _textFileService: ITextFileService, - @IWorkingCopyFileService private readonly _workingCopyFileService: IWorkingCopyFileService, - @IConfigurationService private readonly _configurationService: IConfigurationService ) { this._label = label; this._editor = editor; @@ -282,7 +55,7 @@ class BulkEdit { async perform(): Promise { - let seen = new Set(); + let seen = new ResourceMap(); let total = 0; const groups: Edit[][] = []; @@ -299,8 +72,8 @@ class BulkEdit { if (WorkspaceFileEdit.is(edit)) { total += 1; - } else if (!seen.has(edit.resource.toString())) { - seen.add(edit.resource.toString()); + } else if (!seen.has(edit.resource)) { + seen.set(edit.resource, true); total += 2; } } @@ -323,55 +96,14 @@ class BulkEdit { private async _performFileEdits(edits: WorkspaceFileEdit[], progress: IProgress) { this._logService.debug('_performFileEdits', JSON.stringify(edits)); - for (const edit of edits) { - progress.report(undefined); - - let options = edit.options || {}; - - if (edit.newUri && edit.oldUri) { - // rename - if (options.overwrite === undefined && options.ignoreIfExists && await this._fileService.exists(edit.newUri)) { - continue; // not overwriting, but ignoring, and the target file exists - } - await this._workingCopyFileService.move(edit.oldUri, edit.newUri, options.overwrite); - - } else if (!edit.newUri && edit.oldUri) { - // delete file - if (await this._fileService.exists(edit.oldUri)) { - let useTrash = this._configurationService.getValue('files.enableTrash'); - if (useTrash && !(this._fileService.hasCapability(edit.oldUri, FileSystemProviderCapabilities.Trash))) { - useTrash = false; // not supported by provider - } - await this._workingCopyFileService.delete(edit.oldUri, { useTrash, recursive: options.recursive }); - } else if (!options.ignoreIfNotExists) { - throw new Error(`${edit.oldUri} does not exist and can not be deleted`); - } - } else if (edit.newUri && !edit.oldUri) { - // create file - if (options.overwrite === undefined && options.ignoreIfExists && await this._fileService.exists(edit.newUri)) { - continue; // not overwriting, but ignoring, and the target file exists - } - await this._textFileService.create(edit.newUri, undefined, { overwrite: options.overwrite }); - } - } + const model = this._instaService.createInstance(BulkFileEdits, this._label || localize('workspaceEdit', "Workspace Edit"), progress, edits); + await model.apply(); } private async _performTextEdits(edits: WorkspaceTextEdit[], progress: IProgress): Promise { this._logService.debug('_performTextEdits', JSON.stringify(edits)); - - const model = this._instaService.createInstance(BulkEditModel, this._label, this._editor, progress, edits); - - await model.prepare(); - - // this._throwIfConflicts(conflicts); - const validationResult = model.validate(); - if (validationResult.canApply === false) { - model.dispose(); - throw new Error(`${validationResult.reason.toString()} has changed in the meantime`); - } - - model.apply(); - model.dispose(); + const model = this._instaService.createInstance(BulkTextEdits, this._label || localize('workspaceEdit', "Workspace Edit"), this._editor, progress, edits); + await model.apply(); } } @@ -384,7 +116,6 @@ export class BulkEditService implements IBulkEditService { constructor( @IInstantiationService private readonly _instaService: IInstantiationService, @ILogService private readonly _logService: ILogService, - @IModelService private readonly _modelService: IModelService, @IEditorService private readonly _editorService: IEditorService, ) { } @@ -413,18 +144,6 @@ export class BulkEditService implements IBulkEditService { const { edits } = edit; let codeEditor = options?.editor; - - // First check if loaded models were not changed in the meantime - for (const edit of edits) { - if (!WorkspaceFileEdit.is(edit) && typeof edit.modelVersionId === 'number') { - let model = this._modelService.getModel(edit.resource); - if (model && model.getVersionId() !== edit.modelVersionId) { - // model changed in the meantime - return Promise.reject(new Error(`${model.uri.toString()} has changed in the meantime`)); - } - } - } - // try to find code editor if (!codeEditor) { let candidate = this._editorService.activeTextEditorControl; diff --git a/src/vs/workbench/services/bulkEdit/browser/bulkFileEdits.ts b/src/vs/workbench/services/bulkEdit/browser/bulkFileEdits.ts new file mode 100644 index 0000000000..151044baf8 --- /dev/null +++ b/src/vs/workbench/services/bulkEdit/browser/bulkFileEdits.ts @@ -0,0 +1,180 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + + +import { WorkspaceFileEdit, WorkspaceFileEditOptions } from 'vs/editor/common/modes'; +import { IFileService, FileSystemProviderCapabilities } from 'vs/platform/files/common/files'; +import { IProgress } from 'vs/platform/progress/common/progress'; +import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; +import { IWorkingCopyFileService } from 'vs/workbench/services/workingCopy/common/workingCopyFileService'; +import { IWorkspaceUndoRedoElement, UndoRedoElementType, IUndoRedoService } from 'vs/platform/undoRedo/common/undoRedo'; +import { URI } from 'vs/base/common/uri'; +import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; +import { ILogService } from 'vs/platform/log/common/log'; +import { VSBuffer } from 'vs/base/common/buffer'; + +interface IFileOperation { + uris: URI[]; + perform(): Promise; +} + +class Noop implements IFileOperation { + readonly uris = []; + async perform() { return this; } +} + +class RenameOperation implements IFileOperation { + + constructor( + readonly newUri: URI, + readonly oldUri: URI, + readonly options: WorkspaceFileEditOptions, + @IWorkingCopyFileService private readonly _workingCopyFileService: IWorkingCopyFileService, + @IFileService private readonly _fileService: IFileService, + ) { } + + get uris() { + return [this.newUri, this.oldUri]; + } + + async perform(): Promise { + // rename + if (this.options.overwrite === undefined && this.options.ignoreIfExists && await this._fileService.exists(this.newUri)) { + return new Noop(); // not overwriting, but ignoring, and the target file exists + } + await this._workingCopyFileService.move([{ source: this.oldUri, target: this.newUri }], { overwrite: this.options.overwrite }); + return new RenameOperation(this.oldUri, this.newUri, this.options, this._workingCopyFileService, this._fileService); + } +} + +class CreateOperation implements IFileOperation { + + constructor( + readonly newUri: URI, + readonly options: WorkspaceFileEditOptions, + readonly contents: VSBuffer | undefined, + @IFileService private readonly _fileService: IFileService, + @IWorkingCopyFileService private readonly _workingCopyFileService: IWorkingCopyFileService, + @IInstantiationService private readonly _instaService: IInstantiationService, + ) { } + + get uris() { + return [this.newUri]; + } + + async perform(): Promise { + // create file + if (this.options.overwrite === undefined && this.options.ignoreIfExists && await this._fileService.exists(this.newUri)) { + return new Noop(); // not overwriting, but ignoring, and the target file exists + } + await this._workingCopyFileService.create(this.newUri, this.contents, { overwrite: this.options.overwrite }); + return this._instaService.createInstance(DeleteOperation, this.newUri, this.options); + } +} + +class DeleteOperation implements IFileOperation { + + constructor( + readonly oldUri: URI, + readonly options: WorkspaceFileEditOptions, + @IWorkingCopyFileService private readonly _workingCopyFileService: IWorkingCopyFileService, + @IFileService private readonly _fileService: IFileService, + @IConfigurationService private readonly _configurationService: IConfigurationService, + @IInstantiationService private readonly _instaService: IInstantiationService, + @ILogService private readonly _logService: ILogService + ) { } + + get uris() { + return [this.oldUri]; + } + + async perform(): Promise { + // delete file + if (!await this._fileService.exists(this.oldUri)) { + if (!this.options.ignoreIfNotExists) { + throw new Error(`${this.oldUri} does not exist and can not be deleted`); + } + return new Noop(); + } + + let contents: VSBuffer | undefined; + try { + contents = (await this._fileService.readFile(this.oldUri)).value; + } catch (err) { + this._logService.critical(err); + } + + const useTrash = this._fileService.hasCapability(this.oldUri, FileSystemProviderCapabilities.Trash) && this._configurationService.getValue('files.enableTrash'); + await this._workingCopyFileService.delete([this.oldUri], { useTrash, recursive: this.options.recursive }); + return this._instaService.createInstance(CreateOperation, this.oldUri, this.options, contents); + } +} + +class FileUndoRedoElement implements IWorkspaceUndoRedoElement { + + readonly type = UndoRedoElementType.Workspace; + + readonly resources: readonly URI[]; + + constructor( + readonly label: string, + readonly operations: IFileOperation[] + ) { + this.resources = ([]).concat(...operations.map(op => op.uris)); + } + + async undo(): Promise { + await this._reverse(); + } + + async redo(): Promise { + await this._reverse(); + } + + private async _reverse() { + for (let i = 0; i < this.operations.length; i++) { + const op = this.operations[i]; + const undo = await op.perform(); + this.operations[i] = undo; + } + } +} + +export class BulkFileEdits { + + constructor( + private readonly _label: string, + private readonly _progress: IProgress, + private readonly _edits: WorkspaceFileEdit[], + @IInstantiationService private readonly _instaService: IInstantiationService, + @IUndoRedoService private readonly _undoRedoService: IUndoRedoService, + ) { } + + async apply(): Promise { + const undoOperations: IFileOperation[] = []; + for (const edit of this._edits) { + this._progress.report(undefined); + + const options = edit.options || {}; + let op: IFileOperation | undefined; + if (edit.newUri && edit.oldUri) { + // rename + op = this._instaService.createInstance(RenameOperation, edit.newUri, edit.oldUri, options); + } else if (!edit.newUri && edit.oldUri) { + // delete file + op = this._instaService.createInstance(DeleteOperation, edit.oldUri, options); + } else if (edit.newUri && !edit.oldUri) { + // create file + op = this._instaService.createInstance(CreateOperation, edit.newUri, options, undefined); + } + if (op) { + const undoOp = await op.perform(); + undoOperations.push(undoOp); + } + } + + this._undoRedoService.pushElement(new FileUndoRedoElement(this._label, undoOperations)); + } +} diff --git a/src/vs/workbench/services/bulkEdit/browser/bulkTextEdits.ts b/src/vs/workbench/services/bulkEdit/browser/bulkTextEdits.ts new file mode 100644 index 0000000000..7bb376903d --- /dev/null +++ b/src/vs/workbench/services/bulkEdit/browser/bulkTextEdits.ts @@ -0,0 +1,245 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { mergeSort } from 'vs/base/common/arrays'; +import { dispose, IDisposable, IReference } from 'vs/base/common/lifecycle'; +import { URI } from 'vs/base/common/uri'; +import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; +import { EditOperation } from 'vs/editor/common/core/editOperation'; +import { Range } from 'vs/editor/common/core/range'; +import { Selection } from 'vs/editor/common/core/selection'; +import { EndOfLineSequence, IIdentifiedSingleEditOperation, ITextModel } from 'vs/editor/common/model'; +import { WorkspaceTextEdit } from 'vs/editor/common/modes'; +import { ITextModelService, IResolvedTextEditorModel } from 'vs/editor/common/services/resolverService'; +import { IProgress } from 'vs/platform/progress/common/progress'; +import { IEditorWorkerService } from 'vs/editor/common/services/editorWorkerService'; +import { IUndoRedoService } from 'vs/platform/undoRedo/common/undoRedo'; +import { SingleModelEditStackElement, MultiModelEditStackElement } from 'vs/editor/common/model/editStack'; +import { ResourceMap } from 'vs/base/common/map'; +import { IModelService } from 'vs/editor/common/services/modelService'; + +type ValidationResult = { canApply: true } | { canApply: false, reason: URI }; + +class ModelEditTask implements IDisposable { + + readonly model: ITextModel; + + private _expectedModelVersionId: number | undefined; + protected _edits: IIdentifiedSingleEditOperation[]; + protected _newEol: EndOfLineSequence | undefined; + + constructor(private readonly _modelReference: IReference) { + this.model = this._modelReference.object.textEditorModel; + this._edits = []; + } + + dispose() { + this._modelReference.dispose(); + } + + addEdit(resourceEdit: WorkspaceTextEdit): void { + this._expectedModelVersionId = resourceEdit.modelVersionId; + const { edit } = resourceEdit; + + if (typeof edit.eol === 'number') { + // honor eol-change + this._newEol = edit.eol; + } + if (!edit.range && !edit.text) { + // lacks both a range and the text + return; + } + if (Range.isEmpty(edit.range) && !edit.text) { + // no-op edit (replace empty range with empty text) + return; + } + + // create edit operation + let range: Range; + if (!edit.range) { + range = this.model.getFullModelRange(); + } else { + range = Range.lift(edit.range); + } + this._edits.push(EditOperation.replaceMove(range, edit.text)); + } + + validate(): ValidationResult { + if (typeof this._expectedModelVersionId === 'undefined' || this.model.getVersionId() === this._expectedModelVersionId) { + return { canApply: true }; + } + return { canApply: false, reason: this.model.uri }; + } + + getBeforeCursorState(): Selection[] | null { + return null; + } + + apply(): void { + if (this._edits.length > 0) { + this._edits = mergeSort(this._edits, (a, b) => Range.compareRangesUsingStarts(a.range, b.range)); + this.model.pushEditOperations(null, this._edits, () => null); + } + if (this._newEol !== undefined) { + this.model.pushEOL(this._newEol); + } + } +} + +class EditorEditTask extends ModelEditTask { + + private _editor: ICodeEditor; + + constructor(modelReference: IReference, editor: ICodeEditor) { + super(modelReference); + this._editor = editor; + } + + getBeforeCursorState(): Selection[] | null { + return this._editor.getSelections(); + } + + apply(): void { + if (this._edits.length > 0) { + this._edits = mergeSort(this._edits, (a, b) => Range.compareRangesUsingStarts(a.range, b.range)); + this._editor.executeEdits('', this._edits); + } + if (this._newEol !== undefined) { + if (this._editor.hasModel()) { + this._editor.getModel().pushEOL(this._newEol); + } + } + } +} + +export class BulkTextEdits { + + private readonly _edits = new ResourceMap(); + + constructor( + private readonly _label: string, + private readonly _editor: ICodeEditor | undefined, + private readonly _progress: IProgress, + edits: WorkspaceTextEdit[], + @IEditorWorkerService private readonly _editorWorker: IEditorWorkerService, + @IModelService private readonly _modelService: IModelService, + @ITextModelService private readonly _textModelResolverService: ITextModelService, + @IUndoRedoService private readonly _undoRedoService: IUndoRedoService + ) { + + for (const edit of edits) { + let array = this._edits.get(edit.resource); + if (!array) { + array = []; + this._edits.set(edit.resource, array); + } + array.push(edit); + } + } + + private _validateBeforePrepare(): void { + // First check if loaded models were not changed in the meantime + for (const array of this._edits.values()) { + for (let edit of array) { + if (typeof edit.modelVersionId === 'number') { + let model = this._modelService.getModel(edit.resource); + if (model && model.getVersionId() !== edit.modelVersionId) { + // model changed in the meantime + throw new Error(`${model.uri.toString()} has changed in the meantime`); + } + } + } + } + } + + private async _createEditsTasks(): Promise { + + const tasks: ModelEditTask[] = []; + const promises: Promise[] = []; + + for (let [key, value] of this._edits) { + const promise = this._textModelResolverService.createModelReference(key).then(async ref => { + let task: ModelEditTask; + let makeMinimal = false; + if (this._editor?.getModel()?.uri.toString() === ref.object.textEditorModel.uri.toString()) { + task = new EditorEditTask(ref, this._editor); + makeMinimal = true; + } else { + task = new ModelEditTask(ref); + } + + for (const edit of value) { + if (makeMinimal) { + const newEdits = await this._editorWorker.computeMoreMinimalEdits(edit.resource, [edit.edit]); + if (!newEdits) { + task.addEdit(edit); + } else { + for (let moreMinialEdit of newEdits) { + task.addEdit({ ...edit, edit: moreMinialEdit }); + } + } + } else { + task.addEdit(edit); + } + } + + tasks.push(task); + this._progress.report(undefined); + }); + promises.push(promise); + } + + await Promise.all(promises); + return tasks; + } + + private _validateTasks(tasks: ModelEditTask[]): ValidationResult { + for (const task of tasks) { + const result = task.validate(); + if (!result.canApply) { + return result; + } + } + return { canApply: true }; + } + + async apply(): Promise { + + this._validateBeforePrepare(); + const tasks = await this._createEditsTasks(); + + try { + + const validation = this._validateTasks(tasks); + if (!validation.canApply) { + throw new Error(`${(validation as { canApply: false, reason: URI }).reason.toString()} has changed in the meantime`); // {{SQL CARBON EDIT}} strict-null-checks + } + if (tasks.length === 1) { + // This edit touches a single model => keep things simple + for (const task of tasks) { + task.model.pushStackElement(); + task.apply(); + task.model.pushStackElement(); + this._progress.report(undefined); + } + } else { + // prepare multi model undo element + const multiModelEditStackElement = new MultiModelEditStackElement( + this._label, + tasks.map(t => new SingleModelEditStackElement(t.model, t.getBeforeCursorState())) + ); + this._undoRedoService.pushElement(multiModelEditStackElement); + for (const task of tasks) { + task.apply(); + this._progress.report(undefined); + } + multiModelEditStackElement.close(); + } + + } finally { + dispose(tasks); + } + } +} diff --git a/src/vs/workbench/services/clipboard/electron-browser/clipboardService.ts b/src/vs/workbench/services/clipboard/electron-sandbox/clipboardService.ts similarity index 85% rename from src/vs/workbench/services/clipboard/electron-browser/clipboardService.ts rename to src/vs/workbench/services/clipboard/electron-sandbox/clipboardService.ts index 3bae716c79..a54d546045 100644 --- a/src/vs/workbench/services/clipboard/electron-browser/clipboardService.ts +++ b/src/vs/workbench/services/clipboard/electron-sandbox/clipboardService.ts @@ -4,11 +4,11 @@ *--------------------------------------------------------------------------------------------*/ import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService'; -import { clipboard } from 'electron'; import { URI } from 'vs/base/common/uri'; import { isMacintosh } from 'vs/base/common/platform'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { IElectronService } from 'vs/platform/electron/electron-sandbox/electron'; +import { VSBuffer } from 'vs/base/common/buffer'; export class NativeClipboardService implements IClipboardService { @@ -52,13 +52,12 @@ export class NativeClipboardService implements IClipboardService { return this.bufferToResources(await this.electronService.readClipboardBuffer(NativeClipboardService.FILE_FORMAT)); } - async hasResources(): Promise { return this.electronService.hasClipboard(NativeClipboardService.FILE_FORMAT); } - private resourcesToBuffer(resources: URI[]): Buffer { - return Buffer.from(resources.map(r => r.toString()).join('\n')); + private resourcesToBuffer(resources: URI[]): Uint8Array { + return VSBuffer.fromString(resources.map(r => r.toString()).join('\n')).buffer; } private bufferToResources(buffer: Uint8Array): URI[] { @@ -77,22 +76,6 @@ export class NativeClipboardService implements IClipboardService { return []; // do not trust clipboard data } } - - /** @deprecated */ - readFindTextSync(): string { - if (isMacintosh) { - return clipboard.readFindText(); - } - - return ''; - } - - /** @deprecated */ - writeFindTextSync(text: string): void { - if (isMacintosh) { - clipboard.writeFindText(text); - } - } } registerSingleton(IClipboardService, NativeClipboardService, true); diff --git a/src/vs/workbench/services/configuration/test/electron-browser/configurationService.test.ts b/src/vs/workbench/services/configuration/test/electron-browser/configurationService.test.ts index 7e07eeeb88..5ace60465f 100644 --- a/src/vs/workbench/services/configuration/test/electron-browser/configurationService.test.ts +++ b/src/vs/workbench/services/configuration/test/electron-browser/configurationService.test.ts @@ -1807,7 +1807,7 @@ suite('WorkspaceConfigurationService - Remote Folder', () => { return promise; }); - test('update remote settings', async () => { + test.skip('update remote settings', async () => { registerRemoteFileSystemProvider(); resolveRemoteEnvironment(); await initialize(); diff --git a/src/vs/workbench/services/decorations/browser/decorationsService.ts b/src/vs/workbench/services/decorations/browser/decorationsService.ts index 07af65a6db..ac5adef76f 100644 --- a/src/vs/workbench/services/decorations/browser/decorationsService.ts +++ b/src/vs/workbench/services/decorations/browser/decorationsService.ts @@ -208,7 +208,8 @@ class DecorationProviderWrapper { constructor( readonly provider: IDecorationsProvider, private readonly _uriEmitter: Emitter, - private readonly _flushEmitter: Emitter + private readonly _flushEmitter: Emitter, + @ILogService private readonly _logService: ILogService, ) { this._dispoable = this.provider.onDidChange(uris => { if (!uris) { @@ -238,16 +239,17 @@ class DecorationProviderWrapper { } getOrRetrieve(uri: URI, includeChildren: boolean, callback: (data: IDecorationData, isChild: boolean) => void): void { - let item = this.data.get(uri); if (item === undefined) { // unknown -> trigger request + this._logService.trace('[Decorations] getOrRetrieve -> FETCH', this.provider.label, uri); item = this._fetchData(uri); } if (item && !(item instanceof DecorationDataRequest)) { // found something (which isn't pending anymore) + this._logService.trace('[Decorations] getOrRetrieve -> RESULT', this.provider.label, uri); callback(item, false); } @@ -257,6 +259,7 @@ class DecorationProviderWrapper { if (iter) { for (let item = iter.next(); !item.done; item = iter.next()) { if (item.value && !(item.value instanceof DecorationDataRequest)) { + this._logService.trace('[Decorations] getOrRetrieve -> RESULT (children)', this.provider.label, uri); callback(item.value, true); } } @@ -269,6 +272,7 @@ class DecorationProviderWrapper { // check for pending request and cancel it const pendingRequest = this.data.get(uri); if (pendingRequest instanceof DecorationDataRequest) { + this._logService.trace('[Decorations] fetchData -> CANCEL previous', this.provider.label, uri); pendingRequest.source.cancel(); this.data.delete(uri); } @@ -297,6 +301,7 @@ class DecorationProviderWrapper { } private _keepItem(uri: URI, data: IDecorationData | undefined): IDecorationData | null { + this._logService.trace('[Decorations] keepItem -> CANCEL previous', this.provider.label, uri, data); const deco = data ? data : null; const old = this.data.set(uri, deco); if (deco || old) { @@ -343,7 +348,8 @@ export class DecorationsService implements IDecorationsService { const wrapper = new DecorationProviderWrapper( provider, this._onDidChangeDecorationsDelayed, - this._onDidChangeDecorations + this._onDidChangeDecorations, + this._logService ); const remove = this._data.push(wrapper); diff --git a/src/vs/workbench/services/dialogs/browser/abstractFileDialogService.ts b/src/vs/workbench/services/dialogs/browser/abstractFileDialogService.ts index 71cf4f634c..82693e8b11 100644 --- a/src/vs/workbench/services/dialogs/browser/abstractFileDialogService.ts +++ b/src/vs/workbench/services/dialogs/browser/abstractFileDialogService.ts @@ -25,6 +25,7 @@ import { coalesce } from 'vs/base/common/arrays'; import { trim } from 'vs/base/common/strings'; import { IModeService } from 'vs/editor/common/services/modeService'; import { ILabelService } from 'vs/platform/label/common/label'; +import { isWindows } from 'vs/base/common/platform'; export abstract class AbstractFileDialogService implements IFileDialogService { @@ -218,21 +219,17 @@ export abstract class AbstractFileDialogService implements IFileDialogService { } private pickResource(options: IOpenDialogOptions): Promise { - const simpleFileDialog = this.createSimpleFileDialog(); + const simpleFileDialog = this.instantiationService.createInstance(SimpleFileDialog); return simpleFileDialog.showOpenDialog(options); } private saveRemoteResource(options: ISaveDialogOptions): Promise { - const remoteFileDialog = this.createSimpleFileDialog(); + const remoteFileDialog = this.instantiationService.createInstance(SimpleFileDialog); return remoteFileDialog.showSaveDialog(options); } - protected createSimpleFileDialog(): SimpleFileDialog { - return this.instantiationService.createInstance(SimpleFileDialog); - } - protected getSchemeFilterForWindow(): string { return !this.environmentService.configuration.remoteAuthority ? Schemas.file : REMOTE_HOST_SCHEME; } @@ -254,7 +251,7 @@ export abstract class AbstractFileDialogService implements IFileDialogService { const options: ISaveDialogOptions = { defaultUri, title: nls.localize('saveAsTitle', "Save As"), - availableFileSystems, + availableFileSystems }; interface IFilter { name: string; extensions: string[]; } @@ -282,8 +279,12 @@ export abstract class AbstractFileDialogService implements IFileDialogService { // We have no matching filter, e.g. because the language // is unknown. We still add the extension to the list of // filters though so that it can be picked - // (https://github.com/microsoft/vscode/issues/96283) - if (!matchingFilter && ext) { + // (https://github.com/microsoft/vscode/issues/96283) but + // only on Windows where this is an issue. Adding this to + // macOS would result in the following bugs: + // https://github.com/microsoft/vscode/issues/100614 and + // https://github.com/microsoft/vscode/issues/100241 + if (isWindows && !matchingFilter && ext) { matchingFilter = { name: trim(ext, '.').toUpperCase(), extensions: [trim(ext, '.')] }; } diff --git a/src/vs/workbench/services/dialogs/browser/simpleFileDialog.ts b/src/vs/workbench/services/dialogs/browser/simpleFileDialog.ts index a23ce5e41c..d80af41e26 100644 --- a/src/vs/workbench/services/dialogs/browser/simpleFileDialog.ts +++ b/src/vs/workbench/services/dialogs/browser/simpleFileDialog.ts @@ -231,8 +231,8 @@ export class SimpleFileDialog { return this.remoteAgentEnvironment; } - protected async getUserHome(): Promise { - return (await this.pathService.userHome) ?? URI.from({ scheme: this.scheme, authority: this.remoteAuthority, path: '/' }); + protected getUserHome(): Promise { + return this.pathService.userHome({ preferLocal: this.scheme === Schemas.file }); } private async pickResource(isSave: boolean = false): Promise { diff --git a/src/vs/workbench/services/dialogs/electron-browser/simpleFileDialog.ts b/src/vs/workbench/services/dialogs/electron-browser/simpleFileDialog.ts deleted file mode 100644 index 76764849f0..0000000000 --- a/src/vs/workbench/services/dialogs/electron-browser/simpleFileDialog.ts +++ /dev/null @@ -1,49 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Source EULA. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { URI } from 'vs/base/common/uri'; -import { SimpleFileDialog } from 'vs/workbench/services/dialogs/browser/simpleFileDialog'; -import { Schemas } from 'vs/base/common/network'; -import { IFileService } from 'vs/platform/files/common/files'; -import { IQuickInputService } from 'vs/platform/quickinput/common/quickInput'; -import { ILabelService } from 'vs/platform/label/common/label'; -import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; -import { INotificationService } from 'vs/platform/notification/common/notification'; -import { IFileDialogService } from 'vs/platform/dialogs/common/dialogs'; -import { IModelService } from 'vs/editor/common/services/modelService'; -import { IModeService } from 'vs/editor/common/services/modeService'; -import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; -import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService'; -import { IPathService } from 'vs/workbench/services/path/common/pathService'; -import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; -import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; -import { INativeWorkbenchEnvironmentService } from 'vs/workbench/services/environment/electron-browser/environmentService'; - -export class NativeSimpleFileDialog extends SimpleFileDialog { - constructor( - @IFileService fileService: IFileService, - @IQuickInputService quickInputService: IQuickInputService, - @ILabelService labelService: ILabelService, - @IWorkspaceContextService workspaceContextService: IWorkspaceContextService, - @INotificationService notificationService: INotificationService, - @IFileDialogService fileDialogService: IFileDialogService, - @IModelService modelService: IModelService, - @IModeService modeService: IModeService, - @IWorkbenchEnvironmentService protected environmentService: INativeWorkbenchEnvironmentService, - @IRemoteAgentService remoteAgentService: IRemoteAgentService, - @IPathService protected pathService: IPathService, - @IKeybindingService keybindingService: IKeybindingService, - @IContextKeyService contextKeyService: IContextKeyService - ) { - super(fileService, quickInputService, labelService, workspaceContextService, notificationService, fileDialogService, modelService, modeService, environmentService, remoteAgentService, pathService, keybindingService, contextKeyService); - } - - protected async getUserHome(): Promise { - if (this.scheme !== Schemas.file) { - return super.getUserHome(); - } - return this.environmentService.userHome; - } -} diff --git a/src/vs/workbench/services/dialogs/electron-browser/fileDialogService.ts b/src/vs/workbench/services/dialogs/electron-sandbox/fileDialogService.ts similarity index 96% rename from src/vs/workbench/services/dialogs/electron-browser/fileDialogService.ts rename to src/vs/workbench/services/dialogs/electron-sandbox/fileDialogService.ts index 39698a6e33..a4ef3bdd04 100644 --- a/src/vs/workbench/services/dialogs/electron-browser/fileDialogService.ts +++ b/src/vs/workbench/services/dialogs/electron-sandbox/fileDialogService.ts @@ -21,8 +21,6 @@ import { Schemas } from 'vs/base/common/network'; import { IModeService } from 'vs/editor/common/services/modeService'; import { IWorkspacesService } from 'vs/platform/workspaces/common/workspaces'; import { ILabelService } from 'vs/platform/label/common/label'; -import { SimpleFileDialog } from 'vs/workbench/services/dialogs/browser/simpleFileDialog'; -import { NativeSimpleFileDialog } from 'vs/workbench/services/dialogs/electron-browser/simpleFileDialog'; export class FileDialogService extends AbstractFileDialogService implements IFileDialogService { @@ -191,10 +189,6 @@ export class FileDialogService extends AbstractFileDialogService implements IFil // Don't allow untitled schema through. return schema === Schemas.untitled ? [Schemas.file] : (schema !== Schemas.file ? [schema, Schemas.file] : [schema]); } - - protected createSimpleFileDialog(): SimpleFileDialog { - return this.instantiationService.createInstance(NativeSimpleFileDialog); - } } registerSingleton(IFileDialogService, FileDialogService, true); diff --git a/src/vs/workbench/services/editor/browser/codeEditorService.ts b/src/vs/workbench/services/editor/browser/codeEditorService.ts index 8255824bd0..b5bcff198d 100644 --- a/src/vs/workbench/services/editor/browser/codeEditorService.ts +++ b/src/vs/workbench/services/editor/browser/codeEditorService.ts @@ -12,6 +12,7 @@ import { TextEditorOptions } from 'vs/workbench/common/editor'; import { ACTIVE_GROUP, IEditorService, SIDE_GROUP } from 'vs/workbench/services/editor/common/editorService'; import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; +import { extUri } from 'vs/base/common/resources'; export class CodeEditorService extends CodeEditorServiceImpl { @@ -47,13 +48,13 @@ export class CodeEditorService extends CodeEditorServiceImpl { // side as separate editor. const activeTextEditorControl = this.editorService.activeTextEditorControl; if ( - !sideBySide && // we need the current active group to be the taret - isDiffEditor(activeTextEditorControl) && // we only support this for active text diff editors - input.options && // we need options to apply - input.resource && // we need a request resource to compare with - activeTextEditorControl.getModel() && // we need a target model to compare with - source === activeTextEditorControl.getModifiedEditor() && // we need the source of this request to be the modified side of the diff editor - input.resource.toString() === activeTextEditorControl.getModel()!.modified.uri.toString() // we need the input resources to match with modified side + !sideBySide && // we need the current active group to be the taret + isDiffEditor(activeTextEditorControl) && // we only support this for active text diff editors + input.options && // we need options to apply + input.resource && // we need a request resource to compare with + activeTextEditorControl.getModel() && // we need a target model to compare with + source === activeTextEditorControl.getModifiedEditor() && // we need the source of this request to be the modified side of the diff editor + extUri.isEqual(input.resource, activeTextEditorControl.getModel()!.modified.uri) // we need the input resources to match with modified side ) { const targetEditor = activeTextEditorControl.getModifiedEditor(); diff --git a/src/vs/workbench/services/editor/browser/editorDropService.ts b/src/vs/workbench/services/editor/browser/editorDropService.ts new file mode 100644 index 0000000000..4ce5775df4 --- /dev/null +++ b/src/vs/workbench/services/editor/browser/editorDropService.ts @@ -0,0 +1,20 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; +import { IDisposable } from 'vs/base/common/lifecycle'; +import { IEditorDropTargetDelegate } from 'vs/workbench/browser/parts/editor/editorDropTarget'; + +export const IEditorDropService = createDecorator('editorDropService'); + +export interface IEditorDropService { + + readonly _serviceBrand: undefined; + + /** + * Allows to register a drag and drop target for editors. + */ + createEditorDropTarget(container: HTMLElement, delegate: IEditorDropTargetDelegate): IDisposable; +} diff --git a/src/vs/workbench/services/editor/browser/editorService.ts b/src/vs/workbench/services/editor/browser/editorService.ts index b33f731399..d996a36b50 100644 --- a/src/vs/workbench/services/editor/browser/editorService.ts +++ b/src/vs/workbench/services/editor/browser/editorService.ts @@ -34,7 +34,7 @@ import { UntitledTextEditorInput } from 'vs/workbench/services/untitled/common/u import { timeout } from 'vs/base/common/async'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; import { indexOfPath } from 'vs/base/common/extpath'; -import { DEFAULT_CUSTOM_EDITOR, updateViewTypeSchema, editorAssociationsConfigurationNode } from 'vs/workbench/services/editor/common/editorAssociationsSetting'; +import { DEFAULT_CUSTOM_EDITOR, updateViewTypeSchema, editorAssociationsConfigurationNode } from 'vs/workbench/services/editor/common/editorOpenWith'; import { Extensions as ConfigurationExtensions, IConfigurationRegistry } from 'vs/platform/configuration/common/configurationRegistry'; import { IWorkingCopyService } from 'vs/workbench/services/workingCopy/common/workingCopyService'; import { IUriIdentityService } from 'vs/workbench/services/uriIdentity/common/uriIdentity'; @@ -185,8 +185,8 @@ export class EditorService extends Disposable implements EditorServiceImpl { for (const editor of this.visibleEditors) { const resources = distinct(coalesce([ - toResource(editor, { supportSideBySide: SideBySideEditor.MASTER }), - toResource(editor, { supportSideBySide: SideBySideEditor.DETAILS }) + toResource(editor, { supportSideBySide: SideBySideEditor.PRIMARY }), + toResource(editor, { supportSideBySide: SideBySideEditor.SECONDARY }) ]), resource => resource.toString()); for (const resource of resources) { @@ -248,7 +248,7 @@ export class EditorService extends Disposable implements EditorServiceImpl { // Determine new resulting target resource let targetResource: URI; - if (source.toString() === resource.toString()) { + if (extUri.isEqual(source, resource)) { targetResource = target; // file got moved } else { const ignoreCase = !this.fileService.hasCapability(resource, FileSystemProviderCapabilities.PathCaseSensitive); @@ -380,8 +380,8 @@ export class EditorService extends Disposable implements EditorServiceImpl { for (const editor of this.editors) { if (options.supportSideBySide && editor instanceof SideBySideEditorInput) { - conditionallyAddEditor(editor.master); - conditionallyAddEditor(editor.details); + conditionallyAddEditor(editor.primary); + conditionallyAddEditor(editor.secondary); } else { conditionallyAddEditor(editor); } @@ -1193,13 +1193,13 @@ export class EditorService extends Disposable implements EditorServiceImpl { return new Promise(resolve => { const listener = this.onDidCloseEditor(async event => { - const detailsResource = toResource(event.editor, { supportSideBySide: SideBySideEditor.DETAILS }); - const masterResource = toResource(event.editor, { supportSideBySide: SideBySideEditor.MASTER }); + const primaryResource = toResource(event.editor, { supportSideBySide: SideBySideEditor.PRIMARY }); + const secondaryResource = toResource(event.editor, { supportSideBySide: SideBySideEditor.SECONDARY }); // Remove from resources to wait for being closed based on the // resources from editors that got closed remainingEditors = remainingEditors.filter(({ resource }) => { - if (this.uriIdentityService.extUri.isEqual(resource, masterResource) || this.uriIdentityService.extUri.isEqual(resource, detailsResource)) { + if (this.uriIdentityService.extUri.isEqual(resource, primaryResource) || this.uriIdentityService.extUri.isEqual(resource, secondaryResource)) { return false; // remove - the closing editor matches this resource } diff --git a/src/vs/workbench/services/editor/common/editorAssociationsSetting.ts b/src/vs/workbench/services/editor/common/editorAssociationsSetting.ts deleted file mode 100644 index df8d47372b..0000000000 --- a/src/vs/workbench/services/editor/common/editorAssociationsSetting.ts +++ /dev/null @@ -1,76 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Source EULA. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { IJSONSchema } from 'vs/base/common/jsonSchema'; -import * as nls from 'vs/nls'; -import { IConfigurationNode, IConfigurationRegistry, Extensions } from 'vs/platform/configuration/common/configurationRegistry'; -import { workbenchConfigurationNodeBase } from 'vs/workbench/common/configuration'; -import { Registry } from 'vs/platform/registry/common/platform'; -import { ICustomEditorInfo } from 'vs/workbench/services/editor/common/editorService'; - -export const customEditorsAssociationsSettingId = 'workbench.editorAssociations'; - -export const viewTypeSchamaAddition: IJSONSchema = { - type: 'string', - enum: [] -}; - -export type CustomEditorAssociation = { - readonly viewType: string; - readonly filenamePattern?: string; -}; - -export type CustomEditorsAssociations = readonly CustomEditorAssociation[]; - -export const editorAssociationsConfigurationNode: IConfigurationNode = { - ...workbenchConfigurationNodeBase, - properties: { - [customEditorsAssociationsSettingId]: { - type: 'array', - markdownDescription: nls.localize('editor.editorAssociations', "Configure which editor to use for specific file types."), - items: { - type: 'object', - defaultSnippets: [{ - body: { - 'viewType': '$1', - 'filenamePattern': '$2' - } - }], - properties: { - 'viewType': { - anyOf: [ - { - type: 'string', - description: nls.localize('editor.editorAssociations.viewType', "The unique id of the editor to use."), - }, - viewTypeSchamaAddition - ] - }, - 'filenamePattern': { - type: 'string', - description: nls.localize('editor.editorAssociations.filenamePattern', "Glob pattern specifying which files the editor should be used for."), - } - } - } - } - } -}; - - -const builtinProviderDisplayName = nls.localize('builtinProviderDisplayName', "Built-in"); - -export const DEFAULT_CUSTOM_EDITOR: ICustomEditorInfo = { - id: 'default', - displayName: nls.localize('promptOpenWith.defaultEditor.displayName', "Text Editor"), - providerDisplayName: builtinProviderDisplayName -}; - -export function updateViewTypeSchema(enumValues: string[], enumDescriptions: string[]): void { - viewTypeSchamaAddition.enum = enumValues; - viewTypeSchamaAddition.enumDescriptions = enumDescriptions; - - Registry.as(Extensions.Configuration) - .notifyConfigurationSchemaUpdated(editorAssociationsConfigurationNode); -} diff --git a/src/vs/workbench/contrib/files/common/openWith.ts b/src/vs/workbench/services/editor/common/editorOpenWith.ts similarity index 64% rename from src/vs/workbench/contrib/files/common/openWith.ts rename to src/vs/workbench/services/editor/common/editorOpenWith.ts index dadb901de8..639ff39f2a 100644 --- a/src/vs/workbench/contrib/files/common/openWith.ts +++ b/src/vs/workbench/services/editor/common/editorOpenWith.ts @@ -3,20 +3,24 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { basename, extname, isEqual } from 'vs/base/common/resources'; -import { URI } from 'vs/base/common/uri'; import * as nls from 'vs/nls'; -import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; -import { IEditorOptions, ITextEditorOptions } from 'vs/platform/editor/common/editor'; -import { IQuickInputService, IQuickPickItem } from 'vs/platform/quickinput/common/quickInput'; -import { IEditorInput, IEditorPane } from 'vs/workbench/common/editor'; -import { FileEditorInput } from 'vs/workbench/contrib/files/common/editors/fileEditorInput'; -import { DEFAULT_EDITOR_ID } from 'vs/workbench/contrib/files/common/files'; -import { CustomEditorAssociation, CustomEditorsAssociations, customEditorsAssociationsSettingId } from 'vs/workbench/services/editor/common/editorAssociationsSetting'; +import { IJSONSchema } from 'vs/base/common/jsonSchema'; +import { IConfigurationNode, IConfigurationRegistry, Extensions } from 'vs/platform/configuration/common/configurationRegistry'; +import { workbenchConfigurationNodeBase } from 'vs/workbench/common/configuration'; +import { Registry } from 'vs/platform/registry/common/platform'; +import { ICustomEditorInfo, IEditorService, IOpenEditorOverrideHandler, IOpenEditorOverrideEntry } from 'vs/workbench/services/editor/common/editorService'; +import { IEditorInput, IEditorPane, IEditorInputFactoryRegistry, Extensions as EditorExtensions } from 'vs/workbench/common/editor'; +import { ITextEditorOptions, IEditorOptions } from 'vs/platform/editor/common/editor'; import { IEditorGroup, OpenEditorContext } from 'vs/workbench/services/editor/common/editorGroupsService'; -import { IEditorService, IOpenEditorOverrideEntry, IOpenEditorOverrideHandler } from 'vs/workbench/services/editor/common/editorService'; +import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; +import { IQuickInputService, IQuickPickItem } from 'vs/platform/quickinput/common/quickInput'; +import { URI } from 'vs/base/common/uri'; +import { extname, basename, isEqual } from 'vs/base/common/resources'; -const builtinProviderDisplayName = nls.localize('builtinProviderDisplayName', "Built-in"); +/** + * Id of the default editor for open with. + */ +export const DEFAULT_EDITOR_ID = 'default'; /** * Try to open an resource with a given editor. @@ -111,10 +115,12 @@ export async function openEditorWith( return pickedItem?.handler.open(input, { ...options, override: pickedItem.id }, group, OpenEditorContext.NEW_EDITOR)?.override; } +const builtinProviderDisplayName = nls.localize('builtinProviderDisplayName', "Built-in"); + export const defaultEditorOverrideEntry = Object.freeze({ id: DEFAULT_EDITOR_ID, label: nls.localize('promptOpenWith.defaultEditor.displayName', "Text Editor"), - detail: builtinProviderDisplayName, + detail: builtinProviderDisplayName }); /** @@ -124,8 +130,9 @@ export function getAllAvailableEditors( resource: URI, options: IEditorOptions | ITextEditorOptions | undefined, group: IEditorGroup, - editorService: IEditorService, + editorService: IEditorService ): Array<[IOpenEditorOverrideHandler, IOpenEditorOverrideEntry]> { + const fileEditorInputFactory = Registry.as(EditorExtensions.EditorInputFactories).getFileEditorInputFactory(); const overrides = editorService.getEditorOverrides(resource, options, group); if (!overrides.some(([_, entry]) => entry.id === DEFAULT_EDITOR_ID)) { overrides.unshift([ @@ -142,9 +149,71 @@ export function getAllAvailableEditors( }, { ...defaultEditorOverrideEntry, - active: editorService.activeEditor instanceof FileEditorInput && isEqual(editorService.activeEditor.resource, resource), + active: fileEditorInputFactory.isFileEditorInput(editorService.activeEditor) && isEqual(editorService.activeEditor.resource, resource), }]); } + return overrides; } +export const customEditorsAssociationsSettingId = 'workbench.editorAssociations'; + +export const viewTypeSchamaAddition: IJSONSchema = { + type: 'string', + enum: [] +}; + +export type CustomEditorAssociation = { + readonly viewType: string; + readonly filenamePattern?: string; +}; + +export type CustomEditorsAssociations = readonly CustomEditorAssociation[]; + +export const editorAssociationsConfigurationNode: IConfigurationNode = { + ...workbenchConfigurationNodeBase, + properties: { + [customEditorsAssociationsSettingId]: { + type: 'array', + markdownDescription: nls.localize('editor.editorAssociations', "Configure which editor to use for specific file types."), + items: { + type: 'object', + defaultSnippets: [{ + body: { + 'viewType': '$1', + 'filenamePattern': '$2' + } + }], + properties: { + 'viewType': { + anyOf: [ + { + type: 'string', + description: nls.localize('editor.editorAssociations.viewType', "The unique id of the editor to use."), + }, + viewTypeSchamaAddition + ] + }, + 'filenamePattern': { + type: 'string', + description: nls.localize('editor.editorAssociations.filenamePattern', "Glob pattern specifying which files the editor should be used for."), + } + } + } + } + } +}; + +export const DEFAULT_CUSTOM_EDITOR: ICustomEditorInfo = { + id: 'default', + displayName: nls.localize('promptOpenWith.defaultEditor.displayName', "Text Editor"), + providerDisplayName: builtinProviderDisplayName +}; + +export function updateViewTypeSchema(enumValues: string[], enumDescriptions: string[]): void { + viewTypeSchamaAddition.enum = enumValues; + viewTypeSchamaAddition.enumDescriptions = enumDescriptions; + + Registry.as(Extensions.Configuration) + .notifyConfigurationSchemaUpdated(editorAssociationsConfigurationNode); +} diff --git a/src/vs/workbench/services/editor/common/editorService.ts b/src/vs/workbench/services/editor/common/editorService.ts index e986c58ae3..10f2716a8f 100644 --- a/src/vs/workbench/services/editor/common/editorService.ts +++ b/src/vs/workbench/services/editor/common/editorService.ts @@ -74,7 +74,6 @@ export interface ISaveAllEditorsOptions extends ISaveEditorsOptions, IBaseSaveRe export interface IRevertAllEditorsOptions extends IRevertOptions, IBaseSaveRevertAllEditorOptions { } export interface ICustomEditorInfo { - readonly id: string; readonly displayName: string; readonly providerDisplayName: string; @@ -82,6 +81,7 @@ export interface ICustomEditorInfo { export interface ICustomEditorViewTypesHandler { readonly onDidChangeViewTypes: Event; + getViewTypes(): ICustomEditorInfo[]; } diff --git a/src/vs/workbench/services/editor/test/browser/editorService.test.ts b/src/vs/workbench/services/editor/test/browser/editorService.test.ts index 78190d3698..1152696061 100644 --- a/src/vs/workbench/services/editor/test/browser/editorService.test.ts +++ b/src/vs/workbench/services/editor/test/browser/editorService.test.ts @@ -377,8 +377,8 @@ suite.skip('EditorService', () => { // {{SQL CARBON EDIT}} skip suite // Untyped Input (diff) input = service.createEditorInput({ - leftResource: toResource.call(this, '/master.html'), - rightResource: toResource.call(this, '/detail.html') + leftResource: toResource.call(this, '/primary.html'), + rightResource: toResource.call(this, '/secondary.html') }); assert(input instanceof DiffEditorInput); }); @@ -1084,7 +1084,7 @@ suite.skip('EditorService', () => { // {{SQL CARBON EDIT}} skip suite const editor = await service.openEditor(input1, { pinned: true }); await service.openEditor(input2, { pinned: true }); - const whenClosed = service.whenClosed([input1, input2]); + const whenClosed = service.whenClosed([{ resource: input1.resource }, { resource: input2.resource }]); editor?.group?.closeAllEditors(); diff --git a/src/vs/workbench/services/environment/browser/environmentService.ts b/src/vs/workbench/services/environment/browser/environmentService.ts index 21dfeb592a..a9be6c4ed3 100644 --- a/src/vs/workbench/services/environment/browser/environmentService.ts +++ b/src/vs/workbench/services/environment/browser/environmentService.ts @@ -62,12 +62,12 @@ export class BrowserEnvironmentConfiguration implements IEnvironmentConfiguratio @memoize get filesToDiff(): IPath[] | undefined { if (this.payload) { - const fileToDiffDetail = this.payload.get('diffFileDetail'); - const fileToDiffMaster = this.payload.get('diffFileMaster'); - if (fileToDiffDetail && fileToDiffMaster) { + const fileToDiffPrimary = this.payload.get('diffFilePrimary'); + const fileToDiffSecondary = this.payload.get('diffFileSecondary'); + if (fileToDiffPrimary && fileToDiffSecondary) { return [ - { fileUri: URI.parse(fileToDiffDetail) }, - { fileUri: URI.parse(fileToDiffMaster) } + { fileUri: URI.parse(fileToDiffSecondary) }, + { fileUri: URI.parse(fileToDiffPrimary) } ]; } } diff --git a/src/vs/workbench/services/environment/electron-browser/environmentService.ts b/src/vs/workbench/services/environment/electron-browser/environmentService.ts index 00b8f3058f..1380b31e1a 100644 --- a/src/vs/workbench/services/environment/electron-browser/environmentService.ts +++ b/src/vs/workbench/services/environment/electron-browser/environmentService.ts @@ -24,8 +24,6 @@ export interface INativeWorkbenchEnvironmentService extends IWorkbenchEnvironmen readonly log?: string; readonly extHostLogsPath: URI; - - readonly userHome: URI; } export interface INativeEnvironmentConfiguration extends IEnvironmentConfiguration, INativeWindowConfiguration { } diff --git a/src/vs/workbench/services/extensionManagement/browser/builtinExtensionsScannerService.ts b/src/vs/workbench/services/extensionManagement/browser/builtinExtensionsScannerService.ts new file mode 100644 index 0000000000..788a1a822a --- /dev/null +++ b/src/vs/workbench/services/extensionManagement/browser/builtinExtensionsScannerService.ts @@ -0,0 +1,72 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { IBuiltinExtensionsScannerService, IScannedExtension, ExtensionType, IExtensionManifest } from 'vs/platform/extensions/common/extensions'; +import { isWeb } from 'vs/base/common/platform'; +import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; +import { IUriIdentityService } from 'vs/workbench/services/uriIdentity/common/uriIdentity'; +import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; +import { URI } from 'vs/base/common/uri'; +import { getGalleryExtensionId } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; + +interface IScannedBuiltinExtension { + extensionPath: string, + packageJSON: IExtensionManifest, + packageNLSPath?: string, + readmePath?: string, + changelogPath?: string, +} + +export class BuiltinExtensionsScannerService implements IBuiltinExtensionsScannerService { + + declare readonly _serviceBrand: undefined; + + private readonly builtinExtensions: IScannedExtension[] = []; + + constructor( + @IWorkbenchEnvironmentService environmentService: IWorkbenchEnvironmentService, + @IUriIdentityService uriIdentityService: IUriIdentityService, + ) { + + const builtinExtensionsServiceUrl = environmentService.options?.builtinExtensionsServiceUrl ? URI.parse(environmentService.options?.builtinExtensionsServiceUrl) : undefined; + if (isWeb && builtinExtensionsServiceUrl) { + + let scannedBuiltinExtensions: IScannedBuiltinExtension[] = []; + + if (environmentService.isBuilt) { + // Built time configuration (do NOT modify) + scannedBuiltinExtensions = [/*BUILD->INSERT_BUILTIN_EXTENSIONS*/]; + } else { + // Find builtin extensions by checking for DOM + const builtinExtensionsElement = document.getElementById('vscode-workbench-builtin-extensions'); + const builtinExtensionsElementAttribute = builtinExtensionsElement ? builtinExtensionsElement.getAttribute('data-settings') : undefined; + if (builtinExtensionsElementAttribute) { + try { + scannedBuiltinExtensions = JSON.parse(builtinExtensionsElementAttribute); + } catch (error) { /* ignore error*/ } + } + } + + this.builtinExtensions = scannedBuiltinExtensions.map(e => ({ + identifier: { id: getGalleryExtensionId(e.packageJSON.publisher, e.packageJSON.name) }, + location: uriIdentityService.extUri.joinPath(builtinExtensionsServiceUrl!, e.extensionPath), + type: ExtensionType.System, + packageJSON: e.packageJSON, + packageNLSUrl: e.packageNLSPath ? uriIdentityService.extUri.joinPath(builtinExtensionsServiceUrl!, e.packageNLSPath) : undefined, + readmeUrl: e.readmePath ? uriIdentityService.extUri.joinPath(builtinExtensionsServiceUrl!, e.readmePath) : undefined, + changelogUrl: e.changelogPath ? uriIdentityService.extUri.joinPath(builtinExtensionsServiceUrl!, e.changelogPath) : undefined, + })); + } + } + + async scanBuiltinExtensions(): Promise { + if (isWeb) { + return this.builtinExtensions; + } + throw new Error('not supported'); + } +} + +registerSingleton(IBuiltinExtensionsScannerService, BuiltinExtensionsScannerService); diff --git a/src/vs/workbench/services/extensionManagement/common/extensionEnablementService.ts b/src/vs/workbench/services/extensionManagement/common/extensionEnablementService.ts index 9b34c1990d..4b7fd19a5c 100644 --- a/src/vs/workbench/services/extensionManagement/common/extensionEnablementService.ts +++ b/src/vs/workbench/services/extensionManagement/common/extensionEnablementService.ts @@ -18,6 +18,7 @@ import { getExtensionKind } from 'vs/workbench/services/extensions/common/extens import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { IProductService } from 'vs/platform/product/common/productService'; import { StorageManager } from 'vs/platform/extensionManagement/common/extensionEnablementService'; +import { webWorkerExtHostConfig } from 'vs/workbench/services/extensions/common/extensions'; const SOURCE = 'IWorkbenchExtensionEnablementService'; @@ -137,8 +138,8 @@ export class ExtensionEnablementService extends Disposable implements IWorkbench } private _isDisabledByExtensionKind(extension: IExtension): boolean { - if (this.extensionManagementServerService.remoteExtensionManagementServer) { - const server = this.extensionManagementServerService.getExtensionManagementServer(extension.location); + if (this.extensionManagementServerService.remoteExtensionManagementServer || this.extensionManagementServerService.webExtensionManagementServer) { + const server = this.extensionManagementServerService.getExtensionManagementServer(extension); for (const extensionKind of getExtensionKind(extension.manifest, this.productService, this.configurationService)) { if (extensionKind === 'ui') { if (this.extensionManagementServerService.localExtensionManagementServer && this.extensionManagementServerService.localExtensionManagementServer === server) { @@ -151,8 +152,13 @@ export class ExtensionEnablementService extends Disposable implements IWorkbench } } if (extensionKind === 'web') { - // Web extensions are not yet supported to be disabled by kind. Enable them always on web. + const enableLocalWebWorker = this.configurationService.getValue(webWorkerExtHostConfig); + if (enableLocalWebWorker) { + // Web extensions are enabled on all configurations + return false; + } if (this.extensionManagementServerService.localExtensionManagementServer === null) { + // Web extensions run only in the web return false; } } diff --git a/src/vs/workbench/services/extensionManagement/common/extensionManagement.ts b/src/vs/workbench/services/extensionManagement/common/extensionManagement.ts index 13b117742a..a84db6f365 100644 --- a/src/vs/workbench/services/extensionManagement/common/extensionManagement.ts +++ b/src/vs/workbench/services/extensionManagement/common/extensionManagement.ts @@ -6,24 +6,25 @@ import { Event } from 'vs/base/common/event'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { URI } from 'vs/base/common/uri'; -import { IExtension } from 'vs/platform/extensions/common/extensions'; -import { IExtensionManagementService } from 'vs/platform/extensionManagement/common/extensionManagement'; +import { IExtension, IScannedExtension, ExtensionType } from 'vs/platform/extensions/common/extensions'; +import { IExtensionManagementService, IGalleryExtension, IExtensionIdentifier } from 'vs/platform/extensionManagement/common/extensionManagement'; import { IWorkspace, IWorkspaceFolder } from 'vs/platform/workspace/common/workspace'; import { IStringDictionary } from 'vs/base/common/collections'; export const IExtensionManagementServerService = createDecorator('extensionManagementServerService'); export interface IExtensionManagementServer { - extensionManagementService: IExtensionManagementService; - authority: string; + id: string; label: string; + extensionManagementService: IExtensionManagementService; } export interface IExtensionManagementServerService { readonly _serviceBrand: undefined; readonly localExtensionManagementServer: IExtensionManagementServer | null; readonly remoteExtensionManagementServer: IExtensionManagementServer | null; - getExtensionManagementServer(location: URI): IExtensionManagementServer | null; + readonly webExtensionManagementServer: IExtensionManagementServer | null; + getExtensionManagementServer(extension: IExtension): IExtensionManagementServer | null; } export const enum EnablementState { @@ -139,3 +140,11 @@ export interface IExtensionRecommendationsService { getRecommendedExtensionsByScenario(scenarioType: string): Promise; // {{SQL CARBON EDIT}} promptRecommendedExtensionsByScenario(scenarioType: string): void; // {{SQL CARBON EDIT}} } + +export const IWebExtensionsScannerService = createDecorator('IWebExtensionsScannerService'); +export interface IWebExtensionsScannerService { + readonly _serviceBrand: undefined; + scanExtensions(type?: ExtensionType): Promise; + addExtension(galleryExtension: IGalleryExtension): Promise; + removeExtension(identifier: IExtensionIdentifier, version?: string): Promise; +} diff --git a/src/vs/workbench/services/extensionManagement/common/extensionManagementServerService.ts b/src/vs/workbench/services/extensionManagement/common/extensionManagementServerService.ts index ac9135fc5a..7e21f5ffbf 100644 --- a/src/vs/workbench/services/extensionManagement/common/extensionManagementServerService.ts +++ b/src/vs/workbench/services/extensionManagement/common/extensionManagementServerService.ts @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ import { localize } from 'vs/nls'; -import { URI } from 'vs/base/common/uri'; import { IExtensionManagementServer, IExtensionManagementServerService } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; import { ExtensionManagementChannelClient } from 'vs/platform/extensionManagement/common/extensionManagementIpc'; import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService'; @@ -12,6 +11,10 @@ import { REMOTE_HOST_SCHEME } from 'vs/platform/remote/common/remoteHosts'; import { IChannel } from 'vs/base/parts/ipc/common/ipc'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { ILabelService } from 'vs/platform/label/common/label'; +import { isWeb } from 'vs/base/common/platform'; +import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; +import { WebExtensionManagementService } from 'vs/workbench/services/extensionManagement/common/webExtensionManagementService'; +import { IExtension } from 'vs/platform/extensions/common/extensions'; export class ExtensionManagementServerService implements IExtensionManagementServerService { @@ -19,27 +22,40 @@ export class ExtensionManagementServerService implements IExtensionManagementSer readonly localExtensionManagementServer: IExtensionManagementServer | null = null; readonly remoteExtensionManagementServer: IExtensionManagementServer | null = null; + readonly webExtensionManagementServer: IExtensionManagementServer | null = null; constructor( @IRemoteAgentService remoteAgentService: IRemoteAgentService, @ILabelService labelService: ILabelService, + @IInstantiationService instantiationService: IInstantiationService, ) { const remoteAgentConnection = remoteAgentService.getConnection(); if (remoteAgentConnection) { const extensionManagementService = new ExtensionManagementChannelClient(remoteAgentConnection!.getChannel('extensions')); this.remoteExtensionManagementServer = { - authority: remoteAgentConnection.remoteAuthority, + id: 'remote', extensionManagementService, get label() { return labelService.getHostLabel(REMOTE_HOST_SCHEME, remoteAgentConnection!.remoteAuthority) || localize('remote', "Remote"); } }; } + if (isWeb) { + const extensionManagementService = instantiationService.createInstance(WebExtensionManagementService); + this.webExtensionManagementServer = { + id: 'web', + extensionManagementService, + label: localize('web', "Web") + }; + } } - getExtensionManagementServer(location: URI): IExtensionManagementServer | null { - if (location.scheme === REMOTE_HOST_SCHEME) { - return this.remoteExtensionManagementServer; + getExtensionManagementServer(extension: IExtension): IExtensionManagementServer { + if (extension.location.scheme === REMOTE_HOST_SCHEME) { + return this.remoteExtensionManagementServer!; } - return null; + if (this.webExtensionManagementServer) { + return this.webExtensionManagementServer; + } + throw new Error(`Invalid Extension ${extension.location}`); } } diff --git a/src/vs/workbench/services/extensionManagement/common/extensionManagementService.ts b/src/vs/workbench/services/extensionManagement/common/extensionManagementService.ts index 993f5dccbb..866bdb18af 100644 --- a/src/vs/workbench/services/extensionManagement/common/extensionManagementService.ts +++ b/src/vs/workbench/services/extensionManagement/common/extensionManagementService.ts @@ -15,7 +15,7 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur import { CancellationToken } from 'vs/base/common/cancellation'; import { areSameExtensions } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; import { localize } from 'vs/nls'; -import { prefersExecuteOnUI, canExecuteOnWorkspace } from 'vs/workbench/services/extensions/common/extensionsUtil'; +import { prefersExecuteOnUI, canExecuteOnWorkspace, prefersExecuteOnWorkspace, canExecuteOnUI, prefersExecuteOnWeb, canExecuteOnWeb } from 'vs/workbench/services/extensions/common/extensionsUtil'; import { IProductService } from 'vs/platform/product/common/productService'; import { Schemas } from 'vs/base/common/network'; import { IDownloadService } from 'vs/platform/download/common/download'; @@ -45,6 +45,9 @@ export class ExtensionManagementService extends Disposable implements IExtension if (this.extensionManagementServerService.remoteExtensionManagementServer) { this.servers.push(this.extensionManagementServerService.remoteExtensionManagementServer); } + if (this.extensionManagementServerService.webExtensionManagementServer) { + this.servers.push(this.extensionManagementServerService.webExtensionManagementServer); + } this.onInstallExtension = this._register(this.servers.reduce((emitter: EventMultiplexer, server) => { emitter.add(server.extensionManagementService.onInstallExtension); return emitter; }, new EventMultiplexer())).event; this.onDidInstallExtension = this._register(this.servers.reduce((emitter: EventMultiplexer, server) => { emitter.add(server.extensionManagementService.onDidInstallExtension); return emitter; }, new EventMultiplexer())).event; @@ -64,7 +67,7 @@ export class ExtensionManagementService extends Disposable implements IExtension if (!server) { return Promise.reject(`Invalid location ${extension.location.toString()}`); } - if (this.extensionManagementServerService.localExtensionManagementServer && this.extensionManagementServerService.remoteExtensionManagementServer) { + if (this.servers.length > 1) { if (isLanguagePackExtension(extension.manifest)) { return this.uninstallEverywhere(extension); } @@ -79,12 +82,14 @@ export class ExtensionManagementService extends Disposable implements IExtension return Promise.reject(`Invalid location ${extension.location.toString()}`); } const promise = server.extensionManagementService.uninstall(extension); - const anotherServer: IExtensionManagementServer | null = server === this.extensionManagementServerService.localExtensionManagementServer ? this.extensionManagementServerService.remoteExtensionManagementServer! : this.extensionManagementServerService.localExtensionManagementServer; - if (anotherServer) { - const installed = await anotherServer.extensionManagementService.getInstalled(ExtensionType.User); - extension = installed.filter(i => areSameExtensions(i.identifier, extension.identifier))[0]; - if (extension) { - await anotherServer.extensionManagementService.uninstall(extension); + const otherServers: IExtensionManagementServer[] = this.servers.filter(s => s !== server); + if (otherServers.length) { + for (const otherServer of otherServers) { + const installed = await otherServer.extensionManagementService.getInstalled(ExtensionType.User); + extension = installed.filter(i => areSameExtensions(i.identifier, extension.identifier))[0]; + if (extension) { + await otherServer.extensionManagementService.uninstall(extension); + } } } return promise; @@ -141,7 +146,10 @@ export class ExtensionManagementService extends Disposable implements IExtension } unzip(zipLocation: URI): Promise { - return Promise.all(this.servers.map(({ extensionManagementService }) => extensionManagementService.unzip(zipLocation))).then(([extensionIdentifier]) => extensionIdentifier); + return Promise.all(this.servers + // Filter out web server + .filter(server => server !== this.extensionManagementServerService.webExtensionManagementServer) + .map(({ extensionManagementService }) => extensionManagementService.unzip(zipLocation))).then(([extensionIdentifier]) => extensionIdentifier); } async install(vsix: URI): Promise { @@ -149,7 +157,7 @@ export class ExtensionManagementService extends Disposable implements IExtension const manifest = await this.getManifest(vsix); if (isLanguagePackExtension(manifest)) { // Install on both servers - const [local] = await Promise.all(this.servers.map(server => this.installVSIX(vsix, server))); + const [local] = await Promise.all([this.extensionManagementServerService.localExtensionManagementServer, this.extensionManagementServerService.remoteExtensionManagementServer].map(server => this.installVSIX(vsix, server))); return local; } if (prefersExecuteOnUI(manifest, this.productService, this.configurationService)) { @@ -183,39 +191,61 @@ export class ExtensionManagementService extends Disposable implements IExtension } async installFromGallery(gallery: IGalleryExtension): Promise { - if (this.extensionManagementServerService.localExtensionManagementServer && this.extensionManagementServerService.remoteExtensionManagementServer) { - const manifest = await this.extensionGalleryService.getManifest(gallery, CancellationToken.None); - if (manifest) { - if (isLanguagePackExtension(manifest)) { - // Install on both servers - return Promise.all(this.servers.map(server => server.extensionManagementService.installFromGallery(gallery))).then(([local]) => local); - } - if (prefersExecuteOnUI(manifest, this.productService, this.configurationService)) { - // Install only on local server - return this.extensionManagementServerService.localExtensionManagementServer.extensionManagementService.installFromGallery(gallery); - } - // Install only on remote server - return this.extensionManagementServerService.remoteExtensionManagementServer.extensionManagementService.installFromGallery(gallery); - } else { - return Promise.reject(localize('Manifest is not found', "Installing Extension {0} failed: Manifest is not found.", gallery.displayName || gallery.name)); - } - } - if (this.extensionManagementServerService.localExtensionManagementServer) { + + // Only local server, install without any checks + if (this.servers.length === 1 && this.extensionManagementServerService.localExtensionManagementServer) { return this.extensionManagementServerService.localExtensionManagementServer.extensionManagementService.installFromGallery(gallery); } - if (this.extensionManagementServerService.remoteExtensionManagementServer) { - const manifest = await this.extensionGalleryService.getManifest(gallery, CancellationToken.None); - if (!manifest) { - return Promise.reject(localize('Manifest is not found', "Installing Extension {0} failed: Manifest is not found.", gallery.displayName || gallery.name)); - } - if (!isLanguagePackExtension(manifest) && !canExecuteOnWorkspace(manifest, this.productService, this.configurationService)) { - const error = new Error(localize('cannot be installed', "Cannot install '{0}' because this extension has defined that it cannot run on the remote server.", gallery.displayName || gallery.name)); - error.name = INSTALL_ERROR_NOT_SUPPORTED; - return Promise.reject(error); - } + + const manifest = await this.extensionGalleryService.getManifest(gallery, CancellationToken.None); + if (!manifest) { + return Promise.reject(localize('Manifest is not found', "Installing Extension {0} failed: Manifest is not found.", gallery.displayName || gallery.name)); + } + + // Install Language pack on all servers + if (isLanguagePackExtension(manifest)) { + return Promise.all(this.servers.map(server => server.extensionManagementService.installFromGallery(gallery))).then(([local]) => local); + } + + // 1. Install on preferred location + + // Install UI preferred extension on local server + if (prefersExecuteOnUI(manifest, this.productService, this.configurationService) && this.extensionManagementServerService.localExtensionManagementServer) { + return this.extensionManagementServerService.localExtensionManagementServer.extensionManagementService.installFromGallery(gallery); + } + // Install Workspace preferred extension on remote server + if (prefersExecuteOnWorkspace(manifest, this.productService, this.configurationService) && this.extensionManagementServerService.remoteExtensionManagementServer) { return this.extensionManagementServerService.remoteExtensionManagementServer.extensionManagementService.installFromGallery(gallery); } - return Promise.reject('No Servers to Install'); + // Install Web preferred extension on web server + if (prefersExecuteOnWeb(manifest, this.productService, this.configurationService) && this.extensionManagementServerService.webExtensionManagementServer) { + return this.extensionManagementServerService.webExtensionManagementServer.extensionManagementService.installFromGallery(gallery); + } + + // 2. Install on supported location + + // Install UI supported extension on local server + if (canExecuteOnUI(manifest, this.productService, this.configurationService) && this.extensionManagementServerService.localExtensionManagementServer) { + return this.extensionManagementServerService.localExtensionManagementServer.extensionManagementService.installFromGallery(gallery); + } + // Install Workspace supported extension on remote server + if (canExecuteOnWorkspace(manifest, this.productService, this.configurationService) && this.extensionManagementServerService.remoteExtensionManagementServer) { + return this.extensionManagementServerService.remoteExtensionManagementServer.extensionManagementService.installFromGallery(gallery); + } + // Install Web supported extension on web server + if (canExecuteOnWeb(manifest, this.productService, this.configurationService) && this.extensionManagementServerService.webExtensionManagementServer) { + return this.extensionManagementServerService.webExtensionManagementServer.extensionManagementService.installFromGallery(gallery); + } + + if (this.extensionManagementServerService.remoteExtensionManagementServer) { + const error = new Error(localize('cannot be installed', "Cannot install '{0}' because this extension has defined that it cannot run on the remote server.", gallery.displayName || gallery.name)); + error.name = INSTALL_ERROR_NOT_SUPPORTED; + return Promise.reject(error); + } + + const error = new Error(localize('cannot be installed on web', "Cannot install '{0}' because this extension has defined that it cannot run on the web server.", gallery.displayName || gallery.name)); + error.name = INSTALL_ERROR_NOT_SUPPORTED; + return Promise.reject(error); } getExtensionsReport(): Promise { @@ -229,6 +259,6 @@ export class ExtensionManagementService extends Disposable implements IExtension } private getServer(extension: ILocalExtension): IExtensionManagementServer | null { - return this.extensionManagementServerService.getExtensionManagementServer(extension.location); + return this.extensionManagementServerService.getExtensionManagementServer(extension); } } diff --git a/src/vs/workbench/services/extensionManagement/common/webExtensionManagementService.ts b/src/vs/workbench/services/extensionManagement/common/webExtensionManagementService.ts new file mode 100644 index 0000000000..92cdd444c7 --- /dev/null +++ b/src/vs/workbench/services/extensionManagement/common/webExtensionManagementService.ts @@ -0,0 +1,117 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { ExtensionType, IExtensionIdentifier, IExtensionManifest, IScannedExtension } from 'vs/platform/extensions/common/extensions'; +import { IExtensionManagementService, ILocalExtension, InstallExtensionEvent, DidInstallExtensionEvent, DidUninstallExtensionEvent, IGalleryExtension, IReportedExtension, IGalleryMetadata, InstallOperation } from 'vs/platform/extensionManagement/common/extensionManagement'; +import { Event, Emitter } from 'vs/base/common/event'; +import { URI } from 'vs/base/common/uri'; +import { IRequestService, isSuccess, asText } from 'vs/platform/request/common/request'; +import { CancellationToken } from 'vs/base/common/cancellation'; +import { localizeManifest } from 'vs/platform/extensionManagement/common/extensionNls'; +import { areSameExtensions } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; +import { IWebExtensionsScannerService } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; +import { ILogService } from 'vs/platform/log/common/log'; +import { Disposable } from 'vs/base/common/lifecycle'; + +export class WebExtensionManagementService extends Disposable implements IExtensionManagementService { + + declare readonly _serviceBrand: undefined; + + private readonly _onInstallExtension = this._register(new Emitter()); + readonly onInstallExtension: Event = this._onInstallExtension.event; + + private readonly _onDidInstallExtension = this._register(new Emitter()); + readonly onDidInstallExtension: Event = this._onDidInstallExtension.event; + + private readonly _onUninstallExtension = this._register(new Emitter()); + readonly onUninstallExtension: Event = this._onUninstallExtension.event; + + private _onDidUninstallExtension = this._register(new Emitter()); + onDidUninstallExtension: Event = this._onDidUninstallExtension.event; + + constructor( + @IWebExtensionsScannerService private readonly webExtensionsScannerService: IWebExtensionsScannerService, + @IRequestService private readonly requestService: IRequestService, + @ILogService private readonly logService: ILogService, + ) { + super(); + } + + async getInstalled(type?: ExtensionType): Promise { + const extensions = await this.webExtensionsScannerService.scanExtensions(type); + return Promise.all(extensions.map(e => this.toLocalExtension(e))); + } + + async installFromGallery(gallery: IGalleryExtension): Promise { + this.logService.info('Installing extension:', gallery.identifier.id); + this._onInstallExtension.fire({ identifier: gallery.identifier, gallery }); + try { + const existingExtension = await this.getUserExtension(gallery.identifier); + if (existingExtension && existingExtension.manifest.version !== gallery.version) { + await this.webExtensionsScannerService.removeExtension(existingExtension.identifier, existingExtension.manifest.version); + } + const scannedExtension = await this.webExtensionsScannerService.addExtension(gallery); + const local = await this.toLocalExtension(scannedExtension); + this._onDidInstallExtension.fire({ local, identifier: gallery.identifier, operation: InstallOperation.Install, gallery }); + return local; + } catch (error) { + this._onDidInstallExtension.fire({ error, identifier: gallery.identifier, operation: InstallOperation.Install, gallery }); + throw error; + } + } + + async uninstall(extension: ILocalExtension): Promise { + this._onUninstallExtension.fire(extension.identifier); + try { + await this.webExtensionsScannerService.removeExtension(extension.identifier); + this._onDidUninstallExtension.fire({ identifier: extension.identifier }); + } catch (error) { + this.logService.error(error); + this._onDidUninstallExtension.fire({ error, identifier: extension.identifier }); + throw error; + } + } + + async updateMetadata(local: ILocalExtension, metadata: IGalleryMetadata): Promise { + return local; + } + + private async getUserExtension(identifier: IExtensionIdentifier): Promise { + const userExtensions = await this.getInstalled(ExtensionType.User); + return userExtensions.find(e => areSameExtensions(e.identifier, identifier)); + } + + private async toLocalExtension(scannedExtension: IScannedExtension): Promise { + let manifest = scannedExtension.packageJSON; + if (scannedExtension.packageNLSUrl) { + try { + const context = await this.requestService.request({ type: 'GET', url: scannedExtension.packageNLSUrl.toString() }, CancellationToken.None); + if (isSuccess(context)) { + const content = await asText(context); + if (content) { + manifest = localizeManifest(manifest, JSON.parse(content)); + } + } + } catch (error) { /* ignore */ } + } + return { + type: scannedExtension.type, + identifier: scannedExtension.identifier, + manifest, + location: scannedExtension.location, + isMachineScoped: false, + publisherId: null, + publisherDisplayName: null + }; + } + + zip(extension: ILocalExtension): Promise { throw new Error('unsupported'); } + unzip(zipLocation: URI): Promise { throw new Error('unsupported'); } + getManifest(vsix: URI): Promise { throw new Error('unsupported'); } + install(vsix: URI, isMachineScoped?: boolean): Promise { throw new Error('unsupported'); } + reinstallFromGallery(extension: ILocalExtension): Promise { throw new Error('unsupported'); } + getExtensionsReport(): Promise { throw new Error('unsupported'); } + +} diff --git a/src/vs/workbench/services/extensionManagement/common/webExtensionsScannerService.ts b/src/vs/workbench/services/extensionManagement/common/webExtensionsScannerService.ts new file mode 100644 index 0000000000..f0ce08611b --- /dev/null +++ b/src/vs/workbench/services/extensionManagement/common/webExtensionsScannerService.ts @@ -0,0 +1,193 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as semver from 'semver-umd'; +import { IBuiltinExtensionsScannerService, IScannedExtension, ExtensionType, IExtensionIdentifier } from 'vs/platform/extensions/common/extensions'; +import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; +import { IWebExtensionsScannerService } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; +import { isWeb } from 'vs/base/common/platform'; +import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; +import { joinPath } from 'vs/base/common/resources'; +import { URI, UriComponents } from 'vs/base/common/uri'; +import { IFileService } from 'vs/platform/files/common/files'; +import { Queue } from 'vs/base/common/async'; +import { VSBuffer } from 'vs/base/common/buffer'; +import { asText, isSuccess, IRequestService } from 'vs/platform/request/common/request'; +import { ILogService } from 'vs/platform/log/common/log'; +import { CancellationToken } from 'vs/base/common/cancellation'; +import { IGalleryExtension } from 'vs/platform/extensionManagement/common/extensionManagement'; +import { groupByExtension, areSameExtensions } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; + +interface IUserExtension { + identifier: IExtensionIdentifier; + version: string; + uri: URI; + readmeUri?: URI; + changelogUri?: URI; + packageNLSUri?: URI; +} + +interface IStoredUserExtension { + identifier: IExtensionIdentifier; + version: string; + uri: UriComponents; + readmeUri?: UriComponents; + changelogUri?: UriComponents; + packageNLSUri?: UriComponents; +} + +const AssetTypeWebResource = 'Microsoft.VisualStudio.Code.WebResources'; + +function getExtensionLocation(assetUri: URI): URI { return joinPath(assetUri, AssetTypeWebResource, 'extension'); } + +export class WebExtensionsScannerService implements IWebExtensionsScannerService { + + declare readonly _serviceBrand: undefined; + + private readonly systemExtensionsPromise: Promise; + private readonly staticExtensions: IScannedExtension[]; + private readonly extensionsResource: URI; + private readonly userExtensionsResourceLimiter: Queue; + + constructor( + @IWorkbenchEnvironmentService environmentService: IWorkbenchEnvironmentService, + @IBuiltinExtensionsScannerService private readonly builtinExtensionsScannerService: IBuiltinExtensionsScannerService, + @IFileService private readonly fileService: IFileService, + @IRequestService private readonly requestService: IRequestService, + @ILogService private readonly logService: ILogService, + ) { + this.extensionsResource = joinPath(environmentService.userRoamingDataHome, 'extensions.json'); + this.userExtensionsResourceLimiter = new Queue(); + this.systemExtensionsPromise = isWeb ? this.builtinExtensionsScannerService.scanBuiltinExtensions() : Promise.resolve([]); + const staticExtensions = environmentService.options && Array.isArray(environmentService.options.staticExtensions) ? environmentService.options.staticExtensions : []; + this.staticExtensions = staticExtensions.map(data => { + location: data.extensionLocation, + type: ExtensionType.User, + packageJSON: data.packageJSON, + }); + } + + async scanExtensions(type?: ExtensionType): Promise { + const extensions = []; + if (type === undefined || type === ExtensionType.System) { + const systemExtensions = await this.systemExtensionsPromise; + extensions.push(...systemExtensions); + } + if (type === undefined || type === ExtensionType.User) { + extensions.push(...this.staticExtensions); + const userExtensions = await this.scanUserExtensions(); + extensions.push(...userExtensions); + } + return extensions; + } + + async addExtension(galleryExtension: IGalleryExtension): Promise { + if (!galleryExtension.assetTypes.some(type => type.startsWith(AssetTypeWebResource))) { + throw new Error(`Missing ${AssetTypeWebResource} asset type`); + } + + const packageNLSUri = joinPath(getExtensionLocation(galleryExtension.assetUri), 'package.nls.json'); + const context = await this.requestService.request({ type: 'GET', url: packageNLSUri.toString() }, CancellationToken.None); + const packageNLSExists = isSuccess(context); + + const userExtensions = await this.readUserExtensions(); + const userExtension: IUserExtension = { + identifier: galleryExtension.identifier, + version: galleryExtension.version, + uri: galleryExtension.assetUri, + readmeUri: galleryExtension.assets.readme ? URI.parse(galleryExtension.assets.readme.uri) : undefined, + changelogUri: galleryExtension.assets.changelog ? URI.parse(galleryExtension.assets.changelog.uri) : undefined, + packageNLSUri: packageNLSExists ? packageNLSUri : undefined + }; + userExtensions.push(userExtension); + await this.writeUserExtensions(userExtensions); + + const scannedExtension = await this.toScannedExtension(userExtension); + if (scannedExtension) { + return scannedExtension; + } + throw new Error('Error while scanning extension'); + } + + async removeExtension(identifier: IExtensionIdentifier, version?: string): Promise { + let userExtensions = await this.readUserExtensions(); + userExtensions = userExtensions.filter(extension => !(areSameExtensions(extension.identifier, identifier) && version ? extension.version === version : true)); + await this.writeUserExtensions(userExtensions); + } + + private async scanUserExtensions(): Promise { + let userExtensions = await this.readUserExtensions(); + const byExtension: IUserExtension[][] = groupByExtension(userExtensions, e => e.identifier); + userExtensions = byExtension.map(p => p.sort((a, b) => semver.rcompare(a.version, b.version))[0]); + const scannedExtensions: IScannedExtension[] = []; + await Promise.all(userExtensions.map(async userExtension => { + try { + const scannedExtension = await this.toScannedExtension(userExtension); + if (scannedExtension) { + scannedExtensions.push(scannedExtension); + } + } catch (error) { + this.logService.error(error, 'Error while scanning user extension', userExtension.identifier.id); + } + })); + return scannedExtensions; + } + + private async toScannedExtension(userExtension: IUserExtension): Promise { + const context = await this.requestService.request({ type: 'GET', url: joinPath(userExtension.uri, 'Microsoft.VisualStudio.Code.Manifest').toString() }, CancellationToken.None); + if (isSuccess(context)) { + const content = await asText(context); + if (content) { + const packageJSON = JSON.parse(content); + return { + identifier: userExtension.identifier, + location: getExtensionLocation(userExtension.uri), + packageJSON, + type: ExtensionType.User, + readmeUrl: userExtension.readmeUri, + changelogUrl: userExtension.changelogUri, + packageNLSUrl: userExtension.packageNLSUri, + }; + } + } + return null; + } + + private readUserExtensions(): Promise { + return this.userExtensionsResourceLimiter.queue(async () => { + try { + const content = await this.fileService.readFile(this.extensionsResource); + const storedUserExtensions: IStoredUserExtension[] = JSON.parse(content.value.toString()); + return storedUserExtensions.map(e => ({ + identifier: e.identifier, + version: e.version, + uri: URI.revive(e.uri), + readmeUri: URI.revive(e.readmeUri), + changelogUri: URI.revive(e.changelogUri), + packageNLSUri: URI.revive(e.packageNLSUri), + })); + } catch (error) { /* Ignore */ } + return []; + }); + } + + private writeUserExtensions(userExtensions: IUserExtension[]): Promise { + return this.userExtensionsResourceLimiter.queue(async () => { + const storedUserExtensions: IStoredUserExtension[] = userExtensions.map(e => ({ + identifier: e.identifier, + version: e.version, + uri: e.uri.toJSON(), + readmeUri: e.readmeUri?.toJSON(), + changelogUri: e.changelogUri?.toJSON(), + packageNLSUri: e.packageNLSUri?.toJSON(), + })); + await this.fileService.writeFile(this.extensionsResource, VSBuffer.fromString(JSON.stringify(storedUserExtensions))); + return userExtensions; + }); + } + +} + +registerSingleton(IWebExtensionsScannerService, WebExtensionsScannerService); diff --git a/src/vs/workbench/services/extensionManagement/electron-browser/extensionManagementServerService.ts b/src/vs/workbench/services/extensionManagement/electron-browser/extensionManagementServerService.ts index be0b562e34..779e8f08c9 100644 --- a/src/vs/workbench/services/extensionManagement/electron-browser/extensionManagementServerService.ts +++ b/src/vs/workbench/services/extensionManagement/electron-browser/extensionManagementServerService.ts @@ -5,7 +5,6 @@ import { localize } from 'vs/nls'; import { Schemas } from 'vs/base/common/network'; -import { URI } from 'vs/base/common/uri'; import { IExtensionGalleryService } from 'vs/platform/extensionManagement/common/extensionManagement'; import { IExtensionManagementServer, IExtensionManagementServerService } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; import { ExtensionManagementChannelClient } from 'vs/platform/extensionManagement/common/extensionManagementIpc'; @@ -19,19 +18,16 @@ import { RemoteExtensionManagementChannelClient } from 'vs/workbench/services/ex import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IProductService } from 'vs/platform/product/common/productService'; import { ILabelService } from 'vs/platform/label/common/label'; - -const localExtensionManagementServerAuthority: string = 'vscode-local'; +import { IExtension } from 'vs/platform/extensions/common/extensions'; export class ExtensionManagementServerService implements IExtensionManagementServerService { declare readonly _serviceBrand: undefined; private readonly _localExtensionManagementServer: IExtensionManagementServer; - public get localExtensionManagementServer(): IExtensionManagementServer { - return this._localExtensionManagementServer; - } + public get localExtensionManagementServer(): IExtensionManagementServer { return this._localExtensionManagementServer; } readonly remoteExtensionManagementServer: IExtensionManagementServer | null = null; - readonly isSingleServer: boolean = false; + readonly webExtensionManagementServer: IExtensionManagementServer | null = null; constructor( @ISharedProcessService sharedProcessService: ISharedProcessService, @@ -44,26 +40,26 @@ export class ExtensionManagementServerService implements IExtensionManagementSer ) { const localExtensionManagementService = new ExtensionManagementChannelClient(sharedProcessService.getChannel('extensions')); - this._localExtensionManagementServer = { extensionManagementService: localExtensionManagementService, authority: localExtensionManagementServerAuthority, label: localize('local', "Local") }; + this._localExtensionManagementServer = { extensionManagementService: localExtensionManagementService, id: 'local', label: localize('local', "Local") }; const remoteAgentConnection = remoteAgentService.getConnection(); if (remoteAgentConnection) { const extensionManagementService = new RemoteExtensionManagementChannelClient(remoteAgentConnection.getChannel('extensions'), this.localExtensionManagementServer.extensionManagementService, galleryService, logService, configurationService, productService); this.remoteExtensionManagementServer = { - authority: remoteAgentConnection.remoteAuthority, + id: 'remote', extensionManagementService, get label() { return labelService.getHostLabel(REMOTE_HOST_SCHEME, remoteAgentConnection!.remoteAuthority) || localize('remote', "Remote"); } }; } } - getExtensionManagementServer(location: URI): IExtensionManagementServer | null { - if (location.scheme === Schemas.file) { + getExtensionManagementServer(extension: IExtension): IExtensionManagementServer { + if (extension.location.scheme === Schemas.file) { return this.localExtensionManagementServer; } - if (location.scheme === REMOTE_HOST_SCHEME) { + if (this.remoteExtensionManagementServer && extension.location.scheme === REMOTE_HOST_SCHEME) { return this.remoteExtensionManagementServer; } - return null; + throw new Error(`Invalid Extension ${extension.location}`); } } diff --git a/src/vs/workbench/services/extensionManagement/test/browser/extensionEnablementService.test.ts b/src/vs/workbench/services/extensionManagement/test/browser/extensionEnablementService.test.ts index 092e961e3e..2c3184272d 100644 --- a/src/vs/workbench/services/extensionManagement/test/browser/extensionEnablementService.test.ts +++ b/src/vs/workbench/services/extensionManagement/test/browser/extensionEnablementService.test.ts @@ -461,7 +461,7 @@ suite('ExtensionEnablementService Test', () => { }); test('test remote ui extension is disabled by kind when there is no local server', async () => { - instantiationService.stub(IExtensionManagementServerService, anExtensionManagementServerService(null, anExtensionManagementServer('vscode-remote', instantiationService))); + instantiationService.stub(IExtensionManagementServerService, anExtensionManagementServerService(null, anExtensionManagementServer('vscode-remote', instantiationService), null)); const localWorkspaceExtension = aLocalExtension2('pub.a', { extensionKind: ['ui'] }, { location: URI.file(`pub.a`).with({ scheme: Schemas.vscodeRemote }) }); testObject = new TestExtensionEnablementService(instantiationService); assert.ok(!testObject.isEnabled(localWorkspaceExtension)); @@ -499,7 +499,7 @@ suite('ExtensionEnablementService Test', () => { }); test('test web extension on remote server is not disabled by kind when there is no local server', async () => { - instantiationService.stub(IExtensionManagementServerService, anExtensionManagementServerService(null, anExtensionManagementServer('vscode-remote', instantiationService))); + instantiationService.stub(IExtensionManagementServerService, anExtensionManagementServerService(null, anExtensionManagementServer('vscode-remote', instantiationService), anExtensionManagementServer('web', instantiationService))); const localWorkspaceExtension = aLocalExtension2('pub.a', { extensionKind: ['web'] }, { location: URI.file(`pub.a`).with({ scheme: Schemas.vscodeRemote }) }); testObject = new TestExtensionEnablementService(instantiationService); assert.ok(testObject.isEnabled(localWorkspaceExtension)); @@ -507,7 +507,7 @@ suite('ExtensionEnablementService Test', () => { }); test('test web extension with no server is not disabled by kind when there is no local server', async () => { - instantiationService.stub(IExtensionManagementServerService, anExtensionManagementServerService(null, anExtensionManagementServer('vscode-remote', instantiationService))); + instantiationService.stub(IExtensionManagementServerService, anExtensionManagementServerService(null, anExtensionManagementServer('vscode-remote', instantiationService), anExtensionManagementServer('web', instantiationService))); const localWorkspaceExtension = aLocalExtension2('pub.a', { extensionKind: ['web'] }, { location: URI.file(`pub.a`).with({ scheme: Schemas.https }) }); testObject = new TestExtensionEnablementService(instantiationService); assert.ok(testObject.isEnabled(localWorkspaceExtension)); @@ -515,7 +515,7 @@ suite('ExtensionEnablementService Test', () => { }); test('test web extension with no server is not disabled by kind when there is no local and remote server', async () => { - instantiationService.stub(IExtensionManagementServerService, anExtensionManagementServerService(null, null)); + instantiationService.stub(IExtensionManagementServerService, anExtensionManagementServerService(null, null, anExtensionManagementServer('web', instantiationService))); const localWorkspaceExtension = aLocalExtension2('pub.a', { extensionKind: ['web'] }, { location: URI.file(`pub.a`).with({ scheme: Schemas.https }) }); testObject = new TestExtensionEnablementService(instantiationService); assert.ok(testObject.isEnabled(localWorkspaceExtension)); @@ -526,7 +526,7 @@ suite('ExtensionEnablementService Test', () => { function anExtensionManagementServer(authority: string, instantiationService: TestInstantiationService): IExtensionManagementServer { return { - authority, + id: authority, label: authority, extensionManagementService: instantiationService.get(IExtensionManagementService) }; @@ -535,22 +535,23 @@ function anExtensionManagementServer(authority: string, instantiationService: Te function aMultiExtensionManagementServerService(instantiationService: TestInstantiationService): IExtensionManagementServerService { const localExtensionManagementServer = anExtensionManagementServer('vscode-local', instantiationService); const remoteExtensionManagementServer = anExtensionManagementServer('vscode-remote', instantiationService); - return anExtensionManagementServerService(localExtensionManagementServer, remoteExtensionManagementServer); + return anExtensionManagementServerService(localExtensionManagementServer, remoteExtensionManagementServer, null); } -function anExtensionManagementServerService(localExtensionManagementServer: IExtensionManagementServer | null, remoteExtensionManagementServer: IExtensionManagementServer | null): IExtensionManagementServerService { +function anExtensionManagementServerService(localExtensionManagementServer: IExtensionManagementServer | null, remoteExtensionManagementServer: IExtensionManagementServer | null, webExtensionManagementServer: IExtensionManagementServer | null): IExtensionManagementServerService { return { _serviceBrand: undefined, localExtensionManagementServer, remoteExtensionManagementServer, - getExtensionManagementServer: (location: URI) => { - if (location.scheme === Schemas.file) { + webExtensionManagementServer: null, + getExtensionManagementServer: (extension: IExtension) => { + if (extension.location.scheme === Schemas.file) { return localExtensionManagementServer; } - if (location.scheme === REMOTE_HOST_SCHEME) { + if (extension.location.scheme === REMOTE_HOST_SCHEME) { return remoteExtensionManagementServer; } - return null; + return webExtensionManagementServer; } }; } diff --git a/src/vs/workbench/services/extensions/browser/extensionService.ts b/src/vs/workbench/services/extensions/browser/extensionService.ts index 89df963273..3459a1e559 100644 --- a/src/vs/workbench/services/extensions/browser/extensionService.ts +++ b/src/vs/workbench/services/extensions/browser/extensionService.ts @@ -5,35 +5,31 @@ import * as nls from 'vs/nls'; import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; -import { IWorkbenchExtensionEnablementService } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; +import { IWorkbenchExtensionEnablementService, IWebExtensionsScannerService } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; -import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; +import { IExtensionService, IExtensionHost } from 'vs/workbench/services/extensions/common/extensions'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { IFileService } from 'vs/platform/files/common/files'; import { IProductService } from 'vs/platform/product/common/productService'; -import { AbstractExtensionService } from 'vs/workbench/services/extensions/common/abstractExtensionService'; -import { ExtensionHostProcessManager } from 'vs/workbench/services/extensions/common/extensionHostProcessManager'; -import { RemoteExtensionHostClient, IInitDataProvider } from 'vs/workbench/services/extensions/common/remoteExtensionHostClient'; -import { IRemoteAgentEnvironment } from 'vs/platform/remote/common/remoteAgentEnvironment'; +import { AbstractExtensionService, parseScannedExtension } from 'vs/workbench/services/extensions/common/abstractExtensionService'; +import { RemoteExtensionHost, IRemoteExtensionHostDataProvider, IRemoteExtensionHostInitData } from 'vs/workbench/services/extensions/common/remoteExtensionHost'; import { INotificationService, Severity } from 'vs/platform/notification/common/notification'; -import { WebWorkerExtensionHostStarter } from 'vs/workbench/services/extensions/browser/webWorkerExtensionHostStarter'; -import { URI } from 'vs/base/common/uri'; +import { WebWorkerExtensionHost } from 'vs/workbench/services/extensions/browser/webWorkerExtensionHost'; import { canExecuteOnWeb } from 'vs/workbench/services/extensions/common/extensionsUtil'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { ExtensionIdentifier } from 'vs/platform/extensions/common/extensions'; import { FetchFileSystemProvider } from 'vs/workbench/services/extensions/browser/webWorkerFileSystemProvider'; import { Schemas } from 'vs/base/common/network'; import { DisposableStore } from 'vs/base/common/lifecycle'; -import { IStaticExtensionsService } from 'vs/workbench/services/extensions/common/staticExtensions'; import { DeltaExtensionsResult } from 'vs/workbench/services/extensions/common/extensionDescriptionRegistry'; import { IRemoteAuthorityResolverService } from 'vs/platform/remote/common/remoteAuthorityResolver'; export class ExtensionService extends AbstractExtensionService implements IExtensionService { private _disposables = new DisposableStore(); - private _remoteExtensionsEnvironmentData: IRemoteAgentEnvironment | null = null; + private _remoteInitData: IRemoteExtensionHostInitData | null = null; constructor( @IInstantiationService instantiationService: IInstantiationService, @@ -46,7 +42,7 @@ export class ExtensionService extends AbstractExtensionService implements IExten @IRemoteAuthorityResolverService private readonly _remoteAuthorityResolverService: IRemoteAuthorityResolverService, @IRemoteAgentService private readonly _remoteAgentService: IRemoteAgentService, @IConfigurationService private readonly _configService: IConfigurationService, - @IStaticExtensionsService private readonly _staticExtensions: IStaticExtensionsService, + @IWebExtensionsScannerService private readonly _webExtensionsScannerService: IWebExtensionsScannerService, ) { super( instantiationService, @@ -73,32 +69,39 @@ export class ExtensionService extends AbstractExtensionService implements IExten this._disposables.add(this._fileService.registerProvider(Schemas.https, provider)); } - private _createProvider(remoteAuthority: string): IInitDataProvider { + private _createLocalExtensionHostDataProvider() { return { - remoteAuthority: remoteAuthority, getInitData: async () => { - await this.whenInstalledExtensionsRegistered(); - const connectionData = this._remoteAuthorityResolverService.getConnectionData(remoteAuthority); - const remoteEnvironment = this._remoteExtensionsEnvironmentData!; - return { connectionData, remoteEnvironment }; + const allExtensions = await this.getExtensions(); + const webExtensions = allExtensions.filter(ext => canExecuteOnWeb(ext, this._productService, this._configService)); + return { + autoStart: true, + extensions: webExtensions + }; } }; } - protected _createExtensionHosts(_isInitialStart: boolean, initialActivationEvents: string[]): ExtensionHostProcessManager[] { - const result: ExtensionHostProcessManager[] = []; + private _createRemoteExtensionHostDataProvider(remoteAuthority: string): IRemoteExtensionHostDataProvider { + return { + remoteAuthority: remoteAuthority, + getInitData: async () => { + await this.whenInstalledExtensionsRegistered(); + return this._remoteInitData!; + } + }; + } - const webExtensions = this.getExtensions().then(extensions => extensions.filter(ext => canExecuteOnWeb(ext, this._productService, this._configService))); - const webHostProcessWorker = this._instantiationService.createInstance(WebWorkerExtensionHostStarter, true, webExtensions, URI.file(this._environmentService.logsPath).with({ scheme: this._environmentService.logFile.scheme })); - const webHostProcessManager = this._instantiationService.createInstance(ExtensionHostProcessManager, false, webHostProcessWorker, null, initialActivationEvents); - result.push(webHostProcessManager); + protected _createExtensionHosts(_isInitialStart: boolean): IExtensionHost[] { + const result: IExtensionHost[] = []; + + const webWorkerExtHost = this._instantiationService.createInstance(WebWorkerExtensionHost, this._createLocalExtensionHostDataProvider()); + result.push(webWorkerExtHost); const remoteAgentConnection = this._remoteAgentService.getConnection(); if (remoteAgentConnection) { - const remoteExtensions = this.getExtensions().then(extensions => extensions.filter(ext => !canExecuteOnWeb(ext, this._productService, this._configService))); - const remoteExtHostProcessWorker = this._instantiationService.createInstance(RemoteExtensionHostClient, remoteExtensions, this._createProvider(remoteAgentConnection.remoteAuthority), this._remoteAgentService.socketFactory); - const remoteExtHostProcessManager = this._instantiationService.createInstance(ExtensionHostProcessManager, false, remoteExtHostProcessWorker, remoteAgentConnection.remoteAuthority, initialActivationEvents); - result.push(remoteExtHostProcessManager); + const remoteExtHost = this._instantiationService.createInstance(RemoteExtensionHost, this._createRemoteExtensionHostDataProvider(remoteAgentConnection.remoteAuthority), this._remoteAgentService.socketFactory); + result.push(remoteExtHost); } return result; @@ -108,16 +111,18 @@ export class ExtensionService extends AbstractExtensionService implements IExten // fetch the remote environment let [remoteEnv, localExtensions] = await Promise.all([ this._remoteAgentService.getEnvironment(), - this._staticExtensions.getExtensions() + this._webExtensionsScannerService.scanExtensions().then(extensions => extensions.map(parseScannedExtension)) ]); + const remoteAgentConnection = this._remoteAgentService.getConnection(); + let result: DeltaExtensionsResult; // local: only enabled and web'ish extension localExtensions = localExtensions!.filter(ext => this._isEnabled(ext) && canExecuteOnWeb(ext, this._productService, this._configService)); this._checkEnableProposedApi(localExtensions); - if (!remoteEnv) { + if (!remoteEnv || !remoteAgentConnection) { result = this._registry.deltaExtensions(localExtensions, []); } else { @@ -131,7 +136,17 @@ export class ExtensionService extends AbstractExtensionService implements IExten localExtensions = localExtensions.filter(extension => !isRemoteExtension.has(ExtensionIdentifier.toKey(extension.identifier))); // save for remote extension's init data - this._remoteExtensionsEnvironmentData = remoteEnv; + this._remoteInitData = { + connectionData: this._remoteAuthorityResolverService.getConnectionData(remoteAgentConnection.remoteAuthority), + pid: remoteEnv.pid, + appRoot: remoteEnv.appRoot, + appSettingsHome: remoteEnv.appSettingsHome, + extensionHostLogsPath: remoteEnv.extensionHostLogsPath, + globalStorageHome: remoteEnv.globalStorageHome, + userHome: remoteEnv.userHome, + extensions: remoteEnv.extensions, + allExtensions: remoteEnv.extensions.concat(localExtensions) + }; result = this._registry.deltaExtensions(remoteEnv.extensions.concat(localExtensions), []); } diff --git a/src/vs/workbench/services/extensions/browser/webWorkerExtensionHostStarter.ts b/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.ts similarity index 87% rename from src/vs/workbench/services/extensions/browser/webWorkerExtensionHostStarter.ts rename to src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.ts index b9a989c4cc..2e4cb212cc 100644 --- a/src/vs/workbench/services/extensions/browser/webWorkerExtensionHostStarter.ts +++ b/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.ts @@ -17,7 +17,7 @@ import { ILogService } from 'vs/platform/log/common/log'; import { IExtensionDescription } from 'vs/platform/extensions/common/extensions'; import * as platform from 'vs/base/common/platform'; import { URI } from 'vs/base/common/uri'; -import { IExtensionHostStarter, ExtensionHostLogFileName } from 'vs/workbench/services/extensions/common/extensions'; +import { IExtensionHost, ExtensionHostLogFileName, ExtensionHostKind } from 'vs/workbench/services/extensions/common/extensions'; import { IProductService } from 'vs/platform/product/common/productService'; import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; import { joinPath } from 'vs/base/common/resources'; @@ -25,7 +25,19 @@ import { Registry } from 'vs/platform/registry/common/platform'; import { IOutputChannelRegistry, Extensions } from 'vs/workbench/services/output/common/output'; import { localize } from 'vs/nls'; -export class WebWorkerExtensionHostStarter implements IExtensionHostStarter { +export interface IWebWorkerExtensionHostInitData { + readonly autoStart: boolean; + readonly extensions: IExtensionDescription[]; +} + +export interface IWebWorkerExtensionHostDataProvider { + getInitData(): Promise; +} + +export class WebWorkerExtensionHost implements IExtensionHost { + + public readonly kind = ExtensionHostKind.LocalWebWorker; + public readonly remoteAuthority = null; private _toDispose = new DisposableStore(); private _isTerminating: boolean = false; @@ -34,12 +46,11 @@ export class WebWorkerExtensionHostStarter implements IExtensionHostStarter { private readonly _onDidExit = new Emitter<[number, string | null]>(); readonly onExit: Event<[number, string | null]> = this._onDidExit.event; + private readonly _extensionHostLogsLocation: URI; private readonly _extensionHostLogFile: URI; constructor( - private readonly _autoStart: boolean, - private readonly _extensions: Promise, - private readonly _extensionHostLogsLocation: URI, + private readonly _initDataProvider: IWebWorkerExtensionHostDataProvider, @ITelemetryService private readonly _telemetryService: ITelemetryService, @IWorkspaceContextService private readonly _contextService: IWorkspaceContextService, @ILabelService private readonly _labelService: ILabelService, @@ -47,6 +58,7 @@ export class WebWorkerExtensionHostStarter implements IExtensionHostStarter { @IWorkbenchEnvironmentService private readonly _environmentService: IWorkbenchEnvironmentService, @IProductService private readonly _productService: IProductService, ) { + this._extensionHostLogsLocation = URI.file(this._environmentService.logsPath).with({ scheme: this._environmentService.logFile.scheme }); this._extensionHostLogFile = joinPath(this._extensionHostLogsLocation, `${ExtensionHostLogFileName}.log`); } @@ -127,7 +139,7 @@ export class WebWorkerExtensionHostStarter implements IExtensionHostStarter { } private async _createExtHostInitData(): Promise { - const [telemetryInfo, extensionDescriptions] = await Promise.all([this._telemetryService.getTelemetryInfo(), this._extensions]); + const [telemetryInfo, initData] = await Promise.all([this._telemetryService.getTelemetryInfo(), this._initDataProvider.getInitData()]); const workspace = this._contextService.getWorkspace(); return { commit: this._productService.commit, @@ -153,12 +165,12 @@ export class WebWorkerExtensionHostStarter implements IExtensionHostStarter { }, resolvedExtensions: [], hostExtensions: [], - extensions: extensionDescriptions, + extensions: initData.extensions, telemetryInfo, logLevel: this._logService.getLevel(), logsLocation: this._extensionHostLogsLocation, logFile: this._extensionHostLogFile, - autoStart: this._autoStart, + autoStart: initData.autoStart, remote: { authority: this._environmentService.configuration.remoteAuthority, connectionData: null, diff --git a/src/vs/workbench/services/extensions/common/abstractExtensionService.ts b/src/vs/workbench/services/extensions/common/abstractExtensionService.ts index 59825d762d..a36fbfe332 100644 --- a/src/vs/workbench/services/extensions/common/abstractExtensionService.ts +++ b/src/vs/workbench/services/extensions/common/abstractExtensionService.ts @@ -15,12 +15,12 @@ import { BetterMergeId } from 'vs/platform/extensionManagement/common/extensionM import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { INotificationService, Severity } from 'vs/platform/notification/common/notification'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; -import { ActivationTimes, ExtensionPointContribution, IExtensionService, IExtensionsStatus, IMessage, IWillActivateEvent, IResponsiveStateChangeEvent, toExtension } from 'vs/workbench/services/extensions/common/extensions'; +import { ActivationTimes, ExtensionPointContribution, IExtensionService, IExtensionsStatus, IMessage, IWillActivateEvent, IResponsiveStateChangeEvent, toExtension, IExtensionHost } from 'vs/workbench/services/extensions/common/extensions'; import { ExtensionMessageCollector, ExtensionPoint, ExtensionsRegistry, IExtensionPoint, IExtensionPointUser } from 'vs/workbench/services/extensions/common/extensionsRegistry'; import { ExtensionDescriptionRegistry } from 'vs/workbench/services/extensions/common/extensionDescriptionRegistry'; import { ResponsiveState } from 'vs/workbench/services/extensions/common/rpcProtocol'; -import { ExtensionHostProcessManager } from 'vs/workbench/services/extensions/common/extensionHostProcessManager'; -import { ExtensionIdentifier, IExtensionDescription } from 'vs/platform/extensions/common/extensions'; +import { ExtensionHostManager } from 'vs/workbench/services/extensions/common/extensionHostManager'; +import { ExtensionIdentifier, IExtensionDescription, IScannedExtension, ExtensionType } from 'vs/platform/extensions/common/extensions'; import { IFileService } from 'vs/platform/files/common/files'; import { parseExtensionDevOptions } from 'vs/workbench/services/extensions/common/extensionDevOptions'; import { IProductService } from 'vs/platform/product/common/productService'; @@ -29,6 +29,16 @@ import { ExtensionActivationReason } from 'vs/workbench/api/common/extHostExtens const hasOwnProperty = Object.hasOwnProperty; const NO_OP_VOID_PROMISE = Promise.resolve(undefined); +export function parseScannedExtension(extension: IScannedExtension): IExtensionDescription { + return { + identifier: new ExtensionIdentifier(`${extension.packageJSON.publisher}.${extension.packageJSON.name}`), + isBuiltin: extension.type === ExtensionType.System, + isUnderDevelopment: false, + extensionLocation: extension.location, + ...extension.packageJSON, + }; +} + export abstract class AbstractExtensionService extends Disposable implements IExtensionService { public _serviceBrand: undefined; @@ -58,9 +68,9 @@ export abstract class AbstractExtensionService extends Disposable implements IEx protected readonly _isExtensionDevTestFromCli: boolean; // --- Members used per extension host process - protected _extensionHostProcessManagers: ExtensionHostProcessManager[]; + protected _extensionHostManagers: ExtensionHostManager[]; protected _extensionHostActiveExtensions: Map; - private _extensionHostProcessActivationTimes: Map; + private _extensionHostActivationTimes: Map; private _extensionHostExtensionRuntimeErrors: Map; constructor( @@ -85,9 +95,9 @@ export abstract class AbstractExtensionService extends Disposable implements IEx this._extensionsMessages = new Map(); this._proposedApiController = new ProposedApiController(this._environmentService, this._productService); - this._extensionHostProcessManagers = []; + this._extensionHostManagers = []; this._extensionHostActiveExtensions = new Map(); - this._extensionHostProcessActivationTimes = new Map(); + this._extensionHostActivationTimes = new Map(); this._extensionHostExtensionRuntimeErrors = new Map(); const devOpts = parseExtensionDevOptions(this._environmentService); @@ -97,7 +107,7 @@ export abstract class AbstractExtensionService extends Disposable implements IEx protected async _initialize(): Promise { perf.mark('willLoadExtensions'); - this._startExtensionHostProcess(true, []); + this._startExtensionHosts(true, []); this.whenInstalledExtensionsRegistered().then(() => perf.mark('didLoadExtensions')); await this._scanAndHandleExtensions(); this._releaseBarrier(); @@ -110,18 +120,18 @@ export abstract class AbstractExtensionService extends Disposable implements IEx this._onDidChangeExtensionsStatus.fire(this._registry.getAllExtensionDescriptions().map(e => e.identifier)); } - private _stopExtensionHostProcess(): void { + private _stopExtensionHosts(): void { let previouslyActivatedExtensionIds: ExtensionIdentifier[] = []; this._extensionHostActiveExtensions.forEach((value) => { previouslyActivatedExtensionIds.push(value); }); - for (const manager of this._extensionHostProcessManagers) { + for (const manager of this._extensionHostManagers) { manager.dispose(); } - this._extensionHostProcessManagers = []; + this._extensionHostManagers = []; this._extensionHostActiveExtensions = new Map(); - this._extensionHostProcessActivationTimes = new Map(); + this._extensionHostActivationTimes = new Map(); this._extensionHostExtensionRuntimeErrors = new Map(); if (previouslyActivatedExtensionIds.length > 0) { @@ -129,18 +139,19 @@ export abstract class AbstractExtensionService extends Disposable implements IEx } } - private _startExtensionHostProcess(isInitialStart: boolean, initialActivationEvents: string[]): void { - this._stopExtensionHostProcess(); + private _startExtensionHosts(isInitialStart: boolean, initialActivationEvents: string[]): void { + this._stopExtensionHosts(); - const processManagers = this._createExtensionHosts(isInitialStart, initialActivationEvents); - processManagers.forEach((processManager) => { + const extensionHosts = this._createExtensionHosts(isInitialStart); + extensionHosts.forEach((extensionHost) => { + const processManager = this._instantiationService.createInstance(ExtensionHostManager, extensionHost, initialActivationEvents); processManager.onDidExit(([code, signal]) => this._onExtensionHostCrashOrExit(processManager, code, signal)); processManager.onDidChangeResponsiveState((responsiveState) => { this._onDidChangeResponsiveChange.fire({ isResponsive: responsiveState === ResponsiveState.Responsive }); }); - this._extensionHostProcessManagers.push(processManager); + this._extensionHostManagers.push(processManager); }); } - private _onExtensionHostCrashOrExit(extensionHost: ExtensionHostProcessManager, code: number, signal: string | null): void { + private _onExtensionHostCrashOrExit(extensionHost: ExtensionHostManager, code: number, signal: string | null): void { // Unexpected termination if (!this._isExtensionDevHost) { @@ -151,9 +162,9 @@ export abstract class AbstractExtensionService extends Disposable implements IEx this._onExtensionHostExit(code); } - protected _onExtensionHostCrashed(extensionHost: ExtensionHostProcessManager, code: number, signal: string | null): void { + protected _onExtensionHostCrashed(extensionHost: ExtensionHostManager, code: number, signal: string | null): void { console.error('Extension host terminated unexpectedly. Code: ', code, ' Signal: ', signal); - this._stopExtensionHostProcess(); + this._stopExtensionHosts(); } //#region IExtensionService @@ -167,12 +178,12 @@ export abstract class AbstractExtensionService extends Disposable implements IEx } public restartExtensionHost(): void { - this._stopExtensionHostProcess(); - this._startExtensionHostProcess(false, Array.from(this._allRequestedActivateEvents.keys())); + this._stopExtensionHosts(); + this._startExtensionHosts(false, Array.from(this._allRequestedActivateEvents.keys())); } protected startExtensionHost(): void { - this._startExtensionHostProcess(false, Array.from(this._allRequestedActivateEvents.keys())); + this._startExtensionHosts(false, Array.from(this._allRequestedActivateEvents.keys())); } public activateByEvent(activationEvent: string): Promise { @@ -200,7 +211,7 @@ export abstract class AbstractExtensionService extends Disposable implements IEx private _activateByEvent(activationEvent: string): Promise { const result = Promise.all( - this._extensionHostProcessManagers.map(extHostManager => extHostManager.activateByEvent(activationEvent)) + this._extensionHostManagers.map(extHostManager => extHostManager.activateByEvent(activationEvent)) ).then(() => { }); this._onWillActivateByEvent.fire({ event: activationEvent, @@ -248,7 +259,7 @@ export abstract class AbstractExtensionService extends Disposable implements IEx const extensionKey = ExtensionIdentifier.toKey(extension.identifier); result[extension.identifier.value] = { messages: this._extensionsMessages.get(extensionKey) || [], - activationTimes: this._extensionHostProcessActivationTimes.get(extensionKey), + activationTimes: this._extensionHostActivationTimes.get(extensionKey), runtimeErrors: this._extensionHostExtensionRuntimeErrors.get(extensionKey) || [], }; } @@ -261,7 +272,7 @@ export abstract class AbstractExtensionService extends Disposable implements IEx } public async setRemoteEnvironment(env: { [key: string]: string | null }): Promise { - await this._extensionHostProcessManagers + await this._extensionHostManagers .map(manager => manager.setRemoteEnvironment(env)); } @@ -275,6 +286,14 @@ export abstract class AbstractExtensionService extends Disposable implements IEx } } + protected _checkEnabledAndProposedAPI(extensions: IExtensionDescription[]): IExtensionDescription[] { + // enable or disable proposed API per extension + this._checkEnableProposedApi(extensions); + + // keep only enabled extensions + return extensions.filter(extension => this._isEnabled(extension)); + } + private _isExtensionUnderDevelopment(extension: IExtensionDescription): boolean { if (this._environmentService.isExtensionDevelopment) { const extDevLocs = this._environmentService.extensionDevelopmentLocationURI; @@ -291,21 +310,17 @@ export abstract class AbstractExtensionService extends Disposable implements IEx } protected _isEnabled(extension: IExtensionDescription): boolean { - return !this._isDisabled(extension); - } - - protected _isDisabled(extension: IExtensionDescription): boolean { if (this._isExtensionUnderDevelopment(extension)) { // Never disable extensions under development - return false; + return true; } if (ExtensionIdentifier.equals(extension.identifier, BetterMergeId)) { // Check if this is the better merge extension which was migrated to a built-in extension - return true; + return false; } - return !this._extensionEnablementService.isEnabled(toExtension(extension)); + return this._extensionEnablementService.isEnabled(toExtension(extension)); } protected _doHandleExtensionPoints(affectedExtensions: IExtensionDescription[]): void { @@ -413,7 +428,7 @@ export abstract class AbstractExtensionService extends Disposable implements IEx public async _activateById(extensionId: ExtensionIdentifier, reason: ExtensionActivationReason): Promise { const results = await Promise.all( - this._extensionHostProcessManagers.map(manager => manager.activate(extensionId, reason)) + this._extensionHostManagers.map(manager => manager.activate(extensionId, reason)) ); const activated = results.some(e => e); if (!activated) { @@ -426,7 +441,7 @@ export abstract class AbstractExtensionService extends Disposable implements IEx } public _onDidActivateExtension(extensionId: ExtensionIdentifier, codeLoadingTime: number, activateCallTime: number, activateResolvedTime: number, activationReason: ExtensionActivationReason): void { - this._extensionHostProcessActivationTimes.set(ExtensionIdentifier.toKey(extensionId), new ActivationTimes(codeLoadingTime, activateCallTime, activateResolvedTime, activationReason)); + this._extensionHostActivationTimes.set(ExtensionIdentifier.toKey(extensionId), new ActivationTimes(codeLoadingTime, activateCallTime, activateResolvedTime, activationReason)); this._onDidChangeExtensionsStatus.fire([extensionId]); } @@ -441,7 +456,7 @@ export abstract class AbstractExtensionService extends Disposable implements IEx //#endregion - protected abstract _createExtensionHosts(isInitialStart: boolean, initialActivationEvents: string[]): ExtensionHostProcessManager[]; + protected abstract _createExtensionHosts(isInitialStart: boolean): IExtensionHost[]; protected abstract _scanAndHandleExtensions(): Promise; public abstract _onExtensionHostExit(code: number): void; } diff --git a/src/vs/workbench/services/extensions/common/extensionHostProcessManager.ts b/src/vs/workbench/services/extensions/common/extensionHostManager.ts similarity index 76% rename from src/vs/workbench/services/extensions/common/extensionHostProcessManager.ts rename to src/vs/workbench/services/extensions/common/extensionHostManager.ts index a4f836f60b..a2b9c699d2 100644 --- a/src/vs/workbench/services/extensions/common/extensionHostProcessManager.ts +++ b/src/vs/workbench/services/extensions/common/extensionHostManager.ts @@ -21,17 +21,17 @@ import { registerAction2, Action2 } from 'vs/platform/actions/common/actions'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { StopWatch } from 'vs/base/common/stopwatch'; import { VSBuffer } from 'vs/base/common/buffer'; -import { IExtensionHostStarter } from 'vs/workbench/services/extensions/common/extensions'; +import { IExtensionHost, ExtensionHostKind } from 'vs/workbench/services/extensions/common/extensions'; import { ExtensionActivationReason } from 'vs/workbench/api/common/extHostExtensionActivator'; // Enable to see detailed message communication between window and extension host const LOG_EXTENSION_HOST_COMMUNICATION = false; const LOG_USE_COLORS = true; - const NO_OP_VOID_PROMISE = Promise.resolve(undefined); -export class ExtensionHostProcessManager extends Disposable { +export class ExtensionHostManager extends Disposable { + public readonly kind: ExtensionHostKind; public readonly onDidExit: Event<[number, string | null]>; private readonly _onDidChangeResponsiveState: Emitter = this._register(new Emitter()); @@ -40,32 +40,31 @@ export class ExtensionHostProcessManager extends Disposable { /** * A map of already activated events to speed things up if the same activation event is triggered multiple times. */ - private readonly _extensionHostProcessFinishedActivateEvents: { [activationEvent: string]: boolean; }; - private _extensionHostProcessRPCProtocol: RPCProtocol | null; - private readonly _extensionHostProcessCustomers: IDisposable[]; - private readonly _extensionHostProcessWorker: IExtensionHostStarter; + private readonly _finishedActivateEvents: { [activationEvent: string]: boolean; }; + private _rpcProtocol: RPCProtocol | null; + private readonly _customers: IDisposable[]; + private readonly _extensionHost: IExtensionHost; /** * winjs believes a proxy is a promise because it has a `then` method, so wrap the result in an object. */ - private _extensionHostProcessProxy: Promise<{ value: ExtHostExtensionServiceShape; } | null> | null; + private _proxy: Promise<{ value: ExtHostExtensionServiceShape; } | null> | null; private _resolveAuthorityAttempt: number; constructor( - public readonly isLocal: boolean, - extensionHostProcessWorker: IExtensionHostStarter, - private readonly _remoteAuthority: string | null, + extensionHost: IExtensionHost, initialActivationEvents: string[], @IInstantiationService private readonly _instantiationService: IInstantiationService, @IWorkbenchEnvironmentService private readonly _environmentService: IWorkbenchEnvironmentService, ) { super(); - this._extensionHostProcessFinishedActivateEvents = Object.create(null); - this._extensionHostProcessRPCProtocol = null; - this._extensionHostProcessCustomers = []; + this._finishedActivateEvents = Object.create(null); + this._rpcProtocol = null; + this._customers = []; - this._extensionHostProcessWorker = extensionHostProcessWorker; - this.onDidExit = this._extensionHostProcessWorker.onExit; - this._extensionHostProcessProxy = this._extensionHostProcessWorker.start()!.then( + this._extensionHost = extensionHost; + this.kind = this._extensionHost.kind; + this.onDidExit = this._extensionHost.onExit; + this._proxy = this._extensionHost.start()!.then( (protocol) => { return { value: this._createExtensionHostCustomers(protocol) }; }, @@ -75,7 +74,7 @@ export class ExtensionHostProcessManager extends Disposable { return null; } ); - this._extensionHostProcessProxy.then(() => { + this._proxy.then(() => { initialActivationEvents.forEach((activationEvent) => this.activateByEvent(activationEvent)); this._register(registerLatencyTestProvider({ measure: () => this.measure() @@ -85,27 +84,27 @@ export class ExtensionHostProcessManager extends Disposable { } public dispose(): void { - if (this._extensionHostProcessWorker) { - this._extensionHostProcessWorker.dispose(); + if (this._extensionHost) { + this._extensionHost.dispose(); } - if (this._extensionHostProcessRPCProtocol) { - this._extensionHostProcessRPCProtocol.dispose(); + if (this._rpcProtocol) { + this._rpcProtocol.dispose(); } - for (let i = 0, len = this._extensionHostProcessCustomers.length; i < len; i++) { - const customer = this._extensionHostProcessCustomers[i]; + for (let i = 0, len = this._customers.length; i < len; i++) { + const customer = this._customers[i]; try { customer.dispose(); } catch (err) { errors.onUnexpectedError(err); } } - this._extensionHostProcessProxy = null; + this._proxy = null; super.dispose(); } private async measure(): Promise { - const proxy = await this._getExtensionHostProcessProxy(); + const proxy = await this._getProxy(); if (!proxy) { return null; } @@ -113,18 +112,18 @@ export class ExtensionHostProcessManager extends Disposable { const down = await this._measureDown(proxy); const up = await this._measureUp(proxy); return { - remoteAuthority: this._remoteAuthority, + remoteAuthority: this._extensionHost.remoteAuthority, latency, down, up }; } - private async _getExtensionHostProcessProxy(): Promise { - if (!this._extensionHostProcessProxy) { + private async _getProxy(): Promise { + if (!this._proxy) { return null; } - const p = await this._extensionHostProcessProxy; + const p = await this._proxy; if (!p) { return null; } @@ -159,7 +158,7 @@ export class ExtensionHostProcessManager extends Disposable { const sw = StopWatch.create(true); await proxy.$test_up(buff); sw.stop(); - return ExtensionHostProcessManager._convert(SIZE, sw.elapsed()); + return ExtensionHostManager._convert(SIZE, sw.elapsed()); } private async _measureDown(proxy: ExtHostExtensionServiceShape): Promise { @@ -168,7 +167,7 @@ export class ExtensionHostProcessManager extends Disposable { const sw = StopWatch.create(true); await proxy.$test_down(SIZE); sw.stop(); - return ExtensionHostProcessManager._convert(SIZE, sw.elapsed()); + return ExtensionHostManager._convert(SIZE, sw.elapsed()); } private _createExtensionHostCustomers(protocol: IMessagePassingProtocol): ExtHostExtensionServiceShape { @@ -178,13 +177,13 @@ export class ExtensionHostProcessManager extends Disposable { logger = new RPCLogger(); } - this._extensionHostProcessRPCProtocol = new RPCProtocol(protocol, logger); - this._register(this._extensionHostProcessRPCProtocol.onDidChangeResponsiveState((responsiveState: ResponsiveState) => this._onDidChangeResponsiveState.fire(responsiveState))); + this._rpcProtocol = new RPCProtocol(protocol, logger); + this._register(this._rpcProtocol.onDidChangeResponsiveState((responsiveState: ResponsiveState) => this._onDidChangeResponsiveState.fire(responsiveState))); const extHostContext: IExtHostContext = { - remoteAuthority: this._remoteAuthority! /* TODO: alexdima, remove not-null assertion */, - getProxy: (identifier: ProxyIdentifier): T => this._extensionHostProcessRPCProtocol!.getProxy(identifier), - set: (identifier: ProxyIdentifier, instance: R): R => this._extensionHostProcessRPCProtocol!.set(identifier, instance), - assertRegistered: (identifiers: ProxyIdentifier[]): void => this._extensionHostProcessRPCProtocol!.assertRegistered(identifiers), + remoteAuthority: this._extensionHost.remoteAuthority, + getProxy: (identifier: ProxyIdentifier): T => this._rpcProtocol!.getProxy(identifier), + set: (identifier: ProxyIdentifier, instance: R): R => this._rpcProtocol!.set(identifier, instance), + assertRegistered: (identifiers: ProxyIdentifier[]): void => this._rpcProtocol!.assertRegistered(identifiers), }; // Named customers @@ -192,28 +191,28 @@ export class ExtensionHostProcessManager extends Disposable { for (let i = 0, len = namedCustomers.length; i < len; i++) { const [id, ctor] = namedCustomers[i]; const instance = this._instantiationService.createInstance(ctor, extHostContext); - this._extensionHostProcessCustomers.push(instance); - this._extensionHostProcessRPCProtocol.set(id, instance); + this._customers.push(instance); + this._rpcProtocol.set(id, instance); } // Customers const customers = ExtHostCustomersRegistry.getCustomers(); for (const ctor of customers) { const instance = this._instantiationService.createInstance(ctor, extHostContext); - this._extensionHostProcessCustomers.push(instance); + this._customers.push(instance); } // Check that no named customers are missing // {{SQL CARBON EDIT}} filter out services we don't expose const filtered: ProxyIdentifier[] = [MainContext.MainThreadDebugService, MainContext.MainThreadTask]; const expected: ProxyIdentifier[] = Object.keys(MainContext).map((key) => (MainContext)[key]).filter(v => !filtered.some(x => x === v)); - this._extensionHostProcessRPCProtocol.assertRegistered(expected); + this._rpcProtocol.assertRegistered(expected); - return this._extensionHostProcessRPCProtocol.getProxy(ExtHostContext.ExtHostExtensionService); + return this._rpcProtocol.getProxy(ExtHostContext.ExtHostExtensionService); } public async activate(extension: ExtensionIdentifier, reason: ExtensionActivationReason): Promise { - const proxy = await this._getExtensionHostProcessProxy(); + const proxy = await this._getProxy(); if (!proxy) { return false; } @@ -221,10 +220,10 @@ export class ExtensionHostProcessManager extends Disposable { } public activateByEvent(activationEvent: string): Promise { - if (this._extensionHostProcessFinishedActivateEvents[activationEvent] || !this._extensionHostProcessProxy) { + if (this._finishedActivateEvents[activationEvent] || !this._proxy) { return NO_OP_VOID_PROMISE; } - return this._extensionHostProcessProxy.then((proxy) => { + return this._proxy.then((proxy) => { if (!proxy) { // this case is already covered above and logged. // i.e. the extension host could not be started @@ -232,16 +231,16 @@ export class ExtensionHostProcessManager extends Disposable { } return proxy.value.$activateByEvent(activationEvent); }).then(() => { - this._extensionHostProcessFinishedActivateEvents[activationEvent] = true; + this._finishedActivateEvents[activationEvent] = true; }); } public async getInspectPort(tryEnableInspector: boolean): Promise { - if (this._extensionHostProcessWorker) { + if (this._extensionHost) { if (tryEnableInspector) { - await this._extensionHostProcessWorker.enableInspectPort(); + await this._extensionHost.enableInspectPort(); } - let port = this._extensionHostProcessWorker.getInspectPort(); + let port = this._extensionHost.getInspectPort(); if (port) { return port; } @@ -262,7 +261,7 @@ export class ExtensionHostProcessManager extends Disposable { } }); } - const proxy = await this._getExtensionHostProcessProxy(); + const proxy = await this._getProxy(); if (!proxy) { throw new Error(`Cannot resolve authority`); } @@ -276,7 +275,7 @@ export class ExtensionHostProcessManager extends Disposable { } public async start(enabledExtensionIds: ExtensionIdentifier[]): Promise { - const proxy = await this._getExtensionHostProcessProxy(); + const proxy = await this._getProxy(); if (!proxy) { return; } @@ -284,7 +283,7 @@ export class ExtensionHostProcessManager extends Disposable { } public async deltaExtensions(toAdd: IExtensionDescription[], toRemove: ExtensionIdentifier[]): Promise { - const proxy = await this._getExtensionHostProcessProxy(); + const proxy = await this._getProxy(); if (!proxy) { return; } @@ -292,7 +291,7 @@ export class ExtensionHostProcessManager extends Disposable { } public async setRemoteEnvironment(env: { [key: string]: string | null }): Promise { - const proxy = await this._getExtensionHostProcessProxy(); + const proxy = await this._getProxy(); if (!proxy) { return; } @@ -396,7 +395,7 @@ registerAction2(class MeasureExtHostLatencyAction extends Action2 { value: nls.localize('measureExtHostLatency', "Measure Extension Host Latency"), original: 'Measure Extension Host Latency' }, - category: nls.localize('developer', "Developer"), + category: nls.localize({ key: 'developer', comment: ['A developer on Code itself or someone diagnosing issues in Code'] }, "Developer"), f1: true }); } diff --git a/src/vs/workbench/services/extensions/common/extensions.ts b/src/vs/workbench/services/extensions/common/extensions.ts index 891fa15a9c..897790a87d 100644 --- a/src/vs/workbench/services/extensions/common/extensions.ts +++ b/src/vs/workbench/services/extensions/common/extensions.ts @@ -24,6 +24,8 @@ export const nullExtensionDescription = Object.freeze({ isBuiltin: false, }); +export const webWorkerExtHostConfig = 'extensions.webWorker'; + export const IExtensionService = createDecorator('extensionService'); export interface IMessage { @@ -84,7 +86,15 @@ export interface IExtensionHostProfile { getAggregatedTimes(): Map; } -export interface IExtensionHostStarter { +export const enum ExtensionHostKind { + LocalProcess, + LocalWebWorker, + Remote +} + +export interface IExtensionHost { + readonly kind: ExtensionHostKind; + readonly remoteAuthority: string | null; readonly onExit: Event<[number, string | null]>; start(): Promise | null; @@ -257,6 +267,17 @@ export function toExtension(extensionDescription: IExtensionDescription): IExten }; } +export function toExtensionDescription(extension: IExtension): IExtensionDescription { + return { + identifier: new ExtensionIdentifier(extension.identifier.id), + isBuiltin: extension.type === ExtensionType.System, + isUnderDevelopment: false, + extensionLocation: extension.location, + ...extension.manifest, + uuid: extension.identifier.uuid + }; +} + export class NullExtensionService implements IExtensionService { declare readonly _serviceBrand: undefined; diff --git a/src/vs/workbench/services/extensions/common/extensionsRegistry.ts b/src/vs/workbench/services/extensions/common/extensionsRegistry.ts index 1f5ebf7644..531011de78 100644 --- a/src/vs/workbench/services/extensions/common/extensionsRegistry.ts +++ b/src/vs/workbench/services/extensions/common/extensionsRegistry.ts @@ -11,7 +11,7 @@ import { EXTENSION_IDENTIFIER_PATTERN } from 'vs/platform/extensionManagement/co import { Extensions, IJSONContributionRegistry } from 'vs/platform/jsonschemas/common/jsonContributionRegistry'; import { Registry } from 'vs/platform/registry/common/platform'; import { IMessage } from 'vs/workbench/services/extensions/common/extensions'; -import { ExtensionIdentifier, IExtensionDescription } from 'vs/platform/extensions/common/extensions'; +import { ExtensionIdentifier, IExtensionDescription, EXTENSION_CATEGORIES } from 'vs/platform/extensions/common/extensions'; import { values } from 'vs/base/common/map'; const schemaRegistry = Registry.as(Extensions.JSONContribution); @@ -187,7 +187,7 @@ export const schema: IJSONSchema = { items: { oneOf: [{ type: 'string', - enum: ['Programming Languages', 'Snippets', 'Linters', 'Themes', 'Debuggers', 'Other', 'Keymaps', 'Formatters', 'Extension Packs', 'SCM Providers', 'Azure', 'Language Packs'], + enum: EXTENSION_CATEGORIES, }, { type: 'string', @@ -271,7 +271,7 @@ export const schema: IJSONSchema = { }, { label: 'onStartupFinished', - description: nls.localize('vscode.extension.activationEvents.onStartupFinished', 'An activation event emitted after the start-up finished (after all eager activated extensions have finished activating).'), + description: nls.localize('vscode.extension.activationEvents.onStartupFinished', 'An activation event emitted after the start-up finished (after all `*` activated extensions have finished activating).'), body: 'onStartupFinished' }, { diff --git a/src/vs/workbench/services/extensions/common/extensionsUtil.ts b/src/vs/workbench/services/extensions/common/extensionsUtil.ts index 9c14bbc093..91b41153cb 100644 --- a/src/vs/workbench/services/extensions/common/extensionsUtil.ts +++ b/src/vs/workbench/services/extensions/common/extensionsUtil.ts @@ -20,6 +20,11 @@ export function prefersExecuteOnWorkspace(manifest: IExtensionManifest, productS return (extensionKind.length > 0 && extensionKind[0] === 'workspace'); } +export function prefersExecuteOnWeb(manifest: IExtensionManifest, productService: IProductService, configurationService: IConfigurationService): boolean { + const extensionKind = getExtensionKind(manifest, productService, configurationService); + return (extensionKind.length > 0 && extensionKind[0] === 'web'); +} + export function canExecuteOnUI(manifest: IExtensionManifest, productService: IProductService, configurationService: IConfigurationService): boolean { const extensionKind = getExtensionKind(manifest, productService, configurationService); return extensionKind.some(kind => kind === 'ui'); diff --git a/src/vs/workbench/services/extensions/common/remoteExtensionHostClient.ts b/src/vs/workbench/services/extensions/common/remoteExtensionHost.ts similarity index 72% rename from src/vs/workbench/services/extensions/common/remoteExtensionHostClient.ts rename to src/vs/workbench/services/extensions/common/remoteExtensionHost.ts index 565ea987e1..3ab170b817 100644 --- a/src/vs/workbench/services/extensions/common/remoteExtensionHostClient.ts +++ b/src/vs/workbench/services/extensions/common/remoteExtensionHost.ts @@ -13,9 +13,8 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace'; import { IInitData, UIKind } from 'vs/workbench/api/common/extHost.protocol'; import { MessageType, createMessageOfType, isMessageOfType } from 'vs/workbench/services/extensions/common/extensionHostProtocol'; -import { IExtensionHostStarter, ExtensionHostLogFileName } from 'vs/workbench/services/extensions/common/extensions'; +import { IExtensionHost, ExtensionHostLogFileName, ExtensionHostKind } from 'vs/workbench/services/extensions/common/extensions'; import { parseExtensionDevOptions } from 'vs/workbench/services/extensions/common/extensionDevOptions'; -import { IRemoteAgentEnvironment } from 'vs/platform/remote/common/remoteAgentEnvironment'; import { IRemoteAuthorityResolverService, IRemoteConnectionData } from 'vs/platform/remote/common/remoteAuthorityResolver'; import * as platform from 'vs/base/common/platform'; import { Schemas } from 'vs/base/common/network'; @@ -33,30 +32,37 @@ import { Registry } from 'vs/platform/registry/common/platform'; import { IOutputChannelRegistry, Extensions } from 'vs/workbench/services/output/common/output'; import { localize } from 'vs/nls'; -export interface IRemoteInitData { +export interface IRemoteExtensionHostInitData { readonly connectionData: IRemoteConnectionData | null; - readonly remoteEnvironment: IRemoteAgentEnvironment; + readonly pid: number; + readonly appRoot: URI; + readonly appSettingsHome: URI; + readonly extensionHostLogsPath: URI; + readonly globalStorageHome: URI; + readonly userHome: URI; + readonly extensions: IExtensionDescription[]; + readonly allExtensions: IExtensionDescription[]; } -export interface IInitDataProvider { +export interface IRemoteExtensionHostDataProvider { readonly remoteAuthority: string; - getInitData(): Promise; + getInitData(): Promise; } -export class RemoteExtensionHostClient extends Disposable implements IExtensionHostStarter { +export class RemoteExtensionHost extends Disposable implements IExtensionHost { + + public readonly kind = ExtensionHostKind.Remote; + public readonly remoteAuthority: string; private _onExit: Emitter<[number, string | null]> = this._register(new Emitter<[number, string | null]>()); public readonly onExit: Event<[number, string | null]> = this._onExit.event; private _protocol: PersistentProtocol | null; - + private _terminating: boolean; private readonly _isExtensionDevHost: boolean; - private _terminating: boolean; - constructor( - private readonly _allExtensions: Promise, - private readonly _initDataProvider: IInitDataProvider, + private readonly _initDataProvider: IRemoteExtensionHostDataProvider, private readonly _socketFactory: ISocketFactory, @IWorkspaceContextService private readonly _contextService: IWorkspaceContextService, @IWorkbenchEnvironmentService private readonly _environmentService: IWorkbenchEnvironmentService, @@ -70,6 +76,7 @@ export class RemoteExtensionHostClient extends Disposable implements IExtensionH @ISignService private readonly _signService: ISignService ) { super(); + this.remoteAuthority = this._initDataProvider.remoteAuthority; this._protocol = null; this._terminating = false; @@ -194,54 +201,52 @@ export class RemoteExtensionHostClient extends Disposable implements IExtensionH this._onExit.fire([0, null]); } - private _createExtHostInitData(isExtensionDevelopmentDebug: boolean): Promise { - return Promise.all([this._allExtensions, this._telemetryService.getTelemetryInfo(), this._initDataProvider.getInitData()]).then(([allExtensions, telemetryInfo, remoteInitData]) => { - // Collect all identifiers for extension ids which can be considered "resolved" - const resolvedExtensions = allExtensions.filter(extension => !extension.main).map(extension => extension.identifier); - const hostExtensions = allExtensions.filter(extension => extension.main && extension.api === 'none').map(extension => extension.identifier); - const workspace = this._contextService.getWorkspace(); - const remoteEnv = remoteInitData.remoteEnvironment; - const r: IInitData = { - commit: this._productService.commit, - version: this._productService.version, - vscodeVersion: this._productService.vscodeVersion, // {{SQL CARBON EDIT}} add vscode version - parentPid: remoteEnv.pid, - environment: { - isExtensionDevelopmentDebug, - appRoot: remoteEnv.appRoot, - appSettingsHome: remoteEnv.appSettingsHome, - appName: this._productService.nameLong, - appUriScheme: this._productService.urlProtocol, - appLanguage: platform.language, - extensionDevelopmentLocationURI: this._environmentService.extensionDevelopmentLocationURI, - extensionTestsLocationURI: this._environmentService.extensionTestsLocationURI, - globalStorageHome: remoteEnv.globalStorageHome, - userHome: remoteEnv.userHome, - webviewResourceRoot: this._environmentService.webviewResourceRoot, - webviewCspSource: this._environmentService.webviewCspSource, - }, - workspace: this._contextService.getWorkbenchState() === WorkbenchState.EMPTY ? null : { - configuration: workspace.configuration, - id: workspace.id, - name: this._labelService.getWorkspaceLabel(workspace) - }, - remote: { - isRemote: true, - authority: this._initDataProvider.remoteAuthority, - connectionData: remoteInitData.connectionData - }, - resolvedExtensions: resolvedExtensions, - hostExtensions: hostExtensions, - extensions: remoteEnv.extensions, - telemetryInfo, - logLevel: this._logService.getLevel(), - logsLocation: remoteEnv.extensionHostLogsPath, - logFile: joinPath(remoteEnv.extensionHostLogsPath, `${ExtensionHostLogFileName}.log`), - autoStart: true, - uiKind: platform.isWeb ? UIKind.Web : UIKind.Desktop - }; - return r; - }); + private async _createExtHostInitData(isExtensionDevelopmentDebug: boolean): Promise { + const [telemetryInfo, remoteInitData] = await Promise.all([this._telemetryService.getTelemetryInfo(), this._initDataProvider.getInitData()]); + + // Collect all identifiers for extension ids which can be considered "resolved" + const resolvedExtensions = remoteInitData.allExtensions.filter(extension => !extension.main).map(extension => extension.identifier); + const hostExtensions = remoteInitData.allExtensions.filter(extension => extension.main && extension.api === 'none').map(extension => extension.identifier); + const workspace = this._contextService.getWorkspace(); + return { + commit: this._productService.commit, + version: this._productService.version, + vscodeVersion: this._productService.vscodeVersion, // {{SQL CARBON EDIT}} add vscode version + parentPid: remoteInitData.pid, + environment: { + isExtensionDevelopmentDebug, + appRoot: remoteInitData.appRoot, + appSettingsHome: remoteInitData.appSettingsHome, + appName: this._productService.nameLong, + appUriScheme: this._productService.urlProtocol, + appLanguage: platform.language, + extensionDevelopmentLocationURI: this._environmentService.extensionDevelopmentLocationURI, + extensionTestsLocationURI: this._environmentService.extensionTestsLocationURI, + globalStorageHome: remoteInitData.globalStorageHome, + userHome: remoteInitData.userHome, + webviewResourceRoot: this._environmentService.webviewResourceRoot, + webviewCspSource: this._environmentService.webviewCspSource, + }, + workspace: this._contextService.getWorkbenchState() === WorkbenchState.EMPTY ? null : { + configuration: workspace.configuration, + id: workspace.id, + name: this._labelService.getWorkspaceLabel(workspace) + }, + remote: { + isRemote: true, + authority: this._initDataProvider.remoteAuthority, + connectionData: remoteInitData.connectionData + }, + resolvedExtensions: resolvedExtensions, + hostExtensions: hostExtensions, + extensions: remoteInitData.extensions, + telemetryInfo, + logLevel: this._logService.getLevel(), + logsLocation: remoteInitData.extensionHostLogsPath, + logFile: joinPath(remoteInitData.extensionHostLogsPath, `${ExtensionHostLogFileName}.log`), + autoStart: true, + uiKind: platform.isWeb ? UIKind.Web : UIKind.Desktop + }; } getInspectPort(): number | undefined { diff --git a/src/vs/workbench/services/extensions/common/staticExtensions.ts b/src/vs/workbench/services/extensions/common/staticExtensions.ts deleted file mode 100644 index 862a2286c4..0000000000 --- a/src/vs/workbench/services/extensions/common/staticExtensions.ts +++ /dev/null @@ -1,40 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Source EULA. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; -import { IExtensionDescription, ExtensionIdentifier } from 'vs/platform/extensions/common/extensions'; -import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; -import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; - -export const IStaticExtensionsService = createDecorator('IStaticExtensionsService'); - -export interface IStaticExtensionsService { - readonly _serviceBrand: undefined; - getExtensions(): Promise; -} - -export class StaticExtensionsService implements IStaticExtensionsService { - - declare readonly _serviceBrand: undefined; - - private readonly _descriptions: IExtensionDescription[] = []; - - constructor(@IWorkbenchEnvironmentService environmentService: IWorkbenchEnvironmentService) { - const staticExtensions = environmentService.options && Array.isArray(environmentService.options.staticExtensions) ? environmentService.options.staticExtensions : []; - - this._descriptions = staticExtensions.map(data => { - identifier: new ExtensionIdentifier(`${data.packageJSON.publisher}.${data.packageJSON.name}`), - extensionLocation: data.extensionLocation, - isBuiltin: !!data.isBuiltin, - ...data.packageJSON, - }); - } - - async getExtensions(): Promise { - return this._descriptions; - } -} - -registerSingleton(IStaticExtensionsService, StaticExtensionsService, true); diff --git a/src/vs/workbench/services/extensions/electron-browser/extensionService.ts b/src/vs/workbench/services/extensions/electron-browser/extensionService.ts index 7089f15b6e..75a592ac2b 100644 --- a/src/vs/workbench/services/extensions/electron-browser/extensionService.ts +++ b/src/vs/workbench/services/extensions/electron-browser/extensionService.ts @@ -3,28 +3,27 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { ExtensionHostProcessWorker } from 'vs/workbench/services/extensions/electron-browser/extensionHost'; +import { LocalProcessExtensionHost } from 'vs/workbench/services/extensions/electron-browser/localProcessExtensionHost'; import { CachedExtensionScanner } from 'vs/workbench/services/extensions/electron-browser/cachedExtensionScanner'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; -import { AbstractExtensionService } from 'vs/workbench/services/extensions/common/abstractExtensionService'; +import { AbstractExtensionService, parseScannedExtension } from 'vs/workbench/services/extensions/common/abstractExtensionService'; import * as nls from 'vs/nls'; import { runWhenIdle } from 'vs/base/common/async'; import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; import { IExtensionManagementService, IExtensionGalleryService } from 'vs/platform/extensionManagement/common/extensionManagement'; -import { IWorkbenchExtensionEnablementService, EnablementState } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; +import { IWorkbenchExtensionEnablementService, EnablementState, IWebExtensionsScannerService } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; -import { IInitDataProvider, RemoteExtensionHostClient } from 'vs/workbench/services/extensions/common/remoteExtensionHostClient'; +import { IRemoteExtensionHostDataProvider, RemoteExtensionHost, IRemoteExtensionHostInitData } from 'vs/workbench/services/extensions/common/remoteExtensionHost'; import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService'; import { IRemoteAuthorityResolverService, RemoteAuthorityResolverError, ResolverResult } from 'vs/platform/remote/common/remoteAuthorityResolver'; import { getExtensionKind } from 'vs/workbench/services/extensions/common/extensionsUtil'; -import { IRemoteAgentEnvironment } from 'vs/platform/remote/common/remoteAgentEnvironment'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { ILifecycleService, LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle'; import { INotificationService, Severity } from 'vs/platform/notification/common/notification'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { IHostService } from 'vs/workbench/services/host/browser/host'; -import { IExtensionService, toExtension } from 'vs/workbench/services/extensions/common/extensions'; -import { ExtensionHostProcessManager } from 'vs/workbench/services/extensions/common/extensionHostProcessManager'; +import { IExtensionService, toExtension, ExtensionHostKind, IExtensionHost, webWorkerExtHostConfig } from 'vs/workbench/services/extensions/common/extensions'; +import { ExtensionHostManager } from 'vs/workbench/services/extensions/common/extensionHostManager'; import { ExtensionIdentifier, IExtension, ExtensionType, IExtensionDescription } from 'vs/platform/extensions/common/extensions'; import { Schemas } from 'vs/base/common/network'; import { IFileService } from 'vs/platform/files/common/files'; @@ -32,7 +31,6 @@ import { PersistentConnectionEventType } from 'vs/platform/remote/common/remoteA import { IProductService } from 'vs/platform/product/common/productService'; import { Logger } from 'vs/workbench/services/extensions/common/extensionPoints'; import { flatten } from 'vs/base/common/arrays'; -import { IStaticExtensionsService } from 'vs/workbench/services/extensions/common/staticExtensions'; import { IElectronService } from 'vs/platform/electron/electron-sandbox/electron'; import { INativeWorkbenchEnvironmentService } from 'vs/workbench/services/environment/electron-browser/environmentService'; import { IRemoteExplorerService } from 'vs/workbench/services/remote/common/remoteExplorerService'; @@ -41,6 +39,8 @@ import { SyncActionDescriptor } from 'vs/platform/actions/common/actions'; import { Registry } from 'vs/platform/registry/common/platform'; import { Extensions as ActionExtensions, IWorkbenchActionRegistry } from 'vs/workbench/common/actions'; import { getRemoteName } from 'vs/platform/remote/common/remoteHosts'; +import { IRemoteAgentEnvironment } from 'vs/platform/remote/common/remoteAgentEnvironment'; +import { WebWorkerExtensionHost } from 'vs/workbench/services/extensions/browser/webWorkerExtensionHost'; class DeltaExtensionsQueueItem { constructor( @@ -51,8 +51,9 @@ class DeltaExtensionsQueueItem { export class ExtensionService extends AbstractExtensionService implements IExtensionService { - private readonly _remoteEnvironment: Map; - + private readonly _enableLocalWebWorker: boolean; + private readonly _remoteInitData: Map; + private _runningLocation: Map; private readonly _extensionScanner: CachedExtensionScanner; private _deltaExtensionsQueue: DeltaExtensionsQueueItem[]; @@ -69,7 +70,7 @@ export class ExtensionService extends AbstractExtensionService implements IExten @IRemoteAuthorityResolverService private readonly _remoteAuthorityResolverService: IRemoteAuthorityResolverService, @IConfigurationService private readonly _configurationService: IConfigurationService, @ILifecycleService private readonly _lifecycleService: ILifecycleService, - @IStaticExtensionsService private readonly _staticExtensions: IStaticExtensionsService, + @IWebExtensionsScannerService private readonly _webExtensionsScannerService: IWebExtensionsScannerService, @IElectronService private readonly _electronService: IElectronService, @IHostService private readonly _hostService: IHostService, @IRemoteExplorerService private readonly _remoteExplorerService: IRemoteExplorerService, @@ -85,16 +86,10 @@ export class ExtensionService extends AbstractExtensionService implements IExten productService ); - if (this._extensionEnablementService.allUserExtensionsDisabled) { - this._notificationService.prompt(Severity.Info, nls.localize('extensionsDisabled', "All installed extensions are temporarily disabled. Reload the window to return to the previous state."), [{ - label: nls.localize('Reload', "Reload"), - run: () => { - this._hostService.reload(); - } - }]); - } + this._enableLocalWebWorker = this._configurationService.getValue(webWorkerExtHostConfig); - this._remoteEnvironment = new Map(); + this._remoteInitData = new Map(); + this._runningLocation = new Map(); this._extensionScanner = instantiationService.createInstance(CachedExtensionScanner); this._deltaExtensionsQueue = []; @@ -142,8 +137,28 @@ export class ExtensionService extends AbstractExtensionService implements IExten this._initialize(); }, 50 /*max delay*/); }); + + // delay notification for extensions disabled until workbench restored + if (this._extensionEnablementService.allUserExtensionsDisabled) { + this._lifecycleService.when(LifecyclePhase.Restored).then(() => { + this._notificationService.prompt(Severity.Info, nls.localize('extensionsDisabled', "All installed extensions are temporarily disabled. Reload the window to return to the previous state."), [{ + label: nls.localize('Reload', "Reload"), + run: () => { + this._hostService.reload(); + } + }]); + }); + } } + private _getExtensionHostManager(kind: ExtensionHostKind): ExtensionHostManager | null { + for (const extensionHostManager of this._extensionHostManagers) { + if (extensionHostManager.kind === kind) { + return extensionHostManager; + } + } + return null; + } //#region deltaExtensions @@ -222,11 +237,12 @@ export class ExtensionService extends AbstractExtensionService implements IExten this._checkEnableProposedApi(toAdd); // Update extension points - this._rehandleExtensionPoints(([]).concat(toAdd).concat(toRemove)); + this._doHandleExtensionPoints(([]).concat(toAdd).concat(toRemove)); // Update the extension host - if (this._extensionHostProcessManagers.length > 0) { - await this._extensionHostProcessManagers[0].deltaExtensions(toAdd, toRemove.map(e => e.identifier)); + const localProcessExtensionHost = this._getExtensionHostManager(ExtensionHostKind.LocalProcess); + if (localProcessExtensionHost) { + await localProcessExtensionHost.deltaExtensions(toAdd, toRemove.map(e => e.identifier)); } for (let i = 0; i < toAdd.length; i++) { @@ -234,15 +250,11 @@ export class ExtensionService extends AbstractExtensionService implements IExten } } - private _rehandleExtensionPoints(extensionDescriptions: IExtensionDescription[]): void { - this._doHandleExtensionPoints(extensionDescriptions); - } - public canAddExtension(extensionDescription: IExtensionDescription): boolean { return this._canAddExtension(toExtension(extensionDescription)); } - public _canAddExtension(extension: IExtension): boolean { + private _canAddExtension(extension: IExtension): boolean { if (this._environmentService.configuration.remoteAuthority) { return false; } @@ -338,57 +350,78 @@ export class ExtensionService extends AbstractExtensionService implements IExten if (shouldActivate) { await Promise.all( - this._extensionHostProcessManagers.map(extHostManager => extHostManager.activate(extensionDescription.identifier, { startup: false, extensionId: extensionDescription.identifier, activationEvent: shouldActivateReason! })) + this._extensionHostManagers.map(extHostManager => extHostManager.activate(extensionDescription.identifier, { startup: false, extensionId: extensionDescription.identifier, activationEvent: shouldActivateReason! })) ).then(() => { }); } } //#endregion - private _createProvider(remoteAuthority: string): IInitDataProvider { + private async _scanAllLocalExtensions(): Promise { + return flatten(await Promise.all([ + this._extensionScanner.scannedExtensions, + this._webExtensionsScannerService.scanExtensions().then(extensions => extensions.map(parseScannedExtension)) + ])); + } + + private _createLocalExtensionHostDataProvider(isInitialStart: boolean, desiredRunningLocation: ExtensionRunningLocation) { return { - remoteAuthority: remoteAuthority, getInitData: async () => { - await this.whenInstalledExtensionsRegistered(); - const connectionData = this._remoteAuthorityResolverService.getConnectionData(remoteAuthority); - const remoteEnvironment = this._remoteEnvironment.get(remoteAuthority)!; - return { connectionData, remoteEnvironment }; + if (isInitialStart) { + const localExtensions = this._checkEnabledAndProposedAPI(await this._scanAllLocalExtensions()); + const runningLocation = determineRunningLocation(this._productService, this._configurationService, localExtensions, [], false, this._enableLocalWebWorker); + const localProcessExtensions = filterByRunningLocation(localExtensions, runningLocation, desiredRunningLocation); + return { + autoStart: false, + extensions: localProcessExtensions + }; + } else { + // restart case + const allExtensions = await this.getExtensions(); + const localProcessExtensions = filterByRunningLocation(allExtensions, this._runningLocation, desiredRunningLocation); + return { + autoStart: true, + extensions: localProcessExtensions + }; + } } }; } - protected _createExtensionHosts(isInitialStart: boolean, initialActivationEvents: string[]): ExtensionHostProcessManager[] { - let autoStart: boolean; - let extensions: Promise; - if (isInitialStart) { - autoStart = false; - extensions = this._extensionScanner.scannedExtensions.then(extensions => extensions.filter(extension => this._isEnabled(extension))); // remove disabled extensions - } else { - // restart case - autoStart = true; - extensions = this.getExtensions().then((extensions) => extensions.filter(ext => ext.extensionLocation.scheme === Schemas.file)); + private _createRemoteExtensionHostDataProvider(remoteAuthority: string): IRemoteExtensionHostDataProvider { + return { + remoteAuthority: remoteAuthority, + getInitData: async () => { + await this.whenInstalledExtensionsRegistered(); + return this._remoteInitData.get(remoteAuthority)!; + } + }; + } + + protected _createExtensionHosts(isInitialStart: boolean): IExtensionHost[] { + const result: IExtensionHost[] = []; + + const localProcessExtHost = this._instantiationService.createInstance(LocalProcessExtensionHost, this._createLocalExtensionHostDataProvider(isInitialStart, ExtensionRunningLocation.LocalProcess)); + result.push(localProcessExtHost); + + if (this._enableLocalWebWorker) { + const webWorkerExtHost = this._instantiationService.createInstance(WebWorkerExtensionHost, this._createLocalExtensionHostDataProvider(isInitialStart, ExtensionRunningLocation.LocalWebWorker)); + result.push(webWorkerExtHost); } - const result: ExtensionHostProcessManager[] = []; - - const extHostProcessWorker = this._instantiationService.createInstance(ExtensionHostProcessWorker, autoStart, extensions, this._environmentService.extHostLogsPath); - const extHostProcessManager = this._instantiationService.createInstance(ExtensionHostProcessManager, true, extHostProcessWorker, null, initialActivationEvents); - result.push(extHostProcessManager); - const remoteAgentConnection = this._remoteAgentService.getConnection(); if (remoteAgentConnection) { - const remoteExtHostProcessWorker = this._instantiationService.createInstance(RemoteExtensionHostClient, this.getExtensions(), this._createProvider(remoteAgentConnection.remoteAuthority), this._remoteAgentService.socketFactory); - const remoteExtHostProcessManager = this._instantiationService.createInstance(ExtensionHostProcessManager, false, remoteExtHostProcessWorker, remoteAgentConnection.remoteAuthority, initialActivationEvents); - result.push(remoteExtHostProcessManager); + const remoteExtHost = this._instantiationService.createInstance(RemoteExtensionHost, this._createRemoteExtensionHostDataProvider(remoteAgentConnection.remoteAuthority), this._remoteAgentService.socketFactory); + result.push(remoteExtHost); } return result; } - protected _onExtensionHostCrashed(extensionHost: ExtensionHostProcessManager, code: number, signal: string | null): void { + protected _onExtensionHostCrashed(extensionHost: ExtensionHostManager, code: number, signal: string | null): void { super._onExtensionHostCrashed(extensionHost, code, signal); - if (extensionHost.isLocal) { + if (extensionHost.kind === ExtensionHostKind.LocalProcess) { if (code === 55) { this._notificationService.prompt( Severity.Error, @@ -437,10 +470,10 @@ export class ExtensionService extends AbstractExtensionService implements IExten return; } - const extensionHost = this._extensionHostProcessManagers[0]; + const localProcessExtensionHost = this._getExtensionHostManager(ExtensionHostKind.LocalProcess)!; this._remoteAuthorityResolverService._clearResolvedAuthority(remoteAuthority); try { - const result = await extensionHost.resolveAuthority(remoteAuthority); + const result = await localProcessExtensionHost.resolveAuthority(remoteAuthority); this._remoteAuthorityResolverService._setResolvedAuthority(result.authority, result.options); } catch (err) { this._remoteAuthorityResolverService._setResolvedAuthorityError(remoteAuthority, err); @@ -451,25 +484,19 @@ export class ExtensionService extends AbstractExtensionService implements IExten this._extensionScanner.startScanningExtensions(this.createLogger()); const remoteAuthority = this._environmentService.configuration.remoteAuthority; - const extensionHost = this._extensionHostProcessManagers[0]; + const localProcessExtensionHost = this._getExtensionHostManager(ExtensionHostKind.LocalProcess)!; - const allExtensions = flatten(await Promise.all([this._extensionScanner.scannedExtensions, this._staticExtensions.getExtensions()])); - - // enable or disable proposed API per extension - this._checkEnableProposedApi(allExtensions); - - // remove disabled extensions - let localExtensions = remove(allExtensions, extension => this._isDisabled(extension)); + let localExtensions = this._checkEnabledAndProposedAPI(await this._scanAllLocalExtensions()); + let remoteEnv: IRemoteAgentEnvironment | null = null; if (remoteAuthority) { - let resolvedAuthority: ResolverResult; + let resolverResult: ResolverResult; try { - resolvedAuthority = await extensionHost.resolveAuthority(remoteAuthority); + resolverResult = await localProcessExtensionHost.resolveAuthority(remoteAuthority); } catch (err) { - const remoteName = getRemoteName(remoteAuthority); if (RemoteAuthorityResolverError.isNoResolverFound(err)) { - err.isHandled = await this._handleNoResolverFound(remoteName, allExtensions); + err.isHandled = await this._handleNoResolverFound(remoteAuthority); } else { console.log(err); if (RemoteAuthorityResolverError.isHandled(err)) { @@ -479,22 +506,18 @@ export class ExtensionService extends AbstractExtensionService implements IExten this._remoteAuthorityResolverService._setResolvedAuthorityError(remoteAuthority, err); // Proceed with the local extension host - await this._startLocalExtensionHost(extensionHost, localExtensions, localExtensions.map(extension => extension.identifier)); + await this._startLocalExtensionHost(localExtensions); return; } // set the resolved authority - this._remoteAuthorityResolverService._setResolvedAuthority(resolvedAuthority.authority, resolvedAuthority.options); - this._remoteExplorerService.setTunnelInformation(resolvedAuthority.tunnelInformation); + this._remoteAuthorityResolverService._setResolvedAuthority(resolverResult.authority, resolverResult.options); + this._remoteExplorerService.setTunnelInformation(resolverResult.tunnelInformation); // monitor for breakage const connection = this._remoteAgentService.getConnection(); if (connection) { connection.onDidStateChange(async (e) => { - const remoteAuthority = this._environmentService.configuration.remoteAuthority; - if (!remoteAuthority) { - return; - } if (e.type === PersistentConnectionEventType.ConnectionLost) { this._remoteAuthorityResolverService._clearResolvedAuthority(remoteAuthority); } @@ -503,80 +526,64 @@ export class ExtensionService extends AbstractExtensionService implements IExten } // fetch the remote environment - const remoteEnv = (await this._remoteAgentService.getEnvironment()); + remoteEnv = await this._remoteAgentService.getEnvironment(); if (!remoteEnv) { this._notificationService.notify({ severity: Severity.Error, message: nls.localize('getEnvironmentFailure', "Could not fetch remote environment") }); // Proceed with the local extension host - await this._startLocalExtensionHost(extensionHost, localExtensions, localExtensions.map(extension => extension.identifier)); + await this._startLocalExtensionHost(localExtensions); return; } - - // enable or disable proposed API per extension - this._checkEnableProposedApi(remoteEnv.extensions); - - // remove disabled extensions - remoteEnv.extensions = remove(remoteEnv.extensions, extension => this._isDisabled(extension)); - - // Determine where each extension will execute, based on extensionKind - const isInstalledLocally = new Set(); - localExtensions.forEach(ext => isInstalledLocally.add(ExtensionIdentifier.toKey(ext.identifier))); - - const isInstalledRemotely = new Set(); - remoteEnv.extensions.forEach(ext => isInstalledRemotely.add(ExtensionIdentifier.toKey(ext.identifier))); - - const enum RunningLocation { None, Local, Remote } - const pickRunningLocation = (extension: IExtensionDescription): RunningLocation => { - for (const extensionKind of getExtensionKind(extension, this._productService, this._configurationService)) { - if (extensionKind === 'ui') { - if (isInstalledLocally.has(ExtensionIdentifier.toKey(extension.identifier))) { - return RunningLocation.Local; - } - } else if (extensionKind === 'workspace') { - if (isInstalledRemotely.has(ExtensionIdentifier.toKey(extension.identifier))) { - return RunningLocation.Remote; - } - } - } - return RunningLocation.None; - }; - - const runningLocation = new Map(); - localExtensions.forEach(ext => runningLocation.set(ExtensionIdentifier.toKey(ext.identifier), pickRunningLocation(ext))); - remoteEnv.extensions.forEach(ext => runningLocation.set(ExtensionIdentifier.toKey(ext.identifier), pickRunningLocation(ext))); - - // remove non-UI extensions from the local extensions - localExtensions = localExtensions.filter(ext => runningLocation.get(ExtensionIdentifier.toKey(ext.identifier)) === RunningLocation.Local); - - // in case of UI extensions overlap, the local extension wins - remoteEnv.extensions = remoteEnv.extensions.filter(ext => runningLocation.get(ExtensionIdentifier.toKey(ext.identifier)) === RunningLocation.Remote); - - // save for remote extension's init data - this._remoteEnvironment.set(remoteAuthority, remoteEnv); - - await this._startLocalExtensionHost(extensionHost, remoteEnv.extensions.concat(localExtensions), localExtensions.map(extension => extension.identifier)); - } else { - await this._startLocalExtensionHost(extensionHost, localExtensions, localExtensions.map(extension => extension.identifier)); } + + await this._startLocalExtensionHost(localExtensions, remoteAuthority, remoteEnv); } - private async _startLocalExtensionHost(extensionHost: ExtensionHostProcessManager, allExtensions: IExtensionDescription[], localExtensions: ExtensionIdentifier[]): Promise { - this._registerAndHandleExtensions(allExtensions); - extensionHost.start(localExtensions.filter(id => this._registry.containsExtension(id))); - } + private async _startLocalExtensionHost(localExtensions: IExtensionDescription[], remoteAuthority: string | undefined = undefined, remoteEnv: IRemoteAgentEnvironment | null = null): Promise { - private _registerAndHandleExtensions(allExtensions: IExtensionDescription[]): void { - const result = this._registry.deltaExtensions(allExtensions, []); + let remoteExtensions = remoteEnv ? this._checkEnabledAndProposedAPI(remoteEnv.extensions) : []; + + this._runningLocation = determineRunningLocation(this._productService, this._configurationService, localExtensions, remoteExtensions, Boolean(remoteAuthority), this._enableLocalWebWorker); + + // remove non-UI extensions from the local extensions + const localProcessExtensions = filterByRunningLocation(localExtensions, this._runningLocation, ExtensionRunningLocation.LocalProcess); + const localWebWorkerExtensions = filterByRunningLocation(localExtensions, this._runningLocation, ExtensionRunningLocation.LocalWebWorker); + remoteExtensions = filterByRunningLocation(remoteExtensions, this._runningLocation, ExtensionRunningLocation.Remote); + + const result = this._registry.deltaExtensions(remoteExtensions.concat(localProcessExtensions).concat(localWebWorkerExtensions), []); if (result.removedDueToLooping.length > 0) { this._logOrShowMessage(Severity.Error, nls.localize('looping', "The following extensions contain dependency loops and have been disabled: {0}", result.removedDueToLooping.map(e => `'${e.identifier.value}'`).join(', '))); } + if (remoteAuthority && remoteEnv) { + this._remoteInitData.set(remoteAuthority, { + connectionData: this._remoteAuthorityResolverService.getConnectionData(remoteAuthority), + pid: remoteEnv.pid, + appRoot: remoteEnv.appRoot, + appSettingsHome: remoteEnv.appSettingsHome, + extensionHostLogsPath: remoteEnv.extensionHostLogsPath, + globalStorageHome: remoteEnv.globalStorageHome, + userHome: remoteEnv.userHome, + extensions: remoteExtensions, + allExtensions: this._registry.getAllExtensionDescriptions(), + }); + } + this._doHandleExtensionPoints(this._registry.getAllExtensionDescriptions()); + + const localProcessExtensionHost = this._getExtensionHostManager(ExtensionHostKind.LocalProcess)!; + localProcessExtensionHost.start(localProcessExtensions.map(extension => extension.identifier).filter(id => this._registry.containsExtension(id))); + + const localWebWorkerExtensionHost = this._getExtensionHostManager(ExtensionHostKind.LocalWebWorker); + if (localWebWorkerExtensionHost) { + localWebWorkerExtensionHost.start(localWebWorkerExtensions.map(extension => extension.identifier).filter(id => this._registry.containsExtension(id))); + } } public async getInspectPort(tryEnableInspector: boolean): Promise { - if (this._extensionHostProcessManagers.length > 0) { - return this._extensionHostProcessManagers[0].getInspectPort(tryEnableInspector); + const localProcessExtensionHost = this._getExtensionHostManager(ExtensionHostKind.LocalProcess); + if (localProcessExtensionHost) { + return localProcessExtensionHost.getInspectPort(tryEnableInspector); } return 0; } @@ -591,7 +598,8 @@ export class ExtensionService extends AbstractExtensionService implements IExten } } - private async _handleNoResolverFound(remoteName: string, allExtensions: IExtensionDescription[]): Promise { + private async _handleNoResolverFound(remoteAuthority: string): Promise { + const remoteName = getRemoteName(remoteAuthority); const recommendation = this._productService.remoteExtensionTips?.[remoteName]; if (!recommendation) { return false; @@ -607,9 +615,10 @@ export class ExtensionService extends AbstractExtensionService implements IExten }; const resolverExtensionId = recommendation.extensionId; + const allExtensions = await this._scanAllLocalExtensions(); const extension = allExtensions.filter(e => e.identifier.value === resolverExtensionId)[0]; if (extension) { - if (this._isDisabled(extension)) { + if (!this._isEnabled(extension)) { const message = nls.localize('enableResolver', "Extension '{0}' is required to open the remote window.\nOK to enable?", recommendation.friendlyName); this._notificationService.prompt(Severity.Info, message, [{ @@ -649,27 +658,59 @@ export class ExtensionService extends AbstractExtensionService implements IExten } return true; - } } -function remove(arr: IExtensionDescription[], predicate: (item: IExtensionDescription) => boolean): IExtensionDescription[]; -function remove(arr: IExtensionDescription[], toRemove: IExtensionDescription[]): IExtensionDescription[]; -function remove(arr: IExtensionDescription[], arg2: ((item: IExtensionDescription) => boolean) | IExtensionDescription[]): IExtensionDescription[] { - if (typeof arg2 === 'function') { - return _removePredicate(arr, arg2); - } - return _removeSet(arr, arg2); +const enum ExtensionRunningLocation { + None, + LocalProcess, + LocalWebWorker, + Remote } -function _removePredicate(arr: IExtensionDescription[], predicate: (item: IExtensionDescription) => boolean): IExtensionDescription[] { - return arr.filter(extension => !predicate(extension)); +function determineRunningLocation(productService: IProductService, configurationService: IConfigurationService, localExtensions: IExtensionDescription[], remoteExtensions: IExtensionDescription[], hasRemote: boolean, hasLocalWebWorker: boolean): Map { + const localExtensionsSet = new Set(); + localExtensions.forEach(ext => localExtensionsSet.add(ExtensionIdentifier.toKey(ext.identifier))); + + const remoteExtensionsSet = new Set(); + remoteExtensions.forEach(ext => remoteExtensionsSet.add(ExtensionIdentifier.toKey(ext.identifier))); + + const pickRunningLocation = (extension: IExtensionDescription): ExtensionRunningLocation => { + const isInstalledLocally = localExtensionsSet.has(ExtensionIdentifier.toKey(extension.identifier)); + const isInstalledRemotely = remoteExtensionsSet.has(ExtensionIdentifier.toKey(extension.identifier)); + for (const extensionKind of getExtensionKind(extension, productService, configurationService)) { + if (extensionKind === 'ui' && isInstalledLocally) { + // ui extensions run locally if possible + return ExtensionRunningLocation.LocalProcess; + } + if (extensionKind === 'workspace' && isInstalledRemotely) { + // workspace extensions run remotely if possible + return ExtensionRunningLocation.Remote; + } + if (extensionKind === 'workspace' && !hasRemote) { + // workspace extensions also run locally if there is no remote + return ExtensionRunningLocation.LocalProcess; + } + if (extensionKind === 'web' && isInstalledLocally && hasLocalWebWorker) { + // web worker extensions run in the local web worker if possible + if (typeof extension.browser !== 'undefined') { + // The "browser" field determines the entry point + (extension).main = extension.browser; + } + return ExtensionRunningLocation.LocalWebWorker; + } + } + return ExtensionRunningLocation.None; + }; + + const runningLocation = new Map(); + localExtensions.forEach(ext => runningLocation.set(ExtensionIdentifier.toKey(ext.identifier), pickRunningLocation(ext))); + remoteExtensions.forEach(ext => runningLocation.set(ExtensionIdentifier.toKey(ext.identifier), pickRunningLocation(ext))); + return runningLocation; } -function _removeSet(arr: IExtensionDescription[], toRemove: IExtensionDescription[]): IExtensionDescription[] { - const toRemoveSet = new Set(); - toRemove.forEach(extension => toRemoveSet.add(ExtensionIdentifier.toKey(extension.identifier))); - return arr.filter(extension => !toRemoveSet.has(ExtensionIdentifier.toKey(extension.identifier))); +function filterByRunningLocation(extensions: IExtensionDescription[], runningLocation: Map, desiredRunningLocation: ExtensionRunningLocation): IExtensionDescription[] { + return extensions.filter(ext => runningLocation.get(ExtensionIdentifier.toKey(ext.identifier)) === desiredRunningLocation); } registerSingleton(IExtensionService, ExtensionService); @@ -693,4 +734,4 @@ class RestartExtensionHostAction extends Action { } const registry = Registry.as(ActionExtensions.WorkbenchActions); -registry.registerWorkbenchAction(SyncActionDescriptor.from(RestartExtensionHostAction), 'Developer: Restart Extension Host', nls.localize('developer', "Developer")); +registry.registerWorkbenchAction(SyncActionDescriptor.from(RestartExtensionHostAction), 'Developer: Restart Extension Host', nls.localize({ key: 'developer', comment: ['A developer on Code itself or someone diagnosing issues in Code'] }, "Developer")); diff --git a/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts b/src/vs/workbench/services/extensions/electron-browser/localProcessExtensionHost.ts similarity index 87% rename from src/vs/workbench/services/extensions/electron-browser/extensionHost.ts rename to src/vs/workbench/services/extensions/electron-browser/localProcessExtensionHost.ts index b5caa3d0b1..71d3d17d39 100644 --- a/src/vs/workbench/services/extensions/electron-browser/extensionHost.ts +++ b/src/vs/workbench/services/extensions/electron-browser/localProcessExtensionHost.ts @@ -37,7 +37,7 @@ import { IExtensionDescription } from 'vs/platform/extensions/common/extensions' import { parseExtensionDevOptions } from '../common/extensionDevOptions'; import { VSBuffer } from 'vs/base/common/buffer'; import { IExtensionHostDebugService } from 'vs/platform/debug/common/extensionHostDebug'; -import { IExtensionHostStarter, ExtensionHostLogFileName } from 'vs/workbench/services/extensions/common/extensions'; +import { IExtensionHost, ExtensionHostLogFileName, ExtensionHostKind } from 'vs/workbench/services/extensions/common/extensions'; import { isUntitledWorkspace } from 'vs/platform/workspaces/common/workspaces'; import { IHostService } from 'vs/workbench/services/host/browser/host'; import { joinPath } from 'vs/base/common/resources'; @@ -45,7 +45,19 @@ import { Registry } from 'vs/platform/registry/common/platform'; import { IOutputChannelRegistry, Extensions } from 'vs/workbench/services/output/common/output'; import { INativeWorkbenchEnvironmentService } from 'vs/workbench/services/environment/electron-browser/environmentService'; -export class ExtensionHostProcessWorker implements IExtensionHostStarter { +export interface ILocalProcessExtensionHostInitData { + readonly autoStart: boolean; + readonly extensions: IExtensionDescription[]; +} + +export interface ILocalProcessExtensionHostDataProvider { + getInitData(): Promise; +} + +export class LocalProcessExtensionHost implements IExtensionHost { + + public readonly kind = ExtensionHostKind.LocalProcess; + public readonly remoteAuthority = null; private readonly _onExit: Emitter<[number, string]> = new Emitter<[number, string]>(); public readonly onExit: Event<[number, string]> = this._onExit.event; @@ -73,9 +85,7 @@ export class ExtensionHostProcessWorker implements IExtensionHostStarter { private readonly _extensionHostLogFile: URI; constructor( - private readonly _autoStart: boolean, - private readonly _extensions: Promise, - private readonly _extensionHostLogsLocation: URI, + private readonly _initDataProvider: ILocalProcessExtensionHostDataProvider, @IWorkspaceContextService private readonly _contextService: IWorkspaceContextService, @INotificationService private readonly _notificationService: INotificationService, @IElectronService private readonly _electronService: IElectronService, @@ -103,7 +113,7 @@ export class ExtensionHostProcessWorker implements IExtensionHostStarter { this._extensionHostConnection = null; this._messageProtocol = null; - this._extensionHostLogFile = joinPath(this._extensionHostLogsLocation, `${ExtensionHostLogFileName}.log`); + this._extensionHostLogFile = joinPath(this._environmentService.extHostLogsPath, `${ExtensionHostLogFileName}.log`); this._toDispose.add(this._onExit); this._toDispose.add(this._lifecycleService.onWillShutdown(e => this._onWillShutdown(e))); @@ -410,52 +420,49 @@ export class ExtensionHostProcessWorker implements IExtensionHostStarter { }); } - private _createExtHostInitData(): Promise { - return Promise.all([this._telemetryService.getTelemetryInfo(), this._extensions]) - .then(([telemetryInfo, extensionDescriptions]) => { - const workspace = this._contextService.getWorkspace(); - const r: IInitData = { - commit: this._productService.commit, - version: this._productService.version, - vscodeVersion: this._productService.vscodeVersion, // {{SQL CARBON EDIT}} add vscode version - parentPid: process.pid, - environment: { - isExtensionDevelopmentDebug: this._isExtensionDevDebug, - appRoot: this._environmentService.appRoot ? URI.file(this._environmentService.appRoot) : undefined, - appSettingsHome: this._environmentService.appSettingsHome ? this._environmentService.appSettingsHome : undefined, - appName: this._productService.nameLong, - appUriScheme: this._productService.urlProtocol, - appLanguage: platform.language, - extensionDevelopmentLocationURI: this._environmentService.extensionDevelopmentLocationURI, - extensionTestsLocationURI: this._environmentService.extensionTestsLocationURI, - globalStorageHome: URI.file(this._environmentService.globalStorageHome), - userHome: this._environmentService.userHome, - webviewResourceRoot: this._environmentService.webviewResourceRoot, - webviewCspSource: this._environmentService.webviewCspSource, - }, - workspace: this._contextService.getWorkbenchState() === WorkbenchState.EMPTY ? undefined : { - configuration: withNullAsUndefined(workspace.configuration), - id: workspace.id, - name: this._labelService.getWorkspaceLabel(workspace), - isUntitled: workspace.configuration ? isUntitledWorkspace(workspace.configuration, this._environmentService) : false - }, - remote: { - authority: this._environmentService.configuration.remoteAuthority, - connectionData: null, - isRemote: false - }, - resolvedExtensions: [], - hostExtensions: [], - extensions: extensionDescriptions, - telemetryInfo, - logLevel: this._logService.getLevel(), - logsLocation: this._extensionHostLogsLocation, - logFile: this._extensionHostLogFile, - autoStart: this._autoStart, - uiKind: UIKind.Desktop - }; - return r; - }); + private async _createExtHostInitData(): Promise { + const [telemetryInfo, initData] = await Promise.all([this._telemetryService.getTelemetryInfo(), this._initDataProvider.getInitData()]); + const workspace = this._contextService.getWorkspace(); + return { + commit: this._productService.commit, + version: this._productService.version, + vscodeVersion: this._productService.vscodeVersion, // {{SQL CARBON EDIT}} add vscode version + parentPid: process.pid, + environment: { + isExtensionDevelopmentDebug: this._isExtensionDevDebug, + appRoot: this._environmentService.appRoot ? URI.file(this._environmentService.appRoot) : undefined, + appSettingsHome: this._environmentService.appSettingsHome ? this._environmentService.appSettingsHome : undefined, + appName: this._productService.nameLong, + appUriScheme: this._productService.urlProtocol, + appLanguage: platform.language, + extensionDevelopmentLocationURI: this._environmentService.extensionDevelopmentLocationURI, + extensionTestsLocationURI: this._environmentService.extensionTestsLocationURI, + globalStorageHome: URI.file(this._environmentService.globalStorageHome), + userHome: this._environmentService.userHome, + webviewResourceRoot: this._environmentService.webviewResourceRoot, + webviewCspSource: this._environmentService.webviewCspSource, + }, + workspace: this._contextService.getWorkbenchState() === WorkbenchState.EMPTY ? undefined : { + configuration: withNullAsUndefined(workspace.configuration), + id: workspace.id, + name: this._labelService.getWorkspaceLabel(workspace), + isUntitled: workspace.configuration ? isUntitledWorkspace(workspace.configuration, this._environmentService) : false + }, + remote: { + authority: this._environmentService.configuration.remoteAuthority, + connectionData: null, + isRemote: false + }, + resolvedExtensions: [], + hostExtensions: [], + extensions: initData.extensions, + telemetryInfo, + logLevel: this._logService.getLevel(), + logsLocation: this._environmentService.extHostLogsPath, + logFile: this._extensionHostLogFile, + autoStart: initData.autoStart, + uiKind: UIKind.Desktop + }; } private _logExtensionHostMessage(entry: IRemoteConsoleLog) { diff --git a/src/vs/workbench/services/extensions/worker/extHost.services.ts b/src/vs/workbench/services/extensions/worker/extHost.services.ts index e832223295..422b8a86ca 100644 --- a/src/vs/workbench/services/extensions/worker/extHost.services.ts +++ b/src/vs/workbench/services/extensions/worker/extHost.services.ts @@ -22,6 +22,7 @@ import { ILogService } from 'vs/platform/log/common/log'; import { ExtHostLogService } from 'vs/workbench/api/worker/extHostLogService'; import { IExtHostTunnelService, ExtHostTunnelService } from 'vs/workbench/api/common/extHostTunnelService'; import { IExtHostApiDeprecationService, ExtHostApiDeprecationService, } from 'vs/workbench/api/common/extHostApiDeprecationService'; +import { IExtHostWindow, ExtHostWindow } from 'vs/workbench/api/common/extHostWindow'; import { NotImplementedProxy } from 'vs/base/common/types'; // register singleton services @@ -29,6 +30,7 @@ registerSingleton(ILogService, ExtHostLogService); registerSingleton(IExtHostApiDeprecationService, ExtHostApiDeprecationService); registerSingleton(IExtHostOutputService, ExtHostOutputService); registerSingleton(IExtHostWorkspace, ExtHostWorkspace); +registerSingleton(IExtHostWindow, ExtHostWindow); registerSingleton(IExtHostDecorations, ExtHostDecorations); registerSingleton(IExtHostConfiguration, ExtHostConfiguration); registerSingleton(IExtHostCommands, ExtHostCommands); diff --git a/src/vs/workbench/services/history/browser/history.ts b/src/vs/workbench/services/history/browser/history.ts index 81c01c590d..027dd38772 100644 --- a/src/vs/workbench/services/history/browser/history.ts +++ b/src/vs/workbench/services/history/browser/history.ts @@ -9,7 +9,7 @@ import { ITextEditorOptions, IResourceEditorInput, TextEditorSelectionRevealType import { IEditorInput, IEditorPane, Extensions as EditorExtensions, EditorInput, IEditorCloseEvent, IEditorInputFactoryRegistry, toResource, IEditorIdentifier, GroupIdentifier, EditorsOrder, SideBySideEditor } from 'vs/workbench/common/editor'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IHistoryService } from 'vs/workbench/services/history/common/history'; -import { FileChangesEvent, IFileService, FileChangeType } from 'vs/platform/files/common/files'; +import { FileChangesEvent, IFileService, FileChangeType, FILES_EXCLUDE_CONFIG } from 'vs/platform/files/common/files'; import { Selection } from 'vs/editor/common/core/selection'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; import { dispose, Disposable, DisposableStore } from 'vs/base/common/lifecycle'; @@ -19,7 +19,7 @@ import { Event } from 'vs/base/common/event'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService'; import { getCodeEditor, ICodeEditor } from 'vs/editor/browser/editorBrowser'; -import { createResourceExcludeMatcher } from 'vs/workbench/services/search/common/search'; +import { getExcludes, ISearchConfiguration, SEARCH_EXCLUDE_CONFIG } from 'vs/workbench/services/search/common/search'; import { ICursorPositionChangedEvent } from 'vs/editor/common/controller/cursorEvents'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { EditorServiceImpl } from 'vs/workbench/browser/parts/editor/editor'; @@ -32,6 +32,9 @@ import { addDisposableListener, EventType, EventHelper } from 'vs/base/browser/d import { IWorkspacesService } from 'vs/platform/workspaces/common/workspaces'; import { Schemas } from 'vs/base/common/network'; import { onUnexpectedError } from 'vs/base/common/errors'; +import { extUri } from 'vs/base/common/resources'; +import { IdleValue } from 'vs/base/common/async'; +import { ResourceGlobMatcher } from 'vs/workbench/common/resources'; /** * Stores the selection & view state of an editor and allows to compare it to other selection states. @@ -127,7 +130,6 @@ export class HistoryService extends Disposable implements IHistoryService { this._register(this.editorService.onDidCloseEditor(event => this.onEditorClosed(event))); this._register(this.storageService.onWillSaveState(() => this.saveState())); this._register(this.fileService.onDidFilesChange(event => this.onDidFilesChange(event))); - this._register(this.resourceExcludeMatcher.onExpressionChange(() => this.removeExcludedFromHistory())); this._register(this.editorService.onDidMostRecentlyActiveEditorsChange(() => this.handleEditorEventInRecentEditorsStack())); // if the service is created late enough that an editor is already opened @@ -577,7 +579,7 @@ export class HistoryService extends Disposable implements IHistoryService { const resourceEditorInputA = arg1 as IResourceEditorInput; const resourceEditorInputB = inputB as IResourceEditorInput; - return resourceEditorInputA && resourceEditorInputB && resourceEditorInputA.resource.toString() === resourceEditorInputB.resource.toString(); + return resourceEditorInputA && resourceEditorInputB && extUri.isEqual(resourceEditorInputA.resource, resourceEditorInputB.resource); } private matchesFile(resource: URI, arg2: IEditorInput | IResourceEditorInput | FileChangesEvent): boolean { @@ -595,12 +597,12 @@ export class HistoryService extends Disposable implements IHistoryService { return false; // make sure to only check this when workbench has restored (for https://github.com/Microsoft/vscode/issues/48275) } - return inputResource.toString() === resource.toString(); + return extUri.isEqual(inputResource, resource); } const resourceEditorInput = arg2 as IResourceEditorInput; - return resourceEditorInput?.resource.toString() === resource.toString(); + return extUri.isEqual(resourceEditorInput?.resource, resource); } //#endregion @@ -632,7 +634,7 @@ export class HistoryService extends Disposable implements IHistoryService { if (URI.isUri(editorResource)) { associatedResources.push(editorResource); } else if (editorResource) { - associatedResources.push(...coalesce([editorResource.master, editorResource.detail])); + associatedResources.push(...coalesce([editorResource.primary, editorResource.secondary])); } // Remove from list of recently closed before... @@ -768,7 +770,17 @@ export class HistoryService extends Disposable implements IHistoryService { private history: Array | undefined = undefined; - private readonly resourceExcludeMatcher = this._register(createResourceExcludeMatcher(this.instantiationService, this.configurationService)); + private readonly resourceExcludeMatcher = this._register(new IdleValue(() => { + const matcher = this._register(this.instantiationService.createInstance( + ResourceGlobMatcher, + root => getExcludes(root ? this.configurationService.getValue({ resource: root }) : this.configurationService.getValue()) || Object.create(null), + event => event.affectsConfiguration(FILES_EXCLUDE_CONFIG) || event.affectsConfiguration(SEARCH_EXCLUDE_CONFIG) + )); + + this._register(matcher.onExpressionChange(() => this.removeExcludedFromHistory())); + + return matcher; + })); private handleEditorEventInHistory(editor?: IEditorPane): void { @@ -804,7 +816,7 @@ export class HistoryService extends Disposable implements IHistoryService { const resourceEditorInput = input as IResourceEditorInput; - return !this.resourceExcludeMatcher.matches(resourceEditorInput.resource); + return !this.resourceExcludeMatcher.value.matches(resourceEditorInput.resource); } private removeExcludedFromHistory(): void { diff --git a/src/vs/workbench/services/host/browser/browserHostService.ts b/src/vs/workbench/services/host/browser/browserHostService.ts index d03f4c0b9d..94679b42ba 100644 --- a/src/vs/workbench/services/host/browser/browserHostService.ts +++ b/src/vs/workbench/services/host/browser/browserHostService.ts @@ -174,8 +174,8 @@ export class BrowserHostService extends Disposable implements IHostService { // New Window: open into empty window else { const environment = new Map(); - environment.set('diffFileDetail', editors[0].resource.toString()); - environment.set('diffFileMaster', editors[1].resource.toString()); + environment.set('diffFileSecondary', editors[0].resource.toString()); + environment.set('diffFilePrimary', editors[1].resource.toString()); this.workspaceProvider.open(undefined, { payload: Array.from(environment.entries()) }); } @@ -283,7 +283,7 @@ export class BrowserHostService extends Disposable implements IHostService { } private async doOpenEmptyWindow(options?: IOpenEmptyWindowOptions): Promise { - this.workspaceProvider.open(undefined, { reuse: options?.forceReuseWindow }); + return this.workspaceProvider.open(undefined, { reuse: options?.forceReuseWindow }); } async toggleFullScreen(): Promise { diff --git a/src/vs/workbench/contrib/hover/browser/hover.ts b/src/vs/workbench/services/hover/browser/hover.ts similarity index 92% rename from src/vs/workbench/contrib/hover/browser/hover.ts rename to src/vs/workbench/services/hover/browser/hover.ts index 2fff2317dd..0ed20a2f0e 100644 --- a/src/vs/workbench/contrib/hover/browser/hover.ts +++ b/src/vs/workbench/services/hover/browser/hover.ts @@ -66,6 +66,13 @@ export interface IHoverOptions { * be used to open the links using its default options. */ linkHandler?(url: string): void; + + /** + * Whether to hide the hover when the mouse leaves the `target` and enters the actual hover. + * This is false by default and note that it will be ignored if any `actions` are provided such + * that they are accessible. + */ + hideOnHover?: boolean; } export interface IHoverAction { diff --git a/src/vs/workbench/contrib/hover/browser/hover.contribution.ts b/src/vs/workbench/services/hover/browser/hoverService.ts similarity index 55% rename from src/vs/workbench/contrib/hover/browser/hover.contribution.ts rename to src/vs/workbench/services/hover/browser/hoverService.ts index 82a3db9a4c..fad5c3ad49 100644 --- a/src/vs/workbench/contrib/hover/browser/hover.contribution.ts +++ b/src/vs/workbench/services/hover/browser/hoverService.ts @@ -5,10 +5,78 @@ import 'vs/css!./media/hover'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; -import { HoverService } from 'vs/workbench/contrib/hover/browser/hoverService'; -import { IHoverService } from 'vs/workbench/contrib/hover/browser/hover'; import { registerThemingParticipant } from 'vs/platform/theme/common/themeService'; import { editorHoverBackground, editorHoverBorder, textLinkForeground, editorHoverForeground, editorHoverStatusBarBackground, textCodeBlockBackground } from 'vs/platform/theme/common/colorRegistry'; +import { IHoverService, IHoverOptions } from 'vs/workbench/services/hover/browser/hover'; +import { IContextViewService } from 'vs/platform/contextview/browser/contextView'; +import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; +import { HoverWidget } from 'vs/workbench/services/hover/browser/hoverWidget'; +import { IContextViewProvider, IDelegate } from 'vs/base/browser/ui/contextview/contextview'; + +export class HoverService implements IHoverService { + declare readonly _serviceBrand: undefined; + + private _currentHoverOptions: IHoverOptions | undefined; + + constructor( + @IInstantiationService private readonly _instantiationService: IInstantiationService, + @IContextViewService private readonly _contextViewService: IContextViewService + ) { + } + + showHover(options: IHoverOptions, focus?: boolean): void { + if (this._currentHoverOptions === options) { + return; + } + this._currentHoverOptions = options; + + const hover = this._instantiationService.createInstance(HoverWidget, options); + hover.onDispose(() => this._currentHoverOptions = undefined); + const provider = this._contextViewService as IContextViewProvider; + provider.showContextView(new HoverContextViewDelegate(hover, focus)); + hover.onRequestLayout(() => provider.layout()); + } + + hideHover(): void { + if (!this._currentHoverOptions) { + return; + } + this._currentHoverOptions = undefined; + this._contextViewService.hideContextView(); + } +} + +class HoverContextViewDelegate implements IDelegate { + + get anchorPosition() { + return this._hover.anchor; + } + + constructor( + private readonly _hover: HoverWidget, + private readonly _focus: boolean = false + ) { + } + + render(container: HTMLElement) { + this._hover.render(container); + if (this._focus) { + this._hover.focus(); + } + return this._hover; + } + + getAnchor() { + return { + x: this._hover.x, + y: this._hover.y + }; + } + + layout() { + this._hover.layout(); + } +} registerSingleton(IHoverService, HoverService, true); diff --git a/src/vs/workbench/contrib/hover/browser/hoverWidget.ts b/src/vs/workbench/services/hover/browser/hoverWidget.ts similarity index 95% rename from src/vs/workbench/contrib/hover/browser/hoverWidget.ts rename to src/vs/workbench/services/hover/browser/hoverWidget.ts index e14f0a6ce7..638690dd05 100644 --- a/src/vs/workbench/contrib/hover/browser/hoverWidget.ts +++ b/src/vs/workbench/services/hover/browser/hoverWidget.ts @@ -8,7 +8,7 @@ import { renderMarkdown } from 'vs/base/browser/markdownRenderer'; import { Event, Emitter } from 'vs/base/common/event'; import * as dom from 'vs/base/browser/dom'; import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; -import { IHoverTarget, IHoverOptions } from 'vs/workbench/contrib/hover/browser/hover'; +import { IHoverTarget, IHoverOptions } from 'vs/workbench/services/hover/browser/hover'; import { KeyCode } from 'vs/base/common/keyCodes'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { EDITOR_FONT_DEFAULTS, IEditorOptions } from 'vs/editor/common/config/editorOptions'; @@ -115,7 +115,11 @@ export class HoverWidget extends Widget { this._hover.containerDomNode.appendChild(statusBarElement); } - this._mouseTracker = new CompositeMouseTracker([this._hover.containerDomNode, ...this._target.targetElements]); + const mouseTrackerTargets = [...this._target.targetElements]; + if (!options.hideOnHover || (options.actions && options.actions.length > 0)) { + mouseTrackerTargets.push(this._hover.containerDomNode); + } + this._mouseTracker = new CompositeMouseTracker(mouseTrackerTargets); this._register(this._mouseTracker.onMouseOut(() => this.dispose())); this._register(this._mouseTracker); } diff --git a/src/vs/workbench/contrib/hover/browser/media/hover.css b/src/vs/workbench/services/hover/browser/media/hover.css similarity index 100% rename from src/vs/workbench/contrib/hover/browser/media/hover.css rename to src/vs/workbench/services/hover/browser/media/hover.css diff --git a/src/vs/workbench/services/log/browser/indexedDBLogProvider.ts b/src/vs/workbench/services/log/browser/indexedDBLogProvider.ts deleted file mode 100644 index 89f70d611b..0000000000 --- a/src/vs/workbench/services/log/browser/indexedDBLogProvider.ts +++ /dev/null @@ -1,96 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Source EULA. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { KeyValueLogProvider } from 'vs/workbench/services/log/common/keyValueLogProvider'; - -export const INDEXEDDB_VSCODE_DB = 'vscode-web-db'; -export const INDEXEDDB_LOGS_OBJECT_STORE = 'vscode-logs-store'; - -export class IndexedDBLogProvider extends KeyValueLogProvider { - - readonly database: Promise; - - constructor(scheme: string) { - super(scheme); - this.database = this.openDatabase(1); - } - - private openDatabase(version: number): Promise { - return new Promise((c, e) => { - const request = window.indexedDB.open(INDEXEDDB_VSCODE_DB, version); - request.onerror = (err) => e(request.error); - request.onsuccess = () => { - const db = request.result; - if (db.objectStoreNames.contains(INDEXEDDB_LOGS_OBJECT_STORE)) { - c(db); - } - }; - request.onupgradeneeded = () => { - const db = request.result; - if (!db.objectStoreNames.contains(INDEXEDDB_LOGS_OBJECT_STORE)) { - db.createObjectStore(INDEXEDDB_LOGS_OBJECT_STORE); - } - c(db); - }; - }); - } - - protected async getAllKeys(): Promise { - return new Promise(async (c, e) => { - const db = await this.database; - const transaction = db.transaction([INDEXEDDB_LOGS_OBJECT_STORE]); - const objectStore = transaction.objectStore(INDEXEDDB_LOGS_OBJECT_STORE); - const request = objectStore.getAllKeys(); - request.onerror = () => e(request.error); - request.onsuccess = () => c(request.result); - }); - } - - protected hasKey(key: string): Promise { - return new Promise(async (c, e) => { - const db = await this.database; - const transaction = db.transaction([INDEXEDDB_LOGS_OBJECT_STORE]); - const objectStore = transaction.objectStore(INDEXEDDB_LOGS_OBJECT_STORE); - const request = objectStore.getKey(key); - request.onerror = () => e(request.error); - request.onsuccess = () => { - c(!!request.result); - }; - }); - } - - protected getValue(key: string): Promise { - return new Promise(async (c, e) => { - const db = await this.database; - const transaction = db.transaction([INDEXEDDB_LOGS_OBJECT_STORE]); - const objectStore = transaction.objectStore(INDEXEDDB_LOGS_OBJECT_STORE); - const request = objectStore.get(key); - request.onerror = () => e(request.error); - request.onsuccess = () => c(request.result || ''); - }); - } - - protected setValue(key: string, value: string): Promise { - return new Promise(async (c, e) => { - const db = await this.database; - const transaction = db.transaction([INDEXEDDB_LOGS_OBJECT_STORE], 'readwrite'); - const objectStore = transaction.objectStore(INDEXEDDB_LOGS_OBJECT_STORE); - const request = objectStore.put(value, key); - request.onerror = () => e(request.error); - request.onsuccess = () => c(); - }); - } - - protected deleteKey(key: string): Promise { - return new Promise(async (c, e) => { - const db = await this.database; - const transaction = db.transaction([INDEXEDDB_LOGS_OBJECT_STORE], 'readwrite'); - const objectStore = transaction.objectStore(INDEXEDDB_LOGS_OBJECT_STORE); - const request = objectStore.delete(key); - request.onerror = () => e(request.error); - request.onsuccess = () => c(); - }); - } -} diff --git a/src/vs/workbench/services/log/common/inMemoryLogProvider.ts b/src/vs/workbench/services/log/common/inMemoryLogProvider.ts deleted file mode 100644 index 4e25f2f686..0000000000 --- a/src/vs/workbench/services/log/common/inMemoryLogProvider.ts +++ /dev/null @@ -1,33 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Source EULA. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { KeyValueLogProvider } from 'vs/workbench/services/log/common/keyValueLogProvider'; -import { keys } from 'vs/base/common/map'; - -export class InMemoryLogProvider extends KeyValueLogProvider { - - private readonly logs: Map = new Map(); - - protected async getAllKeys(): Promise { - return keys(this.logs); - } - - protected async hasKey(key: string): Promise { - return this.logs.has(key); - } - - protected async getValue(key: string): Promise { - return this.logs.get(key) || ''; - } - - protected async setValue(key: string, value: string): Promise { - this.logs.set(key, value); - } - - protected async deleteKey(key: string): Promise { - this.logs.delete(key); - } - -} diff --git a/src/vs/workbench/services/path/browser/pathService.ts b/src/vs/workbench/services/path/browser/pathService.ts index 29882716eb..5cf965240e 100644 --- a/src/vs/workbench/services/path/browser/pathService.ts +++ b/src/vs/workbench/services/path/browser/pathService.ts @@ -16,7 +16,7 @@ export class BrowserPathService extends AbstractPathService { @IRemoteAgentService remoteAgentService: IRemoteAgentService, @IWorkbenchEnvironmentService environmentService: IWorkbenchEnvironmentService ) { - super(() => URI.from({ scheme: Schemas.vscodeRemote, authority: environmentService.configuration.remoteAuthority, path: '/' }), remoteAgentService); + super(URI.from({ scheme: Schemas.vscodeRemote, authority: environmentService.configuration.remoteAuthority, path: '/' }), remoteAgentService); } } diff --git a/src/vs/workbench/services/path/common/pathService.ts b/src/vs/workbench/services/path/common/pathService.ts index 812c5f611f..580f284440 100644 --- a/src/vs/workbench/services/path/common/pathService.ts +++ b/src/vs/workbench/services/path/common/pathService.ts @@ -40,13 +40,13 @@ export interface IPathService { /** * Resolves the user-home directory for the target environment. * If the envrionment is connected to a remote, this will be the - * remote's user home directory, otherwise the local one. + * remote's user home directory, otherwise the local one unless + * `preferLocal` is set to `true`. */ - readonly userHome: Promise; + userHome(options?: { preferLocal: boolean }): Promise; /** - * Access to `userHome` in a sync fashion. This may be `undefined` - * as long as the remote environment was not resolved. + * @deprecated use `userHome` instead. */ readonly resolvedUserHome: URI | undefined; } @@ -55,26 +55,35 @@ export abstract class AbstractPathService implements IPathService { declare readonly _serviceBrand: undefined; - private remoteOS: Promise; + private resolveOS: Promise; private resolveUserHome: Promise; private maybeUnresolvedUserHome: URI | undefined; constructor( - fallbackUserHome: () => URI, + private localUserHome: URI, @IRemoteAgentService private readonly remoteAgentService: IRemoteAgentService ) { - this.remoteOS = this.remoteAgentService.getEnvironment().then(env => env?.os || OS); - this.resolveUserHome = this.remoteAgentService.getEnvironment().then(env => { - const userHome = this.maybeUnresolvedUserHome = env?.userHome || fallbackUserHome(); + // OS + this.resolveOS = (async () => { + const env = await this.remoteAgentService.getEnvironment(); + + return env?.os || OS; + })(); + + // User Home + this.resolveUserHome = (async () => { + const env = await this.remoteAgentService.getEnvironment(); + const userHome = this.maybeUnresolvedUserHome = env?.userHome || localUserHome; + return userHome; - }); + })(); } - get userHome(): Promise { - return this.resolveUserHome; + async userHome(options?: { preferLocal: boolean }): Promise { + return options?.preferLocal ? this.localUserHome : this.resolveUserHome; } get resolvedUserHome(): URI | undefined { @@ -82,7 +91,7 @@ export abstract class AbstractPathService implements IPathService { } get path(): Promise { - return this.remoteOS.then(os => { + return this.resolveOS.then(os => { return os === OperatingSystem.Windows ? win32 : posix; @@ -95,7 +104,8 @@ export abstract class AbstractPathService implements IPathService { // normalize to fwd-slashes on windows, // on other systems bwd-slashes are valid // filename character, eg /f\oo/ba\r.txt - if ((await this.remoteOS) === OperatingSystem.Windows) { + const os = await this.resolveOS; + if (os === OperatingSystem.Windows) { _path = _path.replace(/\\/g, '/'); } diff --git a/src/vs/workbench/services/path/electron-browser/pathService.ts b/src/vs/workbench/services/path/electron-browser/pathService.ts index ccb6d504cd..b9d34aa803 100644 --- a/src/vs/workbench/services/path/electron-browser/pathService.ts +++ b/src/vs/workbench/services/path/electron-browser/pathService.ts @@ -15,7 +15,7 @@ export class NativePathService extends AbstractPathService { @IRemoteAgentService remoteAgentService: IRemoteAgentService, @IWorkbenchEnvironmentService environmentService: INativeWorkbenchEnvironmentService ) { - super(() => environmentService.userHome, remoteAgentService); + super(environmentService.userHome, remoteAgentService); } } diff --git a/src/vs/workbench/services/preferences/browser/preferencesService.ts b/src/vs/workbench/services/preferences/browser/preferencesService.ts index 0c9a074c14..254777a58e 100644 --- a/src/vs/workbench/services/preferences/browser/preferencesService.ts +++ b/src/vs/workbench/services/preferences/browser/preferencesService.ts @@ -210,7 +210,7 @@ export class PreferencesService extends Disposable implements IPreferencesServic } const editorInput = this.getActiveSettingsEditorInput() || this.lastOpenedSettingsInput; - const resource = editorInput ? editorInput.master.resource! : this.userSettingsResource; + const resource = editorInput ? editorInput.primary.resource! : this.userSettingsResource; const target = this.getConfigurationTargetFromSettingsResource(resource); return this.openOrSwitchSettings(target, resource, { query: query }); } @@ -317,7 +317,7 @@ export class PreferencesService extends Disposable implements IPreferencesServic private async openOrSwitchSettings(configurationTarget: ConfigurationTarget, resource: URI, options?: ISettingsEditorOptions, group: IEditorGroup = this.editorGroupService.activeGroup): Promise { const editorInput = this.getActiveSettingsEditorInput(group); if (editorInput) { - const editorInputResource = editorInput.master.resource; + const editorInputResource = editorInput.primary.resource; if (editorInputResource && editorInputResource.fsPath !== resource.fsPath) { return this.doSwitchSettings(configurationTarget, resource, editorInput, group, options); } diff --git a/src/vs/workbench/services/preferences/common/preferencesEditorInput.ts b/src/vs/workbench/services/preferences/common/preferencesEditorInput.ts index 7dd4f1a996..556d6ac329 100644 --- a/src/vs/workbench/services/preferences/common/preferencesEditorInput.ts +++ b/src/vs/workbench/services/preferences/common/preferencesEditorInput.ts @@ -29,7 +29,7 @@ export class PreferencesEditorInput extends SideBySideEditorInput { } getTitle(verbosity: Verbosity): string { - return this.master.getTitle(verbosity); + return this.primary.getTitle(verbosity); } } diff --git a/src/vs/workbench/services/remote/common/remoteExplorerService.ts b/src/vs/workbench/services/remote/common/remoteExplorerService.ts index db49632527..5c22f568bf 100644 --- a/src/vs/workbench/services/remote/common/remoteExplorerService.ts +++ b/src/vs/workbench/services/remote/common/remoteExplorerService.ts @@ -13,6 +13,7 @@ import { IEditableData } from 'vs/workbench/common/views'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { TunnelInformation, TunnelDescription, IRemoteAuthorityResolverService } from 'vs/platform/remote/common/remoteAuthorityResolver'; import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; +import { IAddressProvider } from 'vs/platform/remote/common/remoteAgentConnection'; export const IRemoteExplorerService = createDecorator('remoteExplorerService'); export const REMOTE_EXPLORER_TYPE_KEY: string = 'remote.explorerType'; @@ -141,12 +142,11 @@ export class TunnelModel extends Disposable { const key = MakeAddress(remote.host, remote.port); if (!this.forwarded.has(key)) { const authority = this.environmentService.configuration.remoteAuthority; - const resolvedRemote = authority ? await this.remoteAuthorityResolverService.resolveAuthority(authority) : undefined; - if (!resolvedRemote) { - return; - } + const addressProvider: IAddressProvider | undefined = authority ? { + getAddress: async () => { return (await this.remoteAuthorityResolverService.resolveAuthority(authority)).authority; } + } : undefined; - const tunnel = await this.tunnelService.openTunnel(resolvedRemote.authority, remote.host, remote.port, local); + const tunnel = await this.tunnelService.openTunnel(addressProvider, remote.host, remote.port, local); if (tunnel && tunnel.localAddress) { const newForward: Tunnel = { remoteHost: tunnel.tunnelRemoteHost, diff --git a/src/vs/workbench/services/search/common/search.ts b/src/vs/workbench/services/search/common/search.ts index cdb47f8caa..4d96f20707 100644 --- a/src/vs/workbench/services/search/common/search.ts +++ b/src/vs/workbench/services/search/common/search.ts @@ -11,13 +11,11 @@ import * as objects from 'vs/base/common/objects'; import * as extpath from 'vs/base/common/extpath'; import { fuzzyContains, getNLines } from 'vs/base/common/strings'; import { URI, UriComponents } from 'vs/base/common/uri'; -import { IFilesConfiguration, FILES_EXCLUDE_CONFIG } from 'vs/platform/files/common/files'; -import { createDecorator, IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; +import { IFilesConfiguration } from 'vs/platform/files/common/files'; +import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { ITelemetryData } from 'vs/platform/telemetry/common/telemetry'; import { Event } from 'vs/base/common/event'; import { relative } from 'vs/base/common/path'; -import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; -import { ResourceGlobMatcher } from 'vs/workbench/common/resources'; import { isPromiseCanceledError } from 'vs/base/common/errors'; export const VIEWLET_ID = 'workbench.view.search'; @@ -384,14 +382,6 @@ export function getExcludes(configuration: ISearchConfiguration, includeSearchEx return allExcludes; } -export function createResourceExcludeMatcher(instantiationService: IInstantiationService, configurationService: IConfigurationService): ResourceGlobMatcher { - return instantiationService.createInstance( - ResourceGlobMatcher, - root => getExcludes(root ? configurationService.getValue({ resource: root }) : configurationService.getValue()) || Object.create(null), - event => event.affectsConfiguration(FILES_EXCLUDE_CONFIG) || event.affectsConfiguration(SEARCH_EXCLUDE_CONFIG) - ); -} - export function pathIncludedInQuery(queryProps: ICommonQueryProps, fsPath: string): boolean { if (queryProps.excludePattern && glob.match(queryProps.excludePattern, fsPath)) { return false; diff --git a/src/vs/workbench/services/search/node/ripgrepTextSearchEngine.ts b/src/vs/workbench/services/search/node/ripgrepTextSearchEngine.ts index 5ac5951cab..3a962c3deb 100644 --- a/src/vs/workbench/services/search/node/ripgrepTextSearchEngine.ts +++ b/src/vs/workbench/services/search/node/ripgrepTextSearchEngine.ts @@ -116,7 +116,8 @@ export class RipgrepTextSearchEngine { } /** - * Read the first line of stderr and return an error for display or undefined, based on a whitelist. + * Read the first line of stderr and return an error for display or undefined, based on a list of + * allowed properties. * Ripgrep produces stderr output which is not from a fatal error, and we only want the search to be * "failed" when a fatal error was produced. */ diff --git a/src/vs/workbench/services/search/node/textSearchManager.ts b/src/vs/workbench/services/search/node/textSearchManager.ts index 355212f281..1724dd2307 100644 --- a/src/vs/workbench/services/search/node/textSearchManager.ts +++ b/src/vs/workbench/services/search/node/textSearchManager.ts @@ -3,7 +3,7 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { toCanonicalName } from 'vs/base/node/encoding'; +import { toCanonicalName } from 'vs/workbench/services/textfile/common/encoding'; import * as pfs from 'vs/base/node/pfs'; import { ITextQuery } from 'vs/workbench/services/search/common/search'; import { TextSearchProvider } from 'vs/workbench/services/search/common/searchExtTypes'; diff --git a/src/vs/workbench/services/textfile/browser/browserTextFileService.ts b/src/vs/workbench/services/textfile/browser/browserTextFileService.ts index fb819669c4..f86cab0320 100644 --- a/src/vs/workbench/services/textfile/browser/browserTextFileService.ts +++ b/src/vs/workbench/services/textfile/browser/browserTextFileService.ts @@ -3,18 +3,22 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { AbstractTextFileService } from 'vs/workbench/services/textfile/browser/textFileService'; -import { ITextFileService, IResourceEncodings, IResourceEncoding, TextFileEditorModelState } from 'vs/workbench/services/textfile/common/textfiles'; +import { AbstractTextFileService, EncodingOracle } from 'vs/workbench/services/textfile/browser/textFileService'; +import { ITextFileService, IResourceEncoding, TextFileEditorModelState } from 'vs/workbench/services/textfile/common/textfiles'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { ShutdownReason } from 'vs/platform/lifecycle/common/lifecycle'; export class BrowserTextFileService extends AbstractTextFileService { - readonly encoding: IResourceEncodings = { - async getPreferredWriteEncoding(): Promise { - return { encoding: 'utf8', hasBOM: false }; + private _browserEncoding: EncodingOracle | undefined; + + get encoding(): EncodingOracle { + if (!this._browserEncoding) { + this._browserEncoding = this._register(this.instantiationService.createInstance(BrowserEncodingOracle)); } - }; + + return this._browserEncoding; + } protected registerListeners(): void { super.registerListeners(); @@ -34,4 +38,18 @@ export class BrowserTextFileService extends AbstractTextFileService { } } +class BrowserEncodingOracle extends EncodingOracle { + async getPreferredWriteEncoding(): Promise { + return { encoding: 'utf8', hasBOM: false }; + } + + async getWriteEncoding(): Promise<{ encoding: string, addBOM: boolean }> { + return { encoding: 'utf8', addBOM: false }; + } + + async getReadEncoding(): Promise { + return 'utf8'; + } +} + registerSingleton(ITextFileService, BrowserTextFileService); diff --git a/src/vs/workbench/services/textfile/browser/textFileService.ts b/src/vs/workbench/services/textfile/browser/textFileService.ts index 29bdf18411..cd0501d2e1 100644 --- a/src/vs/workbench/services/textfile/browser/textFileService.ts +++ b/src/vs/workbench/services/textfile/browser/textFileService.ts @@ -5,11 +5,10 @@ import * as nls from 'vs/nls'; import { URI } from 'vs/base/common/uri'; -import { AsyncEmitter } from 'vs/base/common/event'; -import { ITextFileService, ITextFileStreamContent, ITextFileContent, IResourceEncodings, IReadTextFileOptions, IWriteTextFileOptions, toBufferOrReadable, TextFileOperationError, TextFileOperationResult, ITextFileSaveOptions, ITextFileEditorModelManager, TextFileCreateEvent } from 'vs/workbench/services/textfile/common/textfiles'; +import { ITextFileService, ITextFileStreamContent, ITextFileContent, IResourceEncodings, IReadTextFileOptions, IWriteTextFileOptions, toBufferOrReadable, TextFileOperationError, TextFileOperationResult, ITextFileSaveOptions, ITextFileEditorModelManager, IResourceEncoding } from 'vs/workbench/services/textfile/common/textfiles'; import { IRevertOptions, IEncodingSupport } from 'vs/workbench/common/editor'; import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle'; -import { IFileService, FileOperationError, FileOperationResult, IFileStatWithMetadata, ICreateFileOptions, FileOperation } from 'vs/platform/files/common/files'; +import { IFileService, FileOperationError, FileOperationResult, IFileStatWithMetadata, ICreateFileOptions } from 'vs/platform/files/common/files'; import { Disposable } from 'vs/base/common/lifecycle'; import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; import { IUntitledTextEditorService, IUntitledTextEditorModelManager } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; @@ -19,14 +18,13 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti import { Schemas } from 'vs/base/common/network'; import { createTextBufferFactoryFromSnapshot, createTextBufferFactoryFromStream } from 'vs/editor/common/model/textModel'; import { IModelService } from 'vs/editor/common/services/modelService'; -import { joinPath, dirname, basename, toLocalResource } from 'vs/base/common/resources'; +import { joinPath, dirname, basename, toLocalResource, extUri, extname, isEqualOrParent } from 'vs/base/common/resources'; import { IDialogService, IFileDialogService, IConfirmation } from 'vs/platform/dialogs/common/dialogs'; -import { VSBuffer } from 'vs/base/common/buffer'; +import { VSBuffer, VSBufferReadable } from 'vs/base/common/buffer'; import { ITextSnapshot, ITextModel } from 'vs/editor/common/model'; import { ITextResourceConfigurationService } from 'vs/editor/common/services/textResourceConfigurationService'; import { PLAINTEXT_MODE_ID } from 'vs/editor/common/modes/modesRegistry'; import { IFilesConfigurationService } from 'vs/workbench/services/filesConfiguration/common/filesConfigurationService'; -import { CancellationToken } from 'vs/base/common/cancellation'; import { ITextModelService, IResolvedTextEditorModel } from 'vs/editor/common/services/resolverService'; import { BaseTextEditorModel } from 'vs/workbench/common/editor/textEditorModel'; import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService'; @@ -35,6 +33,10 @@ import { IPathService } from 'vs/workbench/services/path/common/pathService'; import { isValidBasename } from 'vs/base/common/extpath'; import { IWorkingCopyFileService } from 'vs/workbench/services/workingCopy/common/workingCopyFileService'; import { IUriIdentityService } from 'vs/workbench/services/uriIdentity/common/uriIdentity'; +import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; +import { WORKSPACE_EXTENSION } from 'vs/platform/workspaces/common/workspaces'; +import { IEnvironmentService } from 'vs/platform/environment/common/environment'; +import { UTF8, UTF8_with_bom, UTF16be, UTF16le, encodingExists, UTF8_BOM, detectEncodingByBOMFromBuffer } from 'vs/workbench/services/textfile/common/encoding'; /** * The workbench file service implementation implements the raw file service spec and adds additional methods on top. @@ -43,19 +45,10 @@ export abstract class AbstractTextFileService extends Disposable implements ITex declare readonly _serviceBrand: undefined; - //#region events - - private _onDidCreateTextFile = this._register(new AsyncEmitter()); - readonly onDidCreateTextFile = this._onDidCreateTextFile.event; - - //#endregion - readonly files: ITextFileEditorModelManager = this._register(this.instantiationService.createInstance(TextFileEditorModelManager)); readonly untitled: IUntitledTextEditorModelManager = this.untitledTextEditorService; - abstract get encoding(): IResourceEncodings; - constructor( @IFileService protected readonly fileService: IFileService, @IUntitledTextEditorService private untitledTextEditorService: IUntitledTextEditorService, @@ -86,6 +79,16 @@ export abstract class AbstractTextFileService extends Disposable implements ITex //#region text file read / write / create + private _encoding: EncodingOracle | undefined; + + get encoding(): EncodingOracle { + if (!this._encoding) { + this._encoding = this._register(this.instantiationService.createInstance(EncodingOracle)); + } + + return this._encoding; + } + async read(resource: URI, options?: IReadTextFileOptions): Promise { const content = await this.fileService.readFile(resource, options); @@ -141,30 +144,17 @@ export abstract class AbstractTextFileService extends Disposable implements ITex } async create(resource: URI, value?: string | ITextSnapshot, options?: ICreateFileOptions): Promise { + const encodedValue = await this.doEncodeText(resource, value); - // file operation participation - await this.workingCopyFileService.runFileOperationParticipants(resource, undefined, FileOperation.CREATE); - - // create file on disk - const stat = await this.doCreate(resource, value, options); - - // If we had an existing model for the given resource, load - // it again to make sure it is up to date with the contents - // we just wrote into the underlying resource by calling - // revert() - const existingModel = this.files.get(resource); - if (existingModel && !existingModel.isDisposed()) { - await existingModel.revert(); - } - - // after event - await this._onDidCreateTextFile.fireAsync({ resource }, CancellationToken.None); - - return stat; + return this.workingCopyFileService.create(resource, encodedValue, options); } - protected doCreate(resource: URI, value?: string | ITextSnapshot, options?: ICreateFileOptions): Promise { - return this.fileService.createFile(resource, toBufferOrReadable(value), options); + protected async doEncodeText(resource: URI, value?: string | ITextSnapshot): Promise { + if (!value) { + return undefined; + } + + return toBufferOrReadable(value); } async write(resource: URI, value: string | ITextSnapshot, options?: IWriteTextFileOptions): Promise { @@ -224,7 +214,7 @@ export abstract class AbstractTextFileService extends Disposable implements ITex } // Just save if target is same as models own resource - if (source.toString() === target.toString()) { + if (extUri.isEqual(source, target)) { return this.save(source, { ...options, force: true /* force to save, even if not dirty (https://github.com/microsoft/vscode/issues/99619) */ }); } @@ -234,7 +224,7 @@ export abstract class AbstractTextFileService extends Disposable implements ITex // However, this will only work if the source exists // and is not orphaned, so we need to check that too. if (this.fileService.canHandleResource(source) && this.uriIdentityService.extUri.isEqual(source, target) && (await this.fileService.exists(source))) { - await this.workingCopyFileService.move(source, target); + await this.workingCopyFileService.move([{ source, target }]); return this.save(target, options); } @@ -450,7 +440,7 @@ export abstract class AbstractTextFileService extends Disposable implements ITex // Try to place where last active file was if any // Otherwise fallback to user home - return joinPath(this.fileDialogService.defaultFilePath() || (await this.pathService.userHome), suggestedFilename); + return joinPath(this.fileDialogService.defaultFilePath() || (await this.pathService.userHome()), suggestedFilename); } //#endregion @@ -491,3 +481,150 @@ export abstract class AbstractTextFileService extends Disposable implements ITex //#endregion } + +export interface IEncodingOverride { + parent?: URI; + extension?: string; + encoding: string; +} + +export class EncodingOracle extends Disposable implements IResourceEncodings { + + private _encodingOverrides: IEncodingOverride[]; + protected get encodingOverrides(): IEncodingOverride[] { return this._encodingOverrides; } + protected set encodingOverrides(value: IEncodingOverride[]) { this._encodingOverrides = value; } + + constructor( + @ITextResourceConfigurationService private textResourceConfigurationService: ITextResourceConfigurationService, + @IEnvironmentService private environmentService: IEnvironmentService, + @IWorkspaceContextService private contextService: IWorkspaceContextService, + @IFileService private fileService: IFileService + ) { + super(); + + this._encodingOverrides = this.getDefaultEncodingOverrides(); + + this.registerListeners(); + } + + private registerListeners(): void { + + // Workspace Folder Change + this._register(this.contextService.onDidChangeWorkspaceFolders(() => this.encodingOverrides = this.getDefaultEncodingOverrides())); + } + + private getDefaultEncodingOverrides(): IEncodingOverride[] { + const defaultEncodingOverrides: IEncodingOverride[] = []; + + // Global settings + defaultEncodingOverrides.push({ parent: this.environmentService.userRoamingDataHome, encoding: UTF8 }); + + // Workspace files (via extension and via untitled workspaces location) + defaultEncodingOverrides.push({ extension: WORKSPACE_EXTENSION, encoding: UTF8 }); + defaultEncodingOverrides.push({ parent: this.environmentService.untitledWorkspacesHome, encoding: UTF8 }); + + // Folder Settings + this.contextService.getWorkspace().folders.forEach(folder => { + defaultEncodingOverrides.push({ parent: joinPath(folder.uri, '.vscode'), encoding: UTF8 }); + }); + + return defaultEncodingOverrides; + } + + async getWriteEncoding(resource: URI, options?: IWriteTextFileOptions): Promise<{ encoding: string, addBOM: boolean }> { + const { encoding, hasBOM } = await this.getPreferredWriteEncoding(resource, options ? options.encoding : undefined); + + // Some encodings come with a BOM automatically + if (hasBOM) { + return { encoding, addBOM: true }; + } + + // Ensure that we preserve an existing BOM if found for UTF8 + // unless we are instructed to overwrite the encoding + const overwriteEncoding = options?.overwriteEncoding; + if (!overwriteEncoding && encoding === UTF8) { + try { + const buffer = (await this.fileService.readFile(resource, { length: UTF8_BOM.length })).value; + if (detectEncodingByBOMFromBuffer(buffer, buffer.byteLength) === UTF8_with_bom) { + return { encoding, addBOM: true }; + } + } catch (error) { + // ignore - file might not exist + } + } + + return { encoding, addBOM: false }; + } + + async getPreferredWriteEncoding(resource: URI, preferredEncoding?: string): Promise { + const resourceEncoding = await this.getEncodingForResource(resource, preferredEncoding); + + return { + encoding: resourceEncoding, + hasBOM: resourceEncoding === UTF16be || resourceEncoding === UTF16le || resourceEncoding === UTF8_with_bom // enforce BOM for certain encodings + }; + } + + getReadEncoding(resource: URI, options: IReadTextFileOptions | undefined, detectedEncoding: string | null): Promise { + let preferredEncoding: string | undefined; + + // Encoding passed in as option + if (options?.encoding) { + if (detectedEncoding === UTF8_with_bom && options.encoding === UTF8) { + preferredEncoding = UTF8_with_bom; // indicate the file has BOM if we are to resolve with UTF 8 + } else { + preferredEncoding = options.encoding; // give passed in encoding highest priority + } + } + + // Encoding detected + else if (detectedEncoding) { + preferredEncoding = detectedEncoding; + } + + // Encoding configured + else if (this.textResourceConfigurationService.getValue(resource, 'files.encoding') === UTF8_with_bom) { + preferredEncoding = UTF8; // if we did not detect UTF 8 BOM before, this can only be UTF 8 then + } + + return this.getEncodingForResource(resource, preferredEncoding); + } + + private async getEncodingForResource(resource: URI, preferredEncoding?: string): Promise { + let fileEncoding: string; + + const override = this.getEncodingOverride(resource); + if (override) { + fileEncoding = override; // encoding override always wins + } else if (preferredEncoding) { + fileEncoding = preferredEncoding; // preferred encoding comes second + } else { + fileEncoding = this.textResourceConfigurationService.getValue(resource, 'files.encoding'); // and last we check for settings + } + + if (!fileEncoding || !(await encodingExists(fileEncoding))) { + fileEncoding = UTF8; // the default is UTF 8 + } + + return fileEncoding; + } + + private getEncodingOverride(resource: URI): string | undefined { + if (this.encodingOverrides && this.encodingOverrides.length) { + for (const override of this.encodingOverrides) { + + // check if the resource is child of encoding override path + if (override.parent && isEqualOrParent(resource, override.parent)) { + return override.encoding; + } + + // check if the resource extension is equal to encoding override + if (override.extension && extname(resource) === `.${override.extension}`) { + return override.encoding; + } + } + } + + return undefined; + } +} diff --git a/src/vs/base/node/encoding.ts b/src/vs/workbench/services/textfile/common/encoding.ts similarity index 93% rename from src/vs/base/node/encoding.ts rename to src/vs/workbench/services/textfile/common/encoding.ts index 311e3bc33c..09b7c0fb7b 100644 --- a/src/vs/base/node/encoding.ts +++ b/src/vs/workbench/services/textfile/common/encoding.ts @@ -3,7 +3,7 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { DecoderStream } from 'iconv-lite'; +import { DecoderStream } from 'iconv-lite-umd'; import { Readable, ReadableStream, newWriteableStream } from 'vs/base/common/stream'; import { VSBuffer, VSBufferReadable, VSBufferReadableStream } from 'vs/base/common/buffer'; @@ -63,9 +63,9 @@ export function toDecodeStream(source: VSBufferReadableStream, options: IDecodeS detected.encoding = await options.overwriteEncoding(detected.encoding); // decode and write buffered content - const iconv = await import('iconv-lite'); + const iconv = await import('iconv-lite-umd'); decoder = iconv.getDecoder(toNodeEncoding(detected.encoding)); - const decoded = decoder.write(Buffer.from(VSBuffer.concat(bufferedChunks).buffer)); + const decoded = decoder.write(VSBuffer.concat(bufferedChunks).buffer); target.write(decoded); bufferedChunks.length = 0; @@ -89,7 +89,7 @@ export function toDecodeStream(source: VSBufferReadableStream, options: IDecodeS // if the decoder is ready, we just write directly if (decoder) { - target.write(decoder.write(Buffer.from(chunk.buffer))); + target.write(decoder.write(chunk.buffer)); } // otherwise we need to buffer the data until the stream is ready @@ -129,7 +129,7 @@ export function toDecodeStream(source: VSBufferReadableStream, options: IDecodeS } export async function toEncodeReadable(readable: Readable, encoding: string, options?: { addBOM?: boolean }): Promise { - const iconv = await import('iconv-lite'); + const iconv = await import('iconv-lite-umd'); const encoder = iconv.getEncoder(toNodeEncoding(encoding), options); let bytesRead = 0; @@ -176,7 +176,7 @@ export async function toEncodeReadable(readable: Readable, encoding: str } export async function encodingExists(encoding: string): Promise { - const iconv = await import('iconv-lite'); + const iconv = await import('iconv-lite-umd'); return iconv.encodingExists(toNodeEncoding(encoding)); } @@ -234,7 +234,13 @@ const IGNORE_ENCODINGS = ['ascii', 'utf-16', 'utf-32']; async function guessEncodingByBuffer(buffer: VSBuffer): Promise { const jschardet = await import('jschardet'); - const guessed = jschardet.detect(Buffer.from(buffer.slice(0, AUTO_ENCODING_GUESS_MAX_BYTES).buffer)); // ensure to limit buffer for guessing due to https://github.com/aadsm/jschardet/issues/53 + // ensure to limit buffer for guessing due to https://github.com/aadsm/jschardet/issues/53 + const limitedBuffer = buffer.slice(0, AUTO_ENCODING_GUESS_MAX_BYTES); + // override type since jschardet expects Buffer even though can accept Uint8Array + // can be fixed once https://github.com/aadsm/jschardet/pull/58 is merged + const jschardetTypingsWorkaround = limitedBuffer.buffer as any; + + const guessed = jschardet.detect(jschardetTypingsWorkaround); if (!guessed || !guessed.encoding) { return null; } diff --git a/src/vs/workbench/services/textfile/common/textFileEditorModelManager.ts b/src/vs/workbench/services/textfile/common/textFileEditorModelManager.ts index ace5dd7d83..5de6296cb3 100644 --- a/src/vs/workbench/services/textfile/common/textFileEditorModelManager.ts +++ b/src/vs/workbench/services/textfile/common/textFileEditorModelManager.ts @@ -135,50 +135,58 @@ export class TextFileEditorModelManager extends Disposable implements ITextFileE private onWillRunWorkingCopyFileOperation(e: WorkingCopyFileEvent): void { // Move / Copy: remember models to restore after the operation - const source = e.source; - if (source && (e.operation === FileOperation.COPY || e.operation === FileOperation.MOVE)) { - - // find all models that related to either source or target (can be many if resource is a folder) - const sourceModels: TextFileEditorModel[] = []; - const targetModels: TextFileEditorModel[] = []; - for (const model of this.models) { - const resource = model.resource; - - if (extUri.isEqualOrParent(resource, e.target)) { - // EXPLICITLY do not ignorecase, see https://github.com/Microsoft/vscode/issues/56384 - targetModels.push(model); - } - - if (this.uriIdentityService.extUri.isEqualOrParent(resource, source)) { - sourceModels.push(model); - } - } - - // remember each source model to load again after move is done - // with optional content to restore if it was dirty + if (e.operation === FileOperation.MOVE || e.operation === FileOperation.COPY) { const modelsToRestore: { source: URI, target: URI, snapshot?: ITextSnapshot; mode?: string; encoding?: string; }[] = []; - for (const sourceModel of sourceModels) { - const sourceModelResource = sourceModel.resource; - // If the source is the actual model, just use target as new resource - let targetModelResource: URI; - if (this.uriIdentityService.extUri.isEqual(sourceModelResource, e.source)) { - targetModelResource = e.target; + for (const { source, target } of e.files) { + if (source) { + if (this.uriIdentityService.extUri.isEqual(source, target)) { + continue; // ignore if resources are considered equal + } + + // find all models that related to either source or target (can be many if resource is a folder) + const sourceModels: TextFileEditorModel[] = []; + const targetModels: TextFileEditorModel[] = []; + for (const model of this.models) { + const resource = model.resource; + + if (extUri.isEqualOrParent(resource, target)) { + // EXPLICITLY do not ignorecase, see https://github.com/Microsoft/vscode/issues/56384 + targetModels.push(model); + } + + if (this.uriIdentityService.extUri.isEqualOrParent(resource, source)) { + sourceModels.push(model); + } + } + + // remember each source model to load again after move is done + // with optional content to restore if it was dirty + for (const sourceModel of sourceModels) { + const sourceModelResource = sourceModel.resource; + + // If the source is the actual model, just use target as new resource + let targetModelResource: URI; + if (this.uriIdentityService.extUri.isEqual(sourceModelResource, source)) { + targetModelResource = target; + } + + // Otherwise a parent folder of the source is being moved, so we need + // to compute the target resource based on that + else { + targetModelResource = joinPath(target, sourceModelResource.path.substr(source.path.length + 1)); + } + + modelsToRestore.push({ + source: sourceModelResource, + target: targetModelResource, + mode: sourceModel.getMode(), + encoding: sourceModel.getEncoding(), + snapshot: sourceModel.isDirty() ? sourceModel.createSnapshot() : undefined + }); + } + } - - // Otherwise a parent folder of the source is being moved, so we need - // to compute the target resource based on that - else { - targetModelResource = joinPath(e.target, sourceModelResource.path.substr(source.path.length + 1)); - } - - modelsToRestore.push({ - source: sourceModelResource, - target: targetModelResource, - mode: sourceModel.getMode(), - encoding: sourceModel.getEncoding(), - snapshot: sourceModel.isDirty() ? sourceModel.createSnapshot() : undefined - }); } this.mapCorrelationIdToModelsToRestore.set(e.correlationId, modelsToRestore); @@ -188,13 +196,12 @@ export class TextFileEditorModelManager extends Disposable implements ITextFileE private onDidFailWorkingCopyFileOperation(e: WorkingCopyFileEvent): void { // Move / Copy: restore dirty flag on models to restore that were dirty - if ((e.operation === FileOperation.COPY || e.operation === FileOperation.MOVE)) { + if ((e.operation === FileOperation.MOVE || e.operation === FileOperation.COPY)) { const modelsToRestore = this.mapCorrelationIdToModelsToRestore.get(e.correlationId); if (modelsToRestore) { this.mapCorrelationIdToModelsToRestore.delete(e.correlationId); modelsToRestore.forEach(model => { - // snapshot presence means this model used to be dirty and so we restore that // flag. we do NOT have to restore the content because the model was only soft // reverted and did not loose its original dirty contents. @@ -207,40 +214,55 @@ export class TextFileEditorModelManager extends Disposable implements ITextFileE } private onDidRunWorkingCopyFileOperation(e: WorkingCopyFileEvent): void { + switch (e.operation) { - // Move / Copy: restore models that were loaded before the operation took place - if ((e.operation === FileOperation.COPY || e.operation === FileOperation.MOVE)) { - e.waitUntil((async () => { - const modelsToRestore = this.mapCorrelationIdToModelsToRestore.get(e.correlationId); - if (modelsToRestore) { - this.mapCorrelationIdToModelsToRestore.delete(e.correlationId); - - await Promise.all(modelsToRestore.map(async modelToRestore => { - - // restore the model, forcing a reload. this is important because - // we know the file has changed on disk after the move and the - // model might have still existed with the previous state. this - // ensures we are not tracking a stale state. - const restoredModel = await this.resolve(modelToRestore.target, { reload: { async: false }, encoding: modelToRestore.encoding }); - - // restore previous dirty content if any and ensure to mark the model as dirty - let textBufferFactory: ITextBufferFactory | undefined = undefined; - if (modelToRestore.snapshot) { - textBufferFactory = createTextBufferFactoryFromSnapshot(modelToRestore.snapshot); + // Create: Revert existing models + case FileOperation.CREATE: + e.waitUntil((async () => { + for (const { target } of e.files) { + const model = this.get(target); + if (model && !model.isDisposed()) { + await model.revert(); } + } + })()); + break; - // restore previous mode only if the mode is now unspecified - let preferredMode: string | undefined = undefined; - if (restoredModel.getMode() === PLAINTEXT_MODE_ID && modelToRestore.mode !== PLAINTEXT_MODE_ID) { - preferredMode = modelToRestore.mode; - } + // Move/Copy: restore models that were loaded before the operation took place + case FileOperation.MOVE: + case FileOperation.COPY: + e.waitUntil((async () => { + const modelsToRestore = this.mapCorrelationIdToModelsToRestore.get(e.correlationId); + if (modelsToRestore) { + this.mapCorrelationIdToModelsToRestore.delete(e.correlationId); - if (textBufferFactory || preferredMode) { - restoredModel.updateTextEditorModel(textBufferFactory, preferredMode); - } - })); - } - })()); + await Promise.all(modelsToRestore.map(async modelToRestore => { + + // restore the model, forcing a reload. this is important because + // we know the file has changed on disk after the move and the + // model might have still existed with the previous state. this + // ensures we are not tracking a stale state. + const restoredModel = await this.resolve(modelToRestore.target, { reload: { async: false }, encoding: modelToRestore.encoding }); + + // restore previous dirty content if any and ensure to mark the model as dirty + let textBufferFactory: ITextBufferFactory | undefined = undefined; + if (modelToRestore.snapshot) { + textBufferFactory = createTextBufferFactoryFromSnapshot(modelToRestore.snapshot); + } + + // restore previous mode only if the mode is now unspecified + let preferredMode: string | undefined = undefined; + if (restoredModel.getMode() === PLAINTEXT_MODE_ID && modelToRestore.mode !== PLAINTEXT_MODE_ID) { + preferredMode = modelToRestore.mode; + } + + if (textBufferFactory || preferredMode) { + restoredModel.updateTextEditorModel(textBufferFactory, preferredMode); + } + })); + } + })()); + break; } } diff --git a/src/vs/workbench/services/textfile/common/textfiles.ts b/src/vs/workbench/services/textfile/common/textfiles.ts index e1a6764eee..030d4bbc10 100644 --- a/src/vs/workbench/services/textfile/common/textfiles.ts +++ b/src/vs/workbench/services/textfile/common/textfiles.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { URI } from 'vs/base/common/uri'; -import { Event, IWaitUntil } from 'vs/base/common/event'; +import { Event } from 'vs/base/common/event'; import { IDisposable } from 'vs/base/common/lifecycle'; import { IEncodingSupport, IModeSupport, ISaveOptions, IRevertOptions, SaveReason } from 'vs/workbench/common/editor'; import { IBaseStatWithMetadata, IFileStatWithMetadata, IReadFileOptions, IWriteFileOptions, FileOperationError, FileOperationResult } from 'vs/platform/files/common/files'; @@ -21,10 +21,6 @@ import { IProgress, IProgressStep } from 'vs/platform/progress/common/progress'; export const ITextFileService = createDecorator('textFileService'); -export interface TextFileCreateEvent extends IWaitUntil { - readonly resource: URI; -} - export interface ITextFileService extends IDisposable { readonly _serviceBrand: undefined; @@ -95,11 +91,6 @@ export interface ITextFileService extends IDisposable { */ write(resource: URI, value: string | ITextSnapshot, options?: IWriteTextFileOptions): Promise; - /** - * An event that is fired after a text file has been created. - */ - readonly onDidCreateTextFile: Event; - /** * Create a file. If the file exists it will be overwritten with the contents if * the options enable to overwrite. diff --git a/src/vs/workbench/services/textfile/electron-browser/nativeTextFileService.ts b/src/vs/workbench/services/textfile/electron-browser/nativeTextFileService.ts index 8f2e94a4ea..d970e3e7e9 100644 --- a/src/vs/workbench/services/textfile/electron-browser/nativeTextFileService.ts +++ b/src/vs/workbench/services/textfile/electron-browser/nativeTextFileService.ts @@ -5,23 +5,18 @@ import { localize } from 'vs/nls'; import { AbstractTextFileService } from 'vs/workbench/services/textfile/browser/textFileService'; -import { ITextFileService, ITextFileStreamContent, ITextFileContent, IResourceEncodings, IResourceEncoding, IReadTextFileOptions, IWriteTextFileOptions, stringToSnapshot, TextFileOperationResult, TextFileOperationError } from 'vs/workbench/services/textfile/common/textfiles'; +import { ITextFileService, ITextFileStreamContent, ITextFileContent, IReadTextFileOptions, IWriteTextFileOptions, stringToSnapshot, TextFileOperationResult, TextFileOperationError } from 'vs/workbench/services/textfile/common/textfiles'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { URI } from 'vs/base/common/uri'; -import { IFileStatWithMetadata, ICreateFileOptions, FileOperationError, FileOperationResult, IFileStreamContent, IFileService } from 'vs/platform/files/common/files'; +import { IFileStatWithMetadata, FileOperationError, FileOperationResult, IFileStreamContent, IFileService } from 'vs/platform/files/common/files'; import { Schemas } from 'vs/base/common/network'; import { stat, chmod, MAX_FILE_SIZE, MAX_HEAP_SIZE } from 'vs/base/node/pfs'; import { join, dirname } from 'vs/base/common/path'; import { isMacintosh } from 'vs/base/common/platform'; import { IProductService } from 'vs/platform/product/common/productService'; import { ITextResourceConfigurationService } from 'vs/editor/common/services/textResourceConfigurationService'; -import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; -import { UTF8, UTF8_with_bom, UTF16be, UTF16le, encodingExists, UTF8_BOM, toDecodeStream, toEncodeReadable, IDecodeStreamResult, detectEncodingByBOMFromBuffer } from 'vs/base/node/encoding'; -import { WORKSPACE_EXTENSION } from 'vs/platform/workspaces/common/workspaces'; -import { joinPath, extname, isEqualOrParent } from 'vs/base/common/resources'; -import { Disposable } from 'vs/base/common/lifecycle'; -import { IEnvironmentService } from 'vs/platform/environment/common/environment'; -import { bufferToStream, VSBufferReadable } from 'vs/base/common/buffer'; +import { UTF8, UTF8_with_bom, toDecodeStream, toEncodeReadable, IDecodeStreamResult } from 'vs/workbench/services/textfile/common/encoding'; +import { bufferToStream, VSBufferReadable, VSBuffer } from 'vs/base/common/buffer'; import { createTextBufferFactoryFromStream } from 'vs/editor/common/model/textModel'; import { ITextSnapshot } from 'vs/editor/common/model'; import { consumeStream } from 'vs/base/common/stream'; @@ -64,15 +59,6 @@ export class NativeTextFileService extends AbstractTextFileService { super(fileService, untitledTextEditorService, lifecycleService, instantiationService, modelService, environmentService, dialogService, fileDialogService, textResourceConfigurationService, filesConfigurationService, textModelService, codeEditorService, pathService, workingCopyFileService, uriIdentityService); } - private _encoding: EncodingOracle | undefined; - get encoding(): EncodingOracle { - if (!this._encoding) { - this._encoding = this._register(this.instantiationService.createInstance(EncodingOracle)); - } - - return this._encoding; - } - async read(resource: URI, options?: IReadTextFileOptions): Promise { const [bufferStream, decoder] = await this.doRead(resource, { ...options, @@ -159,19 +145,20 @@ export class NativeTextFileService extends AbstractTextFileService { return ensuredOptions; } - protected async doCreate(resource: URI, value?: string, options?: ICreateFileOptions): Promise { + protected async doEncodeText(resource: URI, value?: string | ITextSnapshot): Promise { // check for encoding const { encoding, addBOM } = await this.encoding.getWriteEncoding(resource); // return to parent when encoding is standard if (encoding === UTF8 && !addBOM) { - return super.doCreate(resource, value, options); + return super.doEncodeText(resource, value); } // otherwise create with encoding const encodedReadable = await this.getEncodedReadable(value || '', encoding, addBOM); - return this.fileService.createFile(resource, encodedReadable, options); + + return encodedReadable; } async write(resource: URI, value: string | ITextSnapshot, options?: IWriteTextFileOptions): Promise { @@ -292,151 +279,4 @@ export class NativeTextFileService extends AbstractTextFileService { } } -export interface IEncodingOverride { - parent?: URI; - extension?: string; - encoding: string; -} - -export class EncodingOracle extends Disposable implements IResourceEncodings { - - private _encodingOverrides: IEncodingOverride[]; - protected get encodingOverrides(): IEncodingOverride[] { return this._encodingOverrides; } - protected set encodingOverrides(value: IEncodingOverride[]) { this._encodingOverrides = value; } - - constructor( - @ITextResourceConfigurationService private textResourceConfigurationService: ITextResourceConfigurationService, - @IEnvironmentService private environmentService: IEnvironmentService, - @IWorkspaceContextService private contextService: IWorkspaceContextService, - @IFileService private fileService: IFileService - ) { - super(); - - this._encodingOverrides = this.getDefaultEncodingOverrides(); - - this.registerListeners(); - } - - private registerListeners(): void { - - // Workspace Folder Change - this._register(this.contextService.onDidChangeWorkspaceFolders(() => this.encodingOverrides = this.getDefaultEncodingOverrides())); - } - - private getDefaultEncodingOverrides(): IEncodingOverride[] { - const defaultEncodingOverrides: IEncodingOverride[] = []; - - // Global settings - defaultEncodingOverrides.push({ parent: this.environmentService.userRoamingDataHome, encoding: UTF8 }); - - // Workspace files (via extension and via untitled workspaces location) - defaultEncodingOverrides.push({ extension: WORKSPACE_EXTENSION, encoding: UTF8 }); - defaultEncodingOverrides.push({ parent: this.environmentService.untitledWorkspacesHome, encoding: UTF8 }); - - // Folder Settings - this.contextService.getWorkspace().folders.forEach(folder => { - defaultEncodingOverrides.push({ parent: joinPath(folder.uri, '.vscode'), encoding: UTF8 }); - }); - - return defaultEncodingOverrides; - } - - async getWriteEncoding(resource: URI, options?: IWriteTextFileOptions): Promise<{ encoding: string, addBOM: boolean }> { - const { encoding, hasBOM } = await this.getPreferredWriteEncoding(resource, options ? options.encoding : undefined); - - // Some encodings come with a BOM automatically - if (hasBOM) { - return { encoding, addBOM: true }; - } - - // Ensure that we preserve an existing BOM if found for UTF8 - // unless we are instructed to overwrite the encoding - const overwriteEncoding = options?.overwriteEncoding; - if (!overwriteEncoding && encoding === UTF8) { - try { - const buffer = (await this.fileService.readFile(resource, { length: UTF8_BOM.length })).value; - if (detectEncodingByBOMFromBuffer(buffer, buffer.byteLength) === UTF8_with_bom) { - return { encoding, addBOM: true }; - } - } catch (error) { - // ignore - file might not exist - } - } - - return { encoding, addBOM: false }; - } - - async getPreferredWriteEncoding(resource: URI, preferredEncoding?: string): Promise { - const resourceEncoding = await this.getEncodingForResource(resource, preferredEncoding); - - return { - encoding: resourceEncoding, - hasBOM: resourceEncoding === UTF16be || resourceEncoding === UTF16le || resourceEncoding === UTF8_with_bom // enforce BOM for certain encodings - }; - } - - getReadEncoding(resource: URI, options: IReadTextFileOptions | undefined, detectedEncoding: string | null): Promise { - let preferredEncoding: string | undefined; - - // Encoding passed in as option - if (options?.encoding) { - if (detectedEncoding === UTF8_with_bom && options.encoding === UTF8) { - preferredEncoding = UTF8_with_bom; // indicate the file has BOM if we are to resolve with UTF 8 - } else { - preferredEncoding = options.encoding; // give passed in encoding highest priority - } - } - - // Encoding detected - else if (detectedEncoding) { - preferredEncoding = detectedEncoding; - } - - // Encoding configured - else if (this.textResourceConfigurationService.getValue(resource, 'files.encoding') === UTF8_with_bom) { - preferredEncoding = UTF8; // if we did not detect UTF 8 BOM before, this can only be UTF 8 then - } - - return this.getEncodingForResource(resource, preferredEncoding); - } - - private async getEncodingForResource(resource: URI, preferredEncoding?: string): Promise { - let fileEncoding: string; - - const override = this.getEncodingOverride(resource); - if (override) { - fileEncoding = override; // encoding override always wins - } else if (preferredEncoding) { - fileEncoding = preferredEncoding; // preferred encoding comes second - } else { - fileEncoding = this.textResourceConfigurationService.getValue(resource, 'files.encoding'); // and last we check for settings - } - - if (!fileEncoding || !(await encodingExists(fileEncoding))) { - fileEncoding = UTF8; // the default is UTF 8 - } - - return fileEncoding; - } - - private getEncodingOverride(resource: URI): string | undefined { - if (this.encodingOverrides && this.encodingOverrides.length) { - for (const override of this.encodingOverrides) { - - // check if the resource is child of encoding override path - if (override.parent && isEqualOrParent(resource, override.parent)) { - return override.encoding; - } - - // check if the resource extension is equal to encoding override - if (override.extension && extname(resource) === `.${override.extension}`) { - return override.encoding; - } - } - } - - return undefined; - } -} - registerSingleton(ITextFileService, NativeTextFileService); diff --git a/src/vs/workbench/services/textfile/test/browser/textFileService.test.ts b/src/vs/workbench/services/textfile/test/browser/textFileService.test.ts index 91139743b2..52deb11417 100644 --- a/src/vs/workbench/services/textfile/test/browser/textFileService.test.ts +++ b/src/vs/workbench/services/textfile/test/browser/textFileService.test.ts @@ -8,6 +8,7 @@ import { workbenchInstantiationService, TestServiceAccessor, TestTextFileEditorM import { toResource } from 'vs/base/test/common/utils'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { TextFileEditorModel } from 'vs/workbench/services/textfile/common/textFileEditorModel'; +import { FileOperation } from 'vs/platform/files/common/files'; suite('Files - TextFileService', () => { @@ -100,7 +101,7 @@ suite('Files - TextFileService', () => { assert.ok(!accessor.textFileService.isDirty(model.resource)); }); - test('create', async function () { + test('create does not overwrite existing model', async function () { model = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/file.txt'), 'utf8', undefined); (accessor.textFileService.files).add(model.resource, model); @@ -111,14 +112,15 @@ suite('Files - TextFileService', () => { let eventCounter = 0; const disposable1 = accessor.workingCopyFileService.addFileOperationParticipant({ - participate: async target => { - assert.equal(target.toString(), model.resource.toString()); + participate: async files => { + assert.equal(files[0].target, model.resource.toString()); eventCounter++; } }); - const disposable2 = accessor.textFileService.onDidCreateTextFile(e => { - assert.equal(e.resource.toString(), model.resource.toString()); + const disposable2 = accessor.workingCopyFileService.onDidRunWorkingCopyFileOperation(e => { + assert.equal(e.operation, FileOperation.CREATE); + assert.equal(e.files[0].target.toString(), model.resource.toString()); eventCounter++; }); diff --git a/src/vs/workbench/services/textfile/test/electron-browser/textFileService.io.test.ts b/src/vs/workbench/services/textfile/test/electron-browser/textFileService.io.test.ts index ff4cbf46b4..b1d3744f83 100644 --- a/src/vs/workbench/services/textfile/test/electron-browser/textFileService.io.test.ts +++ b/src/vs/workbench/services/textfile/test/electron-browser/textFileService.io.test.ts @@ -5,7 +5,7 @@ import * as assert from 'assert'; import { URI } from 'vs/base/common/uri'; -import { ITextFileService, snapshotToString, TextFileOperationResult, TextFileOperationError } from 'vs/workbench/services/textfile/common/textfiles'; +import { ITextFileService, snapshotToString, TextFileOperationResult, TextFileOperationError, stringToSnapshot } from 'vs/workbench/services/textfile/common/textfiles'; import { IFileService } from 'vs/platform/files/common/files'; import { TextFileEditorModelManager } from 'vs/workbench/services/textfile/common/textFileEditorModelManager'; import { Schemas } from 'vs/base/common/network'; @@ -20,13 +20,16 @@ import { DiskFileSystemProvider } from 'vs/platform/files/node/diskFileSystemPro import { generateUuid } from 'vs/base/common/uuid'; import { join, basename } from 'vs/base/common/path'; import { getPathFromAmdModule } from 'vs/base/common/amd'; -import { UTF16be, UTF16le, UTF8_with_bom, UTF8 } from 'vs/base/node/encoding'; +import { UTF16be, UTF16le, UTF8_with_bom, UTF8 } from 'vs/workbench/services/textfile/common/encoding'; import { DefaultEndOfLine, ITextSnapshot } from 'vs/editor/common/model'; import { createTextModel } from 'vs/editor/test/common/editorTestUtils'; import { isWindows } from 'vs/base/common/platform'; import { readFileSync, statSync } from 'fs'; -import { detectEncodingByBOM } from 'vs/base/test/node/encoding/encoding.test'; +import { detectEncodingByBOM } from 'vs/workbench/services/textfile/test/node/encoding/encoding.test'; import { workbenchInstantiationService, TestNativeTextFileServiceWithEncodingOverrides } from 'vs/workbench/test/electron-browser/workbenchTestServices'; +import { WorkingCopyFileService, IWorkingCopyFileService } from 'vs/workbench/services/workingCopy/common/workingCopyFileService'; +import { TestWorkingCopyService } from 'vs/workbench/test/common/workbenchTestServices'; +import { UriIdentityService } from 'vs/workbench/services/uriIdentity/common/uriIdentityService'; suite('Files - TextFileService i/o', function () { const parentDir = getRandomTestPath(tmpdir(), 'vsctests', 'textfileservice'); @@ -57,6 +60,8 @@ suite('Files - TextFileService i/o', function () { const collection = new ServiceCollection(); collection.set(IFileService, fileService); + collection.set(IWorkingCopyFileService, new WorkingCopyFileService(fileService, new TestWorkingCopyService(), instantiationService, new UriIdentityService(fileService))); + service = instantiationService.createChild(collection).createInstance(TestNativeTextFileServiceWithEncodingOverrides); const id = generateUuid(); @@ -82,7 +87,7 @@ suite('Files - TextFileService i/o', function () { assert.equal(await exists(resource.fsPath), true); }); - test('create - no encoding - content provided', async () => { + test('create - no encoding - content provided (string)', async () => { const resource = URI.file(join(testDir, 'small_new.txt')); await service.create(resource, 'Hello World'); @@ -91,6 +96,15 @@ suite('Files - TextFileService i/o', function () { assert.equal((await readFile(resource.fsPath)).toString(), 'Hello World'); }); + test('create - no encoding - content provided (snapshot)', async () => { + const resource = URI.file(join(testDir, 'small_new.txt')); + + await service.create(resource, stringToSnapshot('Hello World')); + + assert.equal(await exists(resource.fsPath), true); + assert.equal((await readFile(resource.fsPath)).toString(), 'Hello World'); + }); + test('create - UTF 16 LE - no content', async () => { const resource = URI.file(join(testDir, 'small_new.utf16le')); diff --git a/src/vs/base/test/node/encoding/encoding.test.ts b/src/vs/workbench/services/textfile/test/node/encoding/encoding.test.ts similarity index 99% rename from src/vs/base/test/node/encoding/encoding.test.ts rename to src/vs/workbench/services/textfile/test/node/encoding/encoding.test.ts index fccb9e8bfd..cb73544dd3 100644 --- a/src/vs/base/test/node/encoding/encoding.test.ts +++ b/src/vs/workbench/services/textfile/test/node/encoding/encoding.test.ts @@ -5,10 +5,10 @@ import * as assert from 'assert'; import * as fs from 'fs'; -import * as encoding from 'vs/base/node/encoding'; +import * as encoding from 'vs/workbench/services/textfile/common/encoding'; import * as terminalEncoding from 'vs/base/node/terminalEncoding'; import * as streams from 'vs/base/common/stream'; -import * as iconv from 'iconv-lite'; +import * as iconv from 'iconv-lite-umd'; import { getPathFromAmdModule } from 'vs/base/common/amd'; import { newWriteableBufferStream, VSBuffer, VSBufferReadableStream, streamToBufferReadableStream } from 'vs/base/common/buffer'; diff --git a/src/vs/base/test/node/encoding/fixtures/empty.txt b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/empty.txt similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/empty.txt rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/empty.txt diff --git a/src/vs/base/test/node/encoding/fixtures/some.cp1252.txt b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.cp1252.txt similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/some.cp1252.txt rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.cp1252.txt diff --git a/src/vs/base/test/node/encoding/fixtures/some.css.qwoff b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.css.qwoff similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/some.css.qwoff rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.css.qwoff diff --git a/src/vs/base/test/node/encoding/fixtures/some.json.png b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.json.png similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/some.json.png rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.json.png diff --git a/src/vs/base/test/node/encoding/fixtures/some.pdf b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.pdf similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/some.pdf rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.pdf diff --git a/src/vs/base/test/node/encoding/fixtures/some.png.txt b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.png.txt similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/some.png.txt rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.png.txt diff --git a/src/vs/base/test/node/encoding/fixtures/some.qwoff.txt b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.qwoff.txt similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/some.qwoff.txt rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.qwoff.txt diff --git a/src/vs/base/test/node/encoding/fixtures/some.shiftjis.txt b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.shiftjis.txt similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/some.shiftjis.txt rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.shiftjis.txt diff --git a/src/vs/base/test/node/encoding/fixtures/some.xml.png b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.xml.png similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/some.xml.png rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/some.xml.png diff --git a/src/vs/base/test/node/encoding/fixtures/some_ansi.css b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/some_ansi.css similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/some_ansi.css rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/some_ansi.css diff --git a/src/vs/base/test/node/encoding/fixtures/some_file.css b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/some_file.css similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/some_file.css rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/some_file.css diff --git a/src/vs/base/test/node/encoding/fixtures/some_utf16be.css b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/some_utf16be.css similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/some_utf16be.css rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/some_utf16be.css diff --git a/src/vs/base/test/node/encoding/fixtures/some_utf16le.css b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/some_utf16le.css similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/some_utf16le.css rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/some_utf16le.css diff --git a/src/vs/base/test/node/encoding/fixtures/some_utf8.css b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/some_utf8.css similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/some_utf8.css rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/some_utf8.css diff --git a/src/vs/base/test/node/encoding/fixtures/utf16_be_nobom.txt b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/utf16_be_nobom.txt similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/utf16_be_nobom.txt rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/utf16_be_nobom.txt diff --git a/src/vs/base/test/node/encoding/fixtures/utf16_le_nobom.txt b/src/vs/workbench/services/textfile/test/node/encoding/fixtures/utf16_le_nobom.txt similarity index 100% rename from src/vs/base/test/node/encoding/fixtures/utf16_le_nobom.txt rename to src/vs/workbench/services/textfile/test/node/encoding/fixtures/utf16_le_nobom.txt diff --git a/src/vs/workbench/services/textmodelResolver/common/textModelResolverService.ts b/src/vs/workbench/services/textmodelResolver/common/textModelResolverService.ts index 69c540b81d..47840c4764 100644 --- a/src/vs/workbench/services/textmodelResolver/common/textModelResolverService.ts +++ b/src/vs/workbench/services/textmodelResolver/common/textModelResolverService.ts @@ -33,7 +33,11 @@ class ResourceModelCollection extends ReferenceCollection { + createReferencedObject(key: string): Promise { + return this.doCreateReferencedObject(key); + } + + private async doCreateReferencedObject(key: string, skipActivateProvider?: boolean): Promise { // Untrack as being disposed this.modelsToDispose.delete(key); @@ -70,7 +74,7 @@ class ResourceModelCollection extends ReferenceCollection { + progress.report({ message: localize('turning on', "Turning on...") }); + const pullFirst = await this.isSyncingWithAnotherMachine(); + const disposable = this.userDataSyncService.onSynchronizeResource(resource => + progress.report({ message: localize('syncing resource', "Syncing {0}...", getSyncAreaLabel(resource)) })); + try { + await this.userDataAutoSyncService.turnOn(pullFirst); + } finally { + disposable.dispose(); + } + }); + + this.notificationService.info(localize('sync turned on', "{0} is turned on", title)); } turnoff(everywhere: boolean): Promise { return this.userDataAutoSyncService.turnOff(everywhere); } - private async handleFirstTimeSync(): Promise { - const isFirstTimeSyncingWithAnotherMachine = await this.userDataSyncService.isFirstTimeSyncingWithAnotherMachine(); - if (!isFirstTimeSyncingWithAnotherMachine) { + private async isSyncingWithAnotherMachine(): Promise { + const isSyncingWithAnotherMachine = await this.userDataSyncService.isFirstTimeSyncingWithAnotherMachine(); + if (!isSyncingWithAnotherMachine) { return false; } diff --git a/src/vs/workbench/services/userDataSync/electron-browser/userDataSyncService.ts b/src/vs/workbench/services/userDataSync/electron-browser/userDataSyncService.ts index 48e6d4985d..d5f24f7140 100644 --- a/src/vs/workbench/services/userDataSync/electron-browser/userDataSyncService.ts +++ b/src/vs/workbench/services/userDataSync/electron-browser/userDataSyncService.ts @@ -38,6 +38,8 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ private _onSyncErrors: Emitter<[SyncResource, UserDataSyncError][]> = this._register(new Emitter<[SyncResource, UserDataSyncError][]>()); readonly onSyncErrors: Event<[SyncResource, UserDataSyncError][]> = this._onSyncErrors.event; + get onSynchronizeResource(): Event { return this.channel.listen('onSynchronizeResource'); } + constructor( @ISharedProcessService sharedProcessService: ISharedProcessService ) { diff --git a/src/vs/workbench/services/workingCopy/common/workingCopyFileOperationParticipant.ts b/src/vs/workbench/services/workingCopy/common/workingCopyFileOperationParticipant.ts index 9cabda9631..ee66fb11e8 100644 --- a/src/vs/workbench/services/workingCopy/common/workingCopyFileOperationParticipant.ts +++ b/src/vs/workbench/services/workingCopy/common/workingCopyFileOperationParticipant.ts @@ -33,7 +33,7 @@ export class WorkingCopyFileOperationParticipant extends Disposable { return toDisposable(() => remove()); } - async participate(target: URI, source: URI | undefined, operation: FileOperation): Promise { + async participate(files: { source?: URI, target: URI }[], operation: FileOperation): Promise { const timeout = this.configurationService.getValue('files.participants.timeout'); if (timeout <= 0) { return; // disabled @@ -53,7 +53,7 @@ export class WorkingCopyFileOperationParticipant extends Disposable { } try { - const promise = participant.participate(target, source, operation, progress, timeout, cts.token); + const promise = participant.participate(files, operation, progress, timeout, cts.token); await raceTimeout(promise, timeout, () => cts.dispose(true /* cancel */)); } catch (err) { this.logService.warn(err); diff --git a/src/vs/workbench/services/workingCopy/common/workingCopyFileService.ts b/src/vs/workbench/services/workingCopy/common/workingCopyFileService.ts index 7837a26f13..82620b5217 100644 --- a/src/vs/workbench/services/workingCopy/common/workingCopyFileService.ts +++ b/src/vs/workbench/services/workingCopy/common/workingCopyFileService.ts @@ -15,9 +15,23 @@ import { IWorkingCopyService, IWorkingCopy } from 'vs/workbench/services/working import { IUriIdentityService } from 'vs/workbench/services/uriIdentity/common/uriIdentity'; import { IProgress, IProgressStep } from 'vs/platform/progress/common/progress'; import { WorkingCopyFileOperationParticipant } from 'vs/workbench/services/workingCopy/common/workingCopyFileOperationParticipant'; +import { VSBuffer, VSBufferReadable, VSBufferReadableStream } from 'vs/base/common/buffer'; export const IWorkingCopyFileService = createDecorator('workingCopyFileService'); +interface SourceTargetPair { + + /** + * The source resource that is defined for move operations. + */ + readonly source?: URI; + + /** + * The target resource the event is about. + */ + readonly target: URI +} + export interface WorkingCopyFileEvent extends IWaitUntil { /** @@ -32,25 +46,19 @@ export interface WorkingCopyFileEvent extends IWaitUntil { readonly operation: FileOperation; /** - * The resource the event is about. + * The array of source/target pair of files involved in given operation. */ - readonly target: URI; - - /** - * A property that is defined for move operations. - */ - readonly source?: URI; + readonly files: SourceTargetPair[] } export interface IWorkingCopyFileOperationParticipant { /** - * Participate in a file operation of a working copy. Allows to - * change the working copy before it is being saved to disk. + * Participate in a file operation of working copies. Allows to + * change the working copies before they are being saved to disk. */ participate( - target: URI, - source: URI | undefined, + files: SourceTargetPair[], operation: FileOperation, progress: IProgress, timeout: number, @@ -111,43 +119,49 @@ export interface IWorkingCopyFileService { */ addFileOperationParticipant(participant: IWorkingCopyFileOperationParticipant): IDisposable; - /** - * Execute all known file operation participants. - */ - runFileOperationParticipants(target: URI, source: URI | undefined, operation: FileOperation): Promise + //#endregion //#region File operations /** - * Will move working copies matching the provided resource and children - * to the target resource using the associated file service for that resource. + * Will create a resource with the provided optional contents, optionally overwriting any target. * * Working copy owners can listen to the `onWillRunWorkingCopyFileOperation` and * `onDidRunWorkingCopyFileOperation` events to participate. */ - move(source: URI, target: URI, overwrite?: boolean): Promise; + create(resource: URI, contents?: VSBuffer | VSBufferReadable | VSBufferReadableStream, options?: { overwrite?: boolean }): Promise; /** - * Will copy working copies matching the provided resource and children - * to the target using the associated file service for that resource. + * Will move working copies matching the provided resources and corresponding children + * to the target resources using the associated file service for those resources. * * Working copy owners can listen to the `onWillRunWorkingCopyFileOperation` and * `onDidRunWorkingCopyFileOperation` events to participate. */ - copy(source: URI, target: URI, overwrite?: boolean): Promise; + move(files: Required[], options?: { overwrite?: boolean }): Promise; /** - * Will delete working copies matching the provided resource and children - * using the associated file service for that resource. + * Will copy working copies matching the provided resources and corresponding children + * to the target resources using the associated file service for those resources. * * Working copy owners can listen to the `onWillRunWorkingCopyFileOperation` and * `onDidRunWorkingCopyFileOperation` events to participate. */ - delete(resource: URI, options?: { useTrash?: boolean, recursive?: boolean }): Promise; + copy(files: Required[], options?: { overwrite?: boolean }): Promise; + + /** + * Will delete working copies matching the provided resources and children + * using the associated file service for those resources. + * + * Working copy owners can listen to the `onWillRunWorkingCopyFileOperation` and + * `onDidRunWorkingCopyFileOperation` events to participate. + */ + delete(resources: URI[], options?: { useTrash?: boolean, recursive?: boolean }): Promise; //#endregion + //#region Path related /** @@ -209,55 +223,28 @@ export class WorkingCopyFileService extends Disposable implements IWorkingCopyFi }); } - async move(source: URI, target: URI, overwrite?: boolean): Promise { - return this.moveOrCopy(source, target, true, overwrite); - } - async copy(source: URI, target: URI, overwrite?: boolean): Promise { - return this.moveOrCopy(source, target, false, overwrite); - } + //#region File operations - private async moveOrCopy(source: URI, target: URI, move: boolean, overwrite?: boolean): Promise { + async create(resource: URI, contents?: VSBuffer | VSBufferReadable | VSBufferReadableStream, options?: { overwrite?: boolean }): Promise { - // validate move/copy operation before starting - const validateMoveOrCopy = await (move ? this.fileService.canMove(source, target, overwrite) : this.fileService.canCopy(source, target, overwrite)); - if (validateMoveOrCopy instanceof Error) { - throw validateMoveOrCopy; + // validate create operation before starting + const validateCreate = await this.fileService.canCreateFile(resource, options); + if (validateCreate instanceof Error) { + throw validateCreate; } // file operation participant - await this.runFileOperationParticipants(target, source, move ? FileOperation.MOVE : FileOperation.COPY); + await this.runFileOperationParticipants([{ target: resource }], FileOperation.CREATE); - // Before doing the heave operations, check first if source and target - // are either identical or are considered to be identical for the file - // system. In that case we want the model to stay as is and only do the - // raw file operation. - if (this.uriIdentityService.extUri.isEqual(source, target)) { - if (move) { - return this.fileService.move(source, target, overwrite); - } else { - return this.fileService.copy(source, target, overwrite); - } - } - - // before event - const event = { correlationId: this.correlationIds++, operation: move ? FileOperation.MOVE : FileOperation.COPY, target, source }; + // before events + const event = { correlationId: this.correlationIds++, operation: FileOperation.CREATE, files: [{ target: resource }] }; await this._onWillRunWorkingCopyFileOperation.fireAsync(event, CancellationToken.None); - // handle dirty working copies depending on the operation: - // - move: revert both source and target (if any) - // - copy: revert target (if any) - const dirtyWorkingCopies = (move ? [...this.getDirty(source), ...this.getDirty(target)] : this.getDirty(target)); - await Promise.all(dirtyWorkingCopies.map(dirtyWorkingCopy => dirtyWorkingCopy.revert({ soft: true }))); - - // now we can rename the source to target via file operation + // now actually create on disk let stat: IFileStatWithMetadata; try { - if (move) { - stat = await this.fileService.move(source, target, overwrite); - } else { - stat = await this.fileService.copy(source, target, overwrite); - } + stat = await this.fileService.createFile(resource, contents, { overwrite: options?.overwrite }); } catch (error) { // error event @@ -272,30 +259,97 @@ export class WorkingCopyFileService extends Disposable implements IWorkingCopyFi return stat; } - async delete(resource: URI, options?: { useTrash?: boolean, recursive?: boolean }): Promise { + async move(files: Required[], options?: { overwrite?: boolean }): Promise { + return this.doMoveOrCopy(files, true, options); + } - // validate delete operation before starting - const validateDelete = await this.fileService.canDelete(resource, options); - if (validateDelete instanceof Error) { - throw validateDelete; + async copy(files: Required[], options?: { overwrite?: boolean }): Promise { + return this.doMoveOrCopy(files, false, options); + } + + private async doMoveOrCopy(files: Required[], move: boolean, options?: { overwrite?: boolean }): Promise { + const overwrite = options?.overwrite; + const stats: IFileStatWithMetadata[] = []; + + // validate move/copy operation before starting + for (const { source, target } of files) { + const validateMoveOrCopy = await (move ? this.fileService.canMove(source, target, overwrite) : this.fileService.canCopy(source, target, overwrite)); + if (validateMoveOrCopy instanceof Error) { + throw validateMoveOrCopy; + } } // file operation participant - await this.runFileOperationParticipants(resource, undefined, FileOperation.DELETE); + await this.runFileOperationParticipants(files, move ? FileOperation.MOVE : FileOperation.COPY); - // before events - const event = { correlationId: this.correlationIds++, operation: FileOperation.DELETE, target: resource }; + // before event + const event = { correlationId: this.correlationIds++, operation: move ? FileOperation.MOVE : FileOperation.COPY, files }; await this._onWillRunWorkingCopyFileOperation.fireAsync(event, CancellationToken.None); - // Check for any existing dirty working copies for the resource + try { + for (const { source, target } of files) { + + // if source and target are not equal, handle dirty working copies + // depending on the operation: + // - move: revert both source and target (if any) + // - copy: revert target (if any) + if (!this.uriIdentityService.extUri.isEqual(source, target)) { + const dirtyWorkingCopies = (move ? [...this.getDirty(source), ...this.getDirty(target)] : this.getDirty(target)); + await Promise.all(dirtyWorkingCopies.map(dirtyWorkingCopy => dirtyWorkingCopy.revert({ soft: true }))); + } + + // now we can rename the source to target via file operation + if (move) { + stats.push(await this.fileService.move(source, target, overwrite)); + } else { + stats.push(await this.fileService.copy(source, target, overwrite)); + } + } + } catch (error) { + + // error event + await this._onDidFailWorkingCopyFileOperation.fireAsync(event, CancellationToken.None); + + throw error; + } + + // after event + await this._onDidRunWorkingCopyFileOperation.fireAsync(event, CancellationToken.None); + + return stats; + } + + async delete(resources: URI[], options?: { useTrash?: boolean, recursive?: boolean }): Promise { + + // validate delete operation before starting + for (const resource of resources) { + const validateDelete = await this.fileService.canDelete(resource, options); + if (validateDelete instanceof Error) { + throw validateDelete; + } + } + + // file operation participant + const files = resources.map(target => ({ target })); + await this.runFileOperationParticipants(files, FileOperation.DELETE); + + // before events + const event = { correlationId: this.correlationIds++, operation: FileOperation.DELETE, files }; + await this._onWillRunWorkingCopyFileOperation.fireAsync(event, CancellationToken.None); + + // check for any existing dirty working copies for the resource // and do a soft revert before deleting to be able to close // any opened editor with these working copies - const dirtyWorkingCopies = this.getDirty(resource); - await Promise.all(dirtyWorkingCopies.map(dirtyWorkingCopy => dirtyWorkingCopy.revert({ soft: true }))); + for (const resource of resources) { + const dirtyWorkingCopies = this.getDirty(resource); + await Promise.all(dirtyWorkingCopies.map(dirtyWorkingCopy => dirtyWorkingCopy.revert({ soft: true }))); + } - // Now actually delete from disk + // now actually delete from disk try { - await this.fileService.del(resource, options); + for (const resource of resources) { + await this.fileService.del(resource, options); + } } catch (error) { // error event @@ -308,6 +362,8 @@ export class WorkingCopyFileService extends Disposable implements IWorkingCopyFi await this._onDidRunWorkingCopyFileOperation.fireAsync(event, CancellationToken.None); } + //#endregion + //#region File operation participants @@ -317,8 +373,8 @@ export class WorkingCopyFileService extends Disposable implements IWorkingCopyFi return this.fileOperationParticipants.addFileOperationParticipant(participant); } - runFileOperationParticipants(target: URI, source: URI | undefined, operation: FileOperation): Promise { - return this.fileOperationParticipants.participate(target, source, operation); + private runFileOperationParticipants(files: SourceTargetPair[], operation: FileOperation): Promise { + return this.fileOperationParticipants.participate(files, operation); } //#endregion diff --git a/src/vs/workbench/services/workingCopy/test/browser/workingCopyFileService.test.ts b/src/vs/workbench/services/workingCopy/test/browser/workingCopyFileService.test.ts index 47834da8db..4ca076a762 100644 --- a/src/vs/workbench/services/workingCopy/test/browser/workingCopyFileService.test.ts +++ b/src/vs/workbench/services/workingCopy/test/browser/workingCopyFileService.test.ts @@ -12,11 +12,11 @@ import { workbenchInstantiationService, TestServiceAccessor, TestTextFileEditorM import { URI } from 'vs/base/common/uri'; import { FileOperation } from 'vs/platform/files/common/files'; import { TestWorkingCopy } from 'vs/workbench/services/workingCopy/test/common/workingCopyService.test'; +import { VSBuffer } from 'vs/base/common/buffer'; suite('WorkingCopyFileService', () => { let instantiationService: IInstantiationService; - let model: TextFileEditorModel; let accessor: TestServiceAccessor; setup(() => { @@ -25,144 +25,120 @@ suite('WorkingCopyFileService', () => { }); teardown(() => { - model?.dispose(); (accessor.textFileService.files).dispose(); }); + test('create - dirty file', async function () { + await testCreate(toResource.call(this, '/path/file.txt'), VSBuffer.fromString('Hello World')); + }); + test('delete - dirty file', async function () { - model = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/file.txt'), 'utf8', undefined); - (accessor.textFileService.files).add(model.resource, model); + await testDelete([toResource.call(this, '/path/file.txt')]); + }); - await model.load(); - model!.textEditorModel!.setValue('foo'); - assert.ok(accessor.workingCopyService.isDirty(model.resource)); - - let eventCounter = 0; - let correlationId: number | undefined = undefined; - - const participant = accessor.workingCopyFileService.addFileOperationParticipant({ - participate: async (target, source, operation) => { - assert.equal(target.toString(), model.resource.toString()); - assert.equal(operation, FileOperation.DELETE); - eventCounter++; - } - }); - - const listener1 = accessor.workingCopyFileService.onWillRunWorkingCopyFileOperation(e => { - assert.equal(e.target.toString(), model.resource.toString()); - assert.equal(e.operation, FileOperation.DELETE); - correlationId = e.correlationId; - eventCounter++; - }); - - const listener2 = accessor.workingCopyFileService.onDidRunWorkingCopyFileOperation(e => { - assert.equal(e.target.toString(), model.resource.toString()); - assert.equal(e.operation, FileOperation.DELETE); - assert.equal(e.correlationId, correlationId); - eventCounter++; - }); - - await accessor.workingCopyFileService.delete(model.resource); - assert.ok(!accessor.workingCopyService.isDirty(model.resource)); - - assert.equal(eventCounter, 3); - - participant.dispose(); - listener1.dispose(); - listener2.dispose(); + test('delete multiple - dirty files', async function () { + await testDelete([ + toResource.call(this, '/path/file1.txt'), + toResource.call(this, '/path/file2.txt'), + toResource.call(this, '/path/file3.txt'), + toResource.call(this, '/path/file4.txt')]); }); test('move - dirty file', async function () { - await testMoveOrCopy(toResource.call(this, '/path/file.txt'), toResource.call(this, '/path/file_target.txt'), true); + await testMoveOrCopy([{ source: toResource.call(this, '/path/file.txt'), target: toResource.call(this, '/path/file_target.txt') }], true); + }); + + test('move - source identical to target', async function () { + let sourceModel: TextFileEditorModel = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/file.txt'), 'utf8', undefined); + (accessor.textFileService.files).add(sourceModel.resource, sourceModel); + + const eventCounter = await testEventsMoveOrCopy([{ source: sourceModel.resource, target: sourceModel.resource }], true); + + sourceModel.dispose(); + assert.equal(eventCounter, 3); + }); + + test('move - one source == target and another source != target', async function () { + let sourceModel1: TextFileEditorModel = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/file1.txt'), 'utf8', undefined); + let sourceModel2: TextFileEditorModel = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/file2.txt'), 'utf8', undefined); + let targetModel2: TextFileEditorModel = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/file_target2.txt'), 'utf8', undefined); + (accessor.textFileService.files).add(sourceModel1.resource, sourceModel1); + (accessor.textFileService.files).add(sourceModel2.resource, sourceModel2); + (accessor.textFileService.files).add(targetModel2.resource, targetModel2); + + const eventCounter = await testEventsMoveOrCopy([ + { source: sourceModel1.resource, target: sourceModel1.resource }, + { source: sourceModel2.resource, target: targetModel2.resource } + ], true); + + sourceModel1.dispose(); + sourceModel2.dispose(); + targetModel2.dispose(); + assert.equal(eventCounter, 3); + }); + + test('move multiple - dirty file', async function () { + await testMoveOrCopy([ + { source: toResource.call(this, '/path/file1.txt'), target: toResource.call(this, '/path/file1_target.txt') }, + { source: toResource.call(this, '/path/file2.txt'), target: toResource.call(this, '/path/file2_target.txt') }], + true); }); test('move - dirty file (target exists and is dirty)', async function () { - await testMoveOrCopy(toResource.call(this, '/path/file.txt'), toResource.call(this, '/path/file_target.txt'), true, true); + await testMoveOrCopy([{ source: toResource.call(this, '/path/file.txt'), target: toResource.call(this, '/path/file_target.txt') }], true, true); }); test('copy - dirty file', async function () { - await testMoveOrCopy(toResource.call(this, '/path/file.txt'), toResource.call(this, '/path/file_target.txt'), false); + await testMoveOrCopy([{ source: toResource.call(this, '/path/file.txt'), target: toResource.call(this, '/path/file_target.txt') }], false); + }); + + test('copy - source identical to target', async function () { + let sourceModel: TextFileEditorModel = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/file.txt'), 'utf8', undefined); + (accessor.textFileService.files).add(sourceModel.resource, sourceModel); + + const eventCounter = await testEventsMoveOrCopy([{ source: sourceModel.resource, target: sourceModel.resource }]); + + sourceModel.dispose(); + assert.equal(eventCounter, 3); + }); + + test('copy - one source == target and another source != target', async function () { + let sourceModel1: TextFileEditorModel = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/file1.txt'), 'utf8', undefined); + let sourceModel2: TextFileEditorModel = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/file2.txt'), 'utf8', undefined); + let targetModel2: TextFileEditorModel = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/file_target2.txt'), 'utf8', undefined); + (accessor.textFileService.files).add(sourceModel1.resource, sourceModel1); + (accessor.textFileService.files).add(sourceModel2.resource, sourceModel2); + (accessor.textFileService.files).add(targetModel2.resource, targetModel2); + + const eventCounter = await testEventsMoveOrCopy([ + { source: sourceModel1.resource, target: sourceModel1.resource }, + { source: sourceModel2.resource, target: targetModel2.resource } + ]); + + sourceModel1.dispose(); + sourceModel2.dispose(); + targetModel2.dispose(); + assert.equal(eventCounter, 3); + }); + + test('copy multiple - dirty file', async function () { + await testMoveOrCopy([ + { source: toResource.call(this, '/path/file1.txt'), target: toResource.call(this, '/path/file_target1.txt') }, + { source: toResource.call(this, '/path/file2.txt'), target: toResource.call(this, '/path/file_target2.txt') }, + { source: toResource.call(this, '/path/file3.txt'), target: toResource.call(this, '/path/file_target3.txt') }], + false); }); test('copy - dirty file (target exists and is dirty)', async function () { - await testMoveOrCopy(toResource.call(this, '/path/file.txt'), toResource.call(this, '/path/file_target.txt'), false, true); + await testMoveOrCopy([{ source: toResource.call(this, '/path/file.txt'), target: toResource.call(this, '/path/file_target.txt') }], false, true); }); - async function testMoveOrCopy(source: URI, target: URI, move: boolean, targetDirty?: boolean): Promise { - let sourceModel: TextFileEditorModel = instantiationService.createInstance(TextFileEditorModel, source, 'utf8', undefined); - let targetModel: TextFileEditorModel = instantiationService.createInstance(TextFileEditorModel, target, 'utf8', undefined); - (accessor.textFileService.files).add(sourceModel.resource, sourceModel); - (accessor.textFileService.files).add(targetModel.resource, targetModel); - - await sourceModel.load(); - sourceModel.textEditorModel!.setValue('foo'); - assert.ok(accessor.textFileService.isDirty(sourceModel.resource)); - - if (targetDirty) { - await targetModel.load(); - targetModel.textEditorModel!.setValue('bar'); - assert.ok(accessor.textFileService.isDirty(targetModel.resource)); - } - - let eventCounter = 0; - let correlationId: number | undefined = undefined; - - const participant = accessor.workingCopyFileService.addFileOperationParticipant({ - participate: async (target, source, operation) => { - assert.equal(target.toString(), targetModel.resource.toString()); - assert.equal(source?.toString(), sourceModel.resource.toString()); - assert.equal(operation, move ? FileOperation.MOVE : FileOperation.COPY); - eventCounter++; - } - }); - - const listener1 = accessor.workingCopyFileService.onWillRunWorkingCopyFileOperation(e => { - assert.equal(e.target.toString(), targetModel.resource.toString()); - assert.equal(e.source?.toString(), sourceModel.resource.toString()); - assert.equal(e.operation, move ? FileOperation.MOVE : FileOperation.COPY); - eventCounter++; - correlationId = e.correlationId; - }); - - const listener2 = accessor.workingCopyFileService.onDidRunWorkingCopyFileOperation(e => { - assert.equal(e.target.toString(), targetModel.resource.toString()); - assert.equal(e.source?.toString(), sourceModel.resource.toString()); - assert.equal(e.operation, move ? FileOperation.MOVE : FileOperation.COPY); - eventCounter++; - assert.equal(e.correlationId, correlationId); - }); - - if (move) { - await accessor.workingCopyFileService.move(sourceModel.resource, targetModel.resource, true); - } else { - await accessor.workingCopyFileService.copy(sourceModel.resource, targetModel.resource, true); - } - - assert.equal(targetModel.textEditorModel!.getValue(), 'foo'); - - if (move) { - assert.ok(!accessor.textFileService.isDirty(sourceModel.resource)); - } else { - assert.ok(accessor.textFileService.isDirty(sourceModel.resource)); - } - assert.ok(accessor.textFileService.isDirty(targetModel.resource)); - - assert.equal(eventCounter, 3); - - sourceModel.dispose(); - targetModel.dispose(); - - participant.dispose(); - listener1.dispose(); - listener2.dispose(); - } - test('getDirty', async function () { const model1 = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/file-1.txt'), 'utf8', undefined); - (accessor.textFileService.files).add(model.resource, model); + (accessor.textFileService.files).add(model1.resource, model1); const model2 = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/file-2.txt'), 'utf8', undefined); - (accessor.textFileService.files).add(model.resource, model); + (accessor.textFileService.files).add(model2.resource, model2); let dirty = accessor.workingCopyFileService.getDirty(model1.resource); assert.equal(dirty.length, 0); @@ -190,7 +166,7 @@ suite('WorkingCopyFileService', () => { test('registerWorkingCopyProvider', async function () { const model1 = instantiationService.createInstance(TextFileEditorModel, toResource.call(this, '/path/file-1.txt'), 'utf8', undefined); - (accessor.textFileService.files).add(model.resource, model); + (accessor.textFileService.files).add(model1.resource, model1); await model1.load(); model1.textEditorModel!.setValue('foo'); @@ -212,4 +188,241 @@ suite('WorkingCopyFileService', () => { model1.dispose(); }); + + async function testEventsMoveOrCopy(files: { source: URI, target: URI }[], move?: boolean): Promise { + let eventCounter = 0; + + const participant = accessor.workingCopyFileService.addFileOperationParticipant({ + participate: async files => { + eventCounter++; + } + }); + + const listener1 = accessor.workingCopyFileService.onWillRunWorkingCopyFileOperation(e => { + eventCounter++; + }); + + const listener2 = accessor.workingCopyFileService.onDidRunWorkingCopyFileOperation(e => { + eventCounter++; + }); + + if (move) { + await accessor.workingCopyFileService.move(files, { overwrite: true }); + } else { + await accessor.workingCopyFileService.copy(files, { overwrite: true }); + } + + participant.dispose(); + listener1.dispose(); + listener2.dispose(); + return eventCounter; + } + + async function testMoveOrCopy(files: { source: URI, target: URI }[], move: boolean, targetDirty?: boolean): Promise { + + let eventCounter = 0; + const models = await Promise.all(files.map(async ({ source, target }, i) => { + let sourceModel: TextFileEditorModel = instantiationService.createInstance(TextFileEditorModel, source, 'utf8', undefined); + let targetModel: TextFileEditorModel = instantiationService.createInstance(TextFileEditorModel, target, 'utf8', undefined); + (accessor.textFileService.files).add(sourceModel.resource, sourceModel); + (accessor.textFileService.files).add(targetModel.resource, targetModel); + + await sourceModel.load(); + sourceModel.textEditorModel!.setValue('foo' + i); + assert.ok(accessor.textFileService.isDirty(sourceModel.resource)); + if (targetDirty) { + await targetModel.load(); + targetModel.textEditorModel!.setValue('bar' + i); + assert.ok(accessor.textFileService.isDirty(targetModel.resource)); + } + + return { sourceModel, targetModel }; + })); + + const participant = accessor.workingCopyFileService.addFileOperationParticipant({ + participate: async (files, operation) => { + for (let i = 0; i < files.length; i++) { + const { target, source } = files[i]; + const { targetModel, sourceModel } = models[i]; + + assert.equal(target.toString(), targetModel.resource.toString()); + assert.equal(source?.toString(), sourceModel.resource.toString()); + } + + eventCounter++; + + assert.equal(operation, move ? FileOperation.MOVE : FileOperation.COPY); + } + }); + + let correlationId: number; + + const listener1 = accessor.workingCopyFileService.onWillRunWorkingCopyFileOperation(e => { + for (let i = 0; i < e.files.length; i++) { + const { target, source } = files[i]; + const { targetModel, sourceModel } = models[i]; + + assert.equal(target.toString(), targetModel.resource.toString()); + assert.equal(source?.toString(), sourceModel.resource.toString()); + } + + eventCounter++; + + correlationId = e.correlationId; + assert.equal(e.operation, move ? FileOperation.MOVE : FileOperation.COPY); + }); + + const listener2 = accessor.workingCopyFileService.onDidRunWorkingCopyFileOperation(e => { + for (let i = 0; i < e.files.length; i++) { + const { target, source } = files[i]; + const { targetModel, sourceModel } = models[i]; + assert.equal(target.toString(), targetModel.resource.toString()); + assert.equal(source?.toString(), sourceModel.resource.toString()); + } + + eventCounter++; + + assert.equal(e.operation, move ? FileOperation.MOVE : FileOperation.COPY); + assert.equal(e.correlationId, correlationId); + }); + + if (move) { + await accessor.workingCopyFileService.move(models.map(model => ({ source: model.sourceModel.resource, target: model.targetModel.resource })), { overwrite: true }); + } else { + await accessor.workingCopyFileService.copy(models.map(model => ({ source: model.sourceModel.resource, target: model.targetModel.resource })), { overwrite: true }); + } + + for (let i = 0; i < models.length; i++) { + const { sourceModel, targetModel } = models[i]; + + assert.equal(targetModel.textEditorModel!.getValue(), 'foo' + i); + + if (move) { + assert.ok(!accessor.textFileService.isDirty(sourceModel.resource)); + } else { + assert.ok(accessor.textFileService.isDirty(sourceModel.resource)); + } + assert.ok(accessor.textFileService.isDirty(targetModel.resource)); + + sourceModel.dispose(); + targetModel.dispose(); + } + assert.equal(eventCounter, 3); + + participant.dispose(); + listener1.dispose(); + listener2.dispose(); + } + + async function testDelete(resources: URI[]) { + + const models = await Promise.all(resources.map(async resource => { + const model = instantiationService.createInstance(TextFileEditorModel, resource, 'utf8', undefined); + (accessor.textFileService.files).add(model.resource, model); + + await model.load(); + model!.textEditorModel!.setValue('foo'); + assert.ok(accessor.workingCopyService.isDirty(model.resource)); + return model; + })); + + let eventCounter = 0; + let correlationId: number | undefined = undefined; + + const participant = accessor.workingCopyFileService.addFileOperationParticipant({ + participate: async (files, operation) => { + for (let i = 0; i < models.length; i++) { + const model = models[i]; + const file = files[i]; + assert.equal(file.target.toString(), model.resource.toString()); + } + assert.equal(operation, FileOperation.DELETE); + eventCounter++; + } + }); + + const listener1 = accessor.workingCopyFileService.onWillRunWorkingCopyFileOperation(e => { + for (let i = 0; i < models.length; i++) { + const model = models[i]; + const file = e.files[i]; + assert.equal(file.target.toString(), model.resource.toString()); + } + assert.equal(e.operation, FileOperation.DELETE); + correlationId = e.correlationId; + eventCounter++; + }); + + const listener2 = accessor.workingCopyFileService.onDidRunWorkingCopyFileOperation(e => { + for (let i = 0; i < models.length; i++) { + const model = models[i]; + const file = e.files[i]; + assert.equal(file.target.toString(), model.resource.toString()); + } + assert.equal(e.operation, FileOperation.DELETE); + assert.equal(e.correlationId, correlationId); + eventCounter++; + }); + + await accessor.workingCopyFileService.delete(models.map(m => m.resource)); + for (const model of models) { + assert.ok(!accessor.workingCopyService.isDirty(model.resource)); + model.dispose(); + } + + assert.equal(eventCounter, 3); + + participant.dispose(); + listener1.dispose(); + listener2.dispose(); + } + + async function testCreate(resource: URI, contents: VSBuffer) { + const model = instantiationService.createInstance(TextFileEditorModel, resource, 'utf8', undefined); + (accessor.textFileService.files).add(model.resource, model); + + await model.load(); + model!.textEditorModel!.setValue('foo'); + assert.ok(accessor.workingCopyService.isDirty(model.resource)); + + let eventCounter = 0; + let correlationId: number | undefined = undefined; + + const participant = accessor.workingCopyFileService.addFileOperationParticipant({ + participate: async (files, operation) => { + assert.equal(files.length, 1); + const file = files[0]; + assert.equal(file.target.toString(), model.resource.toString()); + assert.equal(operation, FileOperation.CREATE); + eventCounter++; + } + }); + + const listener1 = accessor.workingCopyFileService.onWillRunWorkingCopyFileOperation(e => { + assert.equal(e.files.length, 1); + const file = e.files[0]; + assert.equal(file.target.toString(), model.resource.toString()); + assert.equal(e.operation, FileOperation.CREATE); + correlationId = e.correlationId; + eventCounter++; + }); + + const listener2 = accessor.workingCopyFileService.onDidRunWorkingCopyFileOperation(e => { + assert.equal(e.files.length, 1); + const file = e.files[0]; + assert.equal(file.target.toString(), model.resource.toString()); + assert.equal(e.operation, FileOperation.CREATE); + assert.equal(e.correlationId, correlationId); + eventCounter++; + }); + + await accessor.workingCopyFileService.create(resource, contents); + assert.ok(!accessor.workingCopyService.isDirty(model.resource)); + model.dispose(); + + assert.equal(eventCounter, 3); + + participant.dispose(); + listener1.dispose(); + listener2.dispose(); + } }); diff --git a/src/vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService.ts b/src/vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService.ts index 3b45ed1719..36123a99cd 100644 --- a/src/vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService.ts +++ b/src/vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService.ts @@ -200,8 +200,11 @@ export abstract class AbstractWorkspaceEditingService implements IWorkspaceEditi const remoteAuthority = this.environmentService.configuration.remoteAuthority; const untitledWorkspace = await this.workspacesService.createUntitledWorkspace(folders, remoteAuthority); if (path) { - await this.saveWorkspaceAs(untitledWorkspace, path); - await this.workspacesService.deleteUntitledWorkspace(untitledWorkspace); // https://github.com/microsoft/vscode/issues/100276 + try { + await this.saveWorkspaceAs(untitledWorkspace, path); + } finally { + await this.workspacesService.deleteUntitledWorkspace(untitledWorkspace); // https://github.com/microsoft/vscode/issues/100276 + } } else { path = untitledWorkspace.configPath; } diff --git a/src/vs/workbench/test/browser/api/extHostDecorations.test.ts b/src/vs/workbench/test/browser/api/extHostDecorations.test.ts new file mode 100644 index 0000000000..2aae440eb7 --- /dev/null +++ b/src/vs/workbench/test/browser/api/extHostDecorations.test.ts @@ -0,0 +1,85 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as assert from 'assert'; +import { timeout } from 'vs/base/common/async'; +import { CancellationToken } from 'vs/base/common/cancellation'; +import { Event } from 'vs/base/common/event'; +import { URI } from 'vs/base/common/uri'; +import { mock } from 'vs/base/test/common/mock'; +import { NullLogService } from 'vs/platform/log/common/log'; +import { MainThreadDecorationsShape } from 'vs/workbench/api/common/extHost.protocol'; +import { ExtHostDecorations } from 'vs/workbench/api/common/extHostDecorations'; +import { IExtHostRpcService } from 'vs/workbench/api/common/extHostRpcService'; +import { nullExtensionDescription } from 'vs/workbench/services/extensions/common/extensions'; + +suite('ExtHostDecorations', function () { + + let mainThreadShape: MainThreadDecorationsShape; + let extHostDecorations: ExtHostDecorations; + let providers = new Set(); + + setup(function () { + + providers.clear(); + + mainThreadShape = new class extends mock() { + $registerDecorationProvider(handle: number) { + providers.add(handle); + } + }; + + extHostDecorations = new ExtHostDecorations( + new class extends mock() { + getProxy(): any { + return mainThreadShape; + } + }, + new NullLogService() + ); + }); + + test('SCM Decorations missing #100524', async function () { + + let calledA = false; + let calledB = false; + + // never returns + extHostDecorations.registerDecorationProvider({ + onDidChangeDecorations: Event.None, + provideDecoration() { + calledA = true; + return new Promise(() => { }); + } + }, nullExtensionDescription.identifier); + + // always returns + extHostDecorations.registerDecorationProvider({ + onDidChangeDecorations: Event.None, + provideDecoration() { + calledB = true; + return new Promise(resolve => resolve({ letter: 'H', title: 'Hello' })); + } + }, nullExtensionDescription.identifier); + + + const requests = [...providers.values()].map((handle, idx) => { + return extHostDecorations.$provideDecorations(handle, [{ id: idx, uri: URI.parse('test:///file') }], CancellationToken.None); + }); + + assert.equal(calledA, true); + assert.equal(calledB, true); + + assert.equal(requests.length, 2); + const [first, second] = requests; + + const firstResult = await Promise.race([first, timeout(30).then(() => false)]); + assert.equal(typeof firstResult, 'boolean'); // never finishes... + + const secondResult = await Promise.race([second, timeout(30).then(() => false)]); + assert.equal(typeof secondResult, 'object'); + }); + +}); diff --git a/src/vs/workbench/test/browser/api/extHostDocumentData.test.perf-data.ts b/src/vs/workbench/test/browser/api/extHostDocumentData.test.perf-data.ts new file mode 100644 index 0000000000..73d281a816 --- /dev/null +++ b/src/vs/workbench/test/browser/api/extHostDocumentData.test.perf-data.ts @@ -0,0 +1,6 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the Source EULA. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +export const _$_$_expensive = '{"seq":0,"type":"response","command":"completionInfo","request_seq":956,"success":true,"body":{"isGlobalCompletion":true,"isMemberCompletion":false,"isNewIdentifierLocation":false,"entries":[{"name":"__dirname","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"__filename","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"_getInstrumentationKey","kind":"method","kindModifiers":"private,static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Config"},{"name":"_util","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/instantiation/common/instantiation"},{"name":"$","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"abort","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"AbortController","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AbortSignal","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AbstractCaseAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"AbstractCodeEditorService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/services/abstractCodeEditorService"},{"name":"AbstractCommandsQuickAccessProvider","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/quickinput/browser/commandsQuickAccess"},{"name":"AbstractConfigureRecommendedExtensionsAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"AbstractContextKeyService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/browser/contextKeyService"},{"name":"AbstractDebugAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"AbstractDebugAdapter","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/abstractDebugAdapter"},{"name":"AbstractDeleteAllToBoundaryAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"AbstractEditorCommandsQuickAccessProvider","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/quickAccess/commandsQuickAccess"},{"name":"AbstractEditorNavigationQuickAccessProvider","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/quickAccess/editorNavigationQuickAccess"},{"name":"AbstractExpressionsRenderer","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/baseDebugView"},{"name":"AbstractExtensionService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService"},{"name":"AbstractExtHostExtensionService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostExtensionService"},{"name":"AbstractExtHostOutputChannel","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostOutput"},{"name":"AbstractFileDialogService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/dialogs/browser/abstractFileDialogService"},{"name":"AbstractFileOutputChannelModel","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/output/common/outputChannelModel"},{"name":"AbstractFileSynchroniser","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/abstractSynchronizer"},{"name":"AbstractGotoLineQuickAccessProvider","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/quickAccess/gotoLineQuickAccess"},{"name":"AbstractGotoSymbolQuickAccessProvider","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/quickAccess/gotoSymbolQuickAccess"},{"name":"AbstractJsonFileSynchroniser","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/abstractSynchronizer"},{"name":"AbstractKeybindingService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService"},{"name":"AbstractLifecycleService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/lifecycle/common/lifecycleService"},{"name":"AbstractLineHighlightOverlay","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight"},{"name":"AbstractLogService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/log"},{"name":"AbstractPathService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/path/common/pathService"},{"name":"AbstractProblemCollector","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemCollectors"},{"name":"AbstractProcess","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/processes"},{"name":"AbstractRange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AbstractRemoteAgentService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/common/abstractRemoteAgentService"},{"name":"AbstractScrollableElement","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/scrollbar/scrollableElement"},{"name":"AbstractScrollbar","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/scrollbar/abstractScrollbar"},{"name":"AbstractSearchAndReplaceAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"AbstractSettingRenderer","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"AbstractSettingsModel","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesModels"},{"name":"AbstractShowReleaseNotesAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/update/browser/update"},{"name":"AbstractSortLinesAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"AbstractSynchroniser","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/abstractSynchronizer"},{"name":"AbstractTaskService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/browser/abstractTaskService"},{"name":"AbstractTelemetryOptOut","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/telemetryOptOut/browser/telemetryOptOut"},{"name":"AbstractTextFileService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/browser/textFileService"},{"name":"AbstractTextMateService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textMate/browser/abstractTextMateService"},{"name":"AbstractTextResourceEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/textResourceEditor"},{"name":"AbstractTree","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/abstractTree"},{"name":"AbstractTunnelService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/common/tunnelService"},{"name":"AbstractUpdateService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/update/electron-main/abstractUpdateService"},{"name":"AbstractURLService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/url/common/urlService"},{"name":"AbstractVariableResolverService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configurationResolver/common/variableResolver"},{"name":"AbstractWorkspaceEditingService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService"},{"name":"Accelerator","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"acceptLocalChangesCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler"},{"name":"access","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"AccessibilityHelpNLS","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standaloneStrings"},{"name":"AccessibilityProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesTree"},{"name":"AccessibilityProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree"},{"name":"AccessibilityService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/accessibility/common/accessibilityService"},{"name":"AccessibilitySupport","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/accessibility/common/accessibility"},{"name":"AccessibilitySupport","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"accessSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"AccountsActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/activitybar/activitybarActions"},{"name":"ACL_IDENTITY","kind":"property","kindModifiers":"private,static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Sender"},{"name":"ACLED_DIRECTORIES","kind":"property","kindModifiers":"private,static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Sender"},{"name":"Action","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/actions"},{"name":"Action2","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/common/actions"},{"name":"ActionBar","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/actionbar/actionbar"},{"name":"ActionRunner","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/actions"},{"name":"actions","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"vscode-nsfw"},{"name":"ActionsOrientation","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/actionbar/actionbar"},{"name":"ActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/actionbar/actionbar"},{"name":"ActivatedExtension","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostExtensionActivator"},{"name":"ActivationTimes","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensions"},{"name":"ACTIVE_GROUP","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/common/editorService"},{"name":"activeContrastBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"ActiveEditorContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"ActiveEditorGroupEmptyContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"ActiveEditorGroupIndexContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"ActiveEditorGroupLastContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"ActiveEditorIsReadonlyContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"ActiveGroupEditorsByMostRecentlyUsedQuickAccess","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorQuickAccess"},{"name":"ActivePanelContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/panel"},{"name":"ActiveViewletContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/viewlet"},{"name":"ActiveWindowManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/node/activeWindowTracker"},{"name":"ACTIVITY_BAR_ACTIVE_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"ACTIVITY_BAR_ACTIVE_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"ACTIVITY_BAR_ACTIVE_FOCUS_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"ACTIVITY_BAR_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"ACTIVITY_BAR_BADGE_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"ACTIVITY_BAR_BADGE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"ACTIVITY_BAR_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"ACTIVITY_BAR_DRAG_AND_DROP_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"ACTIVITY_BAR_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"ACTIVITY_BAR_INACTIVE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"ActivityAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/compositeBarActions"},{"name":"ActivityActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/compositeBarActions"},{"name":"ActivitybarPart","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/activitybar/activitybarPart"},{"name":"ActivityService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/activity/browser/activityService"},{"name":"ActivityUpdater","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markers"},{"name":"ADD_CONFIGURATION_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"ADD_ROOT_FOLDER_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/workspaceCommands"},{"name":"ADD_ROOT_FOLDER_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/workspaceCommands"},{"name":"addArg","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/argvHelper"},{"name":"addClass","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"addClasses","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"addContextToEditorMatches","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/searchHelpers"},{"name":"AddCursorsAtSearchResults","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"addDisposableGenericMouseDownListner","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"addDisposableGenericMouseMoveListner","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"addDisposableGenericMouseUpListner","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"addDisposableListener","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"addDisposableNonBubblingMouseOutListener","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"addDisposableNonBubblingPointerOutListener","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"addDisposableThrottledListener","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"addEventListener","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"AddFunctionBreakpointAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"addListener","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"addListener","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"ADDRCONFIG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"ADDRGETNETWORKPARAMS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"AddRootFolderAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/workspaceActions"},{"name":"AddSelectionToNextFindMatchAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/multicursor/multicursor"},{"name":"AddSelectionToPreviousFindMatchAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/multicursor/multicursor"},{"name":"addSetting","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/settingsMerge"},{"name":"addStandardDisposableGenericMouseDownListner","kind":"let","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"addStandardDisposableGenericMouseUpListner","kind":"let","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"addStandardDisposableListener","kind":"let","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"addTerminalEnvironmentKeys","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalEnvironment"},{"name":"addToValueTree","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"AddToWorkspaceFolderRecommendationsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"AddToWorkspaceRecommendationsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"addTrailingPathSeparator","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"AddWatchExpressionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"adoptToGalleryExtensionId","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagementUtil"},{"name":"after","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"afterEach","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"Agent","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"http"},{"name":"Agent","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"https"},{"name":"Aggregation","kind":"enum member","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/DataPointType"},{"name":"alert","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"alert","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/aria/aria"},{"name":"alertFormattingEdits","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/format/format"},{"name":"ALL_SYNC_RESOURCES","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"allCharCodes","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/minimap/minimapCharSheet"},{"name":"AllEditorsByAppearanceQuickAccess","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorQuickAccess"},{"name":"AllEditorsByMostRecentlyUsedQuickAccess","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorQuickAccess"},{"name":"AllKeysConfigurationChangeEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationModels"},{"name":"allowedNodeEnvironmentFlags","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"allowSetForegroundWindow","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/windows-foreground-love/index"},{"name":"allSettings","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationRegistry"},{"name":"ALPN_ENABLED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"AnalyserNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AnchorAlignment","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/contextview/contextview"},{"name":"anchorGlob","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepSearchUtils"},{"name":"AnchorPosition","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/contextview/contextview"},{"name":"animate","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"Animation","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AnimationEffect","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AnimationEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AnimationPlaybackEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AnimationTimeline","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ansiColorIdentifiers","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalColorRegistry"},{"name":"ansiColorMap","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalColorRegistry"},{"name":"any","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"anyScore","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"AnythingQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/anythingQuickAccess"},{"name":"ApiCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostApiCommands"},{"name":"ApiCommandArgument","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostApiCommands"},{"name":"ApiCommandResult","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostApiCommands"},{"name":"app","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"append","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"appendEditorTitleContextMenuItem","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions.contribution"},{"name":"appendFile","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"appendFileSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"appendKeyBindingLabel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"appendStylizedStringToContainer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/output/transforms/errorTransform"},{"name":"appendStylizedStringToContainer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugANSIHandling"},{"name":"appendToCommandPalette","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions.contribution"},{"name":"AppInsightsAppender","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/node/appInsightsAppender"},{"name":"applicationCache","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ApplicationCache","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"applicationSettings","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationRegistry"},{"name":"applyCodeAction","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionCommands"},{"name":"applyConfigurationValues","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"applyDeprecatedVariableMessage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configurationResolver/common/configurationResolverUtils"},{"name":"applyDragImage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dnd"},{"name":"applyEdit","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/jsonEdit"},{"name":"applyEdits","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/jsonEdit"},{"name":"ApplyEditsResult","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model"},{"name":"ApplyToKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher"},{"name":"appVersion","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Context"},{"name":"arch","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"arch","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"areFunctions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"areKeyboardLayoutsEqual","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/keymapInfo"},{"name":"areSame","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/settingsMerge"},{"name":"areSameExtensions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagementUtil"},{"name":"areWebviewInputOptionsEqual","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewWorkbenchService"},{"name":"argv","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"argv0","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"AriaLabelProvider","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keybindingLabels"},{"name":"Array","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ArrayBuffer","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"arrayInsert","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"ArrayNavigator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/navigator"},{"name":"ARROW_IMG_SIZE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/scrollbar/scrollbarArrow"},{"name":"as","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"asArray","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"AsbtractOutputChannelModelService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/output/common/outputChannelModel"},{"name":"asCSSUrl","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"asDomUri","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"asJson","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/request/common/request"},{"name":"asPromise","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"assert","kind":"alias","kindModifiers":"","sortText":"0"},{"name":"assertAllDefined","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"AssertDocumentLineMappingDirection","kind":"enum","kindModifiers":"","sortText":"0"},{"name":"assertEqualQueries","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/test/browser/queryBuilder.test"},{"name":"assertEqualSearchPathResults","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/test/browser/queryBuilder.test"},{"name":"AssertionError","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"assertIsDefined","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"assertMapping","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/test/electron-browser/keyboardMapperTestUtils"},{"name":"assertResolveKeybinding","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/test/electron-browser/keyboardMapperTestUtils"},{"name":"assertResolveKeyboardEvent","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/test/electron-browser/keyboardMapperTestUtils"},{"name":"assertResolveUserBinding","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/test/electron-browser/keyboardMapperTestUtils"},{"name":"asserts","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"assertSyncedModels","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/model/editableTextModelTestUtils"},{"name":"assertType","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"assign","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/objects"},{"name":"asText","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/request/common/request"},{"name":"asWebviewUri","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/shared/webview"},{"name":"async","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"AsyncDataSource","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewer"},{"name":"AsyncDataTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/asyncDataTree"},{"name":"AsyncEmitter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/event"},{"name":"AsyncResource","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"async_hooks"},{"name":"atob","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"Atomics","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"attachBadgeStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachBreadcrumbsStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachButtonStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachCheckboxStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachDialogStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachFindReplaceInputBoxStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachInputBoxStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachLinkStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachListStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachMenuStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachProgressBarStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachQuickInputStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachSelectBoxStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachStylerCallback","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachSuggestEnabledInputBoxStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput"},{"name":"Attr","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Audio","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AudioBuffer","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AudioBufferSourceNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AudioContext","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AudioDestinationNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AudioListener","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AudioNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AudioParam","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AudioParamMap","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AudioProcessingEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AudioScheduledSourceNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AudioWorklet","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AudioWorkletNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"authentication","kind":"module","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"AuthenticationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/authentication/browser/authenticationService"},{"name":"AuthenticationTokenService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSyncAccount"},{"name":"AuthenticationTokenService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/authentication/electron-browser/authenticationTokenService"},{"name":"AuthenticationTokenServiceChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSyncAccountIpc"},{"name":"AuthenticatorAssertionResponse","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AuthenticatorAttestationResponse","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AuthenticatorResponse","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AuthStatus","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncAuthentication"},{"name":"AutoCheckUpdatesConfigurationKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensions"},{"name":"AutoFixAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionCommands"},{"name":"AutoIndentOnPaste","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentation"},{"name":"AutoIndentOnPasteCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentation"},{"name":"automaticKeyboardNavigationSettingKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"AutoSaveAfterShortDelayContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/filesConfiguration/common/filesConfigurationService"},{"name":"AutoSaveConfiguration","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"AutoSaveMode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/filesConfiguration/common/filesConfigurationService"},{"name":"AutoUpdateConfigurationKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensions"},{"name":"autoUpdater","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"AvailabilityData","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/AvailabilityData"},{"name":"AvailabilityData","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"AverageBufferSize","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase"},{"name":"await","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"BackLayerWebView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView"},{"name":"BackupFileService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/backup/common/backupFileService"},{"name":"BackupFileService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/backup/node/backupFileService"},{"name":"BackupFilesModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/backup/common/backupFileService"},{"name":"BackupMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/backup/electron-main/backupMainService"},{"name":"BackupRestorer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/backup/common/backupRestorer"},{"name":"BACKUPS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/common/environment"},{"name":"BackupTracker","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/backup/common/backupTracker"},{"name":"BADFAMILY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"BADFLAGS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"badgeBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"badgeForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"BADHINTS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"BADNAME","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"BADQUERY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"BADRESP","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"BADSTR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"BareFontInfo","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/fontInfo"},{"name":"BarProp","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Barrier","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"Base","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/Base"},{"name":"Base","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"BaseActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/actionbar/actionbar"},{"name":"BaseAudioContext","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"BaseBinaryResourceEditor","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/binaryEditor"},{"name":"BaseBreakpoint","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"BaseCellViewModel","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel"},{"name":"BaseCloseAllAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"BaseConfigurationResolverService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configurationResolver/browser/configurationResolverService"},{"name":"BaseCreateEditorGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"BaseDropdown","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/dropdown/dropdown"},{"name":"BaseEditor","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/baseEditor"},{"name":"BaseEditorQuickAccessProvider","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorQuickAccess"},{"name":"BaseErrorTelemetry","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/errorTelemetry"},{"name":"BaseExtHostTerminal","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTerminalService"},{"name":"BaseExtHostTerminalService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTerminalService"},{"name":"BaseFocusGroupAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"BaseMoveGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"basename","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"path"},{"name":"basename","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"basename","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"basenameOrAuthority","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"BaseNavigateEditorAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"BaseQuickAccessEditorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"BaseQuickAccessNavigateAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/quickAccessActions"},{"name":"BaseResizeViewAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"BaseResolvedKeybinding","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/keybinding/common/baseResolvedKeybinding"},{"name":"BaseSaveAllAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"BaseSplitEditorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"BaseSwitchWindow","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"},{"name":"BaseTextEditor","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/textEditor"},{"name":"BaseTextEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor/textEditorModel"},{"name":"baseTypeToTelemetryType","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/TelemetryTypes/TelemetryType"},{"name":"BaseWebview","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/baseWebviewElement"},{"name":"BaseWindowDriver","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/driver/browser/baseDriver"},{"name":"BaseZoomAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"},{"name":"BasicInplaceReplace","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/inplaceReplaceSupport"},{"name":"BatchedCollector","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/textSearchManager"},{"name":"before","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"beforeEach","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"BeforeUnloadEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"BenchmarkSuite","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/model/benchmark/benchmarkUtils"},{"name":"BetterMergeId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagementUtil"},{"name":"BhxBrowser","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"bigint","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"BigInt","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"BigInt64Array","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"BigIntStats","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"BigUint64Array","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"BINARY_DIFF_EDITOR_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"BINARY_FILE_EDITOR_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"BinaryEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor/binaryEditorModel"},{"name":"BinaryFileEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/editors/binaryFileEditor"},{"name":"BinaryResourceDiffEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/binaryDiffEditor"},{"name":"binarySearch","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"BiquadFilterNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Blob","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"BlockCommentCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/comment/blockCommentCommand"},{"name":"blur","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"boolean","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"Boolean","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"BooleanEventEmitter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/widget/codeEditorWidget"},{"name":"BOTTOM_CELL_TOOLBAR_HEIGHT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/constants"},{"name":"BoundModelReferenceCollection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadDocuments"},{"name":"BracesHidingRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesRenderers"},{"name":"BracketElectricCharacterSupport","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/electricCharacter"},{"name":"BracketMatchingController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/bracketMatching/bracketMatching"},{"name":"BracketSelectionRangeProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/smartSelect/bracketSelections"},{"name":"BracketsUtils","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/richEditBrackets"},{"name":"breadcrumbsActiveSelectionForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"breadcrumbsBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"BreadcrumbsConfig","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbs"},{"name":"BreadcrumbsControl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbsControl"},{"name":"BreadcrumbsFilePicker","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbsPicker"},{"name":"breadcrumbsFocusForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"breadcrumbsForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"BreadcrumbsItem","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/breadcrumbs/breadcrumbsWidget"},{"name":"BreadcrumbsOutlinePicker","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbsPicker"},{"name":"BreadcrumbsPicker","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbsPicker"},{"name":"breadcrumbsPickerBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"BreadcrumbsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbs"},{"name":"BreadcrumbsWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/breadcrumbs/breadcrumbsWidget"},{"name":"break","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"breakBetweenGraphemeBreakType","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"Breakpoint","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"Breakpoint","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"Breakpoint","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"BREAKPOINT_EDITOR_CONTRIBUTION_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"BreakpointEditorContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/breakpointEditorContribution"},{"name":"BREAKPOINTS_VIEW_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"breakpointsExtPoint","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugSchemas"},{"name":"BreakpointsView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/breakpointsView"},{"name":"BreakpointWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/breakpointWidget"},{"name":"BreakpointWidgetContext","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"BroadcastChannel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"brotliCompress","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"brotliCompressSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"brotliDecompress","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"brotliDecompressSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"BrowserBackupTracker","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/backup/browser/backupTracker"},{"name":"BrowserClipboardService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/clipboard/browser/clipboardService"},{"name":"BrowserCredentialsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/credentials/browser/credentialsService"},{"name":"BrowserEnvironmentConfiguration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/environment/browser/environmentService"},{"name":"BrowserFeatures","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/canIUse"},{"name":"BrowserHostService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/host/browser/browserHostService"},{"name":"BrowserIntegrityServiceImpl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/integrity/browser/integrityService"},{"name":"BrowserKeyboardMapperFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/browser/keymapService"},{"name":"BrowserKeyboardMapperFactoryBase","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/browser/keymapService"},{"name":"BrowserLifecycleService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/lifecycle/browser/lifecycleService"},{"name":"BrowserPathService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/path/browser/pathService"},{"name":"BrowserRequestService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/request/browser/requestService"},{"name":"BrowserResizeObserver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/sizeObserver"},{"name":"BrowserSocketFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/browser/browserSocketFactory"},{"name":"BrowserStorageService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/storage/browser/storageService"},{"name":"BrowserTelemetryOptOut","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/telemetryOptOut/browser/telemetryOptOut"},{"name":"BrowserTextFileService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/browser/browserTextFileService"},{"name":"BrowserUpdateService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/update/browser/updateService"},{"name":"BrowserURLService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/url/browser/urlService"},{"name":"BrowserView","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"BrowserWindow","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"BrowserWindowProxy","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"BrowserWorkbenchEnvironmentService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/environment/browser/environmentService"},{"name":"BrowserWorkspaceEditingService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/workspaces/browser/workspaceEditingService"},{"name":"BrowserWorkspacesService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/workspaces/browser/workspacesService"},{"name":"btoa","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"buffer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/zip"},{"name":"Buffer","kind":"class","kindModifiers":"declare","sortText":"4"},{"name":"Buffer","kind":"alias","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"buffer"},{"name":"BufferedEmitter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc.net"},{"name":"BufferLogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/bufferLog"},{"name":"BufferredOutputChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/output/common/outputChannelModel"},{"name":"bufferToReadable","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"bufferToStream","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"buildHelpMessage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/argv"},{"name":"buildRegexParseError","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepTextSearchEngine"},{"name":"buildReplaceStringWithCasePreserved","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/search"},{"name":"buildTelemetryMessage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/node/telemetry"},{"name":"buildVersionMessage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/argv"},{"name":"BUILTIN_MANIFEST_CACHE_FILE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensions/common/extensions"},{"name":"BuiltInBasicsExtensionsView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews"},{"name":"BuiltInExtensionsView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews"},{"name":"builtinModules","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"module"},{"name":"BuiltInThemesExtensionsView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews"},{"name":"BulkCategory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditPreview"},{"name":"BulkEditAccessibilityProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree"},{"name":"BulkEditDataSource","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree"},{"name":"BulkEditDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree"},{"name":"BulkEditIdentityProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree"},{"name":"BulkEditNaviLabelProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree"},{"name":"BulkEditPane","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditPane"},{"name":"BulkEditPreviewProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditPreview"},{"name":"BulkEditService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/bulkEdit/browser/bulkEditService"},{"name":"BulkEditSorter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree"},{"name":"BulkFileOperation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditPreview"},{"name":"BulkFileOperations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditPreview"},{"name":"BulkFileOperationType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditPreview"},{"name":"BulkTextEdit","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditPreview"},{"name":"Button","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/button/button"},{"name":"buttonBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"buttonBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/page/browser/welcomePage"},{"name":"buttonForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"ButtonGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/button/button"},{"name":"buttonHoverBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"buttonHoverBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/page/browser/welcomePage"},{"name":"ByteLengthQueuingStrategy","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Cache","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Cache","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/cache"},{"name":"Cache","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/cache"},{"name":"cached","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-sqlite3/index"},{"name":"cachedDataVersionTag","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"v8"},{"name":"CachedExtensionScanner","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner"},{"name":"CachedKeyboardMapper","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/keyboardMapper"},{"name":"CachedListVirtualDelegate","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/list"},{"name":"cachedStringRepeat","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/commands/shiftCommand"},{"name":"caches","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CacheStorage","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"calcANSI8bitColor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/output/transforms/errorTransform"},{"name":"calcANSI8bitColor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugANSIHandling"},{"name":"calculateLF","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase"},{"name":"calculateSize","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase"},{"name":"Call","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree"},{"name":"callbackify","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"CallHierarchyDirection","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/callHierarchy/common/callHierarchy"},{"name":"CallHierarchyIncomingCall","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CallHierarchyIncomingCall","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CallHierarchyIncomingCall","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"CallHierarchyItem","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CallHierarchyItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CallHierarchyItem","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"CallHierarchyModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/callHierarchy/common/callHierarchy"},{"name":"CallHierarchyOutgoingCall","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CallHierarchyOutgoingCall","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CallHierarchyOutgoingCall","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"CallHierarchyProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/callHierarchy/common/callHierarchy"},{"name":"CallHierarchyTreePeekWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyPeek"},{"name":"CallRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree"},{"name":"CALLSTACK_VIEW_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CallStackEditorContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/callStackEditorContribution"},{"name":"CallStackView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/callStackView"},{"name":"CancelActionId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"cancelAnimationFrame","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"CancelCellAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookActions"},{"name":"canceled","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errors"},{"name":"CancellationToken","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/cancellation"},{"name":"CancellationTokenSource","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CancellationTokenSource","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/cancellation"},{"name":"CancellationTokenSource","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/editor.api"},{"name":"CANCELLED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"CancelSearchAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"canExecuteOnUI","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionsUtil"},{"name":"canExecuteOnWeb","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionsUtil"},{"name":"canExecuteOnWorkspace","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionsUtil"},{"name":"canNormalize","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/normalization"},{"name":"CanvasGradient","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CanvasPattern","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CanvasRenderingContext2D","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"captureEvents","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"CaretPosition","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"case","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"CaseSensitiveCheckbox","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/findinput/findInputCheckboxes"},{"name":"catch","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"CategoryElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree"},{"name":"CategoryElementRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree"},{"name":"CDATASection","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CELL_MARGIN","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/constants"},{"name":"CELL_RUN_GUTTER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/constants"},{"name":"CELL_TOOLBAR_SEPERATOR","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor"},{"name":"CellEditState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookBrowser"},{"name":"CellEditType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/notebookCommon"},{"name":"CellFocusMode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookBrowser"},{"name":"CellKind","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CellKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/notebookCommon"},{"name":"CellKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHost.protocol"},{"name":"CellKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CellMenus","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/cellMenus"},{"name":"CellOutputKind","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CellOutputKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/notebookCommon"},{"name":"CellOutputKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHost.protocol"},{"name":"CellOutputKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CellRevealPosition","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookBrowser"},{"name":"CellRevealType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookBrowser"},{"name":"CellRunState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookBrowser"},{"name":"CellUri","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/notebookCommon"},{"name":"CenteredViewLayout","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/centered/centeredViewLayout"},{"name":"Certificate","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"CHANGE_BUFFER_DELAY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/watcher"},{"name":"ChangeEncodingAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorStatus"},{"name":"ChangeEOLAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorStatus"},{"name":"ChangeIndentationSizeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentation"},{"name":"ChangeModeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorStatus"},{"name":"ChangeSortAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"Channel","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Channel"},{"name":"ChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc"},{"name":"ChannelMergerNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ChannelServer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc"},{"name":"ChannelSplitterNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CharacterClassifier","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/characterClassifier"},{"name":"CharacterData","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CharacterMapping","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/viewLineRenderer"},{"name":"CharacterMappingConstants","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/viewLineRenderer"},{"name":"CharacterPairSupport","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/characterPair"},{"name":"CharacterSet","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/characterClassifier"},{"name":"CharCode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/charCode"},{"name":"CharWidthRequest","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/config/charWidthReader"},{"name":"CharWidthRequestType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/config/charWidthReader"},{"name":"chdir","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"Checkbox","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/checkbox/checkbox"},{"name":"CheckboxActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/checkbox/checkbox"},{"name":"CheckedStates","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditPreview"},{"name":"CheckForUpdatesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"CheckForVSCodeUpdateAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/update/browser/update"},{"name":"CheckForVSCodeUpdateActionId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/update/common/update"},{"name":"checkProposedApiEnabled","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensions"},{"name":"checkServerIdentity","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tls"},{"name":"checksum","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/crypto"},{"name":"chmod","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"chmod","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"chmodSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"Choice","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetParser"},{"name":"ChoiceAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/notifications"},{"name":"ChokidarWatcherService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/watcher/unix/chokidarWatcherService"},{"name":"ChordKeybinding","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keyCodes"},{"name":"chown","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"chownSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"chrome","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"ChunkStream","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc.net"},{"name":"Cipher","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"clamp","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/numbers"},{"name":"class","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"CLASSIFIER_MODIFIER_SEPARATOR","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry"},{"name":"ClassName","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/intervalTree"},{"name":"clean","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"cleanMnemonic","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/menu/menu"},{"name":"cleanRemoteAuthority","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetryUtils"},{"name":"CleanSearchEditorStateCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"cleanUndefinedQueryValues","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/test/browser/queryBuilder.test"},{"name":"clear","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"CLEAR_ALL_NOTIFICATIONS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"CLEAR_NOTIFICATION","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"clearAllFontInfos","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/config/configuration"},{"name":"ClearAllNotificationsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsActions"},{"name":"ClearCommandHistoryAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess"},{"name":"ClearEditorHistoryAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"ClearExtensionsInputAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"clearHistoryCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"clearImmediate","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"clearImmediate","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"timers"},{"name":"clearInterval","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"clearInterval","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"timers"},{"name":"clearLine","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"readline"},{"name":"clearNode","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"ClearNotificationAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsActions"},{"name":"ClearRecentFilesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"ClearReplAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/repl"},{"name":"clearScreenDown","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"readline"},{"name":"ClearSearchHistoryCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"ClearSearchResultsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"ClearTerminalAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions"},{"name":"clearTextMimes","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/mime"},{"name":"clearTimeout","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"clearTimeout","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"timers"},{"name":"ClickLinkGesture","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/link/clickLinkGesture"},{"name":"ClickLinkKeyboardEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/link/clickLinkGesture"},{"name":"ClickLinkMouseEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/link/clickLinkGesture"},{"name":"ClickLinkOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/link/clickLinkGesture"},{"name":"Client","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc.net"},{"name":"Client","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/electron-browser/ipc.electron-browser"},{"name":"Client","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/node/ipc.cp"},{"name":"CLIENT_RENEG_LIMIT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tls"},{"name":"CLIENT_RENEG_WINDOW","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tls"},{"name":"ClientCoordinates","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorDom"},{"name":"clientInformation","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ClientRect","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ClientRectList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ClientRequest","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"http"},{"name":"ClientRequest","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"clipboard","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"Clipboard","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ClipboardBasedVariableResolver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetVariables"},{"name":"ClipboardEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CLIServer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/node/extHostCLIServer"},{"name":"clock","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"cloneAndChange","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/objects"},{"name":"close","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"close","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"close","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"inspector"},{"name":"CLOSE_EDITOR_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"CLOSE_EDITOR_GROUP_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"CLOSE_EDITORS_AND_GROUP_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"CLOSE_EDITORS_IN_GROUP_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"CLOSE_EDITORS_TO_THE_RIGHT_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"CLOSE_OTHER_EDITORS_IN_GROUP_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"CLOSE_SAVED_EDITORS_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"CloseAllEditorGroupsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"CloseAllEditorsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"CloseCurrentWindowAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"},{"name":"closed","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CloseDirection","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"CloseEditorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"CloseEditorInAllGroupsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"CloseEditorsInOtherGroupsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"CloseEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CloseExtensionDetailsOnViewChangeKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensions"},{"name":"CloseGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"CloseLeftEditorsInGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"CloseOneEditorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"ClosePanelAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/panel/panelActions"},{"name":"CloseReplaceAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"CloseReplaceWidgetActionId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"CloseSidebarAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"closeSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"CloseWorkspaceAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/workspaceActions"},{"name":"cmp","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"coalesce","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"coalesceInPlace","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"CodeAction","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CodeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CodeActionAutoApply","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/types"},{"name":"CodeActionCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionCommands"},{"name":"CodeActionCommandArgs","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/types"},{"name":"codeActionCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeAction"},{"name":"CodeActionDocumentationContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeActions/common/documentationContribution"},{"name":"CodeActionExtensionPointFields","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeActions/common/codeActionsExtensionPoint"},{"name":"CodeActionKeybindingResolver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionMenu"},{"name":"CodeActionKind","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CodeActionKind","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/types"},{"name":"CodeActionKind","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CodeActionMenu","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionMenu"},{"name":"CodeActionModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionModel"},{"name":"CodeActionProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"CodeActionsContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeActions/common/codeActionsContribution"},{"name":"codeActionsExtensionPointDescriptor","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeActions/common/codeActionsExtensionPoint"},{"name":"CodeActionsState","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionModel"},{"name":"CodeActionTrigger","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CodeActionTriggerType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"CodeActionUi","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionUi"},{"name":"CodeApplication","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-main/app"},{"name":"CodeCell","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/codeCell"},{"name":"CodeCellRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer"},{"name":"CodeCellViewModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel"},{"name":"CodeDataTransfers","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/dnd"},{"name":"CodeEditorService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/browser/codeEditorService"},{"name":"CodeEditorServiceImpl","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/services/codeEditorServiceImpl"},{"name":"CodeEditorStateFlag","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/core/editorState"},{"name":"CodeEditorWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/widget/codeEditorWidget"},{"name":"CodeInset","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CodeLens","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CodeLens","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CodeLensCache","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codelens/codeLensCache"},{"name":"CodeLensContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codelens/codelensController"},{"name":"CodeLensHelper","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codelens/codelensWidget"},{"name":"CodeLensModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codelens/codelens"},{"name":"CodeLensProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"CodeLensWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codelens/codelensWidget"},{"name":"CodeWindow","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-main/window"},{"name":"CodiconActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer"},{"name":"CodiconLabel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/codiconLabel/codiconLabel"},{"name":"codiconStartMarker","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/codicon"},{"name":"coerce","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"COLLAPSE_NOTIFICATION","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"CollapseAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/viewlet"},{"name":"CollapseAllAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/treeDefaults"},{"name":"CollapseDeepestExpandedLevelAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"CollapseExplorerView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"CollapseNotificationAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsActions"},{"name":"collectLaunchConfigs","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/diagnostics/node/diagnosticsService"},{"name":"collectWorkspaceStats","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/diagnostics/node/diagnosticsService"},{"name":"Color","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"Color","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/color"},{"name":"Color","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"Color","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"ColorDetector","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/colorPicker/colorDetector"},{"name":"ColorExtensionPoint","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/colorExtensionPoint"},{"name":"ColorFormat","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"ColorId","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"ColorInformation","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"ColorInformation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"colorize","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"colorizeElement","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"colorizeModelLine","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"Colorizer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/colorizer"},{"name":"ColorMap","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/tokenization"},{"name":"ColorPickerBody","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/colorPicker/colorPickerWidget"},{"name":"ColorPickerHeader","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/colorPicker/colorPickerWidget"},{"name":"ColorPickerModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/colorPicker/colorPickerModel"},{"name":"ColorPickerWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/colorPicker/colorPickerWidget"},{"name":"ColorPresentation","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"ColorPresentation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"ColorPresentation","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"ColorProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"ColorTheme","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"ColorThemeData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/colorThemeData"},{"name":"ColorThemeKind","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"ColorThemeKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"colorThemeSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/colorThemeSchema"},{"name":"ColorZone","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/overviewZoneManager"},{"name":"ColumnSelection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorColumnSelection"},{"name":"combinedAppender","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetryUtils"},{"name":"combinedDisposable","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/lifecycle"},{"name":"CombinedInstallAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"CombinedSpliceable","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/splice"},{"name":"Command","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorExtensions"},{"name":"CommandLine","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"CommandOptions","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"commands","kind":"module","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"commands","kind":"alias","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/workbench.web.api"},{"name":"CommandsConverter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostCommands"},{"name":"CommandService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/commands/common/commandService"},{"name":"commandsExtensionPoint","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/menusExtensionPoint"},{"name":"CommandsHistory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/quickinput/browser/commandsQuickAccess"},{"name":"CommandsQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess"},{"name":"CommandsRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/commands/common/commands"},{"name":"CommandString","kind":"type","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"CommandString","kind":"type","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskConfiguration"},{"name":"CommandTrackerAddon","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/addons/commandTrackerAddon"},{"name":"Comment","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CommentBasedVariableResolver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetVariables"},{"name":"CommentContextKeys","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/common/commentContextKeys"},{"name":"CommentController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentsEditorContribution"},{"name":"COMMENTEDITOR_DECORATION_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentThreadWidget"},{"name":"CommentFormActions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentFormActions"},{"name":"CommentGlyphWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentGlyphWidget"},{"name":"CommentMenus","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentMenus"},{"name":"CommentMode","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CommentMode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"CommentMode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CommentMode","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/commentMode"},{"name":"CommentNode","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/common/commentModel"},{"name":"CommentNode","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentNode"},{"name":"CommentNodeRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentsTreeViewer"},{"name":"comments","kind":"module","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"COMMENTS_VIEW_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentsTreeViewer"},{"name":"COMMENTS_VIEW_TITLE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentsTreeViewer"},{"name":"CommentsAsyncDataSource","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentsTreeViewer"},{"name":"CommentService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentService"},{"name":"CommentsList","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentsTreeViewer"},{"name":"CommentsModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/common/commentModel"},{"name":"CommentsModelVirualDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentsTreeViewer"},{"name":"CommentsPanel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentsView"},{"name":"CommentThreadCollapsibleState","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CommentThreadCollapsibleState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"CommentThreadCollapsibleState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CommitCharacterController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestCommitCharacters"},{"name":"CommonEditorConfiguration","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/commonEditorConfig"},{"name":"CommonFindController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"commonlyUsedData","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsLayout"},{"name":"commonPrefixLength","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"commonPrefixLength","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"commonSuffixLength","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"CommonTask","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"Comparator","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"compare","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"compare","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"compare","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"COMPARE_RESOURCE_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"COMPARE_SELECTED_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"COMPARE_WITH_SAVED_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"compareAnything","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/comparers"},{"name":"compareBuild","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"compareByPrefix","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/comparers"},{"name":"compareFileExtensions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/comparers"},{"name":"compareFileNames","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/comparers"},{"name":"compareIdentifiers","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"compareIgnoreCase","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"compareItemsByFuzzyScore","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/fuzzyScorer"},{"name":"compareMarkersByUri","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersModel"},{"name":"comparePaths","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/comparers"},{"name":"compareSubstring","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"compareSubstringIgnoreCase","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"CompareWithClipboardAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"CompatChangeAll","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/multicursor/multicursor"},{"name":"compile","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchCompile"},{"name":"compileFunction","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"vm"},{"name":"CompletionContext","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"CompletionItem","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CompletionItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggest"},{"name":"CompletionItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CompletionItem","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"CompletionItemInsertTextRule","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"CompletionItemInsertTextRule","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"CompletionItemKind","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CompletionItemKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"CompletionItemKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CompletionItemKind","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"CompletionItemKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"CompletionItemTag","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CompletionItemTag","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"CompletionItemTag","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CompletionItemTag","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"CompletionItemTag","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"completionKindFromString","kind":"let","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"completionKindToCssClass","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"CompletionList","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CompletionList","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CompletionModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/completionModel"},{"name":"CompletionOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggest"},{"name":"CompletionProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"CompletionTriggerKind","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CompletionTriggerKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"CompletionTriggerKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CompletionTriggerKind","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"CompletionTriggerKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"Component","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/component"},{"name":"ComposedTreeDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/abstractTree"},{"name":"Composite","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/composite"},{"name":"CompositeActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/compositeBarActions"},{"name":"CompositeBar","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/compositeBar"},{"name":"CompositeDescriptor","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/composite"},{"name":"CompositeDragAndDrop","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/compositeBar"},{"name":"CompositeDragAndDropData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/dnd"},{"name":"CompositeDragAndDropObserver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/dnd"},{"name":"CompositeOverflowActivityAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/compositeBarActions"},{"name":"CompositeOverflowActivityActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/compositeBarActions"},{"name":"CompositePart","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/compositePart"},{"name":"CompositeProgressIndicator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/progress/browser/progressIndicator"},{"name":"CompositeRegistry","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/composite"},{"name":"CompositeScope","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/progress/browser/progressIndicator"},{"name":"CompositeSnippetVariableResolver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetVariables"},{"name":"CompositionEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"compress","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/compressedObjectTreeModel"},{"name":"compressConsecutiveTextChanges","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textChange"},{"name":"CompressedNavigationController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer"},{"name":"CompressedObjectTreeModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/compressedObjectTreeModel"},{"name":"CompressibleAsyncDataTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/asyncDataTree"},{"name":"CompressibleObjectTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/objectTree"},{"name":"CompressibleObjectTreeModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/compressedObjectTreeModel"},{"name":"computeCodePoint","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"ComputedEditorOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/commonEditorConfig"},{"name":"computeLinks","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/linkComputer"},{"name":"computeRanges","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/indentRangeProvider"},{"name":"computeScreenAwareSize","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"computeStyles","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"config","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"config","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"Config","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher"},{"name":"Config","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Config"},{"name":"Configuration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/config/configuration"},{"name":"Configuration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationModels"},{"name":"Configuration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configurationModels"},{"name":"Configuration","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/applicationinsights"},{"name":"CONFIGURATION_SYNC_STORE_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"ConfigurationCache","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/browser/configurationCache"},{"name":"ConfigurationCache","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/node/configurationCache"},{"name":"ConfigurationChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"ConfigurationChangeEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationModels"},{"name":"ConfigurationEditingError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configurationEditingService"},{"name":"ConfigurationEditingErrorCode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configurationEditingService"},{"name":"ConfigurationEditingService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configurationEditingService"},{"name":"ConfigurationKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensions"},{"name":"ConfigurationManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugConfigurationManager"},{"name":"ConfigurationModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationModels"},{"name":"ConfigurationModelParser","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationModels"},{"name":"ConfigurationResolverService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configurationResolver/browser/configurationResolverService"},{"name":"ConfigurationResolverService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService"},{"name":"ConfigurationScope","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationRegistry"},{"name":"ConfigurationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationService"},{"name":"ConfigurationTarget","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"ConfigurationTarget","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"ConfigurationTarget","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"ConfigurationTargetToString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"configurationTelemetry","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetryUtils"},{"name":"ConfigureAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"ConfigureLanguageBasedSettingsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesActions"},{"name":"ConfigureLocaleAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/localizations/browser/localizationsActions"},{"name":"ConfigureNotificationAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsActions"},{"name":"configureOpenerTrustedDomainsHandler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/url/common/trustedDomains"},{"name":"ConfigureRecommendedExtensionsCommandsContributor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ConfigureRuntimeArgumentsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/developerActions"},{"name":"ConfigureTaskAction","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/browser/abstractTaskService"},{"name":"ConfigureWorkspaceFolderRecommendedExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ConfigureWorkspaceRecommendedExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ConfiguringTask","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"confirm","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"ConfirmResult","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/dialogs/common/dialogs"},{"name":"CONFLICT_RESOLUTION_CONTEXT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler"},{"name":"CONFLICT_RESOLUTION_SCHEME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler"},{"name":"ConflictDetector","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/bulkEdit/browser/conflicts"},{"name":"connect","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"http2"},{"name":"connect","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"net"},{"name":"connect","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tls"},{"name":"connect","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/node/ipc.net"},{"name":"connect","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/driver/node/driver"},{"name":"connected","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"ConnectionGainEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAgentConnection"},{"name":"ConnectionLostEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAgentConnection"},{"name":"ConnectionType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAgentConnection"},{"name":"connectPrimaryMenuToInlineActionBar","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/util"},{"name":"connectProxyResolver","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/node/proxyResolver"},{"name":"connectRemoteAgentExtensionHost","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAgentConnection"},{"name":"connectRemoteAgentManagement","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAgentConnection"},{"name":"connectRemoteAgentTunnel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAgentConnection"},{"name":"CONNREFUSED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"console","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Console","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"ConsoleLogInAutomationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/browser/log"},{"name":"ConsoleLogInMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/log"},{"name":"ConsoleLogMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/log"},{"name":"ConsoleLogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/log"},{"name":"consolidate","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/rangeMap"},{"name":"const","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"constants","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"buffer"},{"name":"constants","kind":"module","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"constants","kind":"module","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"constants","kind":"module","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"http2"},{"name":"constants","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"constants","kind":"module","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"perf_hooks"},{"name":"constants","kind":"module","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"constants","kind":"property","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/constants"},{"name":"Constants","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/uint"},{"name":"Constants","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/jschardet/index"},{"name":"Constants","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/minimap/minimapCharSheet"},{"name":"ConstantSourceNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"consumeReadable","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/stream"},{"name":"consumeReadableWithLimit","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/stream"},{"name":"consumeStream","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/stream"},{"name":"consumeStreamWithLimit","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/stream"},{"name":"contains","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"containsDragType","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/dnd"},{"name":"containsEmoji","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"containsFullWidthCharacter","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"containsRTL","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"containsUppercaseCharacter","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"ContentHoverWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/hover/hoverWidgets"},{"name":"contentTracing","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"ContentViewOverlays","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/view/viewOverlays"},{"name":"ContentWidgetPositionPreference","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorBrowser"},{"name":"ContentWidgetPositionPreference","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"context","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Context","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/parameterHints/provideSignatureHelp"},{"name":"Context","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggest"},{"name":"Context","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/browser/contextKeyService"},{"name":"Context","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Context"},{"name":"CONTEXT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/toolbar/toolbar"},{"name":"CONTEXT_ACCESSIBILITY_MODE_ENABLED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/accessibility/common/accessibility"},{"name":"CONTEXT_ACTIVE_LOG_OUTPUT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/output"},{"name":"CONTEXT_AUTH_TOKEN_STATE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncAuthentication"},{"name":"CONTEXT_BREAKPOINT_SELECTED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_BREAKPOINT_WIDGET_VISIBLE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_BREAKPOINTS_EXIST","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_BREAKPOINTS_FOCUSED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_CALLSTACK_ITEM_TYPE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_CUSTOM_EDITORS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/common/customEditor"},{"name":"CONTEXT_DEBUG_CONFIGURATION_TYPE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_DEBUG_STATE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_DEBUG_TYPE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_DEBUG_UX","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_DEBUG_UX_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_EXPRESSION_SELECTED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_EXTENSION_HOST_PROFILE_RECORDED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor"},{"name":"CONTEXT_FIND_INPUT_FOCUSED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findModel"},{"name":"CONTEXT_FIND_WIDGET_NOT_VISIBLE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findModel"},{"name":"CONTEXT_FIND_WIDGET_VISIBLE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findModel"},{"name":"CONTEXT_FOCUSED_CUSTOM_EDITOR_IS_EDITABLE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/common/customEditor"},{"name":"CONTEXT_FOCUSED_SESSION_IS_ATTACH","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_IN_BREAKPOINT_WIDGET","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_IN_DEBUG_MODE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_IN_DEBUG_REPL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_IN_OUTPUT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/output"},{"name":"CONTEXT_JUMP_TO_CURSOR_SUPPORTED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_KEYBINDING_FOCUS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"CONTEXT_KEYBINDINGS_EDITOR","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"CONTEXT_KEYBINDINGS_SEARCH_FOCUS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"CONTEXT_LOADED_SCRIPTS_ITEM_TYPE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_LOADED_SCRIPTS_SUPPORTED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_MENU_CHANNEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/contextmenu/common/contextmenu"},{"name":"CONTEXT_MENU_CLOSE_CHANNEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/contextmenu/common/contextmenu"},{"name":"CONTEXT_ONTYPE_RENAME_INPUT_VISIBLE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/rename/onTypeRename"},{"name":"CONTEXT_OUTPUT_SCROLL_LOCK","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/output"},{"name":"CONTEXT_PROFILE_SESSION_STATE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor"},{"name":"CONTEXT_RENAME_INPUT_VISIBLE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/rename/renameInputField"},{"name":"CONTEXT_REPLACE_INPUT_FOCUSED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findModel"},{"name":"CONTEXT_RESTART_FRAME_SUPPORTED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_SETTINGS_EDITOR","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"CONTEXT_SETTINGS_JSON_EDITOR","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"CONTEXT_SETTINGS_SEARCH_FOCUS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"CONTEXT_STEP_BACK_SUPPORTED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_SYNC_ENABLEMENT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"CONTEXT_SYNC_STATE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"CONTEXT_TOC_ROW_FOCUS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"CONTEXT_UPDATE_STATE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/update/browser/update"},{"name":"CONTEXT_VARIABLES_FOCUSED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_WATCH_EXPRESSIONS_FOCUSED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"ContextAwareMenuEntryActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/browser/menuEntryActionViewItem"},{"name":"contextBridge","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"ContextKeyAndExpr","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"ContextKeyDefinedExpr","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"ContextKeyEqualsExpr","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"ContextKeyExpr","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"ContextKeyExprType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"ContextKeyFalseExpr","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"ContextKeyNotEqualsExpr","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"ContextKeyNotExpr","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"ContextKeyNotRegexExpr","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"ContextKeyOrExpr","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"ContextKeyRegexExpr","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"ContextKeyService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/browser/contextKeyService"},{"name":"ContextKeyTrueExpr","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"ContextMenuController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/contextmenu/contextmenu"},{"name":"ContextMenuHandler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextview/browser/contextMenuHandler"},{"name":"ContextMenuService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextview/browser/contextMenuService"},{"name":"ContextMenuService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/contextmenu/electron-browser/contextmenuService"},{"name":"ContextScopedFindInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/browser/contextScopedHistoryWidget"},{"name":"ContextScopedHistoryInputBox","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/browser/contextScopedHistoryWidget"},{"name":"ContextScopedReplaceInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/browser/contextScopedHistoryWidget"},{"name":"ContextSubMenu","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/contextmenu"},{"name":"ContextTagKeys","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/ContextTagKeys"},{"name":"ContextTagKeys","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"ContextView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/contextview/contextview"},{"name":"ContextViewService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextview/browser/contextViewService"},{"name":"continue","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"CONTINUE_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"CONTINUE_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"Contracts","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/applicationinsights"},{"name":"contrastBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"ContributableViewsModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/views/views"},{"name":"ContributedCustomEditors","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/common/contributedCustomEditors"},{"name":"ContributedTask","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"convertBufferRangeToViewport","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalLinkHelpers"},{"name":"convertLinkRangeToBuffer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalLinkHelpers"},{"name":"convertSettings","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/themeCompatibility"},{"name":"convertSimple2RegExpPattern","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"convertToDAPaths","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugUtils"},{"name":"convertToVSCPaths","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugUtils"},{"name":"ConvolverNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Cookies","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"CoordinatesConverter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/splitLinesCollection"},{"name":"copy","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"COPY_FILE_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"COPY_PATH_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"COPY_RELATIVE_PATH_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"COPY_STACK_TRACE_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"copyAllCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"CopyAllCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"copyFile","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"COPYFILE_EXCL","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"COPYFILE_FICLONE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"COPYFILE_FICLONE_FORCE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"copyFileHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"copyFileSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"CopyLinesCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/copyLinesCommand"},{"name":"copyMatchCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"CopyMatchCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"CopyNotificationMessageAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsActions"},{"name":"CopyOptions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/textAreaInput"},{"name":"copyPathCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"CopyPathCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"CopyTerminalSelectionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions"},{"name":"CopyValueAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"CopyWebviewEditorCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewCommands"},{"name":"CoreEditingCommands","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/coreCommands"},{"name":"CoreEditorCommand","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/coreCommands"},{"name":"CoreNavigationCommands","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/coreCommands"},{"name":"CorrelationContextManager","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/AutoCollection/CorrelationContextManager"},{"name":"count","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"CountBadge","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/countBadge/countBadge"},{"name":"countEOL","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/tokensStore"},{"name":"Counter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/numbers"},{"name":"CountQueuingStrategy","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"countReset","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"cpus","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"cpuUsage","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"crash","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"crashReporter","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"crashReporterIdStorageKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetry"},{"name":"create","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"domain"},{"name":"create","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/worker/simpleWorker"},{"name":"create","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/editorSimpleWorker"},{"name":"create","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/outputLinkComputer"},{"name":"create","kind":"alias","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/workbench.web.api"},{"name":"create","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"create","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textMate/electron-browser/textMateWorker"},{"name":"createActionViewItem","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/browser/menuEntryActionViewItem"},{"name":"createAndBindHistoryNavigationWidgetScopedContextKeyService","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/browser/contextScopedHistoryWidget"},{"name":"createAndFillInActionBarActions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/browser/menuEntryActionViewItem"},{"name":"createAndFillInContextMenuActions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/browser/menuEntryActionViewItem"},{"name":"createApiFactoryAndRegisterActors","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHost.api.impl"},{"name":"createBreadcrumbsPicker","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbsPicker"},{"name":"createBreakpointDecorations","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/breakpointEditorContribution"},{"name":"createBrotliCompress","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"createBrotliDecompress","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"createCancelablePromise","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"createCellViewModel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel"},{"name":"createChannelReceiver","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/node/ipc"},{"name":"createChannelSender","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/node/ipc"},{"name":"createCipher","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"createCipheriv","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"createConnection","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"net"},{"name":"createContext","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"vm"},{"name":"createCSSRule","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"createCustomTask","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskConfiguration"},{"name":"createDecipher","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"createDecipheriv","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"createDecorationsForStackFrame","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/callStackEditorContribution"},{"name":"createDecorator","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/decorators"},{"name":"createDecorator","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/instantiation/common/instantiation"},{"name":"createDeflate","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"createDeflateRaw","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"createDiffEditor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"createDiffieHellman","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"createDiffNavigator","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"createECDH","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"createEditorFromSearchResult","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions"},{"name":"createEditorPagePosition","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorDom"},{"name":"createElement","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/formattedTextRenderer"},{"name":"createError","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchCommon"},{"name":"createErrorWithActions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errorsWithActions"},{"name":"createExtHostContextProxyIdentifier","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/proxyIdentifier"},{"name":"createFakeScopedLineTokens","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/modesTestUtils"},{"name":"createFastDomNode","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/fastDomNode"},{"name":"createFileEditorInput","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"createFileIconThemableTreeContainerScope","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/views/views"},{"name":"createFileSystemProviderError","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"createFindMatch","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelSearch"},{"name":"createGunzip","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"createGzip","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"createHash","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"createHmac","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"createHook","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"async_hooks"},{"name":"createImageBitmap","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"createInflate","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"createInflateRaw","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"createInterface","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"readline"},{"name":"createKeybinding","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keyCodes"},{"name":"createLineMatcher","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher"},{"name":"createLineStarts","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase"},{"name":"createLineStartsFast","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase"},{"name":"createMainContextProxyIdentifier","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/proxyIdentifier"},{"name":"createMatchers","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/textMateScopeMatcher"},{"name":"createMatches","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"createMemoizer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/decorators"},{"name":"createMessageOfType","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionHostProtocol"},{"name":"createMetaElement","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"createMockBuffer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/model/linesTextBuffer/textBufferAutoTestUtils"},{"name":"createMockSession","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/test/browser/callStack.test"},{"name":"createMockText","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/model/linesTextBuffer/textBufferAutoTestUtils"},{"name":"createModel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"createMonacoBaseAPI","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneBase"},{"name":"createMonacoEditorAPI","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"createMonacoLanguagesAPI","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"createMouseMoveEventMerger","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/mouseHandler"},{"name":"CreateNewLocalTerminalAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/electron-browser/terminalRemote"},{"name":"CreateNewTerminalAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions"},{"name":"createPrivateKey","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"createProxyObject","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"createPublicKey","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"createQueuedSender","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/processes"},{"name":"createReadStream","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"createReadStream","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/io"},{"name":"createRegExp","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"createRequire","kind":"method","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"module"},{"name":"createRequireFromPath","kind":"method","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"module"},{"name":"createResourceExcludeMatcher","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"createRotatingLogger","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/spdlog/index"},{"name":"createRotatingLogger","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/node/spdlogService"},{"name":"createRotatingLoggerAsync","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/spdlog/index"},{"name":"createScanner","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"createScopedLineTokens","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports"},{"name":"createSecretKey","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"createSecureContext","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tls"},{"name":"createSecurePair","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tls"},{"name":"createSecureServer","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"http2"},{"name":"createSerializedGrid","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/grid/grid"},{"name":"createServer","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"http"},{"name":"createServer","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"http2"},{"name":"createServer","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"https"},{"name":"createServer","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"net"},{"name":"createServer","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tls"},{"name":"createSign","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"createSimpleKeybinding","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keyCodes"},{"name":"createSingleEditOp","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/browser/commands/shiftCommand.test"},{"name":"createSingleEditOp","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/browser/commands/trimTrailingWhitespaceCommand.test"},{"name":"createSlowExtensionAction","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensionsSlowActions"},{"name":"createSocket","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dgram"},{"name":"createStringBuilder","kind":"let","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/stringBuilder"},{"name":"createStubInstance","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"createStyleSheet","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"createSuggestItem","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/test/completionModel.test"},{"name":"createSyncDescriptor","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/instantiation/common/descriptors"},{"name":"createTerminalEnvironment","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalEnvironment"},{"name":"createTestCodeEditor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/browser/testCodeEditor"},{"name":"createTextBuffer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModel"},{"name":"createTextBufferFactory","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModel"},{"name":"createTextBufferFactoryFromSnapshot","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModel"},{"name":"createTextBufferFactoryFromStream","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModel"},{"name":"createTextModel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/editorTestUtils"},{"name":"createTextSearchResult","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepSearchUtils"},{"name":"createTOCIterator","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/tocTree"},{"name":"createTokenizationSupport","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchLexer"},{"name":"createTracing","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"trace_events"},{"name":"createUintArray","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase"},{"name":"createUnzip","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"createUpdateURL","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/update/electron-main/abstractUpdateService"},{"name":"createValidator","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesValidation"},{"name":"createVerify","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"createWaitMarkerFile","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/waitMarkerFile"},{"name":"createWebWorker","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/webWorker"},{"name":"createWebWorker","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"createWriteStream","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"Credential","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CredentialsContainer","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Critical","kind":"enum member","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/SeverityLevel"},{"name":"crypto","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Crypto","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CryptoKey","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CryptoKeyPair","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CSS","kind":"module","kindModifiers":"declare","sortText":"4"},{"name":"CSSConditionRule","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"cssEscape","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/getIconClasses"},{"name":"CSSFontFaceRule","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CSSGroupingRule","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CSSImportRule","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CSSKeyframeRule","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CSSKeyframesRule","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CSSMediaRule","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CSSNamespaceRule","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CSSPageRule","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CSSRule","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CSSRuleList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CSSStyleDeclaration","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CSSStyleRule","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CSSStyleSheet","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CSSSupportsRule","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ctxCommentEditorFocused","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/simpleCommentEditor"},{"name":"ctxHasSymbols","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/symbolNavigation"},{"name":"ctxReferenceSearchVisible","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesController"},{"name":"CurrentLineHighlightOverlay","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight"},{"name":"CurrentLineMarginHighlightOverlay","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight"},{"name":"currentSchemaVersion","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/experiments/common/experimentService"},{"name":"currentSessionDateStorageKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetry"},{"name":"Cursor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursor"},{"name":"CursorAtBoundary","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookBrowser"},{"name":"CursorChangeReason","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorEvents"},{"name":"CursorChangeReason","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"CursorCollection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorCollection"},{"name":"CursorColumns","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorCommon"},{"name":"CursorConfiguration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorCommon"},{"name":"CursorContext","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorCommon"},{"name":"CursorModelState","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursor"},{"name":"CursorMove","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorMoveCommands"},{"name":"CursorMoveCommands","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorMoveCommands"},{"name":"CursorPosition","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorMoveOperations"},{"name":"CursorRedo","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/cursorUndo/cursorUndo"},{"name":"CursorState","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorCommon"},{"name":"CursorStateChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursor"},{"name":"cursorStyleToString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"cursorTo","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"readline"},{"name":"CursorUndo","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/cursorUndo/cursorUndo"},{"name":"CursorUndoRedoController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/cursorUndo/cursorUndo"},{"name":"CursorWordAccessibilityLeft","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordAccessibilityLeftSelect","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordAccessibilityRight","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordAccessibilityRightSelect","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordEndLeft","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordEndLeftSelect","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordEndRight","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordEndRightSelect","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordLeft","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordLeftSelect","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordPartLeft","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordPartOperations/wordPartOperations"},{"name":"CursorWordPartLeftSelect","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordPartOperations/wordPartOperations"},{"name":"CursorWordPartRight","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordPartOperations/wordPartOperations"},{"name":"CursorWordPartRightSelect","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordPartOperations/wordPartOperations"},{"name":"CursorWordRight","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordRightSelect","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordStartLeft","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordStartLeftSelect","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordStartRight","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordStartRightSelect","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CustomEditorContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/browser/customEditors"},{"name":"CustomEditorInfo","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/common/customEditor"},{"name":"CustomEditorInfoCollection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/common/customEditor"},{"name":"CustomEditorInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/browser/customEditorInput"},{"name":"CustomEditorInputFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/browser/customEditorInputFactory"},{"name":"CustomEditorModelManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/common/customEditorModelManager"},{"name":"CustomEditorPriority","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/common/customEditor"},{"name":"customEditorsAssociationsSettingId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/browser/editorAssociationsSetting"},{"name":"CustomEditorService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/browser/customEditors"},{"name":"customEditorsExtensionPoint","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/common/extensionPoint"},{"name":"CustomElementRegistry","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"customElements","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CustomEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CustomExecution","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CustomExecution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CustomExecution2","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CustomExecutionDTO","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTask"},{"name":"CUSTOMIZED_TASK_TYPE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"CustomMenubarControl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/titlebar/menubarControl"},{"name":"CustomTask","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"CustomTextEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/common/customTextEditorModel"},{"name":"CustomTreeView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/views/treeView"},{"name":"cutFileHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"CutWebviewEditorCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewCommands"},{"name":"cwd","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/process"},{"name":"cwd","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"DARK","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/themeService"},{"name":"darken","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"DarwinUpdateService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/update/electron-main/updateService.darwin"},{"name":"data","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/test/common/filters.perf.data"},{"name":"Data","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/Data"},{"name":"Data","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"Database","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-sqlite3/index"},{"name":"DataBreakpoint","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"DataBreakpoint","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"DataCue","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DataPoint","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/DataPoint"},{"name":"DataPoint","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"DataPointType","kind":"enum","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/DataPointType"},{"name":"DataPointType","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"DataSource","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesTree"},{"name":"DataSource","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree"},{"name":"DataTransfer","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DataTransferItem","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DataTransferItemList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DataTransfers","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dnd"},{"name":"DataTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/dataTree"},{"name":"DataUri","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"DataView","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Date","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"debounce","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/decorators"},{"name":"debug","kind":"module","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"debug","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"Debug","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/diff/diff"},{"name":"DEBUG_HELPER_SERVICE_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"DEBUG_PANEL_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"DEBUG_SCHEME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"DEBUG_SERVICE_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"DebugAdapterExecutable","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"DebugAdapterExecutable","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"DebugAdapterInlineImplementation","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"DebugAdapterInlineImplementation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"DebugAdapterServer","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"DebugAdapterServer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"DebugConsoleMode","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"DebugConsoleMode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"DebugContentProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugContentProvider"},{"name":"debugExceptionWidgetBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/exceptionWidget"},{"name":"debugExceptionWidgetBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/exceptionWidget"},{"name":"DebugExtensionHostAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor"},{"name":"debugger","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"Debugger","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"Debugger","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugger"},{"name":"debuggersExtPoint","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugSchemas"},{"name":"DebugHoverWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugHover"},{"name":"debugIconContinueForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar"},{"name":"debugIconDisconnectForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar"},{"name":"debugIconPauseForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar"},{"name":"debugIconRestartForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar"},{"name":"debugIconStartForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar"},{"name":"debugIconStepBackForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar"},{"name":"debugIconStepIntoForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar"},{"name":"debugIconStepOutForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar"},{"name":"debugIconStepOverForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar"},{"name":"debugIconStopForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar"},{"name":"debuglog","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"DebugModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"debugPort","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"DebugProgressContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugProgress"},{"name":"DebugService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugService"},{"name":"DebugSession","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugSession"},{"name":"DebugStatusContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugStatus"},{"name":"DebugTaskRunner","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugTaskRunner"},{"name":"DebugToolBar","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar"},{"name":"debugToolBarBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar"},{"name":"debugToolBarBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar"},{"name":"DebugViewPaneContainer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugViewlet"},{"name":"Decipher","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"DeclarationProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"declare","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"decode","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"punycode"},{"name":"decode","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"querystring"},{"name":"decode","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/iconv-lite/lib/index"},{"name":"decodeSemanticTokensDto","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/shared/semanticTokensDto"},{"name":"decodeStream","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/iconv-lite/lib/index"},{"name":"decodeURI","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"decodeURIComponent","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"decodeUTF16LE","kind":"let","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/stringBuilder"},{"name":"decodeUTF8","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"decompress","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/compressedObjectTreeModel"},{"name":"Decoration","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"Decoration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"DecorationRangeBehavior","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"DecorationRangeBehavior","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"DecorationRangeBehavior","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"DecorationRenderOptions","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"DecorationSegment","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/lineDecorations"},{"name":"DecorationsOverlay","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/decorations/decorations"},{"name":"DecorationsOverviewRuler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/overviewRuler/decorationsOverviewRuler"},{"name":"DecorationsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/decorations/browser/decorationsService"},{"name":"DecorationToRender","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/glyphMargin/glyphMargin"},{"name":"DecreaseSearchEditorContextLinesCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"DecreaseViewSizeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"DedupOverlay","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/glyphMargin/glyphMargin"},{"name":"deepClone","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/objects"},{"name":"deepEqual","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"deepFreeze","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/objects"},{"name":"deepStrictEqual","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"default","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"DEFAULT_COMMANDS_TO_SKIP_SHELL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"DEFAULT_CUSTOM_EDITOR","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/browser/editorAssociationsSetting"},{"name":"DEFAULT_ECDH_CURVE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tls"},{"name":"DEFAULT_EDITOR_MAX_DIMENSIONS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editor"},{"name":"DEFAULT_EDITOR_MIN_DIMENSIONS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editor"},{"name":"DEFAULT_EDITOR_PART_OPTIONS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editor"},{"name":"DEFAULT_ENCODING","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"DEFAULT_LABELS_CONTAINER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/labels"},{"name":"DEFAULT_LETTER_SPACING","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"DEFAULT_LINE_HEIGHT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"DEFAULT_LOG_LEVEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/log"},{"name":"DEFAULT_PRODUCT_ICON_THEME_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/browser/productIconThemeData"},{"name":"DEFAULT_PRODUCT_ICON_THEME_SETTING_VALUE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/themeConfiguration"},{"name":"DEFAULT_SETTINGS_EDITOR_SETTING","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferences"},{"name":"DEFAULT_SETTINGS_EDITOR_SETTING","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"DEFAULT_TERMINAL_OSX","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/externalTerminal/node/externalTerminalService"},{"name":"DEFAULT_VALUE","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"DEFAULT_WORD_REGEXP","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/wordHelper"},{"name":"defaultApp","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"defaultBreadcrumbsStyles","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"defaultCipherList","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"defaultClient","kind":"let","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/applicationinsights"},{"name":"DefaultConfigurationExportHelper","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper"},{"name":"DefaultConfigurationModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationModels"},{"name":"defaultCoreCipherList","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"defaultCustomEditor","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/common/contributedCustomEditors"},{"name":"DefaultDeserializer","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"v8"},{"name":"defaultDialogStyles","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"DefaultElementMapper","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/compressedObjectTreeModel"},{"name":"DefaultEndOfLine","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model"},{"name":"DefaultEndOfLine","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"defaultGenerator","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/idGenerator"},{"name":"defaultInsertColor","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"defaultKeybindingsContents","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesModels"},{"name":"DefaultKeybindingsEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesModels"},{"name":"DefaultKeyboardNavigationDelegate","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/listWidget"},{"name":"defaultListStyles","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"defaultMaxListeners","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"stream"},{"name":"defaultMenuStyles","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"DefaultPaneDndController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/splitview/paneview"},{"name":"DefaultPreferencesEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesEditor"},{"name":"DefaultPreferencesEditorInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesEditorInput"},{"name":"defaultQuickAccessContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/quickaccess"},{"name":"defaultQuickAccessContextKeyValue","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/quickaccess"},{"name":"DefaultQuickAccessFilterValue","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/quickinput/common/quickAccess"},{"name":"DefaultRawSettingsEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesModels"},{"name":"DefaultRecommendedExtensionsView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews"},{"name":"defaultRemoveColor","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"DefaultRoleName","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Context"},{"name":"defaultSearchConfig","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorSerialization"},{"name":"DefaultSerializer","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"v8"},{"name":"DefaultSettings","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesModels"},{"name":"DefaultSettingsEditorContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesEditor"},{"name":"DefaultSettingsEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesModels"},{"name":"DefaultSettingsHeaderWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesWidgets"},{"name":"DefaultSettingsRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesRenderers"},{"name":"defaultSettingsSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"defaultStatus","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DefaultStyleController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/listWidget"},{"name":"defaultStyles","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/selectBox/selectBox"},{"name":"DefaultURITransformer","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/uriIpc"},{"name":"defaultWebSocketFactory","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/browser/browserSocketFactory"},{"name":"defaultWindowState","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-main/window"},{"name":"DefaultWorkerFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/worker/defaultWorkerFactory"},{"name":"DeferredPermissionRequest","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DeferredPromise","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/test/common/utils"},{"name":"define","kind":"const","kindModifiers":"declare","sortText":"4"},{"name":"DefineKeybindingController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/keybindingsEditorContribution"},{"name":"DefineKeybindingOverlayWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/keybindingWidgets"},{"name":"DefineKeybindingWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/keybindingWidgets"},{"name":"defineTheme","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"DefinitionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/goToCommands"},{"name":"DefinitionLink","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"DefinitionProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"deflate","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"deflateRaw","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"deflateRawSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"deflateSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"DelayedDragHandler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dnd"},{"name":"DelayedPagedModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/paging"},{"name":"Delayer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"DelayNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Delegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesTree"},{"name":"Delegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsList"},{"name":"DelegatedLogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/log"},{"name":"DelegatingEditorService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/browser/editorService"},{"name":"delete","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"DeleteAllLeftAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"DeleteAllRightAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"DeleteCellEdit","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/cellEdit"},{"name":"deleteFileHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"DeleteLinesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"DeleteOperations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorDeleteOperations"},{"name":"deletePassword","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/keytar/keytar"},{"name":"deletePassword","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/keytar/index"},{"name":"DeleteWordCommand","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"DeleteWordEndLeft","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"DeleteWordEndRight","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"DeleteWordLeft","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"DeleteWordLeftCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"DeleteWordPartLeft","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordPartOperations/wordPartOperations"},{"name":"DeleteWordPartRight","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordPartOperations/wordPartOperations"},{"name":"DeleteWordRight","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"DeleteWordRightCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"DeleteWordStartLeft","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"DeleteWordStartRight","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"delimiter","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"path"},{"name":"delimiter","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"delta","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"DeltaExtensionsResult","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionDescriptionRegistry"},{"name":"departFocus","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"DependsOrder","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"deprecate","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"Deprecated_RemoteAuthorityContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/contextkeys"},{"name":"describe","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"descriptionForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"deserialize","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"v8"},{"name":"deserializeEnvironmentVariableCollection","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariableShared"},{"name":"deserializePipePositions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/test/wordTestUtils"},{"name":"Deserializer","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"v8"},{"name":"deserializeSearchError","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"desktopCapturer","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"DesktopDragAndDropData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/listView"},{"name":"DesktopHostService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/host/electron-browser/desktopHostService"},{"name":"DESTRUCTION","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"detect","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/jschardet/index"},{"name":"detectAvailableShells","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/node/terminal"},{"name":"detectEncodingByBOM","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/test/node/encoding/encoding.test"},{"name":"detectEncodingByBOMFromBuffer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"detectEncodingFromBuffer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"DetectIndentation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentation"},{"name":"detectModeId","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/getIconClasses"},{"name":"DeviceAcceleration","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DeviceLightEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DeviceMotionEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DeviceOrientationEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"devicePixelRatio","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DeviceRotationRate","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DH_CHECK_P_NOT_PRIME","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"DH_CHECK_P_NOT_SAFE_PRIME","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"DH_NOT_SUITABLE_GENERATOR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"DH_UNABLE_TO_CHECK_GENERATOR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"Diagnostic","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"Diagnostic","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"Diagnostic","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"DiagnosticCollection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDiagnostics"},{"name":"DiagnosticRelatedInformation","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"DiagnosticRelatedInformation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"DiagnosticRelatedInformation","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"DiagnosticsChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/diagnostics/node/diagnosticsIpc"},{"name":"DiagnosticSeverity","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"DiagnosticSeverity","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"DiagnosticSeverity","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"DiagnosticsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/diagnostics/node/diagnosticsService"},{"name":"DiagnosticsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/diagnostics/node/diagnosticsIpc"},{"name":"DiagnosticTag","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"DiagnosticTag","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"DiagnosticTag","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"dialog","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"Dialog","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/dialog/dialog"},{"name":"DialogChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/dialogs/electron-browser/dialogIpc"},{"name":"DialogMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/dialogs/electron-main/dialogs"},{"name":"DialogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/dialogs/browser/dialogService"},{"name":"DialogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/dialogs/electron-browser/dialogService"},{"name":"didBindWorkbenchListAutomaticKeyboardNavigation","kind":"let","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"DidChangeContentEmitter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModel"},{"name":"DidChangeDecorationsEmitter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModel"},{"name":"didUseCachedData","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/timer/electron-browser/timerService"},{"name":"diff","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"diff","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/notebookCommon"},{"name":"DiffAPICommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/apiCommands"},{"name":"diffBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"DiffChange","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/diff/diffChange"},{"name":"DiffComputer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/diff/diffComputer"},{"name":"DiffEditorInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor/diffEditorInput"},{"name":"DiffEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor/diffEditorModel"},{"name":"DiffEditorState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorBrowser"},{"name":"DiffEditorWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/widget/diffEditorWidget"},{"name":"DiffieHellman","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"diffInserted","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"diffInsertedOutline","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"DiffNavigator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/widget/diffNavigator"},{"name":"diffRemoved","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"diffRemovedOutline","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"DiffReview","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/widget/diffReview"},{"name":"Dimension","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"dir","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"Dir","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"Direction","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/menu/menu"},{"name":"Direction","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/grid/grid"},{"name":"Direction","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminal"},{"name":"Dirent","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"dirExists","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"dirname","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"path"},{"name":"dirname","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"dirname","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"DirtyDiffController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"DirtyDiffModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"DirtyDiffWorkbenchController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"DirtyEditorContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"DirtyFilesIndicator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/dirtyFilesIndicator"},{"name":"DirtyWorkingCopiesContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"dirxml","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"DisableAllAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"DisableAllBreakpointsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"DisableAllWorkspaceAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"DisableAutoUpdateAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"DISABLED_EXTENSIONS_STORAGE_PATH","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"DisabledExtensionsView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews"},{"name":"DisableDropDownAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"DisableForWorkspaceAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"DisableGloballyAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"disconnect","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"disconnect","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"DISCONNECT_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"DISCONNECT_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"DiskFileSystemProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/diskFileSystemProvider"},{"name":"DiskFileSystemProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/electron-browser/diskFileSystemProvider"},{"name":"DiskSearch","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/searchService"},{"name":"DispatchConfig","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/dispatchConfig"},{"name":"dispatchEvent","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"Disposable","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"Disposable","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/lifecycle"},{"name":"Disposable","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"Disposable","kind":"alias","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/workbench.web.api"},{"name":"DisposableStore","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/lifecycle"},{"name":"disposableTimeout","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"dispose","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/lifecycle"},{"name":"dispose","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/applicationinsights"},{"name":"disposed","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errors"},{"name":"distinct","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"distinct","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/objects"},{"name":"distinctES6","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"distinctParents","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"do","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"doBenchmark","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/model/benchmark/benchmarkUtils"},{"name":"Dock","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"document","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Document","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"documentationExtensionPointDescriptor","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeActions/common/documentationExtensionPoint"},{"name":"DocumentationExtensionPointFields","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeActions/common/documentationExtensionPoint"},{"name":"DocumentFormattingEditProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"DocumentFragment","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DocumentHighlight","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"DocumentHighlight","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"DocumentHighlight","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"DocumentHighlightKind","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"DocumentHighlightKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"DocumentHighlightKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"DocumentHighlightKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"DocumentHighlightProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"DocumentLink","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"DocumentLink","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"DocumentLink","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"DocumentRangeFormattingEditProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"DocumentRangeSemanticTokensAdapter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostLanguageFeatures"},{"name":"DocumentRangeSemanticTokensProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"DocumentSemanticTokensAdapter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostLanguageFeatures"},{"name":"DocumentSemanticTokensProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"DocumentSymbol","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"DocumentSymbol","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"DocumentSymbol","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"DocumentSymbolProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"DocumentTimeline","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DocumentType","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"doesNotReject","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"doesNotThrow","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"domain","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"Domain","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"domain"},{"name":"Domain","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/Domain"},{"name":"Domain","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"domainSupportsProperties","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Constants"},{"name":"domainToASCII","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"url"},{"name":"domainToUnicode","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"url"},{"name":"domContentLoaded","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"DOMError","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"domEvent","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/event"},{"name":"DOMException","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DOMImplementation","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DOMLineBreaksComputerFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/view/domLineBreaksComputer"},{"name":"DOMMatrix","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DOMMatrixReadOnly","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DOMParser","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DOMPoint","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DOMPointReadOnly","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DOMQuad","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DomReadingContext","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/lines/viewLine"},{"name":"DOMRect","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DOMRectList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DOMRectReadOnly","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DomScrollableElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/scrollbar/scrollableElement"},{"name":"DOMSettableTokenList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DOMStringList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DOMStringMap","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DOMTokenList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"doNotTrack","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"dosDateTimeToDate","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/yauzl/index"},{"name":"DOWNLOAD_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"DOWNLOAD_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"DownloadItem","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"DownloadService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/download/common/downloadService"},{"name":"DownloadServiceChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/download/common/downloadIpc"},{"name":"DownloadServiceChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/download/common/downloadIpc"},{"name":"DragAndDropCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/dnd/dragAndDropCommand"},{"name":"DragAndDropController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/dnd/dnd"},{"name":"DragAndDropData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dnd"},{"name":"DragAndDropObserver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/dnd"},{"name":"DragEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DraggedCompositeIdentifier","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/dnd"},{"name":"DraggedEditorGroupIdentifier","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/dnd"},{"name":"DraggedEditorIdentifier","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/dnd"},{"name":"DraggedViewIdentifier","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/dnd"},{"name":"DragMouseEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/mouseEvent"},{"name":"Driver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/driver/electron-main/driver"},{"name":"DriverChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/driver/node/driver"},{"name":"DriverChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/driver/node/driver"},{"name":"Dropdown","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/dropdown/dropdown"},{"name":"DropdownMenu","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/dropdown/dropdown"},{"name":"DropdownMenuActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/dropdown/dropdown"},{"name":"DropDownMenuActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"Duplex","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"stream"},{"name":"DuplicateSelectionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"DuplicateWorkspaceInNewWindowAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/workspaceActions"},{"name":"DynamicsCompressorNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DynamicStandaloneServices","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneServices"},{"name":"DynamicViewOverlay","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/view/dynamicViewOverlay"},{"name":"DynamicWebviewEditorOverlay","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/dynamicWebviewEditorOverlay"},{"name":"DynamicWorkspaceRecommendations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/dynamicWorkspaceRecommendations"},{"name":"E2BIG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EACCES","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EADDRINUSE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EADDRNOTAVAIL","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EAFNOSUPPORT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EAGAIN","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EALREADY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EBADF","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EBADMSG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EBUSY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ECANCELED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ECDH","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"ECHILD","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ECONNABORTED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ECONNREFUSED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ECONNRESET","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EDEADLK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EDESTADDRREQ","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"edit","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/content"},{"name":"EditableConfigurationTarget","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configurationEditingService"},{"name":"EditOperation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/editOperation"},{"name":"EditOperationResult","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorCommon"},{"name":"EditOperationType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorCommon"},{"name":"editor","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/editor.api"},{"name":"EDITOR_BOTTOM_PADDING","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/constants"},{"name":"EDITOR_CONTRIBUTION_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"EDITOR_DRAG_AND_DROP_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"EDITOR_FONT_DEFAULTS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"EDITOR_GROUP_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"EDITOR_GROUP_EMPTY_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"EDITOR_GROUP_FOCUSED_EMPTY_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"EDITOR_GROUP_HEADER_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"EDITOR_GROUP_HEADER_NO_TABS_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"EDITOR_GROUP_HEADER_TABS_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"EDITOR_GROUP_HEADER_TABS_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"EDITOR_MODEL_DEFAULTS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"EDITOR_PANE_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"EDITOR_TITLE_HEIGHT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editor"},{"name":"EDITOR_TOOLBAR_HEIGHT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/constants"},{"name":"EDITOR_TOP_MARGIN","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/constants"},{"name":"EDITOR_TOP_PADDING","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/constants"},{"name":"EditorAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorExtensions"},{"name":"EditorActivation","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/editor/common/editor"},{"name":"editorActiveIndentGuides","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"editorActiveLineNumber","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"editorActiveLinkForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"EditorAreaVisibleContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"editorAssociationsConfigurationNode","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/browser/editorAssociationsSetting"},{"name":"EditorAutoIndentStrategy","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"EditorAutoIndentStrategy","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"EditorAutoSave","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorAutoSave"},{"name":"editorBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorBracketMatchBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"editorBracketMatchBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"EditorBreadcrumbsModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbsModel"},{"name":"editorCodeLensForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"EditorCommand","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorExtensions"},{"name":"EditorCommandsContextActionRunner","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"editorConfiguration","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeActions/common/codeActionsContribution"},{"name":"editorConfigurationBaseNode","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/commonEditorConfig"},{"name":"EditorContextKeys","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/editorContextKeys"},{"name":"EditorControl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorControl"},{"name":"editorCursorBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"editorCursorForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"EditorDescriptor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/editor"},{"name":"EditorDropTarget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorDropTarget"},{"name":"editorErrorBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorErrorForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"EditorExtensionsRegistry","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorExtensions"},{"name":"editorFindMatch","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorFindMatchBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorFindMatchHighlight","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorFindMatchHighlightBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorFindRangeHighlight","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorFindRangeHighlightBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"EditorFontLigatures","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"editorForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"EditorGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor/editorGroup"},{"name":"EditorGroupActiveEditorDirtyContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"EditorGroupEditorsCountContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"editorGroupToViewColumn","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/shared/editor"},{"name":"EditorGroupView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorGroupView"},{"name":"editorGutter","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"editorGutterAddedBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"editorGutterDeletedBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"editorGutterModifiedBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"editorHintBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorHintForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorHoverBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorHoverBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorHoverForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorHoverHighlight","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorHoverStatusBarBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorInactiveSelection","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorIndentGuides","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"editorInfoBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorInfoForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"EditorInput","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"EditorKeybindingCancellationTokenSource","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/core/keybindingCancellation"},{"name":"EditorLayoutInfoComputer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"EditorLayoutSingleAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"EditorLayoutThreeColumnsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"EditorLayoutThreeRowsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"EditorLayoutTwoByTwoGridAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"EditorLayoutTwoColumnsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"EditorLayoutTwoColumnsBottomAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"EditorLayoutTwoRowsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"EditorLayoutTwoRowsRightAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"editorLightBulbAutoFixForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorLightBulbForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorLineHighlight","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"editorLineHighlightBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"editorLineNumbers","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"editorMarkerNavigationBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoError/gotoErrorWidget"},{"name":"editorMarkerNavigationError","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoError/gotoErrorWidget"},{"name":"editorMarkerNavigationInfo","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoError/gotoErrorWidget"},{"name":"editorMarkerNavigationWarning","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoError/gotoErrorWidget"},{"name":"editorMatchesToTextSearchResults","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/searchHelpers"},{"name":"EditorMemento","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/baseEditor"},{"name":"EditorModeContext","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/widget/codeEditorWidget"},{"name":"EditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"EditorModesRegistry","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/modesRegistry"},{"name":"EditorMouseEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorDom"},{"name":"EditorMouseEventFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorDom"},{"name":"EditorOpenContext","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/editor/common/editor"},{"name":"EditorOption","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"EditorOption","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"EditorOptions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"EditorOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"editorOptionsRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"editorOverviewRulerBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"EditorPagePosition","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorDom"},{"name":"EditorPart","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorPart"},{"name":"EditorPinnedContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"EditorPointerEventFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorDom"},{"name":"EditorProgressIndicator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/progress/browser/progressIndicator"},{"name":"editorRangeHighlight","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"editorRangeHighlightBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"editorRuler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"EditorScopedQuickInputServiceImpl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/quickInput/standaloneQuickInputServiceImpl"},{"name":"EditorScroll_","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/coreCommands"},{"name":"EditorScrollbar","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/editorScrollbar/editorScrollbar"},{"name":"editorSelectionBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorSelectionForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorSelectionHighlight","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorSelectionHighlightBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"EditorService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/browser/editorService"},{"name":"EditorSimpleWorker","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/editorSimpleWorker"},{"name":"EditorsObserver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorsObserver"},{"name":"EditorsOrder","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"EditorState","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/core/editorState"},{"name":"EditorStateCancellationTokenSource","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/core/editorState"},{"name":"EditorStatus","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorStatus"},{"name":"editorSuggestWidgetBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestWidget"},{"name":"editorSuggestWidgetBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestWidget"},{"name":"editorSuggestWidgetForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestWidget"},{"name":"editorSuggestWidgetHighlightForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestWidget"},{"name":"editorSuggestWidgetSelectedBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestWidget"},{"name":"EditorsVisibleContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"editorSymbolHighlight","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"editorSymbolHighlightBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"EditorTheme","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewContext"},{"name":"EditorType","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/editorCommon"},{"name":"editorUnnecessaryCodeBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"editorUnnecessaryCodeOpacity","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"EditorWalkThroughAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/editor/editorWalkThrough"},{"name":"EditorWalkThroughInputFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/editor/editorWalkThrough"},{"name":"editorWarningBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorWarningForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"EditorWhitespace","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/linesLayout"},{"name":"editorWhitespaces","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"editorWidgetBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorWidgetBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorWidgetForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorWidgetResizeBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"EditorWorkerClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/editorWorkerServiceImpl"},{"name":"EditorWorkerHost","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/editorWorkerServiceImpl"},{"name":"EditorWorkerServiceImpl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/editorWorkerServiceImpl"},{"name":"EditorZoom","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorZoom"},{"name":"EditPreferenceWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesWidgets"},{"name":"EditStack","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/editStack"},{"name":"EDOM","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EEXIST","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EFAULT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EFBIG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EHOSTUNREACH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EIDRM","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EILSEQ","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EINPROGRESS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EINTR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EINVAL","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EIO","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EISCONN","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EISDIR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"electron","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"Electron","kind":"module","kindModifiers":"declare","sortText":"4"},{"name":"ElectronAcceleratorLabelProvider","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keybindingLabels"},{"name":"ElectronMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/electron/electron-main/electronMainService"},{"name":"ElectronService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/electron/electron-browser/electronService"},{"name":"ElectronURLListener","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/url/electron-main/electronUrlListener"},{"name":"ElectronWebviewBasedWebview","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewElement"},{"name":"ElectronWebviewService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewService"},{"name":"Element","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ElementsDragAndDropData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/listView"},{"name":"ElementSizeObserver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/config/elementSizeObserver"},{"name":"ELOOP","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"else","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"EmbeddedCodeEditorWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/widget/embeddedCodeEditorWidget"},{"name":"EmbeddedDiffEditorWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/widget/embeddedCodeEditorWidget"},{"name":"embeddedEditorBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughPart"},{"name":"EMFILE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"emit","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"emit","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"emitKeypressEvents","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"readline"},{"name":"Emitter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/event"},{"name":"Emitter","kind":"alias","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/workbench.web.api"},{"name":"Emitter","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/editor.api"},{"name":"emitWarning","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"EMLINK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EmmetEditorAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/emmet/browser/emmetActions"},{"name":"empty","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchCommon"},{"name":"EmptyExtension","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostExtensionActivator"},{"name":"EmptyPane","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/scmViewlet"},{"name":"EmptyPaneDescriptor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/scmViewlet"},{"name":"emptyProgressRunner","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/progress/common/progress"},{"name":"EmptyView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/emptyView"},{"name":"EMSGSIZE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EnableAllAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"EnableAllBreakpointsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"EnableAllWorkspaceAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"EnableAutoUpdateAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ENABLED_EXTENSIONS_STORAGE_PATH","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"enableDebug","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/jschardet/index"},{"name":"EnabledExtensionsView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews"},{"name":"EnableDropDownAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"EnableForWorkspaceAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"EnableGloballyAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"Enablement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"EnablementState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagement"},{"name":"enablePromiseAPIs","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"ENAMETOOLONG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"encode","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"punycode"},{"name":"encode","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"querystring"},{"name":"encode","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/iconv-lite/lib/index"},{"name":"EncodedTokenizationSupport2Adapter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"encodeSemanticTokensDto","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/shared/semanticTokensDto"},{"name":"encodeStream","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/iconv-lite/lib/index"},{"name":"encodeStream","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"encodeURI","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"encodeURIComponent","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"encodeUTF8","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"encodingExists","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/iconv-lite/lib/index"},{"name":"encodingExists","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"EncodingMode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"EncodingOracle","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/electron-browser/nativeTextFileService"},{"name":"endianness","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"EndOfLine","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"EndOfLine","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"EndOfLine","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"EndOfLinePreference","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model"},{"name":"EndOfLinePreference","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"EndOfLineSequence","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model"},{"name":"EndOfLineSequence","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"endsWith","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"ENETDOWN","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENETRESET","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENETUNREACH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENFILE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"Engine","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/fileSearch"},{"name":"ENGINE_METHOD_ALL","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENGINE_METHOD_CIPHERS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENGINE_METHOD_DH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENGINE_METHOD_DIGESTS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENGINE_METHOD_DSA","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENGINE_METHOD_ECDH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENGINE_METHOD_ECDSA","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENGINE_METHOD_NONE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENGINE_METHOD_PKEY_ASN1_METHS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENGINE_METHOD_PKEY_METHS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENGINE_METHOD_RAND","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENGINE_METHOD_RSA","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENGINE_METHOD_STORE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOBUFS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENODATA","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENODEV","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOENT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOEXEC","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOLCK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOLINK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOMEM","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOMSG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOPROTOOPT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOSPC","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOSR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOSTR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOSYS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOTCONN","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOTDIR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOTEMPTY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOTSOCK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOTSUP","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOTTY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ensureFileSystemProviderError","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"ensureValidWordDefinition","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/wordHelper"},{"name":"Entry","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/yauzl/index"},{"name":"enum","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"env","kind":"module","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"env","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/process"},{"name":"env","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"ENV_azurePrefix","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Config"},{"name":"ENV_http_proxy","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Config"},{"name":"ENV_https_proxy","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Config"},{"name":"ENV_iKey","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Config"},{"name":"ENV_profileQueryEndpoint","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Config"},{"name":"Envelope","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/Envelope"},{"name":"Envelope","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"EnvironmentService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/environmentService"},{"name":"EnvironmentVariableCollection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTerminalService"},{"name":"EnvironmentVariableMutatorType","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"EnvironmentVariableMutatorType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariable"},{"name":"EnvironmentVariableMutatorType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"EnvironmentVariableService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariableService"},{"name":"ENXIO","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EOF","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"EOL","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"EOPNOTSUPP","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EOVERFLOW","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EPERM","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EPIPE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EPROTO","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EPROTONOSUPPORT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EPROTOTYPE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"eq","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"equal","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"equals","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"equals","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/objects"},{"name":"equalsIgnoreCase","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"ERANGE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EROFS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"error","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"Error","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Error","kind":"enum member","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/SeverityLevel"},{"name":"ErrorEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ErrorEvent","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/errorTelemetry"},{"name":"errorForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"errorHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errors"},{"name":"ErrorHandler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errors"},{"name":"ErrorScope","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"ErrorTelemetry","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/browser/errorTelemetry"},{"name":"ErrorTelemetry","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/node/errorTelemetry"},{"name":"escape","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"escape","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"querystring"},{"name":"escape","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"escapeCodicons","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/codicons"},{"name":"escapeNonWindowsPath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalEnvironment"},{"name":"escapeRegExpCharacters","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"ESPIPE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ESRCH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"etag","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"ETAG_DISABLED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"ETIME","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ETIMEDOUT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ETXTBSY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"eval","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"EvalError","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"EvaluatableExpression","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"EvaluatableExpression","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"EvaluatableExpression","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"EvaluatableExpressionProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"event","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Event","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Event","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/event"},{"name":"Event","kind":"alias","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/workbench.web.api"},{"name":"EventBufferer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/event"},{"name":"EventData","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/EventData"},{"name":"EventData","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"EventEmitter","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"EventEmitter","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"events"},{"name":"EventHelper","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"EventMultiplexer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/event"},{"name":"eventNames","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"eventNames","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"EventSource","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"EventTarget","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"EventType","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"EventType","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/touch"},{"name":"EWOULDBLOCK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"exception","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"ExceptionBreakpoint","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"ExceptionData","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/ExceptionData"},{"name":"ExceptionData","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"ExceptionDetails","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/ExceptionDetails"},{"name":"ExceptionDetails","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"ExceptionWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/exceptionWidget"},{"name":"ExcludePatternInputWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/patternInputWidget"},{"name":"ExcludeSettingWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"EXDEV","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ExeBasedRecommendations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/exeBasedRecommendations"},{"name":"exec","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"child_process"},{"name":"exec","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/sudo-prompt/index"},{"name":"execArgv","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"execFile","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"child_process"},{"name":"execFileSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"child_process"},{"name":"execPath","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"execSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"child_process"},{"name":"ExecutableDebugAdapter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/node/debugAdapter"},{"name":"ExecuteCellAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookActions"},{"name":"ExecuteCommandAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/common/actions"},{"name":"ExecuteCommandAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"executionAsyncId","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"async_hooks"},{"name":"ExecutionEngine","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"ExecutionEngine","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskConfiguration"},{"name":"exists","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"exists","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"existsSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"exit","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/native-watchdog/index"},{"name":"exit","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"exitCode","kind":"property","kindModifiers":"declare,optional","sortText":"5","hasAction":true,"source":"process"},{"name":"EXPAND_NOTIFICATION","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"ExpandAllAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"ExpandNotificationAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsActions"},{"name":"expectation","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"ExperimentActionType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/experiments/common/experimentService"},{"name":"experimental","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/electron-browser/colorRegistry.releaseTest"},{"name":"ExperimentalPrompts","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/experiments/browser/experimentalPrompt"},{"name":"ExperimentalRecommendations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/experimentalRecommendations"},{"name":"ExperimentService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/experiments/common/experimentService"},{"name":"ExperimentState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/experiments/common/experimentService"},{"name":"ExplorerCompressedFirstFocusContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"ExplorerCompressedFocusContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"ExplorerCompressedLastFocusContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"ExplorerCompressionDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer"},{"name":"ExplorerDataSource","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer"},{"name":"ExplorerDecorationsProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/explorerDecorationsProvider"},{"name":"ExplorerDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer"},{"name":"ExplorerFocusCondition","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"ExplorerFocusedContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"ExplorerFolderContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"ExplorerItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/explorerModel"},{"name":"ExplorerModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/explorerModel"},{"name":"ExplorerResourceCut","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"ExplorerResourceMoveableToTrash","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"ExplorerResourceNotReadonlyContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"ExplorerResourceReadonlyContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"ExplorerRootContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"explorerRootErrorEmitter","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer"},{"name":"ExplorerService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/explorerService"},{"name":"ExplorerView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/explorerView"},{"name":"ExplorerViewletViewsContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/explorerViewlet"},{"name":"ExplorerViewletVisibleContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"ExplorerViewPaneContainer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/explorerViewlet"},{"name":"export","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"exportEntries","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/performance"},{"name":"exports","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Expression","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"ExpressionContainer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"EXT_HOST_CREATION_DELAY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"extends","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"EXTENSION_BADGE_REMOTE_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"EXTENSION_BADGE_REMOTE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"EXTENSION_IDENTIFIER_PATTERN","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"EXTENSION_IDENTIFIER_REGEX","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"EXTENSION_SETTING_TAG","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"ExtensionAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ExtensionActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ExtensionActivationProgress","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActivationProgress"},{"name":"ExtensionActivationTimes","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostExtensionActivator"},{"name":"ExtensionActivationTimesBuilder","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostExtensionActivator"},{"name":"extensionButtonProminentBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"extensionButtonProminentForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"extensionButtonProminentHoverBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ExtensionContainers","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensions"},{"name":"ExtensionData","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/workbenchThemeService"},{"name":"ExtensionData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewer"},{"name":"ExtensionDependencyChecker","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsDependencyChecker"},{"name":"ExtensionDescriptionRegistry","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionDescriptionRegistry"},{"name":"ExtensionDropDownAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ExtensionEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionEditor"},{"name":"ExtensionEditorDropDownAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ExtensionEnablementService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensionManagement/common/extensionEnablementService"},{"name":"ExtensionGalleryService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionGalleryService"},{"name":"ExtensionHostDebugBroadcastChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/debug/common/extensionHostDebugIpc"},{"name":"ExtensionHostDebugChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/debug/common/extensionHostDebugIpc"},{"name":"ExtensionHostDebugService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/electron-browser/extensionHostDebugService"},{"name":"ExtensionHostLogFileName","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensions"},{"name":"ExtensionHostMain","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionHostMain"},{"name":"ExtensionHostPersistentConnection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAgentConnection"},{"name":"ExtensionHostProcessManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionHostProcessManager"},{"name":"ExtensionHostProcessWorker","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/electron-browser/extensionHost"},{"name":"ExtensionHostProfiler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/electron-browser/extensionHostProfiler"},{"name":"ExtensionHostProfileService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensionProfileService"},{"name":"ExtensionIdentifier","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensions/common/extensions"},{"name":"ExtensionIdentifierWithVersion","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagementUtil"},{"name":"ExtensionKind","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"ExtensionKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"ExtensionManagementChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagementIpc"},{"name":"ExtensionManagementChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagementIpc"},{"name":"ExtensionManagementError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/node/extensionManagementService"},{"name":"ExtensionManagementServerService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementServerService"},{"name":"ExtensionManagementServerService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensionManagement/electron-browser/extensionManagementServerService"},{"name":"ExtensionManagementService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementService"},{"name":"ExtensionManagementService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/node/extensionManagementService"},{"name":"ExtensionManagementService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensionManagement/node/extensionManagementService"},{"name":"ExtensionMemento","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostMemento"},{"name":"ExtensionMessageCollector","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionsRegistry"},{"name":"ExtensionPackCountWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets"},{"name":"ExtensionPoint","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionsRegistry"},{"name":"ExtensionPointContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensions"},{"name":"ExtensionPoints","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/extensionHost.contribution"},{"name":"ExtensionPoints","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper.contribution"},{"name":"ExtensionPointUserDelta","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionsRegistry"},{"name":"ExtensionRecommendationReason","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagement"},{"name":"ExtensionRecommendations","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendations"},{"name":"ExtensionRecommendationsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationsService"},{"name":"ExtensionRegistryReporter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher"},{"name":"ExtensionRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewer"},{"name":"ExtensionResourceLoaderService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensionResourceLoader/electron-browser/extensionResourceLoaderService"},{"name":"extensionResultIsMatch","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/textSearchManager"},{"name":"extensionResultIsMatch","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/electron-browser/api/extHostSearch.test"},{"name":"extensions","kind":"module","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/jsonschemas/common/jsonContributionRegistry"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/themeService"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationRegistry"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/keybinding/common/keybindingsRegistry"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/quickinput/common/quickAccess"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/modesRegistry"},{"name":"Extensions","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/contributions"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"Extensions","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/views"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/output/common/output"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/actions"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/viewlet"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/panel"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/editor"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/iconRegistry"},{"name":"EXTENSIONS_CONFIG","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensions"},{"name":"ExtensionsActivator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostExtensionActivator"},{"name":"ExtensionsAutoProfiler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensionsAutoProfiler"},{"name":"ExtensionScanner","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/node/extensionPoints"},{"name":"ExtensionScannerInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/node/extensionPoints"},{"name":"ExtensionsChannelId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"ExtensionsConfigurationInitialContent","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensionsFileTemplate"},{"name":"ExtensionsConfigurationSchema","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensionsFileTemplate"},{"name":"ExtensionsConfigurationSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensionsFileTemplate"},{"name":"ExtensionScriptApis","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ExtensionService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/browser/extensionService"},{"name":"ExtensionService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/electron-browser/extensionService"},{"name":"ExtensionsGridView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewer"},{"name":"ExtensionsInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensionsInput"},{"name":"ExtensionsLabel","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"ExtensionsLifecycle","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/node/extensionLifecycle"},{"name":"ExtensionsListView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews"},{"name":"ExtensionsManifestCache","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/node/extensionsManifestCache"},{"name":"ExtensionsRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionsRegistry"},{"name":"ExtensionsRegistryImpl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionsRegistry"},{"name":"ExtensionsSynchroniser","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/extensionsSync"},{"name":"ExtensionState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensions"},{"name":"ExtensionStoragePaths","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/node/extHostStoragePaths"},{"name":"ExtensionsTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewer"},{"name":"ExtensionsViewletViewsContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewlet"},{"name":"ExtensionsViewPaneContainer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewlet"},{"name":"ExtensionsWorkbenchService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService"},{"name":"ExtensionTipsChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagementIpc"},{"name":"ExtensionTipsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/node/extensionTipsService"},{"name":"ExtensionToolTipAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ExtensionType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensions/common/extensions"},{"name":"ExtensionWidget","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets"},{"name":"external","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"External","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ExternalElementsDragAndDropData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/listView"},{"name":"ExternalThemeTrieElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/tokenization"},{"name":"ExternalUriResolverContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/url/common/externalUriResolver"},{"name":"ExtHostApiCommands","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostApiCommands"},{"name":"ExtHostApiDeprecationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostApiDeprecationService"},{"name":"ExtHostAuthentication","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostAuthentication"},{"name":"ExtHostCell","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostNotebook"},{"name":"ExtHostClipboard","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostClipboard"},{"name":"ExtHostCommands","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostCommands"},{"name":"ExtHostComments","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostComments"},{"name":"ExtHostCommentThread","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostComments"},{"name":"ExtHostConfigProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostConfiguration"},{"name":"ExtHostConfiguration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostConfiguration"},{"name":"ExtHostContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHost.protocol"},{"name":"extHostCustomer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostCustomers"},{"name":"ExtHostCustomersRegistry","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostCustomers"},{"name":"ExtHostDebugConsole","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDebugService"},{"name":"ExtHostDebugService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/node/extHostDebugService"},{"name":"ExtHostDebugServiceBase","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDebugService"},{"name":"ExtHostDebugSession","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDebugService"},{"name":"ExtHostDecorations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDecorations"},{"name":"ExtHostDiagnostics","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDiagnostics"},{"name":"ExtHostDialogs","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDialogs"},{"name":"ExtHostDocumentContentProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDocumentContentProviders"},{"name":"ExtHostDocumentData","kind":"alias","kindModifiers":"","sortText":"0"},{"name":"ExtHostDocumentLine","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDocumentData"},{"name":"ExtHostDocuments","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDocuments"},{"name":"ExtHostDocumentsAndEditors","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDocumentsAndEditors"},{"name":"ExtHostDocumentSaveParticipant","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDocumentSaveParticipant"},{"name":"ExtHostDownloadService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/node/extHostDownloadService"},{"name":"ExtHostEditorInsets","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostCodeInsets"},{"name":"ExtHostEditors","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTextEditors"},{"name":"ExtHostExtensionService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/node/extHostExtensionService"},{"name":"ExtHostExtensionService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/worker/extHostExtensionService"},{"name":"ExtHostFileSystem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostFileSystem"},{"name":"ExtHostFileSystemEventService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostFileSystemEventService"},{"name":"ExtHostLabelService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostLabelService"},{"name":"ExtHostLanguageFeatures","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostLanguageFeatures"},{"name":"ExtHostLanguages","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostLanguages"},{"name":"extHostLogChannelId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/logs/common/logConstants"},{"name":"ExtHostLogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/node/extHostLogService"},{"name":"ExtHostLogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/worker/extHostLogService"},{"name":"ExtHostMessageService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostMessageService"},{"name":"extHostNamedCustomer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostCustomers"},{"name":"ExtHostNotebookController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostNotebook"},{"name":"ExtHostNotebookDocument","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostNotebook"},{"name":"ExtHostNotebookEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostNotebook"},{"name":"ExtHostNotebookOutputRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostNotebook"},{"name":"ExtHostOutputChannelBackedByFile","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/node/extHostOutputService"},{"name":"ExtHostOutputService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostOutput"},{"name":"ExtHostOutputService2","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/node/extHostOutputService"},{"name":"ExtHostProgress","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostProgress"},{"name":"ExtHostPseudoterminal","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTerminalService"},{"name":"ExtHostPushOutputChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostOutput"},{"name":"ExtHostQuickOpen","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostQuickOpen"},{"name":"ExtHostRpcService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostRpcService"},{"name":"ExtHostSCM","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostSCM"},{"name":"ExtHostSCMInputBox","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostSCM"},{"name":"ExtHostSearch","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostSearch"},{"name":"ExtHostStatusBar","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostStatusBar"},{"name":"ExtHostStatusBarEntry","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostStatusBar"},{"name":"ExtHostStorage","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostStorage"},{"name":"ExtHostTask","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/node/extHostTask"},{"name":"ExtHostTaskBase","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTask"},{"name":"ExtHostTerminal","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTerminalService"},{"name":"ExtHostTerminalService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/node/extHostTerminalService"},{"name":"ExtHostTextEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTextEditor"},{"name":"ExtHostTextEditorOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTextEditor"},{"name":"ExtHostTheming","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTheming"},{"name":"ExtHostTimeline","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTimeline"},{"name":"ExtHostTreeViews","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTreeViews"},{"name":"ExtHostTunnelService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTunnelService"},{"name":"ExtHostTunnelService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/node/extHostTunnelService"},{"name":"ExtHostUrls","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostUrls"},{"name":"ExtHostVariableResolverService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDebugService"},{"name":"ExtHostWebview","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostWebview"},{"name":"ExtHostWebviewEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostWebview"},{"name":"ExtHostWebviews","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostWebview"},{"name":"ExtHostWindow","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostWindow"},{"name":"ExtHostWorkspace","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostWorkspace"},{"name":"extname","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"path"},{"name":"extname","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"extname","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"extract","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/zip"},{"name":"ExtractError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/zip"},{"name":"extractLocalHostUriMetaDataForPortMapping","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/tunnel"},{"name":"extractRangeFromFilter","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/search"},{"name":"extractResources","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/dnd"},{"name":"extractSearchQueryFromLines","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorSerialization"},{"name":"extractSearchQueryFromModel","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorSerialization"},{"name":"F_OK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"fail","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"FailedExtension","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostExtensionActivator"},{"name":"fakeServer","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"fakeServerWithClock","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"FakeXMLHttpRequest","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"FALLBACK_MAX_MEMORY_SIZE_MB","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/files"},{"name":"false","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"FastDomNode","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/fastDomNode"},{"name":"fchmod","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"fchmodSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"fchown","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"fchownSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"fdatasync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"fdatasyncSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"features","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"FeedbackDropdown","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/feedback/browser/feedback"},{"name":"FeedbackStatusbarConribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/feedback/browser/feedbackStatusbarItem"},{"name":"fetch","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"FetchFileSystemProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/browser/webWorkerFileSystemProvider"},{"name":"File","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"FILE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"FILE_EDITOR_INPUT_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"FileBasedRecommendations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/fileBasedRecommendations"},{"name":"FileChangesEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"FileChangeType","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"FileChangeType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"FileChangeType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"FileChangeType","kind":"alias","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/workbench.web.api"},{"name":"FileCopiedContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"FileDialogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/dialogs/browser/fileDialogService"},{"name":"FileDialogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/dialogs/electron-browser/fileDialogService"},{"name":"FileDragAndDrop","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer"},{"name":"FileEditorInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/editors/fileEditorInput"},{"name":"FileElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbsModel"},{"name":"FileElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree"},{"name":"FileElementRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree"},{"name":"fileExists","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"FileFocusKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"FileIconThemeData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/browser/fileIconThemeData"},{"name":"FileKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"FileList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"FileLocationKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher"},{"name":"FileLoggerService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/fileLogService"},{"name":"FileLogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/fileLogService"},{"name":"FileMatch","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"FileMatch","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/searchModel"},{"name":"FileMatchOrFolderMatchFocusKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"FileMatchOrFolderMatchWithResourceFocusKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"FileMatchOrMatchFocusKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"FileMatchRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchResultsView"},{"name":"FileOperation","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"FileOperationError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"FileOperationEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"FileOperationResult","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"FilePreview","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/referencesModel"},{"name":"FileQueryCacheState","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/cacheState"},{"name":"FileReader","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"FileReferences","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/referencesModel"},{"name":"FileReferencesRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesTree"},{"name":"FileResourceMarkersRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersTreeViewer"},{"name":"FILES_ASSOCIATIONS_CONFIG","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"FILES_EXCLUDE_CONFIG","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"FilesConfigurationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/filesConfiguration/common/filesConfigurationService"},{"name":"FileSearchManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/fileSearchManager"},{"name":"FileService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/fileService"},{"name":"FilesExplorerFocusCondition","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"FilesExplorerFocusedContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"FilesFilter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer"},{"name":"FileSorter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbsPicker"},{"name":"FileSorter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer"},{"name":"FilesRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer"},{"name":"FileStorage","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/state/node/stateService"},{"name":"FileStorageDatabase","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/storage/browser/storageService"},{"name":"FileSystemError","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"FileSystemError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"FileSystemProviderCapabilities","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"FileSystemProviderCapabilities","kind":"alias","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/workbench.web.api"},{"name":"FileSystemProviderError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"FileSystemProviderErrorCode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"FileThemeIcon","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/themeService"},{"name":"FileType","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"FileType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"fileURLToPath","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"url"},{"name":"FileUserDataProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/userData/common/fileUserDataProvider"},{"name":"FileWalker","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/fileSearch"},{"name":"FileWatcher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/watcher/unix/watcherService"},{"name":"FileWatcher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/watcher/win32/watcherService"},{"name":"FileWatcher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/watcher/nsfw/watcherService"},{"name":"FileWatcher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/watcher/nodejs/watcherService"},{"name":"fillResourceDataTransfers","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/dnd"},{"name":"Filter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersTreeViewer"},{"name":"FilteredMatchesRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesRenderers"},{"name":"FilterOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersFilterOptions"},{"name":"filtersAction","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/types"},{"name":"filterValidationDecorations","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"FilterViewPaneContainer","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/views/viewsViewlet"},{"name":"finalHandler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"finally","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"FinalNewLineParticipant","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/saveParticipants"},{"name":"find","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"FIND_IDS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findModel"},{"name":"findBestWindowOrFolderForFile","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/node/window"},{"name":"FindController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"findCredentials","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/keytar/keytar"},{"name":"findCredentials","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/keytar/index"},{"name":"FindDecorations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findDecorations"},{"name":"findExecutable","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/node/terminalEnvironment"},{"name":"findExpressionInStackFrame","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugHover"},{"name":"findFirstInSorted","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"findFreePort","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/ports"},{"name":"findFreePortFaster","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/ports"},{"name":"FindInFilesActionId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"FindInFilesCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"FindInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/findinput/findInput"},{"name":"FindMatch","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model"},{"name":"findMatchingThemeRule","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textMate/common/TMHelper"},{"name":"FindModelBoundToEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findModel"},{"name":"findNodeAtLocation","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"findNodeAtOffset","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"FindOptionOverride","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findState"},{"name":"FindOptionsWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findOptionsWidget"},{"name":"FindOrReplaceInFilesAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"findParentWithClass","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"findPassword","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/keytar/keytar"},{"name":"findPassword","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/keytar/index"},{"name":"FindReplaceState","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findState"},{"name":"findRules","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchCommon"},{"name":"FindStartFocusAction","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"findValidPasteFileTarget","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"FindWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findWidget"},{"name":"FindWidgetViewZone","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findWidget"},{"name":"findWindowOnExtensionDevelopmentPath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/node/window"},{"name":"findWindowOnWorkspace","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/node/window"},{"name":"findWindowOnWorkspaceOrFolderUri","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/node/window"},{"name":"finished","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"stream"},{"name":"fips","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"first","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"first","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"first","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/collections"},{"name":"FIRST_COMPRESSED_FOLDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"firstIndex","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"FirstMatchFocusKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"firstNonWhitespaceIndex","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"firstOrDefault","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"firstSessionDateStorageKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetry"},{"name":"FixAllAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionCommands"},{"name":"fixAllCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeAction"},{"name":"fixCase","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchCommon"},{"name":"fixDriveC","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepFileSearch"},{"name":"fixInsert","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase"},{"name":"fixNewline","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepTextSearchEngine"},{"name":"fixPath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/test/browser/queryBuilder.test"},{"name":"fixRegexNewline","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepTextSearchEngine"},{"name":"flatten","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"Float32Array","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Float64Array","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"FloatingClickWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorWidgets"},{"name":"focus","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"FOCUS_FIRST_NOTIFICATION_TOAST","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"FOCUS_LAST_NOTIFICATION_TOAST","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"FOCUS_NEXT_NOTIFICATION_TOAST","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"FOCUS_NOTIFICATION_TOAST","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"FOCUS_PREVIOUS_NOTIFICATION_TOAST","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"FOCUS_REPL_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"FocusAboveGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"FocusActiveEditorCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"FocusActiveGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"FocusBelowGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"focusBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"focusedCellIndicator","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor"},{"name":"FocusedViewContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/views"},{"name":"FocusEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"FocusFilesExplorer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"FocusFirstGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"FocusLastGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"FocusLeftGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"FocusNavigationEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"FocusNextGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"FocusNextInputAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"FocusNextSearchResultAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"FocusPreviousGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"FocusPreviousInputAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"FocusPreviousSearchResultAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"FocusQueryEditorWidgetAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions"},{"name":"FocusQueryEditorWidgetCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"FocusRightGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"FocusSearchFromResults","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"focusSearchListCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"FocusSearchListCommandID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"FocusSessionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"FocusSessionActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActionViewItems"},{"name":"foldBackgroundBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/folding"},{"name":"FOLDER_CONFIG_FOLDER_NAME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"FOLDER_SCOPES","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"FOLDER_SETTINGS_NAME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"FOLDER_SETTINGS_PATH","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"FOLDER_SETTINGS_PATH","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferences"},{"name":"FolderConfiguration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/browser/configuration"},{"name":"FolderFocusKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"FolderMatch","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/searchModel"},{"name":"FolderMatchRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchResultsView"},{"name":"FolderMatchWithResource","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/searchModel"},{"name":"FolderSettingsActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesWidgets"},{"name":"FolderSettingsRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesRenderers"},{"name":"folderSettingsSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"foldersToIncludeGlobs","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepFileSearch"},{"name":"foldersToRgExcludeGlobs","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepFileSearch"},{"name":"FolderThemeIcon","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/themeService"},{"name":"FoldingController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/folding"},{"name":"FoldingDecorationProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/foldingDecorations"},{"name":"FoldingModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/foldingModel"},{"name":"FoldingRange","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"FoldingRange","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"FoldingRange","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"FoldingRangeKind","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"FoldingRangeKind","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"FoldingRangeKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"FoldingRangeKind","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"FoldingRangeProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"FoldingRegion","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/foldingRanges"},{"name":"FoldingRegions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/foldingRanges"},{"name":"FollowerLogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/logIpc"},{"name":"FontInfo","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/fontInfo"},{"name":"FontStyle","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"fontStylePattern","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry"},{"name":"for","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"forEach","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/collections"},{"name":"foreground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"ForeignElementType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/viewLineRenderer"},{"name":"fork","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"child_process"},{"name":"fork","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"format","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"path"},{"name":"format","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"url"},{"name":"format","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"format","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"format","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"format","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/jsonFormatter"},{"name":"format","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"formatDocumentRangeWithProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/format/format"},{"name":"formatDocumentRangeWithSelectedProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/format/format"},{"name":"formatDocumentWithProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/format/format"},{"name":"formatDocumentWithSelectedProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/format/format"},{"name":"formatOptions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/argv"},{"name":"formatPII","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugUtils"},{"name":"FormatString","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetParser"},{"name":"FormattingConflicts","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/format/format"},{"name":"FormattingEdit","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/format/formattingEdit"},{"name":"FormattingMode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/format/format"},{"name":"formatWithOptions","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"FormData","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"FORMERR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"forwardedPortsViewEnabled","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/remote/browser/tunnelView"},{"name":"frameElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"frames","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"FrankensteinMode","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/abstractMode"},{"name":"freemem","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"fromBuffer","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/yauzl/index"},{"name":"fromFd","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/yauzl/index"},{"name":"fromMap","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/collections"},{"name":"fromNow","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/date"},{"name":"fromRandomAccessReader","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/yauzl/index"},{"name":"fromRangeOrRangeWithMessage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"fstat","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"fstatSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"FSWatcher","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/chokidar/types/index"},{"name":"fsync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"fsyncSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"ftruncate","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"ftruncateSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"function","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"Function","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"FunctionBreakpoint","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"FunctionBreakpoint","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"FunctionBreakpoint","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"futimes","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"futimesSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"fuzzyContains","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"fuzzyScore","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"FuzzyScore","kind":"type","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"fuzzyScoreGraceful","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"fuzzyScoreGracefulAggressive","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"GainNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Gamepad","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"GamepadButton","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"GamepadEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"GamepadHapticActuator","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"GamepadPose","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"generateIndent","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentUtils"},{"name":"generateKeyPair","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"generateKeyPairSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"generateRandomChunkWithLF","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/model/linesTextBuffer/textBufferAutoTestUtils"},{"name":"generateRandomEdits","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/model/linesTextBuffer/textBufferAutoTestUtils"},{"name":"generateRandomPipeName","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/node/ipc.net"},{"name":"generateRandomReplaces","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/model/linesTextBuffer/textBufferAutoTestUtils"},{"name":"generateSequentialInserts","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/model/linesTextBuffer/textBufferAutoTestUtils"},{"name":"generateTokensCSSForColorMap","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/tokenization"},{"name":"generateUuid","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/uuid"},{"name":"Gesture","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/touch"},{"name":"get","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"http"},{"name":"get","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"https"},{"name":"getAbsoluteGlob","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepFileSearch"},{"name":"getActiveEditor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentsEditorContribution"},{"name":"getActiveNotebookEditor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookActions"},{"name":"getActiveTextEditorOptions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editor"},{"name":"getActiveWebviewEditor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewCommands"},{"name":"getAllMethodNames","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"getAllPropertyNames","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"getAppDataPath","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/paths"},{"name":"getBaseLabel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/labels"},{"name":"getBasenameTerms","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/glob"},{"name":"getBlinkMemoryInfo","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"getBreakpointMessageAndClassName","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/breakpointsView"},{"name":"getCharContainingOffset","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"getCharIndex","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/minimap/minimapCharSheet"},{"name":"getCiphers","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"getCiphers","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tls"},{"name":"getClientArea","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"getCodeActions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeAction"},{"name":"getCodeEditor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorBrowser"},{"name":"getCodeForKeyCode","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/keyboardEvent"},{"name":"getCodeLensData","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codelens/codelens"},{"name":"getColorPresentations","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/colorPicker/color"},{"name":"getColorRegistry","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"getColors","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/colorPicker/color"},{"name":"getComparisonKey","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"getComputedStyle","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"getComputedStyle","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"getConfigurationKeys","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"getConfigurationValue","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"getContentHeight","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"getContentWidth","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"getContext","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/explorerView"},{"name":"getContext","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/callStackView"},{"name":"getContextForContributedActions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/callStackView"},{"name":"getContextMenuActions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"getCorrelationContext","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/applicationinsights"},{"name":"getCPUUsage","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"getCreationTime","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"getCurrentActivationRecord","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/experiments/common/experimentService"},{"name":"getCurrentKeyboardLayout","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/native-keymap/index"},{"name":"getCurves","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"getCwd","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalEnvironment"},{"name":"getDeclarationsAtPosition","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/goToSymbol"},{"name":"getDefaultIgnoredSettings","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"getDefaultSettings","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"http2"},{"name":"getDefaultShell","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalEnvironment"},{"name":"getDefaultShellArgs","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalEnvironment"},{"name":"getDefaultUserDataPath","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/paths"},{"name":"getDefaultValue","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationRegistry"},{"name":"getDefaultValues","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"getDefinitionsAtPosition","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/goToSymbol"},{"name":"getDelayedChannel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc"},{"name":"getDiffieHellman","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"getDisallowedIgnoredSettings","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"getDispatchConfig","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/dispatchConfig"},{"name":"getDocumentFormattingEditsUntilResult","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/format/format"},{"name":"getDocumentRangeFormattingEditsUntilResult","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/format/format"},{"name":"getDocumentSymbols","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/documentSymbols"},{"name":"getDomainsOfRemotes","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tags/electron-browser/workspaceTags"},{"name":"getDomNodePagePosition","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"getDuration","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/performance"},{"name":"getEditOperation","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/browser/testCommand"},{"name":"getEditorPartOptions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editor"},{"name":"getegid","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"getElementsByTagName","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"getEmptyExpression","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/glob"},{"name":"getEnabledCategories","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"trace_events"},{"name":"getEncodedLanguageId","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"getEntries","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/performance"},{"name":"getEntry","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/performance"},{"name":"getEOL","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/jsonFormatter"},{"name":"getErrorMessage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errors"},{"name":"geteuid","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"getExactExpressionStartAndEnd","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugUtils"},{"name":"getExcludes","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"getExpandedBodySize","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/breakpointsView"},{"name":"getExtensionHostDebugSession","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugUtils"},{"name":"getExtensionKind","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionsUtil"},{"name":"getExtensions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewer"},{"name":"getExtraColor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughUtils"},{"name":"getFileNamesMessage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/dialogs/common/dialogs"},{"name":"getFirstFrame","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/console"},{"name":"getGalleryExtensionId","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagementUtil"},{"name":"getGalleryExtensionTelemetryData","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagementUtil"},{"name":"getgid","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"getGraphemeBreakType","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"getgroups","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"getHashedRemotesFromConfig","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tags/electron-browser/workspaceTags"},{"name":"getHashes","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"getHeapCodeStatistics","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"v8"},{"name":"getHeapSnapshot","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"v8"},{"name":"getHeapSpaceStatistics","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"v8"},{"name":"getHeapStatistics","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"v8"},{"name":"getHeapStatistics","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"getHover","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/hover/getHover"},{"name":"getIconClass","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/quickinput/browser/quickInputUtils"},{"name":"getIconClasses","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/getIconClasses"},{"name":"getIconRegistry","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/iconRegistry"},{"name":"getIdAndVersion","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/node/cliProcessMain"},{"name":"getIgnoredSettings","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/settingsMerge"},{"name":"getImplementationsAtPosition","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/goToSymbol"},{"name":"getInstalledExtensions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensionsUtils"},{"name":"getInvalidTypeError","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesValidation"},{"name":"getIOCounters","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"getIssueReporterStyles","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/issue/electron-browser/issueService"},{"name":"getKeyboardLayoutId","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/keymapInfo"},{"name":"getKeyMap","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/native-keymap/index"},{"name":"getLangEnvVariable","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalEnvironment"},{"name":"getLanguages","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"getLargestChildWidth","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"getLastActiveWindow","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/node/window"},{"name":"getLeadingWhitespace","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"getLineEndOffset","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/content"},{"name":"getLineStartOffset","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/content"},{"name":"getLinks","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/links/getLinks"},{"name":"getLocalExtensionTelemetryData","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagementUtil"},{"name":"getLocation","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"getLogLevel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/log"},{"name":"getMac","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/macAddress"},{"name":"getMachineId","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/id"},{"name":"getMachineInfo","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/diagnostics/node/diagnosticsService"},{"name":"getMainProcessParentEnv","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/node/terminalEnvironment"},{"name":"getMaliciousExtensionsSet","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagementUtil"},{"name":"getManifest","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/node/extensionManagementUtil"},{"name":"getMapForWordSeparators","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/wordCharacterClassifier"},{"name":"getMatchedCSSRules","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"getMaxListeners","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"getMaxListeners","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"getMediaMime","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/mime"},{"name":"getMenuBarVisibility","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/common/windows"},{"name":"getMigratedSettingValue","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"getModel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"getModelMarkers","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"getModels","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"getMultiSelectedEditorContexts","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"getMultiSelectedResources","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/files"},{"name":"getNextCodePoint","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"getNextTickChannel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc"},{"name":"getNLines","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"getNLSConfiguration","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/languagePacks"},{"name":"getNodeColor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/intervalTree"},{"name":"getNodeIsInOverviewRuler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/intervalTree"},{"name":"getNodePath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"getNodeType","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"getNodeValue","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"getNonWhitespacePrefix","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/snippets/browser/snippetsService"},{"name":"getOccurrencesAtPosition","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordHighlighter/wordHighlighter"},{"name":"getOnTypeFormattingEdits","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/format/format"},{"name":"getOnTypeRenameRanges","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/rename/onTypeRename"},{"name":"getOpenEditorsViewMultiSelection","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/files"},{"name":"getOrDefault","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/objects"},{"name":"getOrMakeSearchEditorInput","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorInput"},{"name":"getOrSet","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/map"},{"name":"getOuterEditor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"getOutOfWorkspaceEditorResources","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/search"},{"name":"getOutputSimpleEditorOptions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform"},{"name":"getPackedSettings","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"http2"},{"name":"getParseErrorMessage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/jsonErrorMessages"},{"name":"getPassword","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/keytar/keytar"},{"name":"getPassword","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/keytar/index"},{"name":"getPathFromAmdModule","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/amd"},{"name":"getPathLabel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/labels"},{"name":"getPathTerms","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/glob"},{"name":"getPixelRatio","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"getPlatformTextDecoder","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/stringBuilder"},{"name":"getPriority","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"getProcessCpuUsage","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/windows-process-tree/index"},{"name":"getProcessList","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/windows-process-tree/index"},{"name":"getProcessMemoryInfo","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"getProcessTree","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/windows-process-tree/index"},{"name":"getProxyAgent","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/request/node/proxy"},{"name":"getQuickNavigateHandler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/quickaccess"},{"name":"getRandomElement","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"getRandomEOLSequence","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/model/linesTextBuffer/textBufferAutoTestUtils"},{"name":"getRandomInt","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/model/linesTextBuffer/textBufferAutoTestUtils"},{"name":"getRandomString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/model/linesTextBuffer/textBufferAutoTestUtils"},{"name":"getRandomTestPath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/test/node/testUtils"},{"name":"getRealAndSyntheticDocumentFormattersOrdered","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/format/format"},{"name":"getReferencesAtPosition","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/goToSymbol"},{"name":"getReindentEditOperations","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentation"},{"name":"getRelativeLocation","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/grid/grid"},{"name":"getRemoteAuthority","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteHosts"},{"name":"getRemoteName","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteHosts"},{"name":"getRemotes","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tags/electron-browser/workspaceTags"},{"name":"getResizesObserver","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/sizeObserver"},{"name":"getResource","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher"},{"name":"getResourceForCommand","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/files"},{"name":"getRoot","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/extpath"},{"name":"getSCMResourceContextKey","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/menus"},{"name":"getScopes","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationRegistry"},{"name":"getSearchView","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"getSelection","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"getSelectionKeyboardEvent","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"getSelectionSearchString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"getServers","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"getServiceMachineId","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/serviceMachineId/common/serviceMachineId"},{"name":"getSettingsTargetName","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferences"},{"name":"getShadowRoot","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"getShellEnvironment","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/node/shellEnv"},{"name":"getSimpleCodeEditorWidgetOptions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/simpleEditorOptions"},{"name":"getSimpleEditorOptions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/simpleEditorOptions"},{"name":"getSimpleWorkspaceLabel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/label/common/label"},{"name":"getSingletonServiceDescriptors","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/instantiation/common/extensions"},{"name":"getSnippetSuggestSupport","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggest"},{"name":"getSpaceCnt","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentUtils"},{"name":"getStackFrameThreadAndSessionToFocus","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugService"},{"name":"getStateLabel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"getStdinFilePath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/stdin"},{"name":"getStoredWorkspaceFolder","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"getStringIdentifierForProxy","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/proxyIdentifier"},{"name":"GetStringRegKey","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/vscode-windows-registry/index"},{"name":"getSuggestionComparator","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggest"},{"name":"getSyncResourceFromLocalPreview","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"getSystemMemoryInfo","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"getSystemShell","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/node/terminal"},{"name":"getSystemVersion","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"getTemplates","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskTemplates"},{"name":"getTerminalShellConfiguration","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalConfiguration"},{"name":"getThemeTypeSelector","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/themeService"},{"name":"getTimeSinceLastZoomLevelChanged","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"getTitleBarStyle","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/common/windows"},{"name":"getTokenClassificationRegistry","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry"},{"name":"getTopLeftOffset","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"getTotalHeight","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"getTotalScrollWidth","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"getTotalWidth","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"getTypeDefinitionsAtPosition","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/goToSymbol"},{"name":"getuid","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"getUnpackedSettings","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"http2"},{"name":"getUri","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/test/browser/queryBuilder.test"},{"name":"getUriFromAmdModule","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/amd"},{"name":"getUriFromSource","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugSource"},{"name":"getUserDataSyncStore","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"getVisbileViewContextKey","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/views"},{"name":"getVisibleAndSorted","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugUtils"},{"name":"getVisibleState","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/indexTreeModel"},{"name":"getWebviewContentMimeType","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/common/mimeTypes"},{"name":"getWellFormedFileName","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"getWindowsBuildNumber","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/node/terminal"},{"name":"getWindowsShell","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/processes"},{"name":"getWindowsStateStoreData","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/electron-main/windowsStateStorage"},{"name":"getWordAtText","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/wordHelper"},{"name":"getWordDefinitionFor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDocumentData"},{"name":"getWorkerBootstrapUrl","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/worker/defaultWorkerFactory"},{"name":"getWorkspaceIdentifier","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/workspaces/browser/workspaces"},{"name":"getWorkspaceIdentifier","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/electron-main/workspacesMainService"},{"name":"getWorkspaceIdentifier","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/test/electron-browser/configurationService.test"},{"name":"getWorkspaceSymbols","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/search"},{"name":"getXtermLineContent","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalLinkHelpers"},{"name":"getZoomFactor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"getZoomLevel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"global","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"GLOBAL_ACTIVITY_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/activity"},{"name":"GlobalActivityActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/activitybar/activitybarActions"},{"name":"globalAgent","kind":"let","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"http"},{"name":"globalAgent","kind":"let","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"https"},{"name":"GlobalCompareResourcesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"GlobalEditorMouseMoveMonitor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorDom"},{"name":"GlobalExtensionEnablementService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionEnablementService"},{"name":"globalGlob","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/test/browser/queryBuilder.test"},{"name":"GlobalMouseMoveMonitor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/globalMouseMoveMonitor"},{"name":"GlobalNewUntitledFileAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"GlobalRemoveRootFolderAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/workspaceActions"},{"name":"globals","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"globalShortcut","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"GlobalStateSynchroniser","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/globalStateSync"},{"name":"GlobalStorageDatabaseChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/storage/node/storageIpc"},{"name":"GlobalStorageDatabaseChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/storage/node/storageIpc"},{"name":"GlobalStyleSheet","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/services/codeEditorServiceImpl"},{"name":"globalThis","kind":"module","kindModifiers":"","sortText":"4"},{"name":"GlobPattern","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"GlyphHoverWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/hover/hoverWidgets"},{"name":"GlyphMarginOverlay","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/glyphMargin/glyphMargin"},{"name":"GOTO_NEXT_CHANGE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"GOTO_PREVIOUS_CHANGE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"GotoDefinitionAtPositionEditorContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition"},{"name":"GotoLineAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoLineQuickAccess"},{"name":"GotoLineAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess"},{"name":"GotoLineAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/quickAccess/standaloneGotoSymbolQuickAccess"},{"name":"GotoLineAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/quickAccess/standaloneCommandsQuickAccess"},{"name":"GoToLineNLS","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standaloneStrings"},{"name":"GotoLineQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoLineQuickAccess"},{"name":"GotoSymbolAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess"},{"name":"GotoSymbolQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess"},{"name":"gracefulify","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/graceful-fs/index"},{"name":"grammarsExtPoint","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textMate/common/TMGrammars"},{"name":"Graph","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/instantiation/common/graph"},{"name":"GraphemeBreakType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"Grid","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/grid/grid"},{"name":"GridView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/grid/gridview"},{"name":"GridViewSizing","kind":"alias","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/grid/grid"},{"name":"group","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"groupBy","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"groupBy","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/collections"},{"name":"groupByExtension","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagementUtil"},{"name":"GroupChangeKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/common/editorGroupsService"},{"name":"groupCollapsed","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"GroupDirection","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/common/editorGroupsService"},{"name":"groupEnd","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"groupIntersect","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/rangeMap"},{"name":"GroupLocation","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/common/editorGroupsService"},{"name":"GroupOrientation","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/common/editorGroupsService"},{"name":"GroupsArrangement","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/common/editorGroupsService"},{"name":"GroupsOrder","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/common/editorGroupsService"},{"name":"GroupType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"gt","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"gte","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"gtr","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"guessIndentation","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/indentationGuesser"},{"name":"guessMimeTypes","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/mime"},{"name":"gunzip","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"gunzipSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"gzip","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"gzipSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"handleANSIOutput","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/output/transforms/errorTransform"},{"name":"handleANSIOutput","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugANSIHandling"},{"name":"Handler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/editorCommon"},{"name":"handleVetos","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/lifecycle/common/lifecycle"},{"name":"hang","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"hasChildProcesses","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/node/terminals"},{"name":"hasClass","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"hasFileFolderCopyCapability","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"hasFileReadStreamCapability","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"hash","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/hash"},{"name":"Hash","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"HashChangeEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Hasher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/hash"},{"name":"hashPath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/backup/node/backupFileService"},{"name":"hasOpenReadWriteCloseCapability","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"hasParentWithClass","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"hasReadWriteCapability","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"HasSearchResults","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"hasSiblingFn","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/glob"},{"name":"hasSiblingPromiseFn","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/glob"},{"name":"hasStdinWithoutTty","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/stdin"},{"name":"hasTextDecoder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/stringBuilder"},{"name":"hasToIgnoreCase","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"hasTrailingPathSeparator","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"hasUncaughtExceptionCaptureCallback","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"hasWorkspaceFileExtension","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"hc_black","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/themes"},{"name":"HC_THEME_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/workbenchThemeService"},{"name":"Headers","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HelpQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/quickinput/browser/helpQuickAccess"},{"name":"HiddenAreasRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesRenderers"},{"name":"HiddenRangeModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/hiddenRangeModel"},{"name":"hide","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"HIDE_NOTIFICATION_TOAST","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"HIDE_NOTIFICATIONS_CENTER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"HideNotificationsCenterAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsActions"},{"name":"HideWebViewEditorFindCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewCommands"},{"name":"HideWelcomeOverlayAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/overlay/browser/welcomeOverlay"},{"name":"HIGH_CONTRAST","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/themeService"},{"name":"HighlightedLabel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/highlightedlabel/highlightedLabel"},{"name":"HighlightMatchesRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesRenderers"},{"name":"history","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"History","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HistoryInputBox","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/inputbox/inputBox"},{"name":"HistoryNavigationEnablementContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/browser/contextScopedHistoryWidget"},{"name":"HistoryNavigationWidgetContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/browser/contextScopedHistoryWidget"},{"name":"HistoryNavigator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/history"},{"name":"HistoryService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/history/browser/history"},{"name":"HitTestContext","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/mouseTarget"},{"name":"HIVES","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"HKCC","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"HKCR","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"HKCU","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"HKLM","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"HKU","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"Hmac","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"homedir","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"HorizontalPosition","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/renderingContext"},{"name":"HorizontalRange","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/renderingContext"},{"name":"HorizontalScrollbar","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/scrollbar/horizontalScrollbar"},{"name":"horizontalScrollingKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"HostExtension","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostExtensionActivator"},{"name":"hostname","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"HotExitConfiguration","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"Hover","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"Hover","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"Hover","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"HoverOperation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/hover/hoverOperation"},{"name":"HoverProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"HoverStartMode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/hover/hoverOperation"},{"name":"hrtime","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"HSLA","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/color"},{"name":"HSVA","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/color"},{"name":"HTMLAllCollection","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLAnchorElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLAppletElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLAreaElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLAudioElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLBaseElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLBaseFontElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLBodyElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLBRElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLButtonElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLCanvasElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLCollection","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLDataElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLDataListElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLDetailsElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLDialogElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLDirectoryElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLDivElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLDListElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLDocument","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLEmbedElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLFieldSetElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLFontElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLFormControlsCollection","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLFormElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLFrameElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLFrameSetElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLHeadElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLHeadingElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLHRElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLHtmlElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLIFrameElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLImageElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLInputElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLLabelElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLLegendElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLLIElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLLinkElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLMapElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLMarqueeElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLMediaElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLMenuElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLMetaElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLMeterElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLModElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLObjectElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLOListElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLOptGroupElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLOptionElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLOptionsCollection","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLOutputElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLParagraphElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLParamElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLPictureElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLPreElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLProgressElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLQuoteElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLScriptElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLSelectElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLSlotElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLSourceElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLSpanElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLStyleElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLTableCaptionElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLTableCellElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLTableColElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLTableDataCellElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLTableElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLTableHeaderCellElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLTableRowElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLTableSectionElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLTemplateElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLTextAreaElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLTimeElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLTitleElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLTrackElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLUListElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLUnknownElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLVideoElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Http2ServerRequest","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"http2"},{"name":"Http2ServerResponse","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"http2"},{"name":"HttpProxyAgent","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/http-proxy-agent/index"},{"name":"IAccessibilityService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/accessibility/common/accessibility"},{"name":"IActivityBarService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/activityBar/browser/activityBarService"},{"name":"IActivityService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/activity/common/activity"},{"name":"IAuthenticationService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/authentication/browser/authenticationService"},{"name":"IUserDataSyncAccountService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSyncAccount"},{"name":"IBackupFileService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/backup/common/backup"},{"name":"IBackupMainService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/backup/electron-main/backup"},{"name":"IBreadcrumbsService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbs"},{"name":"IBulkEditService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/services/bulkEditService"},{"name":"ICACLS_PATH","kind":"property","kindModifiers":"private,static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Sender"},{"name":"IClipboardService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/clipboard/common/clipboardService"},{"name":"ICodeEditorService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/services/codeEditorService"},{"name":"ICodeLensCache","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codelens/codeLensCache"},{"name":"ICommandService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/commands/common/commands"},{"name":"ICommentService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentService"},{"name":"IconBadge","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/activity/common/activity"},{"name":"IConfigurationResolverService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configurationResolver/common/configurationResolver"},{"name":"IConfigurationService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"iconForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"IconLabel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/iconLabel/iconLabel"},{"name":"iconsSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/iconRegistry"},{"name":"IContextKeyService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"IContextMenuService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextview/browser/contextView"},{"name":"IContextViewService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextview/browser/contextView"},{"name":"ICredentialsService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/credentials/common/credentials"},{"name":"ICredentialsService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/credentials/common/credentials"},{"name":"ICustomEditorService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/common/customEditor"},{"name":"ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentsEditorContribution"},{"name":"ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/driver/common/driver"},{"name":"ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/diagnostics/node/diagnosticsService"},{"name":"ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/launch/electron-main/launchMainService"},{"name":"ID_EDITOR_WORKER_SERVICE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/editorWorkerService"},{"name":"ID_INDENT_PROVIDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/indentRangeProvider"},{"name":"ID_INIT_PROVIDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/intializingRangeProvider"},{"name":"ID_SYNTAX_PROVIDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/syntaxRangeProvider"},{"name":"IDBCursor","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IDBCursorWithValue","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IDBDatabase","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IDBFactory","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IDBIndex","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IDBKeyRange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IDBObjectStore","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IDBOpenDBRequest","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IDBRequest","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IDBTransaction","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IDBVersionChangeEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IDebugHelperService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"IDebugService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"IDecorationsService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/decorations/browser/decorations"},{"name":"IdentityCoordinatesConverter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/splitLinesCollection"},{"name":"IdentityLinesCollection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/splitLinesCollection"},{"name":"IdentityProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesTree"},{"name":"IdentityProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree"},{"name":"IdGenerator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/idGenerator"},{"name":"IDiagnosticsService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/diagnostics/node/diagnosticsService"},{"name":"IDialogMainService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/dialogs/electron-main/dialogs"},{"name":"IDialogService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/dialogs/common/dialogs"},{"name":"IdleValue","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"IdObject","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHost.protocol"},{"name":"IDownloadService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/download/common/download"},{"name":"idPattern","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry"},{"name":"IDriver","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/driver/common/driver"},{"name":"IEditorGroupsService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/common/editorGroupsService"},{"name":"IEditorProgressService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/progress/common/progress"},{"name":"IEditorService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/common/editorService"},{"name":"IEditorWorkerService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/editorWorkerService"},{"name":"IElectronMainService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/electron/electron-main/electronMainService"},{"name":"IElectronService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/electron/node/electron"},{"name":"IEnvironmentService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/common/environment"},{"name":"IEnvironmentVariableService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariable"},{"name":"IExperimentService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/experiments/common/experimentService"},{"name":"IExplorerService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"IExtensionGalleryService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"IExtensionHostDebugService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/debug/common/extensionHostDebug"},{"name":"IExtensionHostProfileService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor"},{"name":"IExtensionManagementServerService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagement"},{"name":"IExtensionManagementService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"IExtensionRecommendationsService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagement"},{"name":"IExtensionResourceLoaderService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader"},{"name":"IExtensionService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensions"},{"name":"IExtensionStoragePaths","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostStoragePaths"},{"name":"IExtensionsWorkbenchService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensions"},{"name":"IExtensionTipsService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"IExtensionUrlHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/browser/extensionUrlHandler"},{"name":"IExternalTerminalService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/externalTerminal/common/externalTerminal"},{"name":"IExtHostApiDeprecationService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostApiDeprecationService"},{"name":"IExtHostCommands","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostCommands"},{"name":"IExtHostConfiguration","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostConfiguration"},{"name":"IExtHostDebugService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDebugService"},{"name":"IExtHostDecorations","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDecorations"},{"name":"IExtHostDocumentsAndEditors","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDocumentsAndEditors"},{"name":"IExtHostExtensionService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostExtensionService"},{"name":"IExtHostInitDataService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostInitDataService"},{"name":"IExtHostOutputService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostOutput"},{"name":"IExtHostRpcService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostRpcService"},{"name":"IExtHostSearch","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostSearch"},{"name":"IExtHostStorage","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostStorage"},{"name":"IExtHostTask","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTask"},{"name":"IExtHostTerminalService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTerminalService"},{"name":"IExtHostTimeline","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTimeline"},{"name":"IExtHostTunnelService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTunnelService"},{"name":"IExtHostWorkspace","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostWorkspace"},{"name":"if","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"ifError","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"IFileDialogService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/dialogs/common/dialogs"},{"name":"IFilesConfigurationService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/filesConfiguration/common/filesConfigurationService"},{"name":"IFileService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"IframeUtils","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/iframe"},{"name":"IFrameWebview","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewElement"},{"name":"IGlobalExtensionEnablementService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"ignoreBracketsInToken","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports"},{"name":"ignoreErrors","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"IgnoreExtensionRecommendationAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"IHistoryService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/history/common/history"},{"name":"IHostService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/host/browser/host"},{"name":"IHostUtils","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostExtensionService"},{"name":"IInstantiationService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/instantiation/common/instantiation"},{"name":"IIntegrityService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/integrity/common/integrity"},{"name":"IIRFilterNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IIssueService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/issue/node/issue"},{"name":"IJSONEditingService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/jsonEditing"},{"name":"IKeybindingEditingService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/keybindingEditing"},{"name":"IKeybindingService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/keybinding/common/keybinding"},{"name":"IKeymapService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/keymapInfo"},{"name":"ILabelService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/label/common/label"},{"name":"ILaunchMainService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/launch/electron-main/launchMainService"},{"name":"ILayoutService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/layout/browser/layoutService"},{"name":"ILifecycleMainService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/lifecycle/electron-main/lifecycleMainService"},{"name":"ILifecycleService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/lifecycle/common/lifecycle"},{"name":"IListService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"illegalArgument","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errors"},{"name":"illegalState","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errors"},{"name":"ILocalizationsService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/localizations/common/localizations"},{"name":"ILoggerService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/log"},{"name":"ILogService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/log"},{"name":"Image","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IMAGE_PREVIEW_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"ImageBitmap","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ImageBitmapRenderingContext","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ImageData","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IMainProcessService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/ipc/electron-browser/mainProcessService"},{"name":"IMarkerData","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/markers/common/markers"},{"name":"IMarkerDecorationsService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/markersDecorationService"},{"name":"IMarkerService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/markers/common/markers"},{"name":"IMarkersWorkbenchService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markers"},{"name":"IMenubarService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/menubar/node/menubar"},{"name":"IMenuService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/common/actions"},{"name":"ImmortalReference","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/lifecycle"},{"name":"IMMUTABLE_CODE_TO_KEY_CODE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/scanCode"},{"name":"IMMUTABLE_KEY_CODE_TO_CODE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/scanCode"},{"name":"IModelService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/modelService"},{"name":"IModeService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/modeService"},{"name":"impactsEditorPartOptions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editor"},{"name":"ImplementationProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"implements","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"import","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"importEntries","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/performance"},{"name":"importScripts","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"in","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"inAppPurchase","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"inc","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"IncomingMessage","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"http"},{"name":"IncomingMessage","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"IncreaseSearchEditorContextLinesCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"IncreaseViewSizeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"incrementFileName","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"IndentAction","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"IndentAction","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/languageConfiguration"},{"name":"IndentAction","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"IndentationToSpacesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentation"},{"name":"IndentationToSpacesCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentation"},{"name":"IndentationToTabsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentation"},{"name":"IndentationToTabsCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentation"},{"name":"IndentConsts","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/indentRules"},{"name":"IndentGuidesOverlay","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/indentGuides/indentGuides"},{"name":"IndentLinesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"IndentRangeProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/indentRangeProvider"},{"name":"IndentRulesSupport","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/indentRules"},{"name":"IndentUsingSpaces","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentation"},{"name":"IndentUsingTabs","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentation"},{"name":"index","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"indexedDB","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"INDEXEDDB_LOGS_OBJECT_STORE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/log/browser/indexedDBLogProvider"},{"name":"INDEXEDDB_VSCODE_DB","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/log/browser/indexedDBLogProvider"},{"name":"IndexedDBLogProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/log/browser/indexedDBLogProvider"},{"name":"indexOfPath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/extpath"},{"name":"IndexTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/indexTree"},{"name":"IndexTreeModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/indexTreeModel"},{"name":"InEditorZenModeContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"Infinity","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"inflate","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"inflateRaw","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"inflateRawSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"inflateSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"info","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"Information","kind":"enum member","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/SeverityLevel"},{"name":"inherits","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"INITIAL","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-textmate/release/main"},{"name":"initialize","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/editor.worker"},{"name":"InitializingRangeProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/intializingRangeProvider"},{"name":"InlineDecoration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/viewModel"},{"name":"InlineDecorationType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/viewModel"},{"name":"InlineDiffMargin","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/widget/inlineDiffMargin"},{"name":"InMemoryBackupFileService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/backup/common/backupFileService"},{"name":"InMemoryFileSystemProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/inMemoryFilesystemProvider"},{"name":"InMemoryLogProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/log/common/inMemoryLogProvider"},{"name":"InMemoryStorageDatabase","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/storage/common/storage"},{"name":"InMemoryStorageService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/storage/common/storage"},{"name":"InMemoryTask","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"innerHeight","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"innerWidth","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"INotebookService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookService"},{"name":"INotificationService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/notification/common/notification"},{"name":"InPlaceReplaceCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/inPlaceReplace/inPlaceReplaceCommand"},{"name":"inputActiveOptionBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"inputActiveOptionBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"inputBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"inputBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"InputBox","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/inputbox/inputBox"},{"name":"InputBoxFocusedKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"InputDeviceInfo","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"InputEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"InputFocusedContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkeys"},{"name":"InputFocusedContextKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkeys"},{"name":"inputForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"inputPlaceholderForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"inputsSchema","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configurationResolver/common/configurationResolverSchema"},{"name":"inputValidationErrorBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"inputValidationErrorBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"inputValidationErrorForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"inputValidationInfoBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"inputValidationInfoBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"inputValidationInfoForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"InputValidationType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/common/scm"},{"name":"inputValidationWarningBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"inputValidationWarningBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"inputValidationWarningForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"inQuickPickContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/quickaccess"},{"name":"InQuickPickContextKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/quickaccess"},{"name":"inQuickPickContextKeyValue","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/quickaccess"},{"name":"inRecentFilesPickerContextKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/windowActions"},{"name":"insane","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/insane/insane"},{"name":"InSearchEditor","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"insert","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"InsertCellEdit","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/cellEdit"},{"name":"InsertCodeCellAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookActions"},{"name":"InsertCursorAbove","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/multicursor/multicursor"},{"name":"InsertCursorBelow","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/multicursor/multicursor"},{"name":"InsertLineAfterAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"InsertLineBeforeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"InsertMarkdownCellAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookActions"},{"name":"inspect","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"INSPECT_MAX_BYTES","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"buffer"},{"name":"InspectTokensNLS","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standaloneStrings"},{"name":"INSTALL_ERROR_INCOMPATIBLE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"INSTALL_ERROR_MALICIOUS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"INSTALL_ERROR_NOT_SUPPORTED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"InstallAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"InstallAnotherVersionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"InstallCountWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets"},{"name":"InstallExtensionQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsQuickAccess"},{"name":"InstallExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"InstallInOtherServerAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"InstallLocalExtensionsInRemoteAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"InstallOperation","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"InstallRecommendedExtensionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"InstallSpecificVersionOfExtensionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"InstallVSIXAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"InstallWorkspaceRecommendedExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"instanceof","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"instanceStorageKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetry"},{"name":"InstantiationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/instantiation/common/instantiationService"},{"name":"Int16Array","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Int32Array","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Int8Array","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IntegrityServiceImpl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/integrity/node/integrityService"},{"name":"interface","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"Interface","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"readline"},{"name":"INTERNAL_CONSOLE_OPTIONS_SCHEMA","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"InternalEditorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/editorAction"},{"name":"InternalModelContentChangeEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelEvents"},{"name":"IntersectionObserver","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IntersectionObserverEntry","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"intersects","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"intervalCompare","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/intervalTree"},{"name":"IntervalNode","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/intervalTree"},{"name":"IntervalTimer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"IntervalTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/intervalTree"},{"name":"Intl","kind":"module","kindModifiers":"declare","sortText":"4"},{"name":"IOpenerService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/opener/common/opener"},{"name":"IOutputChannelModelService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/output/common/outputChannelModel"},{"name":"IOutputService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/output"},{"name":"IPadShowKeyboard","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard"},{"name":"IPanelService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/panel/common/panelService"},{"name":"IPathService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/path/common/pathService"},{"name":"IPCClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc"},{"name":"ipcMain","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"ipcRenderer","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"IPCServer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc"},{"name":"IPeekViewService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"IPreferencesSearchService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"IPreferencesService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferences"},{"name":"IProductService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/product/common/productService"},{"name":"IProgressService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/progress/common/progress"},{"name":"IQuickInputService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/quickinput/common/quickInput"},{"name":"IRemoteAgentService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/common/remoteAgentService"},{"name":"IRemoteAuthorityResolverService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAuthorityResolver"},{"name":"IRemoteExplorerService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/common/remoteExplorerService"},{"name":"IReplaceService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/replace"},{"name":"IRequestService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/request/common/request"},{"name":"IResourceIdentityService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/resource/common/resourceIdentityService"},{"name":"IS_WORKSPACE_SHELL_ALLOWED_STORAGE_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"isAbsolute","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"path"},{"name":"isAbsolute","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"isAbsolutePath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"isActive","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/windows-mutex/index"},{"name":"isAncestor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"isArray","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"isArray","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"isatty","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tty"},{"name":"isBasicASCII","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"isBoolean","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"isBoolean","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"isBuffer","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"IsCenteredLayoutContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"isChrome","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"ISCMService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/common/scm"},{"name":"isCodeEditor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorBrowser"},{"name":"isCompositeEditor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorBrowser"},{"name":"isCompressedFolderName","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer"},{"name":"isConfigurationOverrides","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"isContext","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"vm"},{"name":"isDate","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"isDebuggerMainContribution","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugUtils"},{"name":"isDecorationOptionsArr","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"isDeepStrictEqual","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"IsDevelopmentContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkeys"},{"name":"isDiffEditor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorBrowser"},{"name":"isDiffEditorConfigurationKey","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/commonEditorConfig"},{"name":"isDirtyDiffVisible","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"isDisposable","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/lifecycle"},{"name":"ISearchHistoryService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/searchHistoryService"},{"name":"ISearchService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"ISearchWorkbenchService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/searchModel"},{"name":"isEdge","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"isEdgeWebView","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"isEditorConfigurationKey","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/commonEditorConfig"},{"name":"isEditorInputWithOptions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"isElevated","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/native-is-elevated/index"},{"name":"isEmojiImprecise","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"isEmptyMarkdownString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/htmlContent"},{"name":"isEmptyObject","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"isEngineValid","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensions/common/extensionValidator"},{"name":"isEOL","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/jsonFormatter"},{"name":"isEqual","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/extpath"},{"name":"isEqual","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"isEqualAuthority","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"isEqualOrParent","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/extpath"},{"name":"isEqualOrParent","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"isError","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"isErrorWithActions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errorsWithActions"},{"name":"isExcludeSetting","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTreeModels"},{"name":"isFalsyOrEmpty","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"isFalsyOrWhitespace","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"isFileMatch","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"isFilePatternMatch","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"isFileToOpen","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/common/windows"},{"name":"isFilterResult","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/indexTreeModel"},{"name":"isFinite","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"isFirefox","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"isFolderToOpen","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/common/windows"},{"name":"isFullscreen","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"IsFullscreenContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/contextkeys"},{"name":"isFullWidthCharacter","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"isFunction","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"isFunction","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"isFuzzyAction","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchCommon"},{"name":"isFuzzyActionArr","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchCommon"},{"name":"isGridBranchNode","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/grid/gridview"},{"name":"isGridBranchNode","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/grid/grid"},{"name":"ISharedProcessMainService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/ipc/electron-main/sharedProcessMainService"},{"name":"ISharedProcessService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/ipc/electron-browser/sharedProcessService"},{"name":"isHighSurrogate","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"isHTMLElement","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"isIAction","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchCommon"},{"name":"isIExtensionIdentifier","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensions/common/extensions"},{"name":"isIExtensionIdentifier","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"ISignService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/sign/common/sign"},{"name":"isIMenuItem","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/common/actions"},{"name":"isInDOM","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"isInShadowDOM","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"isIOS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"isIP","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"net"},{"name":"isIPad","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"isIPv4","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"net"},{"name":"isIPv6","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"net"},{"name":"isISOKeyboard","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/native-keymap/index"},{"name":"isISubmenuItem","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/common/actions"},{"name":"isKeymapExtension","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensionsUtils"},{"name":"isLanguagePackExtension","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensions/common/extensions"},{"name":"isLinux","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"IsLinuxContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkeys"},{"name":"isLittleEndian","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"isLocationLink","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"isLowerAsciiLetter","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"isLowSurrogate","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"IsMacContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkeys"},{"name":"isMacintosh","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"IsMacNativeContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkeys"},{"name":"isMainFrame","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"isMainThread","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"worker_threads"},{"name":"isMarkdownString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/htmlContent"},{"name":"isMaster","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"isMenubarMenuItemAction","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/menubar/node/menubar"},{"name":"isMenubarMenuItemSeparator","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/menubar/node/menubar"},{"name":"isMenubarMenuItemSubmenu","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/menubar/node/menubar"},{"name":"isMenubarMenuItemUriAction","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/menubar/node/menubar"},{"name":"isMessageOfType","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionHostProtocol"},{"name":"isMultilineRegexSource","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelSearch"},{"name":"isNamedProblemMatcher","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher"},{"name":"isNaN","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"isNative","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"ISnippetsService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/snippets/browser/snippets.contribution"},{"name":"isNonEmptyArray","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"isNotificationViewItem","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/notifications"},{"name":"isNull","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"isNullOrUndefined","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"isNullRange","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesModels"},{"name":"isNumber","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"isNumber","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"isObject","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"isObject","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"isOpera","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"isParent","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"isPathSeparator","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/extpath"},{"name":"isPatternInWord","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"isPrimitive","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"isProgressMessage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"isPromiseCanceledError","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errors"},{"name":"isQuote","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorCommon"},{"name":"isRawFileWorkspaceFolder","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"isRawUriWorkspaceFolder","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"isReadableStream","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/stream"},{"name":"isRecentFile","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"isRecentFolder","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"isRecentWorkspace","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"isRegExp","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"isRelativePattern","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/glob"},{"name":"isRemoteConsoleLog","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/console"},{"name":"isRemoteDiagnosticError","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/diagnostics/common/diagnostics"},{"name":"isRootOrDriveLetter","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/extpath"},{"name":"isRootUser","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"isSafari","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"isSCMRepository","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/util"},{"name":"isSCMResource","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/util"},{"name":"isSCMResourceGroup","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/util"},{"name":"isSearchViewFocused","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"isSecureContext","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"isSelectionRangeChangeEvent","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/listWidget"},{"name":"isSelectionSingleChangeEvent","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/listWidget"},{"name":"isSemanticColoringEnabled","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/modelServiceImpl"},{"name":"isSerializedEditorGroup","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor/editorGroup"},{"name":"isSerializedFileMatch","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"isSerializedSearchComplete","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"isSerializedSearchSuccess","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"isSessionAttach","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugUtils"},{"name":"isShadowRoot","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"isSingleFolderWorkspaceIdentifier","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"isSingleFolderWorkspaceInitializationPayload","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"isStandalone","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"isStatusbarInDebugMode","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/statusbarColorProvider"},{"name":"isStoredWorkspaceFolder","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"isString","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"isString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"isString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchCommon"},{"name":"isStringArray","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"isSuccess","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/request/common/request"},{"name":"IssueMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/issue/electron-main/issueMainService"},{"name":"IssueReporter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-browser/issue/issueReporterMain"},{"name":"IssueReporterModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-browser/issue/issueReporterModel"},{"name":"issueReporterPage","kind":"property","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-browser/issue/issueReporterPage"},{"name":"IssueService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/issue/electron-browser/issueService"},{"name":"IssueType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/issue/node/issue"},{"name":"isSymbol","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"IStandaloneThemeService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/standaloneThemeService"},{"name":"IStateService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/state/node/state"},{"name":"IStaticExtensionsService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/staticExtensions"},{"name":"IStatusbarService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/statusbar/common/statusbar"},{"name":"isTextEditorPane","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"isThemeColor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/editorCommon"},{"name":"isThenable","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"IStorageKeysSyncRegistryService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/storageKeys"},{"name":"IStorageMainService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/storage/node/storageMainService"},{"name":"IStorageService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/storage/common/storage"},{"name":"ISuggestDataDtoField","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHost.protocol"},{"name":"ISuggestMemoryService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestMemory"},{"name":"ISuggestResultDtoField","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHost.protocol"},{"name":"isUNC","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/extpath"},{"name":"isUndefined","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"isUndefined","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"isUndefinedOrNull","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"isUnspecific","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/mime"},{"name":"isUntitledWorkspace","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"isUpper","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"isUpperAsciiLetter","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"isUri","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugUtils"},{"name":"isURLDomainTrusted","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/url/common/trustedDomainsValidator"},{"name":"isUTFEncoding","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"isUUID","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/uuid"},{"name":"isValidBasename","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/extpath"},{"name":"isValidExtensionVersion","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensions/common/extensionValidator"},{"name":"isValidLocalization","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/localizations/common/localizations"},{"name":"isValidMatch","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelSearch"},{"name":"isValidVersion","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensions/common/extensionValidator"},{"name":"isValidVersionStr","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensions/common/extensionValidator"},{"name":"isVersionValid","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensions/common/extensionValidator"},{"name":"isWeb","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"IsWebContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkeys"},{"name":"isWebKit","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"isWebkitWebView","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"isWindows","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"IsWindowsContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkeys"},{"name":"isWindowsDriveLetter","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/extpath"},{"name":"isWorker","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"isWorkspaceBackupInfo","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/backup/electron-main/backup"},{"name":"isWorkspaceFolder","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/browser/taskQuickPick"},{"name":"isWorkspaceIdentifier","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"isWorkspaceToOpen","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/common/windows"},{"name":"ISymbolNavigationService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/symbolNavigation"},{"name":"it","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ITaskService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskService"},{"name":"ITelemetryService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetry"},{"name":"ItemActivation","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/quickinput/common/quickInput"},{"name":"Iterable","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/iterator"},{"name":"ITerminalInstanceService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminal"},{"name":"ITerminalNativeService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"ITerminalService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminal"},{"name":"ITextFileService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/common/textfiles"},{"name":"ITextMateService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textMate/common/textMateService"},{"name":"ITextModelService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/resolverService"},{"name":"ITextResourceConfigurationService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/textResourceConfigurationService"},{"name":"ITextResourcePropertiesService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/textResourceConfigurationService"},{"name":"IThemeMainService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/electron-main/themeMainService"},{"name":"IThemeService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/themeService"},{"name":"ITimelineService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/timeline/common/timeline"},{"name":"ITimerService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/timer/electron-browser/timerService"},{"name":"ITitleService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/title/common/titleService"},{"name":"ITunnelService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/tunnel"},{"name":"IUndoRedoService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/undoRedo/common/undoRedo"},{"name":"IUntitledTextEditorService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorService"},{"name":"IUpdateService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/update/common/update"},{"name":"IURITransformerService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostUriTransformerService"},{"name":"IURLService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/url/common/url"},{"name":"IUserDataAutoSyncService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"IUserDataSyncBackupStoreService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"IUserDataSyncEnablementService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"IUserDataSyncLogService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"IUserDataSyncService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"IUserDataSyncStoreService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"IUserDataSyncUtilService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"IViewDescriptorService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/views"},{"name":"IViewletService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/viewlet/browser/viewlet"},{"name":"IViewsService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/views"},{"name":"IWebIssueService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/issue/browser/issueService"},{"name":"IWebviewService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webview"},{"name":"IWebviewWorkbenchService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewWorkbenchService"},{"name":"IWindowsMainService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/electron-main/windows"},{"name":"IWorkbenchEnvironmentService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/environment/common/environmentService"},{"name":"IWorkbenchExtensionEnablementService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagement"},{"name":"IWorkbenchIssueService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/issue/electron-browser/issue"},{"name":"IWorkbenchLayoutService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/layout/browser/layoutService"},{"name":"IWorkbenchThemeService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/workbenchThemeService"},{"name":"IWorkingCopyFileService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/workingCopy/common/workingCopyFileService"},{"name":"IWorkingCopyService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/workingCopy/common/workingCopyService"},{"name":"IWorkspace","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspace/common/workspace"},{"name":"IWorkspaceContextService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspace/common/workspace"},{"name":"IWorkspaceEditingService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/workspaces/common/workspaceEditing"},{"name":"IWorkspaceFolder","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspace/common/workspace"},{"name":"IWorkspacesHistoryMainService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/electron-main/workspacesHistoryMainService"},{"name":"IWorkspacesMainService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/electron-main/workspacesMainService"},{"name":"IWorkspacesService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"IWorkspaceTagsService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tags/common/workspaceTags"},{"name":"javascriptOnEnterRules","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/modes/supports/javascriptOnEnterRules"},{"name":"join","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"path"},{"name":"join","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"join","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"JoinAllGroupsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"JoinLinesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"joinPath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"JoinTwoGroupsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"JSON","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"JSONEditingError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/jsonEditing"},{"name":"JSONEditingErrorCode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/jsonEditing"},{"name":"JSONEditingService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/jsonEditingService"},{"name":"JsonSchemaVersion","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"JsonSchemaVersion","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskConfiguration"},{"name":"JSONValidationExtensionPoint","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/jsonValidationExtensionPoint"},{"name":"JUMP_TO_CURSOR_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"KEEP_EDITOR_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"KEYBINDING_CONTEXT_NOTEBOOK_FIND_WIDGET_FOCUSED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookBrowser"},{"name":"KEYBINDING_CONTEXT_TERMINAL_A11Y_TREE_FOCUS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_FOCUSED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_INPUT_FOCUSED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_INPUT_NOT_FOCUSED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_NOT_VISIBLE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_VISIBLE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"KEYBINDING_CONTEXT_TERMINAL_FOCUS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"KEYBINDING_CONTEXT_TERMINAL_IS_OPEN","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"KEYBINDING_CONTEXT_TERMINAL_NOT_FOCUSED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"KEYBINDING_CONTEXT_TERMINAL_SHELL_TYPE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"KEYBINDING_CONTEXT_TERMINAL_SHELL_TYPE_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"KEYBINDING_CONTEXT_TERMINAL_TEXT_NOT_SELECTED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"KEYBINDING_CONTEXT_TERMINAL_TEXT_SELECTED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_FOCUSED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webview"},{"name":"KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webview"},{"name":"KEYBINDING_ENTRY_TEMPLATE_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/keybindingsEditorModel"},{"name":"KeybindingEditorDecorationsRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/keybindingsEditorContribution"},{"name":"KeybindingIO","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/keybindingIO"},{"name":"KeybindingLabel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/keybindingLabel/keybindingLabel"},{"name":"KeybindingParser","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keybindingParser"},{"name":"KeybindingResolver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/keybinding/common/keybindingResolver"},{"name":"KEYBINDINGS_EDITOR_CLEAR_INPUT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KEYBINDINGS_EDITOR_COMMAND_CLEAR_SEARCH_RESULTS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KEYBINDINGS_EDITOR_COMMAND_COPY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KEYBINDINGS_EDITOR_COMMAND_COPY_COMMAND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KEYBINDINGS_EDITOR_COMMAND_DEFINE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KEYBINDINGS_EDITOR_COMMAND_DEFINE_WHEN","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KEYBINDINGS_EDITOR_COMMAND_FOCUS_KEYBINDINGS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KEYBINDINGS_EDITOR_COMMAND_RECORD_SEARCH_KEYS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KEYBINDINGS_EDITOR_COMMAND_REMOVE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KEYBINDINGS_EDITOR_COMMAND_RESET","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KEYBINDINGS_EDITOR_COMMAND_SEARCH","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KEYBINDINGS_EDITOR_COMMAND_SHOW_SIMILAR","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KEYBINDINGS_EDITOR_COMMAND_SORTBY_PRECEDENCE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KEYBINDINGS_EDITOR_SHOW_DEFAULT_KEYBINDINGS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KEYBINDINGS_EDITOR_SHOW_USER_KEYBINDINGS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KeybindingsEditingService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/keybindingEditing"},{"name":"KeybindingsEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/keybindingsEditor"},{"name":"KeybindingsEditorInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesEditorInput"},{"name":"KeybindingsEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/keybindingsEditorModel"},{"name":"KeybindingSource","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/keybinding/common/keybinding"},{"name":"KeybindingsRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/keybinding/common/keybindingsRegistry"},{"name":"KeybindingsSearchWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/keybindingWidgets"},{"name":"KeybindingsSynchroniser","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/keybindingsSync"},{"name":"KeybindingWeight","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/keybinding/common/keybindingsRegistry"},{"name":"KeybindingWidgetRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/keybindingsEditorContribution"},{"name":"KEYBOARD_LAYOUT_OPEN_PICKER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KeyboardEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"KeyboardLayoutContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution"},{"name":"KeyboardLayoutPickerAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/keyboardLayoutPicker"},{"name":"KeyboardLayoutPickerContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/keyboardLayoutPicker"},{"name":"KeyboardMapperFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/electron-browser/nativeKeymapService"},{"name":"keyboardNavigationSettingKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"KeyboardSupport","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/canIUse"},{"name":"KeyChord","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keyCodes"},{"name":"KeyCode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keyCodes"},{"name":"KeyCode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"KeyCode","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/editor.api"},{"name":"KeyCodeUtils","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keyCodes"},{"name":"KeyedTaskIdentifier","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"KeyframeEffect","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"keyFromOverrideIdentifier","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"KeymapExtensions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensionsUtils"},{"name":"KeymapInfo","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/keymapInfo"},{"name":"KeymapRecommendations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/keymapRecommendations"},{"name":"KeyMod","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keyCodes"},{"name":"KeyMod","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneBase"},{"name":"KeyMod","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/editor.api"},{"name":"KeyObject","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"keyof","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"keys","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/map"},{"name":"KeytarCredentialsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/credentials/node/credentialsService"},{"name":"KeytarCredentialsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/credentials/node/credentialsService"},{"name":"KeyValueLogProvider","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/log/common/keyValueLogProvider"},{"name":"kill","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"KillTerminalAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions"},{"name":"kMaxLength","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"buffer"},{"name":"knownAcronyms","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsLayout"},{"name":"KnownSnippetVariableNames","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetVariables"},{"name":"knownTermMappings","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsLayout"},{"name":"kStringMaxLength","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"buffer"},{"name":"Label","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets"},{"name":"LabelContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/remote/common/remote.contribution"},{"name":"LabelService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/label/common/labelService"},{"name":"language","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"Language","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"LanguageConfigurationChangeEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/languageConfigurationRegistry"},{"name":"LanguageConfigurationFileHandler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/languageConfigurationExtensionPoint"},{"name":"LanguageConfigurationRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/languageConfigurationRegistry"},{"name":"LanguageConfigurationRegistryImpl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/languageConfigurationRegistry"},{"name":"LanguageFeatureRegistry","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/languageFeatureRegistry"},{"name":"LanguageId","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"LanguageIdentifier","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"LanguagePackCachedDataCleaner","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-browser/sharedProcess/contrib/languagePackCachedDataCleaner"},{"name":"languages","kind":"module","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"languages","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/editor.api"},{"name":"LanguageSelector","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"languagesExtPoint","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/mode/common/workbenchModeService"},{"name":"LanguagesRegistry","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/languagesRegistry"},{"name":"LanguageType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/localizations/common/localizations"},{"name":"LargeFileOptimizationsWarner","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/largeFileOptimizations"},{"name":"LAST_COMPRESSED_FOLDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"lastIndex","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"lastNonWhitespaceIndex","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"lastSessionDateStorageKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetry"},{"name":"LAUNCH_CONFIGURATION_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"LaunchMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/launch/electron-main/launchMainService"},{"name":"launchSchema","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugSchemas"},{"name":"launchSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"layout","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/contextview/contextview"},{"name":"Layout","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/layout"},{"name":"LAYOUT_EDITOR_GROUPS_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"LayoutAnchorPosition","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/contextview/contextview"},{"name":"LayoutController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/grid/gridview"},{"name":"LayoutData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesWidget"},{"name":"LayoutPriority","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/splitview/splitview"},{"name":"LazilyResolvedWebviewEditorInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewWorkbenchService"},{"name":"Lazy","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/lazy"},{"name":"lazyEnv","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"LazyOutputChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostOutput"},{"name":"LazyPromise","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/lazyPromise"},{"name":"lchmod","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"lchmodSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"lchown","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"lchownSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"LcsDiff","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/diff/diff"},{"name":"lcut","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"leftest","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase"},{"name":"leftRotate","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase"},{"name":"LEGACY_CONSOLE_MODE_EXIT_CODE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"legacy_ENV_iKey","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Config"},{"name":"length","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"let","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"lexer","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/marked/marked"},{"name":"Lexer","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/marked/marked"},{"name":"LifecycleMainPhase","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/lifecycle/electron-main/lifecycleMainService"},{"name":"LifecycleMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/lifecycle/electron-main/lifecycleMainService"},{"name":"LifecyclePhase","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/lifecycle/common/lifecycle"},{"name":"LifecyclePhaseToString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/lifecycle/common/lifecycle"},{"name":"LIGHT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/themeService"},{"name":"LightBulbWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/lightBulbWidget"},{"name":"lighten","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"Limiter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"LineBreakData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/splitLinesCollection"},{"name":"LineCommentCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/comment/lineCommentCommand"},{"name":"LineContext","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/completionModel"},{"name":"LineContext","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestModel"},{"name":"LineDecoder","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/decoder"},{"name":"LineDecoration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/lineDecorations"},{"name":"LineDecorationsNormalizer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/lineDecorations"},{"name":"LineNumbersOverlay","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/lineNumbers/lineNumbers"},{"name":"LinePartMetadata","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/viewLineRenderer"},{"name":"LineProcess","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/processes"},{"name":"LineRange","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/viewLineRenderer"},{"name":"LinesDecorationsOverlay","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/linesDecorations/linesDecorations"},{"name":"LinesLayout","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/linesLayout"},{"name":"LineStarts","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase"},{"name":"LineTokens","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/lineTokens"},{"name":"LineTokens2","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/tokensStore"},{"name":"LineVisibleRanges","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/renderingContext"},{"name":"link","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"Link","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/links/getLinks"},{"name":"Link","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/opener/browser/link"},{"name":"LINK_INTERCEPT_THRESHOLD","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminal"},{"name":"LinkComputer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/linkComputer"},{"name":"LinkDetector","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/links/links"},{"name":"LinkDetector","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/linkDetector"},{"name":"LinkedList","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/linkedList"},{"name":"LinkedMap","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/map"},{"name":"LinkedText","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/linkedText"},{"name":"LinkProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"LinksList","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/links/getLinks"},{"name":"linkSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"linuxDistro","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/node/terminal"},{"name":"LinuxDistro","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"LinuxExternalTerminalService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/externalTerminal/node/externalTerminalService"},{"name":"LinuxUpdateService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/update/electron-main/updateService.linux"},{"name":"List","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/listWidget"},{"name":"listActiveSelectionBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listActiveSelectionForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listDeemphasizedForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"ListDragOverEffect","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/list"},{"name":"ListDragOverReactions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/list"},{"name":"listDropBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listenerCount","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"listenerCount","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"listenerCount","kind":"method","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"stream"},{"name":"listeners","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"listeners","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"ListeningStateChangedEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ListError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/list"},{"name":"listErrorForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listFilterMatchHighlight","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listFilterMatchHighlightBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listFilterWidgetBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listFilterWidgetNoMatchesOutline","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listFilterWidgetOutline","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listFocusBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listFocusForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listHighlightForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listHoverBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listHoverForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listInactiveFocusBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listInactiveSelectionBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listInactiveSelectionForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listInvalidItemForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listProcesses","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/ps"},{"name":"ListResourceNavigator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"ListService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"ListSettingListModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"ListSettingWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"ListView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/listView"},{"name":"listWarningForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"loadavg","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"LOADED_SCRIPTS_VIEW_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"LoadedScriptsView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/loadedScriptsView"},{"name":"LoaderEvent","kind":"class","kindModifiers":"declare","sortText":"4"},{"name":"LoaderEventType","kind":"enum","kindModifiers":"declare","sortText":"4"},{"name":"LOADIPHLPAPI","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"loadLocalResource","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/common/resourceLoader"},{"name":"loadWASM","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/onigasm-umd/main"},{"name":"LOCAL_MACHINE_SCOPES","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"locale","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"LocalInstallAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"LocalizationsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/localizations/node/localizations"},{"name":"LocalizationsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/localizations/electron-browser/localizationsService"},{"name":"LocalizationWorkbenchContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/localizations/browser/localizations.contribution"},{"name":"localize","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/nls"},{"name":"localize","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/nls.mock"},{"name":"localizeManifest","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionNls"},{"name":"LocalSearchProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesSearch"},{"name":"LocalSearchService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/searchService"},{"name":"LocalSelectionTransfer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/dnd"},{"name":"localStorage","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"location","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"location","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"Location","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Location","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"Location","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"locationbar","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"log","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"log","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/console"},{"name":"log","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchCommon"},{"name":"log","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"log","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"LOG_MIME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/output"},{"name":"LOG_MODE_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/output"},{"name":"LOG_SCHEME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/output"},{"name":"LogAppender","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetryUtils"},{"name":"LogContentProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/browser/outputServices"},{"name":"Logger","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionPoints"},{"name":"LoggerChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/logIpc"},{"name":"LoggerChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/logIpc"},{"name":"LoggerService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/node/loggerService"},{"name":"LogLevel","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"LogLevel","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/log"},{"name":"LogLevel","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"LogLevel","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"LogLevel","kind":"alias","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/workbench.web.api"},{"name":"logOnceWebWorkerWarning","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/worker/simpleWorker"},{"name":"logRemoteEntry","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/remoteConsoleUtil"},{"name":"LogsDataCleaner","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/logs/common/logsDataCleaner"},{"name":"LogsDataCleaner","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-browser/sharedProcess/contrib/logsDataCleaner"},{"name":"LogServiceAdapter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/log"},{"name":"logStorage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/storage/common/storage"},{"name":"LogViewer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/browser/logViewer"},{"name":"LogViewerInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/browser/logViewer"},{"name":"LONG_LINE_BOUNDARY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModel"},{"name":"LongRunningOperation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/progress/common/progress"},{"name":"lookup","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"lookupService","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"LowerCaseAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"LRUCache","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/map"},{"name":"LRUMemory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestMemory"},{"name":"lstat","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"lstat","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"lstatSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"lt","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"lte","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"ltr","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"ltrim","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"lutimes","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"lutimesSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"MacExternalTerminalService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/externalTerminal/node/externalTerminalService"},{"name":"machineIdKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetry"},{"name":"machineOverridableSettings","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationRegistry"},{"name":"machineSettings","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationRegistry"},{"name":"machineSettingsSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"MacLinuxFallbackKeyboardMapper","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/macLinuxFallbackKeyboardMapper"},{"name":"MacLinuxKeyboardMapper","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper"},{"name":"macLinuxKeyboardMappingEquals","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper"},{"name":"main","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/web.main"},{"name":"main","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/node/cli"},{"name":"main","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/node/cliProcessMain"},{"name":"main","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/desktop.main"},{"name":"Main","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/node/cliProcessMain"},{"name":"MainContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHost.protocol"},{"name":"mainLogChannelId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/logs/common/logConstants"},{"name":"mainModule","kind":"property","kindModifiers":"declare,optional","sortText":"5","hasAction":true,"source":"process"},{"name":"MainPane","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/mainPane"},{"name":"MainPaneDescriptor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/mainPane"},{"name":"MainProcessService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/ipc/electron-browser/mainProcessService"},{"name":"MAINTAIN_UNDO_REDO_STACK","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/modelServiceImpl"},{"name":"MainThreadAuthentication","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadAuthentication"},{"name":"MainThreadAuthenticationProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadAuthentication"},{"name":"MainThreadClipboard","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadClipboard"},{"name":"MainThreadCommands","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadCommands"},{"name":"MainThreadCommentController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadComments"},{"name":"MainThreadComments","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadComments"},{"name":"MainThreadCommentThread","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadComments"},{"name":"MainThreadConfiguration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadConfiguration"},{"name":"MainThreadConsole","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadConsole"},{"name":"MainThreadDebugService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadDebugService"},{"name":"MainThreadDecorations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadDecorations"},{"name":"MainThreadDiagnostics","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadDiagnostics"},{"name":"MainThreadDialogs","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadDialogs"},{"name":"MainThreadDocumentContentProviders","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadDocumentContentProviders"},{"name":"MainThreadDocumentRangeSemanticTokensProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures"},{"name":"MainThreadDocuments","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadDocuments"},{"name":"MainThreadDocumentsAndEditors","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadDocumentsAndEditors"},{"name":"MainThreadDocumentSemanticTokensProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures"},{"name":"MainThreadDownloadService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadDownloadService"},{"name":"MainThreadEditorInsets","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadCodeInsets"},{"name":"MainThreadErrors","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadErrors"},{"name":"MainThreadExtensionService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadExtensionService"},{"name":"MainThreadFileSystem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadFileSystem"},{"name":"MainThreadFileSystemEventService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService"},{"name":"MainThreadKeytar","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadKeytar"},{"name":"MainThreadLabelService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadLabelService"},{"name":"MainThreadLanguageFeatures","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures"},{"name":"MainThreadLanguages","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadLanguages"},{"name":"MainThreadLogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadLogService"},{"name":"MainThreadMessageService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadMessageService"},{"name":"MainThreadNotebookController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadNotebook"},{"name":"MainThreadNotebookDocument","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadNotebook"},{"name":"MainThreadNotebooks","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadNotebook"},{"name":"MainThreadOutputService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadOutputService"},{"name":"MainThreadProgress","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadProgress"},{"name":"MainThreadQuickOpen","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadQuickOpen"},{"name":"MainThreadSCM","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadSCM"},{"name":"MainThreadSearch","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadSearch"},{"name":"MainThreadStatusBar","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadStatusBar"},{"name":"MainThreadStorage","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadStorage"},{"name":"MainThreadTask","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadTask"},{"name":"MainThreadTelemetry","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadTelemetry"},{"name":"MainThreadTerminalService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadTerminalService"},{"name":"MainThreadTextEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadEditor"},{"name":"MainThreadTextEditorProperties","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadEditor"},{"name":"MainThreadTextEditors","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadEditors"},{"name":"MainThreadTheming","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadTheming"},{"name":"MainThreadTimeline","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadTimeline"},{"name":"MainThreadTreeViews","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadTreeViews"},{"name":"MainThreadTunnelService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadTunnelService"},{"name":"MainThreadUrls","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadUrls"},{"name":"MainThreadWebviews","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadWebview"},{"name":"MainThreadWindow","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadWindow"},{"name":"MainThreadWorkspace","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadWorkspace"},{"name":"major","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"MakeAddress","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/common/remoteExplorerService"},{"name":"MaliciousExtensionChecker","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewlet"},{"name":"MaliciousStatusLabelAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ManageAuthorizedExtensionURIsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/browser/extensionUrlHandler"},{"name":"ManageAutomaticTaskRunning","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/browser/runAutomaticTasks"},{"name":"ManageExtensionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ManageExtensionsQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsQuickAccess"},{"name":"ManagementPersistentConnection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAgentConnection"},{"name":"manageTrustedDomainSettingsCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/url/common/trustedDomains"},{"name":"MANIFEST_CACHE_FOLDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensions/common/extensions"},{"name":"Map","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"mapArrayOrNot","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"mapPager","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/paging"},{"name":"mapToString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/map"},{"name":"Margin","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/margin/margin"},{"name":"MarginViewLineDecorationsOverlay","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/marginDecorations/marginDecorations"},{"name":"MarginViewOverlays","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/view/viewOverlays"},{"name":"mark","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/performance"},{"name":"markAsFileSystemProviderError","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"MarkdownCellRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer"},{"name":"MarkdownCellViewModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel"},{"name":"markdownEscapeEscapedCodicons","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/codicons"},{"name":"MarkdownRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/markdown/markdownRenderer"},{"name":"MarkdownRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/mdRenderer"},{"name":"MarkdownString","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"MarkdownString","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/htmlContent"},{"name":"MarkdownString","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"MarkdownString","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"markdownUnescapeCodicons","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/codicons"},{"name":"marked","kind":"alias","kindModifiers":"declare","sortText":"4"},{"name":"markedStringsEquals","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/htmlContent"},{"name":"Marker","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetParser"},{"name":"Marker","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersModel"},{"name":"MarkerController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoError/gotoError"},{"name":"MarkerDecorationsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/markerDecorationsServiceImpl"},{"name":"MarkerNavigationWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoError/gotoErrorWidget"},{"name":"MarkerRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersTreeViewer"},{"name":"MarkerService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/markers/common/markerService"},{"name":"MarkerSeverity","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/markers/common/markers"},{"name":"MarkerSeverity","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"MarkerSeverity","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/editor.api"},{"name":"MarkersFilterActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersViewActions"},{"name":"MarkersFilters","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersViewActions"},{"name":"MarkersModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersModel"},{"name":"MarkersTreeAccessibilityProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersTreeViewer"},{"name":"MarkersView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersView"},{"name":"MarkersViewModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersTreeViewer"},{"name":"MarkersWorkbenchService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markers"},{"name":"MarkerTag","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/markers/common/markers"},{"name":"MarkerTag","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"MarkerTag","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/editor.api"},{"name":"MarkerViewModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersTreeViewer"},{"name":"markTimeline","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"mas","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"match","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/glob"},{"name":"match","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"Match","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/searchModel"},{"name":"MATCHES_LIMIT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findModel"},{"name":"matchesCamelCase","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"matchesContiguousSubString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"matchesFuzzy","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"matchesFuzzy2","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"matchesFuzzyCodiconAware","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/codicon"},{"name":"matchesPrefix","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"matchesScheme","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/opener/common/opener"},{"name":"matchesStrictPrefix","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"matchesSubString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"matchesWords","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"MatchFindAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"MatchFocusKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"matchMedia","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"MatchRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchResultsView"},{"name":"Math","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MAX_BYTES_ON_DISK","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Sender"},{"name":"MAX_CONNECTION_FAILURES_BEFORE_WARN","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Sender"},{"name":"MAX_FILE_SIZE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"MAX_FOLDING_REGIONS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/foldingRanges"},{"name":"MAX_HEAP_SIZE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"MAX_LINE_NUMBER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/foldingRanges"},{"name":"MAX_OUTPUT_LENGTH","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/output"},{"name":"MAX_VALUE_RENDER_LENGTH_IN_VIEWLET","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/baseDebugView"},{"name":"maxHeaderSize","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"http"},{"name":"MaximizeGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"maxSatisfying","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"mayIncludeActionsOfKind","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/types"},{"name":"measure","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"Measurement","kind":"enum member","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/DataPointType"},{"name":"MediaDeviceInfo","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaDevices","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaElementAudioSourceNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaEncryptedEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaError","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaKeyMessageEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaKeys","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaKeySession","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaKeyStatusMap","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaKeySystemAccess","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaQueryList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaQueryListEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaSource","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaStream","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaStreamAudioDestinationNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaStreamAudioSourceNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaStreamError","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaStreamErrorEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaStreamEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaStreamTrack","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaStreamTrackAudioSourceNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaStreamTrackEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Memento","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/memento"},{"name":"memoize","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/decorators"},{"name":"memory","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"Memory","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestMemory"},{"name":"memoryUsage","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"Menu","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"Menu","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/menu/menu"},{"name":"MENU_ESCAPED_MNEMONIC_REGEX","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/menu/menu"},{"name":"MENU_MNEMONIC_REGEX","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/menu/menu"},{"name":"menuBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"menubar","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Menubar","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/menubar/electron-main/menubar"},{"name":"MenuBar","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/menu/menubar"},{"name":"MENUBAR_SELECTION_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"MENUBAR_SELECTION_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"MENUBAR_SELECTION_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"MenubarControl","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/titlebar/menubarControl"},{"name":"MenubarMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/menubar/electron-main/menubarMainService"},{"name":"MenubarService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/menubar/electron-browser/menubarService"},{"name":"menuBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"MenuEntryActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/browser/menuEntryActionViewItem"},{"name":"menuForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"MenuId","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/common/actions"},{"name":"MenuItem","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"MenuItemAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/common/actions"},{"name":"MenuItemExtensionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"MenuPreventer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/menuPreventer"},{"name":"MenuRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/common/actions"},{"name":"menuSelectionBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"menuSelectionBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"menuSelectionForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"menuSeparatorBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"MenuService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/common/menuService"},{"name":"merge","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"merge","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/settingsMerge"},{"name":"merge","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/extensionsMerge"},{"name":"merge","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/keybindingsMerge"},{"name":"merge","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/globalStateMerge"},{"name":"merge","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/snippetsMerge"},{"name":"mergeAllGroups","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"mergeBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"mergeChanges","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationModels"},{"name":"mergeCommonContentBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"mergeCommonHeaderBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"mergeCurrentContentBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"mergeCurrentHeaderBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"MergedEnvironmentVariableCollection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariableCollection"},{"name":"mergeEnvironments","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalEnvironment"},{"name":"MergeGroupMode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/common/editorGroupsService"},{"name":"mergeIncomingContentBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"mergeIncomingHeaderBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"mergePagers","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/paging"},{"name":"mergeSort","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"MergeWindowTabsHandlerHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"},{"name":"MessageChannel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MessageChannel","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"worker_threads"},{"name":"MessageController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/message/messageController"},{"name":"MessageData","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/MessageData"},{"name":"MessageData","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"MessageEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MessagePort","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MessagePort","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"worker_threads"},{"name":"Messages","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/messages"},{"name":"MessageType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/inputbox/inputBox"},{"name":"MessageType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionHostProtocol"},{"name":"MetadataConsts","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"MetadataConsts","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textMate/common/textMateService"},{"name":"MetadataConsts","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-textmate/release/main"},{"name":"METHODS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"http"},{"name":"MetricData","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/MetricData"},{"name":"MetricData","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"MIME_BINARY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/mime"},{"name":"MIME_TEXT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/mime"},{"name":"MIME_UNKNOWN","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/mime"},{"name":"MimeType","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MimeTypeArray","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MimeTypeRendererResolver","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/notebookCommon"},{"name":"mimeTypeSupportedByCore","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/notebookCommon"},{"name":"MIN_MAX_MEMORY_SIZE_MB","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/files"},{"name":"Minimap","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/minimap/minimap"},{"name":"MINIMAP_GUTTER_WIDTH","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"minimapBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"MinimapCharRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/minimap/minimapCharRenderer"},{"name":"MinimapCharRendererFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/minimap/minimapCharRendererFactory"},{"name":"minimapError","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"minimapFindMatch","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"minimapGutterAddedBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"minimapGutterDeletedBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"minimapGutterModifiedBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"MinimapLinesRenderingData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/viewModel"},{"name":"MinimapPosition","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model"},{"name":"MinimapPosition","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"minimapSelection","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"minimapSliderActiveBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"minimapSliderBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"minimapSliderHoverBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"MinimapTokensColorTracker","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/minimapTokensColorTracker"},{"name":"minimapWarning","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"minimist","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/minimist/index"},{"name":"MinimizeOtherGroupsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"MINIMUM_LETTER_SPACING","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"minimumTranslatedStrings","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/localizations/browser/minimalTranslations"},{"name":"minor","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"minSatisfying","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"minVersion","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"MirrorTextModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/mirrorTextModel"},{"name":"MissingDependencyError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensions"},{"name":"mixin","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/objects"},{"name":"mkdir","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"mkdirp","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"mkdirSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"mkdtemp","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"mkdtempSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"mnemonicButtonLabel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/labels"},{"name":"mnemonicMenuLabel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/labels"},{"name":"mocha","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Mocha","kind":"class","kindModifiers":"declare","sortText":"4"},{"name":"mock","kind":"alias","kindModifiers":"","sortText":"0"},{"name":"MockContextKeyService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/keybinding/test/common/mockKeybindingService"},{"name":"MockDebugAdapter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/test/common/mockDebug"},{"name":"MockDebugService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/test/common/mockDebug"},{"name":"MockKeybindingService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/keybinding/test/common/mockKeybindingService"},{"name":"MockMode","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/mocks/mockMode"},{"name":"MockObjectTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/test/browser/mockSearchTree"},{"name":"MockRawSession","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/test/common/mockDebug"},{"name":"MockSession","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/test/common/mockDebug"},{"name":"MockTextAreaWrapper","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/browser/controller/textAreaState.test"},{"name":"ModelBasedVariableResolver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetVariables"},{"name":"ModelConstants","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model"},{"name":"ModelDecorationMinimapOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModel"},{"name":"ModelDecorationOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModel"},{"name":"ModelDecorationOverviewRulerOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModel"},{"name":"ModelRawContentChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelEvents"},{"name":"ModelRawEOLChanged","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelEvents"},{"name":"ModelRawFlush","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelEvents"},{"name":"ModelRawLineChanged","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelEvents"},{"name":"ModelRawLinesDeleted","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelEvents"},{"name":"ModelRawLinesInserted","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelEvents"},{"name":"ModelServiceImpl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/modelServiceImpl"},{"name":"ModelTransientSettingWatcher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/services/abstractCodeEditorService"},{"name":"ModesContentHoverWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/hover/modesContentHover"},{"name":"ModeServiceImpl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/modeServiceImpl"},{"name":"ModesGlyphHoverWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/hover/modesGlyphHover"},{"name":"ModesHoverController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/hover/hover"},{"name":"ModesRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/modesRegistry"},{"name":"MODIFIED_SETTING_TAG","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"modifiedItemIndicator","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"ModifierLabelProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keybindingLabels"},{"name":"modify","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"modifySearchEditorContextLinesCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions"},{"name":"module","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Module","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"module"},{"name":"monaco","kind":"module","kindModifiers":"declare","sortText":"4"},{"name":"MonacoEnvironment","kind":"let","kindModifiers":"declare","sortText":"4"},{"name":"MonarchBracket","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchCommon"},{"name":"MonarchTokenizer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchLexer"},{"name":"monitorEventLoopDelay","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"perf_hooks"},{"name":"MonospaceLineBreaksComputerFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/monospaceLineBreaksComputer"},{"name":"MouseController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/listWidget"},{"name":"MouseEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MouseHandler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/mouseHandler"},{"name":"MouseTarget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/mouseTarget"},{"name":"MouseTargetFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/mouseTarget"},{"name":"MouseTargetType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorBrowser"},{"name":"MouseTargetType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"MouseWheelClassifier","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/scrollbar/scrollableElement"},{"name":"move","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"move","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"MOVE_ACTIVE_EDITOR_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"MOVE_FILE_TO_TRASH_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"moveBy","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"MoveCaretCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/caretOperations/moveCaretCommand"},{"name":"MoveCellEdit","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/cellEdit"},{"name":"moveCursor","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"readline"},{"name":"MoveEditorLeftInGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"MoveEditorRightInGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"MoveEditorToAboveGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"MoveEditorToBelowGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"MoveEditorToFirstGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"MoveEditorToLastGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"MoveEditorToLeftGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"MoveEditorToNextGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"MoveEditorToPreviousGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"MoveEditorToRightGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"moveFileToTrashHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"MoveFocusedViewAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"MoveGroupDownAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"MoveGroupLeftAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"MoveGroupRightAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"MoveGroupUpAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"MoveLinesCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/moveLinesCommand"},{"name":"MoveOperations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorMoveOperations"},{"name":"MoveSelectionToNextFindMatchAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/multicursor/multicursor"},{"name":"MoveSelectionToPreviousFindMatchAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/multicursor/multicursor"},{"name":"moveTo","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"MoveToNextChangeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"MoveToPreviousChangeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"MoveWindowTabToNewWindowHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"},{"name":"MoveWordCommand","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"MSAssertion","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSBlobBuilder","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"msContentScript","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSFIDOCredentialAssertion","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSFIDOSignature","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSFIDOSignatureAssertion","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSGesture","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSGestureEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSGraphicsTrust","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSInputMethodContext","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSMediaKeyError","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSMediaKeyMessageEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSMediaKeyNeededEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSMediaKeys","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSMediaKeySession","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSPointerEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSStream","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"msWriteProfilerMark","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"MultiCursorSelectionController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/multicursor/multicursor"},{"name":"MultiCursorSelectionControllerAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/multicursor/multicursor"},{"name":"MultiCursorSession","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/multicursor/multicursor"},{"name":"MultiCursorSessionResult","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/multicursor/multicursor"},{"name":"MultilineTokens","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/tokensStore"},{"name":"MultilineTokens2","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/tokensStore"},{"name":"MultilineTokensBuilder","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/tokensStore"},{"name":"MultiModelEditStackElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/editStack"},{"name":"MultipleEditorGroupsContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"MultiplexLayoutController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/grid/gridview"},{"name":"MultiplexLogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/log"},{"name":"multiSelectModifierSettingKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"MutableDisposable","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/lifecycle"},{"name":"MutationEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MutationObserver","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MutationRecord","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Mutex","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/windows-mutex/index"},{"name":"MyArray","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/diff/diff"},{"name":"MyEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/parts/editor/baseEditor.test"},{"name":"MyOtherEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/parts/editor/baseEditor.test"},{"name":"name","kind":"const","kindModifiers":"declare","sortText":"4"},{"name":"NamedNodeMap","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"namespace","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"Namespace","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"NaN","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"NativeAccessibilityService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/accessibility/electron-browser/accessibilityService"},{"name":"NativeBackupTracker","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/backup/electron-browser/backupTracker"},{"name":"NativeClipboardService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/clipboard/electron-browser/clipboardService"},{"name":"NativeExtHostSearch","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/node/extHostSearch"},{"name":"nativeImage","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"NativeImage","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"NativeLifecycleService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/lifecycle/electron-browser/lifecycleService"},{"name":"NativePathService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/path/electron-browser/pathService"},{"name":"NativeRequestService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/request/electron-browser/requestService"},{"name":"NativeResolvedKeybinding","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper"},{"name":"NativeResourceIdentityService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/resource/node/resourceIdentityServiceImpl"},{"name":"NativeSimpleFileDialog","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/dialogs/electron-browser/simpleFileDialog"},{"name":"NativeStorageService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/storage/node/storageService"},{"name":"NativeTelemetryOptOut","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut"},{"name":"NativeTextFileEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/electron-browser/textFileEditor"},{"name":"NativeTextFileService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/electron-browser/nativeTextFileService"},{"name":"NativeTextSearchManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/textSearchManager"},{"name":"nativeTheme","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"NativeUpdateService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/update/electron-browser/updateService"},{"name":"NativeWindow","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/window"},{"name":"NativeWorkbenchEnvironmentService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/environment/electron-browser/environmentService"},{"name":"NativeWorkspaceEditingService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/workspaces/electron-browser/workspaceEditingService"},{"name":"NativeWorkspacesService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/workspaces/electron-browser/workspacesService"},{"name":"NavigateBackwardsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"NavigateBetweenGroupsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"NavigateForwardAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"NavigateLastAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"NavigateToLastEditLocationAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"NavigationModeAddon","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/addons/navigationModeAddon"},{"name":"NavigationPreloadManager","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"navigator","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Navigator","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"neq","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"net","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"netLog","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"networkInterfaces","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"never","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"NEVER_MEASURE_RENDER_TIME_STORAGE_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"NeverShowAgainScope","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/notification/common/notification"},{"name":"new","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"NEW_FILE_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"NEW_FILE_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"NEW_FOLDER_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"NEW_FOLDER_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"NewEditorGroupAboveAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"NewEditorGroupBelowAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"NewEditorGroupLeftAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"NewEditorGroupRightAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"NewExplorerItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/explorerModel"},{"name":"NewFileAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"NewFolderAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"NewWindowAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/windowActions"},{"name":"NewWindowAPICommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/apiCommands"},{"name":"newWindowCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"NewWindowTabHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"},{"name":"newWriteableBufferStream","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"newWriteableStream","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/stream"},{"name":"NEXT_COMPRESSED_FOLDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"nextCharLength","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"NextCommentThreadAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentsEditorContribution"},{"name":"NextMarkerAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoError/gotoError"},{"name":"NextMatchFindAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"NextMatchFindAction2","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"NextPanelViewAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/panel/panelActions"},{"name":"NextSelectionMatchFindAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"NextSideBarViewAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/activitybar/activitybarActions"},{"name":"nextTick","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/process"},{"name":"nextTick","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"NO_KEY_MODS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/quickinput/common/quickInput"},{"name":"noAsar","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"NODATA","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"Node","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"nodeAcceptEdit","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/intervalTree"},{"name":"NodeCachedDataCleaner","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-browser/sharedProcess/contrib/nodeCachedDataCleaner"},{"name":"NodeClient","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/NodeClient"},{"name":"NodeColor","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/intervalTree"},{"name":"NodeColor","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase"},{"name":"NodeDebugHelperService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/node/debugHelperService"},{"name":"NodeFilter","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"NodeIterator","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"NodeJS","kind":"module","kindModifiers":"declare","sortText":"4"},{"name":"NodeList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"noDeprecation","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"nodeReadableToString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/stream"},{"name":"NodeSocket","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/node/ipc.net"},{"name":"nodeSocketFactory","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/node/nodeSocketFactory"},{"name":"nodesToArrays","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/test/browser/ui/grid/util"},{"name":"nodeStreamToVSBufferReadable","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/stream"},{"name":"NodeTestBackupFileService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/backup/test/electron-browser/backupFileService.test"},{"name":"NoEditorsVisibleContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"noIntlCompareFileNames","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/comparers"},{"name":"NOMEM","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"NoMemory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestMemory"},{"name":"NONAME","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"NoOpNotification","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/notification/common/notification"},{"name":"NoOpProgress","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/notification/common/notification"},{"name":"NoOpWorkspaceTagsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tags/browser/workspaceTagsService"},{"name":"normalize","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"path"},{"name":"normalize","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"normalizeDriveLetter","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/labels"},{"name":"normalizeExpression","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/test/browser/queryBuilder.test"},{"name":"normalizeFileChanges","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/watcher/watcher"},{"name":"normalizeGitHubUrl","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/issue/common/issueReporterUtil"},{"name":"normalizeNFC","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/normalization"},{"name":"normalizeNFD","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/normalization"},{"name":"normalizePath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"normalizeRoots","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/watcher/unix/chokidarWatcherService"},{"name":"normalizeVersion","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensions/common/extensionValidator"},{"name":"NoTabsTitleControl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/noTabsTitleControl"},{"name":"notDeepEqual","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"notDeepStrictEqual","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"notebook","kind":"module","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"NOTEBOOK_CELL_EDITABLE_CONTEXT_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/constants"},{"name":"NOTEBOOK_CELL_MARKDOWN_EDIT_MODE_CONTEXT_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/constants"},{"name":"NOTEBOOK_CELL_RUN_STATE_CONTEXT_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/constants"},{"name":"NOTEBOOK_CELL_TYPE_CONTEXT_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/constants"},{"name":"NOTEBOOK_DISPLAY_ORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/notebookCommon"},{"name":"NOTEBOOK_EDITABLE_CONTEXT_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/constants"},{"name":"NOTEBOOK_EDITOR_CURSOR_BOUNDARY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/notebookCommon"},{"name":"NOTEBOOK_EDITOR_EDITABLE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookBrowser"},{"name":"NOTEBOOK_EDITOR_EXECUTING_NOTEBOOK","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookBrowser"},{"name":"NOTEBOOK_EDITOR_FOCUSED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookBrowser"},{"name":"NOTEBOOK_EXECUTING_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/constants"},{"name":"NOTEBOOK_VIEW_TYPE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/constants"},{"name":"NotebookCellList","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList"},{"name":"NotebookCellListDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer"},{"name":"NotebookCellMetadataDefaults","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel"},{"name":"NotebookCellTextModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/model/notebookCellTextModel"},{"name":"NotebookCodeEditors","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor"},{"name":"NotebookContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebook.contribution"},{"name":"notebookDocumentMetadataDefaults","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/notebookCommon"},{"name":"NotebookEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor"},{"name":"NotebookEditorCellEdit","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostNotebook"},{"name":"NotebookEditorInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditorInput"},{"name":"NotebookEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditorInput"},{"name":"NotebookEditorOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor"},{"name":"NotebookEventDispatcher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher"},{"name":"NotebookFindWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookFindWidget"},{"name":"NotebookLayoutChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher"},{"name":"NotebookMetadataChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher"},{"name":"notebookOutputContainerColor","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor"},{"name":"NotebookOutputRendererInfo","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/notebookOutputRenderer"},{"name":"NotebookOutputRendererInfoStore","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookService"},{"name":"notebookProviderExtensionPoint","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/extensionPoint"},{"name":"NotebookProviderInfo","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/notebookProvider"},{"name":"NotebookProviderInfoStore","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookService"},{"name":"NotebookRegistry","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookRegistry"},{"name":"notebookRendererExtensionPoint","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/extensionPoint"},{"name":"NotebookService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookService"},{"name":"NotebookTextModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/model/notebookTextModel"},{"name":"NotebookViewEventType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher"},{"name":"NotebookViewModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel"},{"name":"notEqual","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"NOTFOUND","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"Notification","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Notification","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"NotificationActionRunner","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsActions"},{"name":"NotificationChangeType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/notifications"},{"name":"NotificationFocusedContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"NotificationHandle","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/notifications"},{"name":"NotificationRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsViewer"},{"name":"NOTIFICATIONS_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"NOTIFICATIONS_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"NOTIFICATIONS_CENTER_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"NOTIFICATIONS_CENTER_HEADER_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"NOTIFICATIONS_CENTER_HEADER_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"NOTIFICATIONS_ERROR_ICON_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"NOTIFICATIONS_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"NOTIFICATIONS_INFO_ICON_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"NOTIFICATIONS_LINKS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"NOTIFICATIONS_TOAST_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"NOTIFICATIONS_WARNING_ICON_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"NotificationsAlerts","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsAlerts"},{"name":"NotificationsCenter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCenter"},{"name":"NotificationsCenterVisibleContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"NotificationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/notification/common/notificationService"},{"name":"NotificationsFilter","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/notification/common/notification"},{"name":"NotificationsList","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsList"},{"name":"NotificationsListDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsViewer"},{"name":"NotificationsModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/notifications"},{"name":"NotificationsStatus","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsStatus"},{"name":"NotificationsToasts","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsToasts"},{"name":"NotificationsToastsVisibleContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"NotificationTemplateRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsViewer"},{"name":"NotificationViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/notifications"},{"name":"NotificationViewItemContentChangeKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/notifications"},{"name":"NotificationViewItemProgress","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/notifications"},{"name":"NOTIMP","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"NotImplementedError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errors"},{"name":"NOTINITIALIZED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"notStrictEqual","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"NsfwWatcherService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/watcher/nsfw/nsfwWatcherService"},{"name":"null","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"NULL_LANGUAGE_IDENTIFIER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/nullMode"},{"name":"NULL_MODE_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/nullMode"},{"name":"NULL_STATE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/nullMode"},{"name":"NullApiDeprecationService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostApiDeprecationService"},{"name":"NullAppender","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetryUtils"},{"name":"NullCommandService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/commands/common/commands"},{"name":"nullExtensionDescription","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensions"},{"name":"NullExtensionService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensions"},{"name":"NullFileSystemProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/test/common/nullFileSystemProvider"},{"name":"NullLifecycleService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/lifecycle/common/lifecycle"},{"name":"NullLogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/log"},{"name":"NullOpenerService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/opener/common/opener"},{"name":"nullRange","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesModels"},{"name":"NullTelemetryService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetryUtils"},{"name":"nullTokenize","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/nullMode"},{"name":"nullTokenize2","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/nullMode"},{"name":"number","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"Number","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"NumberBadge","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/activity/common/activity"},{"name":"O_APPEND","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_CREAT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_DIRECT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_DIRECTORY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_DSYNC","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_EXCL","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_NOATIME","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_NOCTTY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_NOFOLLOW","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_NONBLOCK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_RDONLY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_RDWR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_SYMLINK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_SYNC","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_TRUNC","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_WRONLY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"object","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"Object","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ObjectIdentifier","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHost.protocol"},{"name":"ObjectTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/objectTree"},{"name":"ObjectTreeModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/objectTreeModel"},{"name":"off","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"OfflineAudioCompletionEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"OfflineAudioContext","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"offscreenBuffering","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"OffscreenCanvas","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"OffscreenCanvasRenderingContext2D","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ok","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"ok","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/assert"},{"name":"on","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"on","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"onabort","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onafterprint","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onanimationcancel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onanimationend","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onanimationiteration","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onanimationstart","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onauxclick","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onbeforeprint","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onbeforeunload","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onblur","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"oncancel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"oncanplay","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"oncanplaythrough","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"once","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"once","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"events"},{"name":"once","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/functional"},{"name":"once","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"onchange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onclick","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onclose","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"oncompassneedscalibration","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"oncontextmenu","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"oncuechange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ondblclick","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ondevicelight","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ondevicemotion","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ondeviceorientation","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ondeviceorientationabsolute","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onDidChangeFullscreen","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"onDidChangeKeyboardLayout","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/native-keymap/index"},{"name":"onDidChangeModelLanguage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"onDidChangeZoomLevel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"onDidCreateEditor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"onDidCreateModel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"ondrag","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ondragend","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ondragenter","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ondragexit","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ondragleave","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ondragover","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ondragstart","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ondrop","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ondurationchange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"OneCursor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/oneCursor"},{"name":"OneLineRange","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"onemptied","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onended","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"OnEnterSupport","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/onEnter"},{"name":"oneOf","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"OneReference","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/referencesModel"},{"name":"OneReferenceRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesTree"},{"name":"onerror","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"OneSnippet","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetSession"},{"name":"onExtensionChanged","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensionsUtils"},{"name":"onfocus","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ongotpointercapture","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onhashchange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"OnigScanner","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/onigasm-umd/main"},{"name":"OnigString","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/onigasm-umd/main"},{"name":"oninput","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"oninvalid","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onkeydown","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onkeypress","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onkeyup","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onLanguage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"onlanguagechange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ONLINE_SERVICES_SETTING_TAG","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTreeModels"},{"name":"onload","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onloadeddata","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onloadedmetadata","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onloadstart","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onlostpointercapture","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmessage","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmessageerror","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmousedown","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmouseenter","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmouseleave","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmousemove","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmouseout","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmouseover","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmouseup","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmousewheel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmsgesturechange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmsgesturedoubletap","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmsgestureend","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmsgesturehold","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmsgesturestart","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmsgesturetap","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmsinertiastart","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmspointercancel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmspointerdown","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmspointerenter","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmspointerleave","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmspointermove","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmspointerout","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmspointerover","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmspointerup","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onoffline","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ononline","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onorientationchange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onpagehide","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onpageshow","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onpause","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onplay","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onplaying","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onpointercancel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onpointerdown","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onpointerenter","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onpointerleave","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onpointermove","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onpointerout","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onpointerover","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onpointerup","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onpopstate","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onprogress","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onratechange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onreadystatechange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onrejectionhandled","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onreset","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onresize","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onscroll","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onsecuritypolicyviolation","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onseeked","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onseeking","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onselect","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onselectionchange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onselectstart","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onstalled","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onstorage","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onsubmit","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onsuspend","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ontimeupdate","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ontoggle","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ontouchcancel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ontouchend","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ontouchmove","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ontouchstart","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ontransitioncancel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ontransitionend","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ontransitionrun","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ontransitionstart","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"OnTypeFormattingEditProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"OnTypeRenameAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/rename/onTypeRename"},{"name":"OnTypeRenameContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/rename/onTypeRename"},{"name":"OnTypeRenameProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"onUnexpectedError","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errors"},{"name":"onUnexpectedExternalError","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errors"},{"name":"onunhandledrejection","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onunload","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onvolumechange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onvrdisplayactivate","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onvrdisplayblur","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onvrdisplayconnect","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onvrdisplaydeactivate","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onvrdisplaydisconnect","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onvrdisplayfocus","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onvrdisplaypointerrestricted","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onvrdisplaypointerunrestricted","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onvrdisplaypresentchange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onwaiting","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onwheel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onWillDisposeModel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"open","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"open","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"open","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"inspector"},{"name":"open","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/yauzl/index"},{"name":"OPEN_CREATE","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-sqlite3/index"},{"name":"OPEN_EDITOR_AT_INDEX_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"OPEN_PRIVATECACHE","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-sqlite3/index"},{"name":"OPEN_READONLY","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-sqlite3/index"},{"name":"OPEN_READWRITE","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-sqlite3/index"},{"name":"OPEN_SHAREDCACHE","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-sqlite3/index"},{"name":"OPEN_TO_SIDE_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"OPEN_URI","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-sqlite3/index"},{"name":"OpenAPICommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/apiCommands"},{"name":"openBreakpointSource","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/breakpointsView"},{"name":"OpenContext","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/node/window"},{"name":"OpenDebugConsoleAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugViewlet"},{"name":"opendir","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"opendirSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"OpenEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"OpenEditorsFocusedContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"OpenEditorsGroupContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"OpenEditorsView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/openEditorsView"},{"name":"OpenEditorsVisibleContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"opener","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"OpenerService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/services/openerService"},{"name":"OpenerValidatorContributions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/url/common/trustedDomainsValidator"},{"name":"OpenExplorerViewletAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/files.contribution"},{"name":"OpenExtensionLogsFolderAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/logs/electron-browser/logsActions"},{"name":"OpenExtensionsFolderAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensionsActions"},{"name":"OpenExtensionsViewletAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"OpenFileAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/workspaceActions"},{"name":"OpenFileFolderAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/workspaceActions"},{"name":"openFilePreserveFocusHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"OpenFirstEditorInGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"OpenFolderAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/workspaceActions"},{"name":"OpenFolderAPICommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/apiCommands"},{"name":"OpenInEditorCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"OpenInEditorCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"OpenIssueReporter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/apiCommands"},{"name":"OpenIssueReporterActionId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/issue/common/commands"},{"name":"OpenLastEditorInGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"OpenLatestReleaseNotesInBrowserAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/update/browser/update"},{"name":"OpenLocalFileCommand","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/dialogs/browser/simpleFileDialog"},{"name":"OpenLocalFileFolderCommand","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/dialogs/browser/simpleFileDialog"},{"name":"OpenLocalFolderCommand","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/dialogs/browser/simpleFileDialog"},{"name":"OpenLogsFolderAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/logs/electron-browser/logsActions"},{"name":"OpenMatchToSide","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"openModeSettingKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"OpenNewEditorCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"OpenNewEditorToSideCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"OpenNextEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"OpenNextEditorInGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"OpenNextRecentlyUsedEditorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"OpenNextRecentlyUsedEditorInGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"OpenPreviousEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"OpenPreviousEditorInGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"OpenPreviousRecentlyUsedEditorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"OpenPreviousRecentlyUsedEditorInGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"OpenProcessExplorer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/issue/electron-browser/issueActions"},{"name":"OpenRecentAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/windowActions"},{"name":"OpenResultsInEditorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions"},{"name":"OpenSearchEditorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions"},{"name":"OpenSearchEditorToSideAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions"},{"name":"openSearchView","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"OpenSearchViewletAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"openStdin","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"openSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"OpenUrlAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/url/common/url.contribution"},{"name":"OpenViewPickerAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/quickaccess/browser/viewQuickAccess"},{"name":"OpenWebviewDeveloperToolsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewCommands"},{"name":"openWindowCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"OpenWindowSessionLogFileAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/logs/common/logsActions"},{"name":"OpenWithAPICommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/apiCommands"},{"name":"OpenWorkspaceAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/workspaceActions"},{"name":"OpenWorkspaceButtonContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorWidgets"},{"name":"OpenWorkspaceConfigFileAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/workspaceActions"},{"name":"OperatingSystem","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"Option","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"optional","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/instantiation/common/instantiation"},{"name":"OPTIONS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/argv"},{"name":"or","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"OrganizeImportsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionCommands"},{"name":"organizeImportsCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeAction"},{"name":"orientation","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Orientation","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/sash/sash"},{"name":"origin","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"originalFSPath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"orthogonal","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/grid/gridview"},{"name":"OS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"OS_PROVIDES_FILE_PROTECTION","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Sender"},{"name":"OscillatorNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"outerHeight","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"outerWidth","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"OutgoingMessage","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"http"},{"name":"OutlineAccessibilityProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"OutlineConfigKeys","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outline"},{"name":"OutlineDataSource","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"OutlineElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineModel"},{"name":"OutlineElementRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"OutlineElementTemplate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"OutlineFilter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"OutlineGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineModel"},{"name":"OutlineGroupRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"OutlineGroupTemplate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"OutlineIdentityProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"OutlineItemComparator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"OutlineModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineModel"},{"name":"OutlineNavigationLabelProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"OutlinePane","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/outline/browser/outlinePane"},{"name":"OutlineSortOrder","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"OutlineViewFiltered","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outline"},{"name":"OutlineViewFocused","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outline"},{"name":"OutlineViewId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outline"},{"name":"OutlineVirtualDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"OutOfProcessWin32FolderWatcher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/watcher/win32/csharpWatcherService"},{"name":"OUTPUT_MIME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/output"},{"name":"OUTPUT_MODE_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/output"},{"name":"OUTPUT_SCHEME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/output"},{"name":"OUTPUT_SERVICE_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/output"},{"name":"OUTPUT_VIEW_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/output"},{"name":"OutputAppender","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/output/node/outputAppender"},{"name":"OutputBuilder","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/keybindingIO"},{"name":"OutputChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepSearchUtils"},{"name":"OutputChannelModelService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/output/common/outputChannelModelService"},{"name":"OutputChannelModelService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/output/electron-browser/outputChannelModelService"},{"name":"OutputEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/browser/outputView"},{"name":"OutputLinkComputer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/outputLinkComputer"},{"name":"OutputLinkProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/outputLinkProvider"},{"name":"OutputPosition","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/splitLinesCollection"},{"name":"OutputRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/output/outputRenderer"},{"name":"OutputService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/browser/outputServices"},{"name":"OutputViewPane","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/browser/outputView"},{"name":"outside","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"OverconstrainedError","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"OverflowEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"OverlayWidgetDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/zoneWidget/zoneWidget"},{"name":"OverlayWidgetPositionPreference","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorBrowser"},{"name":"OverlayWidgetPositionPreference","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"OVERRIDE_PROPERTY_PATTERN","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationRegistry"},{"name":"overrideIdentifierFromKey","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"OverviewRuler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/overviewRuler/overviewRuler"},{"name":"overviewRulerAddedForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"overviewRulerCommentingRangeForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentGlyphWidget"},{"name":"overviewRulerCommonContentForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"overviewRulerCurrentContentForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"overviewRulerDeletedForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"overviewRulerError","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"overviewRulerFindMatchForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"overviewRulerIncomingContentForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"overviewRulerInfo","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"OverviewRulerLane","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"OverviewRulerLane","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model"},{"name":"OverviewRulerLane","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"overviewRulerModifiedForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"overviewRulerRangeHighlight","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"overviewRulerSelectionHighlightForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"overviewRulerWarning","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"OverviewRulerZone","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/overviewZoneManager"},{"name":"OverviewZoneManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/overviewZoneManager"},{"name":"package","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"pad","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"PageCoordinates","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorDom"},{"name":"PagedList","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/listPaging"},{"name":"PagedModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/paging"},{"name":"PagedScreenReaderStrategy","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/textAreaState"},{"name":"PageTransitionEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PageViewData","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/PageViewData"},{"name":"PageViewData","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"pageXOffset","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"pageYOffset","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Pane","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/splitview/paneview"},{"name":"PaneComposite","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/panecomposite"},{"name":"PaneCompositePanel","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/panel"},{"name":"Panel","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/panel"},{"name":"PANEL_ACTIVE_TITLE_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"PANEL_ACTIVE_TITLE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"PANEL_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"PANEL_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"PANEL_DRAG_AND_DROP_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"PANEL_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"PANEL_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/outline/browser/outline.contribution"},{"name":"PANEL_INACTIVE_TITLE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"PANEL_INPUT_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"PanelActivityAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/panel/panelActions"},{"name":"PanelDescriptor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/panel"},{"name":"PanelFocusContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/panel"},{"name":"PanelKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"PanelPart","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/panel/panelPart"},{"name":"PanelPositionContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/panel"},{"name":"PanelRegistry","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/panel"},{"name":"PaneView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/splitview/paneview"},{"name":"PannerNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ParameterHintsModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/parameterHints/parameterHintsModel"},{"name":"ParameterHintsWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/parameterHints/parameterHintsWidget"},{"name":"ParameterInformation","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"ParameterInformation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"ParameterInformation","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"parent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"parentPort","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"worker_threads"},{"name":"parse","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"path"},{"name":"parse","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"querystring"},{"name":"parse","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"url"},{"name":"parse","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"parse","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"parse","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/marked/marked"},{"name":"parse","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/marshalling"},{"name":"parse","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/glob"},{"name":"parse","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/console"},{"name":"parse","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"parse","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/plistParser"},{"name":"parse","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskConfiguration"},{"name":"parse","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/tokenization/typescript"},{"name":"parseArgs","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/argv"},{"name":"parseClassifierString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry"},{"name":"parseCLIProcessArgv","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/argvHelper"},{"name":"parseCodicons","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/codicon"},{"name":"ParsedTokenThemeRule","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/tokenization"},{"name":"ParseErrorCode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"parseExtensionDevOptions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionDevOptions"},{"name":"parseExtensionHostPort","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/environmentService"},{"name":"parseFloat","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"parseHrefAndDimensions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/htmlContent"},{"name":"parseInt","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"parseKeyboardLayoutDescription","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/keymapInfo"},{"name":"parseLineAndColumnAware","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/node/paths"},{"name":"parseLinkedText","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/linkedText"},{"name":"parseMainProcessArgv","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/argvHelper"},{"name":"ParseOptions","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"parsePathArg","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/environmentService"},{"name":"parseQuery","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTreeModels"},{"name":"parser","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/marked/marked"},{"name":"Parser","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/parsers"},{"name":"parseRawGrammar","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-textmate/release/main"},{"name":"parseReplaceString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/replacePattern"},{"name":"parseSavedSearchEditor","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorSerialization"},{"name":"parseSearchPort","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/environmentService"},{"name":"parseTokenTheme","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/tokenization"},{"name":"parseTree","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"parseUserDataDir","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/environmentService"},{"name":"parseVersion","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensions/common/extensionValidator"},{"name":"parseWithLocation","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/plistParser"},{"name":"Part","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/part"},{"name":"PartFingerprint","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/view/viewPart"},{"name":"PartFingerprints","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/view/viewPart"},{"name":"PartialModelCursorState","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorCommon"},{"name":"PartialViewCursorState","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorCommon"},{"name":"Parts","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/layout/browser/layoutService"},{"name":"PassThrough","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"stream"},{"name":"PASTE_FILE_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"pasteFileHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"PasteWebviewEditorCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewCommands"},{"name":"patch","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"Path2D","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"pathIncludedInQuery","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"PathIterator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/map"},{"name":"pathOrURIToURI","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"pathsToEditors","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"pathToFileURL","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"url"},{"name":"PatternExcludesFocusedKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"PatternIncludesFocusedKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"PatternInputWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/patternInputWidget"},{"name":"patternsToIExpression","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/test/browser/queryBuilder.test"},{"name":"PAUSE_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"PAUSE_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"PauseableEmitter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/event"},{"name":"PaymentAddress","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PaymentRequest","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PaymentRequestUpdateEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PaymentResponse","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"pbkdf2","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"pbkdf2Sync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"PeekContext","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"peekViewBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"peekViewEditorBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"peekViewEditorGutterBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"peekViewEditorMatchHighlight","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"peekViewEditorMatchHighlightBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"peekViewResultsBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"peekViewResultsFileForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"peekViewResultsMatchForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"peekViewResultsMatchHighlight","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"peekViewResultsSelectionBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"peekViewResultsSelectionForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"peekViewTitleBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"peekViewTitleForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"peekViewTitleInfoForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"PeekViewWidget","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"performance","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"performance","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"perf_hooks"},{"name":"Performance","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PerformanceEntry","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PerformanceMark","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PerformanceMeasure","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PerformanceNavigation","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PerformanceNavigationTiming","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PerformanceObserver","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PerformanceObserver","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"perf_hooks"},{"name":"PerformanceObserverEntryList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PerformanceResourceTiming","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PerformanceTiming","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PerfviewContrib","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/performance/electron-browser/perfviewEditor"},{"name":"PerfviewInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/performance/electron-browser/perfviewEditor"},{"name":"PerfWidgetExternal","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PeriodicWave","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PermissionRequest","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PermissionRequestedEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Permissions","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PermissionStatus","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PersistentConnectionEventType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAgentConnection"},{"name":"PersistentContributableViewsModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/views/views"},{"name":"PersistentProtocol","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc.net"},{"name":"personalbar","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PICK_WORKSPACE_FOLDER_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/workspaceCommands"},{"name":"pickerGroupBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"pickerGroupForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"PickerQuickAccessProvider","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/quickinput/browser/pickerQuickAccess"},{"name":"pid","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"Piece","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase"},{"name":"pieceToQuery","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/fuzzyScorer"},{"name":"PieceTreeBase","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase"},{"name":"PieceTreeTextBuffer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer"},{"name":"PieceTreeTextBufferBuilder","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBufferBuilder"},{"name":"PieceTreeTextBufferFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBufferBuilder"},{"name":"pipeline","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"stream"},{"name":"Placeholder","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetParser"},{"name":"PlaceHolderPanelActivityAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/panel/panelActions"},{"name":"PlaceHolderToggleCompositePinnedAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/activitybar/activitybarActions"},{"name":"PlaceHolderToggleCompositePinnedAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/panel/panelActions"},{"name":"PlaceHolderViewletActivityAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/activitybar/activitybarActions"},{"name":"PLAINTEXT_LANGUAGE_IDENTIFIER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/modesRegistry"},{"name":"PLAINTEXT_MODE_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/modesRegistry"},{"name":"platform","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"platform","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"platform","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/process"},{"name":"platform","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"Platform","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"PlatformToString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"Plugin","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PluginArray","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"POINT_CONVERSION_COMPRESSED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"POINT_CONVERSION_HYBRID","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"POINT_CONVERSION_UNCOMPRESSED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"PointerEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PointerEventHandler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/pointerHandler"},{"name":"PointerHandler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/pointerHandler"},{"name":"PointerHandlerLastRenderData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/mouseTarget"},{"name":"PopStateEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"popup","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/contextmenu/electron-browser/contextmenu"},{"name":"position","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"Position","kind":"alias","kindModifiers":"","sortText":"0"},{"name":"positionFromString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/layout/browser/layoutService"},{"name":"positionIsInRange","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalLinkHelpers"},{"name":"PositionPanelActionConfigs","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/panel/panelActions"},{"name":"positionToString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/layout/browser/layoutService"},{"name":"posix","kind":"module","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"path"},{"name":"posix","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"postMessage","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"powerMonitor","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"powerSaveBlocker","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"POWERSHELL_PATH","kind":"property","kindModifiers":"private,static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Sender"},{"name":"ppid","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"prebakedMiniMaps","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/minimap/minimapPreBaked"},{"name":"PreferencesContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferencesContribution"},{"name":"PreferencesEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesEditor"},{"name":"PreferencesEditorInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesEditorInput"},{"name":"PreferencesLabel","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"PreferencesSearchService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesSearch"},{"name":"PreferencesService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/browser/preferencesService"},{"name":"preferredSideBySideGroupDirection","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/common/editorGroupsService"},{"name":"prefersExecuteOnUI","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionsUtil"},{"name":"prefersExecuteOnWorkspace","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionsUtil"},{"name":"PrefixMemory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestMemory"},{"name":"PrefixSumComputer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/prefixSumComputer"},{"name":"PrefixSumIndexOfResult","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/prefixSumComputer"},{"name":"prepareActions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/actionbar/actionbar"},{"name":"prepareCommand","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/node/terminals"},{"name":"prepareQuery","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/fuzzyScorer"},{"name":"prepend","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"prependListener","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"prependListener","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"prependOnceListener","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"prependOnceListener","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"prerelease","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"PresentationOptions","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"presentationSchema","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugSchemas"},{"name":"PreserveCaseCheckbox","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/findinput/replaceInput"},{"name":"prevCharLength","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"PREVIEW_DIR_NAME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"PREVIOUS_COMPRESSED_FOLDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"PreviousMatchFindAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"PreviousMatchFindAction2","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"PreviousPanelViewAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/panel/panelActions"},{"name":"PreviousSelectionMatchFindAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"PreviousSideBarViewAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/activitybar/activitybarActions"},{"name":"print","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"privateDecrypt","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"privateEncrypt","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"ProblemCollectorEventKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemCollectors"},{"name":"ProblemHandlingStrategy","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemCollectors"},{"name":"ProblemLocationKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher"},{"name":"ProblemMatcherParser","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher"},{"name":"ProblemMatcherRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher"},{"name":"ProblemPatternParser","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher"},{"name":"ProblemPatternRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher"},{"name":"problemsErrorIconForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"problemsInfoIconForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"problemsWarningIconForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"process","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ProcessDataFlag","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/windows-process-tree/index"},{"name":"ProcessExecution","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"ProcessExecution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"ProcessExecutionDTO","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTask"},{"name":"ProcessExecutionOptionsDTO","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTask"},{"name":"ProcessingInstruction","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ProcessRunnerDetector","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/node/processRunnerDetector"},{"name":"ProcessState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"ProcessTaskSystem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/node/processTaskSystem"},{"name":"product","kind":"alias","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/product/common/product"},{"name":"ProductContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/update/browser/update"},{"name":"ProductIconThemeData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/browser/productIconThemeData"},{"name":"productService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"profile","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"profileEnd","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"ProfileSessionState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor"},{"name":"Progress","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/progress/common/progress"},{"name":"ProgressBadge","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/activity/common/activity"},{"name":"ProgressBar","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/progressbar/progressbar"},{"name":"progressBarBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"ProgressBarIndicator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/progress/browser/progressIndicator"},{"name":"ProgressEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ProgressLocation","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"ProgressLocation","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/progress/common/progress"},{"name":"ProgressLocation","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"ProgressLocation","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"ProgressService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/progress/browser/progressService"},{"name":"Promise","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PromiseRejectionEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"promises","kind":"module","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"promises","kind":"module","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"promisify","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"prompt","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"protocol","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"Protocol","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc.net"},{"name":"Protocol","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/node/ipc.electron"},{"name":"ProtocolConstants","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc.net"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"events"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"module"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"stream"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"https-proxy-agent"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"mocha"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Config"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/Domain"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/AvailabilityData"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/Base"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/ContextTagKeys"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/Data"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/DataPoint"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/Envelope"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/EventData"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/StackFrame"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/ExceptionDetails"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/ExceptionData"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/MessageData"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/MetricData"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/PageViewData"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/RemoteDependencyData"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/RequestData"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Context"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Sender"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Channel"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/TelemetryClient"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/NodeClient"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/http-proxy-agent/index"},{"name":"provideDecorations","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/explorerDecorationsProvider"},{"name":"provideSelectionRanges","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/smartSelect/smartSelect"},{"name":"provideSignatureHelp","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/parameterHints/provideSignatureHelp"},{"name":"provideSuggestionItems","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggest"},{"name":"Proxy","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ProxyAgent","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-proxy-agent/index"},{"name":"ProxyAuthHandler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-main/auth"},{"name":"ProxyIdentifier","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/proxyIdentifier"},{"name":"pseudoRandomBytes","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"publicDecrypt","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"publicEncrypt","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"PublicKeyCredential","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PushManager","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PushSubscription","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PushSubscriptionOptions","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"pushToEnd","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"pushToStart","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"Query","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensionQuery"},{"name":"QueryBuilder","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/queryBuilder"},{"name":"QueryGlobTester","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"QueryType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"Queue","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"queueMicrotask","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"QuickAccessController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/quickinput/browser/quickAccess"},{"name":"QuickAccessLeastRecentlyUsedEditorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"QuickAccessLeastRecentlyUsedEditorInGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"QuickAccessNavigateNextAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/quickAccessActions"},{"name":"QuickAccessPreviousEditorFromHistoryAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"QuickAccessPreviousRecentlyUsedEditorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"QuickAccessPreviousRecentlyUsedEditorInGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"QuickAccessRegistry","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/quickinput/common/quickAccess"},{"name":"QuickAccessViewPickerAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/quickaccess/browser/viewQuickAccess"},{"name":"QuickCommandNLS","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standaloneStrings"},{"name":"QuickFixAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionCommands"},{"name":"QuickFixAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersViewActions"},{"name":"QuickFixActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersViewActions"},{"name":"QuickFixController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionCommands"},{"name":"QuickHelpNLS","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standaloneStrings"},{"name":"quickInputBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"QuickInputBox","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/quickinput/browser/quickInputBox"},{"name":"QuickInputButtons","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"QuickInputButtons","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"QuickInputController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/quickinput/browser/quickInput"},{"name":"QuickInputEditorContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/quickInput/standaloneQuickInputServiceImpl"},{"name":"QuickInputEditorWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/quickInput/standaloneQuickInputServiceImpl"},{"name":"quickInputForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"QuickInputList","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/quickinput/browser/quickInputList"},{"name":"QuickInputListFocus","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/quickinput/browser/quickInputList"},{"name":"QuickInputService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/quickinput/browser/quickInput"},{"name":"QuickInputService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/quickinput/browser/quickInputService"},{"name":"quickInputTitleBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"QUICKOPEN_DETAIL_CONFIG","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/browser/taskQuickPick"},{"name":"QUICKOPEN_SKIP_CONFIG","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/browser/taskQuickPick"},{"name":"QuickOutlineNLS","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standaloneStrings"},{"name":"quickPickItemScorerAccessor","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/quickinput/common/quickInput"},{"name":"QuickPickItemScorerAccessor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/quickinput/common/quickInput"},{"name":"QuickSwitchWindow","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"},{"name":"R_OK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"raceCancellation","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"raceTimeout","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"RadioGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/actions"},{"name":"RadioNodeList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RandomAccessReader","kind":"class","kindModifiers":"abstract,export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/yauzl/index"},{"name":"RandomBasedVariableResolver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetVariables"},{"name":"randomBytes","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"randomFill","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"randomFillSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"randomPort","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/ports"},{"name":"RandomSource","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"range","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"Range","kind":"alias","kindModifiers":"","sortText":"0"},{"name":"RangeError","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RangeHighlightDecorations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/rangeDecorations"},{"name":"RangeHighlightDecorations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/searchModel"},{"name":"RangeMap","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/rangeMap"},{"name":"RangesCollector","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/indentRangeProvider"},{"name":"RangesCollector","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/syntaxRangeProvider"},{"name":"RangeUtil","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/lines/rangeUtil"},{"name":"RatingsWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets"},{"name":"RawContentChangedType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelEvents"},{"name":"RawContextKey","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"RawDebugSession","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/rawDebugSession"},{"name":"rawListeners","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"RawObjectReplElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/replModel"},{"name":"rbDelete","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase"},{"name":"rcompare","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"rcompareIdentifiers","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"ReactionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/reactionsAction"},{"name":"ReactionActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/reactionsAction"},{"name":"read","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"Readable","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"stream"},{"name":"ReadableStream","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ReadableStreamReader","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"readableToBuffer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"readCharWidths","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/config/charWidthReader"},{"name":"readdir","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"readdir","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"readDirsInDir","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"readdirSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"readdirSync","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"readdirWithFileTypes","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"readFile","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"readFile","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"readFileSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"readFontInfo","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/config/configuration"},{"name":"readFromStdin","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/stdin"},{"name":"readlink","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"readlinkSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"readonly","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errors"},{"name":"ReadonlyEditorContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"readRawMapping","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/test/electron-browser/keyboardMapperTestUtils"},{"name":"ReadStream","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"ReadStream","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tty"},{"name":"readSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"readTrustedDomains","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/url/common/trustedDomains"},{"name":"readUInt16LE","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"readUInt32BE","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"readUInt32LE","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"readUInt8","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"realcaseSync","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/extpath"},{"name":"realpath","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"realpath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/extpath"},{"name":"realpathSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"realpathSync","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/extpath"},{"name":"ReapplyBreakpointsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"RecommendationWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets"},{"name":"RecommendedExtensionsView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews"},{"name":"recomputeMaxEnd","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/intervalTree"},{"name":"recomputeTreeMetadata","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase"},{"name":"ReconnectionPermanentFailureEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAgentConnection"},{"name":"ReconnectionRunningEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAgentConnection"},{"name":"ReconnectionWaitEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAgentConnection"},{"name":"Recoverable","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"repl"},{"name":"RedoWebviewEditorCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewCommands"},{"name":"RefactorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionCommands"},{"name":"refactorCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeAction"},{"name":"RefCountedStyleSheet","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/services/codeEditorServiceImpl"},{"name":"ReferenceCollection","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/lifecycle"},{"name":"ReferenceError","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ReferenceProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"ReferencesController","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesController"},{"name":"ReferencesModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/referencesModel"},{"name":"ReferenceWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesWidget"},{"name":"Reflect","kind":"module","kindModifiers":"declare","sortText":"4"},{"name":"RefreshAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"RefreshExplorerView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"REFUSED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"REG_BINARY","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"REG_DWORD","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"REG_EXPAND_SZ","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"REG_MULTI_SZ","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"REG_NONE","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"REG_QWORD","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"REG_SZ","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"REG_TYPES","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"RegexCheckbox","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/findinput/findInputCheckboxes"},{"name":"RegExp","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"regExpContainsBackreference","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"regExpFlags","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"regExpLeadsToEndlessLoop","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"register","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerAction2","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/common/actions"},{"name":"registerCodeActionProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerCodeLensProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerColor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"registerColorProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerColors","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalColorRegistry"},{"name":"registerColorThemeExtensionPoint","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/themeExtensionPoints"},{"name":"registerColorThemeSchemas","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/colorThemeSchema"},{"name":"registerCommands","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"registerCompletionItemProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerConfiguration","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"registerContextMenuListener","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/contextmenu/electron-main/contextmenu"},{"name":"registerContributions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/replaceContributions"},{"name":"registerContributions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchWidget"},{"name":"registerDeclarationProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerDefaultLanguageCommand","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorExtensions"},{"name":"registerDefinitionProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerDiffEditorContribution","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorExtensions"},{"name":"registerDocumentFormattingEditProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerDocumentHighlightProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerDocumentRangeFormattingEditProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerDocumentRangeSemanticTokensProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerDocumentSemanticTokensProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerDocumentSymbolProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerEditorAction","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorExtensions"},{"name":"registerEditorCommand","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorExtensions"},{"name":"registerEditorContribution","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorExtensions"},{"name":"registerFileIconThemeExtensionPoint","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/themeExtensionPoints"},{"name":"registerFileIconThemeSchemas","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/fileIconThemeSchema"},{"name":"registerFileProtocol","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewProtocols"},{"name":"registerFoldingRangeProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerHoverProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerIcon","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/iconRegistry"},{"name":"registerImplementationProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerInstantiatedEditorAction","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorExtensions"},{"name":"registerLanguageCommand","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorExtensions"},{"name":"registerLinkProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerModelAndPositionCommand","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorExtensions"},{"name":"registerModelCommand","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorExtensions"},{"name":"registerNotificationCommands","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"registerOnTypeFormattingEditProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerOnTypeRenameProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerOutputTransform","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookRegistry"},{"name":"registerProductIconThemeExtensionPoint","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/themeExtensionPoints"},{"name":"registerProductIconThemeSchemas","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/productIconThemeSchema"},{"name":"registerReferenceProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerRemoteContributions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/electron-browser/terminalRemote"},{"name":"registerRenameProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerSelectionRangeProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerSignatureHelpProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerSingleton","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/instantiation/common/extensions"},{"name":"registerTerminalActions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions"},{"name":"registerTestEditor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"registerTextMime","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/mime"},{"name":"registerThemingParticipant","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/themeService"},{"name":"registerTypeDefinitionProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerWindowDriver","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/driver/browser/driver"},{"name":"registerWindowDriver","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/driver/electron-browser/driver"},{"name":"Registry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/registry/common/platform"},{"name":"Registry","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-textmate/release/main"},{"name":"ReindentLinesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentation"},{"name":"ReindentSelectedLinesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentation"},{"name":"ReinstallAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"rejects","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"RelatedInformation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersModel"},{"name":"RelatedInformationRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersTreeViewer"},{"name":"relative","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"path"},{"name":"relative","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"relativePath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"RelativePattern","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"RelativePattern","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"Relay","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/event"},{"name":"RelayURLService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/url/electron-browser/urlService"},{"name":"release","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"release","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"releaseEvents","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"ReleaseNotesManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/update/browser/releaseNotesEditor"},{"name":"ReloadAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ReloadWebviewAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewCommands"},{"name":"ReloadWindowAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/windowActions"},{"name":"ReloadWindowWithExtensionsDisabledAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"},{"name":"remeasureFonts","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"remote","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"REMOTE_EXPLORER_TYPE_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/common/remoteExplorerService"},{"name":"REMOTE_FILE_SYSTEM_CHANNEL_NAME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/common/remoteAgentFileSystemChannel"},{"name":"REMOTE_HOST_SCHEME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteHosts"},{"name":"REMOTE_MACHINE_SCOPES","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"RemoteAgentConnection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/common/abstractRemoteAgentService"},{"name":"RemoteAgentService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/browser/remoteAgentServiceImpl"},{"name":"RemoteAgentService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/electron-browser/remoteAgentServiceImpl"},{"name":"RemoteAuthorities","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/network"},{"name":"RemoteAuthorityResolverError","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"RemoteAuthorityResolverError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAuthorityResolver"},{"name":"RemoteAuthorityResolverError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"RemoteAuthorityResolverErrorCode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAuthorityResolver"},{"name":"RemoteAuthorityResolverService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/browser/remoteAuthorityResolverService"},{"name":"RemoteAuthorityResolverService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/electron-browser/remoteAuthorityResolverService"},{"name":"RemoteBadgeWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets"},{"name":"RemoteConnectionState","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/contextkeys"},{"name":"RemoteDependencyData","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/RemoteDependencyData"},{"name":"RemoteDependencyData","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"RemoteDependencyDataConstants","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Constants"},{"name":"RemoteExtensionEnvironmentChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/common/remoteAgentEnvironmentChannel"},{"name":"RemoteExtensionHostClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/remoteExtensionHostClient"},{"name":"RemoteExtensionLogFileName","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/common/remoteAgentService"},{"name":"RemoteExtensionManagementChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/electron-browser/remoteExtensionManagementIpc"},{"name":"RemoteExtensionsInstaller","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/remoteExtensionsInstaller"},{"name":"RemoteFileDialogContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/contextkeys"},{"name":"RemoteFileSystemProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/common/remoteAgentFileSystemChannel"},{"name":"RemoteFileSystemProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"RemoteInstallAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"RemoteNameContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/contextkeys"},{"name":"RemoteSearchService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/searchService"},{"name":"RemoteUserConfiguration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/browser/configuration"},{"name":"RemoteViewPaneContainer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/remote/browser/remote"},{"name":"RemoteWindowActiveIndicator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/remote/browser/remoteIndicator"},{"name":"REMOVE_ROOT_FOLDER_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"REMOVE_ROOT_FOLDER_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"removeAccents","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/normalization"},{"name":"RemoveAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"RemoveActionId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"RemoveAllBreakpointsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"removeAllListeners","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"removeAllListeners","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"RemoveAllWatchExpressionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"removeAnsiEscapeCodes","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"RemoveBreakpointAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"removeClass","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"removeClasses","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"removeCSSRulesContainingSelector","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"removeElementsAfterNulls","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/keybinding/common/resolvedKeybindingItem"},{"name":"removeEventListener","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"RemoveFromRecentlyOpenedAPICommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/apiCommands"},{"name":"removeFromValueTree","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"removeListener","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"removeListener","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"removeMarkdownEscapes","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/htmlContent"},{"name":"removeNode","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"removeProperty","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/jsonEdit"},{"name":"removeTabIndexAndUpdateFocus","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"removeTrailingPathSeparator","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"rename","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"rename","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"rename","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/rename/rename"},{"name":"RenameAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/rename/rename"},{"name":"renameHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"renameIgnoreError","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"RenameInputField","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/rename/renameInputField"},{"name":"RenameProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"renameSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"renderCodicons","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/codicons"},{"name":"RenderedLinesCollection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/view/viewLayer"},{"name":"Renderer","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/marked/marked"},{"name":"Renderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsList"},{"name":"rendererLogChannelId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/logs/common/logConstants"},{"name":"renderExpressionValue","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/baseDebugView"},{"name":"renderFormattedText","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/formattedTextRenderer"},{"name":"RenderIndentGuides","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/abstractTree"},{"name":"RenderingContext","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/renderingContext"},{"name":"RenderLineInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/viewLineRenderer"},{"name":"RenderLineNumbersType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"RenderLineNumbersType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"RenderLineOutput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/viewLineRenderer"},{"name":"RenderLineOutput2","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/viewLineRenderer"},{"name":"renderMarkdown","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/markdownRenderer"},{"name":"renderMarkdownDocument","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markdown/common/markdownDocumentRenderer"},{"name":"RenderMinimap","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"RenderMinimap","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"renderText","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/formattedTextRenderer"},{"name":"renderVariable","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/baseDebugView"},{"name":"renderViewLine","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/viewLineRenderer"},{"name":"renderViewLine2","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/viewLineRenderer"},{"name":"renderViewTree","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/baseDebugView"},{"name":"RenderWhitespace","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/viewLineRenderer"},{"name":"ReopenClosedEditorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"ReopenResourcesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"repeat","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"Repl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/repl"},{"name":"REPL_MODE_SLOPPY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"repl"},{"name":"REPL_MODE_STRICT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"repl"},{"name":"REPL_VIEW_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"ReplAccessibilityProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/replViewer"},{"name":"ReplaceAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"ReplaceActionId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"ReplaceActiveKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"ReplaceAllAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"ReplaceAllCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/replaceAllCommand"},{"name":"ReplaceAllInFileActionId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"ReplaceAllInFolderAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"ReplaceAllInFolderActionId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"ReplaceCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/commands/replaceCommand"},{"name":"ReplaceCommandThatPreservesSelection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/commands/replaceCommand"},{"name":"ReplaceCommandThatSelectsText","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/commands/replaceCommand"},{"name":"ReplaceCommandWithOffsetCursorState","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/commands/replaceCommand"},{"name":"ReplaceCommandWithoutChangingPosition","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/commands/replaceCommand"},{"name":"ReplaceInFilesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"ReplaceInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/findinput/replaceInput"},{"name":"ReplaceInputBoxFocusedKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"ReplacePattern","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/replacePattern"},{"name":"ReplacePattern","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/replace"},{"name":"ReplacePiece","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/replacePattern"},{"name":"ReplacePreviewContentProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/replaceService"},{"name":"ReplaceService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/replaceService"},{"name":"ReplDataSource","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/replViewer"},{"name":"ReplDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/replViewer"},{"name":"ReplEvaluationInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/replModel"},{"name":"ReplEvaluationInputsRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/replViewer"},{"name":"ReplEvaluationResult","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/replModel"},{"name":"ReplEvaluationResultsRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/replViewer"},{"name":"ReplGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/replModel"},{"name":"ReplGroupRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/replViewer"},{"name":"ReplModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/replModel"},{"name":"ReplRawObjectsRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/replViewer"},{"name":"REPLServer","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"repl"},{"name":"ReplSimpleElementsRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/replViewer"},{"name":"ReplVariablesRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/replViewer"},{"name":"report","kind":"property","kindModifiers":"declare,optional","sortText":"5","hasAction":true,"source":"process"},{"name":"reporters","kind":"module","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"mocha"},{"name":"ReportExtensionIssueAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor"},{"name":"ReportPerformanceIssueUsingReporterAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/issue/electron-browser/issueActions"},{"name":"RepositoryPane","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/repositoryPane"},{"name":"RepositoryViewDescriptor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/repositoryPane"},{"name":"request","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"http"},{"name":"request","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"https"},{"name":"request","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/request/browser/request"},{"name":"Request","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"requestAnimationFrame","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"RequestChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/request/common/requestIpc"},{"name":"RequestChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/request/common/requestIpc"},{"name":"RequestData","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/RequestData"},{"name":"RequestData","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"RequestInitiator","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/rpcProtocol"},{"name":"RequestMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/request/electron-main/requestMainService"},{"name":"RequestService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/request/browser/requestService"},{"name":"RequestService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/request/node/requestService"},{"name":"RequestType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc"},{"name":"require","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RequireInterceptor","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostRequireInterceptor"},{"name":"RerunSearchEditorSearchAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions"},{"name":"RerunSearchEditorSearchCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"ResetFocusedViewLocationAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"ResetGroupSizesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"resetSentinel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase"},{"name":"ResetViewLocationsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"resizeBy","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"resizeTo","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"resolve","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"resolve","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"path"},{"name":"resolve","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"url"},{"name":"resolve","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"resolve4","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"resolve6","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"resolveAny","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"resolveCname","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"resolveColorValue","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"resolveCommonProperties","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/node/commonProperties"},{"name":"ResolvedAuthority","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"ResolvedAuthority","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"ResolvedKeybinding","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keyCodes"},{"name":"ResolvedKeybindingItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/keybinding/common/resolvedKeybindingItem"},{"name":"ResolvedKeybindingPart","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keyCodes"},{"name":"resolveExtensionsSettings","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"resolveMarketplaceHeaders","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionGalleryService"},{"name":"resolveMx","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"resolveNaptr","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"resolveNs","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"resolvePath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"resolvePatternsForProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"resolvePtr","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"Resolver","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"resolveSettingsTree","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"resolveSoa","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"resolveSrv","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"resolveTerminalEncoding","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/terminalEncoding"},{"name":"resolveTxt","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"resolveWorkbenchCommonProperties","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/browser/workbenchCommonProperties"},{"name":"resolveWorkbenchCommonProperties","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/node/workbenchCommonProperties"},{"name":"ResourceContextKey","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/resources"},{"name":"ResourceDragAndDrop","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersTreeViewer"},{"name":"ResourceEditorInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor/resourceEditorInput"},{"name":"ResourceEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor/resourceEditorModel"},{"name":"ResourceGlobMatcher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"ResourceGlobMatcher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/resources"},{"name":"ResourceLabel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/labels"},{"name":"ResourceLabels","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/labels"},{"name":"resourceLanguageSettingsSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationRegistry"},{"name":"ResourceMap","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/map"},{"name":"ResourceMarkers","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersModel"},{"name":"ResourceMarkersRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersTreeViewer"},{"name":"ResourceQueue","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"ResourcesDropHandler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/dnd"},{"name":"ResourceSelectedForCompareContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"resourceSettings","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationRegistry"},{"name":"resourcesPath","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"ResourceTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resourceTree"},{"name":"resourceUsage","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"ResourceWithCommentsRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentsTreeViewer"},{"name":"ResourceWithCommentThreads","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/common/commentModel"},{"name":"Response","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ResponseType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc"},{"name":"ResponsiveState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/rpcProtocol"},{"name":"RESTART_FRAME_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"RESTART_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"RESTART_SESSION_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"restore","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"restoreFontInfo","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/config/configuration"},{"name":"restoreParentsScrollTop","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"restoreRecentlyOpened","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"restoreWindowsState","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/electron-main/windowsStateStorage"},{"name":"RestrictedRenderingContext","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/renderingContext"},{"name":"resultIsMatch","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"retry","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"return","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"REVEAL_IN_EXPLORER_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"RevealInSideBarForSearchResults","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"RevealKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"RevealLine_","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/coreCommands"},{"name":"RevealProblemKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"revealResourcesInOS","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/electron-browser/fileCommands"},{"name":"RevealTarget","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorCommon"},{"name":"reverse","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"REVERSE_CONTINUE_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"REVERT_FILE_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"RevertAndCloseEditorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"revertLocalChangesCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler"},{"name":"ReviewViewZone","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentsEditorContribution"},{"name":"ReviewZoneWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentThreadWidget"},{"name":"revive","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/marshalling"},{"name":"reviveQuery","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostSearch"},{"name":"reviveWebviewExtensionDescription","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewEditorInputFactory"},{"name":"reviveWorkspaceEditDto","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHost.protocol"},{"name":"reviveWorkspaceIdentifier","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"rewriteAbsolutePaths","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"v8-inspect-profiler"},{"name":"rewriteWorkspaceFileForNewLocation","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"RGBA","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/color"},{"name":"RGBA8","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/rgba"},{"name":"rgErrorMsgForDisplay","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/fileSearch"},{"name":"rgErrorMsgForDisplay","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepTextSearchEngine"},{"name":"rgPath","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-ripgrep/lib/index"},{"name":"RichEditBracket","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/richEditBrackets"},{"name":"RichEditBrackets","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/richEditBrackets"},{"name":"RichEditSupport","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/languageConfigurationRegistry"},{"name":"rightRotate","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase"},{"name":"righttest","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase"},{"name":"rimraf","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"RimRafMode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"rimrafSync","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"RipgrepParser","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepTextSearchEngine"},{"name":"RipgrepSearchProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepSearchProvider"},{"name":"RipgrepTextSearchEngine","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepTextSearchEngine"},{"name":"rmdir","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"rmdirSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"rootCertificates","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tls"},{"name":"rot","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/numbers"},{"name":"RotatingLogger","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/spdlog/index"},{"name":"RowCache","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/rowCache"},{"name":"RPCProtocol","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/rpcProtocol"},{"name":"RSA_NO_PADDING","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"RSA_PKCS1_OAEP_PADDING","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"RSA_PKCS1_PADDING","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"RSA_PKCS1_PSS_PADDING","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"RSA_SSLV23_PADDING","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"RSA_X931_PADDING","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"rsort","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"RTCCertificate","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCDataChannel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCDataChannelEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCDtlsTransport","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCDtlsTransportStateChangedEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCDtmfSender","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCDTMFSender","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCDTMFToneChangeEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCError","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCErrorEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCIceCandidate","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCIceCandidatePairChangedEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCIceGatherer","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCIceGathererEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCIceTransport","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCIceTransportStateChangedEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCIdentityAssertion","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCPeerConnection","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCPeerConnectionIceErrorEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCPeerConnectionIceEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCRtpReceiver","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCRtpSender","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCRtpTransceiver","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCSctpTransport","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCSessionDescription","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCSrtpSdesTransport","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCSsrcConflictEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCStatsEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCStatsProvider","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCStatsReport","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCTrackEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"rtrim","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"Rulers","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/rulers/rulers"},{"name":"run","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"RunAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"runAtThisOrScheduleAtNextAnimationFrame","kind":"let","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"RunAutomaticTasks","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/browser/runAutomaticTasks"},{"name":"runInContext","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"vm"},{"name":"runInExternalTerminal","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/node/terminals"},{"name":"runInNewContext","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"vm"},{"name":"runInThisContext","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"vm"},{"name":"runMain","kind":"method","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"module"},{"name":"RunOnceScheduler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"RunOnceWorker","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"RunOnOptions","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"RunOnOptions","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskConfiguration"},{"name":"RunOptions","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"RunOptions","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskConfiguration"},{"name":"RuntimeExtensionsEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor"},{"name":"RuntimeExtensionsInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsInput"},{"name":"RuntimeType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"RunToCursorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugEditorActions"},{"name":"runWhenIdle","kind":"let","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"S_IFBLK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IFCHR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IFDIR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IFIFO","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IFLNK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IFMT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IFREG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IFSOCK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IRGRP","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IROTH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IRUSR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IRWXG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IRWXO","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IRWXU","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IWGRP","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IWOTH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IWUSR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IXGRP","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IXOTH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IXUSR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"safeBtoa","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"safeStringify","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/objects"},{"name":"sandbox","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"sandboxed","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"sanitize","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchCommon"},{"name":"sanitizeFilePath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/extpath"},{"name":"sanitizeGridNodeDescriptor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/grid/grid"},{"name":"sanitizeProcessEnvironment","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/processes"},{"name":"sanitizeRanges","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/syntaxRangeProvider"},{"name":"Sash","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/sash/sash"},{"name":"SashState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/sash/sash"},{"name":"satisfies","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"SAVE_ALL_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"SAVE_ALL_IN_GROUP_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"SAVE_ALL_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"SAVE_FILE_AS_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"SAVE_FILE_AS_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"SAVE_FILE_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"SAVE_FILE_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"SAVE_FILE_WITHOUT_FORMATTING_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"SAVE_FILE_WITHOUT_FORMATTING_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"SAVE_FILES_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"SaveAllAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"SaveAllInGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"SaveExtensionHostProfileAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor"},{"name":"SaveLocalFileCommand","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/dialogs/browser/simpleFileDialog"},{"name":"saveParentsScrollTop","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"SaveParticipant","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadSaveParticipant"},{"name":"SaveParticipantsContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/saveParticipants"},{"name":"SaveReason","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"SaveWorkspaceAsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/workspaceActions"},{"name":"ScanCode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/scanCode"},{"name":"ScanCodeBinding","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/scanCode"},{"name":"ScanCodeUtils","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/scanCode"},{"name":"ScanError","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"Scanner","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetParser"},{"name":"scheduleAtNextAnimationFrame","kind":"let","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"schema","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionsRegistry"},{"name":"schema","kind":"alias","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/jsonSchemaCommon"},{"name":"schema","kind":"alias","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/jsonSchema_v1"},{"name":"schema","kind":"alias","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/jsonSchema_v2"},{"name":"Schemas","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/network"},{"name":"Schemas","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher"},{"name":"scm","kind":"module","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SCMAccessibilityProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/repositoryPane"},{"name":"SCMMenus","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/menus"},{"name":"SCMService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/common/scmService"},{"name":"SCMStatusController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/activity"},{"name":"SCMTreeKeyboardNavigationLabelProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/repositoryPane"},{"name":"SCMTreeSorter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/repositoryPane"},{"name":"SCMViewPaneContainer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/scmViewlet"},{"name":"Scope","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"ScopedCredential","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ScopedCredentialInfo","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ScopedLineTokens","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports"},{"name":"score","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/languageSelector"},{"name":"scoreFuzzy","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/fuzzyScorer"},{"name":"scoreFuzzy2","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/fuzzyScorer"},{"name":"scoreItemFuzzy","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/fuzzyScorer"},{"name":"screen","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"screen","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"Screen","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"screenLeft","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ScreenOrientation","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"screenTop","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"screenX","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"screenY","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Script","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"vm"},{"name":"ScriptProcessorNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"scroll","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"Scrollable","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/scrollable"},{"name":"ScrollableElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/scrollbar/scrollableElement"},{"name":"ScrollbarArrow","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/scrollbar/scrollbarArrow"},{"name":"scrollbars","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"scrollbarShadow","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"scrollbarSliderActiveBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"scrollbarSliderBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"scrollbarSliderHoverBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"ScrollbarState","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/scrollbar/scrollbarState"},{"name":"ScrollbarVisibility","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/scrollable"},{"name":"ScrollbarVisibility","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"ScrollbarVisibilityController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/scrollbar/scrollbarVisibilityController"},{"name":"scrollBy","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"ScrollDecorationViewPart","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration"},{"name":"ScrollPosition","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/addons/commandTrackerAddon"},{"name":"ScrollState","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/scrollable"},{"name":"scrollTo","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"ScrollType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/editorCommon"},{"name":"ScrollType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"scrollX","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"scrollY","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"scrypt","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"scryptSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"sdkVersion","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Context"},{"name":"SEARCH_EXCLUDE_CONFIG","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"SearchAccessibilityProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchResultsView"},{"name":"SearchAddon","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/xterm-addon-search/typings/xterm-addon-search"},{"name":"SearchChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/searchIpc"},{"name":"SearchChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/searchIpc"},{"name":"SearchCompletionExitCode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"SearchData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelSearch"},{"name":"SearchDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchResultsView"},{"name":"SearchDND","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchResultsView"},{"name":"SearchEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditor"},{"name":"SearchEditorBodyScheme","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"searchEditorFindMatch","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"searchEditorFindMatchBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"SearchEditorFindMatchClass","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"SearchEditorID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"SearchEditorInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorInput"},{"name":"SearchEditorScheme","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"searchEditorTextInputBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditor"},{"name":"Searcher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelSearch"},{"name":"SearchError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"SearchErrorCode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"SearchHistoryService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/searchHistoryService"},{"name":"SearchInputBoxFocusedKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"searchMatchComparer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/searchModel"},{"name":"SearchModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/searchModel"},{"name":"SearchParams","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelSearch"},{"name":"SearchProviderType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"SearchRange","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"SearchResult","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/searchModel"},{"name":"SearchResultIdx","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTreeModels"},{"name":"SearchResultModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTreeModels"},{"name":"SearchService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/searchService"},{"name":"SearchService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/rawSearchService"},{"name":"SearchSortOrder","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"SearchView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchView"},{"name":"SearchViewFocusedKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"SearchViewPosition","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchView"},{"name":"SearchViewVisibleKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"SearchWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesWidgets"},{"name":"SearchWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchWidget"},{"name":"SearchWorkbenchService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/searchModel"},{"name":"SecurityPolicyViolationEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SELECT_FOR_COMPARE_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"SelectActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/actionbar/actionbar"},{"name":"selectAllSearchEditorMatchesCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions"},{"name":"SelectAllSearchEditorMatchesCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"SelectAllTerminalAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions"},{"name":"SelectAllWebviewEditorCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewCommands"},{"name":"SelectAndStartAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"selectBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"selectBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"SelectBox","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/selectBox/selectBox"},{"name":"SelectBoxList","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/selectBox/selectBoxCustom"},{"name":"SelectBoxNative","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/selectBox/selectBoxNative"},{"name":"SelectColorThemeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/themes/browser/themes.contribution"},{"name":"SelectDefaultShellWindowsTerminalAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions"},{"name":"selectForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"SelectHighlightsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/multicursor/multicursor"},{"name":"Selection","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Selection","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"Selection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/selection"},{"name":"Selection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"Selection","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"Selection","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/editor.api"},{"name":"selectionBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"SelectionBasedVariableResolver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetVariables"},{"name":"SelectionClipboard","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/electron-browser/selectionClipboard"},{"name":"SelectionClipboardContributionID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/selectionClipboard"},{"name":"SelectionDirection","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/selection"},{"name":"SelectionDirection","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"SelectionDirection","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/editor.api"},{"name":"SelectionHighlighter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/multicursor/multicursor"},{"name":"SelectionMatchFindAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"SelectionRange","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SelectionRange","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"SelectionRange","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"SelectionRangeRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"SelectionsOverlay","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/selections/selections"},{"name":"selectListBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"selectorPattern","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry"},{"name":"self","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SEMANTIC_HIGHLIGHTING_SETTING_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/modelServiceImpl"},{"name":"SemanticTokens","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SemanticTokens","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"SemanticTokensBuilder","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SemanticTokensBuilder","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"SemanticTokensEdit","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SemanticTokensEdit","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"SemanticTokensEdits","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SemanticTokensEdits","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"SemanticTokensHelp","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/semanticTokensHelp"},{"name":"SemanticTokensLegend","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SemanticTokensLegend","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"SemanticTokensProviderStyling","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/semanticTokensProviderStyling"},{"name":"SemanticTokensProviderStylingConstants","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/semanticTokensProviderStyling"},{"name":"SemVer","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"SEMVER_SPEC_VERSION","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"send","kind":"method","kindModifiers":"declare,optional","sortText":"5","hasAction":true,"source":"process"},{"name":"Sender","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Sender"},{"name":"SENTINEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/intervalTree"},{"name":"SENTINEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase"},{"name":"sep","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"path"},{"name":"sep","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"Separator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/actionbar/actionbar"},{"name":"sequence","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"Sequence","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/sequence"},{"name":"Sequencer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"SerializableFileMatch","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"SerializableGrid","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/grid/grid"},{"name":"serialize","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"v8"},{"name":"serializeEnvironmentVariableCollection","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariableShared"},{"name":"serializeFontInfo","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/config/configuration"},{"name":"serializePipePositions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/test/wordTestUtils"},{"name":"Serializer","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"v8"},{"name":"serializeSearchConfiguration","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorSerialization"},{"name":"serializeSearchError","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"serializeSearchResultForEditor","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorSerialization"},{"name":"serve","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/node/ipc.net"},{"name":"serve","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/driver/electron-main/driver"},{"name":"Server","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"http"},{"name":"Server","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"https"},{"name":"Server","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"net"},{"name":"Server","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tls"},{"name":"Server","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/electron-main/ipc.electron-main"},{"name":"Server","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/node/ipc.cp"},{"name":"Server","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/node/ipc.net"},{"name":"ServerExtensionsView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews"},{"name":"ServerResponse","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"http"},{"name":"SERVFAIL","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"SERVICE_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensions"},{"name":"ServiceCollection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/instantiation/common/serviceCollection"},{"name":"ServiceUIFrameContext","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ServiceWorker","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ServiceWorkerContainer","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ServiceWorkerMessageEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ServiceWorkerRegistration","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"session","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"Session","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"inspector"},{"name":"Session","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"sessionStorage","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Set","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SET_CONTEXT_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"setARIAContainer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/aria/aria"},{"name":"setAsyncMode","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/spdlog/index"},{"name":"setCollapseStateAtLevel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/foldingModel"},{"name":"setCollapseStateForMatchingLines","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/foldingModel"},{"name":"setCollapseStateForType","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/foldingModel"},{"name":"setCollapseStateLevelsDown","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/foldingModel"},{"name":"setCollapseStateLevelsUp","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/foldingModel"},{"name":"setCollapseStateUp","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/foldingModel"},{"name":"SetColorThemeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"SetEditorLayoutAPICommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/apiCommands"},{"name":"setegid","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"seteuid","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"setFdLimit","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"SetFileIconThemeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"setFlagsFromString","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"v8"},{"name":"setFullscreen","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"setgid","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"setGlobalLeakWarningThreshold","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/event"},{"name":"setgroups","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"setImmediate","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"setImmediate","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"timers"},{"name":"setImmediate","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"setInterval","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"setInterval","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"timers"},{"name":"setLanguageConfiguration","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"SetLogLevelAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/logs/common/logsActions"},{"name":"SetMap","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/collections"},{"name":"setMaxListeners","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"setMaxListeners","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"setModelLanguage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"setModelMarkers","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"setMonarchTokensProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"setNodeStickiness","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/intervalTree"},{"name":"setOptions","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/marked/marked"},{"name":"SetPanelPositionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/panel/panelActions"},{"name":"setPassword","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/keytar/keytar"},{"name":"setPassword","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/keytar/index"},{"name":"setPriority","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"SetProductIconThemeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"setProperty","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/jsonEdit"},{"name":"setServers","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"setSnippetSuggestSupport","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggest"},{"name":"setTheme","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"setTimeout","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"setTimeout","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"timers"},{"name":"SettingArrayRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"SettingBoolRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"SettingComplexRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"SettingEnumRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"SettingExcludeRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"SettingGroupRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"settingKeyToDisplayFormat","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTreeModels"},{"name":"SettingMatches","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesSearch"},{"name":"SettingNewExtensionsRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"SettingNumberRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"settings","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"SETTINGS_COMMAND_OPEN_SETTINGS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"SETTINGS_EDITOR_COMMAND_CLEAR_SEARCH_RESULTS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"SETTINGS_EDITOR_COMMAND_EDIT_FOCUSED_SETTING","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"SETTINGS_EDITOR_COMMAND_FILTER_MODIFIED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"SETTINGS_EDITOR_COMMAND_FILTER_ONLINE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"SETTINGS_EDITOR_COMMAND_FOCUS_FILE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"SETTINGS_EDITOR_COMMAND_FOCUS_NEXT_SETTING","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"SETTINGS_EDITOR_COMMAND_FOCUS_PREVIOUS_SETTING","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"SETTINGS_EDITOR_COMMAND_FOCUS_SETTINGS_FROM_SEARCH","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"SETTINGS_EDITOR_COMMAND_FOCUS_SETTINGS_LIST","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"SETTINGS_EDITOR_COMMAND_FOCUS_TOC","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"SETTINGS_EDITOR_COMMAND_SEARCH","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"SETTINGS_EDITOR_COMMAND_SHOW_CONTEXT_MENU","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"SETTINGS_EDITOR_COMMAND_SWITCH_TO_JSON","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"Settings2EditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesModels"},{"name":"SettingsChangeRelauncher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/relauncher/browser/relauncher.contribution"},{"name":"settingsCheckboxBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"settingsCheckboxBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"settingsCheckboxForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"SettingsEditor2","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsEditor2"},{"name":"SettingsEditor2Input","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesEditorInput"},{"name":"SettingsEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesModels"},{"name":"SettingsEditorOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferences"},{"name":"SettingsGroupTitleRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesRenderers"},{"name":"SettingsGroupTitleWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesWidgets"},{"name":"settingsHeaderForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"SettingsHeaderWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesWidgets"},{"name":"settingsNumberInputBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"settingsNumberInputBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"settingsNumberInputForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"settingsSelectBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"settingsSelectBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"settingsSelectForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"settingsSelectListBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"SettingsSynchroniser","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/settingsSync"},{"name":"SettingsTargetsWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesWidgets"},{"name":"settingsTextInputBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"settingsTextInputBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"settingsTextInputForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"SettingsTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"SettingsTreeElement","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTreeModels"},{"name":"SettingsTreeFilter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"SettingsTreeGroupElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTreeModels"},{"name":"SettingsTreeModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTreeModels"},{"name":"SettingsTreeNewExtensionsElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTreeModels"},{"name":"SettingsTreeSettingElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTreeModels"},{"name":"SettingTextRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"SettingTreeRenderers","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"SettingValueType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferences"},{"name":"setTokensProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"setToString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/map"},{"name":"setuid","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"setUncaughtExceptionCaptureCallback","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"setUnexpectedErrorHandler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errors"},{"name":"setup","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"setup","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"setup","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/applicationinsights"},{"name":"setupMaster","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"setupTerminalCommands","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalCommands"},{"name":"setupTerminalMenu","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalMenu"},{"name":"setWordDefinitionFor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDocumentData"},{"name":"setZoomFactor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"setZoomLevel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"Severity","kind":"alias","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/severity"},{"name":"Severity","kind":"alias","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/notification/common/notification"},{"name":"SeverityIcon","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/severityIcon/common/severityIcon"},{"name":"SeverityLevel","kind":"enum","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/SeverityLevel"},{"name":"SeverityLevel","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"shadowCaretRangeFromPoint","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/mouseTarget"},{"name":"ShadowRoot","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SharedArrayBuffer","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"sharedLogChannelId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/logs/common/logConstants"},{"name":"SharedProcess","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-main/sharedProcess"},{"name":"SharedProcessMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/ipc/electron-main/sharedProcessMainService"},{"name":"SharedProcessService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/sharedProcess/electron-browser/sharedProcessService"},{"name":"SharedWorker","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"shell","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"SHELL_CWD_INVALID_EXIT_CODE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"SHELL_PATH_DIRECTORY_EXIT_CODE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"SHELL_PATH_INVALID_EXIT_CODE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"ShellExecution","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"ShellExecution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"ShellExecutionDTO","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTask"},{"name":"ShellExecutionOptionsDTO","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTask"},{"name":"ShellQuoting","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"ShellQuoting","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"ShellQuoting","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"ShellQuoting","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskConfiguration"},{"name":"shift","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/rangeMap"},{"name":"ShiftCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/commands/shiftCommand"},{"name":"shorten","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/labels"},{"name":"shouldSetLangEnvVariable","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalEnvironment"},{"name":"shouldSynchronizeModel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/modelService"},{"name":"show","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"SHOW_EDITORS_IN_GROUP","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"SHOW_NOTIFICATIONS_CENTER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"ShowActiveFileInExplorer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"ShowAllCommandsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess"},{"name":"ShowAllEditorsByAppearanceAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"ShowAllEditorsByMostRecentlyUsedAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"ShowAzureExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ShowBuiltInExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ShowCandidateContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/remote/common/showCandidate"},{"name":"ShowCurrentReleaseNotesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/update/browser/update"},{"name":"ShowCurrentReleaseNotesActionId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/update/common/update"},{"name":"ShowDisabledExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ShowEditorsInActiveGroupByMostRecentlyUsedAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"ShowEnabledExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"showExtensionQuery","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/format/browser/showExtensionQuery"},{"name":"ShowInstalledExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ShowLanguageExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorStatus"},{"name":"ShowLanguageExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ShowNextChangeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"ShowNextWindowTabHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"},{"name":"ShowOpenedFileInNewWindow","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"ShowOutdatedExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ShowPopularExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ShowPreviousChangeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"ShowPreviousWindowTabHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"},{"name":"ShowProblemsPanelAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersViewActions"},{"name":"ShowRecommendationsOnlyOnDemandKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensions"},{"name":"ShowRecommendedExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ShowRecommendedKeymapExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ShowReleaseNotesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/update/browser/update"},{"name":"ShowRuntimeExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor"},{"name":"showSimpleSuggestions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggest"},{"name":"ShowViewletAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/viewlet"},{"name":"ShowWebViewEditorFindWidgetAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewCommands"},{"name":"shuffle","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"ShutdownReason","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/lifecycle/common/lifecycle"},{"name":"SIDE_BAR_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"SIDE_BAR_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"SIDE_BAR_DRAG_AND_DROP_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"SIDE_BAR_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"SIDE_BAR_SECTION_HEADER_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"SIDE_BAR_SECTION_HEADER_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"SIDE_BAR_SECTION_HEADER_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"SIDE_BAR_TITLE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"SIDE_GROUP","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/common/editorService"},{"name":"SidebarFocusContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/viewlet"},{"name":"SidebarPart","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/sidebar/sidebarPart"},{"name":"SideBarVisibleContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/viewlet"},{"name":"SideBySideEditor","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"SideBySideEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/sideBySideEditor"},{"name":"SideBySideEditorInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"SIGABRT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGALRM","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGBREAK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGBUS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGCHLD","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGCONT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGFPE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGHUP","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGILL","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGINT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGIO","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGIOT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGKILL","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"sign","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"SIGN_SERVICE_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/sign/common/sign"},{"name":"SignatureHelp","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SignatureHelp","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"SignatureHelp","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"SignatureHelpProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"SignatureHelpTriggerKind","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SignatureHelpTriggerKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"SignatureHelpTriggerKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"SignatureHelpTriggerKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"SignatureInformation","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SignatureInformation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"SignatureInformation","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"Signer","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"SignService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/sign/browser/signService"},{"name":"SignService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/sign/node/signService"},{"name":"SIGPIPE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGPOLL","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGPROF","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGPWR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGQUIT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGSEGV","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGSTKFLT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGSTOP","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGSYS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGTERM","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGTRAP","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGTSTP","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGTTIN","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGTTOU","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGUNUSED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGURG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGUSR1","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGUSR2","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGVTALRM","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGWINCH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGXCPU","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGXFSZ","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SimpleBreadcrumbsItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/breadcrumbs/breadcrumbsWidget"},{"name":"SimpleBulkEditService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"SimpleButton","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findWidget"},{"name":"SimpleCheckbox","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/checkbox/checkbox"},{"name":"simpleCheckboxBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"simpleCheckboxBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"simpleCheckboxForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"SimpleCommentEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/simpleCommentEditor"},{"name":"SimpleConfigurationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"SimpleDialogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"SimpleEditorModelResolverService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"SimpleEditorProgressService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"SimpleFileDialog","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/dialogs/browser/simpleFileDialog"},{"name":"SimpleFindReplaceWidget","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/find/simpleFindReplaceWidget"},{"name":"SimpleFindWidget","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/find/simpleFindWidget"},{"name":"SimpleKeybinding","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keyCodes"},{"name":"SimpleLayoutService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"SimpleModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"SimpleNotificationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"SimpleReplElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/replModel"},{"name":"SimpleResourceConfigurationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"SimpleResourcePropertiesService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"SimpleServicesNLS","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standaloneStrings"},{"name":"SimpleUriLabelService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"SimpleWorkerClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/worker/simpleWorker"},{"name":"SimpleWorkerServer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/worker/simpleWorker"},{"name":"SimpleWorkspaceContextService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"SingleCursorState","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorCommon"},{"name":"SingleEditorGroupsContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"singleLetterHash","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"SingleLineInputHeight","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchWidget"},{"name":"SingleModelEditStackElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/editStack"},{"name":"singlePagePager","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/paging"},{"name":"SingleProxyRPCProtocol","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/api/testRPCProtocol"},{"name":"sinon","kind":"alias","kindModifiers":"declare","sortText":"4"},{"name":"Sinon","kind":"var","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"size","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"size","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/collections"},{"name":"Sizing","kind":"type","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/splitview/splitview"},{"name":"Sizing","kind":"type","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/grid/grid"},{"name":"SlicedLineTokens","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/lineTokens"},{"name":"SlowBuffer","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"buffer"},{"name":"SlowExtensionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensionsSlowActions"},{"name":"SmartSnippetInserter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/smartSnippetInserter"},{"name":"SmoothScrollableElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/scrollbar/scrollableElement"},{"name":"SmoothScrollingOperation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/scrollable"},{"name":"SmoothScrollingUpdate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/scrollable"},{"name":"snapshotToString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/common/textfiles"},{"name":"SnapUpdateService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/update/electron-main/updateService.snap"},{"name":"Snippet","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/snippets/browser/snippetsFile"},{"name":"SnippetCompletion","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/snippets/browser/snippetCompletionProvider"},{"name":"SnippetCompletionProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/snippets/browser/snippetCompletionProvider"},{"name":"SnippetController2","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetController2"},{"name":"SnippetFile","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/snippets/browser/snippetsFile"},{"name":"snippetFinalTabstopHighlightBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"snippetFinalTabstopHighlightBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"SnippetParser","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetParser"},{"name":"SnippetSession","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetSession"},{"name":"SnippetSortOrder","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggest"},{"name":"SnippetSource","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/snippets/browser/snippetsFile"},{"name":"SnippetsSynchroniser","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/snippetsSync"},{"name":"SnippetString","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SnippetString","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"snippetTabstopHighlightBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"snippetTabstopHighlightBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"Socket","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dgram"},{"name":"Socket","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"net"},{"name":"SocketDebugAdapter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/node/debugAdapter"},{"name":"sort","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"SortBy","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"sortedDiff","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"Sorter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree"},{"name":"SortLinesAscendingAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"SortLinesCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/sortLinesCommand"},{"name":"SortLinesDescendingAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"sortMimeTypes","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/notebookCommon"},{"name":"SortOrder","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"SortOrder","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"Source","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/processes"},{"name":"Source","kind":"alias","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/processes"},{"name":"Source","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugSource"},{"name":"SourceAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionCommands"},{"name":"sourceActionCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeAction"},{"name":"SourceBreakpoint","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SourceBreakpoint","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"SourceBuffer","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SourceBufferList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SourceControlInputBoxValidationType","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SourceControlInputBoxValidationType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"SparseEncodedTokens","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/tokensStore"},{"name":"spawn","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"child_process"},{"name":"spawn","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"node-pty"},{"name":"spawnRipgrepCmd","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepFileSearch"},{"name":"spawnSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"child_process"},{"name":"SpdLogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/node/spdlogService"},{"name":"specify","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SpeechGrammar","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SpeechGrammarList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SpeechRecognition","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SpeechRecognitionAlternative","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SpeechRecognitionEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SpeechRecognitionResult","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SpeechRecognitionResultList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"speechSynthesis","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SpeechSynthesis","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SpeechSynthesisErrorEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SpeechSynthesisEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SpeechSynthesisUtterance","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SpeechSynthesisVoice","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SPLIT_EDITOR_DOWN","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"SPLIT_EDITOR_LEFT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"SPLIT_EDITOR_RIGHT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"SPLIT_EDITOR_UP","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"splitEditor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"SplitEditorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"SplitEditorDownAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"SplitEditorLeftAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"SplitEditorOrthogonalAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"SplitEditorRightAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"SplitEditorsVertically","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"SplitEditorUpAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"splitGlobAware","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/glob"},{"name":"SplitInActiveWorkspaceTerminalAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions"},{"name":"SplitLine","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/splitLinesCollection"},{"name":"SplitLinesCollection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/splitLinesCollection"},{"name":"splitName","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/labels"},{"name":"SplitTerminalAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions"},{"name":"SplitView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/splitview/splitview"},{"name":"spreadGlobComponents","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepTextSearchEngine"},{"name":"spy","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"SQLiteStorageDatabase","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/storage/node/storage"},{"name":"SSL_OP_ALL","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_CIPHER_SERVER_PREFERENCE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_CISCO_ANYCONNECT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_COOKIE_EXCHANGE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_CRYPTOPRO_TLSEXT_BUG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_EPHEMERAL_RSA","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_LEGACY_SERVER_CONNECT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_MICROSOFT_SESS_ID_BUG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_MSIE_SSLV2_RSA_PADDING","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_NETSCAPE_CA_DN_BUG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_NETSCAPE_CHALLENGE_BUG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_NO_COMPRESSION","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_NO_QUERY_MTU","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_NO_SSLv2","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_NO_SSLv3","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_NO_TICKET","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_NO_TLSv1","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_NO_TLSv1_1","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_NO_TLSv1_2","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_PKCS1_CHECK_1","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_PKCS1_CHECK_2","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_SINGLE_DH_USE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_SINGLE_ECDH_USE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_SSLEAY_080_CLIENT_DH_BUG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_TLS_BLOCK_PADDING_BUG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_TLS_D5_BUG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_TLS_ROLLBACK_BUG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"StableEditorScrollState","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/core/editorState"},{"name":"StackFrame","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"StackFrame","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/StackFrame"},{"name":"StackFrame","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"StandaloneCodeEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneCodeEditor"},{"name":"StandaloneCodeEditorNLS","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standaloneStrings"},{"name":"StandaloneCodeEditorServiceImpl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneCodeServiceImpl"},{"name":"StandaloneCommandService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"StandaloneCommandsQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/quickAccess/standaloneCommandsQuickAccess"},{"name":"StandaloneConfigurationModelParser","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configurationModels"},{"name":"StandaloneDiffEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneCodeEditor"},{"name":"StandaloneEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneCodeEditor"},{"name":"StandaloneGotoLineQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess"},{"name":"StandaloneGotoSymbolQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/quickAccess/standaloneGotoSymbolQuickAccess"},{"name":"StandaloneKeybindingService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"StandaloneQuickInputServiceImpl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/quickInput/standaloneQuickInputServiceImpl"},{"name":"StandaloneReferencesController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/referenceSearch/standaloneReferenceSearch"},{"name":"StandaloneTelemetryService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"StandaloneThemeServiceImpl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneThemeServiceImpl"},{"name":"StandardAutoClosingPairConditional","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/languageConfiguration"},{"name":"StandardKeyboardEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/keyboardEvent"},{"name":"StandardMouseEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/mouseEvent"},{"name":"standardMouseMoveMerger","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/globalMouseMoveMonitor"},{"name":"StandardTokenType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"StandardTokenType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textMate/common/textMateService"},{"name":"StandardTokenType","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-textmate/release/main"},{"name":"StandardWheelEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/mouseEvent"},{"name":"StandardWindow","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"start","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"repl"},{"name":"start","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/applicationinsights"},{"name":"start","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/native-watchdog/index"},{"name":"StartAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"StartDebugActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActionViewItems"},{"name":"StartDebugQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugQuickAccess"},{"name":"startExtensionHostProcess","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/node/extensionHostProcessSetup"},{"name":"StartExtensionHostProfileAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor"},{"name":"StartFindAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"StartFindReplaceAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"StartFindWithSelectionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"startProfiling","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"v8-inspect-profiler"},{"name":"StartStopProblemCollector","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemCollectors"},{"name":"startsWith","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"startsWithIgnoreCase","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"startsWithUTF8BOM","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"startup","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-browser/issue/issueReporterMain"},{"name":"startup","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-browser/processExplorer/processExplorerMain"},{"name":"startup","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-browser/sharedProcess/sharedProcessMain"},{"name":"StartupKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/lifecycle/common/lifecycle"},{"name":"StartupKindToString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/lifecycle/common/lifecycle"},{"name":"StartupProfiler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/performance/electron-browser/startupProfiler"},{"name":"StartupTimings","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/performance/electron-browser/startupTimings"},{"name":"stat","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"stat","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"State","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestModel"},{"name":"State","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"State","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/update/common/update"},{"name":"State","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/linkComputer"},{"name":"stateExists","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchCommon"},{"name":"StatefullMarkdownCell","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell"},{"name":"StateMachine","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/linkComputer"},{"name":"Statement","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-sqlite3/index"},{"name":"StateService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/state/node/stateService"},{"name":"StateType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/update/common/update"},{"name":"StaticDND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dnd"},{"name":"StaticExtensionsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/staticExtensions"},{"name":"StaticLanguageSelector","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/mocks/mockMode"},{"name":"StaticRange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"StaticRouter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc"},{"name":"StaticServices","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneServices"},{"name":"StatisticType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"statLink","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"Stats","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"statSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"status","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"status","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/aria/aria"},{"name":"STATUS_BAR_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"STATUS_BAR_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"STATUS_BAR_DEBUGGING_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/statusbarColorProvider"},{"name":"STATUS_BAR_DEBUGGING_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/statusbarColorProvider"},{"name":"STATUS_BAR_DEBUGGING_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/statusbarColorProvider"},{"name":"STATUS_BAR_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"STATUS_BAR_HOST_NAME_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"STATUS_BAR_HOST_NAME_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"STATUS_BAR_ITEM_ACTIVE_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"STATUS_BAR_ITEM_HOVER_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"STATUS_BAR_NO_FOLDER_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"STATUS_BAR_NO_FOLDER_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"STATUS_BAR_NO_FOLDER_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"STATUS_BAR_PROMINENT_ITEM_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"STATUS_BAR_PROMINENT_ITEM_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"STATUS_BAR_PROMINENT_ITEM_HOVER_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"STATUS_CODES","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"http"},{"name":"statusbar","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"StatusbarAlignment","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/statusbar/common/statusbar"},{"name":"StatusBarAlignment","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"StatusBarAlignment","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"StatusBarColorProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/statusbarColorProvider"},{"name":"StatusbarPart","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/statusbar/statusbarPart"},{"name":"StatusLabelAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"StatusMessageChangeType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/notifications"},{"name":"StatusUpdater","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewlet"},{"name":"stderr","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"stdin","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"stdinDataListener","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/stdin"},{"name":"stdout","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"STEP_BACK_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"STEP_INTO_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"STEP_INTO_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"STEP_OUT_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"STEP_OUT_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"STEP_OVER_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"STEP_OVER_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"StereoPannerNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"stop","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"stop","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/event"},{"name":"STOP_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"STOP_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"StopExtensionHostProfileAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor"},{"name":"StopWatch","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/stopwatch"},{"name":"Storage","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Storage","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/storage/common/storage"},{"name":"StorageDataCleaner","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-browser/sharedProcess/contrib/storageDataCleaner"},{"name":"StorageEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"StorageHint","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/storage/common/storage"},{"name":"StorageKeysSyncRegistryChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSyncIpc"},{"name":"StorageKeysSyncRegistryChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSyncIpc"},{"name":"StorageKeysSyncRegistryService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/storageKeys"},{"name":"StorageMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/storage/node/storageMainService"},{"name":"StorageManager","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"StorageManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionEnablementService"},{"name":"StorageScope","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/storage/common/storage"},{"name":"strcmp","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/tokenization"},{"name":"Stream","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"stream"},{"name":"StreamDebugAdapter","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/node/debugAdapter"},{"name":"streamToBuffer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"streamToBufferReadableStream","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"streamToNodeReadable","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/stream"},{"name":"strict","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"strictEqual","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"string","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"String","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"StringBuffer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase"},{"name":"StringDecoder","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"string_decoder"},{"name":"stringDiff","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/diff/diff"},{"name":"StringDiffSequence","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/diff/diff"},{"name":"StringEOL","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/tokensStore"},{"name":"stringHash","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/hash"},{"name":"stringify","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"querystring"},{"name":"stringify","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/marshalling"},{"name":"StringIterator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/map"},{"name":"StringRepresentationProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesTree"},{"name":"StringSHA1","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/hash"},{"name":"stringToSnapshot","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/common/textfiles"},{"name":"stripCodicons","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/codicons"},{"name":"stripComments","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"stripUTF8BOM","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"stripWildcards","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"stub","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"styleMedia","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"StyleMedia","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"StyleSheet","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"StyleSheetList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SubmenuAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/menu/menu"},{"name":"SubmenuItemAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/common/actions"},{"name":"substituteMatches","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchCommon"},{"name":"SubtleCrypto","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SuggestAlternatives","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestAlternatives"},{"name":"SuggestController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestController"},{"name":"SuggestEnabledInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput"},{"name":"suggestFilename","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/mime"},{"name":"SuggestMemoryService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestMemory"},{"name":"SuggestModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestModel"},{"name":"SuggestWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestWidget"},{"name":"suggestWidgetStatusbarMenu","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggest"},{"name":"suite","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"suiteRepeat","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/test/common/utils"},{"name":"suiteSetup","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"suiteTeardown","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"super","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"SUPPORTED_CODE_ACTIONS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionModel"},{"name":"SUPPORTED_ENCODINGS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/common/textfiles"},{"name":"SurroundSelectionCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/commands/surroundSelectionCommand"},{"name":"SVGAElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAngle","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimatedAngle","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimatedBoolean","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimatedEnumeration","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimatedInteger","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimatedLength","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimatedLengthList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimatedNumber","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimatedNumberList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimatedPreserveAspectRatio","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimatedRect","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimatedString","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimatedTransformList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimateElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimateMotionElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimateTransformElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimationElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGCircleElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGClipPathElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGComponentTransferFunctionElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGCursorElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGDefsElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGDescElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGElementInstance","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGElementInstanceList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGEllipseElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEBlendElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEColorMatrixElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEComponentTransferElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFECompositeElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEConvolveMatrixElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEDiffuseLightingElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEDisplacementMapElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEDistantLightElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEDropShadowElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEFloodElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEFuncAElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEFuncBElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEFuncGElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEFuncRElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEGaussianBlurElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEImageElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEMergeElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEMergeNodeElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEMorphologyElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEOffsetElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEPointLightElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFESpecularLightingElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFESpotLightElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFETileElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFETurbulenceElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFilterElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGForeignObjectElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGGElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGGeometryElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGGradientElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGGraphicsElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGImageElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGLength","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGLengthList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGLinearGradientElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGLineElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGMarkerElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGMaskElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGMatrix","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGMetadataElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGNumber","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGNumberList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSeg","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegArcAbs","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegArcRel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegClosePath","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegCurvetoCubicAbs","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegCurvetoCubicRel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegCurvetoCubicSmoothAbs","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegCurvetoCubicSmoothRel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegCurvetoQuadraticAbs","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegCurvetoQuadraticRel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegCurvetoQuadraticSmoothAbs","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegCurvetoQuadraticSmoothRel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegLinetoAbs","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegLinetoHorizontalAbs","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegLinetoHorizontalRel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegLinetoRel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegLinetoVerticalAbs","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegLinetoVerticalRel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegMovetoAbs","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegMovetoRel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPatternElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPoint","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPointList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPolygonElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPolylineElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPreserveAspectRatio","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGRadialGradientElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGRect","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGRectElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGScriptElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGStopElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGStringList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGStyleElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGSVGElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGSwitchElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGSymbolElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGTextContentElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGTextElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGTextPathElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGTextPositioningElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGTitleElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGTransform","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGTransformList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGTSpanElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGUnitTypes","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGUseElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGViewElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGZoomAndPan","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGZoomEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"switch","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"SwitchPanelViewAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/panel/panelActions"},{"name":"SwitchRemoteAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/remote/browser/explorerViewItems"},{"name":"SwitchRemoteViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/remote/browser/explorerViewItems"},{"name":"SwitchTerminalAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions"},{"name":"SwitchTerminalActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions"},{"name":"SwitchWindow","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"},{"name":"symbol","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"Symbol","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SYMBOL_ICON_ARRAY_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_BOOLEAN_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_CLASS_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_COLOR_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_CONSTANT_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_CONSTRUCTOR_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_ENUMERATOR_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_ENUMERATOR_MEMBER_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_EVENT_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_FIELD_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_FILE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_FOLDER_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_FUNCTION_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_INTERFACE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_KEY_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_KEYWORD_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_METHOD_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_MODULE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_NAMESPACE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_NULL_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_NUMBER_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_OBJECT_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_OPERATOR_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_PACKAGE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_PROPERTY_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_REFERENCE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_SNIPPET_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_STRING_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_STRUCT_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_TEXT_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_TYPEPARAMETER_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_UNIT_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_VARIABLE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SymbolInformation","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SymbolInformation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"SymbolKind","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SymbolKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"SymbolKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"SymbolKind","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"SymbolKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"SymbolKinds","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"SymbolsQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/symbolsQuickAccess"},{"name":"SymbolTag","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SymbolTag","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"SymbolTag","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"SymbolTag","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"SymbolTag","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"symlink","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"symlink","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"symlinkSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"SyncActionDescriptor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/common/actions"},{"name":"SyncDescriptor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/instantiation/common/descriptors"},{"name":"SyncIgnoredIconAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"SyncManager","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SyncResource","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"SyncStatus","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"SyntaxError","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SyntaxKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"SyntaxRangeProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/syntaxRangeProvider"},{"name":"SystemDisabledWarningAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"systemPreferences","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"TAB_ACTIVE_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_ACTIVE_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_ACTIVE_BORDER_TOP","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_ACTIVE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_ACTIVE_MODIFIED_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_HOVER_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_HOVER_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_HOVER_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_INACTIVE_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_INACTIVE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_INACTIVE_MODIFIED_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_UNFOCUSED_ACTIVE_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_UNFOCUSED_ACTIVE_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_UNFOCUSED_ACTIVE_BORDER_TOP","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_UNFOCUSED_ACTIVE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_UNFOCUSED_ACTIVE_MODIFIED_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_UNFOCUSED_HOVER_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_UNFOCUSED_HOVER_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_UNFOCUSED_HOVER_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_UNFOCUSED_INACTIVE_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_UNFOCUSED_INACTIVE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_UNFOCUSED_INACTIVE_MODIFIED_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TabCompletionController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/snippets/browser/tabCompletion"},{"name":"TabFocus","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/commonEditorConfig"},{"name":"table","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"TabsTitleControl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/tabsTitleControl"},{"name":"TAG","kind":"property","kindModifiers":"private,static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Sender"},{"name":"tail","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"tail2","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"takeHeapSnapshot","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"Task","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"Task","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"TASK_RUNNING_STATE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"Task2","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TaskConfigSource","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskConfiguration"},{"name":"TaskDefinition","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"TaskDefinitionDTO","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTask"},{"name":"TaskDefinitionRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskDefinitionRegistry"},{"name":"TaskDTO","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTask"},{"name":"TaskError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskSystem"},{"name":"TaskErrors","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskSystem"},{"name":"TaskEvent","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"TaskEventKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"TaskExecuteKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskSystem"},{"name":"TaskExecutionDTO","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTask"},{"name":"TaskFilterDTO","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTask"},{"name":"TaskGroup","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TaskGroup","kind":"type","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"TaskGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"TaskHandleDTO","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTask"},{"name":"TaskIdentifier","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskConfiguration"},{"name":"TaskPanelKind","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TaskPanelKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"TaskPresentationOptionsDTO","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTask"},{"name":"TaskQuickPick","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/browser/taskQuickPick"},{"name":"TaskRevealKind","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TaskRevealKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"TaskRunResult","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugTaskRunner"},{"name":"TaskRunSource","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"TaskRunType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"tasks","kind":"module","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TASKS_CONFIGURATION_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"TASKS_DEFAULT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"TaskScope","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TaskScope","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"TaskScope","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"TaskSequentializer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"TaskService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/browser/taskService"},{"name":"TaskService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/electron-browser/taskService"},{"name":"TaskSorter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"TaskSourceKind","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"TasksQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/browser/tasksQuickAccess"},{"name":"tasksSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"TaskStatusBarContributions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/browser/task.contribution"},{"name":"teardown","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"TelemetryAppenderChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/node/telemetryIpc"},{"name":"TelemetryAppenderClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/node/telemetryIpc"},{"name":"TelemetryClient","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/TelemetryClient"},{"name":"TelemetryClient","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/applicationinsights"},{"name":"TelemetryContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/telemetry/browser/telemetry.contribution"},{"name":"telemetryLogChannelId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/logs/common/logConstants"},{"name":"TelemetryService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetryService"},{"name":"TelemetryService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/telemetry/browser/telemetryService"},{"name":"TelemetryService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/telemetry/electron-browser/telemetryService"},{"name":"TelemetryType","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/TelemetryTypes/TelemetryType"},{"name":"telemetryTypeToBaseType","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/TelemetryTypes/TelemetryType"},{"name":"TEMPDIR_PREFIX","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Sender"},{"name":"template","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/labels"},{"name":"Terminal","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"xterm"},{"name":"TERMINAL_ACTION_CATEGORY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"TERMINAL_BACKGROUND_COLOR","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalColorRegistry"},{"name":"TERMINAL_BORDER_COLOR","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalColorRegistry"},{"name":"TERMINAL_COMMAND_ID","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"TERMINAL_CONFIG_SECTION","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"TERMINAL_CURSOR_BACKGROUND_COLOR","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalColorRegistry"},{"name":"TERMINAL_CURSOR_FOREGROUND_COLOR","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalColorRegistry"},{"name":"TERMINAL_FOREGROUND_COLOR","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalColorRegistry"},{"name":"TERMINAL_SELECTION_BACKGROUND_COLOR","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalColorRegistry"},{"name":"TERMINAL_VIEW_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"TerminalConfigHelper","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalConfigHelper"},{"name":"terminalConfiguration","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalConfiguration"},{"name":"TerminalCursorStyle","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"TerminalDataBufferer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalDataBuffering"},{"name":"TerminalFindWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalFindWidget"},{"name":"TerminalInstance","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalInstance"},{"name":"TerminalInstanceService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalInstanceService"},{"name":"TerminalInstanceService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/electron-browser/terminalInstanceService"},{"name":"TerminalLinkManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager"},{"name":"TerminalNativeService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/electron-browser/terminalNativeService"},{"name":"TerminalPasteAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions"},{"name":"TerminalProcess","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/node/terminalProcess"},{"name":"TerminalProcessExtHostProxy","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy"},{"name":"TerminalProcessManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalProcessManager"},{"name":"TerminalQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalsQuickAccess"},{"name":"terminalSendSequenceCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions"},{"name":"TerminalService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalService"},{"name":"TerminalTab","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalTab"},{"name":"TerminalTaskSystem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem"},{"name":"TerminalValidatedLocalLinkProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalValidatedLocalLinkProvider"},{"name":"TerminalViewPane","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalView"},{"name":"TerminalWebLinkProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalWebLinkProvider"},{"name":"TerminalWidgetManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalWidgetManager"},{"name":"TerminalWordLinkProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalWordLinkProvider"},{"name":"TERMINATE_THREAD_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"TerminateResponseCode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/processes"},{"name":"TerminateResponseCode","kind":"alias","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/processes"},{"name":"TernarySearchTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/map"},{"name":"test","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"test","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"TEST_VIEW_CONTAINER_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/views"},{"name":"TestAccessibilityService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"testApplyEditsWithSyncedModels","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/model/editableTextModelTestUtils"},{"name":"TestBackupFileService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestBackupMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/test/electron-main/workspacesMainService.test"},{"name":"testCase","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"TestCell","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/test/testNotebookEditor"},{"name":"TestChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/test/node/testService"},{"name":"TestCodeEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/browser/testCodeEditor"},{"name":"TestCodeEditorService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/browser/editorTestServices"},{"name":"TestColorTheme","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/test/common/testThemeService"},{"name":"testCommand","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/browser/testCommand"},{"name":"TestCommandService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/browser/editorTestServices"},{"name":"TestConfiguration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/mocks/testConfiguration"},{"name":"TestConfigurationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/test/common/testConfigurationService"},{"name":"TestContextService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/common/workbenchTestServices"},{"name":"TestDecorationProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/test/foldingModel.test"},{"name":"TestDecorationsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestDialogMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/test/electron-main/workspacesMainService.test"},{"name":"TestDialogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/dialogs/test/common/testDialogService"},{"name":"TestDiskFileSystemProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/test/electron-browser/diskFileService.test"},{"name":"TestEditorGroupAccessor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestEditorGroupsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestEditorGroupView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestEditorInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestEditorPart","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestEditorService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestElectronService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/electron-browser/workbenchTestServices"},{"name":"TestEnvironmentService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestEnvironmentService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/electron-browser/workbenchTestServices"},{"name":"TestExperimentService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/experiments/test/electron-browser/experimentService.test"},{"name":"TestExtensionEnablementService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensionManagement/test/browser/extensionEnablementService.test"},{"name":"TestExtensionService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/common/workbenchTestServices"},{"name":"testFile","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/test/node/utils"},{"name":"TestFileDialogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestFileEditorInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestFileIconTheme","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/test/common/testThemeService"},{"name":"TestFilesConfigurationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestFileService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestFindController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/test/findController.test"},{"name":"TestHistoryService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestHostService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestInstantiationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock"},{"name":"TestLayoutService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestLifecycleService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestListService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestMenuService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestNativePathService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/electron-browser/workbenchTestServices"},{"name":"TestNativeTextFileServiceWithEncodingOverrides","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/electron-browser/workbenchTestServices"},{"name":"TestNotebookEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/test/testNotebookEditor"},{"name":"TestNotificationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/notification/test/common/testNotificationService"},{"name":"TestPanelService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestPathService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestProgressService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestReadonlyTextFileEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"testRepeat","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/test/common/utils"},{"name":"testRepeatedActionAndExtractPositions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/test/wordTestUtils"},{"name":"testRepeatOnly","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/test/common/utils"},{"name":"TestRPCProtocol","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/api/testRPCProtocol"},{"name":"TestService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/test/node/testService"},{"name":"TestServiceAccessor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestServiceAccessor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/electron-browser/workbenchTestServices"},{"name":"TestServiceClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/test/node/testService"},{"name":"TestSharedProcessService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/electron-browser/workbenchTestServices"},{"name":"TestStorageService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/common/workbenchTestServices"},{"name":"testTextBufferFactory","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/model/linesTextBuffer/linesTextBufferBuilder.test"},{"name":"TestTextFileService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestTextFileService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/electron-browser/workbenchTestServices"},{"name":"TestTextResourceConfigurationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestTextResourcePropertiesService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/services/modelService.test"},{"name":"TestTextResourcePropertiesService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/common/workbenchTestServices"},{"name":"TestThemeService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/test/common/testThemeService"},{"name":"TestUserDataSyncUtilService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/test/common/userDataSyncClient"},{"name":"TestView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/test/browser/ui/grid/util"},{"name":"TestViewletService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"testViewModel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/viewModel/testViewModel"},{"name":"TestViewsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestWindowConfiguration","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/electron-browser/workbenchTestServices"},{"name":"TestWorkingCopy","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/workingCopy/test/common/workingCopyService.test"},{"name":"TestWorkingCopyService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/common/workbenchTestServices"},{"name":"testWorkspace","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspace/test/common/testWorkspace"},{"name":"TestWorkspace","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspace/test/common/testWorkspace"},{"name":"Text","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Text","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetParser"},{"name":"TEXT_DIFF_EDITOR_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"TEXT_FILE_EDITOR_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"TextAreaHandler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/textAreaHandler"},{"name":"TextAreaInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/textAreaInput"},{"name":"TextAreaState","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/textAreaState"},{"name":"TextBadge","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/activity/common/activity"},{"name":"textBlockQuoteBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"textBlockQuoteBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"TextChange","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textChange"},{"name":"textCodeBlockBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"TextCompareEditorActiveContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"TextCompareEditorVisibleContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"TextDecoder","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"TextDecoder","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"TextDecoderStream","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"TextDiffEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/textDiffEditor"},{"name":"TextDiffEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor/textDiffEditorModel"},{"name":"TextDocumentSaveReason","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TextDocumentSaveReason","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"TextDocumentSaveReason","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"TextEdit","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TextEdit","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"TextEdit","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"TextEditElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree"},{"name":"TextEditElementRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree"},{"name":"TextEditorCursorBlinkingStyle","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"TextEditorCursorBlinkingStyle","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"TextEditorCursorStyle","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TextEditorCursorStyle","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"TextEditorCursorStyle","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"TextEditorDecorationType","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTextEditor"},{"name":"TextEditorEdit","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTextEditor"},{"name":"TextEditorLineNumbersStyle","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TextEditorLineNumbersStyle","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"TextEditorLineNumbersStyle","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"TextEditorOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"TextEditorOptions","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"TextEditorRevealType","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TextEditorRevealType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHost.protocol"},{"name":"TextEditorRevealType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"TextEditorSelectionChangeKind","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TextEditorSelectionChangeKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"TextEditorSelectionRevealType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/editor/common/editor"},{"name":"TextEditorState","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/history/browser/history"},{"name":"TextEncoder","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"TextEncoder","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"TextEncoderStream","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"TextEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"TextFileContentProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"TextFileEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/editors/textFileEditor"},{"name":"TextFileEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/common/textFileEditorModel"},{"name":"TextFileEditorModelManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/common/textFileEditorModelManager"},{"name":"TextFileEditorModelState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/common/textfiles"},{"name":"TextFileEditorTracker","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/editors/textFileEditorTracker"},{"name":"TextFileLoadReason","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/common/textfiles"},{"name":"TextFileOperationError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/common/textfiles"},{"name":"TextFileOperationResult","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/common/textfiles"},{"name":"TextFileSaveErrorHandler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler"},{"name":"TextFileSaveParticipant","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/common/textFileSaveParticipant"},{"name":"TextInputActionsProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/textInputActions"},{"name":"textLinkActiveForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"textLinkForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"textmateColorGroupSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/colorThemeSchema"},{"name":"textmateColorSettingsSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/colorThemeSchema"},{"name":"textmateColorsSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/colorThemeSchema"},{"name":"TextMateService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textMate/browser/textMateService"},{"name":"TextMateService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textMate/electron-browser/textMateService"},{"name":"TextmateSnippet","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetParser"},{"name":"TextMateWorker","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textMate/electron-browser/textMateWorker"},{"name":"TextMateWorkerHost","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textMate/electron-browser/textMateService"},{"name":"TextMetrics","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"TextModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModel"},{"name":"TextModelCancellationTokenSource","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/core/editorState"},{"name":"TextModelResolvedOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model"},{"name":"TextModelResolverService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textmodelResolver/common/textModelResolverService"},{"name":"TextModelSearch","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelSearch"},{"name":"TextModelTokenization","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelTokens"},{"name":"textPreformatForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"TextResourceConfigurationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/textResourceConfigurationServiceImpl"},{"name":"TextResourceEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/textResourceEditor"},{"name":"TextResourceEditorInput","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"TextResourcePropertiesService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textresourceProperties/common/textResourcePropertiesService"},{"name":"TextSearchEngineAdapter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/textSearchAdapter"},{"name":"TextSearchManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/textSearchManager"},{"name":"TextSearchMatch","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"TextSearchResultsCollector","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/textSearchManager"},{"name":"textSeparatorForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"TextSnapshotReadable","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/common/textfiles"},{"name":"TextTrack","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"TextTrackCue","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"TextTrackCueList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"TextTrackList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Themable","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/themeService"},{"name":"ThemableDecorationAttachmentRenderOptions","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"ThemableDecorationRenderOptions","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"ThemeColor","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"ThemeColor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"themeColorFromId","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/themeService"},{"name":"ThemeConfiguration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/themeConfiguration"},{"name":"ThemeIcon","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"ThemeIcon","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/themeService"},{"name":"ThemeIcon","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"ThemeMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/electron-main/themeMainService"},{"name":"ThemeRegistry","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/themeExtensionPoints"},{"name":"ThemeRule","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textMate/common/TMHelper"},{"name":"ThemeSettings","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/workbenchThemeService"},{"name":"ThemeTrieElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/tokenization"},{"name":"ThemeTrieElementRule","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/tokenization"},{"name":"this","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"Thread","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"ThreadAndSessionIds","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"threadId","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"worker_threads"},{"name":"throttle","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/decorators"},{"name":"ThrottledDelayer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"Throttler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"throw","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"throwDeprecation","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"throwProposedApiError","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensions"},{"name":"throws","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"tildify","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/labels"},{"name":"time","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"TimeBasedVariableResolver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetVariables"},{"name":"timeEnd","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"timeline","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"TimelineElementTemplate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/timeline/browser/timelinePane"},{"name":"timelineEnd","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"TimelineFollowActiveEditorContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/timeline/browser/timelinePane"},{"name":"TimelineIdentityProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/timeline/browser/timelinePane"},{"name":"TimelineItem","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TimelineItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"TimelineKeyboardNavigationLabelProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/timeline/browser/timelinePane"},{"name":"TimelineListVirtualDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/timeline/browser/timelinePane"},{"name":"TimelinePane","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/timeline/browser/timelinePane"},{"name":"TimelinePaneDescriptor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/timeline/browser/timeline.contribution"},{"name":"TimelinePaneId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/timeline/common/timeline"},{"name":"TimelineService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/timeline/common/timelineService"},{"name":"timeLog","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"timeout","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"TIMEOUT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"TimeoutTimer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"TimeRanges","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"timeStamp","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"timingSafeEqual","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"title","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"TITLE_BAR_ACTIVE_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TITLE_BAR_ACTIVE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TITLE_BAR_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TITLE_BAR_INACTIVE_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TITLE_BAR_INACTIVE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TitlebarPart","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/titlebar/titlebarPart"},{"name":"TitlebarPart","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/parts/titlebar/titlebarPart"},{"name":"TitleCaseAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"TitleControl","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/titleControl"},{"name":"TitleEventSource","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"TLSSocket","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tls"},{"name":"TMGrammarFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textMate/common/TMGrammarFactory"},{"name":"tmpdir","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"TMScopeRegistry","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textMate/common/TMScopeRegistry"},{"name":"toASCII","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"punycode"},{"name":"toBackupWorkspaceResource","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/backup/electron-browser/backup"},{"name":"toBufferOrReadable","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/common/textfiles"},{"name":"toCanonicalName","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"tocData","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsLayout"},{"name":"TOCRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/tocTree"},{"name":"TOCTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/tocTree"},{"name":"TOCTreeModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/tocTree"},{"name":"toDecodeStream","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"toDisposable","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/lifecycle"},{"name":"toErrorMessage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errorMessage"},{"name":"toExtension","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensions"},{"name":"toExtensionDescription","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"toFileChanges","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/watcher/watcher"},{"name":"toFileOperationResult","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"toFileSystemProviderErrorCode","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"TOGGLE_BREAKPOINT_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugEditorActions"},{"name":"TOGGLE_CONDITIONAL_BREAKPOINT_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugEditorActions"},{"name":"TOGGLE_DIFF_IGNORE_TRIM_WHITESPACE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"TOGGLE_DIFF_SIDE_BY_SIDE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"TOGGLE_IGNORE_EXTENSION_ACTION_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensions"},{"name":"TOGGLE_INLINE_BREAKPOINT_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"TOGGLE_LOG_POINT_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugEditorActions"},{"name":"TOGGLE_NOTIFICATION","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"TOGGLE_NOTIFICATIONS_CENTER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"ToggleActivityBarVisibilityAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"ToggleAutoSaveAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"ToggleAutoUpdateAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ToggleBreakpointsActivatedAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"toggleCaseSensitiveCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"ToggleCaseSensitiveCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"ToggleCaseSensitiveKeybinding","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findModel"},{"name":"toggleClass","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"ToggleCollapseAndExpandAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"toggleCollapseState","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/foldingModel"},{"name":"ToggleColumnSelectionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleColumnSelection"},{"name":"ToggleCompositePinnedAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/compositeBarActions"},{"name":"ToggleDevToolsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/developerActions"},{"name":"ToggleEditorLayoutAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"ToggleEditorVisibilityAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"ToggleGroupSizesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"ToggleHighContrastNLS","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standaloneStrings"},{"name":"ToggleMaximizedPanelAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/panel/panelActions"},{"name":"ToggleMenuBarAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"ToggleMinimapAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleMinimap"},{"name":"ToggleMultiCursorModifierAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier"},{"name":"TogglePanelAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/panel/panelActions"},{"name":"ToggleReactionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/reactionsAction"},{"name":"toggleRegexCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"ToggleRegexCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"ToggleRegexKeybinding","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findModel"},{"name":"ToggleRenderControlCharacterAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleRenderControlCharacter"},{"name":"ToggleRenderWhitespaceAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleRenderWhitespace"},{"name":"toggleSearchEditorCaseSensitiveCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions"},{"name":"ToggleSearchEditorCaseSensitiveCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"toggleSearchEditorContextLinesCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions"},{"name":"ToggleSearchEditorContextLinesCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"toggleSearchEditorRegexCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions"},{"name":"ToggleSearchEditorRegexCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"toggleSearchEditorWholeWordCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions"},{"name":"ToggleSearchEditorWholeWordCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"ToggleSearchOnTypeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"ToggleSearchScopeKeybinding","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findModel"},{"name":"ToggleSharedProcessAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/developerActions"},{"name":"ToggleSidebarPositionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"ToggleSidebarVisibilityAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"ToggleStatusbarVisibilityAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"ToggleTabFocusModeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode"},{"name":"ToggleTerminalAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions"},{"name":"ToggleViewAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"ToggleViewletAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/activitybar/activitybarActions"},{"name":"ToggleViewModeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/repositoryPane"},{"name":"toggleWholeWordCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"ToggleWholeWordCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"ToggleWholeWordKeybinding","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findModel"},{"name":"ToggleWindowTabsBarHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"},{"name":"Token","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/token"},{"name":"Token","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/editor.api"},{"name":"TOKEN_CLASSIFIER_LANGUAGE_SEPARATOR","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry"},{"name":"TOKEN_TYPE_WILDCARD","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry"},{"name":"TokenClassificationExtensionPoints","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/tokenClassificationExtensionPoint"},{"name":"TokenizationRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"TokenizationRegistryImpl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/tokenizationRegistry"},{"name":"TokenizationResult","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/token"},{"name":"TokenizationResult2","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/token"},{"name":"TokenizationStateStore","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelTokens"},{"name":"TokenizationSupport2Adapter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"tokenize","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"tokenizeLineToHTML","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/textToHtmlTokenizer"},{"name":"tokenizeToString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/textToHtmlTokenizer"},{"name":"TokenMetadata","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"TokensStore","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/tokensStore"},{"name":"TokensStore2","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/tokensStore"},{"name":"TokenStyle","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry"},{"name":"TokenStylingRule","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry"},{"name":"tokenStylingSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry"},{"name":"TokenTheme","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/tokenization"},{"name":"TokenType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetParser"},{"name":"toKey","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/timeline/common/timeline"},{"name":"toLocalISOString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/date"},{"name":"toLocalResource","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"toMultilineTokens2","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/semanticTokensProviderStyling"},{"name":"toNamespacedPath","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"toNodeEncoding","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"toolbar","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ToolBar","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/toolbar/toolbar"},{"name":"TOOLTIP_HOVER_THRESHOLD","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalLinkHelpers"},{"name":"TooltipWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets"},{"name":"toOverrides","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"top","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"top","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"topAsync","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"toReadable","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/stream"},{"name":"toResource","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/test/common/utils"},{"name":"toResource","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"toSlashes","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/extpath"},{"name":"toStandardTokenType","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/tokenization"},{"name":"toStoreData","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"toStream","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/stream"},{"name":"toString","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"totalmem","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"Touch","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Touch","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/map"},{"name":"TouchBar","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"TouchBarButton","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"TouchBarColorPicker","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"TouchBarGroup","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"TouchBarLabel","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"TouchBarPopover","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"TouchBarScrubber","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"TouchBarSegmentedControl","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"TouchBarSlider","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"TouchBarSpacer","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"TouchEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"TouchList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"toUint32","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/uint"},{"name":"toUint8","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/uint"},{"name":"toUnicode","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"punycode"},{"name":"toValuesTree","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"toWorkspaceFolder","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspace/common/workspace"},{"name":"toWorkspaceFolders","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspace/common/workspace"},{"name":"toWorkspaceIdentifier","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"trace","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"traceDeprecation","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"traceProcessWarnings","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"TrackedRangeStickiness","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model"},{"name":"TrackedRangeStickiness","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"TrackEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"trackFocus","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"transcode","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"buffer"},{"name":"transform","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/stream"},{"name":"Transform","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"stream"},{"name":"Transform","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetParser"},{"name":"TransformableMarker","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetParser"},{"name":"transformAndReviveIncomingURIs","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/uriIpc"},{"name":"transformErrorForSerialization","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errors"},{"name":"transformIncomingURIs","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/uriIpc"},{"name":"transformOutgoingURIs","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/uriIpc"},{"name":"TransformStream","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"TransitionEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Translations","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionPoints"},{"name":"translationsConfigFile","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"transparent","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"TransposeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"Tray","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"TreeDragOverBubble","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/tree"},{"name":"TreeDragOverReactions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/tree"},{"name":"TreeElement","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineModel"},{"name":"TreeError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/tree"},{"name":"treeIndentGuidesStroke","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"TreeItem","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TreeItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"TreeItem2","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TreeItemCollapsibleState","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TreeItemCollapsibleState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/views"},{"name":"TreeItemCollapsibleState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"TreeMouseEventTarget","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/tree"},{"name":"TreeNode","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase"},{"name":"TreeResourceNavigator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"TreeView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/views/treeView"},{"name":"TreeViewPane","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/views/treeView"},{"name":"TreeVisibility","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/tree"},{"name":"TreeWalker","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"TRIGGER_RENAME_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"TriggerAction","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/quickinput/browser/pickerQuickAccess"},{"name":"triggerAsyncId","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"async_hooks"},{"name":"triggerDownload","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"TriggerParameterHintsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/parameterHints/parameterHints"},{"name":"Triggers","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskSystem"},{"name":"TriggerSuggestAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestController"},{"name":"trim","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"TrimFinalNewLinesParticipant","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/saveParticipants"},{"name":"trimTrailingWhitespace","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/commands/trimTrailingWhitespaceCommand"},{"name":"TrimTrailingWhitespaceAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"TrimTrailingWhitespaceCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/commands/trimTrailingWhitespaceCommand"},{"name":"TrimWhitespaceParticipant","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/saveParticipants"},{"name":"true","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"trueMachineIdKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetry"},{"name":"truncate","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"truncate","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"truncateSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"TRUSTED_DOMAINS_CONTENT_STORAGE_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/url/common/trustedDomains"},{"name":"TRUSTED_DOMAINS_STORAGE_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/url/common/trustedDomains"},{"name":"TrustedDomainsFileSystemProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/url/common/trustedDomainsFileSystemProvider"},{"name":"try","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"TunnelCloseableContextKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/remote/browser/tunnelView"},{"name":"TunnelDto","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTunnelService"},{"name":"TunnelFactoryContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/remote/common/tunnelFactory"},{"name":"TunnelModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/common/remoteExplorerService"},{"name":"TunnelPanel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/remote/browser/tunnelView"},{"name":"TunnelPanelDescriptor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/remote/browser/tunnelView"},{"name":"TunnelService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/common/tunnelService"},{"name":"TunnelService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/node/tunnelService"},{"name":"TunnelType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/common/remoteExplorerService"},{"name":"TunnelTypeContextKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/remote/browser/tunnelView"},{"name":"TunnelViewModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/remote/browser/tunnelView"},{"name":"twistiePixels","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/baseDebugView"},{"name":"type","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"type","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"Type","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/comment/lineCommentCommand"},{"name":"typeAndModifierIdPattern","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry"},{"name":"TypeDefinitionProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"TypeError","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"typeof","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"TypeOperations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorTypeOperations"},{"name":"types","kind":"module","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"TypeWithAutoClosingCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorTypeOperations"},{"name":"ucs2","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"punycode"},{"name":"UIEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"UIKind","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"UIKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHost.protocol"},{"name":"UILabelProvider","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keybindingLabels"},{"name":"Uint16Array","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Uint32Array","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Uint8Array","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Uint8ClampedArray","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Uint8Matrix","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/linkComputer"},{"name":"umask","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"undefined","kind":"var","kindModifiers":"","sortText":"4"},{"name":"UndoIgnoreExtensionRecommendationAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"UndoRedoElementType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/undoRedo/common/undoRedo"},{"name":"UndoRedoService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/undoRedo/common/undoRedoService"},{"name":"UndoWebviewEditorCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewCommands"},{"name":"unescape","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"unescape","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"querystring"},{"name":"Unicode11Addon","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/xterm-addon-unicode11/typings/xterm-addon-unicode11"},{"name":"unicodeEscapesToPCRE2","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepTextSearchEngine"},{"name":"UninstallAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"unique","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"uniqueFilter","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"unknown","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"UNKNOWN_SOURCE_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugSource"},{"name":"UnknownExtensionRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewer"},{"name":"unlink","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"unlink","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"unlinkSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"UnloadReason","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/lifecycle/electron-main/lifecycleMainService"},{"name":"unmnemonicLabel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/labels"},{"name":"untildify","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/labels"},{"name":"UNTITLED_WORKSPACE_NAME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"UntitledTextEditorInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorInput"},{"name":"UntitledTextEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorModel"},{"name":"UntitledTextEditorService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorService"},{"name":"unwatchFile","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"unzip","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"unzipSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"UpdateAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"UpdateAllAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"UpdateChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/update/electron-main/updateIpc"},{"name":"updateColorThemeConfigurationSchemas","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/themeConfiguration"},{"name":"UpdateContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/update/browser/update"},{"name":"updateFileIconThemeConfigurationSchemas","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/themeConfiguration"},{"name":"updateIgnoredSettings","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/settingsMerge"},{"name":"updateProblemMatchers","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/jsonSchema_v2"},{"name":"updateProductIconThemeConfigurationSchemas","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/themeConfiguration"},{"name":"updateTreeMetadata","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase"},{"name":"UpdateType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/update/common/update"},{"name":"updateViewTypeSchema","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/browser/editorAssociationsSetting"},{"name":"UpperCaseAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"uppercaseFirstLetter","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"uptime","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"uptime","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"Uri","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"Uri","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/editor.api"},{"name":"URI","kind":"alias","kindModifiers":"","sortText":"0"},{"name":"URIError","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"UriIterator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/map"},{"name":"uriToFsPath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/uri"},{"name":"URITransformer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/uriIpc"},{"name":"URITransformerService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostUriTransformerService"},{"name":"url","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"inspector"},{"name":"URL","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"URL","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"url"},{"name":"URLHandlerChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/url/common/urlIpc"},{"name":"URLHandlerChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/url/common/urlIpc"},{"name":"URLHandlerRouter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/url/common/urlIpc"},{"name":"URLSearchParams","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"URLSearchParams","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"url"},{"name":"URLService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/url/node/urlService"},{"name":"USE_ICACLS","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Sender"},{"name":"USE_SPLIT_JSON_SETTING","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferences"},{"name":"useFakeTimers","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"useFakeXMLHttpRequest","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"USER_DATA_SYNC_SCHEME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"USER_MANIFEST_CACHE_FILE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensions/common/extensions"},{"name":"USER_STANDALONE_CONFIGURATIONS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"USER_TASKS_GROUP_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskService"},{"name":"userAgent","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"UserConfiguration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/browser/configuration"},{"name":"UserDataAutoSyncChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSyncIpc"},{"name":"UserDataAutoSyncService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataAutoSyncService"},{"name":"UserDataAutoSyncService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataAutoSyncService"},{"name":"UserDataAutoSyncService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/electron-browser/userDataAutoSyncService"},{"name":"UserDataAutoSyncService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/userDataSync/electron-browser/userDataAutoSyncService"},{"name":"UserDataSycnUtilServiceChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSyncIpc"},{"name":"UserDataSyncAuthentication","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncAuthentication"},{"name":"UserDataSyncBackupStoreService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSyncBackupStoreService"},{"name":"UserDataSyncChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSyncIpc"},{"name":"UserDataSyncClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/test/common/userDataSyncClient"},{"name":"UserDataSyncEnablementService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSyncEnablementService"},{"name":"UserDataSyncError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"UserDataSyncErrorCode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"userDataSyncLogChannelId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/logs/common/logConstants"},{"name":"UserDataSyncLogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSyncLog"},{"name":"UserDataSyncService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSyncService"},{"name":"UserDataSyncService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/userDataSync/electron-browser/userDataSyncService"},{"name":"UserDataSyncStoreError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"UserDataSyncStoreService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSyncStoreService"},{"name":"UserDataSyncTestServer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/test/common/userDataSyncClient"},{"name":"UserDataSyncTrigger","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncTrigger"},{"name":"UserDataSyncUtilServiceClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSyncIpc"},{"name":"UserDataSyncViewContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncView"},{"name":"UserDataSyncWorkbenchContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSync"},{"name":"userInfo","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"UserSettings","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationModels"},{"name":"UserSettingsLabelProvider","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keybindingLabels"},{"name":"UserSettingsRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesRenderers"},{"name":"userSettingsSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"useSlashForPath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"USLayoutResolvedKeybinding","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/keybinding/common/usLayoutResolvedKeybinding"},{"name":"USUAL_WORD_SEPARATORS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/wordHelper"},{"name":"UTF16be","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"UTF16be_BOM","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"UTF16le","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"UTF16le_BOM","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"UTF8","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"UTF8_BOM","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"UTF8_BOM_CHARACTER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"UTF8_with_bom","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"utimes","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"utimesSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"UV_UDP_REUSEADDR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"V4MAPPED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"valid","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"ValidAnnotatedEditOperation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model"},{"name":"validateConstraint","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"validateConstraints","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"ValidatedEditorOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"validateFileName","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/yauzl/index"},{"name":"validateFileName","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"validatePaths","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/node/paths"},{"name":"validateProperty","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationRegistry"},{"name":"validateTelemetryData","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetryUtils"},{"name":"ValidationState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/parsers"},{"name":"ValidationStatus","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/parsers"},{"name":"ValidityState","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"validRange","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"values","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/map"},{"name":"values","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/collections"},{"name":"var","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"Variable","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetParser"},{"name":"Variable","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"VARIABLES_VIEW_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"VariablesDataSource","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/variablesView"},{"name":"variableSetEmitter","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/variablesView"},{"name":"VariablesRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/variablesView"},{"name":"VariablesView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/variablesView"},{"name":"verbose","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-sqlite3/index"},{"name":"Verbose","kind":"enum member","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/SeverityLevel"},{"name":"Verbosity","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"VerifiedTask","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem"},{"name":"verify","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"Verify","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"version","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"version","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"punycode"},{"name":"version","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/spdlog/index"},{"name":"version","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"versions","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"VerticalRevealType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"VerticalScrollbar","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/scrollbar/verticalScrollbar"},{"name":"VideoPlaybackQuality","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"View","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/view/viewImpl"},{"name":"VIEW_CONTAINER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/explorerViewlet"},{"name":"VIEW_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"ViewColumn","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"ViewColumn","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"ViewColumn","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"viewColumnToEditorGroup","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/shared/editor"},{"name":"ViewConfigurationChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewContainerLocation","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/views"},{"name":"ViewContentPriority","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/views"},{"name":"ViewContentSizeChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewContentWidgets","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/contentWidgets/contentWidgets"},{"name":"ViewContext","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewContext"},{"name":"ViewController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/view/viewController"},{"name":"ViewCursor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/viewCursors/viewCursor"},{"name":"ViewCursors","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/viewCursors/viewCursors"},{"name":"ViewCursorStateChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewDecorationsChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewDescriptorService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/views/browser/viewDescriptorService"},{"name":"ViewEventDispatcher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEventDispatcher"},{"name":"ViewEventEmitter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewEventHandler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/viewEventHandler"},{"name":"ViewEventsCollector","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewEventType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewFlushedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewFocusChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewIdentifierMap","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/common/viewsWelcomeExtensionPoint"},{"name":"ViewLanguageConfigurationEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewLayout","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/viewLayout"},{"name":"Viewlet","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/viewlet"},{"name":"VIEWLET_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"VIEWLET_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"VIEWLET_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensions"},{"name":"VIEWLET_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/common/scm"},{"name":"VIEWLET_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"VIEWLET_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/remote/common/remote.contribution"},{"name":"ViewletActivityAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/activitybar/activitybarActions"},{"name":"ViewletDescriptor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/viewlet"},{"name":"ViewletRegistry","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/viewlet"},{"name":"ViewLine","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/lines/viewLine"},{"name":"ViewLineData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/viewModel"},{"name":"ViewLineMappingChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewLineOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/lines/viewLine"},{"name":"ViewLineRenderingData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/viewModel"},{"name":"ViewLines","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/lines/viewLines"},{"name":"ViewLinesChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewLinesDeletedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewLinesInsertedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewLineToken","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/core/viewLineToken"},{"name":"ViewLineTokenFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/core/viewLineToken"},{"name":"ViewLineTokens","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/core/viewLineToken"},{"name":"ViewMenuActions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/views/viewMenuActions"},{"name":"ViewModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/viewModelImpl"},{"name":"ViewModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugViewModel"},{"name":"ViewModelDecoration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/viewModel"},{"name":"ViewModelDecorations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/viewModelDecorations"},{"name":"ViewOutgoingEvents","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/view/viewOutgoingEvents"},{"name":"ViewOverlayLine","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/view/viewOverlays"},{"name":"ViewOverlays","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/view/viewOverlays"},{"name":"ViewOverlayWidgets","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets"},{"name":"ViewPane","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/views/viewPaneContainer"},{"name":"ViewPaneContainer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/views/viewPaneContainer"},{"name":"ViewPart","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/view/viewPart"},{"name":"Viewport","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/viewModel"},{"name":"ViewportData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/viewLinesViewportData"},{"name":"ViewQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/quickaccess/browser/viewQuickAccess"},{"name":"ViewRevealRangeRequestEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"viewsContainersContribution","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/viewsExtensionPoint"},{"name":"ViewScrollChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/views/views"},{"name":"ViewsWelcomeContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/common/viewsWelcomeContribution"},{"name":"viewsWelcomeExtensionPointDescriptor","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/common/viewsWelcomeExtensionPoint"},{"name":"ViewsWelcomeExtensionPointFields","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/common/viewsWelcomeExtensionPoint"},{"name":"ViewThemeChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewTokensChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewTokensColorsChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"viewTypeSchamaAddition","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/browser/editorAssociationsSetting"},{"name":"ViewZoneDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/zoneWidget/zoneWidget"},{"name":"ViewZones","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/viewZones/viewZones"},{"name":"ViewZonesChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"VirtualDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersTreeViewer"},{"name":"VirtualDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree"},{"name":"virtualMachineHint","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/id"},{"name":"VirualDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewer"},{"name":"VisibleLinesCollection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/view/viewLayer"},{"name":"VisibleRanges","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/renderingContext"},{"name":"visit","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"void","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"VRDisplay","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"VRDisplayCapabilities","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"VRDisplayEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"VREyeParameters","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"VRFieldOfView","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"VRFrameData","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"VRPose","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"vs","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/themes"},{"name":"vs_code_editor_walkthrough","kind":"property","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/editor/vs_code_editor_walkthrough"},{"name":"vs_code_welcome_page","kind":"property","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/page/browser/vs_code_welcome_page"},{"name":"vs_dark","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/themes"},{"name":"VS_DARK_THEME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/workbenchThemeService"},{"name":"VS_HC_THEME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/workbenchThemeService"},{"name":"VS_LIGHT_THEME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/workbenchThemeService"},{"name":"VSBuffer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"VTTCue","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"VTTRegion","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"W_OK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WAIT_BETWEEN_RESEND","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Sender"},{"name":"WALK_THROUGH_FOCUS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughPart"},{"name":"WalkThroughArrowDown","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughActions"},{"name":"WalkThroughArrowUp","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughActions"},{"name":"WalkThroughContentProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider"},{"name":"WalkThroughInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughInput"},{"name":"WalkThroughModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughInput"},{"name":"WalkThroughPageDown","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughActions"},{"name":"WalkThroughPageUp","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughActions"},{"name":"WalkThroughPart","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughPart"},{"name":"WalkThroughSnippetContentProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider"},{"name":"warn","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"Warning","kind":"enum member","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/SeverityLevel"},{"name":"watch","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"watch","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/chokidar/types/index"},{"name":"WATCH_VIEW_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"WatcherChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/watcher/unix/watcherIpc"},{"name":"WatcherChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/watcher/nsfw/watcherIpc"},{"name":"WatcherChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/watcher/unix/watcherIpc"},{"name":"WatcherChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/watcher/nsfw/watcherIpc"},{"name":"WatchExpressionsRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/watchExpressionsView"},{"name":"WatchExpressionsView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/watchExpressionsView"},{"name":"watchFile","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"watchFile","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/watcher"},{"name":"watchFolder","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/watcher"},{"name":"WatchingProblemCollector","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemCollectors"},{"name":"WatermarkContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/watermark/browser/watermark"},{"name":"WaveShaperNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WeakMap","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WeakMapper","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/tree"},{"name":"WeakSet","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebAssembly","kind":"module","kindModifiers":"declare","sortText":"4"},{"name":"WebAuthentication","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebAuthnAssertion","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"webContents","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"WebContents","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"webFrame","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"WebGL2RenderingContext","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLActiveInfo","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebglAddon","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/xterm-addon-webgl/typings/xterm-addon-webgl"},{"name":"WebGLBuffer","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLContextEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLFramebuffer","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLObject","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLProgram","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLQuery","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLRenderbuffer","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLRenderingContext","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLSampler","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLShader","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLShaderPrecisionFormat","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLSync","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLTexture","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLTransformFeedback","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLUniformLocation","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLVertexArrayObject","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebIssueService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/issue/browser/issueService"},{"name":"webkitCancelAnimationFrame","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"webkitConvertPointFromNodeToPage","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"webkitConvertPointFromPageToNode","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"WebKitCSSMatrix","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebKitPoint","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"webkitRequestAnimationFrame","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"webkitRTCPeerConnection","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"webkitURL","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebLinksAddon","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/xterm-addon-web-links/typings/xterm-addon-web-links"},{"name":"WebRequest","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"WebResourceIdentityService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/resource/common/resourceIdentityService"},{"name":"WebSocket","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebSocketNodeSocket","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/node/ipc.net"},{"name":"WebTelemetryAppender","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/telemetry/browser/telemetryService"},{"name":"webviewDeveloperCategory","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webview"},{"name":"WebviewEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewEditor"},{"name":"WebviewEditorCapabilities","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHost.protocol"},{"name":"WebViewEditorFindNextCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewCommands"},{"name":"WebViewEditorFindPreviousCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewCommands"},{"name":"WebviewEditorInputFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewEditorInputFactory"},{"name":"WebviewEditorService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewWorkbenchService"},{"name":"WebviewFindWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewFindWidget"},{"name":"webviewHasOwnEditFunctionsContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webview"},{"name":"webviewHasOwnEditFunctionsContextKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webview"},{"name":"WebviewIconManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewIconManager"},{"name":"WebviewInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewEditorInput"},{"name":"WebviewMessageChannels","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/baseWebviewElement"},{"name":"WebviewPortMappingManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/common/portMapping"},{"name":"WebviewResourceResponse","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/common/resourceLoader"},{"name":"WebviewResourceScheme","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/common/resourceLoader"},{"name":"WebviewService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewService"},{"name":"webviewTag","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"WebviewThemeDataProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/common/themeing"},{"name":"WebWorkerExtensionHostStarter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/browser/webWorkerExtensionHostStarter"},{"name":"WelcomeInputFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/page/browser/welcomePage"},{"name":"WelcomeOverlayAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/overlay/browser/welcomeOverlay"},{"name":"WelcomePageAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/page/browser/welcomePage"},{"name":"welcomePageBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/page/browser/welcomePage"},{"name":"WelcomePageContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/page/browser/welcomePage"},{"name":"WelcomeView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/welcomeView"},{"name":"WheelEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"whenDeleted","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"whenProviderRegistered","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"while","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"WholeWordsCheckbox","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/findinput/findInputCheckboxes"},{"name":"Widget","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/widget"},{"name":"widgetShadow","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"WidgetVerticalAlignment","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalWidgetManager"},{"name":"WillSaveStateReason","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/storage/common/storage"},{"name":"win32","kind":"module","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"path"},{"name":"win32","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"win32","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/processes"},{"name":"Win32UpdateService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/update/electron-main/updateService.win32"},{"name":"window","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"window","kind":"module","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"Window","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WINDOW_ACTIVE_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"WINDOW_INACTIVE_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"WindowDriverChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/driver/node/driver"},{"name":"WindowDriverChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/driver/node/driver"},{"name":"WindowDriverRegistryChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/driver/node/driver"},{"name":"WindowDriverRegistryChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/driver/node/driver"},{"name":"WindowMode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/electron-main/windows"},{"name":"windowOpenNoOpener","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"windowSettings","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationRegistry"},{"name":"WindowsExternalTerminalService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/externalTerminal/node/externalTerminalService"},{"name":"WindowsKeyboardMapper","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/windowsKeyboardMapper"},{"name":"windowsKeyboardMappingEquals","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/windowsKeyboardMapper"},{"name":"WindowsMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/electron-main/windowsMainService"},{"name":"WindowsNativeResolvedKeybinding","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/windowsKeyboardMapper"},{"name":"WindowsShellHelper","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/electron-browser/windowsShellHelper"},{"name":"WindowsShellType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminal"},{"name":"windowsStore","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"Winreg","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"with","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"withEditorModel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/editorTestUtils"},{"name":"withFormatting","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/jsonEdit"},{"name":"withNullAsUndefined","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"withTestCodeEditor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/browser/testCodeEditor"},{"name":"withTestNotebook","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/test/testNotebookEditor"},{"name":"withUndefinedAsNull","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"WordCharacterClass","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/wordCharacterClassifier"},{"name":"WordCharacterClassifier","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/wordCharacterClassifier"},{"name":"WordContextKey","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/wordContextKey"},{"name":"WordDistance","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/wordDistance"},{"name":"WordLeftCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"WordNavigationType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorWordOperations"},{"name":"WordOperations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorWordOperations"},{"name":"WordPartLeftCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordPartOperations/wordPartOperations"},{"name":"WordPartOperations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorWordOperations"},{"name":"WordPartRightCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordPartOperations/wordPartOperations"},{"name":"WordRightCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"WordSelectionRangeProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/smartSelect/wordSelections"},{"name":"Workbench","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/workbench"},{"name":"WORKBENCH_BACKGROUND","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"WorkbenchAsyncDataTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"workbenchColorsSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"WorkbenchCompressibleAsyncDataTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"WorkbenchCompressibleObjectTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"workbenchConfigurationNodeBase","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/configuration"},{"name":"WorkbenchContextKeysHandler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/contextkeys"},{"name":"WorkbenchDataTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"workbenchInstantiationService","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"workbenchInstantiationService","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/electron-browser/workbenchTestServices"},{"name":"WorkbenchIssueService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/issue/electron-browser/issueService"},{"name":"WorkbenchKeybindingService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService"},{"name":"WorkbenchList","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"WorkbenchListAutomaticKeyboardNavigation","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"WorkbenchListAutomaticKeyboardNavigationKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"WorkbenchListDoubleSelection","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"WorkbenchListFocusContextKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"WorkbenchListHasSelectionOrFocus","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"WorkbenchListMultiSelection","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"WorkbenchListSupportsKeyboardNavigation","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"WorkbenchListSupportsMultiSelectContextKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"WorkbenchModeServiceImpl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/mode/common/workbenchModeService"},{"name":"WorkbenchObjectTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"WorkbenchPagedList","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"WorkbenchReferencesController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/workbenchReferenceSearch"},{"name":"WorkbenchState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspace/common/workspace"},{"name":"WorkbenchStateContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/contextkeys"},{"name":"WorkbenchThemeService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/browser/workbenchThemeService"},{"name":"worker","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"Worker","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Worker","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"Worker","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"worker_threads"},{"name":"workerData","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"worker_threads"},{"name":"WorkerExtHostDebugService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDebugService"},{"name":"WorkerExtHostTask","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTask"},{"name":"WorkerExtHostTerminalService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTerminalService"},{"name":"workers","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"WorkingCopyCapabilities","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/workingCopy/common/workingCopyService"},{"name":"WorkingCopyFileOperationParticipant","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/workingCopy/common/workingCopyFileOperationParticipant"},{"name":"WorkingCopyFileService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/workingCopy/common/workingCopyFileService"},{"name":"WorkingCopyService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/workingCopy/common/workingCopyService"},{"name":"Worklet","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"workspace","kind":"module","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"Workspace","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspace/common/workspace"},{"name":"WORKSPACE_EXTENSION","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"WORKSPACE_FILTER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"WORKSPACE_SCOPES","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"WORKSPACE_STANDALONE_CONFIGURATIONS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"WorkspaceBasedVariableResolver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetVariables"},{"name":"WorkspaceChangeExtHostRelauncher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/relauncher/browser/relauncher.contribution"},{"name":"WorkspaceConfiguration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/browser/configuration"},{"name":"WorkspaceConfigurationEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesModels"},{"name":"WorkspaceConfigurationModelParser","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configurationModels"},{"name":"WorkspaceEdit","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"WorkspaceEdit","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"WorkspaceEdit","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"WorkspaceFileEdit","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"WorkspaceFolder","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspace/common/workspace"},{"name":"WorkspaceFolderCountContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/contextkeys"},{"name":"WorkspaceRecommendations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/workspaceRecommendations"},{"name":"WorkspaceRecommendedExtensionsView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews"},{"name":"WorkspaceService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/browser/configurationService"},{"name":"WorkspaceSettingsRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesRenderers"},{"name":"workspaceSettingsSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"WorkspacesHistoryMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/electron-main/workspacesHistoryMainService"},{"name":"WorkspacesMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/electron-main/workspacesMainService"},{"name":"WorkspacesService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/electron-main/workspacesService"},{"name":"WorkspaceSymbol","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"WorkspaceSymbolProviderRegistry","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/search"},{"name":"WorkspaceTags","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tags/electron-browser/workspaceTags"},{"name":"WorkspaceTagsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tags/electron-browser/workspaceTagsService"},{"name":"WorkspaceTextEdit","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"WorkspaceWatcher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/workspaceWatcher"},{"name":"wrap","kind":"method","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"module"},{"name":"WrappingIndent","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"WrappingIndent","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"wrapWithCorrelationContext","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/applicationinsights"},{"name":"Writable","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"stream"},{"name":"WritableStream","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"write","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"writeFile","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"writeFile","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"writeFileSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"writeFileSync","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"writeHeapSnapshot","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"v8"},{"name":"writeProfile","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"v8-inspect-profiler"},{"name":"writer","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"repl"},{"name":"WriteStream","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"WriteStream","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tty"},{"name":"writeSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"writeTransientState","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleWordWrap"},{"name":"writeUInt16LE","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"writeUInt32BE","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"writeUInt32LE","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"writeUInt8","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"writev","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"writevSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"WSA_E_CANCELLED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSA_E_NO_MORE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEACCES","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEADDRINUSE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEADDRNOTAVAIL","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEAFNOSUPPORT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEALREADY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEBADF","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAECANCELLED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAECONNABORTED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAECONNREFUSED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAECONNRESET","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEDESTADDRREQ","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEDISCON","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEDQUOT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEFAULT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEHOSTDOWN","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEHOSTUNREACH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEINPROGRESS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEINTR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEINVAL","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEINVALIDPROCTABLE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEINVALIDPROVIDER","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEISCONN","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAELOOP","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEMFILE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEMSGSIZE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAENAMETOOLONG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAENETDOWN","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAENETRESET","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAENETUNREACH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAENOBUFS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAENOMORE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAENOPROTOOPT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAENOTCONN","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAENOTEMPTY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAENOTSOCK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEOPNOTSUPP","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEPFNOSUPPORT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEPROCLIM","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEPROTONOSUPPORT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEPROTOTYPE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEPROVIDERFAILEDINIT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEREFUSED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEREMOTE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAESHUTDOWN","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAESOCKTNOSUPPORT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAESTALE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAETIMEDOUT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAETOOMANYREFS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEUSERS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEWOULDBLOCK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSANOTINITIALISED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSASERVICE_NOT_FOUND","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSASYSCALLFAILURE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSASYSNOTREADY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSATYPE_NOT_FOUND","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAVERNOTSUPPORTED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"X_OK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"x01","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x02","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x03","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x04","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x05","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x06","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x07","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x08","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x09","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x10","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x11","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x12","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x13","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x14","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x15","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x16","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x17","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x18","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x19","kind":"const","kindModifiers":"","sortText":"4"},{"name":"xdescribe","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"xdgRuntimeDir","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/environmentService"},{"name":"xit","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"XMLDocument","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"XMLHttpRequest","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"XMLHttpRequestEventTarget","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"XMLHttpRequestUpload","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"XMLSerializer","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"XPathEvaluator","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"XPathExpression","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"XPathResult","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"XSLTProcessor","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"yield","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"Z_ASCII","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_BEST_COMPRESSION","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_BEST_SPEED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_BINARY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_BLOCK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_BUF_ERROR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_DATA_ERROR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_DEFAULT_COMPRESSION","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_DEFAULT_STRATEGY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_DEFLATED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_ERRNO","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_FILTERED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_FINISH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_FIXED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_FULL_FLUSH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_HUFFMAN_ONLY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_MEM_ERROR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_NEED_DICT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_NO_COMPRESSION","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_NO_FLUSH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_OK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_PARTIAL_FLUSH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_RLE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_STREAM_END","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_STREAM_ERROR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_SYNC_FLUSH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_TEXT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_TREES","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_UNKNOWN","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_VERSION_ERROR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"zip","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/zip"},{"name":"ZipFile","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/yauzl/index"},{"name":"ZipFile","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/yazl/index"},{"name":"ZoneWidget","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/zoneWidget/zoneWidget"},{"name":"ZoomInAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"},{"name":"ZoomOutAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"},{"name":"ZoomResetAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"}]}}'; diff --git a/src/vs/workbench/test/browser/api/extHostDocumentData.test.ts b/src/vs/workbench/test/browser/api/extHostDocumentData.test.ts index 89f9453caf..d8bb4c58ff 100644 --- a/src/vs/workbench/test/browser/api/extHostDocumentData.test.ts +++ b/src/vs/workbench/test/browser/api/extHostDocumentData.test.ts @@ -11,7 +11,7 @@ import { Range } from 'vs/editor/common/core/range'; import { MainThreadDocumentsShape } from 'vs/workbench/api/common/extHost.protocol'; import { IModelChangedEvent } from 'vs/editor/common/model/mirrorTextModel'; import { mock } from 'vs/base/test/common/mock'; - +import * as perfData from './extHostDocumentData.test.perf-data'; suite('ExtHostDocumentData', () => { @@ -301,9 +301,9 @@ suite('ExtHostDocumentData', () => { test('getWordRangeAtPosition can freeze the extension host #95319', function () { const regex = /(https?:\/\/github\.com\/(([^\s]+)\/([^\s]+))\/([^\s]+\/)?(issues|pull)\/([0-9]+))|(([^\s]+)\/([^\s]+))?#([1-9][0-9]*)($|[\s\:\;\-\(\=])/; - const line = '{"seq":0,"type":"response","command":"completionInfo","request_seq":956,"success":true,"body":{"isGlobalCompletion":true,"isMemberCompletion":false,"isNewIdentifierLocation":false,"entries":[{"name":"__dirname","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"__filename","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"_getInstrumentationKey","kind":"method","kindModifiers":"private,static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Config"},{"name":"_util","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/instantiation/common/instantiation"},{"name":"$","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"abort","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"AbortController","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AbortSignal","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AbstractCaseAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"AbstractCodeEditorService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/services/abstractCodeEditorService"},{"name":"AbstractCommandsQuickAccessProvider","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/quickinput/browser/commandsQuickAccess"},{"name":"AbstractConfigureRecommendedExtensionsAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"AbstractContextKeyService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/browser/contextKeyService"},{"name":"AbstractDebugAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"AbstractDebugAdapter","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/abstractDebugAdapter"},{"name":"AbstractDeleteAllToBoundaryAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"AbstractEditorCommandsQuickAccessProvider","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/quickAccess/commandsQuickAccess"},{"name":"AbstractEditorNavigationQuickAccessProvider","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/quickAccess/editorNavigationQuickAccess"},{"name":"AbstractExpressionsRenderer","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/baseDebugView"},{"name":"AbstractExtensionService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService"},{"name":"AbstractExtHostExtensionService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostExtensionService"},{"name":"AbstractExtHostOutputChannel","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostOutput"},{"name":"AbstractFileDialogService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/dialogs/browser/abstractFileDialogService"},{"name":"AbstractFileOutputChannelModel","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/output/common/outputChannelModel"},{"name":"AbstractFileSynchroniser","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/abstractSynchronizer"},{"name":"AbstractGotoLineQuickAccessProvider","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/quickAccess/gotoLineQuickAccess"},{"name":"AbstractGotoSymbolQuickAccessProvider","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/quickAccess/gotoSymbolQuickAccess"},{"name":"AbstractJsonFileSynchroniser","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/abstractSynchronizer"},{"name":"AbstractKeybindingService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/keybinding/common/abstractKeybindingService"},{"name":"AbstractLifecycleService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/lifecycle/common/lifecycleService"},{"name":"AbstractLineHighlightOverlay","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight"},{"name":"AbstractLogService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/log"},{"name":"AbstractPathService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/path/common/pathService"},{"name":"AbstractProblemCollector","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemCollectors"},{"name":"AbstractProcess","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/processes"},{"name":"AbstractRange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AbstractRemoteAgentService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/common/abstractRemoteAgentService"},{"name":"AbstractScrollableElement","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/scrollbar/scrollableElement"},{"name":"AbstractScrollbar","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/scrollbar/abstractScrollbar"},{"name":"AbstractSearchAndReplaceAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"AbstractSettingRenderer","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"AbstractSettingsModel","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesModels"},{"name":"AbstractShowReleaseNotesAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/update/browser/update"},{"name":"AbstractSortLinesAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"AbstractSynchroniser","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/abstractSynchronizer"},{"name":"AbstractTaskService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/browser/abstractTaskService"},{"name":"AbstractTelemetryOptOut","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/telemetryOptOut/browser/telemetryOptOut"},{"name":"AbstractTextFileService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/browser/textFileService"},{"name":"AbstractTextMateService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textMate/browser/abstractTextMateService"},{"name":"AbstractTextResourceEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/textResourceEditor"},{"name":"AbstractTree","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/abstractTree"},{"name":"AbstractTunnelService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/common/tunnelService"},{"name":"AbstractUpdateService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/update/electron-main/abstractUpdateService"},{"name":"AbstractURLService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/url/common/urlService"},{"name":"AbstractVariableResolverService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configurationResolver/common/variableResolver"},{"name":"AbstractWorkspaceEditingService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService"},{"name":"Accelerator","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"acceptLocalChangesCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler"},{"name":"access","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"AccessibilityHelpNLS","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standaloneStrings"},{"name":"AccessibilityProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesTree"},{"name":"AccessibilityProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree"},{"name":"AccessibilityService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/accessibility/common/accessibilityService"},{"name":"AccessibilitySupport","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/accessibility/common/accessibility"},{"name":"AccessibilitySupport","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"accessSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"AccountsActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/activitybar/activitybarActions"},{"name":"ACL_IDENTITY","kind":"property","kindModifiers":"private,static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Sender"},{"name":"ACLED_DIRECTORIES","kind":"property","kindModifiers":"private,static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Sender"},{"name":"Action","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/actions"},{"name":"Action2","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/common/actions"},{"name":"ActionBar","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/actionbar/actionbar"},{"name":"ActionRunner","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/actions"},{"name":"actions","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"vscode-nsfw"},{"name":"ActionsOrientation","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/actionbar/actionbar"},{"name":"ActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/actionbar/actionbar"},{"name":"ActivatedExtension","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostExtensionActivator"},{"name":"ActivationTimes","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensions"},{"name":"ACTIVE_GROUP","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/common/editorService"},{"name":"activeContrastBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"ActiveEditorContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"ActiveEditorGroupEmptyContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"ActiveEditorGroupIndexContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"ActiveEditorGroupLastContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"ActiveEditorIsReadonlyContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"ActiveGroupEditorsByMostRecentlyUsedQuickAccess","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorQuickAccess"},{"name":"ActivePanelContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/panel"},{"name":"ActiveViewletContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/viewlet"},{"name":"ActiveWindowManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/node/activeWindowTracker"},{"name":"ACTIVITY_BAR_ACTIVE_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"ACTIVITY_BAR_ACTIVE_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"ACTIVITY_BAR_ACTIVE_FOCUS_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"ACTIVITY_BAR_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"ACTIVITY_BAR_BADGE_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"ACTIVITY_BAR_BADGE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"ACTIVITY_BAR_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"ACTIVITY_BAR_DRAG_AND_DROP_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"ACTIVITY_BAR_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"ACTIVITY_BAR_INACTIVE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"ActivityAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/compositeBarActions"},{"name":"ActivityActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/compositeBarActions"},{"name":"ActivitybarPart","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/activitybar/activitybarPart"},{"name":"ActivityService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/activity/browser/activityService"},{"name":"ActivityUpdater","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markers"},{"name":"ADD_CONFIGURATION_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"ADD_ROOT_FOLDER_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/workspaceCommands"},{"name":"ADD_ROOT_FOLDER_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/workspaceCommands"},{"name":"addArg","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/argvHelper"},{"name":"addClass","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"addClasses","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"addContextToEditorMatches","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/searchHelpers"},{"name":"AddCursorsAtSearchResults","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"addDisposableGenericMouseDownListner","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"addDisposableGenericMouseMoveListner","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"addDisposableGenericMouseUpListner","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"addDisposableListener","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"addDisposableNonBubblingMouseOutListener","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"addDisposableNonBubblingPointerOutListener","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"addDisposableThrottledListener","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"addEventListener","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"AddFunctionBreakpointAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"addListener","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"addListener","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"ADDRCONFIG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"ADDRGETNETWORKPARAMS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"AddRootFolderAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/workspaceActions"},{"name":"AddSelectionToNextFindMatchAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/multicursor/multicursor"},{"name":"AddSelectionToPreviousFindMatchAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/multicursor/multicursor"},{"name":"addSetting","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/settingsMerge"},{"name":"addStandardDisposableGenericMouseDownListner","kind":"let","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"addStandardDisposableGenericMouseUpListner","kind":"let","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"addStandardDisposableListener","kind":"let","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"addTerminalEnvironmentKeys","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalEnvironment"},{"name":"addToValueTree","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"AddToWorkspaceFolderRecommendationsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"AddToWorkspaceRecommendationsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"addTrailingPathSeparator","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"AddWatchExpressionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"adoptToGalleryExtensionId","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagementUtil"},{"name":"after","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"afterEach","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"Agent","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"http"},{"name":"Agent","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"https"},{"name":"Aggregation","kind":"enum member","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/DataPointType"},{"name":"alert","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"alert","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/aria/aria"},{"name":"alertFormattingEdits","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/format/format"},{"name":"ALL_SYNC_RESOURCES","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"allCharCodes","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/minimap/minimapCharSheet"},{"name":"AllEditorsByAppearanceQuickAccess","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorQuickAccess"},{"name":"AllEditorsByMostRecentlyUsedQuickAccess","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorQuickAccess"},{"name":"AllKeysConfigurationChangeEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationModels"},{"name":"allowedNodeEnvironmentFlags","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"allowSetForegroundWindow","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/windows-foreground-love/index"},{"name":"allSettings","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationRegistry"},{"name":"ALPN_ENABLED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"AnalyserNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AnchorAlignment","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/contextview/contextview"},{"name":"anchorGlob","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepSearchUtils"},{"name":"AnchorPosition","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/contextview/contextview"},{"name":"animate","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"Animation","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AnimationEffect","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AnimationEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AnimationPlaybackEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AnimationTimeline","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ansiColorIdentifiers","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalColorRegistry"},{"name":"ansiColorMap","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalColorRegistry"},{"name":"any","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"anyScore","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"AnythingQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/anythingQuickAccess"},{"name":"ApiCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostApiCommands"},{"name":"ApiCommandArgument","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostApiCommands"},{"name":"ApiCommandResult","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostApiCommands"},{"name":"app","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"append","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"appendEditorTitleContextMenuItem","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions.contribution"},{"name":"appendFile","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"appendFileSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"appendKeyBindingLabel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"appendStylizedStringToContainer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/output/transforms/errorTransform"},{"name":"appendStylizedStringToContainer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugANSIHandling"},{"name":"appendToCommandPalette","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions.contribution"},{"name":"AppInsightsAppender","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/node/appInsightsAppender"},{"name":"applicationCache","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ApplicationCache","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"applicationSettings","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationRegistry"},{"name":"applyCodeAction","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionCommands"},{"name":"applyConfigurationValues","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"applyDeprecatedVariableMessage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configurationResolver/common/configurationResolverUtils"},{"name":"applyDragImage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dnd"},{"name":"applyEdit","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/jsonEdit"},{"name":"applyEdits","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/jsonEdit"},{"name":"ApplyEditsResult","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model"},{"name":"ApplyToKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher"},{"name":"appVersion","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Context"},{"name":"arch","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"arch","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"areFunctions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"areKeyboardLayoutsEqual","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/keymapInfo"},{"name":"areSame","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/settingsMerge"},{"name":"areSameExtensions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagementUtil"},{"name":"areWebviewInputOptionsEqual","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewWorkbenchService"},{"name":"argv","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"argv0","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"AriaLabelProvider","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keybindingLabels"},{"name":"Array","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ArrayBuffer","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"arrayInsert","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"ArrayNavigator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/navigator"},{"name":"ARROW_IMG_SIZE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/scrollbar/scrollbarArrow"},{"name":"as","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"asArray","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"AsbtractOutputChannelModelService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/output/common/outputChannelModel"},{"name":"asCSSUrl","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"asDomUri","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"asJson","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/request/common/request"},{"name":"asPromise","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"assert","kind":"alias","kindModifiers":"","sortText":"0"},{"name":"assertAllDefined","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"AssertDocumentLineMappingDirection","kind":"enum","kindModifiers":"","sortText":"0"},{"name":"assertEqualQueries","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/test/browser/queryBuilder.test"},{"name":"assertEqualSearchPathResults","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/test/browser/queryBuilder.test"},{"name":"AssertionError","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"assertIsDefined","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"assertMapping","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/test/electron-browser/keyboardMapperTestUtils"},{"name":"assertResolveKeybinding","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/test/electron-browser/keyboardMapperTestUtils"},{"name":"assertResolveKeyboardEvent","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/test/electron-browser/keyboardMapperTestUtils"},{"name":"assertResolveUserBinding","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/test/electron-browser/keyboardMapperTestUtils"},{"name":"asserts","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"assertSyncedModels","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/model/editableTextModelTestUtils"},{"name":"assertType","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"assign","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/objects"},{"name":"asText","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/request/common/request"},{"name":"asWebviewUri","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/shared/webview"},{"name":"async","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"AsyncDataSource","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewer"},{"name":"AsyncDataTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/asyncDataTree"},{"name":"AsyncEmitter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/event"},{"name":"AsyncResource","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"async_hooks"},{"name":"atob","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"Atomics","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"attachBadgeStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachBreadcrumbsStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachButtonStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachCheckboxStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachDialogStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachFindReplaceInputBoxStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachInputBoxStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachLinkStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachListStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachMenuStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachProgressBarStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachQuickInputStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachSelectBoxStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachStylerCallback","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"attachSuggestEnabledInputBoxStyler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput"},{"name":"Attr","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Audio","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AudioBuffer","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AudioBufferSourceNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AudioContext","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AudioDestinationNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AudioListener","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AudioNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AudioParam","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AudioParamMap","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AudioProcessingEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AudioScheduledSourceNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AudioWorklet","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AudioWorkletNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"authentication","kind":"module","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"AuthenticationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/authentication/browser/authenticationService"},{"name":"AuthenticationTokenService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSyncAccount"},{"name":"AuthenticationTokenService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/authentication/electron-browser/authenticationTokenService"},{"name":"AuthenticationTokenServiceChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSyncAccountIpc"},{"name":"AuthenticatorAssertionResponse","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AuthenticatorAttestationResponse","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AuthenticatorResponse","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"AuthStatus","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncAuthentication"},{"name":"AutoCheckUpdatesConfigurationKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensions"},{"name":"AutoFixAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionCommands"},{"name":"AutoIndentOnPaste","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentation"},{"name":"AutoIndentOnPasteCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentation"},{"name":"automaticKeyboardNavigationSettingKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"AutoSaveAfterShortDelayContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/filesConfiguration/common/filesConfigurationService"},{"name":"AutoSaveConfiguration","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"AutoSaveMode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/filesConfiguration/common/filesConfigurationService"},{"name":"AutoUpdateConfigurationKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensions"},{"name":"autoUpdater","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"AvailabilityData","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/AvailabilityData"},{"name":"AvailabilityData","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"AverageBufferSize","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase"},{"name":"await","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"BackLayerWebView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView"},{"name":"BackupFileService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/backup/common/backupFileService"},{"name":"BackupFileService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/backup/node/backupFileService"},{"name":"BackupFilesModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/backup/common/backupFileService"},{"name":"BackupMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/backup/electron-main/backupMainService"},{"name":"BackupRestorer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/backup/common/backupRestorer"},{"name":"BACKUPS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/common/environment"},{"name":"BackupTracker","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/backup/common/backupTracker"},{"name":"BADFAMILY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"BADFLAGS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"badgeBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"badgeForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"BADHINTS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"BADNAME","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"BADQUERY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"BADRESP","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"BADSTR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"BareFontInfo","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/fontInfo"},{"name":"BarProp","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Barrier","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"Base","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/Base"},{"name":"Base","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"BaseActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/actionbar/actionbar"},{"name":"BaseAudioContext","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"BaseBinaryResourceEditor","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/binaryEditor"},{"name":"BaseBreakpoint","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"BaseCellViewModel","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel"},{"name":"BaseCloseAllAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"BaseConfigurationResolverService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configurationResolver/browser/configurationResolverService"},{"name":"BaseCreateEditorGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"BaseDropdown","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/dropdown/dropdown"},{"name":"BaseEditor","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/baseEditor"},{"name":"BaseEditorQuickAccessProvider","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorQuickAccess"},{"name":"BaseErrorTelemetry","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/errorTelemetry"},{"name":"BaseExtHostTerminal","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTerminalService"},{"name":"BaseExtHostTerminalService","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTerminalService"},{"name":"BaseFocusGroupAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"BaseMoveGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"basename","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"path"},{"name":"basename","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"basename","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"basenameOrAuthority","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"BaseNavigateEditorAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"BaseQuickAccessEditorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"BaseQuickAccessNavigateAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/quickAccessActions"},{"name":"BaseResizeViewAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"BaseResolvedKeybinding","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/keybinding/common/baseResolvedKeybinding"},{"name":"BaseSaveAllAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"BaseSplitEditorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"BaseSwitchWindow","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"},{"name":"BaseTextEditor","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/textEditor"},{"name":"BaseTextEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor/textEditorModel"},{"name":"baseTypeToTelemetryType","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/TelemetryTypes/TelemetryType"},{"name":"BaseWebview","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/baseWebviewElement"},{"name":"BaseWindowDriver","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/driver/browser/baseDriver"},{"name":"BaseZoomAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"},{"name":"BasicInplaceReplace","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/inplaceReplaceSupport"},{"name":"BatchedCollector","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/textSearchManager"},{"name":"before","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"beforeEach","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"BeforeUnloadEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"BenchmarkSuite","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/model/benchmark/benchmarkUtils"},{"name":"BetterMergeId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagementUtil"},{"name":"BhxBrowser","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"bigint","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"BigInt","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"BigInt64Array","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"BigIntStats","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"BigUint64Array","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"BINARY_DIFF_EDITOR_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"BINARY_FILE_EDITOR_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"BinaryEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor/binaryEditorModel"},{"name":"BinaryFileEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/editors/binaryFileEditor"},{"name":"BinaryResourceDiffEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/binaryDiffEditor"},{"name":"binarySearch","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"BiquadFilterNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Blob","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"BlockCommentCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/comment/blockCommentCommand"},{"name":"blur","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"boolean","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"Boolean","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"BooleanEventEmitter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/widget/codeEditorWidget"},{"name":"BOTTOM_CELL_TOOLBAR_HEIGHT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/constants"},{"name":"BoundModelReferenceCollection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadDocuments"},{"name":"BracesHidingRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesRenderers"},{"name":"BracketElectricCharacterSupport","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/electricCharacter"},{"name":"BracketMatchingController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/bracketMatching/bracketMatching"},{"name":"BracketSelectionRangeProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/smartSelect/bracketSelections"},{"name":"BracketsUtils","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/richEditBrackets"},{"name":"breadcrumbsActiveSelectionForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"breadcrumbsBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"BreadcrumbsConfig","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbs"},{"name":"BreadcrumbsControl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbsControl"},{"name":"BreadcrumbsFilePicker","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbsPicker"},{"name":"breadcrumbsFocusForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"breadcrumbsForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"BreadcrumbsItem","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/breadcrumbs/breadcrumbsWidget"},{"name":"BreadcrumbsOutlinePicker","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbsPicker"},{"name":"BreadcrumbsPicker","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbsPicker"},{"name":"breadcrumbsPickerBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"BreadcrumbsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbs"},{"name":"BreadcrumbsWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/breadcrumbs/breadcrumbsWidget"},{"name":"break","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"breakBetweenGraphemeBreakType","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"Breakpoint","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"Breakpoint","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"Breakpoint","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"BREAKPOINT_EDITOR_CONTRIBUTION_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"BreakpointEditorContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/breakpointEditorContribution"},{"name":"BREAKPOINTS_VIEW_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"breakpointsExtPoint","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugSchemas"},{"name":"BreakpointsView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/breakpointsView"},{"name":"BreakpointWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/breakpointWidget"},{"name":"BreakpointWidgetContext","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"BroadcastChannel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"brotliCompress","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"brotliCompressSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"brotliDecompress","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"brotliDecompressSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"BrowserBackupTracker","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/backup/browser/backupTracker"},{"name":"BrowserClipboardService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/clipboard/browser/clipboardService"},{"name":"BrowserCredentialsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/credentials/browser/credentialsService"},{"name":"BrowserEnvironmentConfiguration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/environment/browser/environmentService"},{"name":"BrowserFeatures","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/canIUse"},{"name":"BrowserHostService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/host/browser/browserHostService"},{"name":"BrowserIntegrityServiceImpl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/integrity/browser/integrityService"},{"name":"BrowserKeyboardMapperFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/browser/keymapService"},{"name":"BrowserKeyboardMapperFactoryBase","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/browser/keymapService"},{"name":"BrowserLifecycleService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/lifecycle/browser/lifecycleService"},{"name":"BrowserPathService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/path/browser/pathService"},{"name":"BrowserRequestService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/request/browser/requestService"},{"name":"BrowserResizeObserver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/sizeObserver"},{"name":"BrowserSocketFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/browser/browserSocketFactory"},{"name":"BrowserStorageService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/storage/browser/storageService"},{"name":"BrowserTelemetryOptOut","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/telemetryOptOut/browser/telemetryOptOut"},{"name":"BrowserTextFileService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/browser/browserTextFileService"},{"name":"BrowserUpdateService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/update/browser/updateService"},{"name":"BrowserURLService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/url/browser/urlService"},{"name":"BrowserView","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"BrowserWindow","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"BrowserWindowProxy","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"BrowserWorkbenchEnvironmentService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/environment/browser/environmentService"},{"name":"BrowserWorkspaceEditingService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/workspaces/browser/workspaceEditingService"},{"name":"BrowserWorkspacesService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/workspaces/browser/workspacesService"},{"name":"btoa","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"buffer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/zip"},{"name":"Buffer","kind":"class","kindModifiers":"declare","sortText":"4"},{"name":"Buffer","kind":"alias","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"buffer"},{"name":"BufferedEmitter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc.net"},{"name":"BufferLogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/bufferLog"},{"name":"BufferredOutputChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/output/common/outputChannelModel"},{"name":"bufferToReadable","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"bufferToStream","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"buildHelpMessage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/argv"},{"name":"buildRegexParseError","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepTextSearchEngine"},{"name":"buildReplaceStringWithCasePreserved","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/search"},{"name":"buildTelemetryMessage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/node/telemetry"},{"name":"buildVersionMessage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/argv"},{"name":"BUILTIN_MANIFEST_CACHE_FILE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensions/common/extensions"},{"name":"BuiltInBasicsExtensionsView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews"},{"name":"BuiltInExtensionsView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews"},{"name":"builtinModules","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"module"},{"name":"BuiltInThemesExtensionsView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews"},{"name":"BulkCategory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditPreview"},{"name":"BulkEditAccessibilityProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree"},{"name":"BulkEditDataSource","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree"},{"name":"BulkEditDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree"},{"name":"BulkEditIdentityProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree"},{"name":"BulkEditNaviLabelProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree"},{"name":"BulkEditPane","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditPane"},{"name":"BulkEditPreviewProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditPreview"},{"name":"BulkEditService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/bulkEdit/browser/bulkEditService"},{"name":"BulkEditSorter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree"},{"name":"BulkFileOperation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditPreview"},{"name":"BulkFileOperations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditPreview"},{"name":"BulkFileOperationType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditPreview"},{"name":"BulkTextEdit","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditPreview"},{"name":"Button","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/button/button"},{"name":"buttonBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"buttonBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/page/browser/welcomePage"},{"name":"buttonForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"ButtonGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/button/button"},{"name":"buttonHoverBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"buttonHoverBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/page/browser/welcomePage"},{"name":"ByteLengthQueuingStrategy","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Cache","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Cache","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/cache"},{"name":"Cache","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/cache"},{"name":"cached","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-sqlite3/index"},{"name":"cachedDataVersionTag","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"v8"},{"name":"CachedExtensionScanner","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/electron-browser/cachedExtensionScanner"},{"name":"CachedKeyboardMapper","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/keyboardMapper"},{"name":"CachedListVirtualDelegate","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/list"},{"name":"cachedStringRepeat","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/commands/shiftCommand"},{"name":"caches","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CacheStorage","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"calcANSI8bitColor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/output/transforms/errorTransform"},{"name":"calcANSI8bitColor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugANSIHandling"},{"name":"calculateLF","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase"},{"name":"calculateSize","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase"},{"name":"Call","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree"},{"name":"callbackify","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"CallHierarchyDirection","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/callHierarchy/common/callHierarchy"},{"name":"CallHierarchyIncomingCall","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CallHierarchyIncomingCall","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CallHierarchyIncomingCall","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"CallHierarchyItem","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CallHierarchyItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CallHierarchyItem","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"CallHierarchyModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/callHierarchy/common/callHierarchy"},{"name":"CallHierarchyOutgoingCall","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CallHierarchyOutgoingCall","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CallHierarchyOutgoingCall","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"CallHierarchyProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/callHierarchy/common/callHierarchy"},{"name":"CallHierarchyTreePeekWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyPeek"},{"name":"CallRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree"},{"name":"CALLSTACK_VIEW_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CallStackEditorContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/callStackEditorContribution"},{"name":"CallStackView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/callStackView"},{"name":"CancelActionId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"cancelAnimationFrame","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"CancelCellAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookActions"},{"name":"canceled","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errors"},{"name":"CancellationToken","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/cancellation"},{"name":"CancellationTokenSource","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CancellationTokenSource","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/cancellation"},{"name":"CancellationTokenSource","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/editor.api"},{"name":"CANCELLED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"CancelSearchAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"canExecuteOnUI","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionsUtil"},{"name":"canExecuteOnWeb","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionsUtil"},{"name":"canExecuteOnWorkspace","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionsUtil"},{"name":"canNormalize","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/normalization"},{"name":"CanvasGradient","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CanvasPattern","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CanvasRenderingContext2D","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"captureEvents","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"CaretPosition","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"case","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"CaseSensitiveCheckbox","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/findinput/findInputCheckboxes"},{"name":"catch","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"CategoryElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree"},{"name":"CategoryElementRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree"},{"name":"CDATASection","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CELL_MARGIN","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/constants"},{"name":"CELL_RUN_GUTTER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/constants"},{"name":"CELL_TOOLBAR_SEPERATOR","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor"},{"name":"CellEditState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookBrowser"},{"name":"CellEditType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/notebookCommon"},{"name":"CellFocusMode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookBrowser"},{"name":"CellKind","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CellKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/notebookCommon"},{"name":"CellKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHost.protocol"},{"name":"CellKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CellMenus","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/cellMenus"},{"name":"CellOutputKind","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CellOutputKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/notebookCommon"},{"name":"CellOutputKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHost.protocol"},{"name":"CellOutputKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CellRevealPosition","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookBrowser"},{"name":"CellRevealType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookBrowser"},{"name":"CellRunState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookBrowser"},{"name":"CellUri","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/notebookCommon"},{"name":"CenteredViewLayout","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/centered/centeredViewLayout"},{"name":"Certificate","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"CHANGE_BUFFER_DELAY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/watcher"},{"name":"ChangeEncodingAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorStatus"},{"name":"ChangeEOLAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorStatus"},{"name":"ChangeIndentationSizeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentation"},{"name":"ChangeModeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorStatus"},{"name":"ChangeSortAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"Channel","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Channel"},{"name":"ChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc"},{"name":"ChannelMergerNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ChannelServer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc"},{"name":"ChannelSplitterNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CharacterClassifier","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/characterClassifier"},{"name":"CharacterData","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CharacterMapping","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/viewLineRenderer"},{"name":"CharacterMappingConstants","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/viewLineRenderer"},{"name":"CharacterPairSupport","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/characterPair"},{"name":"CharacterSet","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/characterClassifier"},{"name":"CharCode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/charCode"},{"name":"CharWidthRequest","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/config/charWidthReader"},{"name":"CharWidthRequestType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/config/charWidthReader"},{"name":"chdir","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"Checkbox","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/checkbox/checkbox"},{"name":"CheckboxActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/checkbox/checkbox"},{"name":"CheckedStates","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditPreview"},{"name":"CheckForUpdatesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"CheckForVSCodeUpdateAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/update/browser/update"},{"name":"CheckForVSCodeUpdateActionId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/update/common/update"},{"name":"checkProposedApiEnabled","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensions"},{"name":"checkServerIdentity","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tls"},{"name":"checksum","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/crypto"},{"name":"chmod","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"chmod","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"chmodSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"Choice","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetParser"},{"name":"ChoiceAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/notifications"},{"name":"ChokidarWatcherService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/watcher/unix/chokidarWatcherService"},{"name":"ChordKeybinding","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keyCodes"},{"name":"chown","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"chownSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"chrome","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"ChunkStream","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc.net"},{"name":"Cipher","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"clamp","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/numbers"},{"name":"class","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"CLASSIFIER_MODIFIER_SEPARATOR","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry"},{"name":"ClassName","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/intervalTree"},{"name":"clean","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"cleanMnemonic","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/menu/menu"},{"name":"cleanRemoteAuthority","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetryUtils"},{"name":"CleanSearchEditorStateCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"cleanUndefinedQueryValues","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/test/browser/queryBuilder.test"},{"name":"clear","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"CLEAR_ALL_NOTIFICATIONS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"CLEAR_NOTIFICATION","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"clearAllFontInfos","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/config/configuration"},{"name":"ClearAllNotificationsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsActions"},{"name":"ClearCommandHistoryAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess"},{"name":"ClearEditorHistoryAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"ClearExtensionsInputAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"clearHistoryCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"clearImmediate","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"clearImmediate","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"timers"},{"name":"clearInterval","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"clearInterval","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"timers"},{"name":"clearLine","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"readline"},{"name":"clearNode","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"ClearNotificationAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsActions"},{"name":"ClearRecentFilesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"ClearReplAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/repl"},{"name":"clearScreenDown","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"readline"},{"name":"ClearSearchHistoryCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"ClearSearchResultsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"ClearTerminalAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions"},{"name":"clearTextMimes","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/mime"},{"name":"clearTimeout","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"clearTimeout","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"timers"},{"name":"ClickLinkGesture","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/link/clickLinkGesture"},{"name":"ClickLinkKeyboardEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/link/clickLinkGesture"},{"name":"ClickLinkMouseEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/link/clickLinkGesture"},{"name":"ClickLinkOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/link/clickLinkGesture"},{"name":"Client","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc.net"},{"name":"Client","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/electron-browser/ipc.electron-browser"},{"name":"Client","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/node/ipc.cp"},{"name":"CLIENT_RENEG_LIMIT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tls"},{"name":"CLIENT_RENEG_WINDOW","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tls"},{"name":"ClientCoordinates","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorDom"},{"name":"clientInformation","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ClientRect","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ClientRectList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ClientRequest","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"http"},{"name":"ClientRequest","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"clipboard","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"Clipboard","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ClipboardBasedVariableResolver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetVariables"},{"name":"ClipboardEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CLIServer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/node/extHostCLIServer"},{"name":"clock","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"cloneAndChange","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/objects"},{"name":"close","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"close","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"close","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"inspector"},{"name":"CLOSE_EDITOR_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"CLOSE_EDITOR_GROUP_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"CLOSE_EDITORS_AND_GROUP_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"CLOSE_EDITORS_IN_GROUP_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"CLOSE_EDITORS_TO_THE_RIGHT_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"CLOSE_OTHER_EDITORS_IN_GROUP_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"CLOSE_SAVED_EDITORS_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"CloseAllEditorGroupsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"CloseAllEditorsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"CloseCurrentWindowAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"},{"name":"closed","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CloseDirection","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"CloseEditorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"CloseEditorInAllGroupsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"CloseEditorsInOtherGroupsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"CloseEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CloseExtensionDetailsOnViewChangeKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensions"},{"name":"CloseGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"CloseLeftEditorsInGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"CloseOneEditorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"ClosePanelAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/panel/panelActions"},{"name":"CloseReplaceAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"CloseReplaceWidgetActionId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"CloseSidebarAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"closeSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"CloseWorkspaceAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/workspaceActions"},{"name":"cmp","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"coalesce","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"coalesceInPlace","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"CodeAction","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CodeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CodeActionAutoApply","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/types"},{"name":"CodeActionCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionCommands"},{"name":"CodeActionCommandArgs","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/types"},{"name":"codeActionCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeAction"},{"name":"CodeActionDocumentationContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeActions/common/documentationContribution"},{"name":"CodeActionExtensionPointFields","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeActions/common/codeActionsExtensionPoint"},{"name":"CodeActionKeybindingResolver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionMenu"},{"name":"CodeActionKind","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CodeActionKind","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/types"},{"name":"CodeActionKind","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CodeActionMenu","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionMenu"},{"name":"CodeActionModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionModel"},{"name":"CodeActionProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"CodeActionsContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeActions/common/codeActionsContribution"},{"name":"codeActionsExtensionPointDescriptor","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeActions/common/codeActionsExtensionPoint"},{"name":"CodeActionsState","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionModel"},{"name":"CodeActionTrigger","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CodeActionTriggerType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"CodeActionUi","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionUi"},{"name":"CodeApplication","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-main/app"},{"name":"CodeCell","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/codeCell"},{"name":"CodeCellRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer"},{"name":"CodeCellViewModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/codeCellViewModel"},{"name":"CodeDataTransfers","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/dnd"},{"name":"CodeEditorService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/browser/codeEditorService"},{"name":"CodeEditorServiceImpl","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/services/codeEditorServiceImpl"},{"name":"CodeEditorStateFlag","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/core/editorState"},{"name":"CodeEditorWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/widget/codeEditorWidget"},{"name":"CodeInset","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CodeLens","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CodeLens","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CodeLensCache","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codelens/codeLensCache"},{"name":"CodeLensContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codelens/codelensController"},{"name":"CodeLensHelper","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codelens/codelensWidget"},{"name":"CodeLensModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codelens/codelens"},{"name":"CodeLensProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"CodeLensWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codelens/codelensWidget"},{"name":"CodeWindow","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-main/window"},{"name":"CodiconActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer"},{"name":"CodiconLabel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/codiconLabel/codiconLabel"},{"name":"codiconStartMarker","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/codicon"},{"name":"coerce","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"COLLAPSE_NOTIFICATION","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"CollapseAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/viewlet"},{"name":"CollapseAllAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/treeDefaults"},{"name":"CollapseDeepestExpandedLevelAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"CollapseExplorerView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"CollapseNotificationAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsActions"},{"name":"collectLaunchConfigs","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/diagnostics/node/diagnosticsService"},{"name":"collectWorkspaceStats","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/diagnostics/node/diagnosticsService"},{"name":"Color","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"Color","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/color"},{"name":"Color","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"Color","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"ColorDetector","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/colorPicker/colorDetector"},{"name":"ColorExtensionPoint","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/colorExtensionPoint"},{"name":"ColorFormat","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"ColorId","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"ColorInformation","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"ColorInformation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"colorize","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"colorizeElement","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"colorizeModelLine","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"Colorizer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/colorizer"},{"name":"ColorMap","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/tokenization"},{"name":"ColorPickerBody","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/colorPicker/colorPickerWidget"},{"name":"ColorPickerHeader","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/colorPicker/colorPickerWidget"},{"name":"ColorPickerModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/colorPicker/colorPickerModel"},{"name":"ColorPickerWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/colorPicker/colorPickerWidget"},{"name":"ColorPresentation","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"ColorPresentation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"ColorPresentation","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"ColorProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"ColorTheme","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"ColorThemeData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/colorThemeData"},{"name":"ColorThemeKind","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"ColorThemeKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"colorThemeSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/colorThemeSchema"},{"name":"ColorZone","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/overviewZoneManager"},{"name":"ColumnSelection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorColumnSelection"},{"name":"combinedAppender","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetryUtils"},{"name":"combinedDisposable","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/lifecycle"},{"name":"CombinedInstallAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"CombinedSpliceable","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/splice"},{"name":"Command","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorExtensions"},{"name":"CommandLine","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"CommandOptions","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"commands","kind":"module","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"commands","kind":"alias","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/workbench.web.api"},{"name":"CommandsConverter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostCommands"},{"name":"CommandService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/commands/common/commandService"},{"name":"commandsExtensionPoint","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/menusExtensionPoint"},{"name":"CommandsHistory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/quickinput/browser/commandsQuickAccess"},{"name":"CommandsQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess"},{"name":"CommandsRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/commands/common/commands"},{"name":"CommandString","kind":"type","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"CommandString","kind":"type","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskConfiguration"},{"name":"CommandTrackerAddon","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/addons/commandTrackerAddon"},{"name":"Comment","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CommentBasedVariableResolver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetVariables"},{"name":"CommentContextKeys","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/common/commentContextKeys"},{"name":"CommentController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentsEditorContribution"},{"name":"COMMENTEDITOR_DECORATION_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentThreadWidget"},{"name":"CommentFormActions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentFormActions"},{"name":"CommentGlyphWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentGlyphWidget"},{"name":"CommentMenus","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentMenus"},{"name":"CommentMode","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CommentMode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"CommentMode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CommentMode","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/commentMode"},{"name":"CommentNode","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/common/commentModel"},{"name":"CommentNode","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentNode"},{"name":"CommentNodeRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentsTreeViewer"},{"name":"comments","kind":"module","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"COMMENTS_VIEW_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentsTreeViewer"},{"name":"COMMENTS_VIEW_TITLE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentsTreeViewer"},{"name":"CommentsAsyncDataSource","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentsTreeViewer"},{"name":"CommentService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentService"},{"name":"CommentsList","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentsTreeViewer"},{"name":"CommentsModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/common/commentModel"},{"name":"CommentsModelVirualDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentsTreeViewer"},{"name":"CommentsPanel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentsView"},{"name":"CommentThreadCollapsibleState","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CommentThreadCollapsibleState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"CommentThreadCollapsibleState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CommitCharacterController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestCommitCharacters"},{"name":"CommonEditorConfiguration","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/commonEditorConfig"},{"name":"CommonFindController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"commonlyUsedData","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsLayout"},{"name":"commonPrefixLength","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"commonPrefixLength","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"commonSuffixLength","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"CommonTask","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"Comparator","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"compare","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"compare","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"compare","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"COMPARE_RESOURCE_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"COMPARE_SELECTED_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"COMPARE_WITH_SAVED_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"compareAnything","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/comparers"},{"name":"compareBuild","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"compareByPrefix","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/comparers"},{"name":"compareFileExtensions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/comparers"},{"name":"compareFileNames","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/comparers"},{"name":"compareIdentifiers","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"compareIgnoreCase","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"compareItemsByFuzzyScore","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/fuzzyScorer"},{"name":"compareMarkersByUri","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersModel"},{"name":"comparePaths","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/comparers"},{"name":"compareSubstring","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"compareSubstringIgnoreCase","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"CompareWithClipboardAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"CompatChangeAll","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/multicursor/multicursor"},{"name":"compile","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchCompile"},{"name":"compileFunction","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"vm"},{"name":"CompletionContext","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"CompletionItem","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CompletionItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggest"},{"name":"CompletionItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CompletionItem","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"CompletionItemInsertTextRule","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"CompletionItemInsertTextRule","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"CompletionItemKind","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CompletionItemKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"CompletionItemKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CompletionItemKind","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"CompletionItemKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"CompletionItemTag","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CompletionItemTag","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"CompletionItemTag","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CompletionItemTag","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"CompletionItemTag","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"completionKindFromString","kind":"let","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"completionKindToCssClass","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"CompletionList","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CompletionList","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CompletionModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/completionModel"},{"name":"CompletionOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggest"},{"name":"CompletionProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"CompletionTriggerKind","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CompletionTriggerKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"CompletionTriggerKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CompletionTriggerKind","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"CompletionTriggerKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"Component","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/component"},{"name":"ComposedTreeDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/abstractTree"},{"name":"Composite","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/composite"},{"name":"CompositeActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/compositeBarActions"},{"name":"CompositeBar","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/compositeBar"},{"name":"CompositeDescriptor","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/composite"},{"name":"CompositeDragAndDrop","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/compositeBar"},{"name":"CompositeDragAndDropData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/dnd"},{"name":"CompositeDragAndDropObserver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/dnd"},{"name":"CompositeOverflowActivityAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/compositeBarActions"},{"name":"CompositeOverflowActivityActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/compositeBarActions"},{"name":"CompositePart","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/compositePart"},{"name":"CompositeProgressIndicator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/progress/browser/progressIndicator"},{"name":"CompositeRegistry","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/composite"},{"name":"CompositeScope","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/progress/browser/progressIndicator"},{"name":"CompositeSnippetVariableResolver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetVariables"},{"name":"CompositionEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"compress","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/compressedObjectTreeModel"},{"name":"compressConsecutiveTextChanges","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textChange"},{"name":"CompressedNavigationController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer"},{"name":"CompressedObjectTreeModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/compressedObjectTreeModel"},{"name":"CompressibleAsyncDataTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/asyncDataTree"},{"name":"CompressibleObjectTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/objectTree"},{"name":"CompressibleObjectTreeModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/compressedObjectTreeModel"},{"name":"computeCodePoint","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"ComputedEditorOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/commonEditorConfig"},{"name":"computeLinks","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/linkComputer"},{"name":"computeRanges","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/indentRangeProvider"},{"name":"computeScreenAwareSize","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"computeStyles","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"config","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"config","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"Config","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher"},{"name":"Config","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Config"},{"name":"Configuration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/config/configuration"},{"name":"Configuration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationModels"},{"name":"Configuration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configurationModels"},{"name":"Configuration","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/applicationinsights"},{"name":"CONFIGURATION_SYNC_STORE_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"ConfigurationCache","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/browser/configurationCache"},{"name":"ConfigurationCache","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/node/configurationCache"},{"name":"ConfigurationChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"ConfigurationChangeEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationModels"},{"name":"ConfigurationEditingError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configurationEditingService"},{"name":"ConfigurationEditingErrorCode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configurationEditingService"},{"name":"ConfigurationEditingService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configurationEditingService"},{"name":"ConfigurationKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensions"},{"name":"ConfigurationManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugConfigurationManager"},{"name":"ConfigurationModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationModels"},{"name":"ConfigurationModelParser","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationModels"},{"name":"ConfigurationResolverService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configurationResolver/browser/configurationResolverService"},{"name":"ConfigurationResolverService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configurationResolver/electron-browser/configurationResolverService"},{"name":"ConfigurationScope","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationRegistry"},{"name":"ConfigurationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationService"},{"name":"ConfigurationTarget","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"ConfigurationTarget","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"ConfigurationTarget","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"ConfigurationTargetToString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"configurationTelemetry","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetryUtils"},{"name":"ConfigureAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"ConfigureLanguageBasedSettingsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesActions"},{"name":"ConfigureLocaleAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/localizations/browser/localizationsActions"},{"name":"ConfigureNotificationAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsActions"},{"name":"configureOpenerTrustedDomainsHandler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/url/common/trustedDomains"},{"name":"ConfigureRecommendedExtensionsCommandsContributor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ConfigureRuntimeArgumentsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/developerActions"},{"name":"ConfigureTaskAction","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/browser/abstractTaskService"},{"name":"ConfigureWorkspaceFolderRecommendedExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ConfigureWorkspaceRecommendedExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ConfiguringTask","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"confirm","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"ConfirmResult","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/dialogs/common/dialogs"},{"name":"CONFLICT_RESOLUTION_CONTEXT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler"},{"name":"CONFLICT_RESOLUTION_SCHEME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler"},{"name":"ConflictDetector","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/bulkEdit/browser/conflicts"},{"name":"connect","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"http2"},{"name":"connect","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"net"},{"name":"connect","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tls"},{"name":"connect","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/node/ipc.net"},{"name":"connect","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/driver/node/driver"},{"name":"connected","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"ConnectionGainEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAgentConnection"},{"name":"ConnectionLostEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAgentConnection"},{"name":"ConnectionType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAgentConnection"},{"name":"connectPrimaryMenuToInlineActionBar","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/util"},{"name":"connectProxyResolver","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/node/proxyResolver"},{"name":"connectRemoteAgentExtensionHost","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAgentConnection"},{"name":"connectRemoteAgentManagement","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAgentConnection"},{"name":"connectRemoteAgentTunnel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAgentConnection"},{"name":"CONNREFUSED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"console","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Console","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"ConsoleLogInAutomationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/browser/log"},{"name":"ConsoleLogInMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/log"},{"name":"ConsoleLogMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/log"},{"name":"ConsoleLogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/log"},{"name":"consolidate","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/rangeMap"},{"name":"const","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"constants","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"buffer"},{"name":"constants","kind":"module","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"constants","kind":"module","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"constants","kind":"module","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"http2"},{"name":"constants","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"constants","kind":"module","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"perf_hooks"},{"name":"constants","kind":"module","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"constants","kind":"property","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/constants"},{"name":"Constants","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/uint"},{"name":"Constants","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/jschardet/index"},{"name":"Constants","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/minimap/minimapCharSheet"},{"name":"ConstantSourceNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"consumeReadable","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/stream"},{"name":"consumeReadableWithLimit","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/stream"},{"name":"consumeStream","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/stream"},{"name":"consumeStreamWithLimit","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/stream"},{"name":"contains","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"containsDragType","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/dnd"},{"name":"containsEmoji","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"containsFullWidthCharacter","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"containsRTL","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"containsUppercaseCharacter","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"ContentHoverWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/hover/hoverWidgets"},{"name":"contentTracing","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"ContentViewOverlays","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/view/viewOverlays"},{"name":"ContentWidgetPositionPreference","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorBrowser"},{"name":"ContentWidgetPositionPreference","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"context","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Context","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/parameterHints/provideSignatureHelp"},{"name":"Context","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggest"},{"name":"Context","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/browser/contextKeyService"},{"name":"Context","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Context"},{"name":"CONTEXT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/toolbar/toolbar"},{"name":"CONTEXT_ACCESSIBILITY_MODE_ENABLED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/accessibility/common/accessibility"},{"name":"CONTEXT_ACTIVE_LOG_OUTPUT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/output"},{"name":"CONTEXT_AUTH_TOKEN_STATE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncAuthentication"},{"name":"CONTEXT_BREAKPOINT_SELECTED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_BREAKPOINT_WIDGET_VISIBLE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_BREAKPOINTS_EXIST","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_BREAKPOINTS_FOCUSED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_CALLSTACK_ITEM_TYPE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_CUSTOM_EDITORS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/common/customEditor"},{"name":"CONTEXT_DEBUG_CONFIGURATION_TYPE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_DEBUG_STATE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_DEBUG_TYPE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_DEBUG_UX","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_DEBUG_UX_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_EXPRESSION_SELECTED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_EXTENSION_HOST_PROFILE_RECORDED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor"},{"name":"CONTEXT_FIND_INPUT_FOCUSED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findModel"},{"name":"CONTEXT_FIND_WIDGET_NOT_VISIBLE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findModel"},{"name":"CONTEXT_FIND_WIDGET_VISIBLE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findModel"},{"name":"CONTEXT_FOCUSED_CUSTOM_EDITOR_IS_EDITABLE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/common/customEditor"},{"name":"CONTEXT_FOCUSED_SESSION_IS_ATTACH","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_IN_BREAKPOINT_WIDGET","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_IN_DEBUG_MODE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_IN_DEBUG_REPL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_IN_OUTPUT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/output"},{"name":"CONTEXT_JUMP_TO_CURSOR_SUPPORTED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_KEYBINDING_FOCUS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"CONTEXT_KEYBINDINGS_EDITOR","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"CONTEXT_KEYBINDINGS_SEARCH_FOCUS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"CONTEXT_LOADED_SCRIPTS_ITEM_TYPE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_LOADED_SCRIPTS_SUPPORTED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_MENU_CHANNEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/contextmenu/common/contextmenu"},{"name":"CONTEXT_MENU_CLOSE_CHANNEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/contextmenu/common/contextmenu"},{"name":"CONTEXT_ONTYPE_RENAME_INPUT_VISIBLE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/rename/onTypeRename"},{"name":"CONTEXT_OUTPUT_SCROLL_LOCK","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/output"},{"name":"CONTEXT_PROFILE_SESSION_STATE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor"},{"name":"CONTEXT_RENAME_INPUT_VISIBLE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/rename/renameInputField"},{"name":"CONTEXT_REPLACE_INPUT_FOCUSED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findModel"},{"name":"CONTEXT_RESTART_FRAME_SUPPORTED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_SETTINGS_EDITOR","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"CONTEXT_SETTINGS_JSON_EDITOR","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"CONTEXT_SETTINGS_SEARCH_FOCUS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"CONTEXT_STEP_BACK_SUPPORTED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_SYNC_ENABLEMENT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"CONTEXT_SYNC_STATE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"CONTEXT_TOC_ROW_FOCUS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"CONTEXT_UPDATE_STATE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/update/browser/update"},{"name":"CONTEXT_VARIABLES_FOCUSED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"CONTEXT_WATCH_EXPRESSIONS_FOCUSED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"ContextAwareMenuEntryActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/browser/menuEntryActionViewItem"},{"name":"contextBridge","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"ContextKeyAndExpr","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"ContextKeyDefinedExpr","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"ContextKeyEqualsExpr","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"ContextKeyExpr","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"ContextKeyExprType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"ContextKeyFalseExpr","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"ContextKeyNotEqualsExpr","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"ContextKeyNotExpr","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"ContextKeyNotRegexExpr","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"ContextKeyOrExpr","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"ContextKeyRegexExpr","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"ContextKeyService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/browser/contextKeyService"},{"name":"ContextKeyTrueExpr","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"ContextMenuController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/contextmenu/contextmenu"},{"name":"ContextMenuHandler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextview/browser/contextMenuHandler"},{"name":"ContextMenuService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextview/browser/contextMenuService"},{"name":"ContextMenuService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/contextmenu/electron-browser/contextmenuService"},{"name":"ContextScopedFindInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/browser/contextScopedHistoryWidget"},{"name":"ContextScopedHistoryInputBox","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/browser/contextScopedHistoryWidget"},{"name":"ContextScopedReplaceInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/browser/contextScopedHistoryWidget"},{"name":"ContextSubMenu","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/contextmenu"},{"name":"ContextTagKeys","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/ContextTagKeys"},{"name":"ContextTagKeys","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"ContextView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/contextview/contextview"},{"name":"ContextViewService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextview/browser/contextViewService"},{"name":"continue","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"CONTINUE_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"CONTINUE_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"Contracts","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/applicationinsights"},{"name":"contrastBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"ContributableViewsModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/views/views"},{"name":"ContributedCustomEditors","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/common/contributedCustomEditors"},{"name":"ContributedTask","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"convertBufferRangeToViewport","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalLinkHelpers"},{"name":"convertLinkRangeToBuffer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalLinkHelpers"},{"name":"convertSettings","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/themeCompatibility"},{"name":"convertSimple2RegExpPattern","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"convertToDAPaths","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugUtils"},{"name":"convertToVSCPaths","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugUtils"},{"name":"ConvolverNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Cookies","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"CoordinatesConverter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/splitLinesCollection"},{"name":"copy","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"COPY_FILE_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"COPY_PATH_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"COPY_RELATIVE_PATH_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"COPY_STACK_TRACE_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"copyAllCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"CopyAllCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"copyFile","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"COPYFILE_EXCL","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"COPYFILE_FICLONE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"COPYFILE_FICLONE_FORCE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"copyFileHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"copyFileSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"CopyLinesCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/copyLinesCommand"},{"name":"copyMatchCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"CopyMatchCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"CopyNotificationMessageAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsActions"},{"name":"CopyOptions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/textAreaInput"},{"name":"copyPathCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"CopyPathCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"CopyTerminalSelectionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions"},{"name":"CopyValueAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"CopyWebviewEditorCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewCommands"},{"name":"CoreEditingCommands","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/coreCommands"},{"name":"CoreEditorCommand","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/coreCommands"},{"name":"CoreNavigationCommands","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/coreCommands"},{"name":"CorrelationContextManager","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/AutoCollection/CorrelationContextManager"},{"name":"count","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"CountBadge","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/countBadge/countBadge"},{"name":"countEOL","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/tokensStore"},{"name":"Counter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/numbers"},{"name":"CountQueuingStrategy","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"countReset","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"cpus","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"cpuUsage","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"crash","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"crashReporter","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"crashReporterIdStorageKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetry"},{"name":"create","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"domain"},{"name":"create","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/worker/simpleWorker"},{"name":"create","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/editorSimpleWorker"},{"name":"create","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/outputLinkComputer"},{"name":"create","kind":"alias","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/workbench.web.api"},{"name":"create","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"create","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textMate/electron-browser/textMateWorker"},{"name":"createActionViewItem","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/browser/menuEntryActionViewItem"},{"name":"createAndBindHistoryNavigationWidgetScopedContextKeyService","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/browser/contextScopedHistoryWidget"},{"name":"createAndFillInActionBarActions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/browser/menuEntryActionViewItem"},{"name":"createAndFillInContextMenuActions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/browser/menuEntryActionViewItem"},{"name":"createApiFactoryAndRegisterActors","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHost.api.impl"},{"name":"createBreadcrumbsPicker","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbsPicker"},{"name":"createBreakpointDecorations","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/breakpointEditorContribution"},{"name":"createBrotliCompress","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"createBrotliDecompress","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"createCancelablePromise","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"createCellViewModel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel"},{"name":"createChannelReceiver","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/node/ipc"},{"name":"createChannelSender","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/node/ipc"},{"name":"createCipher","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"createCipheriv","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"createConnection","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"net"},{"name":"createContext","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"vm"},{"name":"createCSSRule","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"createCustomTask","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskConfiguration"},{"name":"createDecipher","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"createDecipheriv","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"createDecorationsForStackFrame","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/callStackEditorContribution"},{"name":"createDecorator","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/decorators"},{"name":"createDecorator","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/instantiation/common/instantiation"},{"name":"createDeflate","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"createDeflateRaw","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"createDiffEditor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"createDiffieHellman","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"createDiffNavigator","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"createECDH","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"createEditorFromSearchResult","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions"},{"name":"createEditorPagePosition","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorDom"},{"name":"createElement","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/formattedTextRenderer"},{"name":"createError","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchCommon"},{"name":"createErrorWithActions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errorsWithActions"},{"name":"createExtHostContextProxyIdentifier","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/proxyIdentifier"},{"name":"createFakeScopedLineTokens","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/modesTestUtils"},{"name":"createFastDomNode","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/fastDomNode"},{"name":"createFileEditorInput","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"createFileIconThemableTreeContainerScope","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/views/views"},{"name":"createFileSystemProviderError","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"createFindMatch","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelSearch"},{"name":"createGunzip","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"createGzip","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"createHash","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"createHmac","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"createHook","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"async_hooks"},{"name":"createImageBitmap","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"createInflate","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"createInflateRaw","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"createInterface","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"readline"},{"name":"createKeybinding","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keyCodes"},{"name":"createLineMatcher","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher"},{"name":"createLineStarts","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase"},{"name":"createLineStartsFast","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase"},{"name":"createMainContextProxyIdentifier","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/proxyIdentifier"},{"name":"createMatchers","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/textMateScopeMatcher"},{"name":"createMatches","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"createMemoizer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/decorators"},{"name":"createMessageOfType","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionHostProtocol"},{"name":"createMetaElement","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"createMockBuffer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/model/linesTextBuffer/textBufferAutoTestUtils"},{"name":"createMockSession","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/test/browser/callStack.test"},{"name":"createMockText","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/model/linesTextBuffer/textBufferAutoTestUtils"},{"name":"createModel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"createMonacoBaseAPI","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneBase"},{"name":"createMonacoEditorAPI","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"createMonacoLanguagesAPI","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"createMouseMoveEventMerger","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/mouseHandler"},{"name":"CreateNewLocalTerminalAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/electron-browser/terminalRemote"},{"name":"CreateNewTerminalAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions"},{"name":"createPrivateKey","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"createProxyObject","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"createPublicKey","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"createQueuedSender","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/processes"},{"name":"createReadStream","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"createReadStream","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/io"},{"name":"createRegExp","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"createRequire","kind":"method","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"module"},{"name":"createRequireFromPath","kind":"method","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"module"},{"name":"createResourceExcludeMatcher","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"createRotatingLogger","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/spdlog/index"},{"name":"createRotatingLogger","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/node/spdlogService"},{"name":"createRotatingLoggerAsync","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/spdlog/index"},{"name":"createScanner","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"createScopedLineTokens","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports"},{"name":"createSecretKey","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"createSecureContext","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tls"},{"name":"createSecurePair","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tls"},{"name":"createSecureServer","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"http2"},{"name":"createSerializedGrid","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/grid/grid"},{"name":"createServer","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"http"},{"name":"createServer","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"http2"},{"name":"createServer","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"https"},{"name":"createServer","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"net"},{"name":"createServer","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tls"},{"name":"createSign","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"createSimpleKeybinding","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keyCodes"},{"name":"createSingleEditOp","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/browser/commands/shiftCommand.test"},{"name":"createSingleEditOp","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/browser/commands/trimTrailingWhitespaceCommand.test"},{"name":"createSlowExtensionAction","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensionsSlowActions"},{"name":"createSocket","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dgram"},{"name":"createStringBuilder","kind":"let","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/stringBuilder"},{"name":"createStubInstance","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"createStyleSheet","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"createSuggestItem","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/test/completionModel.test"},{"name":"createSyncDescriptor","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/instantiation/common/descriptors"},{"name":"createTerminalEnvironment","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalEnvironment"},{"name":"createTestCodeEditor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/browser/testCodeEditor"},{"name":"createTextBuffer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModel"},{"name":"createTextBufferFactory","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModel"},{"name":"createTextBufferFactoryFromSnapshot","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModel"},{"name":"createTextBufferFactoryFromStream","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModel"},{"name":"createTextModel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/editorTestUtils"},{"name":"createTextSearchResult","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepSearchUtils"},{"name":"createTOCIterator","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/tocTree"},{"name":"createTokenizationSupport","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchLexer"},{"name":"createTracing","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"trace_events"},{"name":"createUintArray","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase"},{"name":"createUnzip","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"createUpdateURL","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/update/electron-main/abstractUpdateService"},{"name":"createValidator","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesValidation"},{"name":"createVerify","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"createWaitMarkerFile","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/waitMarkerFile"},{"name":"createWebWorker","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/webWorker"},{"name":"createWebWorker","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"createWriteStream","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"Credential","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CredentialsContainer","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Critical","kind":"enum member","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/SeverityLevel"},{"name":"crypto","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Crypto","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CryptoKey","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CryptoKeyPair","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CSS","kind":"module","kindModifiers":"declare","sortText":"4"},{"name":"CSSConditionRule","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"cssEscape","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/getIconClasses"},{"name":"CSSFontFaceRule","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CSSGroupingRule","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CSSImportRule","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CSSKeyframeRule","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CSSKeyframesRule","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CSSMediaRule","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CSSNamespaceRule","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CSSPageRule","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CSSRule","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CSSRuleList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CSSStyleDeclaration","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CSSStyleRule","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CSSStyleSheet","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CSSSupportsRule","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ctxCommentEditorFocused","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/simpleCommentEditor"},{"name":"ctxHasSymbols","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/symbolNavigation"},{"name":"ctxReferenceSearchVisible","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesController"},{"name":"CurrentLineHighlightOverlay","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight"},{"name":"CurrentLineMarginHighlightOverlay","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight"},{"name":"currentSchemaVersion","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/experiments/common/experimentService"},{"name":"currentSessionDateStorageKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetry"},{"name":"Cursor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursor"},{"name":"CursorAtBoundary","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookBrowser"},{"name":"CursorChangeReason","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorEvents"},{"name":"CursorChangeReason","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"CursorCollection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorCollection"},{"name":"CursorColumns","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorCommon"},{"name":"CursorConfiguration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorCommon"},{"name":"CursorContext","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorCommon"},{"name":"CursorModelState","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursor"},{"name":"CursorMove","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorMoveCommands"},{"name":"CursorMoveCommands","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorMoveCommands"},{"name":"CursorPosition","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorMoveOperations"},{"name":"CursorRedo","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/cursorUndo/cursorUndo"},{"name":"CursorState","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorCommon"},{"name":"CursorStateChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursor"},{"name":"cursorStyleToString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"cursorTo","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"readline"},{"name":"CursorUndo","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/cursorUndo/cursorUndo"},{"name":"CursorUndoRedoController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/cursorUndo/cursorUndo"},{"name":"CursorWordAccessibilityLeft","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordAccessibilityLeftSelect","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordAccessibilityRight","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordAccessibilityRightSelect","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordEndLeft","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordEndLeftSelect","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordEndRight","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordEndRightSelect","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordLeft","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordLeftSelect","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordPartLeft","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordPartOperations/wordPartOperations"},{"name":"CursorWordPartLeftSelect","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordPartOperations/wordPartOperations"},{"name":"CursorWordPartRight","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordPartOperations/wordPartOperations"},{"name":"CursorWordPartRightSelect","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordPartOperations/wordPartOperations"},{"name":"CursorWordRight","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordRightSelect","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordStartLeft","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordStartLeftSelect","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordStartRight","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CursorWordStartRightSelect","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"CustomEditorContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/browser/customEditors"},{"name":"CustomEditorInfo","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/common/customEditor"},{"name":"CustomEditorInfoCollection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/common/customEditor"},{"name":"CustomEditorInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/browser/customEditorInput"},{"name":"CustomEditorInputFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/browser/customEditorInputFactory"},{"name":"CustomEditorModelManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/common/customEditorModelManager"},{"name":"CustomEditorPriority","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/common/customEditor"},{"name":"customEditorsAssociationsSettingId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/browser/editorAssociationsSetting"},{"name":"CustomEditorService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/browser/customEditors"},{"name":"customEditorsExtensionPoint","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/common/extensionPoint"},{"name":"CustomElementRegistry","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"customElements","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CustomEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"CustomExecution","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CustomExecution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"CustomExecution2","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"CustomExecutionDTO","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTask"},{"name":"CUSTOMIZED_TASK_TYPE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"CustomMenubarControl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/titlebar/menubarControl"},{"name":"CustomTask","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"CustomTextEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/common/customTextEditorModel"},{"name":"CustomTreeView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/views/treeView"},{"name":"cutFileHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"CutWebviewEditorCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewCommands"},{"name":"cwd","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/process"},{"name":"cwd","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"DARK","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/themeService"},{"name":"darken","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"DarwinUpdateService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/update/electron-main/updateService.darwin"},{"name":"data","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/test/common/filters.perf.data"},{"name":"Data","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/Data"},{"name":"Data","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"Database","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-sqlite3/index"},{"name":"DataBreakpoint","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"DataBreakpoint","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"DataCue","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DataPoint","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/DataPoint"},{"name":"DataPoint","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"DataPointType","kind":"enum","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/DataPointType"},{"name":"DataPointType","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"DataSource","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesTree"},{"name":"DataSource","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree"},{"name":"DataTransfer","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DataTransferItem","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DataTransferItemList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DataTransfers","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dnd"},{"name":"DataTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/dataTree"},{"name":"DataUri","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"DataView","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Date","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"debounce","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/decorators"},{"name":"debug","kind":"module","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"debug","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"Debug","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/diff/diff"},{"name":"DEBUG_HELPER_SERVICE_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"DEBUG_PANEL_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"DEBUG_SCHEME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"DEBUG_SERVICE_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"DebugAdapterExecutable","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"DebugAdapterExecutable","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"DebugAdapterInlineImplementation","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"DebugAdapterInlineImplementation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"DebugAdapterServer","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"DebugAdapterServer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"DebugConsoleMode","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"DebugConsoleMode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"DebugContentProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugContentProvider"},{"name":"debugExceptionWidgetBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/exceptionWidget"},{"name":"debugExceptionWidgetBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/exceptionWidget"},{"name":"DebugExtensionHostAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor"},{"name":"debugger","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"Debugger","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"Debugger","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugger"},{"name":"debuggersExtPoint","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugSchemas"},{"name":"DebugHoverWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugHover"},{"name":"debugIconContinueForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar"},{"name":"debugIconDisconnectForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar"},{"name":"debugIconPauseForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar"},{"name":"debugIconRestartForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar"},{"name":"debugIconStartForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar"},{"name":"debugIconStepBackForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar"},{"name":"debugIconStepIntoForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar"},{"name":"debugIconStepOutForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar"},{"name":"debugIconStepOverForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar"},{"name":"debugIconStopForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar"},{"name":"debuglog","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"DebugModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"debugPort","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"DebugProgressContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugProgress"},{"name":"DebugService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugService"},{"name":"DebugSession","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugSession"},{"name":"DebugStatusContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugStatus"},{"name":"DebugTaskRunner","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugTaskRunner"},{"name":"DebugToolBar","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar"},{"name":"debugToolBarBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar"},{"name":"debugToolBarBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar"},{"name":"DebugViewPaneContainer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugViewlet"},{"name":"Decipher","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"DeclarationProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"declare","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"decode","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"punycode"},{"name":"decode","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"querystring"},{"name":"decode","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/iconv-lite/lib/index"},{"name":"decodeSemanticTokensDto","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/shared/semanticTokensDto"},{"name":"decodeStream","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/iconv-lite/lib/index"},{"name":"decodeURI","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"decodeURIComponent","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"decodeUTF16LE","kind":"let","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/stringBuilder"},{"name":"decodeUTF8","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"decompress","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/compressedObjectTreeModel"},{"name":"Decoration","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"Decoration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"DecorationRangeBehavior","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"DecorationRangeBehavior","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"DecorationRangeBehavior","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"DecorationRenderOptions","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"DecorationSegment","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/lineDecorations"},{"name":"DecorationsOverlay","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/decorations/decorations"},{"name":"DecorationsOverviewRuler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/overviewRuler/decorationsOverviewRuler"},{"name":"DecorationsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/decorations/browser/decorationsService"},{"name":"DecorationToRender","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/glyphMargin/glyphMargin"},{"name":"DecreaseSearchEditorContextLinesCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"DecreaseViewSizeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"DedupOverlay","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/glyphMargin/glyphMargin"},{"name":"deepClone","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/objects"},{"name":"deepEqual","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"deepFreeze","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/objects"},{"name":"deepStrictEqual","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"default","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"DEFAULT_COMMANDS_TO_SKIP_SHELL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"DEFAULT_CUSTOM_EDITOR","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/browser/editorAssociationsSetting"},{"name":"DEFAULT_ECDH_CURVE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tls"},{"name":"DEFAULT_EDITOR_MAX_DIMENSIONS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editor"},{"name":"DEFAULT_EDITOR_MIN_DIMENSIONS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editor"},{"name":"DEFAULT_EDITOR_PART_OPTIONS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editor"},{"name":"DEFAULT_ENCODING","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"DEFAULT_LABELS_CONTAINER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/labels"},{"name":"DEFAULT_LETTER_SPACING","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"DEFAULT_LINE_HEIGHT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"DEFAULT_LOG_LEVEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/log"},{"name":"DEFAULT_PRODUCT_ICON_THEME_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/browser/productIconThemeData"},{"name":"DEFAULT_PRODUCT_ICON_THEME_SETTING_VALUE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/themeConfiguration"},{"name":"DEFAULT_SETTINGS_EDITOR_SETTING","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferences"},{"name":"DEFAULT_SETTINGS_EDITOR_SETTING","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"DEFAULT_TERMINAL_OSX","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/externalTerminal/node/externalTerminalService"},{"name":"DEFAULT_VALUE","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"DEFAULT_WORD_REGEXP","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/wordHelper"},{"name":"defaultApp","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"defaultBreadcrumbsStyles","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"defaultCipherList","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"defaultClient","kind":"let","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/applicationinsights"},{"name":"DefaultConfigurationExportHelper","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper"},{"name":"DefaultConfigurationModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationModels"},{"name":"defaultCoreCipherList","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"defaultCustomEditor","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/common/contributedCustomEditors"},{"name":"DefaultDeserializer","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"v8"},{"name":"defaultDialogStyles","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"DefaultElementMapper","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/compressedObjectTreeModel"},{"name":"DefaultEndOfLine","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model"},{"name":"DefaultEndOfLine","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"defaultGenerator","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/idGenerator"},{"name":"defaultInsertColor","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"defaultKeybindingsContents","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesModels"},{"name":"DefaultKeybindingsEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesModels"},{"name":"DefaultKeyboardNavigationDelegate","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/listWidget"},{"name":"defaultListStyles","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"defaultMaxListeners","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"stream"},{"name":"defaultMenuStyles","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/styler"},{"name":"DefaultPaneDndController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/splitview/paneview"},{"name":"DefaultPreferencesEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesEditor"},{"name":"DefaultPreferencesEditorInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesEditorInput"},{"name":"defaultQuickAccessContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/quickaccess"},{"name":"defaultQuickAccessContextKeyValue","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/quickaccess"},{"name":"DefaultQuickAccessFilterValue","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/quickinput/common/quickAccess"},{"name":"DefaultRawSettingsEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesModels"},{"name":"DefaultRecommendedExtensionsView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews"},{"name":"defaultRemoveColor","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"DefaultRoleName","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Context"},{"name":"defaultSearchConfig","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorSerialization"},{"name":"DefaultSerializer","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"v8"},{"name":"DefaultSettings","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesModels"},{"name":"DefaultSettingsEditorContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesEditor"},{"name":"DefaultSettingsEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesModels"},{"name":"DefaultSettingsHeaderWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesWidgets"},{"name":"DefaultSettingsRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesRenderers"},{"name":"defaultSettingsSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"defaultStatus","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DefaultStyleController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/listWidget"},{"name":"defaultStyles","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/selectBox/selectBox"},{"name":"DefaultURITransformer","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/uriIpc"},{"name":"defaultWebSocketFactory","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/browser/browserSocketFactory"},{"name":"defaultWindowState","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-main/window"},{"name":"DefaultWorkerFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/worker/defaultWorkerFactory"},{"name":"DeferredPermissionRequest","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DeferredPromise","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/test/common/utils"},{"name":"define","kind":"const","kindModifiers":"declare","sortText":"4"},{"name":"DefineKeybindingController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/keybindingsEditorContribution"},{"name":"DefineKeybindingOverlayWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/keybindingWidgets"},{"name":"DefineKeybindingWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/keybindingWidgets"},{"name":"defineTheme","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"DefinitionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/goToCommands"},{"name":"DefinitionLink","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"DefinitionProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"deflate","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"deflateRaw","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"deflateRawSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"deflateSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"DelayedDragHandler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dnd"},{"name":"DelayedPagedModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/paging"},{"name":"Delayer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"DelayNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Delegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesTree"},{"name":"Delegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsList"},{"name":"DelegatedLogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/log"},{"name":"DelegatingEditorService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/browser/editorService"},{"name":"delete","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"DeleteAllLeftAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"DeleteAllRightAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"DeleteCellEdit","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/cellEdit"},{"name":"deleteFileHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"DeleteLinesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"DeleteOperations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorDeleteOperations"},{"name":"deletePassword","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/keytar/keytar"},{"name":"deletePassword","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/keytar/index"},{"name":"DeleteWordCommand","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"DeleteWordEndLeft","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"DeleteWordEndRight","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"DeleteWordLeft","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"DeleteWordLeftCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"DeleteWordPartLeft","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordPartOperations/wordPartOperations"},{"name":"DeleteWordPartRight","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordPartOperations/wordPartOperations"},{"name":"DeleteWordRight","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"DeleteWordRightCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"DeleteWordStartLeft","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"DeleteWordStartRight","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"delimiter","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"path"},{"name":"delimiter","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"delta","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"DeltaExtensionsResult","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionDescriptionRegistry"},{"name":"departFocus","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"DependsOrder","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"deprecate","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"Deprecated_RemoteAuthorityContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/contextkeys"},{"name":"describe","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"descriptionForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"deserialize","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"v8"},{"name":"deserializeEnvironmentVariableCollection","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariableShared"},{"name":"deserializePipePositions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/test/wordTestUtils"},{"name":"Deserializer","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"v8"},{"name":"deserializeSearchError","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"desktopCapturer","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"DesktopDragAndDropData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/listView"},{"name":"DesktopHostService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/host/electron-browser/desktopHostService"},{"name":"DESTRUCTION","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"detect","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/jschardet/index"},{"name":"detectAvailableShells","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/node/terminal"},{"name":"detectEncodingByBOM","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/test/node/encoding/encoding.test"},{"name":"detectEncodingByBOMFromBuffer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"detectEncodingFromBuffer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"DetectIndentation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentation"},{"name":"detectModeId","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/getIconClasses"},{"name":"DeviceAcceleration","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DeviceLightEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DeviceMotionEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DeviceOrientationEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"devicePixelRatio","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DeviceRotationRate","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DH_CHECK_P_NOT_PRIME","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"DH_CHECK_P_NOT_SAFE_PRIME","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"DH_NOT_SUITABLE_GENERATOR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"DH_UNABLE_TO_CHECK_GENERATOR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"Diagnostic","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"Diagnostic","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"Diagnostic","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"DiagnosticCollection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDiagnostics"},{"name":"DiagnosticRelatedInformation","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"DiagnosticRelatedInformation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"DiagnosticRelatedInformation","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"DiagnosticsChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/diagnostics/node/diagnosticsIpc"},{"name":"DiagnosticSeverity","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"DiagnosticSeverity","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"DiagnosticSeverity","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"DiagnosticsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/diagnostics/node/diagnosticsService"},{"name":"DiagnosticsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/diagnostics/node/diagnosticsIpc"},{"name":"DiagnosticTag","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"DiagnosticTag","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"DiagnosticTag","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"dialog","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"Dialog","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/dialog/dialog"},{"name":"DialogChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/dialogs/electron-browser/dialogIpc"},{"name":"DialogMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/dialogs/electron-main/dialogs"},{"name":"DialogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/dialogs/browser/dialogService"},{"name":"DialogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/dialogs/electron-browser/dialogService"},{"name":"didBindWorkbenchListAutomaticKeyboardNavigation","kind":"let","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"DidChangeContentEmitter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModel"},{"name":"DidChangeDecorationsEmitter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModel"},{"name":"didUseCachedData","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/timer/electron-browser/timerService"},{"name":"diff","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"diff","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/notebookCommon"},{"name":"DiffAPICommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/apiCommands"},{"name":"diffBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"DiffChange","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/diff/diffChange"},{"name":"DiffComputer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/diff/diffComputer"},{"name":"DiffEditorInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor/diffEditorInput"},{"name":"DiffEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor/diffEditorModel"},{"name":"DiffEditorState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorBrowser"},{"name":"DiffEditorWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/widget/diffEditorWidget"},{"name":"DiffieHellman","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"diffInserted","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"diffInsertedOutline","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"DiffNavigator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/widget/diffNavigator"},{"name":"diffRemoved","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"diffRemovedOutline","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"DiffReview","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/widget/diffReview"},{"name":"Dimension","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"dir","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"Dir","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"Direction","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/menu/menu"},{"name":"Direction","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/grid/grid"},{"name":"Direction","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminal"},{"name":"Dirent","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"dirExists","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"dirname","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"path"},{"name":"dirname","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"dirname","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"DirtyDiffController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"DirtyDiffModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"DirtyDiffWorkbenchController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"DirtyEditorContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"DirtyFilesIndicator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/dirtyFilesIndicator"},{"name":"DirtyWorkingCopiesContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"dirxml","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"DisableAllAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"DisableAllBreakpointsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"DisableAllWorkspaceAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"DisableAutoUpdateAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"DISABLED_EXTENSIONS_STORAGE_PATH","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"DisabledExtensionsView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews"},{"name":"DisableDropDownAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"DisableForWorkspaceAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"DisableGloballyAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"disconnect","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"disconnect","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"DISCONNECT_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"DISCONNECT_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"DiskFileSystemProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/diskFileSystemProvider"},{"name":"DiskFileSystemProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/electron-browser/diskFileSystemProvider"},{"name":"DiskSearch","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/searchService"},{"name":"DispatchConfig","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/dispatchConfig"},{"name":"dispatchEvent","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"Disposable","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"Disposable","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/lifecycle"},{"name":"Disposable","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"Disposable","kind":"alias","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/workbench.web.api"},{"name":"DisposableStore","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/lifecycle"},{"name":"disposableTimeout","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"dispose","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/lifecycle"},{"name":"dispose","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/applicationinsights"},{"name":"disposed","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errors"},{"name":"distinct","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"distinct","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/objects"},{"name":"distinctES6","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"distinctParents","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"do","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"doBenchmark","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/model/benchmark/benchmarkUtils"},{"name":"Dock","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"document","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Document","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"documentationExtensionPointDescriptor","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeActions/common/documentationExtensionPoint"},{"name":"DocumentationExtensionPointFields","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeActions/common/documentationExtensionPoint"},{"name":"DocumentFormattingEditProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"DocumentFragment","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DocumentHighlight","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"DocumentHighlight","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"DocumentHighlight","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"DocumentHighlightKind","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"DocumentHighlightKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"DocumentHighlightKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"DocumentHighlightKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"DocumentHighlightProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"DocumentLink","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"DocumentLink","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"DocumentLink","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"DocumentRangeFormattingEditProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"DocumentRangeSemanticTokensAdapter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostLanguageFeatures"},{"name":"DocumentRangeSemanticTokensProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"DocumentSemanticTokensAdapter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostLanguageFeatures"},{"name":"DocumentSemanticTokensProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"DocumentSymbol","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"DocumentSymbol","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"DocumentSymbol","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"DocumentSymbolProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"DocumentTimeline","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DocumentType","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"doesNotReject","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"doesNotThrow","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"domain","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"Domain","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"domain"},{"name":"Domain","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/Domain"},{"name":"Domain","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"domainSupportsProperties","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Constants"},{"name":"domainToASCII","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"url"},{"name":"domainToUnicode","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"url"},{"name":"domContentLoaded","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"DOMError","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"domEvent","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/event"},{"name":"DOMException","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DOMImplementation","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DOMLineBreaksComputerFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/view/domLineBreaksComputer"},{"name":"DOMMatrix","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DOMMatrixReadOnly","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DOMParser","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DOMPoint","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DOMPointReadOnly","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DOMQuad","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DomReadingContext","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/lines/viewLine"},{"name":"DOMRect","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DOMRectList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DOMRectReadOnly","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DomScrollableElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/scrollbar/scrollableElement"},{"name":"DOMSettableTokenList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DOMStringList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DOMStringMap","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DOMTokenList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"doNotTrack","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"dosDateTimeToDate","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/yauzl/index"},{"name":"DOWNLOAD_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"DOWNLOAD_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"DownloadItem","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"DownloadService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/download/common/downloadService"},{"name":"DownloadServiceChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/download/common/downloadIpc"},{"name":"DownloadServiceChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/download/common/downloadIpc"},{"name":"DragAndDropCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/dnd/dragAndDropCommand"},{"name":"DragAndDropController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/dnd/dnd"},{"name":"DragAndDropData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dnd"},{"name":"DragAndDropObserver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/dnd"},{"name":"DragEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DraggedCompositeIdentifier","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/dnd"},{"name":"DraggedEditorGroupIdentifier","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/dnd"},{"name":"DraggedEditorIdentifier","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/dnd"},{"name":"DraggedViewIdentifier","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/dnd"},{"name":"DragMouseEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/mouseEvent"},{"name":"Driver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/driver/electron-main/driver"},{"name":"DriverChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/driver/node/driver"},{"name":"DriverChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/driver/node/driver"},{"name":"Dropdown","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/dropdown/dropdown"},{"name":"DropdownMenu","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/dropdown/dropdown"},{"name":"DropdownMenuActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/dropdown/dropdown"},{"name":"DropDownMenuActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"Duplex","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"stream"},{"name":"DuplicateSelectionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"DuplicateWorkspaceInNewWindowAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/workspaceActions"},{"name":"DynamicsCompressorNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"DynamicStandaloneServices","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneServices"},{"name":"DynamicViewOverlay","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/view/dynamicViewOverlay"},{"name":"DynamicWebviewEditorOverlay","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/dynamicWebviewEditorOverlay"},{"name":"DynamicWorkspaceRecommendations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/dynamicWorkspaceRecommendations"},{"name":"E2BIG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EACCES","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EADDRINUSE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EADDRNOTAVAIL","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EAFNOSUPPORT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EAGAIN","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EALREADY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EBADF","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EBADMSG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EBUSY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ECANCELED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ECDH","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"ECHILD","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ECONNABORTED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ECONNREFUSED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ECONNRESET","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EDEADLK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EDESTADDRREQ","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"edit","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/content"},{"name":"EditableConfigurationTarget","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configurationEditingService"},{"name":"EditOperation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/editOperation"},{"name":"EditOperationResult","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorCommon"},{"name":"EditOperationType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorCommon"},{"name":"editor","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/editor.api"},{"name":"EDITOR_BOTTOM_PADDING","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/constants"},{"name":"EDITOR_CONTRIBUTION_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"EDITOR_DRAG_AND_DROP_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"EDITOR_FONT_DEFAULTS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"EDITOR_GROUP_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"EDITOR_GROUP_EMPTY_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"EDITOR_GROUP_FOCUSED_EMPTY_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"EDITOR_GROUP_HEADER_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"EDITOR_GROUP_HEADER_NO_TABS_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"EDITOR_GROUP_HEADER_TABS_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"EDITOR_GROUP_HEADER_TABS_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"EDITOR_MODEL_DEFAULTS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"EDITOR_PANE_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"EDITOR_TITLE_HEIGHT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editor"},{"name":"EDITOR_TOOLBAR_HEIGHT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/constants"},{"name":"EDITOR_TOP_MARGIN","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/constants"},{"name":"EDITOR_TOP_PADDING","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/constants"},{"name":"EditorAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorExtensions"},{"name":"EditorActivation","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/editor/common/editor"},{"name":"editorActiveIndentGuides","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"editorActiveLineNumber","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"editorActiveLinkForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"EditorAreaVisibleContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"editorAssociationsConfigurationNode","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/browser/editorAssociationsSetting"},{"name":"EditorAutoIndentStrategy","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"EditorAutoIndentStrategy","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"EditorAutoSave","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorAutoSave"},{"name":"editorBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorBracketMatchBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"editorBracketMatchBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"EditorBreadcrumbsModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbsModel"},{"name":"editorCodeLensForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"EditorCommand","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorExtensions"},{"name":"EditorCommandsContextActionRunner","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"editorConfiguration","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeActions/common/codeActionsContribution"},{"name":"editorConfigurationBaseNode","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/commonEditorConfig"},{"name":"EditorContextKeys","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/editorContextKeys"},{"name":"EditorControl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorControl"},{"name":"editorCursorBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"editorCursorForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"EditorDescriptor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/editor"},{"name":"EditorDropTarget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorDropTarget"},{"name":"editorErrorBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorErrorForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"EditorExtensionsRegistry","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorExtensions"},{"name":"editorFindMatch","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorFindMatchBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorFindMatchHighlight","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorFindMatchHighlightBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorFindRangeHighlight","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorFindRangeHighlightBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"EditorFontLigatures","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"editorForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"EditorGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor/editorGroup"},{"name":"EditorGroupActiveEditorDirtyContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"EditorGroupEditorsCountContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"editorGroupToViewColumn","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/shared/editor"},{"name":"EditorGroupView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorGroupView"},{"name":"editorGutter","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"editorGutterAddedBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"editorGutterDeletedBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"editorGutterModifiedBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"editorHintBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorHintForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorHoverBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorHoverBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorHoverForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorHoverHighlight","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorHoverStatusBarBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorInactiveSelection","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorIndentGuides","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"editorInfoBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorInfoForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"EditorInput","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"EditorKeybindingCancellationTokenSource","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/core/keybindingCancellation"},{"name":"EditorLayoutInfoComputer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"EditorLayoutSingleAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"EditorLayoutThreeColumnsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"EditorLayoutThreeRowsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"EditorLayoutTwoByTwoGridAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"EditorLayoutTwoColumnsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"EditorLayoutTwoColumnsBottomAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"EditorLayoutTwoRowsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"EditorLayoutTwoRowsRightAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"editorLightBulbAutoFixForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorLightBulbForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorLineHighlight","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"editorLineHighlightBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"editorLineNumbers","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"editorMarkerNavigationBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoError/gotoErrorWidget"},{"name":"editorMarkerNavigationError","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoError/gotoErrorWidget"},{"name":"editorMarkerNavigationInfo","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoError/gotoErrorWidget"},{"name":"editorMarkerNavigationWarning","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoError/gotoErrorWidget"},{"name":"editorMatchesToTextSearchResults","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/searchHelpers"},{"name":"EditorMemento","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/baseEditor"},{"name":"EditorModeContext","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/widget/codeEditorWidget"},{"name":"EditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"EditorModesRegistry","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/modesRegistry"},{"name":"EditorMouseEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorDom"},{"name":"EditorMouseEventFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorDom"},{"name":"EditorOpenContext","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/editor/common/editor"},{"name":"EditorOption","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"EditorOption","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"EditorOptions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"EditorOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"editorOptionsRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"editorOverviewRulerBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"EditorPagePosition","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorDom"},{"name":"EditorPart","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorPart"},{"name":"EditorPinnedContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"EditorPointerEventFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorDom"},{"name":"EditorProgressIndicator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/progress/browser/progressIndicator"},{"name":"editorRangeHighlight","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"editorRangeHighlightBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"editorRuler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"EditorScopedQuickInputServiceImpl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/quickInput/standaloneQuickInputServiceImpl"},{"name":"EditorScroll_","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/coreCommands"},{"name":"EditorScrollbar","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/editorScrollbar/editorScrollbar"},{"name":"editorSelectionBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorSelectionForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorSelectionHighlight","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorSelectionHighlightBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"EditorService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/browser/editorService"},{"name":"EditorSimpleWorker","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/editorSimpleWorker"},{"name":"EditorsObserver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorsObserver"},{"name":"EditorsOrder","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"EditorState","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/core/editorState"},{"name":"EditorStateCancellationTokenSource","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/core/editorState"},{"name":"EditorStatus","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorStatus"},{"name":"editorSuggestWidgetBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestWidget"},{"name":"editorSuggestWidgetBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestWidget"},{"name":"editorSuggestWidgetForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestWidget"},{"name":"editorSuggestWidgetHighlightForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestWidget"},{"name":"editorSuggestWidgetSelectedBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestWidget"},{"name":"EditorsVisibleContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"editorSymbolHighlight","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"editorSymbolHighlightBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"EditorTheme","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewContext"},{"name":"EditorType","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/editorCommon"},{"name":"editorUnnecessaryCodeBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"editorUnnecessaryCodeOpacity","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"EditorWalkThroughAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/editor/editorWalkThrough"},{"name":"EditorWalkThroughInputFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/editor/editorWalkThrough"},{"name":"editorWarningBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorWarningForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"EditorWhitespace","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/linesLayout"},{"name":"editorWhitespaces","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"editorWidgetBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorWidgetBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorWidgetForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"editorWidgetResizeBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"EditorWorkerClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/editorWorkerServiceImpl"},{"name":"EditorWorkerHost","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/editorWorkerServiceImpl"},{"name":"EditorWorkerServiceImpl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/editorWorkerServiceImpl"},{"name":"EditorZoom","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorZoom"},{"name":"EditPreferenceWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesWidgets"},{"name":"EditStack","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/editStack"},{"name":"EDOM","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EEXIST","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EFAULT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EFBIG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EHOSTUNREACH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EIDRM","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EILSEQ","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EINPROGRESS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EINTR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EINVAL","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EIO","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EISCONN","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EISDIR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"electron","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"Electron","kind":"module","kindModifiers":"declare","sortText":"4"},{"name":"ElectronAcceleratorLabelProvider","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keybindingLabels"},{"name":"ElectronMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/electron/electron-main/electronMainService"},{"name":"ElectronService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/electron/electron-browser/electronService"},{"name":"ElectronURLListener","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/url/electron-main/electronUrlListener"},{"name":"ElectronWebviewBasedWebview","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewElement"},{"name":"ElectronWebviewService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewService"},{"name":"Element","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ElementsDragAndDropData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/listView"},{"name":"ElementSizeObserver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/config/elementSizeObserver"},{"name":"ELOOP","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"else","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"EmbeddedCodeEditorWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/widget/embeddedCodeEditorWidget"},{"name":"EmbeddedDiffEditorWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/widget/embeddedCodeEditorWidget"},{"name":"embeddedEditorBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughPart"},{"name":"EMFILE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"emit","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"emit","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"emitKeypressEvents","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"readline"},{"name":"Emitter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/event"},{"name":"Emitter","kind":"alias","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/workbench.web.api"},{"name":"Emitter","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/editor.api"},{"name":"emitWarning","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"EMLINK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EmmetEditorAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/emmet/browser/emmetActions"},{"name":"empty","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchCommon"},{"name":"EmptyExtension","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostExtensionActivator"},{"name":"EmptyPane","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/scmViewlet"},{"name":"EmptyPaneDescriptor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/scmViewlet"},{"name":"emptyProgressRunner","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/progress/common/progress"},{"name":"EmptyView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/emptyView"},{"name":"EMSGSIZE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EnableAllAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"EnableAllBreakpointsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"EnableAllWorkspaceAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"EnableAutoUpdateAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ENABLED_EXTENSIONS_STORAGE_PATH","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"enableDebug","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/jschardet/index"},{"name":"EnabledExtensionsView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews"},{"name":"EnableDropDownAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"EnableForWorkspaceAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"EnableGloballyAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"Enablement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"EnablementState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagement"},{"name":"enablePromiseAPIs","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"ENAMETOOLONG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"encode","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"punycode"},{"name":"encode","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"querystring"},{"name":"encode","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/iconv-lite/lib/index"},{"name":"EncodedTokenizationSupport2Adapter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"encodeSemanticTokensDto","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/shared/semanticTokensDto"},{"name":"encodeStream","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/iconv-lite/lib/index"},{"name":"encodeStream","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"encodeURI","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"encodeURIComponent","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"encodeUTF8","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"encodingExists","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/iconv-lite/lib/index"},{"name":"encodingExists","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"EncodingMode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"EncodingOracle","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/electron-browser/nativeTextFileService"},{"name":"endianness","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"EndOfLine","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"EndOfLine","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"EndOfLine","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"EndOfLinePreference","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model"},{"name":"EndOfLinePreference","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"EndOfLineSequence","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model"},{"name":"EndOfLineSequence","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"endsWith","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"ENETDOWN","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENETRESET","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENETUNREACH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENFILE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"Engine","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/fileSearch"},{"name":"ENGINE_METHOD_ALL","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENGINE_METHOD_CIPHERS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENGINE_METHOD_DH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENGINE_METHOD_DIGESTS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENGINE_METHOD_DSA","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENGINE_METHOD_ECDH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENGINE_METHOD_ECDSA","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENGINE_METHOD_NONE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENGINE_METHOD_PKEY_ASN1_METHS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENGINE_METHOD_PKEY_METHS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENGINE_METHOD_RAND","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENGINE_METHOD_RSA","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENGINE_METHOD_STORE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOBUFS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENODATA","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENODEV","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOENT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOEXEC","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOLCK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOLINK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOMEM","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOMSG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOPROTOOPT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOSPC","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOSR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOSTR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOSYS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOTCONN","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOTDIR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOTEMPTY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOTSOCK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOTSUP","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ENOTTY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ensureFileSystemProviderError","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"ensureValidWordDefinition","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/wordHelper"},{"name":"Entry","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/yauzl/index"},{"name":"enum","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"env","kind":"module","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"env","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/process"},{"name":"env","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"ENV_azurePrefix","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Config"},{"name":"ENV_http_proxy","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Config"},{"name":"ENV_https_proxy","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Config"},{"name":"ENV_iKey","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Config"},{"name":"ENV_profileQueryEndpoint","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Config"},{"name":"Envelope","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/Envelope"},{"name":"Envelope","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"EnvironmentService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/environmentService"},{"name":"EnvironmentVariableCollection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTerminalService"},{"name":"EnvironmentVariableMutatorType","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"EnvironmentVariableMutatorType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariable"},{"name":"EnvironmentVariableMutatorType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"EnvironmentVariableService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariableService"},{"name":"ENXIO","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EOF","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"EOL","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"EOPNOTSUPP","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EOVERFLOW","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EPERM","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EPIPE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EPROTO","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EPROTONOSUPPORT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EPROTOTYPE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"eq","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"equal","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"equals","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"equals","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/objects"},{"name":"equalsIgnoreCase","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"ERANGE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"EROFS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"error","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"Error","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Error","kind":"enum member","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/SeverityLevel"},{"name":"ErrorEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ErrorEvent","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/errorTelemetry"},{"name":"errorForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"errorHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errors"},{"name":"ErrorHandler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errors"},{"name":"ErrorScope","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"ErrorTelemetry","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/browser/errorTelemetry"},{"name":"ErrorTelemetry","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/node/errorTelemetry"},{"name":"escape","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"escape","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"querystring"},{"name":"escape","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"escapeCodicons","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/codicons"},{"name":"escapeNonWindowsPath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalEnvironment"},{"name":"escapeRegExpCharacters","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"ESPIPE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ESRCH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"etag","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"ETAG_DISABLED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"ETIME","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ETIMEDOUT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ETXTBSY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"eval","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"EvalError","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"EvaluatableExpression","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"EvaluatableExpression","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"EvaluatableExpression","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"EvaluatableExpressionProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"event","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Event","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Event","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/event"},{"name":"Event","kind":"alias","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/workbench.web.api"},{"name":"EventBufferer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/event"},{"name":"EventData","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/EventData"},{"name":"EventData","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"EventEmitter","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"EventEmitter","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"events"},{"name":"EventHelper","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"EventMultiplexer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/event"},{"name":"eventNames","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"eventNames","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"EventSource","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"EventTarget","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"EventType","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"EventType","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/touch"},{"name":"EWOULDBLOCK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"exception","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"ExceptionBreakpoint","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"ExceptionData","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/ExceptionData"},{"name":"ExceptionData","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"ExceptionDetails","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/ExceptionDetails"},{"name":"ExceptionDetails","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"ExceptionWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/exceptionWidget"},{"name":"ExcludePatternInputWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/patternInputWidget"},{"name":"ExcludeSettingWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"EXDEV","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"ExeBasedRecommendations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/exeBasedRecommendations"},{"name":"exec","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"child_process"},{"name":"exec","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/sudo-prompt/index"},{"name":"execArgv","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"execFile","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"child_process"},{"name":"execFileSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"child_process"},{"name":"execPath","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"execSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"child_process"},{"name":"ExecutableDebugAdapter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/node/debugAdapter"},{"name":"ExecuteCellAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookActions"},{"name":"ExecuteCommandAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/common/actions"},{"name":"ExecuteCommandAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"executionAsyncId","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"async_hooks"},{"name":"ExecutionEngine","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"ExecutionEngine","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskConfiguration"},{"name":"exists","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"exists","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"existsSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"exit","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/native-watchdog/index"},{"name":"exit","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"exitCode","kind":"property","kindModifiers":"declare,optional","sortText":"5","hasAction":true,"source":"process"},{"name":"EXPAND_NOTIFICATION","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"ExpandAllAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"ExpandNotificationAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsActions"},{"name":"expectation","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"ExperimentActionType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/experiments/common/experimentService"},{"name":"experimental","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/electron-browser/colorRegistry.releaseTest"},{"name":"ExperimentalPrompts","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/experiments/browser/experimentalPrompt"},{"name":"ExperimentalRecommendations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/experimentalRecommendations"},{"name":"ExperimentService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/experiments/common/experimentService"},{"name":"ExperimentState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/experiments/common/experimentService"},{"name":"ExplorerCompressedFirstFocusContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"ExplorerCompressedFocusContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"ExplorerCompressedLastFocusContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"ExplorerCompressionDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer"},{"name":"ExplorerDataSource","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer"},{"name":"ExplorerDecorationsProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/explorerDecorationsProvider"},{"name":"ExplorerDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer"},{"name":"ExplorerFocusCondition","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"ExplorerFocusedContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"ExplorerFolderContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"ExplorerItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/explorerModel"},{"name":"ExplorerModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/explorerModel"},{"name":"ExplorerResourceCut","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"ExplorerResourceMoveableToTrash","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"ExplorerResourceNotReadonlyContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"ExplorerResourceReadonlyContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"ExplorerRootContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"explorerRootErrorEmitter","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer"},{"name":"ExplorerService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/explorerService"},{"name":"ExplorerView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/explorerView"},{"name":"ExplorerViewletViewsContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/explorerViewlet"},{"name":"ExplorerViewletVisibleContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"ExplorerViewPaneContainer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/explorerViewlet"},{"name":"export","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"exportEntries","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/performance"},{"name":"exports","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Expression","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"ExpressionContainer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"EXT_HOST_CREATION_DELAY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"extends","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"EXTENSION_BADGE_REMOTE_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"EXTENSION_BADGE_REMOTE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"EXTENSION_IDENTIFIER_PATTERN","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"EXTENSION_IDENTIFIER_REGEX","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"EXTENSION_SETTING_TAG","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"ExtensionAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ExtensionActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ExtensionActivationProgress","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActivationProgress"},{"name":"ExtensionActivationTimes","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostExtensionActivator"},{"name":"ExtensionActivationTimesBuilder","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostExtensionActivator"},{"name":"extensionButtonProminentBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"extensionButtonProminentForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"extensionButtonProminentHoverBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ExtensionContainers","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensions"},{"name":"ExtensionData","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/workbenchThemeService"},{"name":"ExtensionData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewer"},{"name":"ExtensionDependencyChecker","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsDependencyChecker"},{"name":"ExtensionDescriptionRegistry","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionDescriptionRegistry"},{"name":"ExtensionDropDownAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ExtensionEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionEditor"},{"name":"ExtensionEditorDropDownAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ExtensionEnablementService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensionManagement/common/extensionEnablementService"},{"name":"ExtensionGalleryService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionGalleryService"},{"name":"ExtensionHostDebugBroadcastChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/debug/common/extensionHostDebugIpc"},{"name":"ExtensionHostDebugChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/debug/common/extensionHostDebugIpc"},{"name":"ExtensionHostDebugService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/electron-browser/extensionHostDebugService"},{"name":"ExtensionHostLogFileName","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensions"},{"name":"ExtensionHostMain","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionHostMain"},{"name":"ExtensionHostPersistentConnection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAgentConnection"},{"name":"ExtensionHostProcessManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionHostProcessManager"},{"name":"ExtensionHostProcessWorker","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/electron-browser/extensionHost"},{"name":"ExtensionHostProfiler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/electron-browser/extensionHostProfiler"},{"name":"ExtensionHostProfileService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensionProfileService"},{"name":"ExtensionIdentifier","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensions/common/extensions"},{"name":"ExtensionIdentifierWithVersion","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagementUtil"},{"name":"ExtensionKind","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"ExtensionKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"ExtensionManagementChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagementIpc"},{"name":"ExtensionManagementChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagementIpc"},{"name":"ExtensionManagementError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/node/extensionManagementService"},{"name":"ExtensionManagementServerService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementServerService"},{"name":"ExtensionManagementServerService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensionManagement/electron-browser/extensionManagementServerService"},{"name":"ExtensionManagementService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementService"},{"name":"ExtensionManagementService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/node/extensionManagementService"},{"name":"ExtensionManagementService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensionManagement/node/extensionManagementService"},{"name":"ExtensionMemento","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostMemento"},{"name":"ExtensionMessageCollector","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionsRegistry"},{"name":"ExtensionPackCountWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets"},{"name":"ExtensionPoint","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionsRegistry"},{"name":"ExtensionPointContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensions"},{"name":"ExtensionPoints","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/extensionHost.contribution"},{"name":"ExtensionPoints","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/configExporter/electron-browser/configurationExportHelper.contribution"},{"name":"ExtensionPointUserDelta","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionsRegistry"},{"name":"ExtensionRecommendationReason","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagement"},{"name":"ExtensionRecommendations","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendations"},{"name":"ExtensionRecommendationsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationsService"},{"name":"ExtensionRegistryReporter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher"},{"name":"ExtensionRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewer"},{"name":"ExtensionResourceLoaderService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensionResourceLoader/electron-browser/extensionResourceLoaderService"},{"name":"extensionResultIsMatch","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/textSearchManager"},{"name":"extensionResultIsMatch","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/electron-browser/api/extHostSearch.test"},{"name":"extensions","kind":"module","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/jsonschemas/common/jsonContributionRegistry"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/themeService"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationRegistry"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/keybinding/common/keybindingsRegistry"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/quickinput/common/quickAccess"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/modesRegistry"},{"name":"Extensions","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/contributions"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"Extensions","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/views"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/output/common/output"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/actions"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/viewlet"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/panel"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/editor"},{"name":"Extensions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/iconRegistry"},{"name":"EXTENSIONS_CONFIG","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensions"},{"name":"ExtensionsActivator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostExtensionActivator"},{"name":"ExtensionsAutoProfiler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensionsAutoProfiler"},{"name":"ExtensionScanner","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/node/extensionPoints"},{"name":"ExtensionScannerInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/node/extensionPoints"},{"name":"ExtensionsChannelId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"ExtensionsConfigurationInitialContent","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensionsFileTemplate"},{"name":"ExtensionsConfigurationSchema","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensionsFileTemplate"},{"name":"ExtensionsConfigurationSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensionsFileTemplate"},{"name":"ExtensionScriptApis","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ExtensionService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/browser/extensionService"},{"name":"ExtensionService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/electron-browser/extensionService"},{"name":"ExtensionsGridView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewer"},{"name":"ExtensionsInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensionsInput"},{"name":"ExtensionsLabel","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"ExtensionsLifecycle","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/node/extensionLifecycle"},{"name":"ExtensionsListView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews"},{"name":"ExtensionsManifestCache","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/node/extensionsManifestCache"},{"name":"ExtensionsRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionsRegistry"},{"name":"ExtensionsRegistryImpl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionsRegistry"},{"name":"ExtensionsSynchroniser","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/extensionsSync"},{"name":"ExtensionState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensions"},{"name":"ExtensionStoragePaths","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/node/extHostStoragePaths"},{"name":"ExtensionsTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewer"},{"name":"ExtensionsViewletViewsContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewlet"},{"name":"ExtensionsViewPaneContainer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewlet"},{"name":"ExtensionsWorkbenchService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService"},{"name":"ExtensionTipsChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagementIpc"},{"name":"ExtensionTipsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/node/extensionTipsService"},{"name":"ExtensionToolTipAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ExtensionType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensions/common/extensions"},{"name":"ExtensionWidget","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets"},{"name":"external","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"External","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ExternalElementsDragAndDropData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/listView"},{"name":"ExternalThemeTrieElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/tokenization"},{"name":"ExternalUriResolverContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/url/common/externalUriResolver"},{"name":"ExtHostApiCommands","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostApiCommands"},{"name":"ExtHostApiDeprecationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostApiDeprecationService"},{"name":"ExtHostAuthentication","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostAuthentication"},{"name":"ExtHostCell","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostNotebook"},{"name":"ExtHostClipboard","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostClipboard"},{"name":"ExtHostCommands","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostCommands"},{"name":"ExtHostComments","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostComments"},{"name":"ExtHostCommentThread","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostComments"},{"name":"ExtHostConfigProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostConfiguration"},{"name":"ExtHostConfiguration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostConfiguration"},{"name":"ExtHostContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHost.protocol"},{"name":"extHostCustomer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostCustomers"},{"name":"ExtHostCustomersRegistry","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostCustomers"},{"name":"ExtHostDebugConsole","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDebugService"},{"name":"ExtHostDebugService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/node/extHostDebugService"},{"name":"ExtHostDebugServiceBase","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDebugService"},{"name":"ExtHostDebugSession","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDebugService"},{"name":"ExtHostDecorations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDecorations"},{"name":"ExtHostDiagnostics","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDiagnostics"},{"name":"ExtHostDialogs","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDialogs"},{"name":"ExtHostDocumentContentProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDocumentContentProviders"},{"name":"ExtHostDocumentData","kind":"alias","kindModifiers":"","sortText":"0"},{"name":"ExtHostDocumentLine","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDocumentData"},{"name":"ExtHostDocuments","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDocuments"},{"name":"ExtHostDocumentsAndEditors","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDocumentsAndEditors"},{"name":"ExtHostDocumentSaveParticipant","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDocumentSaveParticipant"},{"name":"ExtHostDownloadService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/node/extHostDownloadService"},{"name":"ExtHostEditorInsets","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostCodeInsets"},{"name":"ExtHostEditors","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTextEditors"},{"name":"ExtHostExtensionService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/node/extHostExtensionService"},{"name":"ExtHostExtensionService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/worker/extHostExtensionService"},{"name":"ExtHostFileSystem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostFileSystem"},{"name":"ExtHostFileSystemEventService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostFileSystemEventService"},{"name":"ExtHostLabelService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostLabelService"},{"name":"ExtHostLanguageFeatures","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostLanguageFeatures"},{"name":"ExtHostLanguages","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostLanguages"},{"name":"extHostLogChannelId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/logs/common/logConstants"},{"name":"ExtHostLogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/node/extHostLogService"},{"name":"ExtHostLogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/worker/extHostLogService"},{"name":"ExtHostMessageService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostMessageService"},{"name":"extHostNamedCustomer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostCustomers"},{"name":"ExtHostNotebookController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostNotebook"},{"name":"ExtHostNotebookDocument","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostNotebook"},{"name":"ExtHostNotebookEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostNotebook"},{"name":"ExtHostNotebookOutputRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostNotebook"},{"name":"ExtHostOutputChannelBackedByFile","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/node/extHostOutputService"},{"name":"ExtHostOutputService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostOutput"},{"name":"ExtHostOutputService2","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/node/extHostOutputService"},{"name":"ExtHostProgress","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostProgress"},{"name":"ExtHostPseudoterminal","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTerminalService"},{"name":"ExtHostPushOutputChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostOutput"},{"name":"ExtHostQuickOpen","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostQuickOpen"},{"name":"ExtHostRpcService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostRpcService"},{"name":"ExtHostSCM","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostSCM"},{"name":"ExtHostSCMInputBox","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostSCM"},{"name":"ExtHostSearch","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostSearch"},{"name":"ExtHostStatusBar","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostStatusBar"},{"name":"ExtHostStatusBarEntry","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostStatusBar"},{"name":"ExtHostStorage","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostStorage"},{"name":"ExtHostTask","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/node/extHostTask"},{"name":"ExtHostTaskBase","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTask"},{"name":"ExtHostTerminal","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTerminalService"},{"name":"ExtHostTerminalService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/node/extHostTerminalService"},{"name":"ExtHostTextEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTextEditor"},{"name":"ExtHostTextEditorOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTextEditor"},{"name":"ExtHostTheming","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTheming"},{"name":"ExtHostTimeline","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTimeline"},{"name":"ExtHostTreeViews","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTreeViews"},{"name":"ExtHostTunnelService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTunnelService"},{"name":"ExtHostTunnelService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/node/extHostTunnelService"},{"name":"ExtHostUrls","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostUrls"},{"name":"ExtHostVariableResolverService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDebugService"},{"name":"ExtHostWebview","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostWebview"},{"name":"ExtHostWebviewEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostWebview"},{"name":"ExtHostWebviews","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostWebview"},{"name":"ExtHostWindow","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostWindow"},{"name":"ExtHostWorkspace","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostWorkspace"},{"name":"extname","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"path"},{"name":"extname","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"extname","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"extract","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/zip"},{"name":"ExtractError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/zip"},{"name":"extractLocalHostUriMetaDataForPortMapping","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/tunnel"},{"name":"extractRangeFromFilter","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/search"},{"name":"extractResources","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/dnd"},{"name":"extractSearchQueryFromLines","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorSerialization"},{"name":"extractSearchQueryFromModel","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorSerialization"},{"name":"F_OK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"fail","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"FailedExtension","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostExtensionActivator"},{"name":"fakeServer","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"fakeServerWithClock","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"FakeXMLHttpRequest","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"FALLBACK_MAX_MEMORY_SIZE_MB","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/files"},{"name":"false","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"FastDomNode","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/fastDomNode"},{"name":"fchmod","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"fchmodSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"fchown","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"fchownSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"fdatasync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"fdatasyncSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"features","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"FeedbackDropdown","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/feedback/browser/feedback"},{"name":"FeedbackStatusbarConribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/feedback/browser/feedbackStatusbarItem"},{"name":"fetch","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"FetchFileSystemProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/browser/webWorkerFileSystemProvider"},{"name":"File","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"FILE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"FILE_EDITOR_INPUT_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"FileBasedRecommendations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/fileBasedRecommendations"},{"name":"FileChangesEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"FileChangeType","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"FileChangeType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"FileChangeType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"FileChangeType","kind":"alias","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/workbench.web.api"},{"name":"FileCopiedContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"FileDialogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/dialogs/browser/fileDialogService"},{"name":"FileDialogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/dialogs/electron-browser/fileDialogService"},{"name":"FileDragAndDrop","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer"},{"name":"FileEditorInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/editors/fileEditorInput"},{"name":"FileElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbsModel"},{"name":"FileElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree"},{"name":"FileElementRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree"},{"name":"fileExists","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"FileFocusKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"FileIconThemeData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/browser/fileIconThemeData"},{"name":"FileKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"FileList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"FileLocationKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher"},{"name":"FileLoggerService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/fileLogService"},{"name":"FileLogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/fileLogService"},{"name":"FileMatch","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"FileMatch","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/searchModel"},{"name":"FileMatchOrFolderMatchFocusKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"FileMatchOrFolderMatchWithResourceFocusKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"FileMatchOrMatchFocusKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"FileMatchRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchResultsView"},{"name":"FileOperation","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"FileOperationError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"FileOperationEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"FileOperationResult","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"FilePreview","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/referencesModel"},{"name":"FileQueryCacheState","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/cacheState"},{"name":"FileReader","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"FileReferences","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/referencesModel"},{"name":"FileReferencesRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesTree"},{"name":"FileResourceMarkersRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersTreeViewer"},{"name":"FILES_ASSOCIATIONS_CONFIG","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"FILES_EXCLUDE_CONFIG","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"FilesConfigurationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/filesConfiguration/common/filesConfigurationService"},{"name":"FileSearchManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/fileSearchManager"},{"name":"FileService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/fileService"},{"name":"FilesExplorerFocusCondition","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"FilesExplorerFocusedContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"FilesFilter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer"},{"name":"FileSorter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbsPicker"},{"name":"FileSorter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer"},{"name":"FilesRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer"},{"name":"FileStorage","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/state/node/stateService"},{"name":"FileStorageDatabase","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/storage/browser/storageService"},{"name":"FileSystemError","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"FileSystemError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"FileSystemProviderCapabilities","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"FileSystemProviderCapabilities","kind":"alias","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/workbench.web.api"},{"name":"FileSystemProviderError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"FileSystemProviderErrorCode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"FileThemeIcon","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/themeService"},{"name":"FileType","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"FileType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"fileURLToPath","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"url"},{"name":"FileUserDataProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/userData/common/fileUserDataProvider"},{"name":"FileWalker","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/fileSearch"},{"name":"FileWatcher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/watcher/unix/watcherService"},{"name":"FileWatcher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/watcher/win32/watcherService"},{"name":"FileWatcher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/watcher/nsfw/watcherService"},{"name":"FileWatcher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/watcher/nodejs/watcherService"},{"name":"fillResourceDataTransfers","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/dnd"},{"name":"Filter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersTreeViewer"},{"name":"FilteredMatchesRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesRenderers"},{"name":"FilterOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersFilterOptions"},{"name":"filtersAction","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/types"},{"name":"filterValidationDecorations","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"FilterViewPaneContainer","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/views/viewsViewlet"},{"name":"finalHandler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"finally","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"FinalNewLineParticipant","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/saveParticipants"},{"name":"find","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"FIND_IDS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findModel"},{"name":"findBestWindowOrFolderForFile","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/node/window"},{"name":"FindController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"findCredentials","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/keytar/keytar"},{"name":"findCredentials","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/keytar/index"},{"name":"FindDecorations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findDecorations"},{"name":"findExecutable","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/node/terminalEnvironment"},{"name":"findExpressionInStackFrame","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugHover"},{"name":"findFirstInSorted","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"findFreePort","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/ports"},{"name":"findFreePortFaster","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/ports"},{"name":"FindInFilesActionId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"FindInFilesCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"FindInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/findinput/findInput"},{"name":"FindMatch","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model"},{"name":"findMatchingThemeRule","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textMate/common/TMHelper"},{"name":"FindModelBoundToEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findModel"},{"name":"findNodeAtLocation","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"findNodeAtOffset","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"FindOptionOverride","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findState"},{"name":"FindOptionsWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findOptionsWidget"},{"name":"FindOrReplaceInFilesAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"findParentWithClass","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"findPassword","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/keytar/keytar"},{"name":"findPassword","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/keytar/index"},{"name":"FindReplaceState","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findState"},{"name":"findRules","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchCommon"},{"name":"FindStartFocusAction","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"findValidPasteFileTarget","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"FindWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findWidget"},{"name":"FindWidgetViewZone","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findWidget"},{"name":"findWindowOnExtensionDevelopmentPath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/node/window"},{"name":"findWindowOnWorkspace","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/node/window"},{"name":"findWindowOnWorkspaceOrFolderUri","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/node/window"},{"name":"finished","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"stream"},{"name":"fips","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"first","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"first","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"first","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/collections"},{"name":"FIRST_COMPRESSED_FOLDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"firstIndex","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"FirstMatchFocusKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"firstNonWhitespaceIndex","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"firstOrDefault","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"firstSessionDateStorageKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetry"},{"name":"FixAllAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionCommands"},{"name":"fixAllCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeAction"},{"name":"fixCase","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchCommon"},{"name":"fixDriveC","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepFileSearch"},{"name":"fixInsert","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase"},{"name":"fixNewline","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepTextSearchEngine"},{"name":"fixPath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/test/browser/queryBuilder.test"},{"name":"fixRegexNewline","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepTextSearchEngine"},{"name":"flatten","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"Float32Array","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Float64Array","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"FloatingClickWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorWidgets"},{"name":"focus","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"FOCUS_FIRST_NOTIFICATION_TOAST","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"FOCUS_LAST_NOTIFICATION_TOAST","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"FOCUS_NEXT_NOTIFICATION_TOAST","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"FOCUS_NOTIFICATION_TOAST","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"FOCUS_PREVIOUS_NOTIFICATION_TOAST","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"FOCUS_REPL_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"FocusAboveGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"FocusActiveEditorCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"FocusActiveGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"FocusBelowGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"focusBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"focusedCellIndicator","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor"},{"name":"FocusedViewContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/views"},{"name":"FocusEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"FocusFilesExplorer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"FocusFirstGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"FocusLastGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"FocusLeftGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"FocusNavigationEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"FocusNextGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"FocusNextInputAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"FocusNextSearchResultAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"FocusPreviousGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"FocusPreviousInputAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"FocusPreviousSearchResultAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"FocusQueryEditorWidgetAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions"},{"name":"FocusQueryEditorWidgetCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"FocusRightGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"FocusSearchFromResults","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"focusSearchListCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"FocusSearchListCommandID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"FocusSessionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"FocusSessionActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActionViewItems"},{"name":"foldBackgroundBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/folding"},{"name":"FOLDER_CONFIG_FOLDER_NAME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"FOLDER_SCOPES","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"FOLDER_SETTINGS_NAME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"FOLDER_SETTINGS_PATH","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"FOLDER_SETTINGS_PATH","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferences"},{"name":"FolderConfiguration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/browser/configuration"},{"name":"FolderFocusKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"FolderMatch","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/searchModel"},{"name":"FolderMatchRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchResultsView"},{"name":"FolderMatchWithResource","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/searchModel"},{"name":"FolderSettingsActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesWidgets"},{"name":"FolderSettingsRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesRenderers"},{"name":"folderSettingsSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"foldersToIncludeGlobs","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepFileSearch"},{"name":"foldersToRgExcludeGlobs","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepFileSearch"},{"name":"FolderThemeIcon","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/themeService"},{"name":"FoldingController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/folding"},{"name":"FoldingDecorationProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/foldingDecorations"},{"name":"FoldingModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/foldingModel"},{"name":"FoldingRange","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"FoldingRange","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"FoldingRange","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"FoldingRangeKind","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"FoldingRangeKind","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"FoldingRangeKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"FoldingRangeKind","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"FoldingRangeProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"FoldingRegion","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/foldingRanges"},{"name":"FoldingRegions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/foldingRanges"},{"name":"FollowerLogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/logIpc"},{"name":"FontInfo","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/fontInfo"},{"name":"FontStyle","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"fontStylePattern","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry"},{"name":"for","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"forEach","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/collections"},{"name":"foreground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"ForeignElementType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/viewLineRenderer"},{"name":"fork","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"child_process"},{"name":"fork","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"format","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"path"},{"name":"format","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"url"},{"name":"format","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"format","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"format","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"format","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/jsonFormatter"},{"name":"format","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"formatDocumentRangeWithProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/format/format"},{"name":"formatDocumentRangeWithSelectedProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/format/format"},{"name":"formatDocumentWithProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/format/format"},{"name":"formatDocumentWithSelectedProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/format/format"},{"name":"formatOptions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/argv"},{"name":"formatPII","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugUtils"},{"name":"FormatString","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetParser"},{"name":"FormattingConflicts","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/format/format"},{"name":"FormattingEdit","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/format/formattingEdit"},{"name":"FormattingMode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/format/format"},{"name":"formatWithOptions","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"FormData","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"FORMERR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"forwardedPortsViewEnabled","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/remote/browser/tunnelView"},{"name":"frameElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"frames","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"FrankensteinMode","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/abstractMode"},{"name":"freemem","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"fromBuffer","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/yauzl/index"},{"name":"fromFd","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/yauzl/index"},{"name":"fromMap","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/collections"},{"name":"fromNow","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/date"},{"name":"fromRandomAccessReader","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/yauzl/index"},{"name":"fromRangeOrRangeWithMessage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"fstat","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"fstatSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"FSWatcher","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/chokidar/types/index"},{"name":"fsync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"fsyncSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"ftruncate","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"ftruncateSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"function","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"Function","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"FunctionBreakpoint","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"FunctionBreakpoint","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"FunctionBreakpoint","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"futimes","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"futimesSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"fuzzyContains","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"fuzzyScore","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"FuzzyScore","kind":"type","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"fuzzyScoreGraceful","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"fuzzyScoreGracefulAggressive","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"GainNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Gamepad","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"GamepadButton","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"GamepadEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"GamepadHapticActuator","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"GamepadPose","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"generateIndent","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentUtils"},{"name":"generateKeyPair","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"generateKeyPairSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"generateRandomChunkWithLF","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/model/linesTextBuffer/textBufferAutoTestUtils"},{"name":"generateRandomEdits","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/model/linesTextBuffer/textBufferAutoTestUtils"},{"name":"generateRandomPipeName","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/node/ipc.net"},{"name":"generateRandomReplaces","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/model/linesTextBuffer/textBufferAutoTestUtils"},{"name":"generateSequentialInserts","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/model/linesTextBuffer/textBufferAutoTestUtils"},{"name":"generateTokensCSSForColorMap","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/tokenization"},{"name":"generateUuid","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/uuid"},{"name":"Gesture","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/touch"},{"name":"get","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"http"},{"name":"get","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"https"},{"name":"getAbsoluteGlob","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepFileSearch"},{"name":"getActiveEditor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentsEditorContribution"},{"name":"getActiveNotebookEditor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookActions"},{"name":"getActiveTextEditorOptions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editor"},{"name":"getActiveWebviewEditor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewCommands"},{"name":"getAllMethodNames","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"getAllPropertyNames","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"getAppDataPath","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/paths"},{"name":"getBaseLabel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/labels"},{"name":"getBasenameTerms","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/glob"},{"name":"getBlinkMemoryInfo","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"getBreakpointMessageAndClassName","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/breakpointsView"},{"name":"getCharContainingOffset","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"getCharIndex","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/minimap/minimapCharSheet"},{"name":"getCiphers","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"getCiphers","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tls"},{"name":"getClientArea","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"getCodeActions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeAction"},{"name":"getCodeEditor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorBrowser"},{"name":"getCodeForKeyCode","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/keyboardEvent"},{"name":"getCodeLensData","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codelens/codelens"},{"name":"getColorPresentations","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/colorPicker/color"},{"name":"getColorRegistry","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"getColors","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/colorPicker/color"},{"name":"getComparisonKey","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"getComputedStyle","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"getComputedStyle","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"getConfigurationKeys","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"getConfigurationValue","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"getContentHeight","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"getContentWidth","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"getContext","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/explorerView"},{"name":"getContext","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/callStackView"},{"name":"getContextForContributedActions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/callStackView"},{"name":"getContextMenuActions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"getCorrelationContext","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/applicationinsights"},{"name":"getCPUUsage","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"getCreationTime","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"getCurrentActivationRecord","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/experiments/common/experimentService"},{"name":"getCurrentKeyboardLayout","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/native-keymap/index"},{"name":"getCurves","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"getCwd","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalEnvironment"},{"name":"getDeclarationsAtPosition","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/goToSymbol"},{"name":"getDefaultIgnoredSettings","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"getDefaultSettings","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"http2"},{"name":"getDefaultShell","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalEnvironment"},{"name":"getDefaultShellArgs","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalEnvironment"},{"name":"getDefaultUserDataPath","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/paths"},{"name":"getDefaultValue","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationRegistry"},{"name":"getDefaultValues","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"getDefinitionsAtPosition","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/goToSymbol"},{"name":"getDelayedChannel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc"},{"name":"getDiffieHellman","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"getDisallowedIgnoredSettings","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"getDispatchConfig","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/dispatchConfig"},{"name":"getDocumentFormattingEditsUntilResult","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/format/format"},{"name":"getDocumentRangeFormattingEditsUntilResult","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/format/format"},{"name":"getDocumentSymbols","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/documentSymbols"},{"name":"getDomainsOfRemotes","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tags/electron-browser/workspaceTags"},{"name":"getDomNodePagePosition","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"getDuration","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/performance"},{"name":"getEditOperation","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/browser/testCommand"},{"name":"getEditorPartOptions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editor"},{"name":"getegid","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"getElementsByTagName","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"getEmptyExpression","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/glob"},{"name":"getEnabledCategories","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"trace_events"},{"name":"getEncodedLanguageId","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"getEntries","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/performance"},{"name":"getEntry","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/performance"},{"name":"getEOL","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/jsonFormatter"},{"name":"getErrorMessage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errors"},{"name":"geteuid","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"getExactExpressionStartAndEnd","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugUtils"},{"name":"getExcludes","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"getExpandedBodySize","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/breakpointsView"},{"name":"getExtensionHostDebugSession","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugUtils"},{"name":"getExtensionKind","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionsUtil"},{"name":"getExtensions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewer"},{"name":"getExtraColor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughUtils"},{"name":"getFileNamesMessage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/dialogs/common/dialogs"},{"name":"getFirstFrame","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/console"},{"name":"getGalleryExtensionId","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagementUtil"},{"name":"getGalleryExtensionTelemetryData","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagementUtil"},{"name":"getgid","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"getGraphemeBreakType","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"getgroups","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"getHashedRemotesFromConfig","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tags/electron-browser/workspaceTags"},{"name":"getHashes","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"getHeapCodeStatistics","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"v8"},{"name":"getHeapSnapshot","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"v8"},{"name":"getHeapSpaceStatistics","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"v8"},{"name":"getHeapStatistics","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"v8"},{"name":"getHeapStatistics","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"getHover","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/hover/getHover"},{"name":"getIconClass","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/quickinput/browser/quickInputUtils"},{"name":"getIconClasses","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/getIconClasses"},{"name":"getIconRegistry","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/iconRegistry"},{"name":"getIdAndVersion","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/node/cliProcessMain"},{"name":"getIgnoredSettings","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/settingsMerge"},{"name":"getImplementationsAtPosition","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/goToSymbol"},{"name":"getInstalledExtensions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensionsUtils"},{"name":"getInvalidTypeError","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesValidation"},{"name":"getIOCounters","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"getIssueReporterStyles","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/issue/electron-browser/issueService"},{"name":"getKeyboardLayoutId","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/keymapInfo"},{"name":"getKeyMap","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/native-keymap/index"},{"name":"getLangEnvVariable","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalEnvironment"},{"name":"getLanguages","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"getLargestChildWidth","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"getLastActiveWindow","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/node/window"},{"name":"getLeadingWhitespace","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"getLineEndOffset","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/content"},{"name":"getLineStartOffset","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/content"},{"name":"getLinks","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/links/getLinks"},{"name":"getLocalExtensionTelemetryData","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagementUtil"},{"name":"getLocation","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"getLogLevel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/log"},{"name":"getMac","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/macAddress"},{"name":"getMachineId","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/id"},{"name":"getMachineInfo","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/diagnostics/node/diagnosticsService"},{"name":"getMainProcessParentEnv","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/node/terminalEnvironment"},{"name":"getMaliciousExtensionsSet","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagementUtil"},{"name":"getManifest","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/node/extensionManagementUtil"},{"name":"getMapForWordSeparators","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/wordCharacterClassifier"},{"name":"getMatchedCSSRules","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"getMaxListeners","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"getMaxListeners","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"getMediaMime","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/mime"},{"name":"getMenuBarVisibility","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/common/windows"},{"name":"getMigratedSettingValue","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"getModel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"getModelMarkers","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"getModels","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"getMultiSelectedEditorContexts","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"getMultiSelectedResources","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/files"},{"name":"getNextCodePoint","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"getNextTickChannel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc"},{"name":"getNLines","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"getNLSConfiguration","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/languagePacks"},{"name":"getNodeColor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/intervalTree"},{"name":"getNodeIsInOverviewRuler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/intervalTree"},{"name":"getNodePath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"getNodeType","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"getNodeValue","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"getNonWhitespacePrefix","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/snippets/browser/snippetsService"},{"name":"getOccurrencesAtPosition","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordHighlighter/wordHighlighter"},{"name":"getOnTypeFormattingEdits","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/format/format"},{"name":"getOnTypeRenameRanges","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/rename/onTypeRename"},{"name":"getOpenEditorsViewMultiSelection","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/files"},{"name":"getOrDefault","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/objects"},{"name":"getOrMakeSearchEditorInput","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorInput"},{"name":"getOrSet","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/map"},{"name":"getOuterEditor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"getOutOfWorkspaceEditorResources","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/search"},{"name":"getOutputSimpleEditorOptions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/output/transforms/richTransform"},{"name":"getPackedSettings","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"http2"},{"name":"getParseErrorMessage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/jsonErrorMessages"},{"name":"getPassword","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/keytar/keytar"},{"name":"getPassword","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/keytar/index"},{"name":"getPathFromAmdModule","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/amd"},{"name":"getPathLabel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/labels"},{"name":"getPathTerms","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/glob"},{"name":"getPixelRatio","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"getPlatformTextDecoder","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/stringBuilder"},{"name":"getPriority","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"getProcessCpuUsage","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/windows-process-tree/index"},{"name":"getProcessList","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/windows-process-tree/index"},{"name":"getProcessMemoryInfo","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"getProcessTree","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/windows-process-tree/index"},{"name":"getProxyAgent","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/request/node/proxy"},{"name":"getQuickNavigateHandler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/quickaccess"},{"name":"getRandomElement","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"getRandomEOLSequence","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/model/linesTextBuffer/textBufferAutoTestUtils"},{"name":"getRandomInt","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/model/linesTextBuffer/textBufferAutoTestUtils"},{"name":"getRandomString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/model/linesTextBuffer/textBufferAutoTestUtils"},{"name":"getRandomTestPath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/test/node/testUtils"},{"name":"getRealAndSyntheticDocumentFormattersOrdered","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/format/format"},{"name":"getReferencesAtPosition","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/goToSymbol"},{"name":"getReindentEditOperations","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentation"},{"name":"getRelativeLocation","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/grid/grid"},{"name":"getRemoteAuthority","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteHosts"},{"name":"getRemoteName","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteHosts"},{"name":"getRemotes","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tags/electron-browser/workspaceTags"},{"name":"getResizesObserver","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/sizeObserver"},{"name":"getResource","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher"},{"name":"getResourceForCommand","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/files"},{"name":"getRoot","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/extpath"},{"name":"getSCMResourceContextKey","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/menus"},{"name":"getScopes","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationRegistry"},{"name":"getSearchView","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"getSelection","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"getSelectionKeyboardEvent","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"getSelectionSearchString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"getServers","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"getServiceMachineId","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/serviceMachineId/common/serviceMachineId"},{"name":"getSettingsTargetName","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferences"},{"name":"getShadowRoot","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"getShellEnvironment","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/node/shellEnv"},{"name":"getSimpleCodeEditorWidgetOptions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/simpleEditorOptions"},{"name":"getSimpleEditorOptions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/simpleEditorOptions"},{"name":"getSimpleWorkspaceLabel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/label/common/label"},{"name":"getSingletonServiceDescriptors","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/instantiation/common/extensions"},{"name":"getSnippetSuggestSupport","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggest"},{"name":"getSpaceCnt","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentUtils"},{"name":"getStackFrameThreadAndSessionToFocus","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugService"},{"name":"getStateLabel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"getStdinFilePath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/stdin"},{"name":"getStoredWorkspaceFolder","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"getStringIdentifierForProxy","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/proxyIdentifier"},{"name":"GetStringRegKey","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/vscode-windows-registry/index"},{"name":"getSuggestionComparator","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggest"},{"name":"getSyncResourceFromLocalPreview","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"getSystemMemoryInfo","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"getSystemShell","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/node/terminal"},{"name":"getSystemVersion","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"getTemplates","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskTemplates"},{"name":"getTerminalShellConfiguration","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalConfiguration"},{"name":"getThemeTypeSelector","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/themeService"},{"name":"getTimeSinceLastZoomLevelChanged","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"getTitleBarStyle","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/common/windows"},{"name":"getTokenClassificationRegistry","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry"},{"name":"getTopLeftOffset","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"getTotalHeight","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"getTotalScrollWidth","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"getTotalWidth","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"getTypeDefinitionsAtPosition","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/goToSymbol"},{"name":"getuid","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"getUnpackedSettings","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"http2"},{"name":"getUri","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/test/browser/queryBuilder.test"},{"name":"getUriFromAmdModule","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/amd"},{"name":"getUriFromSource","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugSource"},{"name":"getUserDataSyncStore","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"getVisbileViewContextKey","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/views"},{"name":"getVisibleAndSorted","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugUtils"},{"name":"getVisibleState","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/indexTreeModel"},{"name":"getWebviewContentMimeType","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/common/mimeTypes"},{"name":"getWellFormedFileName","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"getWindowsBuildNumber","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/node/terminal"},{"name":"getWindowsShell","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/processes"},{"name":"getWindowsStateStoreData","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/electron-main/windowsStateStorage"},{"name":"getWordAtText","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/wordHelper"},{"name":"getWordDefinitionFor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDocumentData"},{"name":"getWorkerBootstrapUrl","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/worker/defaultWorkerFactory"},{"name":"getWorkspaceIdentifier","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/workspaces/browser/workspaces"},{"name":"getWorkspaceIdentifier","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/electron-main/workspacesMainService"},{"name":"getWorkspaceIdentifier","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/test/electron-browser/configurationService.test"},{"name":"getWorkspaceSymbols","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/search"},{"name":"getXtermLineContent","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalLinkHelpers"},{"name":"getZoomFactor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"getZoomLevel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"global","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"GLOBAL_ACTIVITY_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/activity"},{"name":"GlobalActivityActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/activitybar/activitybarActions"},{"name":"globalAgent","kind":"let","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"http"},{"name":"globalAgent","kind":"let","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"https"},{"name":"GlobalCompareResourcesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"GlobalEditorMouseMoveMonitor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorDom"},{"name":"GlobalExtensionEnablementService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionEnablementService"},{"name":"globalGlob","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/test/browser/queryBuilder.test"},{"name":"GlobalMouseMoveMonitor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/globalMouseMoveMonitor"},{"name":"GlobalNewUntitledFileAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"GlobalRemoveRootFolderAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/workspaceActions"},{"name":"globals","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"globalShortcut","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"GlobalStateSynchroniser","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/globalStateSync"},{"name":"GlobalStorageDatabaseChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/storage/node/storageIpc"},{"name":"GlobalStorageDatabaseChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/storage/node/storageIpc"},{"name":"GlobalStyleSheet","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/services/codeEditorServiceImpl"},{"name":"globalThis","kind":"module","kindModifiers":"","sortText":"4"},{"name":"GlobPattern","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"GlyphHoverWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/hover/hoverWidgets"},{"name":"GlyphMarginOverlay","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/glyphMargin/glyphMargin"},{"name":"GOTO_NEXT_CHANGE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"GOTO_PREVIOUS_CHANGE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"GotoDefinitionAtPositionEditorContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition"},{"name":"GotoLineAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoLineQuickAccess"},{"name":"GotoLineAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess"},{"name":"GotoLineAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/quickAccess/standaloneGotoSymbolQuickAccess"},{"name":"GotoLineAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/quickAccess/standaloneCommandsQuickAccess"},{"name":"GoToLineNLS","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standaloneStrings"},{"name":"GotoLineQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoLineQuickAccess"},{"name":"GotoSymbolAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess"},{"name":"GotoSymbolQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess"},{"name":"gracefulify","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/graceful-fs/index"},{"name":"grammarsExtPoint","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textMate/common/TMGrammars"},{"name":"Graph","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/instantiation/common/graph"},{"name":"GraphemeBreakType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"Grid","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/grid/grid"},{"name":"GridView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/grid/gridview"},{"name":"GridViewSizing","kind":"alias","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/grid/grid"},{"name":"group","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"groupBy","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"groupBy","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/collections"},{"name":"groupByExtension","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagementUtil"},{"name":"GroupChangeKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/common/editorGroupsService"},{"name":"groupCollapsed","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"GroupDirection","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/common/editorGroupsService"},{"name":"groupEnd","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"groupIntersect","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/rangeMap"},{"name":"GroupLocation","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/common/editorGroupsService"},{"name":"GroupOrientation","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/common/editorGroupsService"},{"name":"GroupsArrangement","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/common/editorGroupsService"},{"name":"GroupsOrder","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/common/editorGroupsService"},{"name":"GroupType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"gt","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"gte","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"gtr","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"guessIndentation","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/indentationGuesser"},{"name":"guessMimeTypes","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/mime"},{"name":"gunzip","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"gunzipSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"gzip","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"gzipSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"handleANSIOutput","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/output/transforms/errorTransform"},{"name":"handleANSIOutput","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugANSIHandling"},{"name":"Handler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/editorCommon"},{"name":"handleVetos","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/lifecycle/common/lifecycle"},{"name":"hang","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"hasChildProcesses","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/node/terminals"},{"name":"hasClass","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"hasFileFolderCopyCapability","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"hasFileReadStreamCapability","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"hash","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/hash"},{"name":"Hash","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"HashChangeEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Hasher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/hash"},{"name":"hashPath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/backup/node/backupFileService"},{"name":"hasOpenReadWriteCloseCapability","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"hasParentWithClass","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"hasReadWriteCapability","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"HasSearchResults","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"hasSiblingFn","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/glob"},{"name":"hasSiblingPromiseFn","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/glob"},{"name":"hasStdinWithoutTty","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/stdin"},{"name":"hasTextDecoder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/stringBuilder"},{"name":"hasToIgnoreCase","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"hasTrailingPathSeparator","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"hasUncaughtExceptionCaptureCallback","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"hasWorkspaceFileExtension","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"hc_black","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/themes"},{"name":"HC_THEME_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/workbenchThemeService"},{"name":"Headers","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HelpQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/quickinput/browser/helpQuickAccess"},{"name":"HiddenAreasRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesRenderers"},{"name":"HiddenRangeModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/hiddenRangeModel"},{"name":"hide","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"HIDE_NOTIFICATION_TOAST","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"HIDE_NOTIFICATIONS_CENTER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"HideNotificationsCenterAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsActions"},{"name":"HideWebViewEditorFindCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewCommands"},{"name":"HideWelcomeOverlayAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/overlay/browser/welcomeOverlay"},{"name":"HIGH_CONTRAST","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/themeService"},{"name":"HighlightedLabel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/highlightedlabel/highlightedLabel"},{"name":"HighlightMatchesRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesRenderers"},{"name":"history","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"History","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HistoryInputBox","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/inputbox/inputBox"},{"name":"HistoryNavigationEnablementContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/browser/contextScopedHistoryWidget"},{"name":"HistoryNavigationWidgetContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/browser/contextScopedHistoryWidget"},{"name":"HistoryNavigator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/history"},{"name":"HistoryService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/history/browser/history"},{"name":"HitTestContext","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/mouseTarget"},{"name":"HIVES","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"HKCC","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"HKCR","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"HKCU","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"HKLM","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"HKU","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"Hmac","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"homedir","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"HorizontalPosition","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/renderingContext"},{"name":"HorizontalRange","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/renderingContext"},{"name":"HorizontalScrollbar","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/scrollbar/horizontalScrollbar"},{"name":"horizontalScrollingKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"HostExtension","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostExtensionActivator"},{"name":"hostname","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"HotExitConfiguration","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"Hover","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"Hover","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"Hover","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"HoverOperation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/hover/hoverOperation"},{"name":"HoverProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"HoverStartMode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/hover/hoverOperation"},{"name":"hrtime","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"HSLA","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/color"},{"name":"HSVA","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/color"},{"name":"HTMLAllCollection","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLAnchorElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLAppletElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLAreaElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLAudioElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLBaseElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLBaseFontElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLBodyElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLBRElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLButtonElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLCanvasElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLCollection","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLDataElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLDataListElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLDetailsElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLDialogElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLDirectoryElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLDivElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLDListElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLDocument","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLEmbedElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLFieldSetElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLFontElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLFormControlsCollection","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLFormElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLFrameElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLFrameSetElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLHeadElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLHeadingElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLHRElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLHtmlElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLIFrameElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLImageElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLInputElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLLabelElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLLegendElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLLIElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLLinkElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLMapElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLMarqueeElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLMediaElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLMenuElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLMetaElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLMeterElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLModElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLObjectElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLOListElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLOptGroupElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLOptionElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLOptionsCollection","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLOutputElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLParagraphElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLParamElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLPictureElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLPreElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLProgressElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLQuoteElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLScriptElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLSelectElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLSlotElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLSourceElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLSpanElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLStyleElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLTableCaptionElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLTableCellElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLTableColElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLTableDataCellElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLTableElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLTableHeaderCellElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLTableRowElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLTableSectionElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLTemplateElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLTextAreaElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLTimeElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLTitleElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLTrackElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLUListElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLUnknownElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"HTMLVideoElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Http2ServerRequest","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"http2"},{"name":"Http2ServerResponse","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"http2"},{"name":"HttpProxyAgent","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/http-proxy-agent/index"},{"name":"IAccessibilityService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/accessibility/common/accessibility"},{"name":"IActivityBarService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/activityBar/browser/activityBarService"},{"name":"IActivityService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/activity/common/activity"},{"name":"IAuthenticationService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/authentication/browser/authenticationService"},{"name":"IUserDataSyncAccountService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSyncAccount"},{"name":"IBackupFileService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/backup/common/backup"},{"name":"IBackupMainService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/backup/electron-main/backup"},{"name":"IBreadcrumbsService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/breadcrumbs"},{"name":"IBulkEditService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/services/bulkEditService"},{"name":"ICACLS_PATH","kind":"property","kindModifiers":"private,static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Sender"},{"name":"IClipboardService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/clipboard/common/clipboardService"},{"name":"ICodeEditorService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/services/codeEditorService"},{"name":"ICodeLensCache","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codelens/codeLensCache"},{"name":"ICommandService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/commands/common/commands"},{"name":"ICommentService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentService"},{"name":"IconBadge","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/activity/common/activity"},{"name":"IConfigurationResolverService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configurationResolver/common/configurationResolver"},{"name":"IConfigurationService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"iconForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"IconLabel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/iconLabel/iconLabel"},{"name":"iconsSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/iconRegistry"},{"name":"IContextKeyService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"IContextMenuService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextview/browser/contextView"},{"name":"IContextViewService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextview/browser/contextView"},{"name":"ICredentialsService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/credentials/common/credentials"},{"name":"ICredentialsService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/credentials/common/credentials"},{"name":"ICustomEditorService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/customEditor/common/customEditor"},{"name":"ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentsEditorContribution"},{"name":"ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/driver/common/driver"},{"name":"ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/diagnostics/node/diagnosticsService"},{"name":"ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/launch/electron-main/launchMainService"},{"name":"ID_EDITOR_WORKER_SERVICE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/editorWorkerService"},{"name":"ID_INDENT_PROVIDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/indentRangeProvider"},{"name":"ID_INIT_PROVIDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/intializingRangeProvider"},{"name":"ID_SYNTAX_PROVIDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/syntaxRangeProvider"},{"name":"IDBCursor","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IDBCursorWithValue","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IDBDatabase","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IDBFactory","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IDBIndex","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IDBKeyRange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IDBObjectStore","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IDBOpenDBRequest","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IDBRequest","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IDBTransaction","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IDBVersionChangeEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IDebugHelperService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"IDebugService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"IDecorationsService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/decorations/browser/decorations"},{"name":"IdentityCoordinatesConverter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/splitLinesCollection"},{"name":"IdentityLinesCollection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/splitLinesCollection"},{"name":"IdentityProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesTree"},{"name":"IdentityProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree"},{"name":"IdGenerator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/idGenerator"},{"name":"IDiagnosticsService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/diagnostics/node/diagnosticsService"},{"name":"IDialogMainService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/dialogs/electron-main/dialogs"},{"name":"IDialogService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/dialogs/common/dialogs"},{"name":"IdleValue","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"IdObject","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHost.protocol"},{"name":"IDownloadService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/download/common/download"},{"name":"idPattern","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry"},{"name":"IDriver","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/driver/common/driver"},{"name":"IEditorGroupsService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/common/editorGroupsService"},{"name":"IEditorProgressService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/progress/common/progress"},{"name":"IEditorService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/common/editorService"},{"name":"IEditorWorkerService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/editorWorkerService"},{"name":"IElectronMainService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/electron/electron-main/electronMainService"},{"name":"IElectronService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/electron/node/electron"},{"name":"IEnvironmentService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/common/environment"},{"name":"IEnvironmentVariableService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariable"},{"name":"IExperimentService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/experiments/common/experimentService"},{"name":"IExplorerService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"IExtensionGalleryService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"IExtensionHostDebugService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/debug/common/extensionHostDebug"},{"name":"IExtensionHostProfileService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor"},{"name":"IExtensionManagementServerService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagement"},{"name":"IExtensionManagementService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"IExtensionRecommendationsService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagement"},{"name":"IExtensionResourceLoaderService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensionResourceLoader/common/extensionResourceLoader"},{"name":"IExtensionService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensions"},{"name":"IExtensionStoragePaths","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostStoragePaths"},{"name":"IExtensionsWorkbenchService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensions"},{"name":"IExtensionTipsService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"IExtensionUrlHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/browser/extensionUrlHandler"},{"name":"IExternalTerminalService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/externalTerminal/common/externalTerminal"},{"name":"IExtHostApiDeprecationService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostApiDeprecationService"},{"name":"IExtHostCommands","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostCommands"},{"name":"IExtHostConfiguration","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostConfiguration"},{"name":"IExtHostDebugService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDebugService"},{"name":"IExtHostDecorations","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDecorations"},{"name":"IExtHostDocumentsAndEditors","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDocumentsAndEditors"},{"name":"IExtHostExtensionService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostExtensionService"},{"name":"IExtHostInitDataService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostInitDataService"},{"name":"IExtHostOutputService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostOutput"},{"name":"IExtHostRpcService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostRpcService"},{"name":"IExtHostSearch","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostSearch"},{"name":"IExtHostStorage","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostStorage"},{"name":"IExtHostTask","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTask"},{"name":"IExtHostTerminalService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTerminalService"},{"name":"IExtHostTimeline","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTimeline"},{"name":"IExtHostTunnelService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTunnelService"},{"name":"IExtHostWorkspace","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostWorkspace"},{"name":"if","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"ifError","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"IFileDialogService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/dialogs/common/dialogs"},{"name":"IFilesConfigurationService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/filesConfiguration/common/filesConfigurationService"},{"name":"IFileService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"IframeUtils","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/iframe"},{"name":"IFrameWebview","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewElement"},{"name":"IGlobalExtensionEnablementService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"ignoreBracketsInToken","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports"},{"name":"ignoreErrors","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"IgnoreExtensionRecommendationAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"IHistoryService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/history/common/history"},{"name":"IHostService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/host/browser/host"},{"name":"IHostUtils","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostExtensionService"},{"name":"IInstantiationService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/instantiation/common/instantiation"},{"name":"IIntegrityService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/integrity/common/integrity"},{"name":"IIRFilterNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IIssueService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/issue/node/issue"},{"name":"IJSONEditingService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/jsonEditing"},{"name":"IKeybindingEditingService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/keybindingEditing"},{"name":"IKeybindingService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/keybinding/common/keybinding"},{"name":"IKeymapService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/keymapInfo"},{"name":"ILabelService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/label/common/label"},{"name":"ILaunchMainService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/launch/electron-main/launchMainService"},{"name":"ILayoutService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/layout/browser/layoutService"},{"name":"ILifecycleMainService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/lifecycle/electron-main/lifecycleMainService"},{"name":"ILifecycleService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/lifecycle/common/lifecycle"},{"name":"IListService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"illegalArgument","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errors"},{"name":"illegalState","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errors"},{"name":"ILocalizationsService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/localizations/common/localizations"},{"name":"ILoggerService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/log"},{"name":"ILogService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/log"},{"name":"Image","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IMAGE_PREVIEW_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"ImageBitmap","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ImageBitmapRenderingContext","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ImageData","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IMainProcessService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/ipc/electron-browser/mainProcessService"},{"name":"IMarkerData","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/markers/common/markers"},{"name":"IMarkerDecorationsService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/markersDecorationService"},{"name":"IMarkerService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/markers/common/markers"},{"name":"IMarkersWorkbenchService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markers"},{"name":"IMenubarService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/menubar/node/menubar"},{"name":"IMenuService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/common/actions"},{"name":"ImmortalReference","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/lifecycle"},{"name":"IMMUTABLE_CODE_TO_KEY_CODE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/scanCode"},{"name":"IMMUTABLE_KEY_CODE_TO_CODE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/scanCode"},{"name":"IModelService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/modelService"},{"name":"IModeService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/modeService"},{"name":"impactsEditorPartOptions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editor"},{"name":"ImplementationProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"implements","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"import","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"importEntries","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/performance"},{"name":"importScripts","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"in","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"inAppPurchase","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"inc","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"IncomingMessage","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"http"},{"name":"IncomingMessage","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"IncreaseSearchEditorContextLinesCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"IncreaseViewSizeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"incrementFileName","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"IndentAction","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"IndentAction","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/languageConfiguration"},{"name":"IndentAction","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"IndentationToSpacesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentation"},{"name":"IndentationToSpacesCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentation"},{"name":"IndentationToTabsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentation"},{"name":"IndentationToTabsCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentation"},{"name":"IndentConsts","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/indentRules"},{"name":"IndentGuidesOverlay","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/indentGuides/indentGuides"},{"name":"IndentLinesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"IndentRangeProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/indentRangeProvider"},{"name":"IndentRulesSupport","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/indentRules"},{"name":"IndentUsingSpaces","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentation"},{"name":"IndentUsingTabs","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentation"},{"name":"index","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"indexedDB","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"INDEXEDDB_LOGS_OBJECT_STORE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/log/browser/indexedDBLogProvider"},{"name":"INDEXEDDB_VSCODE_DB","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/log/browser/indexedDBLogProvider"},{"name":"IndexedDBLogProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/log/browser/indexedDBLogProvider"},{"name":"indexOfPath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/extpath"},{"name":"IndexTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/indexTree"},{"name":"IndexTreeModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/indexTreeModel"},{"name":"InEditorZenModeContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"Infinity","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"inflate","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"inflateRaw","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"inflateRawSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"inflateSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"info","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"Information","kind":"enum member","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/SeverityLevel"},{"name":"inherits","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"INITIAL","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-textmate/release/main"},{"name":"initialize","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/editor.worker"},{"name":"InitializingRangeProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/intializingRangeProvider"},{"name":"InlineDecoration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/viewModel"},{"name":"InlineDecorationType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/viewModel"},{"name":"InlineDiffMargin","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/widget/inlineDiffMargin"},{"name":"InMemoryBackupFileService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/backup/common/backupFileService"},{"name":"InMemoryFileSystemProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/inMemoryFilesystemProvider"},{"name":"InMemoryLogProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/log/common/inMemoryLogProvider"},{"name":"InMemoryStorageDatabase","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/storage/common/storage"},{"name":"InMemoryStorageService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/storage/common/storage"},{"name":"InMemoryTask","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"innerHeight","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"innerWidth","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"INotebookService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookService"},{"name":"INotificationService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/notification/common/notification"},{"name":"InPlaceReplaceCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/inPlaceReplace/inPlaceReplaceCommand"},{"name":"inputActiveOptionBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"inputActiveOptionBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"inputBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"inputBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"InputBox","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/inputbox/inputBox"},{"name":"InputBoxFocusedKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"InputDeviceInfo","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"InputEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"InputFocusedContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkeys"},{"name":"InputFocusedContextKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkeys"},{"name":"inputForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"inputPlaceholderForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"inputsSchema","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configurationResolver/common/configurationResolverSchema"},{"name":"inputValidationErrorBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"inputValidationErrorBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"inputValidationErrorForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"inputValidationInfoBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"inputValidationInfoBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"inputValidationInfoForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"InputValidationType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/common/scm"},{"name":"inputValidationWarningBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"inputValidationWarningBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"inputValidationWarningForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"inQuickPickContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/quickaccess"},{"name":"InQuickPickContextKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/quickaccess"},{"name":"inQuickPickContextKeyValue","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/quickaccess"},{"name":"inRecentFilesPickerContextKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/windowActions"},{"name":"insane","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/insane/insane"},{"name":"InSearchEditor","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"insert","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"InsertCellEdit","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/cellEdit"},{"name":"InsertCodeCellAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookActions"},{"name":"InsertCursorAbove","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/multicursor/multicursor"},{"name":"InsertCursorBelow","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/multicursor/multicursor"},{"name":"InsertLineAfterAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"InsertLineBeforeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"InsertMarkdownCellAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookActions"},{"name":"inspect","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"INSPECT_MAX_BYTES","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"buffer"},{"name":"InspectTokensNLS","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standaloneStrings"},{"name":"INSTALL_ERROR_INCOMPATIBLE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"INSTALL_ERROR_MALICIOUS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"INSTALL_ERROR_NOT_SUPPORTED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"InstallAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"InstallAnotherVersionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"InstallCountWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets"},{"name":"InstallExtensionQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsQuickAccess"},{"name":"InstallExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"InstallInOtherServerAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"InstallLocalExtensionsInRemoteAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"InstallOperation","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"InstallRecommendedExtensionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"InstallSpecificVersionOfExtensionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"InstallVSIXAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"InstallWorkspaceRecommendedExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"instanceof","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"instanceStorageKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetry"},{"name":"InstantiationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/instantiation/common/instantiationService"},{"name":"Int16Array","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Int32Array","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Int8Array","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IntegrityServiceImpl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/integrity/node/integrityService"},{"name":"interface","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"Interface","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"readline"},{"name":"INTERNAL_CONSOLE_OPTIONS_SCHEMA","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"InternalEditorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/editorAction"},{"name":"InternalModelContentChangeEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelEvents"},{"name":"IntersectionObserver","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"IntersectionObserverEntry","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"intersects","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"intervalCompare","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/intervalTree"},{"name":"IntervalNode","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/intervalTree"},{"name":"IntervalTimer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"IntervalTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/intervalTree"},{"name":"Intl","kind":"module","kindModifiers":"declare","sortText":"4"},{"name":"IOpenerService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/opener/common/opener"},{"name":"IOutputChannelModelService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/output/common/outputChannelModel"},{"name":"IOutputService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/output"},{"name":"IPadShowKeyboard","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard"},{"name":"IPanelService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/panel/common/panelService"},{"name":"IPathService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/path/common/pathService"},{"name":"IPCClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc"},{"name":"ipcMain","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"ipcRenderer","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"IPCServer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc"},{"name":"IPeekViewService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"IPreferencesSearchService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"IPreferencesService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferences"},{"name":"IProductService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/product/common/productService"},{"name":"IProgressService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/progress/common/progress"},{"name":"IQuickInputService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/quickinput/common/quickInput"},{"name":"IRemoteAgentService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/common/remoteAgentService"},{"name":"IRemoteAuthorityResolverService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAuthorityResolver"},{"name":"IRemoteExplorerService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/common/remoteExplorerService"},{"name":"IReplaceService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/replace"},{"name":"IRequestService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/request/common/request"},{"name":"IResourceIdentityService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/resource/common/resourceIdentityService"},{"name":"IS_WORKSPACE_SHELL_ALLOWED_STORAGE_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"isAbsolute","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"path"},{"name":"isAbsolute","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"isAbsolutePath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"isActive","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/windows-mutex/index"},{"name":"isAncestor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"isArray","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"isArray","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"isatty","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tty"},{"name":"isBasicASCII","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"isBoolean","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"isBoolean","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"isBuffer","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"IsCenteredLayoutContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"isChrome","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"ISCMService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/common/scm"},{"name":"isCodeEditor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorBrowser"},{"name":"isCompositeEditor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorBrowser"},{"name":"isCompressedFolderName","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/explorerViewer"},{"name":"isConfigurationOverrides","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"isContext","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"vm"},{"name":"isDate","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"isDebuggerMainContribution","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugUtils"},{"name":"isDecorationOptionsArr","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"isDeepStrictEqual","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"IsDevelopmentContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkeys"},{"name":"isDiffEditor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorBrowser"},{"name":"isDiffEditorConfigurationKey","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/commonEditorConfig"},{"name":"isDirtyDiffVisible","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"isDisposable","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/lifecycle"},{"name":"ISearchHistoryService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/searchHistoryService"},{"name":"ISearchService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"ISearchWorkbenchService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/searchModel"},{"name":"isEdge","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"isEdgeWebView","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"isEditorConfigurationKey","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/commonEditorConfig"},{"name":"isEditorInputWithOptions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"isElevated","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/native-is-elevated/index"},{"name":"isEmojiImprecise","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"isEmptyMarkdownString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/htmlContent"},{"name":"isEmptyObject","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"isEngineValid","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensions/common/extensionValidator"},{"name":"isEOL","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/jsonFormatter"},{"name":"isEqual","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/extpath"},{"name":"isEqual","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"isEqualAuthority","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"isEqualOrParent","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/extpath"},{"name":"isEqualOrParent","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"isError","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"isErrorWithActions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errorsWithActions"},{"name":"isExcludeSetting","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTreeModels"},{"name":"isFalsyOrEmpty","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"isFalsyOrWhitespace","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"isFileMatch","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"isFilePatternMatch","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"isFileToOpen","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/common/windows"},{"name":"isFilterResult","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/indexTreeModel"},{"name":"isFinite","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"isFirefox","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"isFolderToOpen","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/common/windows"},{"name":"isFullscreen","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"IsFullscreenContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/contextkeys"},{"name":"isFullWidthCharacter","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"isFunction","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"isFunction","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"isFuzzyAction","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchCommon"},{"name":"isFuzzyActionArr","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchCommon"},{"name":"isGridBranchNode","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/grid/gridview"},{"name":"isGridBranchNode","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/grid/grid"},{"name":"ISharedProcessMainService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/ipc/electron-main/sharedProcessMainService"},{"name":"ISharedProcessService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/ipc/electron-browser/sharedProcessService"},{"name":"isHighSurrogate","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"isHTMLElement","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"isIAction","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchCommon"},{"name":"isIExtensionIdentifier","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensions/common/extensions"},{"name":"isIExtensionIdentifier","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"ISignService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/sign/common/sign"},{"name":"isIMenuItem","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/common/actions"},{"name":"isInDOM","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"isInShadowDOM","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"isIOS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"isIP","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"net"},{"name":"isIPad","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"isIPv4","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"net"},{"name":"isIPv6","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"net"},{"name":"isISOKeyboard","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/native-keymap/index"},{"name":"isISubmenuItem","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/common/actions"},{"name":"isKeymapExtension","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensionsUtils"},{"name":"isLanguagePackExtension","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensions/common/extensions"},{"name":"isLinux","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"IsLinuxContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkeys"},{"name":"isLittleEndian","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"isLocationLink","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"isLowerAsciiLetter","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"isLowSurrogate","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"IsMacContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkeys"},{"name":"isMacintosh","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"IsMacNativeContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkeys"},{"name":"isMainFrame","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"isMainThread","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"worker_threads"},{"name":"isMarkdownString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/htmlContent"},{"name":"isMaster","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"isMenubarMenuItemAction","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/menubar/node/menubar"},{"name":"isMenubarMenuItemSeparator","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/menubar/node/menubar"},{"name":"isMenubarMenuItemSubmenu","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/menubar/node/menubar"},{"name":"isMenubarMenuItemUriAction","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/menubar/node/menubar"},{"name":"isMessageOfType","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionHostProtocol"},{"name":"isMultilineRegexSource","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelSearch"},{"name":"isNamedProblemMatcher","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher"},{"name":"isNaN","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"isNative","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"ISnippetsService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/snippets/browser/snippets.contribution"},{"name":"isNonEmptyArray","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"isNotificationViewItem","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/notifications"},{"name":"isNull","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"isNullOrUndefined","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"isNullRange","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesModels"},{"name":"isNumber","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"isNumber","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"isObject","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"isObject","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"isOpera","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"isParent","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"isPathSeparator","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/extpath"},{"name":"isPatternInWord","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"isPrimitive","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"isProgressMessage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"isPromiseCanceledError","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errors"},{"name":"isQuote","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorCommon"},{"name":"isRawFileWorkspaceFolder","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"isRawUriWorkspaceFolder","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"isReadableStream","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/stream"},{"name":"isRecentFile","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"isRecentFolder","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"isRecentWorkspace","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"isRegExp","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"isRelativePattern","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/glob"},{"name":"isRemoteConsoleLog","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/console"},{"name":"isRemoteDiagnosticError","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/diagnostics/common/diagnostics"},{"name":"isRootOrDriveLetter","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/extpath"},{"name":"isRootUser","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"isSafari","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"isSCMRepository","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/util"},{"name":"isSCMResource","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/util"},{"name":"isSCMResourceGroup","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/util"},{"name":"isSearchViewFocused","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"isSecureContext","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"isSelectionRangeChangeEvent","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/listWidget"},{"name":"isSelectionSingleChangeEvent","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/listWidget"},{"name":"isSemanticColoringEnabled","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/modelServiceImpl"},{"name":"isSerializedEditorGroup","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor/editorGroup"},{"name":"isSerializedFileMatch","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"isSerializedSearchComplete","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"isSerializedSearchSuccess","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"isSessionAttach","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugUtils"},{"name":"isShadowRoot","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"isSingleFolderWorkspaceIdentifier","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"isSingleFolderWorkspaceInitializationPayload","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"isStandalone","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"isStatusbarInDebugMode","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/statusbarColorProvider"},{"name":"isStoredWorkspaceFolder","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"isString","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"isString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"isString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchCommon"},{"name":"isStringArray","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"isSuccess","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/request/common/request"},{"name":"IssueMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/issue/electron-main/issueMainService"},{"name":"IssueReporter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-browser/issue/issueReporterMain"},{"name":"IssueReporterModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-browser/issue/issueReporterModel"},{"name":"issueReporterPage","kind":"property","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-browser/issue/issueReporterPage"},{"name":"IssueService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/issue/electron-browser/issueService"},{"name":"IssueType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/issue/node/issue"},{"name":"isSymbol","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"IStandaloneThemeService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/standaloneThemeService"},{"name":"IStateService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/state/node/state"},{"name":"IStaticExtensionsService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/staticExtensions"},{"name":"IStatusbarService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/statusbar/common/statusbar"},{"name":"isTextEditorPane","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"isThemeColor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/editorCommon"},{"name":"isThenable","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"IStorageKeysSyncRegistryService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/storageKeys"},{"name":"IStorageMainService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/storage/node/storageMainService"},{"name":"IStorageService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/storage/common/storage"},{"name":"ISuggestDataDtoField","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHost.protocol"},{"name":"ISuggestMemoryService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestMemory"},{"name":"ISuggestResultDtoField","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHost.protocol"},{"name":"isUNC","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/extpath"},{"name":"isUndefined","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"isUndefined","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"isUndefinedOrNull","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"isUnspecific","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/mime"},{"name":"isUntitledWorkspace","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"isUpper","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"isUpperAsciiLetter","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"isUri","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugUtils"},{"name":"isURLDomainTrusted","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/url/common/trustedDomainsValidator"},{"name":"isUTFEncoding","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"isUUID","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/uuid"},{"name":"isValidBasename","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/extpath"},{"name":"isValidExtensionVersion","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensions/common/extensionValidator"},{"name":"isValidLocalization","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/localizations/common/localizations"},{"name":"isValidMatch","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelSearch"},{"name":"isValidVersion","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensions/common/extensionValidator"},{"name":"isValidVersionStr","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensions/common/extensionValidator"},{"name":"isVersionValid","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensions/common/extensionValidator"},{"name":"isWeb","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"IsWebContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkeys"},{"name":"isWebKit","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"isWebkitWebView","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"isWindows","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"IsWindowsContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkeys"},{"name":"isWindowsDriveLetter","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/extpath"},{"name":"isWorker","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"isWorkspaceBackupInfo","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/backup/electron-main/backup"},{"name":"isWorkspaceFolder","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/browser/taskQuickPick"},{"name":"isWorkspaceIdentifier","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"isWorkspaceToOpen","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/common/windows"},{"name":"ISymbolNavigationService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/symbolNavigation"},{"name":"it","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ITaskService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskService"},{"name":"ITelemetryService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetry"},{"name":"ItemActivation","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/quickinput/common/quickInput"},{"name":"Iterable","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/iterator"},{"name":"ITerminalInstanceService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminal"},{"name":"ITerminalNativeService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"ITerminalService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminal"},{"name":"ITextFileService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/common/textfiles"},{"name":"ITextMateService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textMate/common/textMateService"},{"name":"ITextModelService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/resolverService"},{"name":"ITextResourceConfigurationService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/textResourceConfigurationService"},{"name":"ITextResourcePropertiesService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/textResourceConfigurationService"},{"name":"IThemeMainService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/electron-main/themeMainService"},{"name":"IThemeService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/themeService"},{"name":"ITimelineService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/timeline/common/timeline"},{"name":"ITimerService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/timer/electron-browser/timerService"},{"name":"ITitleService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/title/common/titleService"},{"name":"ITunnelService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/tunnel"},{"name":"IUndoRedoService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/undoRedo/common/undoRedo"},{"name":"IUntitledTextEditorService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorService"},{"name":"IUpdateService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/update/common/update"},{"name":"IURITransformerService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostUriTransformerService"},{"name":"IURLService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/url/common/url"},{"name":"IUserDataAutoSyncService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"IUserDataSyncBackupStoreService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"IUserDataSyncEnablementService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"IUserDataSyncLogService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"IUserDataSyncService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"IUserDataSyncStoreService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"IUserDataSyncUtilService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"IViewDescriptorService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/views"},{"name":"IViewletService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/viewlet/browser/viewlet"},{"name":"IViewsService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/views"},{"name":"IWebIssueService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/issue/browser/issueService"},{"name":"IWebviewService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webview"},{"name":"IWebviewWorkbenchService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewWorkbenchService"},{"name":"IWindowsMainService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/electron-main/windows"},{"name":"IWorkbenchEnvironmentService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/environment/common/environmentService"},{"name":"IWorkbenchExtensionEnablementService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagement"},{"name":"IWorkbenchIssueService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/issue/electron-browser/issue"},{"name":"IWorkbenchLayoutService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/layout/browser/layoutService"},{"name":"IWorkbenchThemeService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/workbenchThemeService"},{"name":"IWorkingCopyFileService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/workingCopy/common/workingCopyFileService"},{"name":"IWorkingCopyService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/workingCopy/common/workingCopyService"},{"name":"IWorkspace","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspace/common/workspace"},{"name":"IWorkspaceContextService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspace/common/workspace"},{"name":"IWorkspaceEditingService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/workspaces/common/workspaceEditing"},{"name":"IWorkspaceFolder","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspace/common/workspace"},{"name":"IWorkspacesHistoryMainService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/electron-main/workspacesHistoryMainService"},{"name":"IWorkspacesMainService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/electron-main/workspacesMainService"},{"name":"IWorkspacesService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"IWorkspaceTagsService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tags/common/workspaceTags"},{"name":"javascriptOnEnterRules","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/modes/supports/javascriptOnEnterRules"},{"name":"join","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"path"},{"name":"join","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"join","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"JoinAllGroupsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"JoinLinesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"joinPath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"JoinTwoGroupsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"JSON","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"JSONEditingError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/jsonEditing"},{"name":"JSONEditingErrorCode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/jsonEditing"},{"name":"JSONEditingService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/jsonEditingService"},{"name":"JsonSchemaVersion","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"JsonSchemaVersion","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskConfiguration"},{"name":"JSONValidationExtensionPoint","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/jsonValidationExtensionPoint"},{"name":"JUMP_TO_CURSOR_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"KEEP_EDITOR_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"KEYBINDING_CONTEXT_NOTEBOOK_FIND_WIDGET_FOCUSED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookBrowser"},{"name":"KEYBINDING_CONTEXT_TERMINAL_A11Y_TREE_FOCUS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_FOCUSED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_INPUT_FOCUSED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_INPUT_NOT_FOCUSED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_NOT_VISIBLE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"KEYBINDING_CONTEXT_TERMINAL_FIND_WIDGET_VISIBLE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"KEYBINDING_CONTEXT_TERMINAL_FOCUS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"KEYBINDING_CONTEXT_TERMINAL_IS_OPEN","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"KEYBINDING_CONTEXT_TERMINAL_NOT_FOCUSED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"KEYBINDING_CONTEXT_TERMINAL_SHELL_TYPE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"KEYBINDING_CONTEXT_TERMINAL_SHELL_TYPE_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"KEYBINDING_CONTEXT_TERMINAL_TEXT_NOT_SELECTED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"KEYBINDING_CONTEXT_TERMINAL_TEXT_SELECTED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_FOCUSED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webview"},{"name":"KEYBINDING_CONTEXT_WEBVIEW_FIND_WIDGET_VISIBLE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webview"},{"name":"KEYBINDING_ENTRY_TEMPLATE_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/keybindingsEditorModel"},{"name":"KeybindingEditorDecorationsRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/keybindingsEditorContribution"},{"name":"KeybindingIO","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/keybindingIO"},{"name":"KeybindingLabel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/keybindingLabel/keybindingLabel"},{"name":"KeybindingParser","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keybindingParser"},{"name":"KeybindingResolver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/keybinding/common/keybindingResolver"},{"name":"KEYBINDINGS_EDITOR_CLEAR_INPUT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KEYBINDINGS_EDITOR_COMMAND_CLEAR_SEARCH_RESULTS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KEYBINDINGS_EDITOR_COMMAND_COPY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KEYBINDINGS_EDITOR_COMMAND_COPY_COMMAND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KEYBINDINGS_EDITOR_COMMAND_DEFINE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KEYBINDINGS_EDITOR_COMMAND_DEFINE_WHEN","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KEYBINDINGS_EDITOR_COMMAND_FOCUS_KEYBINDINGS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KEYBINDINGS_EDITOR_COMMAND_RECORD_SEARCH_KEYS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KEYBINDINGS_EDITOR_COMMAND_REMOVE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KEYBINDINGS_EDITOR_COMMAND_RESET","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KEYBINDINGS_EDITOR_COMMAND_SEARCH","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KEYBINDINGS_EDITOR_COMMAND_SHOW_SIMILAR","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KEYBINDINGS_EDITOR_COMMAND_SORTBY_PRECEDENCE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KEYBINDINGS_EDITOR_SHOW_DEFAULT_KEYBINDINGS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KEYBINDINGS_EDITOR_SHOW_USER_KEYBINDINGS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KeybindingsEditingService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/keybindingEditing"},{"name":"KeybindingsEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/keybindingsEditor"},{"name":"KeybindingsEditorInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesEditorInput"},{"name":"KeybindingsEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/keybindingsEditorModel"},{"name":"KeybindingSource","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/keybinding/common/keybinding"},{"name":"KeybindingsRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/keybinding/common/keybindingsRegistry"},{"name":"KeybindingsSearchWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/keybindingWidgets"},{"name":"KeybindingsSynchroniser","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/keybindingsSync"},{"name":"KeybindingWeight","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/keybinding/common/keybindingsRegistry"},{"name":"KeybindingWidgetRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/keybindingsEditorContribution"},{"name":"KEYBOARD_LAYOUT_OPEN_PICKER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"KeyboardEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"KeyboardLayoutContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/browser/keyboardLayouts/_.contribution"},{"name":"KeyboardLayoutPickerAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/keyboardLayoutPicker"},{"name":"KeyboardLayoutPickerContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/keyboardLayoutPicker"},{"name":"KeyboardMapperFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/electron-browser/nativeKeymapService"},{"name":"keyboardNavigationSettingKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"KeyboardSupport","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/canIUse"},{"name":"KeyChord","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keyCodes"},{"name":"KeyCode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keyCodes"},{"name":"KeyCode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"KeyCode","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/editor.api"},{"name":"KeyCodeUtils","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keyCodes"},{"name":"KeyedTaskIdentifier","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"KeyframeEffect","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"keyFromOverrideIdentifier","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"KeymapExtensions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensionsUtils"},{"name":"KeymapInfo","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/keymapInfo"},{"name":"KeymapRecommendations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/keymapRecommendations"},{"name":"KeyMod","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keyCodes"},{"name":"KeyMod","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneBase"},{"name":"KeyMod","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/editor.api"},{"name":"KeyObject","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"keyof","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"keys","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/map"},{"name":"KeytarCredentialsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/credentials/node/credentialsService"},{"name":"KeytarCredentialsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/credentials/node/credentialsService"},{"name":"KeyValueLogProvider","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/log/common/keyValueLogProvider"},{"name":"kill","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"KillTerminalAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions"},{"name":"kMaxLength","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"buffer"},{"name":"knownAcronyms","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsLayout"},{"name":"KnownSnippetVariableNames","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetVariables"},{"name":"knownTermMappings","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsLayout"},{"name":"kStringMaxLength","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"buffer"},{"name":"Label","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets"},{"name":"LabelContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/remote/common/remote.contribution"},{"name":"LabelService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/label/common/labelService"},{"name":"language","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"Language","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"LanguageConfigurationChangeEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/languageConfigurationRegistry"},{"name":"LanguageConfigurationFileHandler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/languageConfigurationExtensionPoint"},{"name":"LanguageConfigurationRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/languageConfigurationRegistry"},{"name":"LanguageConfigurationRegistryImpl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/languageConfigurationRegistry"},{"name":"LanguageFeatureRegistry","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/languageFeatureRegistry"},{"name":"LanguageId","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"LanguageIdentifier","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"LanguagePackCachedDataCleaner","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-browser/sharedProcess/contrib/languagePackCachedDataCleaner"},{"name":"languages","kind":"module","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"languages","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/editor.api"},{"name":"LanguageSelector","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"languagesExtPoint","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/mode/common/workbenchModeService"},{"name":"LanguagesRegistry","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/languagesRegistry"},{"name":"LanguageType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/localizations/common/localizations"},{"name":"LargeFileOptimizationsWarner","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/largeFileOptimizations"},{"name":"LAST_COMPRESSED_FOLDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"lastIndex","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"lastNonWhitespaceIndex","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"lastSessionDateStorageKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetry"},{"name":"LAUNCH_CONFIGURATION_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"LaunchMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/launch/electron-main/launchMainService"},{"name":"launchSchema","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugSchemas"},{"name":"launchSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"layout","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/contextview/contextview"},{"name":"Layout","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/layout"},{"name":"LAYOUT_EDITOR_GROUPS_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"LayoutAnchorPosition","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/contextview/contextview"},{"name":"LayoutController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/grid/gridview"},{"name":"LayoutData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesWidget"},{"name":"LayoutPriority","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/splitview/splitview"},{"name":"LazilyResolvedWebviewEditorInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewWorkbenchService"},{"name":"Lazy","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/lazy"},{"name":"lazyEnv","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"LazyOutputChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostOutput"},{"name":"LazyPromise","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/lazyPromise"},{"name":"lchmod","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"lchmodSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"lchown","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"lchownSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"LcsDiff","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/diff/diff"},{"name":"lcut","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"leftest","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase"},{"name":"leftRotate","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase"},{"name":"LEGACY_CONSOLE_MODE_EXIT_CODE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"legacy_ENV_iKey","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Config"},{"name":"length","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"let","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"lexer","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/marked/marked"},{"name":"Lexer","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/marked/marked"},{"name":"LifecycleMainPhase","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/lifecycle/electron-main/lifecycleMainService"},{"name":"LifecycleMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/lifecycle/electron-main/lifecycleMainService"},{"name":"LifecyclePhase","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/lifecycle/common/lifecycle"},{"name":"LifecyclePhaseToString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/lifecycle/common/lifecycle"},{"name":"LIGHT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/themeService"},{"name":"LightBulbWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/lightBulbWidget"},{"name":"lighten","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"Limiter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"LineBreakData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/splitLinesCollection"},{"name":"LineCommentCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/comment/lineCommentCommand"},{"name":"LineContext","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/completionModel"},{"name":"LineContext","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestModel"},{"name":"LineDecoder","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/decoder"},{"name":"LineDecoration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/lineDecorations"},{"name":"LineDecorationsNormalizer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/lineDecorations"},{"name":"LineNumbersOverlay","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/lineNumbers/lineNumbers"},{"name":"LinePartMetadata","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/viewLineRenderer"},{"name":"LineProcess","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/processes"},{"name":"LineRange","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/viewLineRenderer"},{"name":"LinesDecorationsOverlay","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/linesDecorations/linesDecorations"},{"name":"LinesLayout","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/linesLayout"},{"name":"LineStarts","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase"},{"name":"LineTokens","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/lineTokens"},{"name":"LineTokens2","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/tokensStore"},{"name":"LineVisibleRanges","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/renderingContext"},{"name":"link","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"Link","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/links/getLinks"},{"name":"Link","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/opener/browser/link"},{"name":"LINK_INTERCEPT_THRESHOLD","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminal"},{"name":"LinkComputer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/linkComputer"},{"name":"LinkDetector","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/links/links"},{"name":"LinkDetector","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/linkDetector"},{"name":"LinkedList","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/linkedList"},{"name":"LinkedMap","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/map"},{"name":"LinkedText","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/linkedText"},{"name":"LinkProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"LinksList","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/links/getLinks"},{"name":"linkSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"linuxDistro","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/node/terminal"},{"name":"LinuxDistro","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"LinuxExternalTerminalService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/externalTerminal/node/externalTerminalService"},{"name":"LinuxUpdateService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/update/electron-main/updateService.linux"},{"name":"List","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/listWidget"},{"name":"listActiveSelectionBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listActiveSelectionForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listDeemphasizedForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"ListDragOverEffect","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/list"},{"name":"ListDragOverReactions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/list"},{"name":"listDropBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listenerCount","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"listenerCount","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"listenerCount","kind":"method","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"stream"},{"name":"listeners","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"listeners","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"ListeningStateChangedEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ListError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/list"},{"name":"listErrorForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listFilterMatchHighlight","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listFilterMatchHighlightBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listFilterWidgetBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listFilterWidgetNoMatchesOutline","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listFilterWidgetOutline","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listFocusBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listFocusForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listHighlightForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listHoverBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listHoverForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listInactiveFocusBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listInactiveSelectionBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listInactiveSelectionForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listInvalidItemForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"listProcesses","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/ps"},{"name":"ListResourceNavigator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"ListService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"ListSettingListModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"ListSettingWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"ListView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/listView"},{"name":"listWarningForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"loadavg","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"LOADED_SCRIPTS_VIEW_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"LoadedScriptsView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/loadedScriptsView"},{"name":"LoaderEvent","kind":"class","kindModifiers":"declare","sortText":"4"},{"name":"LoaderEventType","kind":"enum","kindModifiers":"declare","sortText":"4"},{"name":"LOADIPHLPAPI","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"loadLocalResource","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/common/resourceLoader"},{"name":"loadWASM","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/onigasm-umd/main"},{"name":"LOCAL_MACHINE_SCOPES","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"locale","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"LocalInstallAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"LocalizationsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/localizations/node/localizations"},{"name":"LocalizationsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/localizations/electron-browser/localizationsService"},{"name":"LocalizationWorkbenchContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/localizations/browser/localizations.contribution"},{"name":"localize","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/nls"},{"name":"localize","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/nls.mock"},{"name":"localizeManifest","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionNls"},{"name":"LocalSearchProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesSearch"},{"name":"LocalSearchService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/searchService"},{"name":"LocalSelectionTransfer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/dnd"},{"name":"localStorage","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"location","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"location","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"Location","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Location","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"Location","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"locationbar","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"log","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"log","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/console"},{"name":"log","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchCommon"},{"name":"log","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"log","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"LOG_MIME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/output"},{"name":"LOG_MODE_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/output"},{"name":"LOG_SCHEME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/output"},{"name":"LogAppender","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetryUtils"},{"name":"LogContentProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/browser/outputServices"},{"name":"Logger","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionPoints"},{"name":"LoggerChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/logIpc"},{"name":"LoggerChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/logIpc"},{"name":"LoggerService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/node/loggerService"},{"name":"LogLevel","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"LogLevel","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/log"},{"name":"LogLevel","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"LogLevel","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"LogLevel","kind":"alias","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/workbench.web.api"},{"name":"logOnceWebWorkerWarning","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/worker/simpleWorker"},{"name":"logRemoteEntry","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/remoteConsoleUtil"},{"name":"LogsDataCleaner","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/logs/common/logsDataCleaner"},{"name":"LogsDataCleaner","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-browser/sharedProcess/contrib/logsDataCleaner"},{"name":"LogServiceAdapter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/log"},{"name":"logStorage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/storage/common/storage"},{"name":"LogViewer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/browser/logViewer"},{"name":"LogViewerInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/browser/logViewer"},{"name":"LONG_LINE_BOUNDARY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModel"},{"name":"LongRunningOperation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/progress/common/progress"},{"name":"lookup","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"lookupService","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"LowerCaseAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"LRUCache","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/map"},{"name":"LRUMemory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestMemory"},{"name":"lstat","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"lstat","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"lstatSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"lt","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"lte","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"ltr","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"ltrim","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"lutimes","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"lutimesSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"MacExternalTerminalService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/externalTerminal/node/externalTerminalService"},{"name":"machineIdKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetry"},{"name":"machineOverridableSettings","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationRegistry"},{"name":"machineSettings","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationRegistry"},{"name":"machineSettingsSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"MacLinuxFallbackKeyboardMapper","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/macLinuxFallbackKeyboardMapper"},{"name":"MacLinuxKeyboardMapper","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper"},{"name":"macLinuxKeyboardMappingEquals","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper"},{"name":"main","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/web.main"},{"name":"main","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/node/cli"},{"name":"main","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/node/cliProcessMain"},{"name":"main","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/desktop.main"},{"name":"Main","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/node/cliProcessMain"},{"name":"MainContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHost.protocol"},{"name":"mainLogChannelId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/logs/common/logConstants"},{"name":"mainModule","kind":"property","kindModifiers":"declare,optional","sortText":"5","hasAction":true,"source":"process"},{"name":"MainPane","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/mainPane"},{"name":"MainPaneDescriptor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/mainPane"},{"name":"MainProcessService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/ipc/electron-browser/mainProcessService"},{"name":"MAINTAIN_UNDO_REDO_STACK","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/modelServiceImpl"},{"name":"MainThreadAuthentication","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadAuthentication"},{"name":"MainThreadAuthenticationProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadAuthentication"},{"name":"MainThreadClipboard","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadClipboard"},{"name":"MainThreadCommands","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadCommands"},{"name":"MainThreadCommentController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadComments"},{"name":"MainThreadComments","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadComments"},{"name":"MainThreadCommentThread","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadComments"},{"name":"MainThreadConfiguration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadConfiguration"},{"name":"MainThreadConsole","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadConsole"},{"name":"MainThreadDebugService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadDebugService"},{"name":"MainThreadDecorations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadDecorations"},{"name":"MainThreadDiagnostics","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadDiagnostics"},{"name":"MainThreadDialogs","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadDialogs"},{"name":"MainThreadDocumentContentProviders","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadDocumentContentProviders"},{"name":"MainThreadDocumentRangeSemanticTokensProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures"},{"name":"MainThreadDocuments","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadDocuments"},{"name":"MainThreadDocumentsAndEditors","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadDocumentsAndEditors"},{"name":"MainThreadDocumentSemanticTokensProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures"},{"name":"MainThreadDownloadService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadDownloadService"},{"name":"MainThreadEditorInsets","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadCodeInsets"},{"name":"MainThreadErrors","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadErrors"},{"name":"MainThreadExtensionService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadExtensionService"},{"name":"MainThreadFileSystem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadFileSystem"},{"name":"MainThreadFileSystemEventService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService"},{"name":"MainThreadKeytar","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadKeytar"},{"name":"MainThreadLabelService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadLabelService"},{"name":"MainThreadLanguageFeatures","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures"},{"name":"MainThreadLanguages","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadLanguages"},{"name":"MainThreadLogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadLogService"},{"name":"MainThreadMessageService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadMessageService"},{"name":"MainThreadNotebookController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadNotebook"},{"name":"MainThreadNotebookDocument","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadNotebook"},{"name":"MainThreadNotebooks","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadNotebook"},{"name":"MainThreadOutputService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadOutputService"},{"name":"MainThreadProgress","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadProgress"},{"name":"MainThreadQuickOpen","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadQuickOpen"},{"name":"MainThreadSCM","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadSCM"},{"name":"MainThreadSearch","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadSearch"},{"name":"MainThreadStatusBar","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadStatusBar"},{"name":"MainThreadStorage","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadStorage"},{"name":"MainThreadTask","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadTask"},{"name":"MainThreadTelemetry","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadTelemetry"},{"name":"MainThreadTerminalService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadTerminalService"},{"name":"MainThreadTextEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadEditor"},{"name":"MainThreadTextEditorProperties","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadEditor"},{"name":"MainThreadTextEditors","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadEditors"},{"name":"MainThreadTheming","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadTheming"},{"name":"MainThreadTimeline","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadTimeline"},{"name":"MainThreadTreeViews","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadTreeViews"},{"name":"MainThreadTunnelService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadTunnelService"},{"name":"MainThreadUrls","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadUrls"},{"name":"MainThreadWebviews","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadWebview"},{"name":"MainThreadWindow","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadWindow"},{"name":"MainThreadWorkspace","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadWorkspace"},{"name":"major","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"MakeAddress","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/common/remoteExplorerService"},{"name":"MaliciousExtensionChecker","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewlet"},{"name":"MaliciousStatusLabelAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ManageAuthorizedExtensionURIsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/browser/extensionUrlHandler"},{"name":"ManageAutomaticTaskRunning","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/browser/runAutomaticTasks"},{"name":"ManageExtensionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ManageExtensionsQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsQuickAccess"},{"name":"ManagementPersistentConnection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAgentConnection"},{"name":"manageTrustedDomainSettingsCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/url/common/trustedDomains"},{"name":"MANIFEST_CACHE_FOLDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensions/common/extensions"},{"name":"Map","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"mapArrayOrNot","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"mapPager","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/paging"},{"name":"mapToString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/map"},{"name":"Margin","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/margin/margin"},{"name":"MarginViewLineDecorationsOverlay","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/marginDecorations/marginDecorations"},{"name":"MarginViewOverlays","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/view/viewOverlays"},{"name":"mark","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/performance"},{"name":"markAsFileSystemProviderError","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"MarkdownCellRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer"},{"name":"MarkdownCellViewModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/markdownCellViewModel"},{"name":"markdownEscapeEscapedCodicons","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/codicons"},{"name":"MarkdownRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/markdown/markdownRenderer"},{"name":"MarkdownRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/mdRenderer"},{"name":"MarkdownString","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"MarkdownString","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/htmlContent"},{"name":"MarkdownString","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"MarkdownString","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"markdownUnescapeCodicons","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/codicons"},{"name":"marked","kind":"alias","kindModifiers":"declare","sortText":"4"},{"name":"markedStringsEquals","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/htmlContent"},{"name":"Marker","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetParser"},{"name":"Marker","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersModel"},{"name":"MarkerController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoError/gotoError"},{"name":"MarkerDecorationsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/markerDecorationsServiceImpl"},{"name":"MarkerNavigationWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoError/gotoErrorWidget"},{"name":"MarkerRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersTreeViewer"},{"name":"MarkerService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/markers/common/markerService"},{"name":"MarkerSeverity","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/markers/common/markers"},{"name":"MarkerSeverity","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"MarkerSeverity","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/editor.api"},{"name":"MarkersFilterActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersViewActions"},{"name":"MarkersFilters","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersViewActions"},{"name":"MarkersModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersModel"},{"name":"MarkersTreeAccessibilityProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersTreeViewer"},{"name":"MarkersView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersView"},{"name":"MarkersViewModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersTreeViewer"},{"name":"MarkersWorkbenchService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markers"},{"name":"MarkerTag","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/markers/common/markers"},{"name":"MarkerTag","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"MarkerTag","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/editor.api"},{"name":"MarkerViewModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersTreeViewer"},{"name":"markTimeline","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"mas","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"match","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/glob"},{"name":"match","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"Match","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/searchModel"},{"name":"MATCHES_LIMIT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findModel"},{"name":"matchesCamelCase","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"matchesContiguousSubString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"matchesFuzzy","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"matchesFuzzy2","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"matchesFuzzyCodiconAware","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/codicon"},{"name":"matchesPrefix","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"matchesScheme","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/opener/common/opener"},{"name":"matchesStrictPrefix","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"matchesSubString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"matchesWords","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"MatchFindAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"MatchFocusKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"matchMedia","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"MatchRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchResultsView"},{"name":"Math","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MAX_BYTES_ON_DISK","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Sender"},{"name":"MAX_CONNECTION_FAILURES_BEFORE_WARN","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Sender"},{"name":"MAX_FILE_SIZE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"MAX_FOLDING_REGIONS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/foldingRanges"},{"name":"MAX_HEAP_SIZE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"MAX_LINE_NUMBER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/foldingRanges"},{"name":"MAX_OUTPUT_LENGTH","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/output"},{"name":"MAX_VALUE_RENDER_LENGTH_IN_VIEWLET","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/baseDebugView"},{"name":"maxHeaderSize","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"http"},{"name":"MaximizeGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"maxSatisfying","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"mayIncludeActionsOfKind","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/types"},{"name":"measure","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"Measurement","kind":"enum member","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/DataPointType"},{"name":"MediaDeviceInfo","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaDevices","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaElementAudioSourceNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaEncryptedEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaError","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaKeyMessageEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaKeys","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaKeySession","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaKeyStatusMap","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaKeySystemAccess","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaQueryList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaQueryListEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaSource","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaStream","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaStreamAudioDestinationNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaStreamAudioSourceNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaStreamError","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaStreamErrorEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaStreamEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaStreamTrack","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaStreamTrackAudioSourceNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MediaStreamTrackEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Memento","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/memento"},{"name":"memoize","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/decorators"},{"name":"memory","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"Memory","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestMemory"},{"name":"memoryUsage","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"Menu","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"Menu","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/menu/menu"},{"name":"MENU_ESCAPED_MNEMONIC_REGEX","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/menu/menu"},{"name":"MENU_MNEMONIC_REGEX","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/menu/menu"},{"name":"menuBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"menubar","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Menubar","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/menubar/electron-main/menubar"},{"name":"MenuBar","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/menu/menubar"},{"name":"MENUBAR_SELECTION_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"MENUBAR_SELECTION_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"MENUBAR_SELECTION_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"MenubarControl","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/titlebar/menubarControl"},{"name":"MenubarMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/menubar/electron-main/menubarMainService"},{"name":"MenubarService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/menubar/electron-browser/menubarService"},{"name":"menuBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"MenuEntryActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/browser/menuEntryActionViewItem"},{"name":"menuForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"MenuId","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/common/actions"},{"name":"MenuItem","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"MenuItemAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/common/actions"},{"name":"MenuItemExtensionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"MenuPreventer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/menuPreventer"},{"name":"MenuRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/common/actions"},{"name":"menuSelectionBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"menuSelectionBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"menuSelectionForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"menuSeparatorBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"MenuService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/common/menuService"},{"name":"merge","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"merge","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/settingsMerge"},{"name":"merge","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/extensionsMerge"},{"name":"merge","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/keybindingsMerge"},{"name":"merge","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/globalStateMerge"},{"name":"merge","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/snippetsMerge"},{"name":"mergeAllGroups","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"mergeBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"mergeChanges","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationModels"},{"name":"mergeCommonContentBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"mergeCommonHeaderBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"mergeCurrentContentBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"mergeCurrentHeaderBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"MergedEnvironmentVariableCollection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariableCollection"},{"name":"mergeEnvironments","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalEnvironment"},{"name":"MergeGroupMode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/common/editorGroupsService"},{"name":"mergeIncomingContentBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"mergeIncomingHeaderBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"mergePagers","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/paging"},{"name":"mergeSort","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"MergeWindowTabsHandlerHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"},{"name":"MessageChannel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MessageChannel","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"worker_threads"},{"name":"MessageController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/message/messageController"},{"name":"MessageData","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/MessageData"},{"name":"MessageData","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"MessageEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MessagePort","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MessagePort","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"worker_threads"},{"name":"Messages","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/messages"},{"name":"MessageType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/inputbox/inputBox"},{"name":"MessageType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionHostProtocol"},{"name":"MetadataConsts","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"MetadataConsts","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textMate/common/textMateService"},{"name":"MetadataConsts","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-textmate/release/main"},{"name":"METHODS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"http"},{"name":"MetricData","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/MetricData"},{"name":"MetricData","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"MIME_BINARY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/mime"},{"name":"MIME_TEXT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/mime"},{"name":"MIME_UNKNOWN","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/mime"},{"name":"MimeType","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MimeTypeArray","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MimeTypeRendererResolver","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/notebookCommon"},{"name":"mimeTypeSupportedByCore","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/notebookCommon"},{"name":"MIN_MAX_MEMORY_SIZE_MB","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/files"},{"name":"Minimap","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/minimap/minimap"},{"name":"MINIMAP_GUTTER_WIDTH","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"minimapBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"MinimapCharRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/minimap/minimapCharRenderer"},{"name":"MinimapCharRendererFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/minimap/minimapCharRendererFactory"},{"name":"minimapError","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"minimapFindMatch","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"minimapGutterAddedBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"minimapGutterDeletedBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"minimapGutterModifiedBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"MinimapLinesRenderingData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/viewModel"},{"name":"MinimapPosition","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model"},{"name":"MinimapPosition","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"minimapSelection","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"minimapSliderActiveBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"minimapSliderBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"minimapSliderHoverBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"MinimapTokensColorTracker","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/minimapTokensColorTracker"},{"name":"minimapWarning","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"minimist","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/minimist/index"},{"name":"MinimizeOtherGroupsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"MINIMUM_LETTER_SPACING","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"minimumTranslatedStrings","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/localizations/browser/minimalTranslations"},{"name":"minor","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"minSatisfying","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"minVersion","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"MirrorTextModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/mirrorTextModel"},{"name":"MissingDependencyError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensions"},{"name":"mixin","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/objects"},{"name":"mkdir","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"mkdirp","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"mkdirSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"mkdtemp","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"mkdtempSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"mnemonicButtonLabel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/labels"},{"name":"mnemonicMenuLabel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/labels"},{"name":"mocha","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Mocha","kind":"class","kindModifiers":"declare","sortText":"4"},{"name":"mock","kind":"alias","kindModifiers":"","sortText":"0"},{"name":"MockContextKeyService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/keybinding/test/common/mockKeybindingService"},{"name":"MockDebugAdapter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/test/common/mockDebug"},{"name":"MockDebugService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/test/common/mockDebug"},{"name":"MockKeybindingService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/keybinding/test/common/mockKeybindingService"},{"name":"MockMode","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/mocks/mockMode"},{"name":"MockObjectTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/test/browser/mockSearchTree"},{"name":"MockRawSession","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/test/common/mockDebug"},{"name":"MockSession","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/test/common/mockDebug"},{"name":"MockTextAreaWrapper","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/browser/controller/textAreaState.test"},{"name":"ModelBasedVariableResolver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetVariables"},{"name":"ModelConstants","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model"},{"name":"ModelDecorationMinimapOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModel"},{"name":"ModelDecorationOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModel"},{"name":"ModelDecorationOverviewRulerOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModel"},{"name":"ModelRawContentChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelEvents"},{"name":"ModelRawEOLChanged","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelEvents"},{"name":"ModelRawFlush","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelEvents"},{"name":"ModelRawLineChanged","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelEvents"},{"name":"ModelRawLinesDeleted","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelEvents"},{"name":"ModelRawLinesInserted","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelEvents"},{"name":"ModelServiceImpl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/modelServiceImpl"},{"name":"ModelTransientSettingWatcher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/services/abstractCodeEditorService"},{"name":"ModesContentHoverWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/hover/modesContentHover"},{"name":"ModeServiceImpl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/modeServiceImpl"},{"name":"ModesGlyphHoverWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/hover/modesGlyphHover"},{"name":"ModesHoverController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/hover/hover"},{"name":"ModesRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/modesRegistry"},{"name":"MODIFIED_SETTING_TAG","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"modifiedItemIndicator","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"ModifierLabelProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keybindingLabels"},{"name":"modify","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"modifySearchEditorContextLinesCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions"},{"name":"module","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Module","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"module"},{"name":"monaco","kind":"module","kindModifiers":"declare","sortText":"4"},{"name":"MonacoEnvironment","kind":"let","kindModifiers":"declare","sortText":"4"},{"name":"MonarchBracket","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchCommon"},{"name":"MonarchTokenizer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchLexer"},{"name":"monitorEventLoopDelay","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"perf_hooks"},{"name":"MonospaceLineBreaksComputerFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/monospaceLineBreaksComputer"},{"name":"MouseController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/listWidget"},{"name":"MouseEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MouseHandler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/mouseHandler"},{"name":"MouseTarget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/mouseTarget"},{"name":"MouseTargetFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/mouseTarget"},{"name":"MouseTargetType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorBrowser"},{"name":"MouseTargetType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"MouseWheelClassifier","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/scrollbar/scrollableElement"},{"name":"move","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"move","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"MOVE_ACTIVE_EDITOR_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"MOVE_FILE_TO_TRASH_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"moveBy","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"MoveCaretCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/caretOperations/moveCaretCommand"},{"name":"MoveCellEdit","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/cellEdit"},{"name":"moveCursor","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"readline"},{"name":"MoveEditorLeftInGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"MoveEditorRightInGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"MoveEditorToAboveGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"MoveEditorToBelowGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"MoveEditorToFirstGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"MoveEditorToLastGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"MoveEditorToLeftGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"MoveEditorToNextGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"MoveEditorToPreviousGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"MoveEditorToRightGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"moveFileToTrashHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"MoveFocusedViewAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"MoveGroupDownAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"MoveGroupLeftAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"MoveGroupRightAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"MoveGroupUpAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"MoveLinesCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/moveLinesCommand"},{"name":"MoveOperations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorMoveOperations"},{"name":"MoveSelectionToNextFindMatchAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/multicursor/multicursor"},{"name":"MoveSelectionToPreviousFindMatchAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/multicursor/multicursor"},{"name":"moveTo","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"MoveToNextChangeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"MoveToPreviousChangeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"MoveWindowTabToNewWindowHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"},{"name":"MoveWordCommand","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"MSAssertion","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSBlobBuilder","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"msContentScript","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSFIDOCredentialAssertion","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSFIDOSignature","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSFIDOSignatureAssertion","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSGesture","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSGestureEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSGraphicsTrust","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSInputMethodContext","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSMediaKeyError","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSMediaKeyMessageEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSMediaKeyNeededEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSMediaKeys","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSMediaKeySession","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSPointerEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MSStream","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"msWriteProfilerMark","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"MultiCursorSelectionController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/multicursor/multicursor"},{"name":"MultiCursorSelectionControllerAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/multicursor/multicursor"},{"name":"MultiCursorSession","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/multicursor/multicursor"},{"name":"MultiCursorSessionResult","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/multicursor/multicursor"},{"name":"MultilineTokens","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/tokensStore"},{"name":"MultilineTokens2","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/tokensStore"},{"name":"MultilineTokensBuilder","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/tokensStore"},{"name":"MultiModelEditStackElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/editStack"},{"name":"MultipleEditorGroupsContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"MultiplexLayoutController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/grid/gridview"},{"name":"MultiplexLogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/log"},{"name":"multiSelectModifierSettingKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"MutableDisposable","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/lifecycle"},{"name":"MutationEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MutationObserver","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"MutationRecord","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Mutex","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/windows-mutex/index"},{"name":"MyArray","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/diff/diff"},{"name":"MyEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/parts/editor/baseEditor.test"},{"name":"MyOtherEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/parts/editor/baseEditor.test"},{"name":"name","kind":"const","kindModifiers":"declare","sortText":"4"},{"name":"NamedNodeMap","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"namespace","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"Namespace","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"NaN","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"NativeAccessibilityService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/accessibility/electron-browser/accessibilityService"},{"name":"NativeBackupTracker","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/backup/electron-browser/backupTracker"},{"name":"NativeClipboardService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/clipboard/electron-browser/clipboardService"},{"name":"NativeExtHostSearch","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/node/extHostSearch"},{"name":"nativeImage","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"NativeImage","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"NativeLifecycleService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/lifecycle/electron-browser/lifecycleService"},{"name":"NativePathService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/path/electron-browser/pathService"},{"name":"NativeRequestService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/request/electron-browser/requestService"},{"name":"NativeResolvedKeybinding","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/macLinuxKeyboardMapper"},{"name":"NativeResourceIdentityService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/resource/node/resourceIdentityServiceImpl"},{"name":"NativeSimpleFileDialog","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/dialogs/electron-browser/simpleFileDialog"},{"name":"NativeStorageService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/storage/node/storageService"},{"name":"NativeTelemetryOptOut","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/telemetryOptOut/electron-browser/telemetryOptOut"},{"name":"NativeTextFileEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/electron-browser/textFileEditor"},{"name":"NativeTextFileService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/electron-browser/nativeTextFileService"},{"name":"NativeTextSearchManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/textSearchManager"},{"name":"nativeTheme","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"NativeUpdateService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/update/electron-browser/updateService"},{"name":"NativeWindow","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/window"},{"name":"NativeWorkbenchEnvironmentService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/environment/electron-browser/environmentService"},{"name":"NativeWorkspaceEditingService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/workspaces/electron-browser/workspaceEditingService"},{"name":"NativeWorkspacesService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/workspaces/electron-browser/workspacesService"},{"name":"NavigateBackwardsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"NavigateBetweenGroupsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"NavigateForwardAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"NavigateLastAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"NavigateToLastEditLocationAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"NavigationModeAddon","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/addons/navigationModeAddon"},{"name":"NavigationPreloadManager","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"navigator","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Navigator","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"neq","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"net","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"netLog","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"networkInterfaces","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"never","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"NEVER_MEASURE_RENDER_TIME_STORAGE_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"NeverShowAgainScope","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/notification/common/notification"},{"name":"new","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"NEW_FILE_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"NEW_FILE_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"NEW_FOLDER_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"NEW_FOLDER_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"NewEditorGroupAboveAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"NewEditorGroupBelowAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"NewEditorGroupLeftAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"NewEditorGroupRightAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"NewExplorerItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/explorerModel"},{"name":"NewFileAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"NewFolderAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"NewWindowAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/windowActions"},{"name":"NewWindowAPICommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/apiCommands"},{"name":"newWindowCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"NewWindowTabHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"},{"name":"newWriteableBufferStream","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"newWriteableStream","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/stream"},{"name":"NEXT_COMPRESSED_FOLDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"nextCharLength","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"NextCommentThreadAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentsEditorContribution"},{"name":"NextMarkerAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoError/gotoError"},{"name":"NextMatchFindAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"NextMatchFindAction2","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"NextPanelViewAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/panel/panelActions"},{"name":"NextSelectionMatchFindAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"NextSideBarViewAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/activitybar/activitybarActions"},{"name":"nextTick","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/process"},{"name":"nextTick","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"NO_KEY_MODS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/quickinput/common/quickInput"},{"name":"noAsar","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"NODATA","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"Node","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"nodeAcceptEdit","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/intervalTree"},{"name":"NodeCachedDataCleaner","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-browser/sharedProcess/contrib/nodeCachedDataCleaner"},{"name":"NodeClient","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/NodeClient"},{"name":"NodeColor","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/intervalTree"},{"name":"NodeColor","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase"},{"name":"NodeDebugHelperService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/node/debugHelperService"},{"name":"NodeFilter","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"NodeIterator","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"NodeJS","kind":"module","kindModifiers":"declare","sortText":"4"},{"name":"NodeList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"noDeprecation","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"nodeReadableToString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/stream"},{"name":"NodeSocket","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/node/ipc.net"},{"name":"nodeSocketFactory","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/node/nodeSocketFactory"},{"name":"nodesToArrays","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/test/browser/ui/grid/util"},{"name":"nodeStreamToVSBufferReadable","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/stream"},{"name":"NodeTestBackupFileService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/backup/test/electron-browser/backupFileService.test"},{"name":"NoEditorsVisibleContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"noIntlCompareFileNames","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/comparers"},{"name":"NOMEM","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"NoMemory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestMemory"},{"name":"NONAME","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"NoOpNotification","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/notification/common/notification"},{"name":"NoOpProgress","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/notification/common/notification"},{"name":"NoOpWorkspaceTagsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tags/browser/workspaceTagsService"},{"name":"normalize","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"path"},{"name":"normalize","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"normalizeDriveLetter","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/labels"},{"name":"normalizeExpression","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/test/browser/queryBuilder.test"},{"name":"normalizeFileChanges","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/watcher/watcher"},{"name":"normalizeGitHubUrl","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/issue/common/issueReporterUtil"},{"name":"normalizeNFC","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/normalization"},{"name":"normalizeNFD","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/normalization"},{"name":"normalizePath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"normalizeRoots","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/watcher/unix/chokidarWatcherService"},{"name":"normalizeVersion","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensions/common/extensionValidator"},{"name":"NoTabsTitleControl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/noTabsTitleControl"},{"name":"notDeepEqual","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"notDeepStrictEqual","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"notebook","kind":"module","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"NOTEBOOK_CELL_EDITABLE_CONTEXT_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/constants"},{"name":"NOTEBOOK_CELL_MARKDOWN_EDIT_MODE_CONTEXT_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/constants"},{"name":"NOTEBOOK_CELL_RUN_STATE_CONTEXT_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/constants"},{"name":"NOTEBOOK_CELL_TYPE_CONTEXT_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/constants"},{"name":"NOTEBOOK_DISPLAY_ORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/notebookCommon"},{"name":"NOTEBOOK_EDITABLE_CONTEXT_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/constants"},{"name":"NOTEBOOK_EDITOR_CURSOR_BOUNDARY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/notebookCommon"},{"name":"NOTEBOOK_EDITOR_EDITABLE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookBrowser"},{"name":"NOTEBOOK_EDITOR_EXECUTING_NOTEBOOK","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookBrowser"},{"name":"NOTEBOOK_EDITOR_FOCUSED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookBrowser"},{"name":"NOTEBOOK_EXECUTING_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/constants"},{"name":"NOTEBOOK_VIEW_TYPE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/constants"},{"name":"NotebookCellList","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/notebookCellList"},{"name":"NotebookCellListDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer"},{"name":"NotebookCellMetadataDefaults","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/baseCellViewModel"},{"name":"NotebookCellTextModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/model/notebookCellTextModel"},{"name":"NotebookCodeEditors","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor"},{"name":"NotebookContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebook.contribution"},{"name":"notebookDocumentMetadataDefaults","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/notebookCommon"},{"name":"NotebookEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor"},{"name":"NotebookEditorCellEdit","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostNotebook"},{"name":"NotebookEditorInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditorInput"},{"name":"NotebookEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditorInput"},{"name":"NotebookEditorOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor"},{"name":"NotebookEventDispatcher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher"},{"name":"NotebookFindWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookFindWidget"},{"name":"NotebookLayoutChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher"},{"name":"NotebookMetadataChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher"},{"name":"notebookOutputContainerColor","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookEditor"},{"name":"NotebookOutputRendererInfo","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/notebookOutputRenderer"},{"name":"NotebookOutputRendererInfoStore","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookService"},{"name":"notebookProviderExtensionPoint","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/extensionPoint"},{"name":"NotebookProviderInfo","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/notebookProvider"},{"name":"NotebookProviderInfoStore","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookService"},{"name":"NotebookRegistry","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookRegistry"},{"name":"notebookRendererExtensionPoint","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/extensionPoint"},{"name":"NotebookService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookService"},{"name":"NotebookTextModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/model/notebookTextModel"},{"name":"NotebookViewEventType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/eventDispatcher"},{"name":"NotebookViewModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel"},{"name":"notEqual","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"NOTFOUND","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"Notification","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Notification","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"NotificationActionRunner","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsActions"},{"name":"NotificationChangeType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/notifications"},{"name":"NotificationFocusedContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"NotificationHandle","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/notifications"},{"name":"NotificationRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsViewer"},{"name":"NOTIFICATIONS_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"NOTIFICATIONS_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"NOTIFICATIONS_CENTER_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"NOTIFICATIONS_CENTER_HEADER_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"NOTIFICATIONS_CENTER_HEADER_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"NOTIFICATIONS_ERROR_ICON_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"NOTIFICATIONS_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"NOTIFICATIONS_INFO_ICON_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"NOTIFICATIONS_LINKS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"NOTIFICATIONS_TOAST_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"NOTIFICATIONS_WARNING_ICON_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"NotificationsAlerts","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsAlerts"},{"name":"NotificationsCenter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCenter"},{"name":"NotificationsCenterVisibleContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"NotificationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/notification/common/notificationService"},{"name":"NotificationsFilter","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/notification/common/notification"},{"name":"NotificationsList","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsList"},{"name":"NotificationsListDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsViewer"},{"name":"NotificationsModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/notifications"},{"name":"NotificationsStatus","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsStatus"},{"name":"NotificationsToasts","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsToasts"},{"name":"NotificationsToastsVisibleContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"NotificationTemplateRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsViewer"},{"name":"NotificationViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/notifications"},{"name":"NotificationViewItemContentChangeKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/notifications"},{"name":"NotificationViewItemProgress","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/notifications"},{"name":"NOTIMP","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"NotImplementedError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errors"},{"name":"NOTINITIALIZED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"notStrictEqual","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"NsfwWatcherService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/watcher/nsfw/nsfwWatcherService"},{"name":"null","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"NULL_LANGUAGE_IDENTIFIER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/nullMode"},{"name":"NULL_MODE_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/nullMode"},{"name":"NULL_STATE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/nullMode"},{"name":"NullApiDeprecationService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostApiDeprecationService"},{"name":"NullAppender","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetryUtils"},{"name":"NullCommandService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/commands/common/commands"},{"name":"nullExtensionDescription","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensions"},{"name":"NullExtensionService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensions"},{"name":"NullFileSystemProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/test/common/nullFileSystemProvider"},{"name":"NullLifecycleService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/lifecycle/common/lifecycle"},{"name":"NullLogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/common/log"},{"name":"NullOpenerService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/opener/common/opener"},{"name":"nullRange","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesModels"},{"name":"NullTelemetryService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetryUtils"},{"name":"nullTokenize","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/nullMode"},{"name":"nullTokenize2","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/nullMode"},{"name":"number","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"Number","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"NumberBadge","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/activity/common/activity"},{"name":"O_APPEND","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_CREAT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_DIRECT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_DIRECTORY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_DSYNC","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_EXCL","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_NOATIME","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_NOCTTY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_NOFOLLOW","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_NONBLOCK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_RDONLY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_RDWR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_SYMLINK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_SYNC","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_TRUNC","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"O_WRONLY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"object","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"Object","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ObjectIdentifier","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHost.protocol"},{"name":"ObjectTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/objectTree"},{"name":"ObjectTreeModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/objectTreeModel"},{"name":"off","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"OfflineAudioCompletionEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"OfflineAudioContext","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"offscreenBuffering","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"OffscreenCanvas","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"OffscreenCanvasRenderingContext2D","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ok","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"ok","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/assert"},{"name":"on","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"on","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"onabort","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onafterprint","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onanimationcancel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onanimationend","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onanimationiteration","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onanimationstart","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onauxclick","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onbeforeprint","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onbeforeunload","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onblur","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"oncancel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"oncanplay","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"oncanplaythrough","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"once","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"once","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"events"},{"name":"once","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/functional"},{"name":"once","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"onchange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onclick","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onclose","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"oncompassneedscalibration","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"oncontextmenu","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"oncuechange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ondblclick","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ondevicelight","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ondevicemotion","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ondeviceorientation","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ondeviceorientationabsolute","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onDidChangeFullscreen","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"onDidChangeKeyboardLayout","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/native-keymap/index"},{"name":"onDidChangeModelLanguage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"onDidChangeZoomLevel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"onDidCreateEditor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"onDidCreateModel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"ondrag","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ondragend","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ondragenter","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ondragexit","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ondragleave","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ondragover","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ondragstart","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ondrop","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ondurationchange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"OneCursor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/oneCursor"},{"name":"OneLineRange","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"onemptied","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onended","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"OnEnterSupport","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/onEnter"},{"name":"oneOf","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"OneReference","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/referencesModel"},{"name":"OneReferenceRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesTree"},{"name":"onerror","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"OneSnippet","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetSession"},{"name":"onExtensionChanged","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensionsUtils"},{"name":"onfocus","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ongotpointercapture","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onhashchange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"OnigScanner","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/onigasm-umd/main"},{"name":"OnigString","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/onigasm-umd/main"},{"name":"oninput","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"oninvalid","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onkeydown","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onkeypress","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onkeyup","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onLanguage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"onlanguagechange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ONLINE_SERVICES_SETTING_TAG","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTreeModels"},{"name":"onload","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onloadeddata","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onloadedmetadata","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onloadstart","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onlostpointercapture","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmessage","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmessageerror","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmousedown","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmouseenter","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmouseleave","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmousemove","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmouseout","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmouseover","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmouseup","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmousewheel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmsgesturechange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmsgesturedoubletap","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmsgestureend","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmsgesturehold","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmsgesturestart","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmsgesturetap","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmsinertiastart","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmspointercancel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmspointerdown","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmspointerenter","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmspointerleave","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmspointermove","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmspointerout","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmspointerover","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onmspointerup","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onoffline","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ononline","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onorientationchange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onpagehide","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onpageshow","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onpause","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onplay","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onplaying","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onpointercancel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onpointerdown","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onpointerenter","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onpointerleave","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onpointermove","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onpointerout","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onpointerover","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onpointerup","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onpopstate","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onprogress","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onratechange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onreadystatechange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onrejectionhandled","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onreset","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onresize","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onscroll","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onsecuritypolicyviolation","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onseeked","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onseeking","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onselect","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onselectionchange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onselectstart","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onstalled","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onstorage","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onsubmit","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onsuspend","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ontimeupdate","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ontoggle","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ontouchcancel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ontouchend","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ontouchmove","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ontouchstart","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ontransitioncancel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ontransitionend","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ontransitionrun","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ontransitionstart","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"OnTypeFormattingEditProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"OnTypeRenameAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/rename/onTypeRename"},{"name":"OnTypeRenameContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/rename/onTypeRename"},{"name":"OnTypeRenameProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"onUnexpectedError","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errors"},{"name":"onUnexpectedExternalError","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errors"},{"name":"onunhandledrejection","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onunload","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onvolumechange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onvrdisplayactivate","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onvrdisplayblur","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onvrdisplayconnect","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onvrdisplaydeactivate","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onvrdisplaydisconnect","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onvrdisplayfocus","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onvrdisplaypointerrestricted","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onvrdisplaypointerunrestricted","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onvrdisplaypresentchange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onwaiting","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onwheel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"onWillDisposeModel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"open","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"open","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"open","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"inspector"},{"name":"open","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/yauzl/index"},{"name":"OPEN_CREATE","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-sqlite3/index"},{"name":"OPEN_EDITOR_AT_INDEX_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"OPEN_PRIVATECACHE","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-sqlite3/index"},{"name":"OPEN_READONLY","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-sqlite3/index"},{"name":"OPEN_READWRITE","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-sqlite3/index"},{"name":"OPEN_SHAREDCACHE","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-sqlite3/index"},{"name":"OPEN_TO_SIDE_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"OPEN_URI","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-sqlite3/index"},{"name":"OpenAPICommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/apiCommands"},{"name":"openBreakpointSource","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/breakpointsView"},{"name":"OpenContext","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/node/window"},{"name":"OpenDebugConsoleAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugViewlet"},{"name":"opendir","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"opendirSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"OpenEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"OpenEditorsFocusedContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"OpenEditorsGroupContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"OpenEditorsView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/openEditorsView"},{"name":"OpenEditorsVisibleContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"opener","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"OpenerService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/services/openerService"},{"name":"OpenerValidatorContributions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/url/common/trustedDomainsValidator"},{"name":"OpenExplorerViewletAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/files.contribution"},{"name":"OpenExtensionLogsFolderAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/logs/electron-browser/logsActions"},{"name":"OpenExtensionsFolderAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensionsActions"},{"name":"OpenExtensionsViewletAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"OpenFileAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/workspaceActions"},{"name":"OpenFileFolderAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/workspaceActions"},{"name":"openFilePreserveFocusHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"OpenFirstEditorInGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"OpenFolderAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/workspaceActions"},{"name":"OpenFolderAPICommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/apiCommands"},{"name":"OpenInEditorCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"OpenInEditorCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"OpenIssueReporter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/apiCommands"},{"name":"OpenIssueReporterActionId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/issue/common/commands"},{"name":"OpenLastEditorInGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"OpenLatestReleaseNotesInBrowserAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/update/browser/update"},{"name":"OpenLocalFileCommand","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/dialogs/browser/simpleFileDialog"},{"name":"OpenLocalFileFolderCommand","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/dialogs/browser/simpleFileDialog"},{"name":"OpenLocalFolderCommand","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/dialogs/browser/simpleFileDialog"},{"name":"OpenLogsFolderAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/logs/electron-browser/logsActions"},{"name":"OpenMatchToSide","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"openModeSettingKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"OpenNewEditorCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"OpenNewEditorToSideCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"OpenNextEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"OpenNextEditorInGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"OpenNextRecentlyUsedEditorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"OpenNextRecentlyUsedEditorInGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"OpenPreviousEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"OpenPreviousEditorInGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"OpenPreviousRecentlyUsedEditorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"OpenPreviousRecentlyUsedEditorInGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"OpenProcessExplorer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/issue/electron-browser/issueActions"},{"name":"OpenRecentAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/windowActions"},{"name":"OpenResultsInEditorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions"},{"name":"OpenSearchEditorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions"},{"name":"OpenSearchEditorToSideAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions"},{"name":"openSearchView","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"OpenSearchViewletAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"openStdin","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"openSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"OpenUrlAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/url/common/url.contribution"},{"name":"OpenViewPickerAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/quickaccess/browser/viewQuickAccess"},{"name":"OpenWebviewDeveloperToolsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewCommands"},{"name":"openWindowCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"OpenWindowSessionLogFileAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/logs/common/logsActions"},{"name":"OpenWithAPICommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/apiCommands"},{"name":"OpenWorkspaceAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/workspaceActions"},{"name":"OpenWorkspaceButtonContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorWidgets"},{"name":"OpenWorkspaceConfigFileAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/workspaceActions"},{"name":"OperatingSystem","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"Option","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"optional","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/instantiation/common/instantiation"},{"name":"OPTIONS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/argv"},{"name":"or","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/filters"},{"name":"OrganizeImportsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionCommands"},{"name":"organizeImportsCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeAction"},{"name":"orientation","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Orientation","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/sash/sash"},{"name":"origin","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"originalFSPath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"orthogonal","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/grid/gridview"},{"name":"OS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"OS_PROVIDES_FILE_PROTECTION","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Sender"},{"name":"OscillatorNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"outerHeight","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"outerWidth","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"OutgoingMessage","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"http"},{"name":"OutlineAccessibilityProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"OutlineConfigKeys","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outline"},{"name":"OutlineDataSource","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"OutlineElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineModel"},{"name":"OutlineElementRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"OutlineElementTemplate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"OutlineFilter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"OutlineGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineModel"},{"name":"OutlineGroupRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"OutlineGroupTemplate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"OutlineIdentityProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"OutlineItemComparator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"OutlineModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineModel"},{"name":"OutlineNavigationLabelProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"OutlinePane","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/outline/browser/outlinePane"},{"name":"OutlineSortOrder","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"OutlineViewFiltered","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outline"},{"name":"OutlineViewFocused","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outline"},{"name":"OutlineViewId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outline"},{"name":"OutlineVirtualDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"OutOfProcessWin32FolderWatcher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/watcher/win32/csharpWatcherService"},{"name":"OUTPUT_MIME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/output"},{"name":"OUTPUT_MODE_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/output"},{"name":"OUTPUT_SCHEME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/output"},{"name":"OUTPUT_SERVICE_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/output"},{"name":"OUTPUT_VIEW_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/output"},{"name":"OutputAppender","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/output/node/outputAppender"},{"name":"OutputBuilder","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/keybindingIO"},{"name":"OutputChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepSearchUtils"},{"name":"OutputChannelModelService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/output/common/outputChannelModelService"},{"name":"OutputChannelModelService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/output/electron-browser/outputChannelModelService"},{"name":"OutputEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/browser/outputView"},{"name":"OutputLinkComputer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/outputLinkComputer"},{"name":"OutputLinkProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/common/outputLinkProvider"},{"name":"OutputPosition","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/splitLinesCollection"},{"name":"OutputRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/output/outputRenderer"},{"name":"OutputService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/browser/outputServices"},{"name":"OutputViewPane","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/output/browser/outputView"},{"name":"outside","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"OverconstrainedError","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"OverflowEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"OverlayWidgetDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/zoneWidget/zoneWidget"},{"name":"OverlayWidgetPositionPreference","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorBrowser"},{"name":"OverlayWidgetPositionPreference","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"OVERRIDE_PROPERTY_PATTERN","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationRegistry"},{"name":"overrideIdentifierFromKey","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"OverviewRuler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/overviewRuler/overviewRuler"},{"name":"overviewRulerAddedForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"overviewRulerCommentingRangeForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentGlyphWidget"},{"name":"overviewRulerCommonContentForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"overviewRulerCurrentContentForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"overviewRulerDeletedForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"overviewRulerError","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"overviewRulerFindMatchForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"overviewRulerIncomingContentForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"overviewRulerInfo","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"OverviewRulerLane","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"OverviewRulerLane","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model"},{"name":"OverviewRulerLane","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"overviewRulerModifiedForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"overviewRulerRangeHighlight","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"overviewRulerSelectionHighlightForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"overviewRulerWarning","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/editorColorRegistry"},{"name":"OverviewRulerZone","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/overviewZoneManager"},{"name":"OverviewZoneManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/overviewZoneManager"},{"name":"package","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"pad","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"PageCoordinates","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorDom"},{"name":"PagedList","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/listPaging"},{"name":"PagedModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/paging"},{"name":"PagedScreenReaderStrategy","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/textAreaState"},{"name":"PageTransitionEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PageViewData","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/PageViewData"},{"name":"PageViewData","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"pageXOffset","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"pageYOffset","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Pane","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/splitview/paneview"},{"name":"PaneComposite","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/panecomposite"},{"name":"PaneCompositePanel","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/panel"},{"name":"Panel","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/panel"},{"name":"PANEL_ACTIVE_TITLE_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"PANEL_ACTIVE_TITLE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"PANEL_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"PANEL_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"PANEL_DRAG_AND_DROP_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"PANEL_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"PANEL_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/outline/browser/outline.contribution"},{"name":"PANEL_INACTIVE_TITLE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"PANEL_INPUT_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"PanelActivityAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/panel/panelActions"},{"name":"PanelDescriptor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/panel"},{"name":"PanelFocusContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/panel"},{"name":"PanelKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"PanelPart","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/panel/panelPart"},{"name":"PanelPositionContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/panel"},{"name":"PanelRegistry","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/panel"},{"name":"PaneView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/splitview/paneview"},{"name":"PannerNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ParameterHintsModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/parameterHints/parameterHintsModel"},{"name":"ParameterHintsWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/parameterHints/parameterHintsWidget"},{"name":"ParameterInformation","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"ParameterInformation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"ParameterInformation","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"parent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"parentPort","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"worker_threads"},{"name":"parse","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"path"},{"name":"parse","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"querystring"},{"name":"parse","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"url"},{"name":"parse","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"parse","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"parse","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/marked/marked"},{"name":"parse","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/marshalling"},{"name":"parse","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/glob"},{"name":"parse","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/console"},{"name":"parse","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"parse","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/plistParser"},{"name":"parse","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskConfiguration"},{"name":"parse","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/tokenization/typescript"},{"name":"parseArgs","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/argv"},{"name":"parseClassifierString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry"},{"name":"parseCLIProcessArgv","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/argvHelper"},{"name":"parseCodicons","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/codicon"},{"name":"ParsedTokenThemeRule","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/tokenization"},{"name":"ParseErrorCode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"parseExtensionDevOptions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionDevOptions"},{"name":"parseExtensionHostPort","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/environmentService"},{"name":"parseFloat","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"parseHrefAndDimensions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/htmlContent"},{"name":"parseInt","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"parseKeyboardLayoutDescription","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/keymapInfo"},{"name":"parseLineAndColumnAware","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/node/paths"},{"name":"parseLinkedText","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/linkedText"},{"name":"parseMainProcessArgv","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/argvHelper"},{"name":"ParseOptions","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"parsePathArg","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/environmentService"},{"name":"parseQuery","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTreeModels"},{"name":"parser","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/marked/marked"},{"name":"Parser","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/parsers"},{"name":"parseRawGrammar","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-textmate/release/main"},{"name":"parseReplaceString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/replacePattern"},{"name":"parseSavedSearchEditor","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorSerialization"},{"name":"parseSearchPort","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/environmentService"},{"name":"parseTokenTheme","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/tokenization"},{"name":"parseTree","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"parseUserDataDir","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/environmentService"},{"name":"parseVersion","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensions/common/extensionValidator"},{"name":"parseWithLocation","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/plistParser"},{"name":"Part","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/part"},{"name":"PartFingerprint","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/view/viewPart"},{"name":"PartFingerprints","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/view/viewPart"},{"name":"PartialModelCursorState","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorCommon"},{"name":"PartialViewCursorState","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorCommon"},{"name":"Parts","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/layout/browser/layoutService"},{"name":"PassThrough","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"stream"},{"name":"PASTE_FILE_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"pasteFileHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"PasteWebviewEditorCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewCommands"},{"name":"patch","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"Path2D","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"pathIncludedInQuery","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"PathIterator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/map"},{"name":"pathOrURIToURI","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"pathsToEditors","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"pathToFileURL","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"url"},{"name":"PatternExcludesFocusedKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"PatternIncludesFocusedKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"PatternInputWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/patternInputWidget"},{"name":"patternsToIExpression","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/test/browser/queryBuilder.test"},{"name":"PAUSE_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"PAUSE_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"PauseableEmitter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/event"},{"name":"PaymentAddress","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PaymentRequest","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PaymentRequestUpdateEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PaymentResponse","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"pbkdf2","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"pbkdf2Sync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"PeekContext","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"peekViewBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"peekViewEditorBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"peekViewEditorGutterBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"peekViewEditorMatchHighlight","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"peekViewEditorMatchHighlightBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"peekViewResultsBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"peekViewResultsFileForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"peekViewResultsMatchForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"peekViewResultsMatchHighlight","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"peekViewResultsSelectionBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"peekViewResultsSelectionForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"peekViewTitleBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"peekViewTitleForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"peekViewTitleInfoForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"PeekViewWidget","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/peekView/peekView"},{"name":"performance","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"performance","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"perf_hooks"},{"name":"Performance","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PerformanceEntry","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PerformanceMark","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PerformanceMeasure","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PerformanceNavigation","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PerformanceNavigationTiming","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PerformanceObserver","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PerformanceObserver","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"perf_hooks"},{"name":"PerformanceObserverEntryList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PerformanceResourceTiming","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PerformanceTiming","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PerfviewContrib","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/performance/electron-browser/perfviewEditor"},{"name":"PerfviewInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/performance/electron-browser/perfviewEditor"},{"name":"PerfWidgetExternal","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PeriodicWave","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PermissionRequest","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PermissionRequestedEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Permissions","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PermissionStatus","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PersistentConnectionEventType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAgentConnection"},{"name":"PersistentContributableViewsModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/views/views"},{"name":"PersistentProtocol","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc.net"},{"name":"personalbar","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PICK_WORKSPACE_FOLDER_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/workspaceCommands"},{"name":"pickerGroupBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"pickerGroupForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"PickerQuickAccessProvider","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/quickinput/browser/pickerQuickAccess"},{"name":"pid","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"Piece","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase"},{"name":"pieceToQuery","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/fuzzyScorer"},{"name":"PieceTreeBase","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase"},{"name":"PieceTreeTextBuffer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer"},{"name":"PieceTreeTextBufferBuilder","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBufferBuilder"},{"name":"PieceTreeTextBufferFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBufferBuilder"},{"name":"pipeline","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"stream"},{"name":"Placeholder","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetParser"},{"name":"PlaceHolderPanelActivityAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/panel/panelActions"},{"name":"PlaceHolderToggleCompositePinnedAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/activitybar/activitybarActions"},{"name":"PlaceHolderToggleCompositePinnedAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/panel/panelActions"},{"name":"PlaceHolderViewletActivityAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/activitybar/activitybarActions"},{"name":"PLAINTEXT_LANGUAGE_IDENTIFIER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/modesRegistry"},{"name":"PLAINTEXT_MODE_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/modesRegistry"},{"name":"platform","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"platform","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"platform","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/process"},{"name":"platform","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"Platform","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"PlatformToString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"Plugin","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PluginArray","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"POINT_CONVERSION_COMPRESSED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"POINT_CONVERSION_HYBRID","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"POINT_CONVERSION_UNCOMPRESSED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"PointerEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PointerEventHandler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/pointerHandler"},{"name":"PointerHandler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/pointerHandler"},{"name":"PointerHandlerLastRenderData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/mouseTarget"},{"name":"PopStateEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"popup","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/contextmenu/electron-browser/contextmenu"},{"name":"position","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"Position","kind":"alias","kindModifiers":"","sortText":"0"},{"name":"positionFromString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/layout/browser/layoutService"},{"name":"positionIsInRange","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalLinkHelpers"},{"name":"PositionPanelActionConfigs","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/panel/panelActions"},{"name":"positionToString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/layout/browser/layoutService"},{"name":"posix","kind":"module","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"path"},{"name":"posix","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"postMessage","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"powerMonitor","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"powerSaveBlocker","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"POWERSHELL_PATH","kind":"property","kindModifiers":"private,static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Sender"},{"name":"ppid","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"prebakedMiniMaps","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/minimap/minimapPreBaked"},{"name":"PreferencesContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferencesContribution"},{"name":"PreferencesEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesEditor"},{"name":"PreferencesEditorInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesEditorInput"},{"name":"PreferencesLabel","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"PreferencesSearchService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesSearch"},{"name":"PreferencesService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/browser/preferencesService"},{"name":"preferredSideBySideGroupDirection","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/common/editorGroupsService"},{"name":"prefersExecuteOnUI","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionsUtil"},{"name":"prefersExecuteOnWorkspace","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionsUtil"},{"name":"PrefixMemory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestMemory"},{"name":"PrefixSumComputer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/prefixSumComputer"},{"name":"PrefixSumIndexOfResult","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/prefixSumComputer"},{"name":"prepareActions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/actionbar/actionbar"},{"name":"prepareCommand","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/node/terminals"},{"name":"prepareQuery","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/fuzzyScorer"},{"name":"prepend","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"prependListener","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"prependListener","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"prependOnceListener","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"prependOnceListener","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"prerelease","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"PresentationOptions","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"presentationSchema","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugSchemas"},{"name":"PreserveCaseCheckbox","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/findinput/replaceInput"},{"name":"prevCharLength","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"PREVIEW_DIR_NAME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"PREVIOUS_COMPRESSED_FOLDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"PreviousMatchFindAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"PreviousMatchFindAction2","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"PreviousPanelViewAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/panel/panelActions"},{"name":"PreviousSelectionMatchFindAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"PreviousSideBarViewAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/activitybar/activitybarActions"},{"name":"print","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"privateDecrypt","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"privateEncrypt","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"ProblemCollectorEventKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemCollectors"},{"name":"ProblemHandlingStrategy","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemCollectors"},{"name":"ProblemLocationKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher"},{"name":"ProblemMatcherParser","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher"},{"name":"ProblemMatcherRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher"},{"name":"ProblemPatternParser","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher"},{"name":"ProblemPatternRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher"},{"name":"problemsErrorIconForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"problemsInfoIconForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"problemsWarningIconForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"process","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ProcessDataFlag","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/windows-process-tree/index"},{"name":"ProcessExecution","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"ProcessExecution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"ProcessExecutionDTO","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTask"},{"name":"ProcessExecutionOptionsDTO","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTask"},{"name":"ProcessingInstruction","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ProcessRunnerDetector","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/node/processRunnerDetector"},{"name":"ProcessState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"ProcessTaskSystem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/node/processTaskSystem"},{"name":"product","kind":"alias","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/product/common/product"},{"name":"ProductContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/update/browser/update"},{"name":"ProductIconThemeData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/browser/productIconThemeData"},{"name":"productService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"profile","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"profileEnd","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"ProfileSessionState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor"},{"name":"Progress","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/progress/common/progress"},{"name":"ProgressBadge","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/activity/common/activity"},{"name":"ProgressBar","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/progressbar/progressbar"},{"name":"progressBarBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"ProgressBarIndicator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/progress/browser/progressIndicator"},{"name":"ProgressEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ProgressLocation","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"ProgressLocation","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/progress/common/progress"},{"name":"ProgressLocation","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"ProgressLocation","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"ProgressService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/progress/browser/progressService"},{"name":"Promise","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PromiseRejectionEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"promises","kind":"module","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"promises","kind":"module","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"promisify","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"prompt","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"protocol","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"Protocol","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc.net"},{"name":"Protocol","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/node/ipc.electron"},{"name":"ProtocolConstants","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc.net"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"events"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"module"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"stream"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"https-proxy-agent"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"mocha"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Config"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/Domain"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/AvailabilityData"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/Base"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/ContextTagKeys"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/Data"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/DataPoint"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/Envelope"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/EventData"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/StackFrame"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/ExceptionDetails"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/ExceptionData"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/MessageData"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/MetricData"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/PageViewData"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/RemoteDependencyData"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/RequestData"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Context"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Sender"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Channel"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/TelemetryClient"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/NodeClient"},{"name":"prototype","kind":"property","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/http-proxy-agent/index"},{"name":"provideDecorations","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/views/explorerDecorationsProvider"},{"name":"provideSelectionRanges","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/smartSelect/smartSelect"},{"name":"provideSignatureHelp","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/parameterHints/provideSignatureHelp"},{"name":"provideSuggestionItems","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggest"},{"name":"Proxy","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ProxyAgent","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-proxy-agent/index"},{"name":"ProxyAuthHandler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-main/auth"},{"name":"ProxyIdentifier","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/proxyIdentifier"},{"name":"pseudoRandomBytes","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"publicDecrypt","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"publicEncrypt","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"PublicKeyCredential","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PushManager","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PushSubscription","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"PushSubscriptionOptions","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"pushToEnd","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"pushToStart","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"Query","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensionQuery"},{"name":"QueryBuilder","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/queryBuilder"},{"name":"QueryGlobTester","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"QueryType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"Queue","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"queueMicrotask","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"QuickAccessController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/quickinput/browser/quickAccess"},{"name":"QuickAccessLeastRecentlyUsedEditorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"QuickAccessLeastRecentlyUsedEditorInGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"QuickAccessNavigateNextAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/quickAccessActions"},{"name":"QuickAccessPreviousEditorFromHistoryAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"QuickAccessPreviousRecentlyUsedEditorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"QuickAccessPreviousRecentlyUsedEditorInGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"QuickAccessRegistry","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/quickinput/common/quickAccess"},{"name":"QuickAccessViewPickerAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/quickaccess/browser/viewQuickAccess"},{"name":"QuickCommandNLS","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standaloneStrings"},{"name":"QuickFixAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionCommands"},{"name":"QuickFixAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersViewActions"},{"name":"QuickFixActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersViewActions"},{"name":"QuickFixController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionCommands"},{"name":"QuickHelpNLS","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standaloneStrings"},{"name":"quickInputBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"QuickInputBox","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/quickinput/browser/quickInputBox"},{"name":"QuickInputButtons","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"QuickInputButtons","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"QuickInputController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/quickinput/browser/quickInput"},{"name":"QuickInputEditorContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/quickInput/standaloneQuickInputServiceImpl"},{"name":"QuickInputEditorWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/quickInput/standaloneQuickInputServiceImpl"},{"name":"quickInputForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"QuickInputList","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/quickinput/browser/quickInputList"},{"name":"QuickInputListFocus","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/quickinput/browser/quickInputList"},{"name":"QuickInputService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/quickinput/browser/quickInput"},{"name":"QuickInputService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/quickinput/browser/quickInputService"},{"name":"quickInputTitleBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"QUICKOPEN_DETAIL_CONFIG","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/browser/taskQuickPick"},{"name":"QUICKOPEN_SKIP_CONFIG","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/browser/taskQuickPick"},{"name":"QuickOutlineNLS","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standaloneStrings"},{"name":"quickPickItemScorerAccessor","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/quickinput/common/quickInput"},{"name":"QuickPickItemScorerAccessor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/quickinput/common/quickInput"},{"name":"QuickSwitchWindow","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"},{"name":"R_OK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"raceCancellation","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"raceTimeout","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"RadioGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/actions"},{"name":"RadioNodeList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RandomAccessReader","kind":"class","kindModifiers":"abstract,export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/yauzl/index"},{"name":"RandomBasedVariableResolver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetVariables"},{"name":"randomBytes","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"randomFill","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"randomFillSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"randomPort","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/ports"},{"name":"RandomSource","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"range","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"Range","kind":"alias","kindModifiers":"","sortText":"0"},{"name":"RangeError","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RangeHighlightDecorations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/rangeDecorations"},{"name":"RangeHighlightDecorations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/searchModel"},{"name":"RangeMap","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/rangeMap"},{"name":"RangesCollector","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/indentRangeProvider"},{"name":"RangesCollector","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/syntaxRangeProvider"},{"name":"RangeUtil","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/lines/rangeUtil"},{"name":"RatingsWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets"},{"name":"RawContentChangedType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelEvents"},{"name":"RawContextKey","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"RawDebugSession","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/rawDebugSession"},{"name":"rawListeners","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"RawObjectReplElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/replModel"},{"name":"rbDelete","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase"},{"name":"rcompare","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"rcompareIdentifiers","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"ReactionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/reactionsAction"},{"name":"ReactionActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/reactionsAction"},{"name":"read","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"Readable","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"stream"},{"name":"ReadableStream","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ReadableStreamReader","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"readableToBuffer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"readCharWidths","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/config/charWidthReader"},{"name":"readdir","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"readdir","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"readDirsInDir","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"readdirSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"readdirSync","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"readdirWithFileTypes","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"readFile","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"readFile","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"readFileSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"readFontInfo","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/config/configuration"},{"name":"readFromStdin","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/stdin"},{"name":"readlink","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"readlinkSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"readonly","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errors"},{"name":"ReadonlyEditorContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"readRawMapping","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/test/electron-browser/keyboardMapperTestUtils"},{"name":"ReadStream","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"ReadStream","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tty"},{"name":"readSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"readTrustedDomains","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/url/common/trustedDomains"},{"name":"readUInt16LE","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"readUInt32BE","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"readUInt32LE","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"readUInt8","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"realcaseSync","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/extpath"},{"name":"realpath","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"realpath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/extpath"},{"name":"realpathSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"realpathSync","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/extpath"},{"name":"ReapplyBreakpointsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"RecommendationWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets"},{"name":"RecommendedExtensionsView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews"},{"name":"recomputeMaxEnd","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/intervalTree"},{"name":"recomputeTreeMetadata","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase"},{"name":"ReconnectionPermanentFailureEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAgentConnection"},{"name":"ReconnectionRunningEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAgentConnection"},{"name":"ReconnectionWaitEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAgentConnection"},{"name":"Recoverable","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"repl"},{"name":"RedoWebviewEditorCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewCommands"},{"name":"RefactorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionCommands"},{"name":"refactorCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeAction"},{"name":"RefCountedStyleSheet","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/services/codeEditorServiceImpl"},{"name":"ReferenceCollection","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/lifecycle"},{"name":"ReferenceError","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ReferenceProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"ReferencesController","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesController"},{"name":"ReferencesModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/referencesModel"},{"name":"ReferenceWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesWidget"},{"name":"Reflect","kind":"module","kindModifiers":"declare","sortText":"4"},{"name":"RefreshAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"RefreshExplorerView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"REFUSED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"REG_BINARY","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"REG_DWORD","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"REG_EXPAND_SZ","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"REG_MULTI_SZ","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"REG_NONE","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"REG_QWORD","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"REG_SZ","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"REG_TYPES","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"winreg"},{"name":"RegexCheckbox","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/findinput/findInputCheckboxes"},{"name":"RegExp","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"regExpContainsBackreference","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"regExpFlags","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"regExpLeadsToEndlessLoop","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"register","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerAction2","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/common/actions"},{"name":"registerCodeActionProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerCodeLensProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerColor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"registerColorProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerColors","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalColorRegistry"},{"name":"registerColorThemeExtensionPoint","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/themeExtensionPoints"},{"name":"registerColorThemeSchemas","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/colorThemeSchema"},{"name":"registerCommands","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"registerCompletionItemProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerConfiguration","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"registerContextMenuListener","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/contextmenu/electron-main/contextmenu"},{"name":"registerContributions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/replaceContributions"},{"name":"registerContributions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchWidget"},{"name":"registerDeclarationProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerDefaultLanguageCommand","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorExtensions"},{"name":"registerDefinitionProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerDiffEditorContribution","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorExtensions"},{"name":"registerDocumentFormattingEditProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerDocumentHighlightProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerDocumentRangeFormattingEditProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerDocumentRangeSemanticTokensProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerDocumentSemanticTokensProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerDocumentSymbolProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerEditorAction","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorExtensions"},{"name":"registerEditorCommand","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorExtensions"},{"name":"registerEditorContribution","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorExtensions"},{"name":"registerFileIconThemeExtensionPoint","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/themeExtensionPoints"},{"name":"registerFileIconThemeSchemas","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/fileIconThemeSchema"},{"name":"registerFileProtocol","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewProtocols"},{"name":"registerFoldingRangeProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerHoverProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerIcon","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/iconRegistry"},{"name":"registerImplementationProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerInstantiatedEditorAction","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorExtensions"},{"name":"registerLanguageCommand","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorExtensions"},{"name":"registerLinkProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerModelAndPositionCommand","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorExtensions"},{"name":"registerModelCommand","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/editorExtensions"},{"name":"registerNotificationCommands","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"registerOnTypeFormattingEditProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerOnTypeRenameProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerOutputTransform","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/notebookRegistry"},{"name":"registerProductIconThemeExtensionPoint","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/themeExtensionPoints"},{"name":"registerProductIconThemeSchemas","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/productIconThemeSchema"},{"name":"registerReferenceProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerRemoteContributions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/electron-browser/terminalRemote"},{"name":"registerRenameProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerSelectionRangeProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerSignatureHelpProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerSingleton","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/instantiation/common/extensions"},{"name":"registerTerminalActions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions"},{"name":"registerTestEditor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"registerTextMime","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/mime"},{"name":"registerThemingParticipant","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/themeService"},{"name":"registerTypeDefinitionProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"registerWindowDriver","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/driver/browser/driver"},{"name":"registerWindowDriver","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/driver/electron-browser/driver"},{"name":"Registry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/registry/common/platform"},{"name":"Registry","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-textmate/release/main"},{"name":"ReindentLinesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentation"},{"name":"ReindentSelectedLinesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/indentation/indentation"},{"name":"ReinstallAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"rejects","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"RelatedInformation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersModel"},{"name":"RelatedInformationRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersTreeViewer"},{"name":"relative","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"path"},{"name":"relative","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"relativePath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"RelativePattern","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"RelativePattern","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"Relay","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/event"},{"name":"RelayURLService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/url/electron-browser/urlService"},{"name":"release","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"release","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"releaseEvents","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"ReleaseNotesManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/update/browser/releaseNotesEditor"},{"name":"ReloadAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ReloadWebviewAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewCommands"},{"name":"ReloadWindowAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/windowActions"},{"name":"ReloadWindowWithExtensionsDisabledAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"},{"name":"remeasureFonts","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"remote","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"REMOTE_EXPLORER_TYPE_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/common/remoteExplorerService"},{"name":"REMOTE_FILE_SYSTEM_CHANNEL_NAME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/common/remoteAgentFileSystemChannel"},{"name":"REMOTE_HOST_SCHEME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteHosts"},{"name":"REMOTE_MACHINE_SCOPES","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"RemoteAgentConnection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/common/abstractRemoteAgentService"},{"name":"RemoteAgentService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/browser/remoteAgentServiceImpl"},{"name":"RemoteAgentService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/electron-browser/remoteAgentServiceImpl"},{"name":"RemoteAuthorities","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/network"},{"name":"RemoteAuthorityResolverError","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"RemoteAuthorityResolverError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAuthorityResolver"},{"name":"RemoteAuthorityResolverError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"RemoteAuthorityResolverErrorCode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/common/remoteAuthorityResolver"},{"name":"RemoteAuthorityResolverService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/browser/remoteAuthorityResolverService"},{"name":"RemoteAuthorityResolverService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/remote/electron-browser/remoteAuthorityResolverService"},{"name":"RemoteBadgeWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets"},{"name":"RemoteConnectionState","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/contextkeys"},{"name":"RemoteDependencyData","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/RemoteDependencyData"},{"name":"RemoteDependencyData","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"RemoteDependencyDataConstants","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Constants"},{"name":"RemoteExtensionEnvironmentChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/common/remoteAgentEnvironmentChannel"},{"name":"RemoteExtensionHostClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/remoteExtensionHostClient"},{"name":"RemoteExtensionLogFileName","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/common/remoteAgentService"},{"name":"RemoteExtensionManagementChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/electron-browser/remoteExtensionManagementIpc"},{"name":"RemoteExtensionsInstaller","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/remoteExtensionsInstaller"},{"name":"RemoteFileDialogContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/contextkeys"},{"name":"RemoteFileSystemProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/common/remoteAgentFileSystemChannel"},{"name":"RemoteFileSystemProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"RemoteInstallAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"RemoteNameContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/contextkeys"},{"name":"RemoteSearchService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/searchService"},{"name":"RemoteUserConfiguration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/browser/configuration"},{"name":"RemoteViewPaneContainer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/remote/browser/remote"},{"name":"RemoteWindowActiveIndicator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/remote/browser/remoteIndicator"},{"name":"REMOVE_ROOT_FOLDER_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"REMOVE_ROOT_FOLDER_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"removeAccents","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/normalization"},{"name":"RemoveAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"RemoveActionId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"RemoveAllBreakpointsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"removeAllListeners","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"removeAllListeners","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"RemoveAllWatchExpressionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"removeAnsiEscapeCodes","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"RemoveBreakpointAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"removeClass","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"removeClasses","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"removeCSSRulesContainingSelector","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"removeElementsAfterNulls","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/keybinding/common/resolvedKeybindingItem"},{"name":"removeEventListener","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"RemoveFromRecentlyOpenedAPICommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/apiCommands"},{"name":"removeFromValueTree","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"removeListener","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"removeListener","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"removeMarkdownEscapes","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/htmlContent"},{"name":"removeNode","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"removeProperty","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/jsonEdit"},{"name":"removeTabIndexAndUpdateFocus","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"removeTrailingPathSeparator","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"rename","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"rename","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"rename","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/rename/rename"},{"name":"RenameAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/rename/rename"},{"name":"renameHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"renameIgnoreError","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"RenameInputField","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/rename/renameInputField"},{"name":"RenameProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"renameSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"renderCodicons","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/codicons"},{"name":"RenderedLinesCollection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/view/viewLayer"},{"name":"Renderer","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/marked/marked"},{"name":"Renderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsList"},{"name":"rendererLogChannelId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/logs/common/logConstants"},{"name":"renderExpressionValue","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/baseDebugView"},{"name":"renderFormattedText","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/formattedTextRenderer"},{"name":"RenderIndentGuides","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/abstractTree"},{"name":"RenderingContext","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/renderingContext"},{"name":"RenderLineInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/viewLineRenderer"},{"name":"RenderLineNumbersType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"RenderLineNumbersType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"RenderLineOutput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/viewLineRenderer"},{"name":"RenderLineOutput2","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/viewLineRenderer"},{"name":"renderMarkdown","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/markdownRenderer"},{"name":"renderMarkdownDocument","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markdown/common/markdownDocumentRenderer"},{"name":"RenderMinimap","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"RenderMinimap","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"renderText","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/formattedTextRenderer"},{"name":"renderVariable","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/baseDebugView"},{"name":"renderViewLine","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/viewLineRenderer"},{"name":"renderViewLine2","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/viewLineRenderer"},{"name":"renderViewTree","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/baseDebugView"},{"name":"RenderWhitespace","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/viewLineRenderer"},{"name":"ReopenClosedEditorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"ReopenResourcesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"repeat","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"Repl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/repl"},{"name":"REPL_MODE_SLOPPY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"repl"},{"name":"REPL_MODE_STRICT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"repl"},{"name":"REPL_VIEW_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"ReplAccessibilityProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/replViewer"},{"name":"ReplaceAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"ReplaceActionId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"ReplaceActiveKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"ReplaceAllAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"ReplaceAllCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/replaceAllCommand"},{"name":"ReplaceAllInFileActionId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"ReplaceAllInFolderAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"ReplaceAllInFolderActionId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"ReplaceCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/commands/replaceCommand"},{"name":"ReplaceCommandThatPreservesSelection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/commands/replaceCommand"},{"name":"ReplaceCommandThatSelectsText","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/commands/replaceCommand"},{"name":"ReplaceCommandWithOffsetCursorState","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/commands/replaceCommand"},{"name":"ReplaceCommandWithoutChangingPosition","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/commands/replaceCommand"},{"name":"ReplaceInFilesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"ReplaceInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/findinput/replaceInput"},{"name":"ReplaceInputBoxFocusedKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"ReplacePattern","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/replacePattern"},{"name":"ReplacePattern","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/replace"},{"name":"ReplacePiece","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/replacePattern"},{"name":"ReplacePreviewContentProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/replaceService"},{"name":"ReplaceService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/replaceService"},{"name":"ReplDataSource","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/replViewer"},{"name":"ReplDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/replViewer"},{"name":"ReplEvaluationInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/replModel"},{"name":"ReplEvaluationInputsRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/replViewer"},{"name":"ReplEvaluationResult","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/replModel"},{"name":"ReplEvaluationResultsRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/replViewer"},{"name":"ReplGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/replModel"},{"name":"ReplGroupRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/replViewer"},{"name":"ReplModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/replModel"},{"name":"ReplRawObjectsRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/replViewer"},{"name":"REPLServer","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"repl"},{"name":"ReplSimpleElementsRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/replViewer"},{"name":"ReplVariablesRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/replViewer"},{"name":"report","kind":"property","kindModifiers":"declare,optional","sortText":"5","hasAction":true,"source":"process"},{"name":"reporters","kind":"module","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"mocha"},{"name":"ReportExtensionIssueAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor"},{"name":"ReportPerformanceIssueUsingReporterAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/issue/electron-browser/issueActions"},{"name":"RepositoryPane","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/repositoryPane"},{"name":"RepositoryViewDescriptor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/repositoryPane"},{"name":"request","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"http"},{"name":"request","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"https"},{"name":"request","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/request/browser/request"},{"name":"Request","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"requestAnimationFrame","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"RequestChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/request/common/requestIpc"},{"name":"RequestChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/request/common/requestIpc"},{"name":"RequestData","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/RequestData"},{"name":"RequestData","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"RequestInitiator","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/rpcProtocol"},{"name":"RequestMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/request/electron-main/requestMainService"},{"name":"RequestService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/request/browser/requestService"},{"name":"RequestService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/request/node/requestService"},{"name":"RequestType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc"},{"name":"require","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RequireInterceptor","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostRequireInterceptor"},{"name":"RerunSearchEditorSearchAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions"},{"name":"RerunSearchEditorSearchCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"ResetFocusedViewLocationAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"ResetGroupSizesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"resetSentinel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase"},{"name":"ResetViewLocationsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"resizeBy","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"resizeTo","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"resolve","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"resolve","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"path"},{"name":"resolve","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"url"},{"name":"resolve","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"resolve4","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"resolve6","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"resolveAny","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"resolveCname","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"resolveColorValue","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"resolveCommonProperties","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/node/commonProperties"},{"name":"ResolvedAuthority","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"ResolvedAuthority","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"ResolvedKeybinding","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keyCodes"},{"name":"ResolvedKeybindingItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/keybinding/common/resolvedKeybindingItem"},{"name":"ResolvedKeybindingPart","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keyCodes"},{"name":"resolveExtensionsSettings","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"resolveMarketplaceHeaders","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionGalleryService"},{"name":"resolveMx","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"resolveNaptr","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"resolveNs","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"resolvePath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"resolvePatternsForProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"resolvePtr","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"Resolver","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"resolveSettingsTree","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"resolveSoa","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"resolveSrv","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"resolveTerminalEncoding","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/terminalEncoding"},{"name":"resolveTxt","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"resolveWorkbenchCommonProperties","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/browser/workbenchCommonProperties"},{"name":"resolveWorkbenchCommonProperties","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/node/workbenchCommonProperties"},{"name":"ResourceContextKey","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/resources"},{"name":"ResourceDragAndDrop","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersTreeViewer"},{"name":"ResourceEditorInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor/resourceEditorInput"},{"name":"ResourceEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor/resourceEditorModel"},{"name":"ResourceGlobMatcher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"ResourceGlobMatcher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/resources"},{"name":"ResourceLabel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/labels"},{"name":"ResourceLabels","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/labels"},{"name":"resourceLanguageSettingsSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationRegistry"},{"name":"ResourceMap","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/map"},{"name":"ResourceMarkers","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersModel"},{"name":"ResourceMarkersRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersTreeViewer"},{"name":"ResourceQueue","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"ResourcesDropHandler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/dnd"},{"name":"ResourceSelectedForCompareContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"resourceSettings","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationRegistry"},{"name":"resourcesPath","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"ResourceTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resourceTree"},{"name":"resourceUsage","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"ResourceWithCommentsRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentsTreeViewer"},{"name":"ResourceWithCommentThreads","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/common/commentModel"},{"name":"Response","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ResponseType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc"},{"name":"ResponsiveState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/rpcProtocol"},{"name":"RESTART_FRAME_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"RESTART_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"RESTART_SESSION_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"restore","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"restoreFontInfo","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/config/configuration"},{"name":"restoreParentsScrollTop","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"restoreRecentlyOpened","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"restoreWindowsState","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/electron-main/windowsStateStorage"},{"name":"RestrictedRenderingContext","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/renderingContext"},{"name":"resultIsMatch","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"retry","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"return","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"REVEAL_IN_EXPLORER_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"RevealInSideBarForSearchResults","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"RevealKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"RevealLine_","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/coreCommands"},{"name":"RevealProblemKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"revealResourcesInOS","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/electron-browser/fileCommands"},{"name":"RevealTarget","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorCommon"},{"name":"reverse","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"REVERSE_CONTINUE_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"REVERT_FILE_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"RevertAndCloseEditorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"revertLocalChangesCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler"},{"name":"ReviewViewZone","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentsEditorContribution"},{"name":"ReviewZoneWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/commentThreadWidget"},{"name":"revive","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/marshalling"},{"name":"reviveQuery","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostSearch"},{"name":"reviveWebviewExtensionDescription","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewEditorInputFactory"},{"name":"reviveWorkspaceEditDto","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHost.protocol"},{"name":"reviveWorkspaceIdentifier","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"rewriteAbsolutePaths","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"v8-inspect-profiler"},{"name":"rewriteWorkspaceFileForNewLocation","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"RGBA","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/color"},{"name":"RGBA8","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/rgba"},{"name":"rgErrorMsgForDisplay","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/fileSearch"},{"name":"rgErrorMsgForDisplay","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepTextSearchEngine"},{"name":"rgPath","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-ripgrep/lib/index"},{"name":"RichEditBracket","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/richEditBrackets"},{"name":"RichEditBrackets","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/richEditBrackets"},{"name":"RichEditSupport","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/languageConfigurationRegistry"},{"name":"rightRotate","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase"},{"name":"righttest","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase"},{"name":"rimraf","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"RimRafMode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"rimrafSync","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"RipgrepParser","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepTextSearchEngine"},{"name":"RipgrepSearchProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepSearchProvider"},{"name":"RipgrepTextSearchEngine","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepTextSearchEngine"},{"name":"rmdir","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"rmdirSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"rootCertificates","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tls"},{"name":"rot","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/numbers"},{"name":"RotatingLogger","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/spdlog/index"},{"name":"RowCache","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/rowCache"},{"name":"RPCProtocol","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/rpcProtocol"},{"name":"RSA_NO_PADDING","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"RSA_PKCS1_OAEP_PADDING","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"RSA_PKCS1_PADDING","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"RSA_PKCS1_PSS_PADDING","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"RSA_SSLV23_PADDING","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"RSA_X931_PADDING","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"rsort","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"RTCCertificate","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCDataChannel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCDataChannelEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCDtlsTransport","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCDtlsTransportStateChangedEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCDtmfSender","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCDTMFSender","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCDTMFToneChangeEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCError","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCErrorEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCIceCandidate","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCIceCandidatePairChangedEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCIceGatherer","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCIceGathererEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCIceTransport","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCIceTransportStateChangedEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCIdentityAssertion","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCPeerConnection","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCPeerConnectionIceErrorEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCPeerConnectionIceEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCRtpReceiver","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCRtpSender","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCRtpTransceiver","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCSctpTransport","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCSessionDescription","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCSrtpSdesTransport","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCSsrcConflictEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCStatsEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCStatsProvider","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCStatsReport","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"RTCTrackEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"rtrim","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"Rulers","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/rulers/rulers"},{"name":"run","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"RunAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"runAtThisOrScheduleAtNextAnimationFrame","kind":"let","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"RunAutomaticTasks","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/browser/runAutomaticTasks"},{"name":"runInContext","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"vm"},{"name":"runInExternalTerminal","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/node/terminals"},{"name":"runInNewContext","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"vm"},{"name":"runInThisContext","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"vm"},{"name":"runMain","kind":"method","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"module"},{"name":"RunOnceScheduler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"RunOnceWorker","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"RunOnOptions","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"RunOnOptions","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskConfiguration"},{"name":"RunOptions","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"RunOptions","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskConfiguration"},{"name":"RuntimeExtensionsEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor"},{"name":"RuntimeExtensionsInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsInput"},{"name":"RuntimeType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"RunToCursorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugEditorActions"},{"name":"runWhenIdle","kind":"let","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"S_IFBLK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IFCHR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IFDIR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IFIFO","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IFLNK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IFMT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IFREG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IFSOCK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IRGRP","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IROTH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IRUSR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IRWXG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IRWXO","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IRWXU","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IWGRP","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IWOTH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IWUSR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IXGRP","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IXOTH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"S_IXUSR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"safeBtoa","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"safeStringify","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/objects"},{"name":"sandbox","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"sandboxed","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"sanitize","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchCommon"},{"name":"sanitizeFilePath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/extpath"},{"name":"sanitizeGridNodeDescriptor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/grid/grid"},{"name":"sanitizeProcessEnvironment","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/processes"},{"name":"sanitizeRanges","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/syntaxRangeProvider"},{"name":"Sash","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/sash/sash"},{"name":"SashState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/sash/sash"},{"name":"satisfies","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"SAVE_ALL_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"SAVE_ALL_IN_GROUP_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"SAVE_ALL_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"SAVE_FILE_AS_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"SAVE_FILE_AS_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"SAVE_FILE_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"SAVE_FILE_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"SAVE_FILE_WITHOUT_FORMATTING_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"SAVE_FILE_WITHOUT_FORMATTING_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"SAVE_FILES_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"SaveAllAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"SaveAllInGroupAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"SaveExtensionHostProfileAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor"},{"name":"SaveLocalFileCommand","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/dialogs/browser/simpleFileDialog"},{"name":"saveParentsScrollTop","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"SaveParticipant","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/mainThreadSaveParticipant"},{"name":"SaveParticipantsContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/saveParticipants"},{"name":"SaveReason","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"SaveWorkspaceAsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/workspaceActions"},{"name":"ScanCode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/scanCode"},{"name":"ScanCodeBinding","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/scanCode"},{"name":"ScanCodeUtils","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/scanCode"},{"name":"ScanError","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"Scanner","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetParser"},{"name":"scheduleAtNextAnimationFrame","kind":"let","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"schema","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionsRegistry"},{"name":"schema","kind":"alias","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/jsonSchemaCommon"},{"name":"schema","kind":"alias","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/jsonSchema_v1"},{"name":"schema","kind":"alias","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/jsonSchema_v2"},{"name":"Schemas","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/network"},{"name":"Schemas","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemMatcher"},{"name":"scm","kind":"module","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SCMAccessibilityProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/repositoryPane"},{"name":"SCMMenus","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/menus"},{"name":"SCMService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/common/scmService"},{"name":"SCMStatusController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/activity"},{"name":"SCMTreeKeyboardNavigationLabelProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/repositoryPane"},{"name":"SCMTreeSorter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/repositoryPane"},{"name":"SCMViewPaneContainer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/scmViewlet"},{"name":"Scope","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"ScopedCredential","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ScopedCredentialInfo","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ScopedLineTokens","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports"},{"name":"score","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/languageSelector"},{"name":"scoreFuzzy","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/fuzzyScorer"},{"name":"scoreFuzzy2","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/fuzzyScorer"},{"name":"scoreItemFuzzy","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/fuzzyScorer"},{"name":"screen","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"screen","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"Screen","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"screenLeft","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ScreenOrientation","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"screenTop","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"screenX","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"screenY","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Script","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"vm"},{"name":"ScriptProcessorNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"scroll","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"Scrollable","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/scrollable"},{"name":"ScrollableElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/scrollbar/scrollableElement"},{"name":"ScrollbarArrow","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/scrollbar/scrollbarArrow"},{"name":"scrollbars","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"scrollbarShadow","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"scrollbarSliderActiveBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"scrollbarSliderBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"scrollbarSliderHoverBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"ScrollbarState","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/scrollbar/scrollbarState"},{"name":"ScrollbarVisibility","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/scrollable"},{"name":"ScrollbarVisibility","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"ScrollbarVisibilityController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/scrollbar/scrollbarVisibilityController"},{"name":"scrollBy","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"ScrollDecorationViewPart","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration"},{"name":"ScrollPosition","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/addons/commandTrackerAddon"},{"name":"ScrollState","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/scrollable"},{"name":"scrollTo","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"ScrollType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/editorCommon"},{"name":"ScrollType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"scrollX","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"scrollY","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"scrypt","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"scryptSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"sdkVersion","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Context"},{"name":"SEARCH_EXCLUDE_CONFIG","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"SearchAccessibilityProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchResultsView"},{"name":"SearchAddon","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/xterm-addon-search/typings/xterm-addon-search"},{"name":"SearchChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/searchIpc"},{"name":"SearchChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/searchIpc"},{"name":"SearchCompletionExitCode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"SearchData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelSearch"},{"name":"SearchDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchResultsView"},{"name":"SearchDND","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchResultsView"},{"name":"SearchEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditor"},{"name":"SearchEditorBodyScheme","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"searchEditorFindMatch","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"searchEditorFindMatchBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"SearchEditorFindMatchClass","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"SearchEditorID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"SearchEditorInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorInput"},{"name":"SearchEditorScheme","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"searchEditorTextInputBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditor"},{"name":"Searcher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelSearch"},{"name":"SearchError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"SearchErrorCode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"SearchHistoryService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/searchHistoryService"},{"name":"SearchInputBoxFocusedKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"searchMatchComparer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/searchModel"},{"name":"SearchModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/searchModel"},{"name":"SearchParams","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelSearch"},{"name":"SearchProviderType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"SearchRange","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"SearchResult","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/searchModel"},{"name":"SearchResultIdx","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTreeModels"},{"name":"SearchResultModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTreeModels"},{"name":"SearchService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/searchService"},{"name":"SearchService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/rawSearchService"},{"name":"SearchSortOrder","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"SearchView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchView"},{"name":"SearchViewFocusedKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"SearchViewPosition","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchView"},{"name":"SearchViewVisibleKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"SearchWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesWidgets"},{"name":"SearchWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchWidget"},{"name":"SearchWorkbenchService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/searchModel"},{"name":"SecurityPolicyViolationEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SELECT_FOR_COMPARE_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileCommands"},{"name":"SelectActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/actionbar/actionbar"},{"name":"selectAllSearchEditorMatchesCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions"},{"name":"SelectAllSearchEditorMatchesCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"SelectAllTerminalAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions"},{"name":"SelectAllWebviewEditorCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewCommands"},{"name":"SelectAndStartAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"selectBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"selectBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"SelectBox","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/selectBox/selectBox"},{"name":"SelectBoxList","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/selectBox/selectBoxCustom"},{"name":"SelectBoxNative","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/selectBox/selectBoxNative"},{"name":"SelectColorThemeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/themes/browser/themes.contribution"},{"name":"SelectDefaultShellWindowsTerminalAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions"},{"name":"selectForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"SelectHighlightsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/multicursor/multicursor"},{"name":"Selection","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Selection","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"Selection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/selection"},{"name":"Selection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"Selection","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"Selection","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/editor.api"},{"name":"selectionBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"SelectionBasedVariableResolver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetVariables"},{"name":"SelectionClipboard","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/electron-browser/selectionClipboard"},{"name":"SelectionClipboardContributionID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/selectionClipboard"},{"name":"SelectionDirection","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/selection"},{"name":"SelectionDirection","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"SelectionDirection","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/editor.api"},{"name":"SelectionHighlighter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/multicursor/multicursor"},{"name":"SelectionMatchFindAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"SelectionRange","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SelectionRange","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"SelectionRange","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"SelectionRangeRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"SelectionsOverlay","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/selections/selections"},{"name":"selectListBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"selectorPattern","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry"},{"name":"self","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SEMANTIC_HIGHLIGHTING_SETTING_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/modelServiceImpl"},{"name":"SemanticTokens","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SemanticTokens","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"SemanticTokensBuilder","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SemanticTokensBuilder","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"SemanticTokensEdit","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SemanticTokensEdit","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"SemanticTokensEdits","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SemanticTokensEdits","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"SemanticTokensHelp","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/semanticTokensHelp"},{"name":"SemanticTokensLegend","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SemanticTokensLegend","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"SemanticTokensProviderStyling","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/semanticTokensProviderStyling"},{"name":"SemanticTokensProviderStylingConstants","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/semanticTokensProviderStyling"},{"name":"SemVer","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"SEMVER_SPEC_VERSION","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"send","kind":"method","kindModifiers":"declare,optional","sortText":"5","hasAction":true,"source":"process"},{"name":"Sender","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Sender"},{"name":"SENTINEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/intervalTree"},{"name":"SENTINEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase"},{"name":"sep","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"path"},{"name":"sep","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"Separator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/actionbar/actionbar"},{"name":"sequence","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"Sequence","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/sequence"},{"name":"Sequencer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"SerializableFileMatch","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"SerializableGrid","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/grid/grid"},{"name":"serialize","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"v8"},{"name":"serializeEnvironmentVariableCollection","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/environmentVariableShared"},{"name":"serializeFontInfo","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/config/configuration"},{"name":"serializePipePositions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/test/wordTestUtils"},{"name":"Serializer","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"v8"},{"name":"serializeSearchConfiguration","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorSerialization"},{"name":"serializeSearchError","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"serializeSearchResultForEditor","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorSerialization"},{"name":"serve","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/node/ipc.net"},{"name":"serve","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/driver/electron-main/driver"},{"name":"Server","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"http"},{"name":"Server","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"https"},{"name":"Server","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"net"},{"name":"Server","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tls"},{"name":"Server","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/electron-main/ipc.electron-main"},{"name":"Server","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/node/ipc.cp"},{"name":"Server","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/node/ipc.net"},{"name":"ServerExtensionsView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews"},{"name":"ServerResponse","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"http"},{"name":"SERVFAIL","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"SERVICE_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensions"},{"name":"ServiceCollection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/instantiation/common/serviceCollection"},{"name":"ServiceUIFrameContext","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ServiceWorker","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ServiceWorkerContainer","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ServiceWorkerMessageEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ServiceWorkerRegistration","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"session","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"Session","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"inspector"},{"name":"Session","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"sessionStorage","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Set","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SET_CONTEXT_COMMAND_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/contextkey/common/contextkey"},{"name":"setARIAContainer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/aria/aria"},{"name":"setAsyncMode","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/spdlog/index"},{"name":"setCollapseStateAtLevel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/foldingModel"},{"name":"setCollapseStateForMatchingLines","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/foldingModel"},{"name":"setCollapseStateForType","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/foldingModel"},{"name":"setCollapseStateLevelsDown","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/foldingModel"},{"name":"setCollapseStateLevelsUp","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/foldingModel"},{"name":"setCollapseStateUp","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/foldingModel"},{"name":"SetColorThemeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"SetEditorLayoutAPICommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/apiCommands"},{"name":"setegid","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"seteuid","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"setFdLimit","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"SetFileIconThemeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"setFlagsFromString","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"v8"},{"name":"setFullscreen","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"setgid","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"setGlobalLeakWarningThreshold","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/event"},{"name":"setgroups","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"setImmediate","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"setImmediate","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"timers"},{"name":"setImmediate","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"setInterval","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"setInterval","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"timers"},{"name":"setLanguageConfiguration","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"SetLogLevelAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/logs/common/logsActions"},{"name":"SetMap","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/collections"},{"name":"setMaxListeners","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"setMaxListeners","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"setModelLanguage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"setModelMarkers","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"setMonarchTokensProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"setNodeStickiness","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/intervalTree"},{"name":"setOptions","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/marked/marked"},{"name":"SetPanelPositionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/panel/panelActions"},{"name":"setPassword","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/keytar/keytar"},{"name":"setPassword","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/keytar/index"},{"name":"setPriority","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"SetProductIconThemeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"setProperty","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/jsonEdit"},{"name":"setServers","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"setSnippetSuggestSupport","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggest"},{"name":"setTheme","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"setTimeout","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"setTimeout","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"timers"},{"name":"SettingArrayRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"SettingBoolRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"SettingComplexRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"SettingEnumRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"SettingExcludeRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"SettingGroupRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"settingKeyToDisplayFormat","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTreeModels"},{"name":"SettingMatches","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesSearch"},{"name":"SettingNewExtensionsRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"SettingNumberRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"settings","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"SETTINGS_COMMAND_OPEN_SETTINGS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"SETTINGS_EDITOR_COMMAND_CLEAR_SEARCH_RESULTS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"SETTINGS_EDITOR_COMMAND_EDIT_FOCUSED_SETTING","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"SETTINGS_EDITOR_COMMAND_FILTER_MODIFIED","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"SETTINGS_EDITOR_COMMAND_FILTER_ONLINE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"SETTINGS_EDITOR_COMMAND_FOCUS_FILE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"SETTINGS_EDITOR_COMMAND_FOCUS_NEXT_SETTING","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"SETTINGS_EDITOR_COMMAND_FOCUS_PREVIOUS_SETTING","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"SETTINGS_EDITOR_COMMAND_FOCUS_SETTINGS_FROM_SEARCH","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"SETTINGS_EDITOR_COMMAND_FOCUS_SETTINGS_LIST","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"SETTINGS_EDITOR_COMMAND_FOCUS_TOC","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"SETTINGS_EDITOR_COMMAND_SEARCH","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"SETTINGS_EDITOR_COMMAND_SHOW_CONTEXT_MENU","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"SETTINGS_EDITOR_COMMAND_SWITCH_TO_JSON","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/preferences"},{"name":"Settings2EditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesModels"},{"name":"SettingsChangeRelauncher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/relauncher/browser/relauncher.contribution"},{"name":"settingsCheckboxBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"settingsCheckboxBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"settingsCheckboxForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"SettingsEditor2","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsEditor2"},{"name":"SettingsEditor2Input","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesEditorInput"},{"name":"SettingsEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesModels"},{"name":"SettingsEditorOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferences"},{"name":"SettingsGroupTitleRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesRenderers"},{"name":"SettingsGroupTitleWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesWidgets"},{"name":"settingsHeaderForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"SettingsHeaderWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesWidgets"},{"name":"settingsNumberInputBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"settingsNumberInputBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"settingsNumberInputForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"settingsSelectBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"settingsSelectBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"settingsSelectForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"settingsSelectListBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"SettingsSynchroniser","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/settingsSync"},{"name":"SettingsTargetsWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesWidgets"},{"name":"settingsTextInputBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"settingsTextInputBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"settingsTextInputForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsWidgets"},{"name":"SettingsTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"SettingsTreeElement","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTreeModels"},{"name":"SettingsTreeFilter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"SettingsTreeGroupElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTreeModels"},{"name":"SettingsTreeModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTreeModels"},{"name":"SettingsTreeNewExtensionsElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTreeModels"},{"name":"SettingsTreeSettingElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTreeModels"},{"name":"SettingTextRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"SettingTreeRenderers","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsTree"},{"name":"SettingValueType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferences"},{"name":"setTokensProvider","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"setToString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/map"},{"name":"setuid","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"setUncaughtExceptionCaptureCallback","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"setUnexpectedErrorHandler","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errors"},{"name":"setup","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"setup","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"setup","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/applicationinsights"},{"name":"setupMaster","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"setupTerminalCommands","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalCommands"},{"name":"setupTerminalMenu","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalMenu"},{"name":"setWordDefinitionFor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDocumentData"},{"name":"setZoomFactor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"setZoomLevel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/browser"},{"name":"Severity","kind":"alias","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/severity"},{"name":"Severity","kind":"alias","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/notification/common/notification"},{"name":"SeverityIcon","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/severityIcon/common/severityIcon"},{"name":"SeverityLevel","kind":"enum","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/SeverityLevel"},{"name":"SeverityLevel","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"shadowCaretRangeFromPoint","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/mouseTarget"},{"name":"ShadowRoot","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SharedArrayBuffer","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"sharedLogChannelId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/logs/common/logConstants"},{"name":"SharedProcess","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-main/sharedProcess"},{"name":"SharedProcessMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/ipc/electron-main/sharedProcessMainService"},{"name":"SharedProcessService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/sharedProcess/electron-browser/sharedProcessService"},{"name":"SharedWorker","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"shell","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"SHELL_CWD_INVALID_EXIT_CODE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"SHELL_PATH_DIRECTORY_EXIT_CODE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"SHELL_PATH_INVALID_EXIT_CODE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"ShellExecution","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"ShellExecution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"ShellExecutionDTO","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTask"},{"name":"ShellExecutionOptionsDTO","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTask"},{"name":"ShellQuoting","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"ShellQuoting","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"ShellQuoting","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"ShellQuoting","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskConfiguration"},{"name":"shift","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/list/rangeMap"},{"name":"ShiftCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/commands/shiftCommand"},{"name":"shorten","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/labels"},{"name":"shouldSetLangEnvVariable","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalEnvironment"},{"name":"shouldSynchronizeModel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/modelService"},{"name":"show","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"SHOW_EDITORS_IN_GROUP","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"SHOW_NOTIFICATIONS_CENTER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"ShowActiveFileInExplorer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"ShowAllCommandsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess"},{"name":"ShowAllEditorsByAppearanceAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"ShowAllEditorsByMostRecentlyUsedAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"ShowAzureExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ShowBuiltInExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ShowCandidateContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/remote/common/showCandidate"},{"name":"ShowCurrentReleaseNotesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/update/browser/update"},{"name":"ShowCurrentReleaseNotesActionId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/update/common/update"},{"name":"ShowDisabledExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ShowEditorsInActiveGroupByMostRecentlyUsedAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"ShowEnabledExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"showExtensionQuery","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/format/browser/showExtensionQuery"},{"name":"ShowInstalledExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ShowLanguageExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorStatus"},{"name":"ShowLanguageExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ShowNextChangeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"ShowNextWindowTabHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"},{"name":"ShowOpenedFileInNewWindow","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"ShowOutdatedExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ShowPopularExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ShowPreviousChangeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator"},{"name":"ShowPreviousWindowTabHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"},{"name":"ShowProblemsPanelAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersViewActions"},{"name":"ShowRecommendationsOnlyOnDemandKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensions"},{"name":"ShowRecommendedExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ShowRecommendedKeymapExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ShowReleaseNotesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/update/browser/update"},{"name":"ShowRuntimeExtensionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor"},{"name":"showSimpleSuggestions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggest"},{"name":"ShowViewletAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/viewlet"},{"name":"ShowWebViewEditorFindWidgetAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewCommands"},{"name":"shuffle","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"ShutdownReason","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/lifecycle/common/lifecycle"},{"name":"SIDE_BAR_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"SIDE_BAR_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"SIDE_BAR_DRAG_AND_DROP_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"SIDE_BAR_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"SIDE_BAR_SECTION_HEADER_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"SIDE_BAR_SECTION_HEADER_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"SIDE_BAR_SECTION_HEADER_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"SIDE_BAR_TITLE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"SIDE_GROUP","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/common/editorService"},{"name":"SidebarFocusContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/viewlet"},{"name":"SidebarPart","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/sidebar/sidebarPart"},{"name":"SideBarVisibleContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/viewlet"},{"name":"SideBySideEditor","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"SideBySideEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/sideBySideEditor"},{"name":"SideBySideEditorInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"SIGABRT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGALRM","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGBREAK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGBUS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGCHLD","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGCONT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGFPE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGHUP","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGILL","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGINT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGIO","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGIOT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGKILL","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"sign","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"SIGN_SERVICE_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/sign/common/sign"},{"name":"SignatureHelp","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SignatureHelp","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"SignatureHelp","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"SignatureHelpProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"SignatureHelpTriggerKind","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SignatureHelpTriggerKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"SignatureHelpTriggerKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"SignatureHelpTriggerKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"SignatureInformation","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SignatureInformation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"SignatureInformation","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"Signer","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"SignService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/sign/browser/signService"},{"name":"SignService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/sign/node/signService"},{"name":"SIGPIPE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGPOLL","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGPROF","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGPWR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGQUIT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGSEGV","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGSTKFLT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGSTOP","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGSYS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGTERM","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGTRAP","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGTSTP","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGTTIN","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGTTOU","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGUNUSED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGURG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGUSR1","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGUSR2","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGVTALRM","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGWINCH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGXCPU","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SIGXFSZ","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SimpleBreadcrumbsItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/breadcrumbs/breadcrumbsWidget"},{"name":"SimpleBulkEditService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"SimpleButton","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findWidget"},{"name":"SimpleCheckbox","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/checkbox/checkbox"},{"name":"simpleCheckboxBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"simpleCheckboxBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"simpleCheckboxForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"SimpleCommentEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/simpleCommentEditor"},{"name":"SimpleConfigurationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"SimpleDialogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"SimpleEditorModelResolverService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"SimpleEditorProgressService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"SimpleFileDialog","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/dialogs/browser/simpleFileDialog"},{"name":"SimpleFindReplaceWidget","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/find/simpleFindReplaceWidget"},{"name":"SimpleFindWidget","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/find/simpleFindWidget"},{"name":"SimpleKeybinding","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keyCodes"},{"name":"SimpleLayoutService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"SimpleModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"SimpleNotificationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"SimpleReplElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/replModel"},{"name":"SimpleResourceConfigurationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"SimpleResourcePropertiesService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"SimpleServicesNLS","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standaloneStrings"},{"name":"SimpleUriLabelService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"SimpleWorkerClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/worker/simpleWorker"},{"name":"SimpleWorkerServer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/worker/simpleWorker"},{"name":"SimpleWorkspaceContextService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"SingleCursorState","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorCommon"},{"name":"SingleEditorGroupsContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"singleLetterHash","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"SingleLineInputHeight","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchWidget"},{"name":"SingleModelEditStackElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/editStack"},{"name":"singlePagePager","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/paging"},{"name":"SingleProxyRPCProtocol","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/api/testRPCProtocol"},{"name":"sinon","kind":"alias","kindModifiers":"declare","sortText":"4"},{"name":"Sinon","kind":"var","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"size","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"size","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/collections"},{"name":"Sizing","kind":"type","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/splitview/splitview"},{"name":"Sizing","kind":"type","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/grid/grid"},{"name":"SlicedLineTokens","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/lineTokens"},{"name":"SlowBuffer","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"buffer"},{"name":"SlowExtensionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/extensionsSlowActions"},{"name":"SmartSnippetInserter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/common/smartSnippetInserter"},{"name":"SmoothScrollableElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/scrollbar/scrollableElement"},{"name":"SmoothScrollingOperation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/scrollable"},{"name":"SmoothScrollingUpdate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/scrollable"},{"name":"snapshotToString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/common/textfiles"},{"name":"SnapUpdateService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/update/electron-main/updateService.snap"},{"name":"Snippet","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/snippets/browser/snippetsFile"},{"name":"SnippetCompletion","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/snippets/browser/snippetCompletionProvider"},{"name":"SnippetCompletionProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/snippets/browser/snippetCompletionProvider"},{"name":"SnippetController2","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetController2"},{"name":"SnippetFile","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/snippets/browser/snippetsFile"},{"name":"snippetFinalTabstopHighlightBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"snippetFinalTabstopHighlightBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"SnippetParser","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetParser"},{"name":"SnippetSession","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetSession"},{"name":"SnippetSortOrder","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggest"},{"name":"SnippetSource","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/snippets/browser/snippetsFile"},{"name":"SnippetsSynchroniser","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/snippetsSync"},{"name":"SnippetString","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SnippetString","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"snippetTabstopHighlightBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"snippetTabstopHighlightBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"Socket","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dgram"},{"name":"Socket","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"net"},{"name":"SocketDebugAdapter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/node/debugAdapter"},{"name":"sort","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"SortBy","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"sortedDiff","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"Sorter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree"},{"name":"SortLinesAscendingAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"SortLinesCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/sortLinesCommand"},{"name":"SortLinesDescendingAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"sortMimeTypes","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/common/notebookCommon"},{"name":"SortOrder","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"SortOrder","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"Source","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/processes"},{"name":"Source","kind":"alias","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/processes"},{"name":"Source","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugSource"},{"name":"SourceAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionCommands"},{"name":"sourceActionCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeAction"},{"name":"SourceBreakpoint","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SourceBreakpoint","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"SourceBuffer","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SourceBufferList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SourceControlInputBoxValidationType","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SourceControlInputBoxValidationType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"SparseEncodedTokens","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/tokensStore"},{"name":"spawn","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"child_process"},{"name":"spawn","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"node-pty"},{"name":"spawnRipgrepCmd","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepFileSearch"},{"name":"spawnSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"child_process"},{"name":"SpdLogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/log/node/spdlogService"},{"name":"specify","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SpeechGrammar","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SpeechGrammarList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SpeechRecognition","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SpeechRecognitionAlternative","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SpeechRecognitionEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SpeechRecognitionResult","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SpeechRecognitionResultList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"speechSynthesis","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SpeechSynthesis","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SpeechSynthesisErrorEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SpeechSynthesisEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SpeechSynthesisUtterance","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SpeechSynthesisVoice","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SPLIT_EDITOR_DOWN","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"SPLIT_EDITOR_LEFT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"SPLIT_EDITOR_RIGHT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"SPLIT_EDITOR_UP","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"splitEditor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"SplitEditorAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"SplitEditorDownAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"SplitEditorLeftAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"SplitEditorOrthogonalAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"SplitEditorRightAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"SplitEditorsVertically","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"SplitEditorUpAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"splitGlobAware","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/glob"},{"name":"SplitInActiveWorkspaceTerminalAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions"},{"name":"SplitLine","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/splitLinesCollection"},{"name":"SplitLinesCollection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/splitLinesCollection"},{"name":"splitName","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/labels"},{"name":"SplitTerminalAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions"},{"name":"SplitView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/splitview/splitview"},{"name":"spreadGlobComponents","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepTextSearchEngine"},{"name":"spy","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"SQLiteStorageDatabase","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/storage/node/storage"},{"name":"SSL_OP_ALL","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_CIPHER_SERVER_PREFERENCE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_CISCO_ANYCONNECT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_COOKIE_EXCHANGE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_CRYPTOPRO_TLSEXT_BUG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_EPHEMERAL_RSA","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_LEGACY_SERVER_CONNECT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_MICROSOFT_SESS_ID_BUG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_MSIE_SSLV2_RSA_PADDING","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_NETSCAPE_CA_DN_BUG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_NETSCAPE_CHALLENGE_BUG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_NO_COMPRESSION","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_NO_QUERY_MTU","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_NO_SSLv2","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_NO_SSLv3","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_NO_TICKET","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_NO_TLSv1","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_NO_TLSv1_1","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_NO_TLSv1_2","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_PKCS1_CHECK_1","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_PKCS1_CHECK_2","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_SINGLE_DH_USE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_SINGLE_ECDH_USE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_SSLEAY_080_CLIENT_DH_BUG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_TLS_BLOCK_PADDING_BUG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_TLS_D5_BUG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"SSL_OP_TLS_ROLLBACK_BUG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"StableEditorScrollState","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/core/editorState"},{"name":"StackFrame","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"StackFrame","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/StackFrame"},{"name":"StackFrame","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/index"},{"name":"StandaloneCodeEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneCodeEditor"},{"name":"StandaloneCodeEditorNLS","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standaloneStrings"},{"name":"StandaloneCodeEditorServiceImpl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneCodeServiceImpl"},{"name":"StandaloneCommandService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"StandaloneCommandsQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/quickAccess/standaloneCommandsQuickAccess"},{"name":"StandaloneConfigurationModelParser","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configurationModels"},{"name":"StandaloneDiffEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneCodeEditor"},{"name":"StandaloneEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneCodeEditor"},{"name":"StandaloneGotoLineQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess"},{"name":"StandaloneGotoSymbolQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/quickAccess/standaloneGotoSymbolQuickAccess"},{"name":"StandaloneKeybindingService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"StandaloneQuickInputServiceImpl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/quickInput/standaloneQuickInputServiceImpl"},{"name":"StandaloneReferencesController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/referenceSearch/standaloneReferenceSearch"},{"name":"StandaloneTelemetryService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/simpleServices"},{"name":"StandaloneThemeServiceImpl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneThemeServiceImpl"},{"name":"StandardAutoClosingPairConditional","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/languageConfiguration"},{"name":"StandardKeyboardEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/keyboardEvent"},{"name":"StandardMouseEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/mouseEvent"},{"name":"standardMouseMoveMerger","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/globalMouseMoveMonitor"},{"name":"StandardTokenType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"StandardTokenType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textMate/common/textMateService"},{"name":"StandardTokenType","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-textmate/release/main"},{"name":"StandardWheelEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/mouseEvent"},{"name":"StandardWindow","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"start","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"repl"},{"name":"start","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/applicationinsights"},{"name":"start","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/native-watchdog/index"},{"name":"StartAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"StartDebugActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActionViewItems"},{"name":"StartDebugQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugQuickAccess"},{"name":"startExtensionHostProcess","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/node/extensionHostProcessSetup"},{"name":"StartExtensionHostProfileAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor"},{"name":"StartFindAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"StartFindReplaceAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"StartFindWithSelectionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findController"},{"name":"startProfiling","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"v8-inspect-profiler"},{"name":"StartStopProblemCollector","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemCollectors"},{"name":"startsWith","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"startsWithIgnoreCase","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"startsWithUTF8BOM","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"startup","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-browser/issue/issueReporterMain"},{"name":"startup","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-browser/processExplorer/processExplorerMain"},{"name":"startup","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-browser/sharedProcess/sharedProcessMain"},{"name":"StartupKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/lifecycle/common/lifecycle"},{"name":"StartupKindToString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/lifecycle/common/lifecycle"},{"name":"StartupProfiler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/performance/electron-browser/startupProfiler"},{"name":"StartupTimings","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/performance/electron-browser/startupTimings"},{"name":"stat","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"stat","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"State","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestModel"},{"name":"State","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"State","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/update/common/update"},{"name":"State","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/linkComputer"},{"name":"stateExists","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchCommon"},{"name":"StatefullMarkdownCell","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/browser/view/renderers/markdownCell"},{"name":"StateMachine","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/linkComputer"},{"name":"Statement","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-sqlite3/index"},{"name":"StateService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/state/node/stateService"},{"name":"StateType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/update/common/update"},{"name":"StaticDND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dnd"},{"name":"StaticExtensionsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/staticExtensions"},{"name":"StaticLanguageSelector","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/mocks/mockMode"},{"name":"StaticRange","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"StaticRouter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/common/ipc"},{"name":"StaticServices","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneServices"},{"name":"StatisticType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionManagement"},{"name":"statLink","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"Stats","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"statSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"status","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"status","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/aria/aria"},{"name":"STATUS_BAR_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"STATUS_BAR_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"STATUS_BAR_DEBUGGING_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/statusbarColorProvider"},{"name":"STATUS_BAR_DEBUGGING_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/statusbarColorProvider"},{"name":"STATUS_BAR_DEBUGGING_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/statusbarColorProvider"},{"name":"STATUS_BAR_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"STATUS_BAR_HOST_NAME_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"STATUS_BAR_HOST_NAME_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"STATUS_BAR_ITEM_ACTIVE_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"STATUS_BAR_ITEM_HOVER_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"STATUS_BAR_NO_FOLDER_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"STATUS_BAR_NO_FOLDER_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"STATUS_BAR_NO_FOLDER_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"STATUS_BAR_PROMINENT_ITEM_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"STATUS_BAR_PROMINENT_ITEM_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"STATUS_BAR_PROMINENT_ITEM_HOVER_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"STATUS_CODES","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"http"},{"name":"statusbar","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"StatusbarAlignment","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/statusbar/common/statusbar"},{"name":"StatusBarAlignment","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"StatusBarAlignment","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"StatusBarColorProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/statusbarColorProvider"},{"name":"StatusbarPart","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/statusbar/statusbarPart"},{"name":"StatusLabelAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"StatusMessageChangeType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/notifications"},{"name":"StatusUpdater","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewlet"},{"name":"stderr","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"stdin","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"stdinDataListener","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/stdin"},{"name":"stdout","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"STEP_BACK_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"STEP_INTO_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"STEP_INTO_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"STEP_OUT_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"STEP_OUT_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"STEP_OVER_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"STEP_OVER_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"StereoPannerNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"stop","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"stop","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/event"},{"name":"STOP_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"STOP_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"StopExtensionHostProfileAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/electron-browser/runtimeExtensionsEditor"},{"name":"StopWatch","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/stopwatch"},{"name":"Storage","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Storage","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/storage/common/storage"},{"name":"StorageDataCleaner","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/electron-browser/sharedProcess/contrib/storageDataCleaner"},{"name":"StorageEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"StorageHint","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/storage/common/storage"},{"name":"StorageKeysSyncRegistryChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSyncIpc"},{"name":"StorageKeysSyncRegistryChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSyncIpc"},{"name":"StorageKeysSyncRegistryService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/storageKeys"},{"name":"StorageMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/storage/node/storageMainService"},{"name":"StorageManager","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"StorageManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensionManagement/common/extensionEnablementService"},{"name":"StorageScope","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/storage/common/storage"},{"name":"strcmp","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/tokenization"},{"name":"Stream","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"stream"},{"name":"StreamDebugAdapter","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/node/debugAdapter"},{"name":"streamToBuffer","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"streamToBufferReadableStream","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"streamToNodeReadable","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/stream"},{"name":"strict","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"strictEqual","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"string","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"String","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"StringBuffer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase"},{"name":"StringDecoder","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"string_decoder"},{"name":"stringDiff","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/diff/diff"},{"name":"StringDiffSequence","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/diff/diff"},{"name":"StringEOL","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/tokensStore"},{"name":"stringHash","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/hash"},{"name":"stringify","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"querystring"},{"name":"stringify","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/marshalling"},{"name":"StringIterator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/map"},{"name":"StringRepresentationProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/gotoSymbol/peek/referencesTree"},{"name":"StringSHA1","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/hash"},{"name":"stringToSnapshot","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/common/textfiles"},{"name":"stripCodicons","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/codicons"},{"name":"stripComments","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"stripUTF8BOM","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"stripWildcards","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"stub","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"styleMedia","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"StyleMedia","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"StyleSheet","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"StyleSheetList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SubmenuAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/menu/menu"},{"name":"SubmenuItemAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/common/actions"},{"name":"substituteMatches","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/monarch/monarchCommon"},{"name":"SubtleCrypto","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SuggestAlternatives","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestAlternatives"},{"name":"SuggestController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestController"},{"name":"SuggestEnabledInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput"},{"name":"suggestFilename","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/mime"},{"name":"SuggestMemoryService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestMemory"},{"name":"SuggestModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestModel"},{"name":"SuggestWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestWidget"},{"name":"suggestWidgetStatusbarMenu","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggest"},{"name":"suite","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"suiteRepeat","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/test/common/utils"},{"name":"suiteSetup","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"suiteTeardown","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"super","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"SUPPORTED_CODE_ACTIONS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/codeAction/codeActionModel"},{"name":"SUPPORTED_ENCODINGS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/common/textfiles"},{"name":"SurroundSelectionCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/commands/surroundSelectionCommand"},{"name":"SVGAElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAngle","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimatedAngle","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimatedBoolean","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimatedEnumeration","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimatedInteger","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimatedLength","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimatedLengthList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimatedNumber","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimatedNumberList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimatedPreserveAspectRatio","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimatedRect","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimatedString","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimatedTransformList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimateElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimateMotionElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimateTransformElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGAnimationElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGCircleElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGClipPathElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGComponentTransferFunctionElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGCursorElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGDefsElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGDescElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGElementInstance","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGElementInstanceList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGEllipseElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEBlendElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEColorMatrixElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEComponentTransferElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFECompositeElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEConvolveMatrixElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEDiffuseLightingElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEDisplacementMapElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEDistantLightElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEDropShadowElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEFloodElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEFuncAElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEFuncBElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEFuncGElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEFuncRElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEGaussianBlurElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEImageElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEMergeElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEMergeNodeElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEMorphologyElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEOffsetElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFEPointLightElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFESpecularLightingElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFESpotLightElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFETileElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFETurbulenceElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGFilterElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGForeignObjectElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGGElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGGeometryElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGGradientElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGGraphicsElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGImageElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGLength","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGLengthList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGLinearGradientElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGLineElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGMarkerElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGMaskElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGMatrix","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGMetadataElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGNumber","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGNumberList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSeg","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegArcAbs","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegArcRel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegClosePath","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegCurvetoCubicAbs","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegCurvetoCubicRel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegCurvetoCubicSmoothAbs","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegCurvetoCubicSmoothRel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegCurvetoQuadraticAbs","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegCurvetoQuadraticRel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegCurvetoQuadraticSmoothAbs","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegCurvetoQuadraticSmoothRel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegLinetoAbs","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegLinetoHorizontalAbs","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegLinetoHorizontalRel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegLinetoRel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegLinetoVerticalAbs","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegLinetoVerticalRel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegMovetoAbs","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPathSegMovetoRel","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPatternElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPoint","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPointList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPolygonElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPolylineElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGPreserveAspectRatio","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGRadialGradientElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGRect","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGRectElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGScriptElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGStopElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGStringList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGStyleElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGSVGElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGSwitchElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGSymbolElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGTextContentElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGTextElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGTextPathElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGTextPositioningElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGTitleElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGTransform","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGTransformList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGTSpanElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGUnitTypes","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGUseElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGViewElement","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGZoomAndPan","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SVGZoomEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"switch","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"SwitchPanelViewAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/panel/panelActions"},{"name":"SwitchRemoteAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/remote/browser/explorerViewItems"},{"name":"SwitchRemoteViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/remote/browser/explorerViewItems"},{"name":"SwitchTerminalAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions"},{"name":"SwitchTerminalActionViewItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions"},{"name":"SwitchWindow","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"},{"name":"symbol","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"Symbol","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SYMBOL_ICON_ARRAY_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_BOOLEAN_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_CLASS_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_COLOR_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_CONSTANT_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_CONSTRUCTOR_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_ENUMERATOR_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_ENUMERATOR_MEMBER_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_EVENT_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_FIELD_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_FILE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_FOLDER_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_FUNCTION_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_INTERFACE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_KEY_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_KEYWORD_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_METHOD_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_MODULE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_NAMESPACE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_NULL_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_NUMBER_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_OBJECT_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_OPERATOR_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_PACKAGE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_PROPERTY_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_REFERENCE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_SNIPPET_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_STRING_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_STRUCT_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_TEXT_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_TYPEPARAMETER_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_UNIT_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SYMBOL_ICON_VARIABLE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineTree"},{"name":"SymbolInformation","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SymbolInformation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"SymbolKind","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SymbolKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"SymbolKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"SymbolKind","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"SymbolKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"SymbolKinds","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"SymbolsQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/symbolsQuickAccess"},{"name":"SymbolTag","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"SymbolTag","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"SymbolTag","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"SymbolTag","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"SymbolTag","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"symlink","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"symlink","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"symlinkSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"SyncActionDescriptor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/actions/common/actions"},{"name":"SyncDescriptor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/instantiation/common/descriptors"},{"name":"SyncIgnoredIconAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"SyncManager","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SyncResource","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"SyncStatus","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"SyntaxError","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"SyntaxKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"SyntaxRangeProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/syntaxRangeProvider"},{"name":"SystemDisabledWarningAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"systemPreferences","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"TAB_ACTIVE_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_ACTIVE_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_ACTIVE_BORDER_TOP","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_ACTIVE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_ACTIVE_MODIFIED_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_HOVER_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_HOVER_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_HOVER_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_INACTIVE_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_INACTIVE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_INACTIVE_MODIFIED_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_UNFOCUSED_ACTIVE_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_UNFOCUSED_ACTIVE_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_UNFOCUSED_ACTIVE_BORDER_TOP","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_UNFOCUSED_ACTIVE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_UNFOCUSED_ACTIVE_MODIFIED_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_UNFOCUSED_HOVER_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_UNFOCUSED_HOVER_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_UNFOCUSED_HOVER_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_UNFOCUSED_INACTIVE_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_UNFOCUSED_INACTIVE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TAB_UNFOCUSED_INACTIVE_MODIFIED_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TabCompletionController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/snippets/browser/tabCompletion"},{"name":"TabFocus","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/commonEditorConfig"},{"name":"table","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"TabsTitleControl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/tabsTitleControl"},{"name":"TAG","kind":"property","kindModifiers":"private,static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Sender"},{"name":"tail","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"tail2","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"takeHeapSnapshot","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"Task","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"Task","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"TASK_RUNNING_STATE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"Task2","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TaskConfigSource","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskConfiguration"},{"name":"TaskDefinition","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"TaskDefinitionDTO","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTask"},{"name":"TaskDefinitionRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskDefinitionRegistry"},{"name":"TaskDTO","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTask"},{"name":"TaskError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskSystem"},{"name":"TaskErrors","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskSystem"},{"name":"TaskEvent","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"TaskEventKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"TaskExecuteKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskSystem"},{"name":"TaskExecutionDTO","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTask"},{"name":"TaskFilterDTO","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTask"},{"name":"TaskGroup","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TaskGroup","kind":"type","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"TaskGroup","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"TaskHandleDTO","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTask"},{"name":"TaskIdentifier","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskConfiguration"},{"name":"TaskPanelKind","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TaskPanelKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"TaskPresentationOptionsDTO","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTask"},{"name":"TaskQuickPick","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/browser/taskQuickPick"},{"name":"TaskRevealKind","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TaskRevealKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"TaskRunResult","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugTaskRunner"},{"name":"TaskRunSource","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"TaskRunType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"tasks","kind":"module","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TASKS_CONFIGURATION_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"TASKS_DEFAULT","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"TaskScope","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TaskScope","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"TaskScope","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"TaskSequentializer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"TaskService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/browser/taskService"},{"name":"TaskService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/electron-browser/taskService"},{"name":"TaskSorter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"TaskSourceKind","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/tasks"},{"name":"TasksQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/browser/tasksQuickAccess"},{"name":"tasksSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"TaskStatusBarContributions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/browser/task.contribution"},{"name":"teardown","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"TelemetryAppenderChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/node/telemetryIpc"},{"name":"TelemetryAppenderClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/node/telemetryIpc"},{"name":"TelemetryClient","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/TelemetryClient"},{"name":"TelemetryClient","kind":"alias","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/applicationinsights"},{"name":"TelemetryContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/telemetry/browser/telemetry.contribution"},{"name":"telemetryLogChannelId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/logs/common/logConstants"},{"name":"TelemetryService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetryService"},{"name":"TelemetryService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/telemetry/browser/telemetryService"},{"name":"TelemetryService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/telemetry/electron-browser/telemetryService"},{"name":"TelemetryType","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/TelemetryTypes/TelemetryType"},{"name":"telemetryTypeToBaseType","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/TelemetryTypes/TelemetryType"},{"name":"TEMPDIR_PREFIX","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Sender"},{"name":"template","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/labels"},{"name":"Terminal","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"xterm"},{"name":"TERMINAL_ACTION_CATEGORY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"TERMINAL_BACKGROUND_COLOR","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalColorRegistry"},{"name":"TERMINAL_BORDER_COLOR","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalColorRegistry"},{"name":"TERMINAL_COMMAND_ID","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"TERMINAL_CONFIG_SECTION","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"TERMINAL_CURSOR_BACKGROUND_COLOR","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalColorRegistry"},{"name":"TERMINAL_CURSOR_FOREGROUND_COLOR","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalColorRegistry"},{"name":"TERMINAL_FOREGROUND_COLOR","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalColorRegistry"},{"name":"TERMINAL_SELECTION_BACKGROUND_COLOR","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalColorRegistry"},{"name":"TERMINAL_VIEW_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"TerminalConfigHelper","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalConfigHelper"},{"name":"terminalConfiguration","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalConfiguration"},{"name":"TerminalCursorStyle","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"TerminalDataBufferer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminalDataBuffering"},{"name":"TerminalFindWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalFindWidget"},{"name":"TerminalInstance","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalInstance"},{"name":"TerminalInstanceService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalInstanceService"},{"name":"TerminalInstanceService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/electron-browser/terminalInstanceService"},{"name":"TerminalLinkManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager"},{"name":"TerminalNativeService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/electron-browser/terminalNativeService"},{"name":"TerminalPasteAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions"},{"name":"TerminalProcess","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/node/terminalProcess"},{"name":"TerminalProcessExtHostProxy","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy"},{"name":"TerminalProcessManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalProcessManager"},{"name":"TerminalQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalsQuickAccess"},{"name":"terminalSendSequenceCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions"},{"name":"TerminalService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalService"},{"name":"TerminalTab","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalTab"},{"name":"TerminalTaskSystem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem"},{"name":"TerminalValidatedLocalLinkProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalValidatedLocalLinkProvider"},{"name":"TerminalViewPane","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalView"},{"name":"TerminalWebLinkProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalWebLinkProvider"},{"name":"TerminalWidgetManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalWidgetManager"},{"name":"TerminalWordLinkProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalWordLinkProvider"},{"name":"TERMINATE_THREAD_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"TerminateResponseCode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/processes"},{"name":"TerminateResponseCode","kind":"alias","kindModifiers":"","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/processes"},{"name":"TernarySearchTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/map"},{"name":"test","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"test","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"TEST_VIEW_CONTAINER_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/views"},{"name":"TestAccessibilityService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"testApplyEditsWithSyncedModels","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/model/editableTextModelTestUtils"},{"name":"TestBackupFileService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestBackupMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/test/electron-main/workspacesMainService.test"},{"name":"testCase","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"TestCell","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/test/testNotebookEditor"},{"name":"TestChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/test/node/testService"},{"name":"TestCodeEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/browser/testCodeEditor"},{"name":"TestCodeEditorService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/browser/editorTestServices"},{"name":"TestColorTheme","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/test/common/testThemeService"},{"name":"testCommand","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/browser/testCommand"},{"name":"TestCommandService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/browser/editorTestServices"},{"name":"TestConfiguration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/mocks/testConfiguration"},{"name":"TestConfigurationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/test/common/testConfigurationService"},{"name":"TestContextService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/common/workbenchTestServices"},{"name":"TestDecorationProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/test/foldingModel.test"},{"name":"TestDecorationsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestDialogMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/test/electron-main/workspacesMainService.test"},{"name":"TestDialogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/dialogs/test/common/testDialogService"},{"name":"TestDiskFileSystemProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/test/electron-browser/diskFileService.test"},{"name":"TestEditorGroupAccessor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestEditorGroupsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestEditorGroupView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestEditorInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestEditorPart","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestEditorService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestElectronService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/electron-browser/workbenchTestServices"},{"name":"TestEnvironmentService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestEnvironmentService","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/electron-browser/workbenchTestServices"},{"name":"TestExperimentService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/experiments/test/electron-browser/experimentService.test"},{"name":"TestExtensionEnablementService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensionManagement/test/browser/extensionEnablementService.test"},{"name":"TestExtensionService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/common/workbenchTestServices"},{"name":"testFile","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/test/node/utils"},{"name":"TestFileDialogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestFileEditorInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestFileIconTheme","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/test/common/testThemeService"},{"name":"TestFilesConfigurationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestFileService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestFindController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/test/findController.test"},{"name":"TestHistoryService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestHostService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestInstantiationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/instantiation/test/common/instantiationServiceMock"},{"name":"TestLayoutService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestLifecycleService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestListService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestMenuService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestNativePathService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/electron-browser/workbenchTestServices"},{"name":"TestNativeTextFileServiceWithEncodingOverrides","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/electron-browser/workbenchTestServices"},{"name":"TestNotebookEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/test/testNotebookEditor"},{"name":"TestNotificationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/notification/test/common/testNotificationService"},{"name":"TestPanelService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestPathService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestProgressService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestReadonlyTextFileEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"testRepeat","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/test/common/utils"},{"name":"testRepeatedActionAndExtractPositions","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/test/wordTestUtils"},{"name":"testRepeatOnly","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/test/common/utils"},{"name":"TestRPCProtocol","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/api/testRPCProtocol"},{"name":"TestService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/test/node/testService"},{"name":"TestServiceAccessor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestServiceAccessor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/electron-browser/workbenchTestServices"},{"name":"TestServiceClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/test/node/testService"},{"name":"TestSharedProcessService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/electron-browser/workbenchTestServices"},{"name":"TestStorageService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/common/workbenchTestServices"},{"name":"testTextBufferFactory","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/model/linesTextBuffer/linesTextBufferBuilder.test"},{"name":"TestTextFileService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestTextFileService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/electron-browser/workbenchTestServices"},{"name":"TestTextResourceConfigurationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestTextResourcePropertiesService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/services/modelService.test"},{"name":"TestTextResourcePropertiesService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/common/workbenchTestServices"},{"name":"TestThemeService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/test/common/testThemeService"},{"name":"TestUserDataSyncUtilService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/test/common/userDataSyncClient"},{"name":"TestView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/test/browser/ui/grid/util"},{"name":"TestViewletService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"testViewModel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/viewModel/testViewModel"},{"name":"TestViewsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"TestWindowConfiguration","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/electron-browser/workbenchTestServices"},{"name":"TestWorkingCopy","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/workingCopy/test/common/workingCopyService.test"},{"name":"TestWorkingCopyService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/common/workbenchTestServices"},{"name":"testWorkspace","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspace/test/common/testWorkspace"},{"name":"TestWorkspace","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspace/test/common/testWorkspace"},{"name":"Text","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Text","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetParser"},{"name":"TEXT_DIFF_EDITOR_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"TEXT_FILE_EDITOR_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"TextAreaHandler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/textAreaHandler"},{"name":"TextAreaInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/textAreaInput"},{"name":"TextAreaState","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/controller/textAreaState"},{"name":"TextBadge","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/activity/common/activity"},{"name":"textBlockQuoteBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"textBlockQuoteBorder","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"TextChange","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textChange"},{"name":"textCodeBlockBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"TextCompareEditorActiveContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"TextCompareEditorVisibleContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"TextDecoder","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"TextDecoder","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"TextDecoderStream","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"TextDiffEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/textDiffEditor"},{"name":"TextDiffEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor/textDiffEditorModel"},{"name":"TextDocumentSaveReason","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TextDocumentSaveReason","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"TextDocumentSaveReason","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"TextEdit","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TextEdit","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"TextEdit","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"TextEditElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree"},{"name":"TextEditElementRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/bulkEdit/browser/bulkEditTree"},{"name":"TextEditorCursorBlinkingStyle","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"TextEditorCursorBlinkingStyle","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"TextEditorCursorStyle","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TextEditorCursorStyle","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"TextEditorCursorStyle","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"TextEditorDecorationType","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTextEditor"},{"name":"TextEditorEdit","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTextEditor"},{"name":"TextEditorLineNumbersStyle","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TextEditorLineNumbersStyle","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"TextEditorLineNumbersStyle","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"TextEditorOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"TextEditorOptions","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"TextEditorRevealType","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TextEditorRevealType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHost.protocol"},{"name":"TextEditorRevealType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"TextEditorSelectionChangeKind","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TextEditorSelectionChangeKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"TextEditorSelectionRevealType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/editor/common/editor"},{"name":"TextEditorState","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/history/browser/history"},{"name":"TextEncoder","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"TextEncoder","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"TextEncoderStream","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"TextEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"TextFileContentProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"TextFileEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/editors/textFileEditor"},{"name":"TextFileEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/common/textFileEditorModel"},{"name":"TextFileEditorModelManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/common/textFileEditorModelManager"},{"name":"TextFileEditorModelState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/common/textfiles"},{"name":"TextFileEditorTracker","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/editors/textFileEditorTracker"},{"name":"TextFileLoadReason","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/common/textfiles"},{"name":"TextFileOperationError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/common/textfiles"},{"name":"TextFileOperationResult","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/common/textfiles"},{"name":"TextFileSaveErrorHandler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/editors/textFileSaveErrorHandler"},{"name":"TextFileSaveParticipant","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/common/textFileSaveParticipant"},{"name":"TextInputActionsProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/textInputActions"},{"name":"textLinkActiveForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"textLinkForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"textmateColorGroupSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/colorThemeSchema"},{"name":"textmateColorSettingsSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/colorThemeSchema"},{"name":"textmateColorsSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/colorThemeSchema"},{"name":"TextMateService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textMate/browser/textMateService"},{"name":"TextMateService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textMate/electron-browser/textMateService"},{"name":"TextmateSnippet","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetParser"},{"name":"TextMateWorker","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textMate/electron-browser/textMateWorker"},{"name":"TextMateWorkerHost","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textMate/electron-browser/textMateService"},{"name":"TextMetrics","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"TextModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModel"},{"name":"TextModelCancellationTokenSource","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/core/editorState"},{"name":"TextModelResolvedOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model"},{"name":"TextModelResolverService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textmodelResolver/common/textModelResolverService"},{"name":"TextModelSearch","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelSearch"},{"name":"TextModelTokenization","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelTokens"},{"name":"textPreformatForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"TextResourceConfigurationService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/textResourceConfigurationServiceImpl"},{"name":"TextResourceEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/textResourceEditor"},{"name":"TextResourceEditorInput","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"TextResourcePropertiesService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textresourceProperties/common/textResourcePropertiesService"},{"name":"TextSearchEngineAdapter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/textSearchAdapter"},{"name":"TextSearchManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/textSearchManager"},{"name":"TextSearchMatch","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"TextSearchResultsCollector","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/textSearchManager"},{"name":"textSeparatorForeground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"TextSnapshotReadable","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/common/textfiles"},{"name":"TextTrack","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"TextTrackCue","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"TextTrackCueList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"TextTrackList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Themable","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/themeService"},{"name":"ThemableDecorationAttachmentRenderOptions","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"ThemableDecorationRenderOptions","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"ThemeColor","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"ThemeColor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"themeColorFromId","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/themeService"},{"name":"ThemeConfiguration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/themeConfiguration"},{"name":"ThemeIcon","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"ThemeIcon","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/themeService"},{"name":"ThemeIcon","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"ThemeMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/electron-main/themeMainService"},{"name":"ThemeRegistry","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/themeExtensionPoints"},{"name":"ThemeRule","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textMate/common/TMHelper"},{"name":"ThemeSettings","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/workbenchThemeService"},{"name":"ThemeTrieElement","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/tokenization"},{"name":"ThemeTrieElementRule","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/tokenization"},{"name":"this","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"Thread","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"ThreadAndSessionIds","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"threadId","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"worker_threads"},{"name":"throttle","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/decorators"},{"name":"ThrottledDelayer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"Throttler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"throw","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"throwDeprecation","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"throwProposedApiError","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensions"},{"name":"throws","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"assert"},{"name":"tildify","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/labels"},{"name":"time","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"TimeBasedVariableResolver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetVariables"},{"name":"timeEnd","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"timeline","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"TimelineElementTemplate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/timeline/browser/timelinePane"},{"name":"timelineEnd","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"TimelineFollowActiveEditorContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/timeline/browser/timelinePane"},{"name":"TimelineIdentityProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/timeline/browser/timelinePane"},{"name":"TimelineItem","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TimelineItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"TimelineKeyboardNavigationLabelProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/timeline/browser/timelinePane"},{"name":"TimelineListVirtualDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/timeline/browser/timelinePane"},{"name":"TimelinePane","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/timeline/browser/timelinePane"},{"name":"TimelinePaneDescriptor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/timeline/browser/timeline.contribution"},{"name":"TimelinePaneId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/timeline/common/timeline"},{"name":"TimelineService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/timeline/common/timelineService"},{"name":"timeLog","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"timeout","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"TIMEOUT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"TimeoutTimer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/async"},{"name":"TimeRanges","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"timeStamp","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"timingSafeEqual","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"title","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"TITLE_BAR_ACTIVE_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TITLE_BAR_ACTIVE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TITLE_BAR_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TITLE_BAR_INACTIVE_BACKGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TITLE_BAR_INACTIVE_FOREGROUND","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"TitlebarPart","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/titlebar/titlebarPart"},{"name":"TitlebarPart","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/parts/titlebar/titlebarPart"},{"name":"TitleCaseAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"TitleControl","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/titleControl"},{"name":"TitleEventSource","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/common/terminal"},{"name":"TLSSocket","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tls"},{"name":"TMGrammarFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textMate/common/TMGrammarFactory"},{"name":"tmpdir","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"TMScopeRegistry","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textMate/common/TMScopeRegistry"},{"name":"toASCII","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"punycode"},{"name":"toBackupWorkspaceResource","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/backup/electron-browser/backup"},{"name":"toBufferOrReadable","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/textfile/common/textfiles"},{"name":"toCanonicalName","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"tocData","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/settingsLayout"},{"name":"TOCRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/tocTree"},{"name":"TOCTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/tocTree"},{"name":"TOCTreeModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/tocTree"},{"name":"toDecodeStream","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"toDisposable","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/lifecycle"},{"name":"toErrorMessage","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errorMessage"},{"name":"toExtension","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensions"},{"name":"toExtensionDescription","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"toFileChanges","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/watcher/watcher"},{"name":"toFileOperationResult","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"toFileSystemProviderErrorCode","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"TOGGLE_BREAKPOINT_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugEditorActions"},{"name":"TOGGLE_CONDITIONAL_BREAKPOINT_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugEditorActions"},{"name":"TOGGLE_DIFF_IGNORE_TRIM_WHITESPACE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"TOGGLE_DIFF_SIDE_BY_SIDE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorCommands"},{"name":"TOGGLE_IGNORE_EXTENSION_ACTION_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensions"},{"name":"TOGGLE_INLINE_BREAKPOINT_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugCommands"},{"name":"TOGGLE_LOG_POINT_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugEditorActions"},{"name":"TOGGLE_NOTIFICATION","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"TOGGLE_NOTIFICATIONS_CENTER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/notifications/notificationsCommands"},{"name":"ToggleActivityBarVisibilityAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"ToggleAutoSaveAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"ToggleAutoUpdateAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"ToggleBreakpointsActivatedAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/debugActions"},{"name":"toggleCaseSensitiveCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"ToggleCaseSensitiveCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"ToggleCaseSensitiveKeybinding","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findModel"},{"name":"toggleClass","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"ToggleCollapseAndExpandAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"toggleCollapseState","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/folding/foldingModel"},{"name":"ToggleColumnSelectionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleColumnSelection"},{"name":"ToggleCompositePinnedAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/compositeBarActions"},{"name":"ToggleDevToolsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/developerActions"},{"name":"ToggleEditorLayoutAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"ToggleEditorVisibilityAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"ToggleGroupSizesAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/editor/editorActions"},{"name":"ToggleHighContrastNLS","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standaloneStrings"},{"name":"ToggleMaximizedPanelAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/panel/panelActions"},{"name":"ToggleMenuBarAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"ToggleMinimapAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleMinimap"},{"name":"ToggleMultiCursorModifierAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleMultiCursorModifier"},{"name":"TogglePanelAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/panel/panelActions"},{"name":"ToggleReactionsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/comments/browser/reactionsAction"},{"name":"toggleRegexCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"ToggleRegexCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"ToggleRegexKeybinding","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findModel"},{"name":"ToggleRenderControlCharacterAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleRenderControlCharacter"},{"name":"ToggleRenderWhitespaceAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleRenderWhitespace"},{"name":"toggleSearchEditorCaseSensitiveCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions"},{"name":"ToggleSearchEditorCaseSensitiveCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"toggleSearchEditorContextLinesCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions"},{"name":"ToggleSearchEditorContextLinesCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"toggleSearchEditorRegexCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions"},{"name":"ToggleSearchEditorRegexCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"toggleSearchEditorWholeWordCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions"},{"name":"ToggleSearchEditorWholeWordCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/searchEditor/browser/constants"},{"name":"ToggleSearchOnTypeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"ToggleSearchScopeKeybinding","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findModel"},{"name":"ToggleSharedProcessAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/developerActions"},{"name":"ToggleSidebarPositionAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"ToggleSidebarVisibilityAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"ToggleStatusbarVisibilityAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"ToggleTabFocusModeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode"},{"name":"ToggleTerminalAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalActions"},{"name":"ToggleViewAction","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/actions/layoutActions"},{"name":"ToggleViewletAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/activitybar/activitybarActions"},{"name":"ToggleViewModeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/browser/repositoryPane"},{"name":"toggleWholeWordCommand","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/browser/searchActions"},{"name":"ToggleWholeWordCommandId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/constants"},{"name":"ToggleWholeWordKeybinding","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/find/findModel"},{"name":"ToggleWindowTabsBarHandler","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"},{"name":"Token","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/token"},{"name":"Token","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/editor.api"},{"name":"TOKEN_CLASSIFIER_LANGUAGE_SEPARATOR","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry"},{"name":"TOKEN_TYPE_WILDCARD","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry"},{"name":"TokenClassificationExtensionPoints","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/tokenClassificationExtensionPoint"},{"name":"TokenizationRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"TokenizationRegistryImpl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/tokenizationRegistry"},{"name":"TokenizationResult","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/token"},{"name":"TokenizationResult2","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/core/token"},{"name":"TokenizationStateStore","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/textModelTokens"},{"name":"TokenizationSupport2Adapter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneLanguages"},{"name":"tokenize","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/browser/standaloneEditor"},{"name":"tokenizeLineToHTML","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/textToHtmlTokenizer"},{"name":"tokenizeToString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/textToHtmlTokenizer"},{"name":"TokenMetadata","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"TokensStore","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/tokensStore"},{"name":"TokensStore2","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/tokensStore"},{"name":"TokenStyle","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry"},{"name":"TokenStylingRule","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry"},{"name":"tokenStylingSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry"},{"name":"TokenTheme","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/tokenization"},{"name":"TokenType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetParser"},{"name":"toKey","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/timeline/common/timeline"},{"name":"toLocalISOString","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/date"},{"name":"toLocalResource","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/resources"},{"name":"toMultilineTokens2","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/services/semanticTokensProviderStyling"},{"name":"toNamespacedPath","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"toNodeEncoding","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"toolbar","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"ToolBar","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/toolbar/toolbar"},{"name":"TOOLTIP_HOVER_THRESHOLD","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/links/terminalLinkHelpers"},{"name":"TooltipWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets"},{"name":"toOverrides","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"top","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"top","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"topAsync","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"toReadable","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/stream"},{"name":"toResource","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/test/common/utils"},{"name":"toResource","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"toSlashes","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/extpath"},{"name":"toStandardTokenType","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/supports/tokenization"},{"name":"toStoreData","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"toStream","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/stream"},{"name":"toString","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"totalmem","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"Touch","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Touch","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/map"},{"name":"TouchBar","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"TouchBarButton","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"TouchBarColorPicker","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"TouchBarGroup","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"TouchBarLabel","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"TouchBarPopover","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"TouchBarScrubber","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"TouchBarSegmentedControl","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"TouchBarSlider","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"TouchBarSpacer","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"TouchEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"TouchList","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"toUint32","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/uint"},{"name":"toUint8","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/uint"},{"name":"toUnicode","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"punycode"},{"name":"toValuesTree","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configuration"},{"name":"toWorkspaceFolder","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspace/common/workspace"},{"name":"toWorkspaceFolders","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspace/common/workspace"},{"name":"toWorkspaceIdentifier","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"trace","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"traceDeprecation","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"traceProcessWarnings","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"TrackedRangeStickiness","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model"},{"name":"TrackedRangeStickiness","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"TrackEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"trackFocus","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"transcode","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"buffer"},{"name":"transform","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/stream"},{"name":"Transform","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"stream"},{"name":"Transform","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetParser"},{"name":"TransformableMarker","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetParser"},{"name":"transformAndReviveIncomingURIs","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/uriIpc"},{"name":"transformErrorForSerialization","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/errors"},{"name":"transformIncomingURIs","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/uriIpc"},{"name":"transformOutgoingURIs","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/uriIpc"},{"name":"TransformStream","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"TransitionEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Translations","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/common/extensionPoints"},{"name":"translationsConfigFile","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"transparent","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"TransposeAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"Tray","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"TreeDragOverBubble","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/tree"},{"name":"TreeDragOverReactions","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/tree"},{"name":"TreeElement","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/documentSymbols/outlineModel"},{"name":"TreeError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/tree"},{"name":"treeIndentGuidesStroke","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"TreeItem","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TreeItem","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"TreeItem2","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TreeItemCollapsibleState","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"TreeItemCollapsibleState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/views"},{"name":"TreeItemCollapsibleState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"TreeMouseEventTarget","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/tree"},{"name":"TreeNode","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase"},{"name":"TreeResourceNavigator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"TreeView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/views/treeView"},{"name":"TreeViewPane","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/views/treeView"},{"name":"TreeVisibility","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/tree"},{"name":"TreeWalker","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"TRIGGER_RENAME_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"TriggerAction","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/quickinput/browser/pickerQuickAccess"},{"name":"triggerAsyncId","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"async_hooks"},{"name":"triggerDownload","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"TriggerParameterHintsAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/parameterHints/parameterHints"},{"name":"Triggers","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskSystem"},{"name":"TriggerSuggestAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/suggestController"},{"name":"trim","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"TrimFinalNewLinesParticipant","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/saveParticipants"},{"name":"trimTrailingWhitespace","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/commands/trimTrailingWhitespaceCommand"},{"name":"TrimTrailingWhitespaceAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"TrimTrailingWhitespaceCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/commands/trimTrailingWhitespaceCommand"},{"name":"TrimWhitespaceParticipant","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/saveParticipants"},{"name":"true","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"trueMachineIdKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetry"},{"name":"truncate","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"truncate","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"truncateSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"TRUSTED_DOMAINS_CONTENT_STORAGE_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/url/common/trustedDomains"},{"name":"TRUSTED_DOMAINS_STORAGE_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/url/common/trustedDomains"},{"name":"TrustedDomainsFileSystemProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/url/common/trustedDomainsFileSystemProvider"},{"name":"try","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"TunnelCloseableContextKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/remote/browser/tunnelView"},{"name":"TunnelDto","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTunnelService"},{"name":"TunnelFactoryContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/remote/common/tunnelFactory"},{"name":"TunnelModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/common/remoteExplorerService"},{"name":"TunnelPanel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/remote/browser/tunnelView"},{"name":"TunnelPanelDescriptor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/remote/browser/tunnelView"},{"name":"TunnelService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/common/tunnelService"},{"name":"TunnelService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/node/tunnelService"},{"name":"TunnelType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/remote/common/remoteExplorerService"},{"name":"TunnelTypeContextKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/remote/browser/tunnelView"},{"name":"TunnelViewModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/remote/browser/tunnelView"},{"name":"twistiePixels","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/baseDebugView"},{"name":"type","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"type","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"Type","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/comment/lineCommentCommand"},{"name":"typeAndModifierIdPattern","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/tokenClassificationRegistry"},{"name":"TypeDefinitionProviderRegistry","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"TypeError","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"typeof","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"TypeOperations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorTypeOperations"},{"name":"types","kind":"module","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"util"},{"name":"TypeWithAutoClosingCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorTypeOperations"},{"name":"ucs2","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"punycode"},{"name":"UIEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"UIKind","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"UIKind","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHost.protocol"},{"name":"UILabelProvider","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keybindingLabels"},{"name":"Uint16Array","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Uint32Array","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Uint8Array","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Uint8ClampedArray","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Uint8Matrix","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes/linkComputer"},{"name":"umask","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"undefined","kind":"var","kindModifiers":"","sortText":"4"},{"name":"UndoIgnoreExtensionRecommendationAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"UndoRedoElementType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/undoRedo/common/undoRedo"},{"name":"UndoRedoService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/undoRedo/common/undoRedoService"},{"name":"UndoWebviewEditorCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/electron-browser/webviewCommands"},{"name":"unescape","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"unescape","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"querystring"},{"name":"Unicode11Addon","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/xterm-addon-unicode11/typings/xterm-addon-unicode11"},{"name":"unicodeEscapesToPCRE2","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/node/ripgrepTextSearchEngine"},{"name":"UninstallAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"unique","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"uniqueFilter","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/arrays"},{"name":"unknown","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"UNKNOWN_SOURCE_LABEL","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugSource"},{"name":"UnknownExtensionRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewer"},{"name":"unlink","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"unlink","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"unlinkSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"UnloadReason","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/lifecycle/electron-main/lifecycleMainService"},{"name":"unmnemonicLabel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/labels"},{"name":"untildify","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/labels"},{"name":"UNTITLED_WORKSPACE_NAME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"UntitledTextEditorInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorInput"},{"name":"UntitledTextEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorModel"},{"name":"UntitledTextEditorService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/untitled/common/untitledTextEditorService"},{"name":"unwatchFile","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"unzip","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"unzipSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"UpdateAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"UpdateAllAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActions"},{"name":"UpdateChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/update/electron-main/updateIpc"},{"name":"updateColorThemeConfigurationSchemas","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/themeConfiguration"},{"name":"UpdateContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/update/browser/update"},{"name":"updateFileIconThemeConfigurationSchemas","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/themeConfiguration"},{"name":"updateIgnoredSettings","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/settingsMerge"},{"name":"updateProblemMatchers","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/jsonSchema_v2"},{"name":"updateProductIconThemeConfigurationSchemas","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/themeConfiguration"},{"name":"updateTreeMetadata","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase"},{"name":"UpdateType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/update/common/update"},{"name":"updateViewTypeSchema","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/browser/editorAssociationsSetting"},{"name":"UpperCaseAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/linesOperations/linesOperations"},{"name":"uppercaseFirstLetter","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"uptime","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"uptime","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"Uri","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"Uri","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/editor.api"},{"name":"URI","kind":"alias","kindModifiers":"","sortText":"0"},{"name":"URIError","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"UriIterator","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/map"},{"name":"uriToFsPath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/uri"},{"name":"URITransformer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/uriIpc"},{"name":"URITransformerService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostUriTransformerService"},{"name":"url","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"inspector"},{"name":"URL","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"URL","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"url"},{"name":"URLHandlerChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/url/common/urlIpc"},{"name":"URLHandlerChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/url/common/urlIpc"},{"name":"URLHandlerRouter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/url/common/urlIpc"},{"name":"URLSearchParams","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"URLSearchParams","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"url"},{"name":"URLService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/url/node/urlService"},{"name":"USE_ICACLS","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Sender"},{"name":"USE_SPLIT_JSON_SETTING","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferences"},{"name":"useFakeTimers","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"useFakeXMLHttpRequest","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/sinon/index"},{"name":"USER_DATA_SYNC_SCHEME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"USER_MANIFEST_CACHE_FILE","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/extensions/common/extensions"},{"name":"USER_STANDALONE_CONFIGURATIONS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"USER_TASKS_GROUP_KEY","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/taskService"},{"name":"userAgent","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/platform"},{"name":"UserConfiguration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/browser/configuration"},{"name":"UserDataAutoSyncChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSyncIpc"},{"name":"UserDataAutoSyncService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataAutoSyncService"},{"name":"UserDataAutoSyncService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataAutoSyncService"},{"name":"UserDataAutoSyncService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/electron-browser/userDataAutoSyncService"},{"name":"UserDataAutoSyncService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/userDataSync/electron-browser/userDataAutoSyncService"},{"name":"UserDataSycnUtilServiceChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSyncIpc"},{"name":"UserDataSyncAuthentication","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncAuthentication"},{"name":"UserDataSyncBackupStoreService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSyncBackupStoreService"},{"name":"UserDataSyncChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSyncIpc"},{"name":"UserDataSyncClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/test/common/userDataSyncClient"},{"name":"UserDataSyncEnablementService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSyncEnablementService"},{"name":"UserDataSyncError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"UserDataSyncErrorCode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"userDataSyncLogChannelId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/logs/common/logConstants"},{"name":"UserDataSyncLogService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSyncLog"},{"name":"UserDataSyncService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSyncService"},{"name":"UserDataSyncService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/userDataSync/electron-browser/userDataSyncService"},{"name":"UserDataSyncStoreError","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSync"},{"name":"UserDataSyncStoreService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSyncStoreService"},{"name":"UserDataSyncTestServer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/test/common/userDataSyncClient"},{"name":"UserDataSyncTrigger","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncTrigger"},{"name":"UserDataSyncUtilServiceClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/userDataSync/common/userDataSyncIpc"},{"name":"UserDataSyncViewContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSyncView"},{"name":"UserDataSyncWorkbenchContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/userDataSync/browser/userDataSync"},{"name":"userInfo","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"os"},{"name":"UserSettings","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationModels"},{"name":"UserSettingsLabelProvider","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/keybindingLabels"},{"name":"UserSettingsRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesRenderers"},{"name":"userSettingsSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"useSlashForPath","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"USLayoutResolvedKeybinding","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/keybinding/common/usLayoutResolvedKeybinding"},{"name":"USUAL_WORD_SEPARATORS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model/wordHelper"},{"name":"UTF16be","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"UTF16be_BOM","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"UTF16le","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"UTF16le_BOM","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"UTF8","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"UTF8_BOM","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"UTF8_BOM_CHARACTER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/strings"},{"name":"UTF8_with_bom","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/encoding"},{"name":"utimes","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"utimesSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"UV_UDP_REUSEADDR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"V4MAPPED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"dns"},{"name":"valid","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"ValidAnnotatedEditOperation","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/model"},{"name":"validateConstraint","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"validateConstraints","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"ValidatedEditorOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"validateFileName","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/yauzl/index"},{"name":"validateFileName","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/fileActions"},{"name":"validatePaths","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/code/node/paths"},{"name":"validateProperty","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationRegistry"},{"name":"validateTelemetryData","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/telemetry/common/telemetryUtils"},{"name":"ValidationState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/parsers"},{"name":"ValidationStatus","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/parsers"},{"name":"ValidityState","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"validRange","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"semver-umd"},{"name":"values","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/map"},{"name":"values","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/collections"},{"name":"var","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"Variable","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetParser"},{"name":"Variable","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugModel"},{"name":"VARIABLES_VIEW_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"VariablesDataSource","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/variablesView"},{"name":"variableSetEmitter","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/variablesView"},{"name":"VariablesRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/variablesView"},{"name":"VariablesView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/variablesView"},{"name":"verbose","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/vscode-sqlite3/index"},{"name":"Verbose","kind":"enum member","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/SeverityLevel"},{"name":"Verbosity","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/editor"},{"name":"VerifiedTask","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/browser/terminalTaskSystem"},{"name":"verify","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"Verify","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"crypto"},{"name":"version","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"version","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"punycode"},{"name":"version","kind":"const","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/spdlog/index"},{"name":"version","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"versions","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"VerticalRevealType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"VerticalScrollbar","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/scrollbar/verticalScrollbar"},{"name":"VideoPlaybackQuality","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"View","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/view/viewImpl"},{"name":"VIEW_CONTAINER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/browser/explorerViewlet"},{"name":"VIEW_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"ViewColumn","kind":"enum","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"ViewColumn","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"ViewColumn","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"viewColumnToEditorGroup","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/shared/editor"},{"name":"ViewConfigurationChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewContainerLocation","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/views"},{"name":"ViewContentPriority","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/views"},{"name":"ViewContentSizeChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewContentWidgets","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/contentWidgets/contentWidgets"},{"name":"ViewContext","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewContext"},{"name":"ViewController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/view/viewController"},{"name":"ViewCursor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/viewCursors/viewCursor"},{"name":"ViewCursors","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/viewCursors/viewCursors"},{"name":"ViewCursorStateChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewDecorationsChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewDescriptorService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/views/browser/viewDescriptorService"},{"name":"ViewEventDispatcher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEventDispatcher"},{"name":"ViewEventEmitter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewEventHandler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/viewEventHandler"},{"name":"ViewEventsCollector","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewEventType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewFlushedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewFocusChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewIdentifierMap","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/common/viewsWelcomeExtensionPoint"},{"name":"ViewLanguageConfigurationEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewLayout","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/viewLayout"},{"name":"Viewlet","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/viewlet"},{"name":"VIEWLET_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"VIEWLET_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/search/common/search"},{"name":"VIEWLET_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/common/extensions"},{"name":"VIEWLET_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/scm/common/scm"},{"name":"VIEWLET_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/files"},{"name":"VIEWLET_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/remote/common/remote.contribution"},{"name":"ViewletActivityAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/activitybar/activitybarActions"},{"name":"ViewletDescriptor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/viewlet"},{"name":"ViewletRegistry","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/viewlet"},{"name":"ViewLine","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/lines/viewLine"},{"name":"ViewLineData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/viewModel"},{"name":"ViewLineMappingChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewLineOptions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/lines/viewLine"},{"name":"ViewLineRenderingData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/viewModel"},{"name":"ViewLines","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/lines/viewLines"},{"name":"ViewLinesChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewLinesDeletedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewLinesInsertedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewLineToken","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/core/viewLineToken"},{"name":"ViewLineTokenFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/core/viewLineToken"},{"name":"ViewLineTokens","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/core/viewLineToken"},{"name":"ViewMenuActions","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/views/viewMenuActions"},{"name":"ViewModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/viewModelImpl"},{"name":"ViewModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debugViewModel"},{"name":"ViewModelDecoration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/viewModel"},{"name":"ViewModelDecorations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/viewModelDecorations"},{"name":"ViewOutgoingEvents","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/view/viewOutgoingEvents"},{"name":"ViewOverlayLine","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/view/viewOverlays"},{"name":"ViewOverlays","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/view/viewOverlays"},{"name":"ViewOverlayWidgets","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets"},{"name":"ViewPane","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/views/viewPaneContainer"},{"name":"ViewPaneContainer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/views/viewPaneContainer"},{"name":"ViewPart","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/view/viewPart"},{"name":"Viewport","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewModel/viewModel"},{"name":"ViewportData","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/viewLayout/viewLinesViewportData"},{"name":"ViewQuickAccessProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/quickaccess/browser/viewQuickAccess"},{"name":"ViewRevealRangeRequestEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"viewsContainersContribution","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/browser/viewsExtensionPoint"},{"name":"ViewScrollChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/parts/views/views"},{"name":"ViewsWelcomeContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/common/viewsWelcomeContribution"},{"name":"viewsWelcomeExtensionPointDescriptor","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/common/viewsWelcomeExtensionPoint"},{"name":"ViewsWelcomeExtensionPointFields","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/common/viewsWelcomeExtensionPoint"},{"name":"ViewThemeChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewTokensChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"ViewTokensColorsChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"viewTypeSchamaAddition","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/editor/browser/editorAssociationsSetting"},{"name":"ViewZoneDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/zoneWidget/zoneWidget"},{"name":"ViewZones","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/viewParts/viewZones/viewZones"},{"name":"ViewZonesChangedEvent","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/viewEvents"},{"name":"VirtualDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/markers/browser/markersTreeViewer"},{"name":"VirtualDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree"},{"name":"virtualMachineHint","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/id"},{"name":"VirualDelegate","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewer"},{"name":"VisibleLinesCollection","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/browser/view/viewLayer"},{"name":"VisibleRanges","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/view/renderingContext"},{"name":"visit","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/json"},{"name":"void","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"VRDisplay","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"VRDisplayCapabilities","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"VRDisplayEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"VREyeParameters","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"VRFieldOfView","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"VRFrameData","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"VRPose","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"vs","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/themes"},{"name":"vs_code_editor_walkthrough","kind":"property","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/editor/vs_code_editor_walkthrough"},{"name":"vs_code_welcome_page","kind":"property","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/page/browser/vs_code_welcome_page"},{"name":"vs_dark","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/standalone/common/themes"},{"name":"VS_DARK_THEME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/workbenchThemeService"},{"name":"VS_HC_THEME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/workbenchThemeService"},{"name":"VS_LIGHT_THEME","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/common/workbenchThemeService"},{"name":"VSBuffer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"VTTCue","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"VTTRegion","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"W_OK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WAIT_BETWEEN_RESEND","kind":"property","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Library/Sender"},{"name":"WALK_THROUGH_FOCUS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughPart"},{"name":"WalkThroughArrowDown","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughActions"},{"name":"WalkThroughArrowUp","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughActions"},{"name":"WalkThroughContentProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider"},{"name":"WalkThroughInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughInput"},{"name":"WalkThroughModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughInput"},{"name":"WalkThroughPageDown","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughActions"},{"name":"WalkThroughPageUp","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughActions"},{"name":"WalkThroughPart","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughPart"},{"name":"WalkThroughSnippetContentProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/walkThrough/common/walkThroughContentProvider"},{"name":"warn","kind":"method","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"console"},{"name":"Warning","kind":"enum member","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/Declarations/Contracts/Generated/SeverityLevel"},{"name":"watch","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"watch","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/chokidar/types/index"},{"name":"WATCH_VIEW_ID","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/common/debug"},{"name":"WatcherChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/watcher/unix/watcherIpc"},{"name":"WatcherChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/watcher/nsfw/watcherIpc"},{"name":"WatcherChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/watcher/unix/watcherIpc"},{"name":"WatcherChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/node/watcher/nsfw/watcherIpc"},{"name":"WatchExpressionsRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/watchExpressionsView"},{"name":"WatchExpressionsView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/watchExpressionsView"},{"name":"watchFile","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"watchFile","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/watcher"},{"name":"watchFolder","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/watcher"},{"name":"WatchingProblemCollector","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tasks/common/problemCollectors"},{"name":"WatermarkContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/watermark/browser/watermark"},{"name":"WaveShaperNode","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WeakMap","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WeakMapper","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/tree/tree"},{"name":"WeakSet","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebAssembly","kind":"module","kindModifiers":"declare","sortText":"4"},{"name":"WebAuthentication","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebAuthnAssertion","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"webContents","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"WebContents","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"webFrame","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"WebGL2RenderingContext","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLActiveInfo","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebglAddon","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/xterm-addon-webgl/typings/xterm-addon-webgl"},{"name":"WebGLBuffer","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLContextEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLFramebuffer","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLObject","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLProgram","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLQuery","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLRenderbuffer","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLRenderingContext","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLSampler","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLShader","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLShaderPrecisionFormat","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLSync","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLTexture","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLTransformFeedback","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLUniformLocation","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebGLVertexArrayObject","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebIssueService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/issue/browser/issueService"},{"name":"webkitCancelAnimationFrame","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"webkitConvertPointFromNodeToPage","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"webkitConvertPointFromPageToNode","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"WebKitCSSMatrix","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebKitPoint","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"webkitRequestAnimationFrame","kind":"function","kindModifiers":"declare","sortText":"4"},{"name":"webkitRTCPeerConnection","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"webkitURL","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebLinksAddon","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/xterm-addon-web-links/typings/xterm-addon-web-links"},{"name":"WebRequest","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"WebResourceIdentityService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/resource/common/resourceIdentityService"},{"name":"WebSocket","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WebSocketNodeSocket","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/parts/ipc/node/ipc.net"},{"name":"WebTelemetryAppender","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/telemetry/browser/telemetryService"},{"name":"webviewDeveloperCategory","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webview"},{"name":"WebviewEditor","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewEditor"},{"name":"WebviewEditorCapabilities","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHost.protocol"},{"name":"WebViewEditorFindNextCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewCommands"},{"name":"WebViewEditorFindPreviousCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewCommands"},{"name":"WebviewEditorInputFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewEditorInputFactory"},{"name":"WebviewEditorService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewWorkbenchService"},{"name":"WebviewFindWidget","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewFindWidget"},{"name":"webviewHasOwnEditFunctionsContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webview"},{"name":"webviewHasOwnEditFunctionsContextKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webview"},{"name":"WebviewIconManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewIconManager"},{"name":"WebviewInput","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewEditorInput"},{"name":"WebviewMessageChannels","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/baseWebviewElement"},{"name":"WebviewPortMappingManager","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/common/portMapping"},{"name":"WebviewResourceResponse","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/common/resourceLoader"},{"name":"WebviewResourceScheme","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/common/resourceLoader"},{"name":"WebviewService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/browser/webviewService"},{"name":"webviewTag","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"electron"},{"name":"WebviewThemeDataProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/webview/common/themeing"},{"name":"WebWorkerExtensionHostStarter","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/extensions/browser/webWorkerExtensionHostStarter"},{"name":"WelcomeInputFactory","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/page/browser/welcomePage"},{"name":"WelcomeOverlayAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/overlay/browser/welcomeOverlay"},{"name":"WelcomePageAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/page/browser/welcomePage"},{"name":"welcomePageBackground","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/page/browser/welcomePage"},{"name":"WelcomePageContribution","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/welcome/page/browser/welcomePage"},{"name":"WelcomeView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/debug/browser/welcomeView"},{"name":"WheelEvent","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"whenDeleted","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"whenProviderRegistered","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/files/common/files"},{"name":"while","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"WholeWordsCheckbox","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/findinput/findInputCheckboxes"},{"name":"Widget","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/ui/widget"},{"name":"widgetShadow","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"WidgetVerticalAlignment","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminalWidgetManager"},{"name":"WillSaveStateReason","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/storage/common/storage"},{"name":"win32","kind":"module","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"path"},{"name":"win32","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/path"},{"name":"win32","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/processes"},{"name":"Win32UpdateService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/update/electron-main/updateService.win32"},{"name":"window","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"window","kind":"module","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"Window","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"WINDOW_ACTIVE_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"WINDOW_INACTIVE_BORDER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"WindowDriverChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/driver/node/driver"},{"name":"WindowDriverChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/driver/node/driver"},{"name":"WindowDriverRegistryChannel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/driver/node/driver"},{"name":"WindowDriverRegistryChannelClient","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/driver/node/driver"},{"name":"WindowMode","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/electron-main/windows"},{"name":"windowOpenNoOpener","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/browser/dom"},{"name":"windowSettings","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/configuration/common/configurationRegistry"},{"name":"WindowsExternalTerminalService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/externalTerminal/node/externalTerminalService"},{"name":"WindowsKeyboardMapper","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/windowsKeyboardMapper"},{"name":"windowsKeyboardMappingEquals","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/windowsKeyboardMapper"},{"name":"WindowsMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/windows/electron-main/windowsMainService"},{"name":"WindowsNativeResolvedKeybinding","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/common/windowsKeyboardMapper"},{"name":"WindowsShellHelper","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/electron-browser/windowsShellHelper"},{"name":"WindowsShellType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/terminal/browser/terminal"},{"name":"windowsStore","kind":"property","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"process"},{"name":"Winreg","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"with","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"withEditorModel","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/common/editorTestUtils"},{"name":"withFormatting","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/jsonEdit"},{"name":"withNullAsUndefined","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"withTestCodeEditor","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/test/browser/testCodeEditor"},{"name":"withTestNotebook","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/notebook/test/testNotebookEditor"},{"name":"withUndefinedAsNull","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/types"},{"name":"WordCharacterClass","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/wordCharacterClassifier"},{"name":"WordCharacterClassifier","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/wordCharacterClassifier"},{"name":"WordContextKey","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/wordContextKey"},{"name":"WordDistance","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/suggest/wordDistance"},{"name":"WordLeftCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"WordNavigationType","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorWordOperations"},{"name":"WordOperations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorWordOperations"},{"name":"WordPartLeftCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordPartOperations/wordPartOperations"},{"name":"WordPartOperations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/controller/cursorWordOperations"},{"name":"WordPartRightCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordPartOperations/wordPartOperations"},{"name":"WordRightCommand","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/wordOperations/wordOperations"},{"name":"WordSelectionRangeProvider","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/smartSelect/wordSelections"},{"name":"Workbench","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/workbench"},{"name":"WORKBENCH_BACKGROUND","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/theme"},{"name":"WorkbenchAsyncDataTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"workbenchColorsSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/theme/common/colorRegistry"},{"name":"WorkbenchCompressibleAsyncDataTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"WorkbenchCompressibleObjectTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"workbenchConfigurationNodeBase","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/common/configuration"},{"name":"WorkbenchContextKeysHandler","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/contextkeys"},{"name":"WorkbenchDataTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"workbenchInstantiationService","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/browser/workbenchTestServices"},{"name":"workbenchInstantiationService","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/test/electron-browser/workbenchTestServices"},{"name":"WorkbenchIssueService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/issue/electron-browser/issueService"},{"name":"WorkbenchKeybindingService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/keybinding/browser/keybindingService"},{"name":"WorkbenchList","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"WorkbenchListAutomaticKeyboardNavigation","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"WorkbenchListAutomaticKeyboardNavigationKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"WorkbenchListDoubleSelection","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"WorkbenchListFocusContextKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"WorkbenchListHasSelectionOrFocus","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"WorkbenchListMultiSelection","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"WorkbenchListSupportsKeyboardNavigation","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"WorkbenchListSupportsMultiSelectContextKey","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"WorkbenchModeServiceImpl","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/mode/common/workbenchModeService"},{"name":"WorkbenchObjectTree","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"WorkbenchPagedList","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/list/browser/listService"},{"name":"WorkbenchReferencesController","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/workbenchReferenceSearch"},{"name":"WorkbenchState","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspace/common/workspace"},{"name":"WorkbenchStateContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/contextkeys"},{"name":"WorkbenchThemeService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/themes/browser/workbenchThemeService"},{"name":"worker","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"Worker","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"Worker","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"Worker","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"worker_threads"},{"name":"workerData","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"worker_threads"},{"name":"WorkerExtHostDebugService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostDebugService"},{"name":"WorkerExtHostTask","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTask"},{"name":"WorkerExtHostTerminalService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTerminalService"},{"name":"workers","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"cluster"},{"name":"WorkingCopyCapabilities","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/workingCopy/common/workingCopyService"},{"name":"WorkingCopyFileOperationParticipant","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/workingCopy/common/workingCopyFileOperationParticipant"},{"name":"WorkingCopyFileService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/workingCopy/common/workingCopyFileService"},{"name":"WorkingCopyService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/workingCopy/common/workingCopyService"},{"name":"Worklet","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"workspace","kind":"module","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"Workspace","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspace/common/workspace"},{"name":"WORKSPACE_EXTENSION","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"WORKSPACE_FILTER","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/common/workspaces"},{"name":"WORKSPACE_SCOPES","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"WORKSPACE_STANDALONE_CONFIGURATIONS","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"WorkspaceBasedVariableResolver","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/snippet/snippetVariables"},{"name":"WorkspaceChangeExtHostRelauncher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/relauncher/browser/relauncher.contribution"},{"name":"WorkspaceConfiguration","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/browser/configuration"},{"name":"WorkspaceConfigurationEditorModel","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/preferences/common/preferencesModels"},{"name":"WorkspaceConfigurationModelParser","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configurationModels"},{"name":"WorkspaceEdit","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"vscode"},{"name":"WorkspaceEdit","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypes"},{"name":"WorkspaceEdit","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"WorkspaceFileEdit","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"WorkspaceFolder","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspace/common/workspace"},{"name":"WorkspaceFolderCountContext","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/browser/contextkeys"},{"name":"WorkspaceRecommendations","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/workspaceRecommendations"},{"name":"WorkspaceRecommendedExtensionsView","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews"},{"name":"WorkspaceService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/browser/configurationService"},{"name":"WorkspaceSettingsRenderer","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/preferences/browser/preferencesRenderers"},{"name":"workspaceSettingsSchemaId","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/services/configuration/common/configuration"},{"name":"WorkspacesHistoryMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/electron-main/workspacesHistoryMainService"},{"name":"WorkspacesMainService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/electron-main/workspacesMainService"},{"name":"WorkspacesService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/workspaces/electron-main/workspacesService"},{"name":"WorkspaceSymbol","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/api/common/extHostTypeConverters"},{"name":"WorkspaceSymbolProviderRegistry","kind":"module","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/search/common/search"},{"name":"WorkspaceTags","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tags/electron-browser/workspaceTags"},{"name":"WorkspaceTagsService","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/tags/electron-browser/workspaceTagsService"},{"name":"WorkspaceTextEdit","kind":"interface","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/modes"},{"name":"WorkspaceWatcher","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/files/common/workspaceWatcher"},{"name":"wrap","kind":"method","kindModifiers":"static,declare","sortText":"5","hasAction":true,"source":"module"},{"name":"WrappingIndent","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/config/editorOptions"},{"name":"WrappingIndent","kind":"enum","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/common/standalone/standaloneEnums"},{"name":"wrapWithCorrelationContext","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/applicationinsights/out/applicationinsights"},{"name":"Writable","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"stream"},{"name":"WritableStream","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"write","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"writeFile","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"writeFile","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"writeFileSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"writeFileSync","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/pfs"},{"name":"writeHeapSnapshot","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"v8"},{"name":"writeProfile","kind":"function","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"v8-inspect-profiler"},{"name":"writer","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"repl"},{"name":"WriteStream","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"WriteStream","kind":"class","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"tty"},{"name":"writeSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"writeTransientState","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/contrib/codeEditor/browser/toggleWordWrap"},{"name":"writeUInt16LE","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"writeUInt32BE","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"writeUInt32LE","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"writeUInt8","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/common/buffer"},{"name":"writev","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"writevSync","kind":"function","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"fs"},{"name":"WSA_E_CANCELLED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSA_E_NO_MORE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEACCES","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEADDRINUSE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEADDRNOTAVAIL","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEAFNOSUPPORT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEALREADY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEBADF","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAECANCELLED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAECONNABORTED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAECONNREFUSED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAECONNRESET","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEDESTADDRREQ","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEDISCON","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEDQUOT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEFAULT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEHOSTDOWN","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEHOSTUNREACH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEINPROGRESS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEINTR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEINVAL","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEINVALIDPROCTABLE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEINVALIDPROVIDER","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEISCONN","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAELOOP","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEMFILE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEMSGSIZE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAENAMETOOLONG","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAENETDOWN","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAENETRESET","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAENETUNREACH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAENOBUFS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAENOMORE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAENOPROTOOPT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAENOTCONN","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAENOTEMPTY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAENOTSOCK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEOPNOTSUPP","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEPFNOSUPPORT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEPROCLIM","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEPROTONOSUPPORT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEPROTOTYPE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEPROVIDERFAILEDINIT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEREFUSED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEREMOTE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAESHUTDOWN","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAESOCKTNOSUPPORT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAESTALE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAETIMEDOUT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAETOOMANYREFS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEUSERS","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAEWOULDBLOCK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSANOTINITIALISED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSASERVICE_NOT_FOUND","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSASYSCALLFAILURE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSASYSNOTREADY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSATYPE_NOT_FOUND","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"WSAVERNOTSUPPORTED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"X_OK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"constants"},{"name":"x01","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x02","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x03","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x04","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x05","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x06","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x07","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x08","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x09","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x10","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x11","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x12","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x13","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x14","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x15","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x16","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x17","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x18","kind":"const","kindModifiers":"","sortText":"4"},{"name":"x19","kind":"const","kindModifiers":"","sortText":"4"},{"name":"xdescribe","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"xdgRuntimeDir","kind":"const","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/platform/environment/node/environmentService"},{"name":"xit","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"XMLDocument","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"XMLHttpRequest","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"XMLHttpRequestEventTarget","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"XMLHttpRequestUpload","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"XMLSerializer","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"XPathEvaluator","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"XPathExpression","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"XPathResult","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"XSLTProcessor","kind":"var","kindModifiers":"declare","sortText":"4"},{"name":"yield","kind":"keyword","kindModifiers":"","sortText":"4"},{"name":"Z_ASCII","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_BEST_COMPRESSION","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_BEST_SPEED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_BINARY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_BLOCK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_BUF_ERROR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_DATA_ERROR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_DEFAULT_COMPRESSION","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_DEFAULT_STRATEGY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_DEFLATED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_ERRNO","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_FILTERED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_FINISH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_FIXED","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_FULL_FLUSH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_HUFFMAN_ONLY","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_MEM_ERROR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_NEED_DICT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_NO_COMPRESSION","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_NO_FLUSH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_OK","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_PARTIAL_FLUSH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_RLE","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_STREAM_END","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_STREAM_ERROR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_SYNC_FLUSH","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_TEXT","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_TREES","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_UNKNOWN","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"Z_VERSION_ERROR","kind":"const","kindModifiers":"declare","sortText":"5","hasAction":true,"source":"zlib"},{"name":"zip","kind":"function","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/base/node/zip"},{"name":"ZipFile","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/yauzl/index"},{"name":"ZipFile","kind":"class","kindModifiers":"export,declare","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/node_modules/@types/yazl/index"},{"name":"ZoneWidget","kind":"class","kindModifiers":"abstract,export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/editor/contrib/zoneWidget/zoneWidget"},{"name":"ZoomInAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"},{"name":"ZoomOutAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"},{"name":"ZoomResetAction","kind":"class","kindModifiers":"export","sortText":"5","hasAction":true,"source":"/Users/jrieken/Code/vscode/src/vs/workbench/electron-browser/actions/windowActions"}]}}'; + data = new ExtHostDocumentData(undefined!, URI.file(''), [ - line + perfData._$_$_expensive ], '\n', 'text', 1, false); let range = data.document.getWordRangeAtPosition(new Position(0, 1_177_170), regex)!; diff --git a/src/vs/workbench/test/browser/api/extHostNotebookConcatDocument.test.ts b/src/vs/workbench/test/browser/api/extHostNotebookConcatDocument.test.ts index da373a4e9e..d23d5b6f6f 100644 --- a/src/vs/workbench/test/browser/api/extHostNotebookConcatDocument.test.ts +++ b/src/vs/workbench/test/browser/api/extHostNotebookConcatDocument.test.ts @@ -111,6 +111,41 @@ suite('NotebookConcatDocument', function () { assert.deepStrictEqual(actual, lines); } + test('contains', function () { + + const cellUri1 = CellUri.generate(notebook.uri, 1); + const cellUri2 = CellUri.generate(notebook.uri, 2); + + extHostNotebooks.$acceptModelChanged(notebookUri, { + kind: NotebookCellsChangeType.ModelChange, + versionId: notebook.versionId + 1, + changes: [[0, 0, [{ + handle: 1, + uri: cellUri1, + source: ['Hello', 'World', 'Hello World!'], + language: 'test', + cellKind: CellKind.Code, + outputs: [], + }, { + handle: 2, + uri: cellUri2, + source: ['Hallo', 'Welt', 'Hallo Welt!'], + language: 'test', + cellKind: CellKind.Code, + outputs: [], + }]]] + }); + + + assert.equal(notebook.cells.length, 1 + 2); // markdown and code + + let doc = new ExtHostNotebookConcatDocument(extHostNotebooks, extHostDocuments, notebook, undefined); + + assert.equal(doc.contains(cellUri1), true); + assert.equal(doc.contains(cellUri2), true); + assert.equal(doc.contains(URI.parse('some://miss/path')), false); + }); + test('location, position mapping', function () { extHostNotebooks.$acceptModelChanged(notebookUri, { @@ -454,4 +489,53 @@ suite('NotebookConcatDocument', function () { assert.equal(doc.getText(new Range(0, 0, 1, 0)), 'Hello\n'); assert.equal(doc.getText(new Range(2, 0, 4, 0)), 'Hello World!\nHallo\n'); }); + + test('validateRange/Position', function () { + + extHostNotebooks.$acceptModelChanged(notebookUri, { + kind: NotebookCellsChangeType.ModelChange, + versionId: notebook.versionId + 1, + changes: [[0, 0, [{ + handle: 1, + uri: CellUri.generate(notebook.uri, 1), + source: ['Hello', 'World', 'Hello World!'], + language: 'test', + cellKind: CellKind.Code, + outputs: [], + }, { + handle: 2, + uri: CellUri.generate(notebook.uri, 2), + source: ['Hallo', 'Welt', 'Hallo Welt!'], + language: 'test', + cellKind: CellKind.Code, + outputs: [], + }]]] + }); + + assert.equal(notebook.cells.length, 1 + 2); // markdown and code + + let doc = new ExtHostNotebookConcatDocument(extHostNotebooks, extHostDocuments, notebook, undefined); + assertLines(doc, 'Hello', 'World', 'Hello World!', 'Hallo', 'Welt', 'Hallo Welt!'); + + + function assertPosition(actual: vscode.Position, expectedLine: number, expectedCh: number) { + assert.equal(actual.line, expectedLine); + assert.equal(actual.character, expectedCh); + } + + + // "fixed" + assertPosition(doc.validatePosition(new Position(0, 1000)), 0, 5); + assertPosition(doc.validatePosition(new Position(2, 1000)), 2, 12); + assertPosition(doc.validatePosition(new Position(5, 1000)), 5, 11); + assertPosition(doc.validatePosition(new Position(5000, 1000)), 5, 11); + + // "good" + assertPosition(doc.validatePosition(new Position(0, 1)), 0, 1); + assertPosition(doc.validatePosition(new Position(0, 5)), 0, 5); + assertPosition(doc.validatePosition(new Position(2, 8)), 2, 8); + assertPosition(doc.validatePosition(new Position(2, 12)), 2, 12); + assertPosition(doc.validatePosition(new Position(5, 11)), 5, 11); + + }); }); diff --git a/src/vs/workbench/test/browser/api/mainThreadEditors.test.ts b/src/vs/workbench/test/browser/api/mainThreadEditors.test.ts index ec2e0d449a..af909747ae 100644 --- a/src/vs/workbench/test/browser/api/mainThreadEditors.test.ts +++ b/src/vs/workbench/test/browser/api/mainThreadEditors.test.ts @@ -95,10 +95,6 @@ suite('MainThreadEditors', () => { services.set(IEditorGroupsService, new TestEditorGroupsService()); services.set(ITextFileService, new class extends mock() { isDirty() { return false; } - create(resource: URI) { - createdResources.add(resource); - return Promise.resolve(Object.create(null)); - } files = { onDidSave: Event.None, onDidRevert: Event.None, @@ -107,16 +103,24 @@ suite('MainThreadEditors', () => { }); services.set(IWorkingCopyFileService, new class extends mock() { onDidRunWorkingCopyFileOperation = Event.None; - move(source: URI, target: URI) { + create(resource: URI) { + createdResources.add(resource); + return Promise.resolve(Object.create(null)); + } + move(files: { source: URI, target: URI }[]) { + const { source, target } = files[0]; movedResources.set(source, target); return Promise.resolve(Object.create(null)); } - copy(source: URI, target: URI) { + copy(files: { source: URI, target: URI }[]) { + const { source, target } = files[0]; copiedResources.set(source, target); return Promise.resolve(Object.create(null)); } - delete(resource: URI) { - deletedResources.add(resource); + delete(resources: URI[]) { + for (const resource of resources) { + deletedResources.add(resource); + } return Promise.resolve(undefined); } }); diff --git a/src/vs/workbench/test/browser/parts/editor/editor.test.ts b/src/vs/workbench/test/browser/parts/editor/editor.test.ts index dfac3f223e..bd0c143d9a 100644 --- a/src/vs/workbench/test/browser/parts/editor/editor.test.ts +++ b/src/vs/workbench/test/browser/parts/editor/editor.test.ts @@ -34,8 +34,8 @@ suite('Workbench editor', () => { const untitled = instantiationService.createInstance(UntitledTextEditorInput, service.create()); assert.equal(toResource(untitled)!.toString(), untitled.resource.toString()); - assert.equal(toResource(untitled, { supportSideBySide: SideBySideEditor.MASTER })!.toString(), untitled.resource.toString()); - assert.equal(toResource(untitled, { supportSideBySide: SideBySideEditor.DETAILS })!.toString(), untitled.resource.toString()); + assert.equal(toResource(untitled, { supportSideBySide: SideBySideEditor.PRIMARY })!.toString(), untitled.resource.toString()); + assert.equal(toResource(untitled, { supportSideBySide: SideBySideEditor.SECONDARY })!.toString(), untitled.resource.toString()); assert.equal(toResource(untitled, { supportSideBySide: SideBySideEditor.BOTH })!.toString(), untitled.resource.toString()); assert.equal(toResource(untitled, { filterByScheme: Schemas.untitled })!.toString(), untitled.resource.toString()); assert.equal(toResource(untitled, { filterByScheme: [Schemas.file, Schemas.untitled] })!.toString(), untitled.resource.toString()); @@ -44,8 +44,8 @@ suite('Workbench editor', () => { const file = new TestEditorInput(URI.file('/some/path.txt'), 'editorResourceFileTest'); assert.equal(toResource(file)!.toString(), file.resource.toString()); - assert.equal(toResource(file, { supportSideBySide: SideBySideEditor.MASTER })!.toString(), file.resource.toString()); - assert.equal(toResource(file, { supportSideBySide: SideBySideEditor.DETAILS })!.toString(), file.resource.toString()); + assert.equal(toResource(file, { supportSideBySide: SideBySideEditor.PRIMARY })!.toString(), file.resource.toString()); + assert.equal(toResource(file, { supportSideBySide: SideBySideEditor.SECONDARY })!.toString(), file.resource.toString()); assert.equal(toResource(file, { supportSideBySide: SideBySideEditor.BOTH })!.toString(), file.resource.toString()); assert.equal(toResource(file, { filterByScheme: Schemas.file })!.toString(), file.resource.toString()); assert.equal(toResource(file, { filterByScheme: [Schemas.file, Schemas.untitled] })!.toString(), file.resource.toString()); @@ -56,20 +56,20 @@ suite('Workbench editor', () => { assert.ok(!toResource(diffEditorInput)); assert.ok(!toResource(diffEditorInput, { filterByScheme: Schemas.file })); - assert.equal(toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.MASTER })!.toString(), file.resource.toString()); - assert.equal(toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.MASTER, filterByScheme: Schemas.file })!.toString(), file.resource.toString()); - assert.equal(toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.MASTER, filterByScheme: [Schemas.file, Schemas.untitled] })!.toString(), file.resource.toString()); + assert.equal(toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.PRIMARY })!.toString(), file.resource.toString()); + assert.equal(toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.PRIMARY, filterByScheme: Schemas.file })!.toString(), file.resource.toString()); + assert.equal(toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.PRIMARY, filterByScheme: [Schemas.file, Schemas.untitled] })!.toString(), file.resource.toString()); - assert.equal(toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.DETAILS })!.toString(), untitled.resource.toString()); - assert.equal(toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.DETAILS, filterByScheme: Schemas.untitled })!.toString(), untitled.resource.toString()); - assert.equal(toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.DETAILS, filterByScheme: [Schemas.file, Schemas.untitled] })!.toString(), untitled.resource.toString()); + assert.equal(toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.SECONDARY })!.toString(), untitled.resource.toString()); + assert.equal(toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.SECONDARY, filterByScheme: Schemas.untitled })!.toString(), untitled.resource.toString()); + assert.equal(toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.SECONDARY, filterByScheme: [Schemas.file, Schemas.untitled] })!.toString(), untitled.resource.toString()); - assert.equal((toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.BOTH }) as { master: URI, detail: URI }).master.toString(), file.resource.toString()); - assert.equal((toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.BOTH, filterByScheme: Schemas.file }) as { master: URI, detail: URI }).master.toString(), file.resource.toString()); - assert.equal((toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.BOTH, filterByScheme: [Schemas.file, Schemas.untitled] }) as { master: URI, detail: URI }).master.toString(), file.resource.toString()); + assert.equal((toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.BOTH }) as { primary: URI, secondary: URI }).primary.toString(), file.resource.toString()); + assert.equal((toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.BOTH, filterByScheme: Schemas.file }) as { primary: URI, secondary: URI }).primary.toString(), file.resource.toString()); + assert.equal((toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.BOTH, filterByScheme: [Schemas.file, Schemas.untitled] }) as { primary: URI, secondary: URI }).primary.toString(), file.resource.toString()); - assert.equal((toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.BOTH }) as { master: URI, detail: URI }).detail.toString(), untitled.resource.toString()); - assert.equal((toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.BOTH, filterByScheme: Schemas.untitled }) as { master: URI, detail: URI }).detail.toString(), untitled.resource.toString()); - assert.equal((toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.BOTH, filterByScheme: [Schemas.file, Schemas.untitled] }) as { master: URI, detail: URI }).detail.toString(), untitled.resource.toString()); + assert.equal((toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.BOTH }) as { primary: URI, secondary: URI }).secondary.toString(), untitled.resource.toString()); + assert.equal((toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.BOTH, filterByScheme: Schemas.untitled }) as { primary: URI, secondary: URI }).secondary.toString(), untitled.resource.toString()); + assert.equal((toResource(diffEditorInput, { supportSideBySide: SideBySideEditor.BOTH, filterByScheme: [Schemas.file, Schemas.untitled] }) as { primary: URI, secondary: URI }).secondary.toString(), untitled.resource.toString()); }); }); diff --git a/src/vs/workbench/test/browser/parts/editor/editorGroups.test.ts b/src/vs/workbench/test/browser/parts/editor/editorGroups.test.ts index d80d44d073..511518e4fe 100644 --- a/src/vs/workbench/test/browser/parts/editor/editorGroups.test.ts +++ b/src/vs/workbench/test/browser/parts/editor/editorGroups.test.ts @@ -150,6 +150,8 @@ class NonSerializableTestEditorInput extends EditorInput { class TestFileEditorInput extends EditorInput implements IFileEditorInput { + readonly label = this.resource; + constructor(public id: string, public resource: URI) { super(); } diff --git a/src/vs/workbench/test/browser/workbenchTestServices.ts b/src/vs/workbench/test/browser/workbenchTestServices.ts index f46c0ffbb8..18a20a50f5 100644 --- a/src/vs/workbench/test/browser/workbenchTestServices.ts +++ b/src/vs/workbench/test/browser/workbenchTestServices.ts @@ -835,6 +835,7 @@ export class TestFileService implements IFileService { getWriteEncoding(_resource: URI): IResourceEncoding { return { encoding: 'utf8', hasBOM: false }; } dispose(): void { } + async canCreateFile(source: URI, options?: ICreateFileOptions): Promise { return true; } async canMove(source: URI, target: URI, overwrite?: boolean | undefined): Promise { return true; } async canCopy(source: URI, target: URI, overwrite?: boolean | undefined): Promise { return true; } async canDelete(resource: URI, options?: { useTrash?: boolean | undefined; recursive?: boolean | undefined; } | undefined): Promise { return true; } @@ -1056,6 +1057,9 @@ export function registerTestEditor(id: string, inputs: SyncDescriptor { diff --git a/src/vs/workbench/test/common/workbenchTestServices.ts b/src/vs/workbench/test/common/workbenchTestServices.ts index 88e9417df1..c334eeb460 100644 --- a/src/vs/workbench/test/common/workbenchTestServices.ts +++ b/src/vs/workbench/test/common/workbenchTestServices.ts @@ -18,7 +18,8 @@ import { WorkingCopyService, IWorkingCopy } from 'vs/workbench/services/workingC import { NullExtensionService } from 'vs/workbench/services/extensions/common/extensions'; import { IWorkingCopyFileService, IWorkingCopyFileOperationParticipant, WorkingCopyFileEvent } from 'vs/workbench/services/workingCopy/common/workingCopyFileService'; import { IDisposable, Disposable } from 'vs/base/common/lifecycle'; -import { FileOperation, IFileStatWithMetadata } from 'vs/platform/files/common/files'; +import { IFileStatWithMetadata } from 'vs/platform/files/common/files'; +import { VSBuffer, VSBufferReadable, VSBufferReadableStream } from 'vs/base/common/buffer'; export class TestTextResourcePropertiesService implements ITextResourcePropertiesService { @@ -134,17 +135,17 @@ export class TestWorkingCopyFileService implements IWorkingCopyFileService { addFileOperationParticipant(participant: IWorkingCopyFileOperationParticipant): IDisposable { return Disposable.None; } - async runFileOperationParticipants(target: URI, source: URI | undefined, operation: FileOperation): Promise { } - - async delete(resource: URI, options?: { useTrash?: boolean | undefined; recursive?: boolean | undefined; } | undefined): Promise { } + async delete(resources: URI[], options?: { useTrash?: boolean | undefined; recursive?: boolean | undefined; } | undefined): Promise { } registerWorkingCopyProvider(provider: (resourceOrFolder: URI) => IWorkingCopy[]): IDisposable { return Disposable.None; } getDirty(resource: URI): IWorkingCopy[] { return []; } - move(source: URI, target: URI, overwrite?: boolean | undefined): Promise { throw new Error('Method not implemented.'); } + create(resource: URI, contents?: VSBuffer | VSBufferReadable | VSBufferReadableStream, options?: { overwrite?: boolean | undefined; } | undefined): Promise { throw new Error('Method not implemented.'); } - copy(source: URI, target: URI, overwrite?: boolean | undefined): Promise { throw new Error('Method not implemented.'); } + move(files: { source: URI; target: URI; }[], options?: { overwrite?: boolean }): Promise { throw new Error('Method not implemented.'); } + + copy(files: { source: URI; target: URI; }[], options?: { overwrite?: boolean }): Promise { throw new Error('Method not implemented.'); } } export function mock(): Ctor { diff --git a/src/vs/workbench/test/electron-browser/workbenchTestServices.ts b/src/vs/workbench/test/electron-browser/workbenchTestServices.ts index 6eb5a8c9c9..e66c888c74 100644 --- a/src/vs/workbench/test/electron-browser/workbenchTestServices.ts +++ b/src/vs/workbench/test/electron-browser/workbenchTestServices.ts @@ -7,7 +7,8 @@ import { workbenchInstantiationService as browserWorkbenchInstantiationService, import { Event } from 'vs/base/common/event'; import { ISharedProcessService } from 'vs/platform/ipc/electron-browser/sharedProcessService'; import { NativeWorkbenchEnvironmentService, INativeWorkbenchEnvironmentService } from 'vs/workbench/services/environment/electron-browser/environmentService'; -import { NativeTextFileService, EncodingOracle, IEncodingOverride } from 'vs/workbench/services/textfile/electron-browser/nativeTextFileService'; +import { NativeTextFileService, } from 'vs/workbench/services/textfile/electron-browser/nativeTextFileService'; +import { EncodingOracle, IEncodingOverride } from 'vs/workbench/services/textfile/browser/textFileService'; import { IElectronService } from 'vs/platform/electron/electron-sandbox/electron'; import { FileOperationError, IFileService } from 'vs/platform/files/common/files'; import { IUntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; @@ -29,7 +30,7 @@ import { parseArgs, OPTIONS } from 'vs/platform/environment/node/argv'; import { LogLevel, ILogService } from 'vs/platform/log/common/log'; import { IPathService } from 'vs/workbench/services/path/common/pathService'; import { IWorkingCopyFileService } from 'vs/workbench/services/workingCopy/common/workingCopyFileService'; -import { UTF16le, UTF16be, UTF8_with_bom } from 'vs/base/node/encoding'; +import { UTF16le, UTF16be, UTF8_with_bom } from 'vs/workbench/services/textfile/common/encoding'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; import { ModelServiceImpl } from 'vs/editor/common/services/modelServiceImpl'; import { IBackupFileService } from 'vs/workbench/services/backup/common/backup'; @@ -39,6 +40,7 @@ import { IEditorService } from 'vs/workbench/services/editor/common/editorServic import { INativeWindowConfiguration } from 'vs/platform/windows/node/window'; import { TestContextService } from 'vs/workbench/test/common/workbenchTestServices'; import { IUriIdentityService } from 'vs/workbench/services/uriIdentity/common/uriIdentity'; +import { MouseInputEvent } from 'vs/base/parts/sandbox/common/electronTypes'; export const TestWindowConfiguration: INativeWindowConfiguration = { windowId: 0, @@ -231,6 +233,7 @@ export class TestElectronService implements IElectronService { async writeClipboardBuffer(format: string, buffer: Uint8Array, type?: 'selection' | 'clipboard' | undefined): Promise { } async readClipboardBuffer(format: string): Promise { return Uint8Array.from([]); } async hasClipboard(format: string, type?: 'selection' | 'clipboard' | undefined): Promise { return false; } + async sendInputEvent(event: MouseInputEvent): Promise { } } export function workbenchInstantiationService(): ITestInstantiationService { diff --git a/src/vs/workbench/workbench.common.main.ts b/src/vs/workbench/workbench.common.main.ts index ccad6642b2..cf6e660359 100644 --- a/src/vs/workbench/workbench.common.main.ts +++ b/src/vs/workbench/workbench.common.main.ts @@ -74,9 +74,10 @@ import 'vs/workbench/services/mode/common/workbenchModeService'; import 'vs/workbench/services/commands/common/commandService'; import 'vs/workbench/services/themes/browser/workbenchThemeService'; import 'vs/workbench/services/label/common/labelService'; +import 'vs/workbench/services/extensionManagement/common/webExtensionsScannerService'; import 'vs/workbench/services/extensionManagement/common/extensionEnablementService'; +import 'vs/workbench/services/extensionManagement/browser/builtinExtensionsScannerService'; import 'vs/workbench/services/notification/common/notificationService'; -import 'vs/workbench/services/extensions/common/staticExtensions'; import 'vs/workbench/services/userDataSync/common/userDataSyncUtil'; import 'vs/workbench/services/remote/common/remoteExplorerService'; import 'vs/workbench/services/workingCopy/common/workingCopyService'; @@ -86,6 +87,7 @@ import 'vs/workbench/services/views/browser/viewDescriptorService'; import 'vs/workbench/services/quickinput/browser/quickInputService'; import 'vs/workbench/services/userDataSync/browser/userDataSyncWorkbenchService'; import 'vs/workbench/services/authentication/browser/authenticationService'; +import 'vs/workbench/services/hover/browser/hoverService'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { ExtensionGalleryService } from 'vs/platform/extensionManagement/common/extensionGalleryService'; @@ -280,7 +282,6 @@ import 'vs/workbench/contrib/sash/browser/sash.contribution'; // SCM import 'vs/workbench/contrib/scm/browser/scm.contribution'; -import 'vs/workbench/contrib/scm/browser/scmViewlet'; /* {{SQL CARBON EDIT}} // Debug import 'vs/workbench/contrib/debug/browser/debug.contribution'; @@ -314,6 +315,7 @@ import 'vs/workbench/contrib/output/browser/outputView'; // Terminal import 'vs/workbench/contrib/terminal/common/environmentVariable.contribution'; +import 'vs/workbench/contrib/terminal/common/terminalExtensionPoints.contribution'; import 'vs/workbench/contrib/terminal/browser/terminal.contribution'; import 'vs/workbench/contrib/terminal/browser/terminalView'; @@ -388,9 +390,6 @@ import 'vs/workbench/contrib/welcome/common/viewsWelcome.contribution'; // Timeline import 'vs/workbench/contrib/timeline/browser/timeline.contribution'; -// Hover -import 'vs/workbench/contrib/hover/browser/hover.contribution'; - //#endregion //#region -- contributions diff --git a/src/vs/workbench/workbench.desktop.main.ts b/src/vs/workbench/workbench.desktop.main.ts index fa1756562d..050e374798 100644 --- a/src/vs/workbench/workbench.desktop.main.ts +++ b/src/vs/workbench/workbench.desktop.main.ts @@ -34,7 +34,6 @@ import 'vs/workbench/electron-browser/desktop.main'; //#region --- workbench services -import 'vs/workbench/services/dialogs/electron-browser/fileDialogService'; import 'vs/workbench/services/integrity/node/integrityService'; import 'vs/workbench/services/textMate/electron-browser/textMateService'; import 'vs/workbench/services/search/node/searchService'; @@ -44,7 +43,6 @@ import 'vs/workbench/services/dialogs/electron-browser/dialogService'; import 'vs/workbench/services/keybinding/electron-browser/nativeKeymapService'; import 'vs/workbench/services/keybinding/electron-browser/keybinding.contribution'; import 'vs/workbench/services/extensions/electron-browser/extensionService'; -import 'vs/workbench/services/contextmenu/electron-sandbox/contextmenuService'; // TODO@Miguel this cannot be moved to sandbox due to https://github.com/microsoft/vscode/issues/98495 import 'vs/workbench/services/extensionManagement/electron-browser/extensionManagementServerService'; import 'vs/workbench/services/extensionManagement/electron-browser/extensionTipsService'; import 'vs/workbench/services/remote/electron-browser/remoteAgentServiceImpl'; @@ -59,7 +57,6 @@ import 'vs/workbench/services/userDataSync/electron-browser/userDataSyncService' import 'vs/workbench/services/userDataSync/electron-browser/userDataSyncAccountService'; import 'vs/workbench/services/sharedProcess/electron-browser/sharedProcessService'; import 'vs/workbench/services/localizations/electron-browser/localizationsService'; -import 'vs/workbench/services/clipboard/electron-browser/clipboardService'; import 'vs/workbench/services/path/electron-browser/pathService'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; diff --git a/src/vs/workbench/workbench.sandbox.main.ts b/src/vs/workbench/workbench.sandbox.main.ts index 05b80dade0..2162b89b00 100644 --- a/src/vs/workbench/workbench.sandbox.main.ts +++ b/src/vs/workbench/workbench.sandbox.main.ts @@ -19,6 +19,7 @@ import 'vs/workbench/workbench.common.main'; //#region --- workbench services +import 'vs/workbench/services/dialogs/electron-sandbox/fileDialogService'; import 'vs/workbench/services/workspaces/electron-sandbox/workspacesService'; import 'vs/workbench/services/userDataSync/electron-sandbox/storageKeysSyncRegistryService'; import 'vs/workbench/services/menubar/electron-sandbox/menubarService'; @@ -30,6 +31,8 @@ import 'vs/workbench/services/title/electron-sandbox/titleService'; import 'vs/workbench/services/host/electron-sandbox/desktopHostService'; import 'vs/workbench/services/request/electron-sandbox/requestService'; import 'vs/workbench/services/extensionResourceLoader/electron-sandbox/extensionResourceLoaderService'; +import 'vs/workbench/services/clipboard/electron-sandbox/clipboardService'; +import 'vs/workbench/services/contextmenu/electron-sandbox/contextmenuService'; //#endregion diff --git a/src/vs/workbench/workbench.web.api.ts b/src/vs/workbench/workbench.web.api.ts index 7d29c3711c..697e0be425 100644 --- a/src/vs/workbench/workbench.web.api.ts +++ b/src/vs/workbench/workbench.web.api.ts @@ -260,6 +260,11 @@ interface IWorkbenchConstructionOptions { */ readonly staticExtensions?: ReadonlyArray; + /** + * Service end-point hosting builtin extensions + */ + readonly builtinExtensionsServiceUrl?: string; + /** * Support for URL callbacks. */ diff --git a/test/smoke/src/areas/workbench/localization.test.ts b/test/smoke/src/areas/workbench/localization.test.ts index dd45700f01..dc98746e7b 100644 --- a/test/smoke/src/areas/workbench/localization.test.ts +++ b/test/smoke/src/areas/workbench/localization.test.ts @@ -33,8 +33,8 @@ export function setup() { await app.workbench.search.openSearchViewlet(); await app.workbench.search.waitForTitle(title => /suchen/i.test(title)); - await app.workbench.scm.openSCMViewlet(); - await app.workbench.scm.waitForTitle(title => /quellcodeverwaltung/i.test(title)); + // await app.workbench.scm.openSCMViewlet(); + // await app.workbench.scm.waitForTitle(title => /quellcodeverwaltung/i.test(title)); // See https://github.com/microsoft/vscode/issues/93462 // await app.workbench.debug.openDebugViewlet(); diff --git a/test/unit/electron/index.js b/test/unit/electron/index.js index 17d1ef2e97..0418b0029f 100644 --- a/test/unit/electron/index.js +++ b/test/unit/electron/index.js @@ -127,6 +127,7 @@ app.on('ready', () => { webviewTag: true, preload: path.join(__dirname, '..', '..', '..', 'src', 'vs', 'base', 'parts', 'sandbox', 'electron-browser', 'preload.js'), // ensure similar environment as VSCode as tests may depend on this enableWebSQL: false, + enableRemoteModule: false, nativeWindowOpen: true } }); diff --git a/yarn.lock b/yarn.lock index 9370be67f0..1c7e8adcfe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -279,13 +279,6 @@ dependencies: "@types/node" "*" -"@types/iconv-lite@0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@types/iconv-lite/-/iconv-lite-0.0.1.tgz#aa3b8bda2be512b1ae0a057b942e869c370a5569" - integrity sha1-qjuL2ivlErGuCgV7lC6GnDcKVWk= - dependencies: - "@types/node" "*" - "@types/json-schema@^7.0.3": version "7.0.4" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" @@ -478,172 +471,166 @@ semver "^7.3.2" tsutils "^3.17.1" -"@webassemblyjs/ast@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.5.13.tgz#81155a570bd5803a30ec31436bc2c9c0ede38f25" - integrity sha512-49nwvW/Hx9i+OYHg+mRhKZfAlqThr11Dqz8TsrvqGKMhdI2ijy3KBJOun2Z4770TPjrIJhR6KxChQIDaz8clDA== +"@webassemblyjs/ast@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== dependencies: - "@webassemblyjs/helper-module-context" "1.5.13" - "@webassemblyjs/helper-wasm-bytecode" "1.5.13" - "@webassemblyjs/wast-parser" "1.5.13" - debug "^3.1.0" - mamacro "^0.0.3" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" -"@webassemblyjs/floating-point-hex-parser@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.5.13.tgz#29ce0baa97411f70e8cce68ce9c0f9d819a4e298" - integrity sha512-vrvvB18Kh4uyghSKb0NTv+2WZx871WL2NzwMj61jcq2bXkyhRC+8Q0oD7JGVf0+5i/fKQYQSBCNMMsDMRVAMqA== +"@webassemblyjs/floating-point-hex-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== -"@webassemblyjs/helper-api-error@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.5.13.tgz#e49b051d67ee19a56e29b9aa8bd949b5b4442a59" - integrity sha512-dBh2CWYqjaDlvMmRP/kudxpdh30uXjIbpkLj9HQe+qtYlwvYjPRjdQXrq1cTAAOUSMTtzqbXIxEdEZmyKfcwsg== +"@webassemblyjs/helper-api-error@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== -"@webassemblyjs/helper-buffer@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.5.13.tgz#873bb0a1b46449231137c1262ddfd05695195a1e" - integrity sha512-v7igWf1mHcpJNbn4m7e77XOAWXCDT76Xe7Is1VQFXc4K5jRcFrl9D0NrqM4XifQ0bXiuTSkTKMYqDxu5MhNljA== +"@webassemblyjs/helper-buffer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== + +"@webassemblyjs/helper-code-frame@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== dependencies: - debug "^3.1.0" + "@webassemblyjs/wast-printer" "1.9.0" -"@webassemblyjs/helper-code-frame@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.5.13.tgz#1bd2181b6a0be14e004f0fe9f5a660d265362b58" - integrity sha512-yN6ScQQDFCiAXnVctdVO/J5NQRbwyTbQzsGzEgXsAnrxhjp0xihh+nNHQTMrq5UhOqTb5LykpJAvEv9AT0jnAQ== +"@webassemblyjs/helper-fsm@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== + +"@webassemblyjs/helper-module-context@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== dependencies: - "@webassemblyjs/wast-printer" "1.5.13" + "@webassemblyjs/ast" "1.9.0" -"@webassemblyjs/helper-fsm@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.5.13.tgz#cdf3d9d33005d543a5c5e5adaabf679ffa8db924" - integrity sha512-hSIKzbXjVMRvy3Jzhgu+vDd/aswJ+UMEnLRCkZDdknZO3Z9e6rp1DAs0tdLItjCFqkz9+0BeOPK/mk3eYvVzZg== +"@webassemblyjs/helper-wasm-bytecode@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== -"@webassemblyjs/helper-module-context@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.5.13.tgz#dc29ddfb51ed657655286f94a5d72d8a489147c5" - integrity sha512-zxJXULGPLB7r+k+wIlvGlXpT4CYppRz8fLUM/xobGHc9Z3T6qlmJD9ySJ2jknuktuuiR9AjnNpKYDECyaiX+QQ== +"@webassemblyjs/helper-wasm-section@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== dependencies: - debug "^3.1.0" - mamacro "^0.0.3" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" -"@webassemblyjs/helper-wasm-bytecode@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.5.13.tgz#03245817f0a762382e61733146f5773def15a747" - integrity sha512-0n3SoNGLvbJIZPhtMFq0XmmnA/YmQBXaZKQZcW8maGKwLpVcgjNrxpFZHEOLKjXJYVN5Il8vSfG7nRX50Zn+aw== - -"@webassemblyjs/helper-wasm-section@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.5.13.tgz#efc76f44a10d3073b584b43c38a179df173d5c7d" - integrity sha512-IJ/goicOZ5TT1axZFSnlAtz4m8KEjYr12BNOANAwGFPKXM4byEDaMNXYowHMG0yKV9a397eU/NlibFaLwr1fbw== +"@webassemblyjs/ieee754@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== dependencies: - "@webassemblyjs/ast" "1.5.13" - "@webassemblyjs/helper-buffer" "1.5.13" - "@webassemblyjs/helper-wasm-bytecode" "1.5.13" - "@webassemblyjs/wasm-gen" "1.5.13" - debug "^3.1.0" + "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/ieee754@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.5.13.tgz#573e97c8c12e4eebb316ca5fde0203ddd90b0364" - integrity sha512-TseswvXEPpG5TCBKoLx9tT7+/GMACjC1ruo09j46ULRZWYm8XHpDWaosOjTnI7kr4SRJFzA6MWoUkAB+YCGKKg== +"@webassemblyjs/leb128@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== dependencies: - ieee754 "^1.1.11" + "@xtuc/long" "4.2.2" -"@webassemblyjs/leb128@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.5.13.tgz#ab52ebab9cec283c1c1897ac1da833a04a3f4cee" - integrity sha512-0NRMxrL+GG3eISGZBmLBLAVjphbN8Si15s7jzThaw1UE9e5BY1oH49/+MA1xBzxpf1OW5sf9OrPDOclk9wj2yg== +"@webassemblyjs/utf8@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== + +"@webassemblyjs/wasm-edit@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== dependencies: - long "4.0.0" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/helper-wasm-section" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-opt" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/wast-printer" "1.9.0" -"@webassemblyjs/utf8@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.5.13.tgz#6b53d2cd861cf94fa99c1f12779dde692fbc2469" - integrity sha512-Ve1ilU2N48Ew0lVGB8FqY7V7hXjaC4+PeZM+vDYxEd+R2iQ0q+Wb3Rw8v0Ri0+rxhoz6gVGsnQNb4FjRiEH/Ng== - -"@webassemblyjs/wasm-edit@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.5.13.tgz#c9cef5664c245cf11b3b3a73110c9155831724a8" - integrity sha512-X7ZNW4+Hga4f2NmqENnHke2V/mGYK/xnybJSIXImt1ulxbCOEs/A+ZK/Km2jgihjyVxp/0z0hwIcxC6PrkWtgw== +"@webassemblyjs/wasm-gen@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== dependencies: - "@webassemblyjs/ast" "1.5.13" - "@webassemblyjs/helper-buffer" "1.5.13" - "@webassemblyjs/helper-wasm-bytecode" "1.5.13" - "@webassemblyjs/helper-wasm-section" "1.5.13" - "@webassemblyjs/wasm-gen" "1.5.13" - "@webassemblyjs/wasm-opt" "1.5.13" - "@webassemblyjs/wasm-parser" "1.5.13" - "@webassemblyjs/wast-printer" "1.5.13" - debug "^3.1.0" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" -"@webassemblyjs/wasm-gen@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.5.13.tgz#8e6ea113c4b432fa66540189e79b16d7a140700e" - integrity sha512-yfv94Se8R73zmr8GAYzezFHc3lDwE/lBXQddSiIZEKZFuqy7yWtm3KMwA1uGbv5G1WphimJxboXHR80IgX1hQA== +"@webassemblyjs/wasm-opt@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== dependencies: - "@webassemblyjs/ast" "1.5.13" - "@webassemblyjs/helper-wasm-bytecode" "1.5.13" - "@webassemblyjs/ieee754" "1.5.13" - "@webassemblyjs/leb128" "1.5.13" - "@webassemblyjs/utf8" "1.5.13" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" -"@webassemblyjs/wasm-opt@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.5.13.tgz#147aad7717a7ee4211c36b21a5f4c30dddf33138" - integrity sha512-IkXSkgzVhQ0QYAdIayuCWMmXSYx0dHGU8Ah/AxJf1gBvstMWVnzJnBwLsXLyD87VSBIcsqkmZ28dVb0mOC3oBg== +"@webassemblyjs/wasm-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== dependencies: - "@webassemblyjs/ast" "1.5.13" - "@webassemblyjs/helper-buffer" "1.5.13" - "@webassemblyjs/wasm-gen" "1.5.13" - "@webassemblyjs/wasm-parser" "1.5.13" - debug "^3.1.0" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" -"@webassemblyjs/wasm-parser@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.5.13.tgz#6f46516c5bb23904fbdf58009233c2dd8a54c72f" - integrity sha512-XnYoIcu2iqq8/LrtmdnN3T+bRjqYFjRHqWbqK3osD/0r/Fcv4d9ecRzjVtC29ENEuNTK4mQ9yyxCBCbK8S/cpg== +"@webassemblyjs/wast-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== dependencies: - "@webassemblyjs/ast" "1.5.13" - "@webassemblyjs/helper-api-error" "1.5.13" - "@webassemblyjs/helper-wasm-bytecode" "1.5.13" - "@webassemblyjs/ieee754" "1.5.13" - "@webassemblyjs/leb128" "1.5.13" - "@webassemblyjs/utf8" "1.5.13" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-code-frame" "1.9.0" + "@webassemblyjs/helper-fsm" "1.9.0" + "@xtuc/long" "4.2.2" -"@webassemblyjs/wast-parser@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.5.13.tgz#5727a705d397ae6a3ae99d7f5460acf2ec646eea" - integrity sha512-Lbz65T0LQ1LgzKiUytl34CwuhMNhaCLgrh0JW4rJBN6INnBB8NMwUfQM+FxTnLY9qJ+lHJL/gCM5xYhB9oWi4A== +"@webassemblyjs/wast-printer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== dependencies: - "@webassemblyjs/ast" "1.5.13" - "@webassemblyjs/floating-point-hex-parser" "1.5.13" - "@webassemblyjs/helper-api-error" "1.5.13" - "@webassemblyjs/helper-code-frame" "1.5.13" - "@webassemblyjs/helper-fsm" "1.5.13" - long "^3.2.0" - mamacro "^0.0.3" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + "@xtuc/long" "4.2.2" -"@webassemblyjs/wast-printer@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.5.13.tgz#bb34d528c14b4f579e7ec11e793ec50ad7cd7c95" - integrity sha512-QcwogrdqcBh8Z+eUF8SG+ag5iwQSXxQJELBEHmLkk790wgQgnIMmntT2sMAMw53GiFNckArf5X0bsCA44j3lWQ== - dependencies: - "@webassemblyjs/ast" "1.5.13" - "@webassemblyjs/wast-parser" "1.5.13" - long "^3.2.0" +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -acorn-dynamic-import@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278" - integrity sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg== - dependencies: - acorn "^5.0.0" - acorn-jsx@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" @@ -654,16 +641,16 @@ acorn-jsx@^5.1.0: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384" integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw== -acorn@^5.0.0, acorn@^5.6.2: - version "5.7.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" - integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== - acorn@^6.0.2: version "6.0.7" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.7.tgz#490180ce18337270232d9488a44be83d9afb7fd3" integrity sha512-HNJNgE60C9eOTgn974Tlp3dpLZdUr+SoxxDwPaY9J/kDNOLQTkaDgwBUXAF4SSsrAwD9RpdxuHK/EbuF+W9Ahw== +acorn@^6.4.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== + acorn@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" @@ -676,6 +663,11 @@ agent-base@4: dependencies: es6-promisify "^5.0.0" +agent-base@5: + version "5.1.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c" + integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g== + agent-base@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" @@ -690,6 +682,11 @@ agent-base@~4.2.1: dependencies: es6-promisify "^5.0.0" +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + ajv-keywords@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" @@ -1089,11 +1086,6 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= -assert-plus@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" - integrity sha1-104bh+ev/A24qttwIfP+SBAasjQ= - assert@^1.1.1: version "1.4.1" resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" @@ -1121,7 +1113,7 @@ async-done@^1.2.0, async-done@^1.2.2: process-nextick-args "^1.0.7" stream-exhaust "^1.0.1" -async-each@^1.0.0, async-each@^1.0.1: +async-each@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" integrity sha1-GdOGodntxufByF04iu28xW0zYC0= @@ -1182,26 +1174,21 @@ autoprefixer@^6.3.1: postcss "^5.2.16" postcss-value-parser "^3.2.3" -aws-sign2@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" - integrity sha1-FDQt0428yU0OW4fXY81jYSwOeU8= - aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= -aws4@^1.2.1, aws4@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" - integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== - aws4@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" integrity sha1-g+9cqGCysy5KDe7e6MdxudtXRx4= +aws4@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" + integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== + azure-storage@^2.10.2: version "2.10.2" resolved "https://registry.yarnpkg.com/azure-storage/-/azure-storage-2.10.2.tgz#3bcabdbf10e72fd0990db81116e49023c4a675b6" @@ -1335,6 +1322,11 @@ bluebird@^3.5.1: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" integrity sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA== +bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" @@ -1350,13 +1342,6 @@ boolean@^3.0.0: resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.0.0.tgz#fab78d5907dbae6216ab46d32733bb7b76b99e76" integrity sha512-OElxJ1lUSinuoUnkpOgLmxp0DC4ytEhODEL6QJU0NpxE/mI4rUSh8h1P1Wkvfi3xQEBcxXR2gBIPNYNuaFcAbQ== -boom@2.x.x: - version "2.10.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" - integrity sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8= - dependencies: - hoek "2.x.x" - boom@4.x.x: version "4.3.1" resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" @@ -1388,7 +1373,7 @@ braces@^1.8.2: preserve "^0.2.0" repeat-element "^1.1.2" -braces@^2.3.0, braces@^2.3.1, braces@^2.3.2: +braces@^2.3.1, braces@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== @@ -1564,6 +1549,27 @@ cacache@^10.0.4: unique-filename "^1.1.0" y18n "^4.0.0" +cacache@^12.0.2: + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -1622,11 +1628,6 @@ caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000760.tgz#3ea29473eb78a6ccb09f2eb73ac9e1debfec528d" integrity sha1-PqKUc+t4psywny63Osnh3r/sUo0= -caseless@~0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" - integrity sha1-cVuW6phBWTzDMGeSP17GDr2k99c= - caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -1639,16 +1640,7 @@ chainsaw@~0.1.0: dependencies: traverse ">=0.3.0 <0.4" -chalk@2.4.2, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^1.1.1, chalk@^1.1.3: +chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= @@ -1668,6 +1660,15 @@ chalk@^2.0.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + chalk@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" @@ -1756,25 +1757,39 @@ chokidar@^2.0.0: optionalDependencies: fsevents "^1.2.7" -chokidar@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" - integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== +chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== dependencies: anymatch "^2.0.0" - async-each "^1.0.0" - braces "^2.3.0" + async-each "^1.0.1" + braces "^2.3.2" glob-parent "^3.1.0" - inherits "^2.0.1" + inherits "^2.0.3" is-binary-path "^1.0.0" is-glob "^4.0.0" - lodash.debounce "^4.0.8" - normalize-path "^2.1.1" + normalize-path "^3.0.0" path-is-absolute "^1.0.0" - readdirp "^2.0.0" - upath "^1.0.5" + readdirp "^2.2.1" + upath "^1.1.1" optionalDependencies: - fsevents "^1.2.2" + fsevents "^1.2.7" + +chokidar@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.0.tgz#b30611423ce376357c765b9b8f904b9fba3c0be8" + integrity sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.4.0" + optionalDependencies: + fsevents "~2.1.2" chownr@^1.0.1: version "1.0.1" @@ -1794,10 +1809,10 @@ chrome-remote-interface@0.26.1: commander "2.11.x" ws "^3.3.3" -chrome-trace-event@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz#45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48" - integrity sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A== +chrome-trace-event@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== dependencies: tslib "^1.9.0" @@ -2070,10 +2085,10 @@ commander@^2.19.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== -commander@~2.13.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" - integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA== +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== commandpost@^1.0.0: version "1.2.1" @@ -2218,17 +2233,6 @@ core-util-is@1.0.2, core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -coveralls@^2.11.11: - version "2.13.3" - resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-2.13.3.tgz#9ad7c2ae527417f361e8b626483f48ee92dd2bc7" - integrity sha512-iiAmn+l1XqRwNLXhW8Rs5qHZRFMYp9ZIPjEOVRpC/c4so6Y/f4/lFi0FfR5B9cCqgyhkJ5cZmbvcVRfP8MHchw== - dependencies: - js-yaml "3.6.1" - lcov-parse "0.0.10" - log-driver "1.2.5" - minimist "1.2.0" - request "2.79.0" - create-ecdh@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" @@ -2260,7 +2264,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: +cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -2276,13 +2280,6 @@ crypt@~0.0.1: resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= -cryptiles@2.x.x: - version "2.0.5" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" - integrity sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g= - dependencies: - boom "2.x.x" - cryptiles@3.x.x: version "3.1.2" resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" @@ -2470,6 +2467,13 @@ debug@3.1.0: dependencies: ms "2.0.0" +debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + debug@^3.1.0: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" @@ -2477,13 +2481,6 @@ debug@^3.1.0: dependencies: ms "^2.1.1" -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== - dependencies: - ms "^2.1.1" - decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -2834,10 +2831,10 @@ electron-to-chromium@^1.2.7: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz#78ecb8a399066187bb374eede35d9c70565a803d" integrity sha1-eOy4o5kGYYe7N07t412ccFZagD0= -electron@7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/electron/-/electron-7.3.1.tgz#3574f85866b97a8712265442dbf7244cac639910" - integrity sha512-T1yuQqjTpRIh/oQ1rIhuN2aIk0YZaielyn09oxrMMwvL+C3bHvpPUJSCZrtVSzdUmTORhQRM9FZPzheBsneVUA== +electron@7.3.2: + version "7.3.2" + resolved "https://registry.yarnpkg.com/electron/-/electron-7.3.2.tgz#184b69fe9089693e179b3b34effa975dfc8e505d" + integrity sha512-5uSWVfCJogiPiU0G+RKi4ECnNs0gPNjAwYVE9KR7RXaOJYcpNIC5RFejaaUnuRoBssJ5B1n/5WU6wDUxvPajWQ== dependencies: "@electron/get" "^1.0.1" "@types/node" "^12.0.12" @@ -2878,6 +2875,11 @@ emojis-list@^2.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + encodeurl@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -2897,7 +2899,7 @@ end-of-stream@^1.4.1: dependencies: once "^1.4.0" -enhanced-resolve@4.1.0, enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: +enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== @@ -2906,6 +2908,15 @@ enhanced-resolve@4.1.0, enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: memory-fs "^0.4.0" tapable "^1.0.0" +enhanced-resolve@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.2.0.tgz#5d43bda4a0fd447cb0ebbe71bef8deff8805ad0d" + integrity sha512-S7eiFb/erugyd1rLb6mQ3Vuq+EXHv5cpCkNqqIkYkBgN2QdFnyCZzFBleqwGEx4lgNGYij81BWnCrFNK7vxvjQ== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + entities@^1.1.1, entities@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" @@ -3019,6 +3030,14 @@ eslint-scope@^4.0.0: esrecurse "^4.1.0" estraverse "^4.1.1" +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + eslint-scope@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" @@ -3220,10 +3239,10 @@ event-stream@~3.3.4: stream-combiner "^0.2.2" through "^2.3.8" -events@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" - integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= +events@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" + integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" @@ -3312,7 +3331,7 @@ extend@^3.0.0, extend@~3.0.1: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" integrity sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ= -extend@^3.0.2, extend@~3.0.0, extend@~3.0.2: +extend@^3.0.2, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== @@ -3431,6 +3450,11 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" +figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== + figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" @@ -3515,6 +3539,15 @@ find-cache-dir@^1.0.0: make-dir "^1.0.0" pkg-dir "^2.0.0" +find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + find-parent-dir@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54" @@ -3542,16 +3575,6 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -findup-sync@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" - integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== - dependencies: - detect-file "^1.0.0" - is-glob "^4.0.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - findup-sync@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" @@ -3562,6 +3585,16 @@ findup-sync@^2.0.0: micromatch "^3.0.4" resolve-dir "^1.0.1" +findup-sync@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" + integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== + dependencies: + detect-file "^1.0.0" + is-glob "^4.0.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + fined@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/fined/-/fined-1.1.0.tgz#b37dc844b76a2f5e7081e884f7c0ae344f153476" @@ -3649,15 +3682,6 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -form-data@~2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" - integrity sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE= - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.12" - form-data@~2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf" @@ -3767,14 +3791,6 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.2.2: - version "1.2.4" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" - integrity sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg== - dependencies: - nan "^2.9.2" - node-pre-gyp "^0.10.0" - fsevents@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4" @@ -3788,6 +3804,11 @@ fsevents@~2.1.1: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.1.tgz#74c64e21df71721845d0c44fe54b7f56b82995a9" integrity sha512-4FRPXWETxtigtJW/gxzEDsX1LVbPAM93VleB83kZB+ellqbHMkyt2aJfuzNLRvFPnGi6bcE5SvfxgbXPeKteJw== +fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + fstream@^1.0.2: version "1.0.11" resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" @@ -3822,20 +3843,6 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" -generate-function@^2.0.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f" - integrity sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ== - dependencies: - is-property "^1.0.2" - -generate-object-property@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" - integrity sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA= - dependencies: - is-property "^1.0.0" - gensync@^1.0.0-beta.1: version "1.0.0-beta.1" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" @@ -4018,7 +4025,7 @@ glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.6: +glob@^7.1.4, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -4043,13 +4050,6 @@ global-agent@^2.0.2: semver "^6.3.0" serialize-error "^5.0.0" -global-modules@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - global-modules@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" @@ -4059,6 +4059,13 @@ global-modules@^1.0.0: is-windows "^1.0.1" resolve-dir "^1.0.0" +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + global-prefix@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" @@ -4171,6 +4178,11 @@ graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg= +graceful-fs@^4.1.15: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + growl@1.9.2: version "1.9.2" resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" @@ -4436,16 +4448,6 @@ har-schema@^2.0.0: resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= -har-validator@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" - integrity sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0= - dependencies: - chalk "^1.1.1" - commander "^2.9.0" - is-my-json-valid "^2.12.4" - pinkie-promise "^2.0.0" - har-validator@~5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" @@ -4560,16 +4562,6 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" -hawk@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" - integrity sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ= - dependencies: - boom "2.x.x" - cryptiles "2.x.x" - hoek "2.x.x" - sntp "1.x.x" - hawk@~6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" @@ -4589,11 +4581,6 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoek@2.x.x: - version "2.16.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" - integrity sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0= - hoek@4.x.x: version "4.2.0" resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d" @@ -4662,15 +4649,6 @@ http-proxy-agent@^2.1.0: agent-base "4" debug "3.1.0" -http-signature@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" - integrity sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8= - dependencies: - assert-plus "^0.2.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -4701,6 +4679,14 @@ https-proxy-agent@^3.0.0: agent-base "^4.3.0" debug "^3.1.0" +https-proxy-agent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz#702b71fb5520a132a66de1f67541d9e62154d82b" + integrity sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg== + dependencies: + agent-base "5" + debug "4" + husky@^0.13.1: version "0.13.4" resolved "https://registry.yarnpkg.com/husky/-/husky-0.13.4.tgz#48785c5028de3452a51c48c12c4f94b2124a1407" @@ -4711,12 +4697,10 @@ husky@^0.13.1: is-ci "^1.0.9" normalize-path "^1.0.0" -iconv-lite@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.0.tgz#66a93b80df0bd05d2a43a7426296b7f91073f125" - integrity sha512-43ZpGYZ9QtuutX5l6WC1DSO8ane9N+Ct5qPLF2OV7vM9abM69gnAbVkh66ibaZd3aOGkoP1ZmringlKhLBkw2Q== - dependencies: - safer-buffer ">= 2.1.2 < 3" +iconv-lite-umd@0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/iconv-lite-umd/-/iconv-lite-umd-0.6.5.tgz#6a1f621a3b4d125f72feff813a9839e1ebd6c722" + integrity sha512-WDegH4al+e3n3jTOStRvm+jzDA3JMUQGgzdAsMxAgcgB0Oi72HjfdsoX08ieKsy3rKexXVjWZr41aOIUaCZnMg== iconv-lite@^0.4.19: version "0.4.19" @@ -4744,7 +4728,7 @@ icss-utils@^4.0.0, icss-utils@^4.1.1: dependencies: postcss "^7.0.14" -ieee754@^1.1.11, ieee754@^1.1.4: +ieee754@^1.1.4: version "1.1.12" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b" integrity sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA== @@ -4779,7 +4763,7 @@ import-fresh@^3.0.0: parent-module "^1.0.0" resolve-from "^4.0.0" -import-local@2.0.0: +import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== @@ -4797,10 +4781,10 @@ indexes-of@^1.0.1: resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= +infer-owner@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== inflight@^1.0.4: version "1.0.6" @@ -4878,16 +4862,16 @@ inquirer@^7.0.0: strip-ansi "^5.1.0" through "^2.3.6" -interpret@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" - integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== - interpret@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" integrity sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ= +interpret@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" @@ -5092,22 +5076,6 @@ is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-my-ip-valid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824" - integrity sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ== - -is-my-json-valid@^2.12.4: - version "2.20.0" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.20.0.tgz#1345a6fca3e8daefc10d0fa77067f54cedafd59a" - integrity sha512-XTHBZSIIxNsIsZXg7XB5l8z/OBFosl1Wao4tXLpeC7eKU4Vm/kdop2azkPqULwnfGQjmeDIyey9g7afMMtdWAA== - dependencies: - generate-function "^2.0.0" - generate-object-property "^1.1.0" - is-my-ip-valid "^1.0.0" - jsonpointer "^4.0.0" - xtend "^4.0.0" - is-negated-glob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" @@ -5183,11 +5151,6 @@ is-promise@^2.1.0: resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= -is-property@^1.0.0, is-property@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" - integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ= - is-relative@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.2.1.tgz#d27f4c7d516d175fb610db84bbeef23c3bc97aa5" @@ -5391,14 +5354,6 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@3.6.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.6.1.tgz#6e5fe67d8b205ce4d22fad05b7781e8dadcc4b30" - integrity sha1-bl/mfYsgXOTSL60Ft3geja3MSzA= - dependencies: - argparse "^1.0.7" - esprima "^2.6.0" - js-yaml@^3.12.0: version "3.12.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.1.tgz#295c8632a18a23e054cf5c9d3cecafe678167600" @@ -5550,11 +5505,6 @@ jsonparse@~1.2.0: resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.2.0.tgz#5c0c5685107160e72fe7489bddea0b44c2bc67bd" integrity sha1-XAxWhRBxYOcv50ib3eoLRMK8Z70= -jsonpointer@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" - integrity sha1-T9kss04OnbPInIYi7PUfm5eMbLk= - jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -5662,11 +5612,6 @@ lcid@^2.0.0: dependencies: invert-kv "^2.0.0" -lcov-parse@0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-0.0.10.tgz#1b0b8ff9ac9c7889250582b70b71315d9da6d9a3" - integrity sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM= - lead@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" @@ -5714,19 +5659,10 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" -loader-runner@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" - integrity sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI= - -loader-utils@1.2.3, loader-utils@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" - integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== - dependencies: - big.js "^5.2.2" - emojis-list "^2.0.0" - json5 "^1.0.1" +loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== loader-utils@^1.0.2, loader-utils@^1.1.0: version "1.1.0" @@ -5737,6 +5673,24 @@ loader-utils@^1.0.2, loader-utils@^1.1.0: emojis-list "^2.0.0" json5 "^0.5.0" +loader-utils@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== + dependencies: + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" + +loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -5768,11 +5722,6 @@ lodash.clonedeep@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= - lodash.escaperegexp@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" @@ -5858,26 +5807,11 @@ lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== -log-driver@1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.5.tgz#7ae4ec257302fd790d557cb10c97100d857b0056" - integrity sha1-euTsJXMC/XkNVXyxDJcQDYV7AFY= - lolex@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.3.2.tgz#7c3da62ffcb30f0f5a80a2566ca24e45d8a01f31" integrity sha1-fD2mL/yzDw9agKJWbKJORdigHzE= -long@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== - -long@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" - integrity sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s= - lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" @@ -5909,6 +5843,13 @@ lru-cache@^4.1.3: pseudomap "^1.0.2" yallist "^2.1.2" +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + macaddress@^0.2.8: version "0.2.8" resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" @@ -5921,6 +5862,14 @@ make-dir@^1.0.0: dependencies: pify "^3.0.0" +make-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + make-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.0.tgz#1b5f39f6b9270ed33f9f054c5c0f84304989f801" @@ -5935,11 +5884,6 @@ make-iterator@^1.0.0: dependencies: kind-of "^6.0.2" -mamacro@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" - integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== - map-age-cleaner@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" @@ -6033,7 +5977,7 @@ mem@^4.0.0: mimic-fn "^2.0.0" p-is-promise "^2.0.0" -memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1: +memory-fs@^0.4.0, memory-fs@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= @@ -6041,6 +5985,14 @@ memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1: errno "^0.1.3" readable-stream "^2.0.1" +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + merge-options@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-1.0.1.tgz#2a64b24457becd4e4dc608283247e94ce589aa32" @@ -6074,7 +6026,7 @@ micromatch@^2.3.7: parse-glob "^3.0.4" regex-cache "^0.4.2" -micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: +micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -6111,7 +6063,7 @@ mime-db@~1.36.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.36.0.tgz#5020478db3c7fe93aad7bbcc4dcf869c43363397" integrity sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw== -mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.7: +mime-types@^2.1.12, mime-types@~2.1.17: version "2.1.17" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" integrity sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo= @@ -6183,7 +6135,7 @@ minimatch@0.3: lru-cache "2" sigmund "~1.0.0" -"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -6195,7 +6147,7 @@ minimist@0.0.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@1.2.0, minimist@^1.2.0: +minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= @@ -6241,6 +6193,22 @@ mississippi@^2.0.0: stream-each "^1.1.0" through2 "^2.0.0" +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + mixin-deep@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" @@ -6266,6 +6234,13 @@ mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkd dependencies: minimist "0.0.8" +mkdirp@^0.5.3: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + mkpath@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/mkpath/-/mkpath-0.1.0.tgz#7554a6f8d871834cc97b5462b122c4c124d6de91" @@ -6430,6 +6405,11 @@ neo-async@^2.5.0: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.1.tgz#acb909e327b1e87ec9ef15f41b8a269512ad41ee" integrity sha512-3KL3fvuRkZ7s4IFOMfztb7zJp3QaVWnBeGoJlgB38XnCRPj/0tLzzLG5IB8NYOHbJ8g8UGrgZv44GLDk6CxTxA== +neo-async@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + ng2-charts@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/ng2-charts/-/ng2-charts-1.6.0.tgz#108a2133ff62a8623895240fadbddbea2951f29d" @@ -6454,10 +6434,10 @@ node-addon-api@1.6.2: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.6.2.tgz#d8aad9781a5cfc4132cc2fecdbdd982534265217" integrity sha512-479Bjw9nTE5DdBSZZWprFryHGjUaQC31y1wHo19We/k0BZlrmhqQitWoUL0cD8+scljCbIUL+E58oRDEakdGGA== -node-libs-browser@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" - integrity sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg== +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== dependencies: assert "^1.1.1" browserify-zlib "^0.2.0" @@ -6466,10 +6446,10 @@ node-libs-browser@^2.0.0: constants-browserify "^1.0.0" crypto-browserify "^3.11.0" domain-browser "^1.1.1" - events "^1.0.0" + events "^3.0.0" https-browserify "^1.0.0" os-browserify "^0.3.0" - path-browserify "0.0.0" + path-browserify "0.0.1" process "^0.11.10" punycode "^1.2.4" querystring-es3 "^0.2.0" @@ -6480,8 +6460,8 @@ node-libs-browser@^2.0.0: timers-browserify "^2.0.4" tty-browserify "0.0.0" url "^0.11.0" - util "^0.10.3" - vm-browserify "0.0.4" + util "^0.11.0" + vm-browserify "^1.0.1" node-pre-gyp@^0.10.0: version "0.10.3" @@ -6660,7 +6640,7 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.3.tgz#64348e3b3d80f035b40ac11563d278f8b72db89c" integrity sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw== -oauth-sign@~0.8.1, oauth-sign@~0.8.2: +oauth-sign@~0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM= @@ -7055,10 +7035,10 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= -path-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" - integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo= +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== path-dirname@^1.0.0: version "1.0.2" @@ -7163,6 +7143,11 @@ picomatch@^2.0.4: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.0.7.tgz#514169d8c7cd0bdbeecc8a2609e34a7163de69f6" integrity sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA== +picomatch@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -7173,6 +7158,11 @@ pify@^3.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" @@ -7736,11 +7726,6 @@ q@^1.0.1, q@^1.1.2: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= -qs@~6.3.0: - version "6.3.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c" - integrity sha1-51vV9uJoEioqDgvaYwslUMFmUCw= - qs@~6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" @@ -7805,6 +7790,13 @@ randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: dependencies: safe-buffer "^5.1.0" +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + randomfill@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" @@ -7933,16 +7925,6 @@ readable-stream@~2.0.0: string_decoder "~0.10.x" util-deprecate "~1.0.1" -readdirp@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" - integrity sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg= - dependencies: - graceful-fs "^4.1.2" - minimatch "^3.0.2" - readable-stream "^2.0.2" - set-immediate-shim "^1.0.1" - readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -7959,6 +7941,13 @@ readdirp@~3.2.0: dependencies: picomatch "^2.0.4" +readdirp@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" + integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== + dependencies: + picomatch "^2.2.1" + rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -8083,32 +8072,6 @@ replacestream@^4.0.0: object-assign "^4.0.1" readable-stream "^2.0.2" -request@2.79.0: - version "2.79.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" - integrity sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4= - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.11.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~2.0.6" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - qs "~6.3.0" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "~0.4.1" - uuid "^3.0.0" - "request@>= 2.44.0 < 3.0.0", request@^2.79.0: version "2.83.0" resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" @@ -8294,6 +8257,13 @@ rimraf@^2.4.2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: dependencies: glob "^7.0.5" +rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -8426,12 +8396,13 @@ sax@>=0.6.0, sax@^1.2.4, sax@~1.2.1: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -schema-utils@^0.4.4, schema-utils@^0.4.5: - version "0.4.7" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" - integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ== +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== dependencies: ajv "^6.1.0" + ajv-errors "^1.0.0" ajv-keywords "^3.1.0" schema-utils@^2.0.0, schema-utils@^2.0.1: @@ -8454,10 +8425,10 @@ semver-greatest-satisfied-range@^1.1.0: dependencies: sver-compat "^1.5.0" -semver-umd@^5.5.6: - version "5.5.6" - resolved "https://registry.yarnpkg.com/semver-umd/-/semver-umd-5.5.6.tgz#1d185bbd2caec825c564b54907cd09e14083f228" - integrity sha512-6ARYXVi4Y4VO5HfyCjT/6xyykBtJwEXSGQ8ON4UPQSFOjZUDsbAE0J614QcBBsLTTyQMEqvsXN804vAqpydjzw== +semver-umd@^5.5.7: + version "5.5.7" + resolved "https://registry.yarnpkg.com/semver-umd/-/semver-umd-5.5.7.tgz#966beb5e96c7da6fbf09c3da14c2872d6836c528" + integrity sha512-XgjPNlD0J6aIc8xoTN6GQGwWc2Xg0kq8NzrqMVuKG/4Arl6ab1F8+Am5Y/XKKCR+FceFr2yN/Uv5ZJBhRyRqKg== "semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0: version "5.4.1" @@ -8506,16 +8477,18 @@ serialize-javascript@^1.4.0: resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.5.0.tgz#1aa336162c88a890ddad5384baebc93a655161fe" integrity sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ== +serialize-javascript@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-3.1.0.tgz#8bf3a9170712664ef2561b44b691eafe399214ea" + integrity sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg== + dependencies: + randombytes "^2.1.0" + set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= -set-immediate-shim@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= - set-value@^0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" @@ -8653,13 +8626,6 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -sntp@1.x.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" - integrity sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg= - dependencies: - hoek "2.x.x" - sntp@2.x.x: version "2.1.0" resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" @@ -8706,6 +8672,14 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" +source-map-support@~0.5.12: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" @@ -8838,6 +8812,13 @@ ssri@^5.2.4: dependencies: safe-buffer "^5.1.1" +ssri@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + dependencies: + figgy-pudding "^3.5.1" + stack-chain@^1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-1.3.7.tgz#d192c9ff4ea6a22c94c4dd459171e3f00cea1285" @@ -8986,11 +8967,6 @@ string_decoder@~1.0.3: dependencies: safe-buffer "~5.1.0" -stringstream@~0.0.4: - version "0.0.6" - resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72" - integrity sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA== - stringstream@~0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" @@ -9086,13 +9062,6 @@ supports-color@1.2.0: resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-1.2.0.tgz#ff1ed1e61169d06b3cf2d588e188b18d8847e17e" integrity sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4= -supports-color@6.1.0, supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -9119,6 +9088,20 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" +supports-color@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + supports-color@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" @@ -9177,6 +9160,11 @@ tapable@^1.0.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.0.0.tgz#cbb639d9002eed9c6b5975eb20598d7936f1f9f2" integrity sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg== +tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + tar-fs@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.0.1.tgz#e44086c1c60d31a4f0cf893b1c4e155dabfae9e2" @@ -9245,6 +9233,30 @@ temp@^0.8.3: os-tmpdir "^1.0.0" rimraf "~2.2.6" +terser-webpack-plugin@^1.4.3: + version "1.4.4" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz#2c63544347324baafa9a56baaddf1634c8abfc2f" + integrity sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^3.1.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser@^4.1.2: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -9414,13 +9426,6 @@ touch@0.0.3: dependencies: nopt "~1.0.10" -tough-cookie@~2.3.0: - version "2.3.4" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" - integrity sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA== - dependencies: - punycode "^1.4.1" - tough-cookie@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" @@ -9488,11 +9493,6 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" -tunnel-agent@~0.4.1: - version "0.4.3" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" - integrity sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us= - tunnel@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.4.tgz#2d3785a158c174c9a16dc2c046ec5fc5f1742213" @@ -9563,28 +9563,6 @@ uc.micro@^1.0.1, uc.micro@^1.0.3: resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.3.tgz#7ed50d5e0f9a9fb0a573379259f2a77458d50192" integrity sha1-ftUNXg+an7ClczeSWfKndFjVAZI= -uglify-es@^3.3.4: - version "3.3.9" - resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" - integrity sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ== - dependencies: - commander "~2.13.0" - source-map "~0.6.1" - -uglifyjs-webpack-plugin@^1.2.4: - version "1.2.7" - resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.7.tgz#57638dd99c853a1ebfe9d97b42160a8a507f9d00" - integrity sha512-1VicfKhCYHLS8m1DCApqBhoulnASsEoJ/BvpUpP4zoNAPpKzdH+ghk0olGJMmwX2/jprK2j3hAHdUbczBSy2FA== - dependencies: - cacache "^10.0.4" - find-cache-dir "^1.0.0" - schema-utils "^0.4.5" - serialize-javascript "^1.4.0" - source-map "^0.6.1" - uglify-es "^3.3.4" - webpack-sources "^1.1.0" - worker-farm "^1.5.2" - ultron@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" @@ -9659,6 +9637,13 @@ unique-filename@^1.1.0: dependencies: unique-slug "^2.0.0" +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + unique-slug@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab" @@ -9687,11 +9672,16 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -upath@^1.0.5, upath@^1.1.0: +upath@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + uri-js@^4.2.1, uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" @@ -9746,10 +9736,10 @@ util@0.10.3, "util@>=0.10.3 <1": dependencies: inherits "2.0.1" -util@^0.10.3: - version "0.10.4" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" - integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== dependencies: inherits "2.0.3" @@ -9763,16 +9753,16 @@ uuid@^3.0.1, uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== -v8-compile-cache@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe" - integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w== - v8-compile-cache@^2.0.3: version "2.1.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== +v8-compile-cache@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" + integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== + v8-inspect-profiler@^0.0.20: version "0.0.20" resolved "https://registry.yarnpkg.com/v8-inspect-profiler/-/v8-inspect-profiler-0.0.20.tgz#f7ad0f8178dcea2f1504334e8844ef38181792ab" @@ -9936,12 +9926,10 @@ vinyl@~2.0.1: remove-trailing-separator "^1.0.1" replace-ext "^1.0.0" -vm-browserify@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" - integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM= - dependencies: - indexof "0.0.1" +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== vsce@1.48.0: version "1.48.0" @@ -10014,10 +10002,13 @@ vscode-proxy-agent@^0.5.2: https-proxy-agent "^2.2.3" socks-proxy-agent "^4.0.1" -vscode-ripgrep@^1.5.8: - version "1.5.8" - resolved "https://registry.yarnpkg.com/vscode-ripgrep/-/vscode-ripgrep-1.5.8.tgz#32cb33da6d1a9ca8f5de8c2813ed5114fd55fc11" - integrity sha512-l6Pv/t1Jk63RU+kEkMO04XxnNRYdyzuesizj9AzFpcfrUxxpAjEJBK1qO9Mov30UUGZl7uDUBn+uCv9koaHPPA== +vscode-ripgrep@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/vscode-ripgrep/-/vscode-ripgrep-1.7.0.tgz#ec912e04aa29f7d73bcef04b7576b792f12c9b38" + integrity sha512-sQY/u0ymc9YMiPaSsMmdZSFQ6PTS2UxcGuiQkF7aoIezDxZcGE1sMarqftWEl9wYWYc9hElYm00WpoFgzj1oUg== + dependencies: + https-proxy-agent "^4.0.0" + proxy-from-env "^1.1.0" vscode-sqlite3@4.0.10: version "4.0.10" @@ -10026,10 +10017,10 @@ vscode-sqlite3@4.0.10: dependencies: nan "^2.14.0" -vscode-textmate@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-5.1.1.tgz#d88dbf271bee7cede455a21bd4894ba5724a4a7e" - integrity sha512-5VHjF+Fglf9d2JI5OyQ7FHutK6/29G0qYyD920K0SWO7uY8JTWbqyKAHEtfB/ZDk2fOe/E23n3wz9fHXKi63yg== +vscode-textmate@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-5.2.0.tgz#01f01760a391e8222fe4f33fbccbd1ad71aed74e" + integrity sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ== vscode-windows-ca-certs@0.2.0: version "0.2.0" @@ -10053,85 +10044,92 @@ vso-node-api@6.1.2-preview: typed-rest-client "^0.9.0" underscore "^1.8.3" -watchpack@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" - integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== +watchpack-chokidar2@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0" + integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA== + dependencies: + chokidar "^2.1.8" + +watchpack@^1.6.1: + version "1.7.2" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.2.tgz#c02e4d4d49913c3e7e122c3325365af9d331e9aa" + integrity sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g== dependencies: - chokidar "^2.0.2" graceful-fs "^4.1.2" neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.0" + watchpack-chokidar2 "^2.0.0" -webpack-cli@^3.3.8: - version "3.3.8" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.8.tgz#caeaebcc26f685db1736e5decd3f01aac30123ec" - integrity sha512-RANYSXwikSWINjHMd/mtesblNSpjpDLoYTBtP99n1RhXqVI/wxN40Auqy42I7y4xrbmRBoA5Zy5E0JSBD5XRhw== +webpack-cli@^3.3.12: + version "3.3.12" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.12.tgz#94e9ada081453cd0aa609c99e500012fd3ad2d4a" + integrity sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag== dependencies: - chalk "2.4.2" - cross-spawn "6.0.5" - enhanced-resolve "4.1.0" - findup-sync "3.0.0" - global-modules "2.0.0" - import-local "2.0.0" - interpret "1.2.0" - loader-utils "1.2.3" - supports-color "6.1.0" - v8-compile-cache "2.0.3" - yargs "13.2.4" + chalk "^2.4.2" + cross-spawn "^6.0.5" + enhanced-resolve "^4.1.1" + findup-sync "^3.0.0" + global-modules "^2.0.0" + import-local "^2.0.0" + interpret "^1.4.0" + loader-utils "^1.4.0" + supports-color "^6.1.0" + v8-compile-cache "^2.1.1" + yargs "^13.3.2" -webpack-sources@^1.0.1, webpack-sources@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54" - integrity sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw== +webpack-sources@^1.4.0, webpack-sources@^1.4.1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== dependencies: source-list-map "^2.0.0" source-map "~0.6.1" -webpack-stream@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/webpack-stream/-/webpack-stream-5.1.1.tgz#15b1d91da6887a37f6832128383ae0282bd7d0e7" - integrity sha512-Q6Wn8brjTGGWIobttGPt3JQzBkGgipqXSnkP8/+dJWHMG9DDSu3PGfctUo3Fp6asBGu+Vrb/g1qnvTGQECobOQ== +webpack-stream@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/webpack-stream/-/webpack-stream-5.2.1.tgz#35c992161399fe8cad9c10d4a5c258f022629b39" + integrity sha512-WvyVU0K1/VB1NZ7JfsaemVdG0PXAQUqbjUNW4A58th4pULvKMQxG+y33HXTL02JvD56ko2Cub+E2NyPwrLBT/A== dependencies: - fancy-log "^1.3.2" + fancy-log "^1.3.3" lodash.clone "^4.3.2" lodash.some "^4.2.2" memory-fs "^0.4.1" plugin-error "^1.0.1" - supports-color "^5.3.0" + supports-color "^5.5.0" through "^2.3.8" vinyl "^2.1.0" - webpack "^4.7.0" + webpack "^4.26.1" -webpack@^4.16.5, webpack@^4.7.0: - version "4.16.5" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.16.5.tgz#29fb39462823d7eb8aefcab8b45f7f241db0d092" - integrity sha512-i5cHYHonzSc1zBuwB5MSzW4v9cScZFbprkHK8ZgzPDCRkQXGGpYzPmJhbus5bOrZ0tXTcQp+xyImRSvKb0b+Kw== +webpack@^4.26.1, webpack@^4.43.0: + version "4.43.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.43.0.tgz#c48547b11d563224c561dad1172c8aa0b8a678e6" + integrity sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g== dependencies: - "@webassemblyjs/ast" "1.5.13" - "@webassemblyjs/helper-module-context" "1.5.13" - "@webassemblyjs/wasm-edit" "1.5.13" - "@webassemblyjs/wasm-opt" "1.5.13" - "@webassemblyjs/wasm-parser" "1.5.13" - acorn "^5.6.2" - acorn-dynamic-import "^3.0.0" - ajv "^6.1.0" - ajv-keywords "^3.1.0" - chrome-trace-event "^1.0.0" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^6.4.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" enhanced-resolve "^4.1.0" - eslint-scope "^4.0.0" + eslint-scope "^4.0.3" json-parse-better-errors "^1.0.2" - loader-runner "^2.3.0" - loader-utils "^1.1.0" - memory-fs "~0.4.1" - micromatch "^3.1.8" - mkdirp "~0.5.0" - neo-async "^2.5.0" - node-libs-browser "^2.0.0" - schema-utils "^0.4.4" - tapable "^1.0.0" - uglifyjs-webpack-plugin "^1.2.4" - watchpack "^1.5.0" - webpack-sources "^1.0.1" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.3" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.6.1" + webpack-sources "^1.4.1" when@^3.7.7: version "3.7.8" @@ -10214,10 +10212,10 @@ wordwrap@~1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= -worker-farm@^1.5.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0" - integrity sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ== +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== dependencies: errno "~0.1.7" @@ -10378,6 +10376,14 @@ yargs-parser@^13.1.0: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-parser@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" @@ -10385,7 +10391,7 @@ yargs-parser@^5.0.0: dependencies: camelcase "^3.0.0" -yargs@13.2.4, yargs@^13.2.4: +yargs@^13.2.4: version "13.2.4" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== @@ -10402,6 +10408,22 @@ yargs@13.2.4, yargs@^13.2.4: y18n "^4.0.0" yargs-parser "^13.1.0" +yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + yargs@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8"